summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2024-11-14 19:35:45 +0100
committerJörg Frings-Fürst <debian@jff-webhosting.net>2024-11-14 19:35:45 +0100
commitdf5520aa2dae5b3ce7abf8733dcdd152898af163 (patch)
tree00d3047bfb14f682bfb5a21010c731ed649bfed7
parentdf247efec654e512242e4f4f1b0212034f9e01fe (diff)
parentec3c0f6f6e7153fa797dc57a0e95779cbc63a23b (diff)
Merge branch 'release/debian/1_5.3.0GA-1'debian/1_5.3.0GA-1
-rw-r--r--.gitignore2
-rw-r--r--.hgignore6
-rw-r--r--.hgtags60
-rw-r--r--CMake/CMakeDefaults.cmake22
-rw-r--r--CMake/FindCMocka.cmake5
-rw-r--r--CMake/FindFreeImage.cmake58
-rw-r--r--CMake/FindGTKUnixPrint.cmake7
-rw-r--r--CMake/FindInkscape.cmake47
-rw-r--r--CMake/FindLibzip.cmake79
-rw-r--r--CMake/FindMiniXML.cmake98
-rw-r--r--CMake/FindPandoc.cmake2
-rw-r--r--CMake/FindZlib.cmake61
-rw-r--r--CMakeLists.txt227
-rw-r--r--PlatformSettings.cmake61
-rw-r--r--ProgramVersion.cmake7
-rw-r--r--README0
-rw-r--r--app/CMakeLists.txt33
-rw-r--r--app/COPYING96
-rw-r--r--app/bin/CMakeLists.txt569
-rw-r--r--app/bin/acclkeys.h7
-rw-r--r--app/bin/appdefaults.c362
-rw-r--r--app/bin/archive.c521
-rw-r--r--app/bin/archive.h8
-rw-r--r--app/bin/bdf2xtp.c620
-rw-r--r--app/bin/bitmaps/CMakeLists.txt100
-rwxr-xr-xapp/bin/bitmaps/SVG/block.svg150
-rw-r--r--app/bin/bitmaps/above.xpm22
-rw-r--r--app/bin/bitmaps/background.xpm155
-rw-r--r--app/bin/bitmaps/below.xpm22
-rw-r--r--app/bin/bitmaps/bezier.xpm23
-rw-r--r--app/bin/bitmaps/block.xpm24
-rw-r--r--app/bin/bitmaps/bridge.xbm7
-rw-r--r--app/bin/bitmaps/bridge.xpm22
-rw-r--r--app/bin/bitmaps/circle1.xpm23
-rw-r--r--app/bin/bitmaps/circle2.xpm22
-rw-r--r--app/bin/bitmaps/circle3.xpm22
-rw-r--r--app/bin/bitmaps/cnote.xpm22
-rw-r--r--app/bin/bitmaps/control.xpm24
-rw-r--r--app/bin/bitmaps/convertfr.xpm23
-rw-r--r--app/bin/bitmaps/convertto.xpm23
-rw-r--r--app/bin/bitmaps/cornu.xpm23
-rw-r--r--app/bin/bitmaps/curve1.xpm23
-rw-r--r--app/bin/bitmaps/curve2.xpm23
-rw-r--r--app/bin/bitmaps/curve3.xpm23
-rw-r--r--app/bin/bitmaps/curve4.xpm23
-rw-r--r--app/bin/bitmaps/dbench.xpm22
-rw-r--r--app/bin/bitmaps/dbezier.xpm22
-rw-r--r--app/bin/bitmaps/dbox.xpm22
-rw-r--r--app/bin/bitmaps/dcircle1.xpm22
-rw-r--r--app/bin/bitmaps/dcircle2.xpm22
-rw-r--r--app/bin/bitmaps/dcircle3.xpm22
-rw-r--r--app/bin/bitmaps/dcurve1.xpm22
-rw-r--r--app/bin/bitmaps/dcurve2.xpm22
-rw-r--r--app/bin/bitmaps/dcurve3.xpm22
-rw-r--r--app/bin/bitmaps/dcurve4.xpm22
-rw-r--r--app/bin/bitmaps/ddimlin.xpm22
-rw-r--r--app/bin/bitmaps/delete.xpm22
-rw-r--r--app/bin/bitmaps/describe.xpm22
-rw-r--r--app/bin/bitmaps/dfilbox.xpm23
-rw-r--r--app/bin/bitmaps/dfilpoly.xpm23
-rw-r--r--app/bin/bitmaps/dflcrcl1.xpm22
-rw-r--r--app/bin/bitmaps/dflcrcl2.xpm23
-rw-r--r--app/bin/bitmaps/dflcrcl3.xpm23
-rw-r--r--app/bin/bitmaps/dline.xpm22
-rw-r--r--app/bin/bitmaps/document-export.xpm90
-rw-r--r--app/bin/bitmaps/document-exportdxf.xpm84
-rw-r--r--app/bin/bitmaps/document-import.xpm92
-rw-r--r--app/bin/bitmaps/document-importmod.xpm71
-rw-r--r--app/bin/bitmaps/document-new.xpm38
-rw-r--r--app/bin/bitmaps/document-open.xpm35
-rw-r--r--app/bin/bitmaps/document-print.xpm24
-rw-r--r--app/bin/bitmaps/document-save.xpm35
-rw-r--r--app/bin/bitmaps/dpoly.xpm22
-rw-r--r--app/bin/bitmaps/dpolyline.xpm23
-rw-r--r--app/bin/bitmaps/dtbledge.xpm23
-rw-r--r--app/bin/bitmaps/ebroad.xpm21
-rw-r--r--app/bin/bitmaps/ecornu.xpm23
-rw-r--r--app/bin/bitmaps/edit-redo.xpm29
-rw-r--r--app/bin/bitmaps/edit-undo.xpm28
-rw-r--r--app/bin/bitmaps/egtbroad.xpm21
-rw-r--r--app/bin/bitmaps/egtsharp.xpm21
-rw-r--r--app/bin/bitmaps/elev.xpm23
-rw-r--r--app/bin/bitmaps/eltbroad.xpm21
-rw-r--r--app/bin/bitmaps/eltsharp.xpm21
-rw-r--r--app/bin/bitmaps/enone.xpm21
-rw-r--r--app/bin/bitmaps/enormal.xpm21
-rw-r--r--app/bin/bitmaps/esharp.xpm21
-rw-r--r--app/bin/bitmaps/exit.xpm21
-rw-r--r--app/bin/bitmaps/extend.xpm23
-rw-r--r--app/bin/bitmaps/flip.xpm23
-rw-r--r--app/bin/bitmaps/funnel.xpm62
-rw-r--r--app/bin/bitmaps/funnelclear.xpm124
-rw-r--r--app/bin/bitmaps/go.xpm22
-rw-r--r--app/bin/bitmaps/hndldto.xpm21
-rw-r--r--app/bin/bitmaps/join.xpm22
-rw-r--r--app/bin/bitmaps/joinline.xpm22
-rw-r--r--app/bin/bitmaps/l1.xbm6
-rw-r--r--app/bin/bitmaps/l10.xbm6
-rw-r--r--app/bin/bitmaps/l11.xbm6
-rw-r--r--app/bin/bitmaps/l12.xbm6
-rw-r--r--app/bin/bitmaps/l13.xbm6
-rw-r--r--app/bin/bitmaps/l14.xbm6
-rw-r--r--app/bin/bitmaps/l15.xbm6
-rw-r--r--app/bin/bitmaps/l16.xbm6
-rw-r--r--app/bin/bitmaps/l17.xbm6
-rw-r--r--app/bin/bitmaps/l18.xbm6
-rw-r--r--app/bin/bitmaps/l19.xbm6
-rw-r--r--app/bin/bitmaps/l2.xbm6
-rw-r--r--app/bin/bitmaps/l20.xbm6
-rw-r--r--app/bin/bitmaps/l21.xbm6
-rw-r--r--app/bin/bitmaps/l22.xbm6
-rw-r--r--app/bin/bitmaps/l23.xbm6
-rw-r--r--app/bin/bitmaps/l24.xbm6
-rw-r--r--app/bin/bitmaps/l25.xbm6
-rw-r--r--app/bin/bitmaps/l26.xbm6
-rw-r--r--app/bin/bitmaps/l27.xbm6
-rw-r--r--app/bin/bitmaps/l28.xbm6
-rw-r--r--app/bin/bitmaps/l29.xbm6
-rw-r--r--app/bin/bitmaps/l3.xbm6
-rw-r--r--app/bin/bitmaps/l30.xbm6
-rw-r--r--app/bin/bitmaps/l31.xbm6
-rw-r--r--app/bin/bitmaps/l32.xbm6
-rw-r--r--app/bin/bitmaps/l33.xbm6
-rw-r--r--app/bin/bitmaps/l34.xbm6
-rw-r--r--app/bin/bitmaps/l35.xbm6
-rw-r--r--app/bin/bitmaps/l36.xbm6
-rw-r--r--app/bin/bitmaps/l37.xbm6
-rw-r--r--app/bin/bitmaps/l38.xbm6
-rw-r--r--app/bin/bitmaps/l39.xbm6
-rw-r--r--app/bin/bitmaps/l4.xbm6
-rw-r--r--app/bin/bitmaps/l40.xbm6
-rw-r--r--app/bin/bitmaps/l41.xbm6
-rw-r--r--app/bin/bitmaps/l42.xbm6
-rw-r--r--app/bin/bitmaps/l43.xbm6
-rw-r--r--app/bin/bitmaps/l44.xbm6
-rw-r--r--app/bin/bitmaps/l45.xbm6
-rw-r--r--app/bin/bitmaps/l46.xbm6
-rw-r--r--app/bin/bitmaps/l47.xbm6
-rw-r--r--app/bin/bitmaps/l48.xbm6
-rw-r--r--app/bin/bitmaps/l49.xbm6
-rw-r--r--app/bin/bitmaps/l5.xbm6
-rw-r--r--app/bin/bitmaps/l50.xbm6
-rw-r--r--app/bin/bitmaps/l51.xbm6
-rw-r--r--app/bin/bitmaps/l52.xbm6
-rw-r--r--app/bin/bitmaps/l53.xbm6
-rw-r--r--app/bin/bitmaps/l54.xbm6
-rw-r--r--app/bin/bitmaps/l55.xbm6
-rw-r--r--app/bin/bitmaps/l56.xbm6
-rw-r--r--app/bin/bitmaps/l57.xbm6
-rw-r--r--app/bin/bitmaps/l58.xbm6
-rw-r--r--app/bin/bitmaps/l59.xbm6
-rw-r--r--app/bin/bitmaps/l6.xbm6
-rw-r--r--app/bin/bitmaps/l60.xbm6
-rw-r--r--app/bin/bitmaps/l61.xbm6
-rw-r--r--app/bin/bitmaps/l62.xbm6
-rw-r--r--app/bin/bitmaps/l63.xbm6
-rw-r--r--app/bin/bitmaps/l64.xbm6
-rw-r--r--app/bin/bitmaps/l65.xbm6
-rw-r--r--app/bin/bitmaps/l66.xbm6
-rw-r--r--app/bin/bitmaps/l67.xbm6
-rw-r--r--app/bin/bitmaps/l68.xbm6
-rw-r--r--app/bin/bitmaps/l69.xbm6
-rw-r--r--app/bin/bitmaps/l7.xbm6
-rw-r--r--app/bin/bitmaps/l70.xbm6
-rw-r--r--app/bin/bitmaps/l71.xbm6
-rw-r--r--app/bin/bitmaps/l72.xbm6
-rw-r--r--app/bin/bitmaps/l73.xbm6
-rw-r--r--app/bin/bitmaps/l74.xbm6
-rw-r--r--app/bin/bitmaps/l75.xbm6
-rw-r--r--app/bin/bitmaps/l76.xbm6
-rw-r--r--app/bin/bitmaps/l77.xbm6
-rw-r--r--app/bin/bitmaps/l78.xbm6
-rw-r--r--app/bin/bitmaps/l79.xbm6
-rw-r--r--app/bin/bitmaps/l8.xbm6
-rw-r--r--app/bin/bitmaps/l80.xbm6
-rw-r--r--app/bin/bitmaps/l81.xbm6
-rw-r--r--app/bin/bitmaps/l82.xbm6
-rw-r--r--app/bin/bitmaps/l83.xbm6
-rw-r--r--app/bin/bitmaps/l84.xbm6
-rw-r--r--app/bin/bitmaps/l85.xbm6
-rw-r--r--app/bin/bitmaps/l86.xbm6
-rw-r--r--app/bin/bitmaps/l87.xbm6
-rw-r--r--app/bin/bitmaps/l88.xbm6
-rw-r--r--app/bin/bitmaps/l89.xbm6
-rw-r--r--app/bin/bitmaps/l9.xbm6
-rw-r--r--app/bin/bitmaps/l90.xbm6
-rw-r--r--app/bin/bitmaps/l91.xbm6
-rw-r--r--app/bin/bitmaps/l92.xbm6
-rw-r--r--app/bin/bitmaps/l93.xbm6
-rw-r--r--app/bin/bitmaps/l94.xbm6
-rw-r--r--app/bin/bitmaps/l95.xbm6
-rw-r--r--app/bin/bitmaps/l96.xbm6
-rw-r--r--app/bin/bitmaps/l97.xbm6
-rw-r--r--app/bin/bitmaps/l98.xbm6
-rw-r--r--app/bin/bitmaps/l99.xbm6
-rw-r--r--app/bin/bitmaps/layer_num.inc515
-rw-r--r--app/bin/bitmaps/loosen.xpm183
-rw-r--r--app/bin/bitmaps/magnet.xpm22
-rw-r--r--app/bin/bitmaps/magnifier.xpm89
-rw-r--r--app/bin/bitmaps/map.xpm24
-rw-r--r--app/bin/bitmaps/move.xpm23
-rw-r--r--app/bin/bitmaps/movedesc.xpm23
-rw-r--r--app/bin/bitmaps/newcar.xpm23
-rw-r--r--app/bin/bitmaps/note.xpm114
-rw-r--r--app/bin/bitmaps/openbutt.xpm21
-rw-r--r--app/bin/bitmaps/pan.xpm22
-rw-r--r--app/bin/bitmaps/parallel-line.xpm22
-rw-r--r--app/bin/bitmaps/parallel.xpm22
-rw-r--r--app/bin/bitmaps/pause.xpm147
-rw-r--r--app/bin/bitmaps/png/circle-center16.pngbin0 -> 249 bytes
-rw-r--r--app/bin/bitmaps/png/circle-tangent16.pngbin0 -> 244 bytes
-rw-r--r--app/bin/bitmaps/png/circle16.pngbin0 -> 242 bytes
-rw-r--r--app/bin/bitmaps/png/curved-chord16.pngbin0 -> 244 bytes
-rw-r--r--app/bin/bitmaps/png/curved-end16.pngbin0 -> 239 bytes
-rw-r--r--app/bin/bitmaps/png/curved-middle16.pngbin0 -> 239 bytes
-rw-r--r--app/bin/bitmaps/png/curved-tangent16.pngbin0 -> 241 bytes
-rw-r--r--app/bin/bitmaps/png/description16.pngbin0 -> 228 bytes
-rw-r--r--app/bin/bitmaps/png/description24.pngbin0 -> 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.pngbin0 -> 216 bytes
-rw-r--r--app/bin/bitmaps/png/exit16.pngbin0 -> 203 bytes
-rw-r--r--app/bin/bitmaps/png/exit24.pngbin0 -> 236 bytes
-rw-r--r--app/bin/bitmaps/png/extend16.pngbin0 -> 165 bytes
-rw-r--r--app/bin/bitmaps/png/palette.pngbin0 -> 179 bytes
-rw-r--r--app/bin/bitmaps/png/pan-zoom16.pngbin0 -> 229 bytes
-rw-r--r--app/bin/bitmaps/png/pan-zoom24.pngbin0 -> 273 bytes
-rw-r--r--app/bin/bitmaps/png/ruler16.pngbin0 -> 134 bytes
-rw-r--r--app/bin/bitmaps/png/select16.pngbin0 -> 220 bytes
-rw-r--r--app/bin/bitmaps/png/snap-curs16.pngbin0 -> 222 bytes
-rw-r--r--app/bin/bitmaps/png/snap-curs24.pngbin0 -> 265 bytes
-rw-r--r--app/bin/bitmaps/png/snap-grid16.pngbin0 -> 191 bytes
-rw-r--r--app/bin/bitmaps/png/snap-grid24.pngbin0 -> 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/profile.xpm24
-rw-r--r--app/bin/bitmaps/pull.xpm23
-rw-r--r--app/bin/bitmaps/rotate.xpm23
-rw-r--r--app/bin/bitmaps/ruler.xpm21
-rw-r--r--app/bin/bitmaps/select.xpm22
-rw-r--r--app/bin/bitmaps/sensor.xpm22
-rw-r--r--app/bin/bitmaps/signal.xpm25
-rw-r--r--app/bin/bitmaps/snapcurs.xbm7
-rw-r--r--app/bin/bitmaps/snapvis.xbm7
-rw-r--r--app/bin/bitmaps/splittrk.xpm22
-rw-r--r--app/bin/bitmaps/sticky-note-chain.xpm84
-rw-r--r--app/bin/bitmaps/sticky-note-clip.xpm99
-rw-r--r--app/bin/bitmaps/sticky-note-text.xpm86
-rw-r--r--app/bin/bitmaps/stop.xpm22
-rw-r--r--app/bin/bitmaps/straight.xpm22
-rw-r--r--app/bin/bitmaps/svg/background.svg153
-rw-r--r--app/bin/bitmaps/svg/benchwork.svg100
-rw-r--r--app/bin/bitmaps/svg/bezier-line.svg92
-rw-r--r--app/bin/bitmaps/svg/bezier-track.svg424
-rwxr-xr-xapp/bin/bitmaps/svg/block.svg95
-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.svg62
-rw-r--r--app/bin/bitmaps/svg/box.svg72
-rw-r--r--app/bin/bitmaps/svg/bridge.svg152
-rw-r--r--app/bin/bitmaps/svg/building.svg85
-rw-r--r--app/bin/bitmaps/svg/car-inventory.svg146
-rw-r--r--app/bin/bitmaps/svg/change-grid.svg136
-rw-r--r--app/bin/bitmaps/svg/circle-center.svg283
-rw-r--r--app/bin/bitmaps/svg/circle-filled-center.svg72
-rw-r--r--app/bin/bitmaps/svg/circle-filled-tangent.svg78
-rw-r--r--app/bin/bitmaps/svg/circle-line-center.svg78
-rw-r--r--app/bin/bitmaps/svg/circle-line-tangent.svg78
-rw-r--r--app/bin/bitmaps/svg/circle-line.svg228
-rw-r--r--app/bin/bitmaps/svg/circle-tangent.svg272
-rw-r--r--app/bin/bitmaps/svg/circle.svg301
-rw-r--r--app/bin/bitmaps/svg/clone.svg69
-rw-r--r--app/bin/bitmaps/svg/connect.svg160
-rw-r--r--app/bin/bitmaps/svg/control.svg84
-rw-r--r--app/bin/bitmaps/svg/convert-from.svg110
-rw-r--r--app/bin/bitmaps/svg/convert-to.svg107
-rw-r--r--app/bin/bitmaps/svg/copy.svg57
-rw-r--r--app/bin/bitmaps/svg/cornu.svg275
-rw-r--r--app/bin/bitmaps/svg/curved-chord.svg172
-rw-r--r--app/bin/bitmaps/svg/curved-end.svg160
-rw-r--r--app/bin/bitmaps/svg/curved-line-chord.svg114
-rw-r--r--app/bin/bitmaps/svg/curved-line-end.svg108
-rw-r--r--app/bin/bitmaps/svg/curved-line-middle.svg99
-rw-r--r--app/bin/bitmaps/svg/curved-line-tangent.svg190
-rw-r--r--app/bin/bitmaps/svg/curved-middle.svg202
-rw-r--r--app/bin/bitmaps/svg/curved-tangent.svg191
-rw-r--r--app/bin/bitmaps/svg/cut.svg64
-rw-r--r--app/bin/bitmaps/svg/delete.svg143
-rw-r--r--app/bin/bitmaps/svg/describe.svg144
-rw-r--r--app/bin/bitmaps/svg/description.svg143
-rw-r--r--app/bin/bitmaps/svg/dimension.svg148
-rw-r--r--app/bin/bitmaps/svg/doc-export-bmap.svg91
-rw-r--r--app/bin/bitmaps/svg/doc-export-dxf.svg107
-rw-r--r--app/bin/bitmaps/svg/doc-export-svg.svg70
-rw-r--r--app/bin/bitmaps/svg/doc-export.svg66
-rw-r--r--app/bin/bitmaps/svg/doc-import-mod.svg66
-rw-r--r--app/bin/bitmaps/svg/doc-import.svg60
-rw-r--r--app/bin/bitmaps/svg/doc-new.svg63
-rw-r--r--app/bin/bitmaps/svg/doc-open.svg72
-rw-r--r--app/bin/bitmaps/svg/doc-print.svg94
-rw-r--r--app/bin/bitmaps/svg/doc-recent.svg63
-rw-r--r--app/bin/bitmaps/svg/doc-revert.svg55
-rw-r--r--app/bin/bitmaps/svg/doc-save-as.svg99
-rw-r--r--app/bin/bitmaps/svg/doc-save.svg90
-rw-r--r--app/bin/bitmaps/svg/doc-setup.svg101
-rw-r--r--app/bin/bitmaps/svg/down.svg56
-rw-r--r--app/bin/bitmaps/svg/elevation.svg139
-rw-r--r--app/bin/bitmaps/svg/exit.svg88
-rw-r--r--app/bin/bitmaps/svg/extend.svg154
-rw-r--r--app/bin/bitmaps/svg/filled-box.svg72
-rw-r--r--app/bin/bitmaps/svg/filled-polygon.svg59
-rw-r--r--app/bin/bitmaps/svg/go.svg106
-rw-r--r--app/bin/bitmaps/svg/grid.svg18
-rw-r--r--app/bin/bitmaps/svg/helix.svg170
-rw-r--r--app/bin/bitmaps/svg/info.svg69
-rw-r--r--app/bin/bitmaps/svg/join-line.svg94
-rw-r--r--app/bin/bitmaps/svg/join.svg154
-rw-r--r--app/bin/bitmaps/svg/layers.svg98
-rw-r--r--app/bin/bitmaps/svg/loosen.svg146
-rw-r--r--app/bin/bitmaps/svg/magnet.svg83
-rw-r--r--app/bin/bitmaps/svg/manage.svg77
-rw-r--r--app/bin/bitmaps/svg/map.svg146
-rw-r--r--app/bin/bitmaps/svg/move.svg231
-rw-r--r--app/bin/bitmaps/svg/new-car.svg136
-rw-r--r--app/bin/bitmaps/svg/ok.svg55
-rw-r--r--app/bin/bitmaps/svg/pan-zoom.svg89
-rw-r--r--app/bin/bitmaps/svg/parallel-line.svg155
-rw-r--r--app/bin/bitmaps/svg/parallel.svg221
-rw-r--r--app/bin/bitmaps/svg/parameter.svg76
-rw-r--r--app/bin/bitmaps/svg/paste.svg64
-rw-r--r--app/bin/bitmaps/svg/polygon.svg57
-rw-r--r--app/bin/bitmaps/svg/polyline.svg56
-rw-r--r--app/bin/bitmaps/svg/profile.svg176
-rw-r--r--app/bin/bitmaps/svg/protractor.svg68
-rw-r--r--app/bin/bitmaps/svg/redo.svg52
-rw-r--r--app/bin/bitmaps/svg/reflect.svg71
-rw-r--r--app/bin/bitmaps/svg/roadbed.svg121
-rw-r--r--app/bin/bitmaps/svg/rotate.svg222
-rw-r--r--app/bin/bitmaps/svg/ruler.svg81
-rw-r--r--app/bin/bitmaps/svg/select.svg153
-rw-r--r--app/bin/bitmaps/svg/sensor.svg71
-rw-r--r--app/bin/bitmaps/svg/signal.svg82
-rw-r--r--app/bin/bitmaps/svg/snap-curs.svg130
-rw-r--r--app/bin/bitmaps/svg/snap-grid.svg128
-rw-r--r--app/bin/bitmaps/svg/split-draw.svg97
-rw-r--r--app/bin/bitmaps/svg/split.svg153
-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.svg72
-rw-r--r--app/bin/bitmaps/svg/sticky-link.svg76
-rw-r--r--app/bin/bitmaps/svg/sticky-note.svg88
-rw-r--r--app/bin/bitmaps/svg/stop.svg106
-rw-r--r--app/bin/bitmaps/svg/straight-line.svg126
-rw-r--r--app/bin/bitmaps/svg/straight.svg160
-rw-r--r--app/bin/bitmaps/svg/switch-motor.svg89
-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.svg80
-rw-r--r--app/bin/bitmaps/svg/text.svg56
-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.svg62
-rw-r--r--app/bin/bitmaps/svg/train.svg173
-rw-r--r--app/bin/bitmaps/svg/trim.svg91
-rw-r--r--app/bin/bitmaps/svg/tunnel.svg164
-rw-r--r--app/bin/bitmaps/svg/turnout-design.svg183
-rw-r--r--app/bin/bitmaps/svg/turnout.svg168
-rw-r--r--app/bin/bitmaps/svg/turntable.svg175
-rw-r--r--app/bin/bitmaps/svg/undo.svg53
-rw-r--r--app/bin/bitmaps/svg/zoom-choose.svg318
-rw-r--r--app/bin/bitmaps/svg/zoom-extent.svg247
-rw-r--r--app/bin/bitmaps/svg/zoom-in.svg222
-rw-r--r--app/bin/bitmaps/svg/zoom-out.svg215
-rw-r--r--app/bin/bitmaps/switchm.xpm30
-rw-r--r--app/bin/bitmaps/text.xpm21
-rw-r--r--app/bin/bitmaps/train.xpm22
-rw-r--r--app/bin/bitmaps/tunnel.xpm22
-rw-r--r--app/bin/bitmaps/turnout.xpm21
-rw-r--r--app/bin/bitmaps/turntbl.xpm21
-rw-r--r--app/bin/bitmaps/zoom.xpm24
-rw-r--r--app/bin/bitmaps/zoomin.xpm24
-rw-r--r--app/bin/bitmaps/zoomout.xpm24
-rw-r--r--app/bin/cbezier.c1121
-rw-r--r--app/bin/cbezier.h20
-rw-r--r--app/bin/cblock.c683
-rw-r--r--app/bin/ccontrol.c813
-rw-r--r--app/bin/ccornu.c2229
-rw-r--r--app/bin/ccornu.h13
-rw-r--r--app/bin/ccurve.c758
-rw-r--r--app/bin/ccurve.h39
-rw-r--r--app/bin/cdraw.c3082
-rw-r--r--app/bin/celev.c293
-rw-r--r--app/bin/cgroup.c1210
-rw-r--r--app/bin/chndldto.c162
-rw-r--r--app/bin/chotbar.c470
-rw-r--r--app/bin/cjoin.c1082
-rw-r--r--app/bin/cjoin.h30
-rw-r--r--app/bin/cmisc.c959
-rw-r--r--app/bin/cmodify.c635
-rw-r--r--app/bin/cnote.c133
-rw-r--r--app/bin/cnvdsgn.c65
-rw-r--r--app/bin/command.c800
-rw-r--r--app/bin/command.h150
-rw-r--r--app/bin/common-ui.h31
-rw-r--r--app/bin/common.h247
-rw-r--r--app/bin/compound.c1150
-rw-r--r--app/bin/compound.h201
-rw-r--r--app/bin/cparalle.c375
-rw-r--r--app/bin/cprint.c1044
-rw-r--r--app/bin/cprofile.c2187
-rw-r--r--app/bin/cpull.c344
-rw-r--r--app/bin/cruler.c300
-rw-r--r--app/bin/cselect.c3278
-rw-r--r--app/bin/cselect.h38
-rw-r--r--app/bin/csensor.c748
-rw-r--r--app/bin/csignal.c1276
-rw-r--r--app/bin/csnap.c440
-rw-r--r--app/bin/csplit.c380
-rw-r--r--app/bin/cstraigh.c123
-rw-r--r--app/bin/cstraigh.h13
-rw-r--r--app/bin/cstruct.c740
-rw-r--r--app/bin/cswitchmotor.c646
-rw-r--r--app/bin/ctext.c119
-rw-r--r--app/bin/ctie.c (renamed from app/bin/cmisc2.c)55
-rw-r--r--app/bin/ctodesgn.c3196
-rw-r--r--app/bin/ctrain.c4925
-rw-r--r--app/bin/ctrain.h37
-rw-r--r--app/bin/cturnout.c3291
-rw-r--r--app/bin/cturntbl.c638
-rw-r--r--app/bin/cundo.c745
-rw-r--r--app/bin/cundo.h13
-rw-r--r--app/bin/custom.c142
-rw-r--r--app/bin/custom.h39
-rw-r--r--app/bin/dbench.c236
-rw-r--r--app/bin/dbitmap.c552
-rw-r--r--app/bin/dcar.c3490
-rw-r--r--app/bin/dcmpnd.c342
-rw-r--r--app/bin/dcontmgm.c226
-rw-r--r--app/bin/dcustmgm.c240
-rw-r--r--app/bin/dease.c123
-rw-r--r--app/bin/denum.c111
-rw-r--r--app/bin/directory.c195
-rw-r--r--app/bin/directory.h8
-rw-r--r--app/bin/dlayer.c3695
-rw-r--r--app/bin/dlayer.h69
-rw-r--r--app/bin/doption.c375
-rw-r--r--app/bin/dpricels.c72
-rw-r--r--app/bin/dprmfile.c371
-rw-r--r--app/bin/draw.c3128
-rw-r--r--app/bin/draw.h125
-rw-r--r--app/bin/drawgeom.c2799
-rw-r--r--app/bin/drawgeom.h132
-rw-r--r--app/bin/dxfformat.c252
-rw-r--r--app/bin/dxfformat.h20
-rw-r--r--app/bin/dxfoutput.c298
-rw-r--r--app/bin/elev.c618
-rw-r--r--app/bin/file2uri.c59
-rw-r--r--app/bin/file2uri.h47
-rw-r--r--app/bin/fileio.c966
-rw-r--r--app/bin/fileio.h60
-rw-r--r--app/bin/filenoteui.c259
-rw-r--r--app/bin/helphelper.c123
-rw-r--r--app/bin/i18n.c27
-rw-r--r--app/bin/i18n.h26
-rw-r--r--app/bin/include/dirent.h1655
-rw-r--r--app/bin/include/levenshtein.h25
-rw-r--r--app/bin/include/paramfile.h51
-rw-r--r--app/bin/include/paramfilelist.h59
-rw-r--r--app/bin/include/partcatalog.h100
-rw-r--r--app/bin/include/problemrep.h37
-rw-r--r--app/bin/include/stringxtc.h9
-rw-r--r--app/bin/include/svgformat.h55
-rw-r--r--app/bin/include/utf8convert.h2
-rw-r--r--app/bin/include/utlist.h1073
-rw-r--r--app/bin/layout.c982
-rw-r--r--app/bin/layout.h23
-rw-r--r--app/bin/levenshtein.c75
-rw-r--r--app/bin/linknoteui.c217
-rw-r--r--app/bin/lprintf.c47
-rw-r--r--app/bin/macro.c1022
-rw-r--r--app/bin/manifest.c100
-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.c2898
-rw-r--r--app/bin/misc.h457
-rw-r--r--app/bin/misc2.c729
-rw-r--r--app/bin/misc2.h115
-rw-r--r--app/bin/note.h81
-rw-r--r--app/bin/param.c2496
-rw-r--r--app/bin/param.h293
-rw-r--r--app/bin/paramfile.c191
-rw-r--r--app/bin/paramfilelist.c657
-rw-r--r--app/bin/paramfilesearch_ui.c489
-rw-r--r--app/bin/partcatalog.c1371
-rw-r--r--app/bin/paths.c181
-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.c57
-rw-r--r--app/bin/shortentext.h38
-rw-r--r--app/bin/shrtpath.c195
-rw-r--r--app/bin/shrtpath.h22
-rw-r--r--app/bin/smalldlg.c199
-rw-r--r--app/bin/smalldlg.h12
-rw-r--r--app/bin/stringxtc.c241
-rw-r--r--app/bin/svgformat.c674
-rw-r--r--app/bin/svgoutput.c490
-rw-r--r--app/bin/tbezier.c2078
-rw-r--r--app/bin/tbezier.h63
-rw-r--r--app/bin/tcornu.c1583
-rw-r--r--app/bin/tcornu.h70
-rw-r--r--app/bin/tcurve.c1283
-rw-r--r--app/bin/tease.c1292
-rw-r--r--app/bin/textnoteui.c217
-rw-r--r--app/bin/track.c2546
-rw-r--r--app/bin/track.h623
-rw-r--r--app/bin/trackx.h41
-rw-r--r--app/bin/trkendpt.c648
-rw-r--r--app/bin/trkendpt.h54
-rw-r--r--app/bin/trkendptx.h51
-rw-r--r--app/bin/trknote.c549
-rw-r--r--app/bin/trkseg.c1724
-rw-r--r--app/bin/trkseg.h252
-rw-r--r--app/bin/tstraigh.c772
-rw-r--r--app/bin/turnout.c2157
-rw-r--r--app/bin/unittest/CMakeLists.txt77
-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/unittest/testfiles/HO-Peco-Code83.xtp6
-rw-r--r--app/bin/utf8convert.c49
-rw-r--r--app/bin/uthash.h102
-rw-r--r--app/bin/utility.c428
-rw-r--r--app/bin/utility.h13
-rw-r--r--app/bin/validator.c9
-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--[-rwxr-xr-x]app/cJSON/cJSON.c (renamed from app/bin/cJSON.c)412
-rw-r--r--[-rwxr-xr-x]app/cJSON/cJSON.h (renamed from app/bin/cJSON.h)48
-rw-r--r--app/cornu/CMakeLists.txt54
-rw-r--r--app/cornu/bezctx_xtrkcad.c36
-rw-r--r--app/doc/CMakeLists.txt161
-rw-r--r--app/doc/addm.but277
-rw-r--r--app/doc/appendix.but29
-rw-r--r--app/doc/changem.but583
-rw-r--r--app/doc/clean-html.cmake6
-rw-r--r--app/doc/clean-html.cmake.in6
-rw-r--r--app/doc/drawm.but241
-rw-r--r--app/doc/editm.but122
-rw-r--r--app/doc/filem.but171
-rw-r--r--app/doc/helpm.but11
-rw-r--r--app/doc/hhc.cmake.in12
-rw-r--r--app/doc/hotbar.but32
-rw-r--r--app/doc/intro.but.in161
-rw-r--r--app/doc/managem.but149
-rwxr-xr-xapp/doc/mk-xtrkcad-manual-html93
-rw-r--r--app/doc/navigation.but27
-rw-r--r--app/doc/optionm.but50
-rw-r--r--app/doc/png.d/bangle.pngbin0 -> 761 bytes
-rw-r--r--app/doc/png.d/bblock.pngbin713 -> 1093 bytes
-rw-r--r--app/doc/png.d/bbridge.pngbin0 -> 1043 bytes
-rw-r--r--app/doc/png.d/bcircl1.pngbin324 -> 1729 bytes
-rw-r--r--app/doc/png.d/bcircl2.pngbin340 -> 1628 bytes
-rw-r--r--app/doc/png.d/bcircl3.pngbin328 -> 1584 bytes
-rw-r--r--app/doc/png.d/bcircle.pngbin370 -> 1718 bytes
-rw-r--r--app/doc/png.d/bconnect.pngbin307 -> 746 bytes
-rw-r--r--app/doc/png.d/bcontrol.pngbin619 -> 945 bytes
-rw-r--r--app/doc/png.d/bcornu.pngbin4346 -> 1417 bytes
-rw-r--r--app/doc/png.d/bcurve.pngbin386 -> 1342 bytes
-rw-r--r--app/doc/png.d/bcurve1.pngbin336 -> 1246 bytes
-rw-r--r--app/doc/png.d/bcurve2.pngbin354 -> 1234 bytes
-rw-r--r--app/doc/png.d/bcurve3.pngbin342 -> 1331 bytes
-rw-r--r--app/doc/png.d/bcurve4.pngbin355 -> 1414 bytes
-rw-r--r--app/doc/png.d/bcurvelin.pngbin0 -> 744 bytes
-rw-r--r--app/doc/png.d/bdelete.pngbin603 -> 863 bytes
-rw-r--r--app/doc/png.d/bdescrib.pngbin292 -> 811 bytes
-rw-r--r--app/doc/png.d/bdraw.pngbin689 -> 1988 bytes
-rw-r--r--app/doc/png.d/bdrawsplit.pngbin0 -> 605 bytes
-rw-r--r--app/doc/png.d/beasement.pngbin689 -> 399 bytes
-rw-r--r--app/doc/png.d/belev.pngbin296 -> 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.pngbin681 -> 801 bytes
-rw-r--r--app/doc/png.d/bflip.pngbin267 -> 767 bytes
-rw-r--r--app/doc/png.d/bgsnap.pngbin372 -> 2304 bytes
-rw-r--r--app/doc/png.d/bgundo.pngbin303 -> 1352 bytes
-rw-r--r--app/doc/png.d/bgzoom.pngbin511 -> 2140 bytes
-rw-r--r--app/doc/png.d/bhelix.pngbin237 -> 1436 bytes
-rw-r--r--app/doc/png.d/bhndldto.pngbin285 -> 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.pngbin7090 -> 7777 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/bmap.pngbin353 -> 357 bytes
-rw-r--r--app/doc/png.d/bmcircle.pngbin1831 -> 1225 bytes
-rw-r--r--app/doc/png.d/bmcurved.pngbin2283 -> 2246 bytes
-rw-r--r--app/doc/png.d/bmenu.pngbin485 -> 339 bytes
-rw-r--r--app/doc/png.d/bmodify.pngbin328 -> 1169 bytes
-rw-r--r--app/doc/png.d/bmove.pngbin319 -> 784 bytes
-rw-r--r--app/doc/png.d/bmovedes.pngbin377 -> 845 bytes
-rw-r--r--app/doc/png.d/bnew.pngbin793 -> 427 bytes
-rw-r--r--app/doc/png.d/bnewcar.pngbin367 -> 561 bytes
-rw-r--r--app/doc/png.d/bnote.pngbin600 -> 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.pngbin345 -> 1117 bytes
-rw-r--r--app/doc/png.d/bruler.pngbin255 -> 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.pngbin282 -> 687 bytes
-rw-r--r--app/doc/png.d/bsensor.pngbin563 -> 1224 bytes
-rw-r--r--app/doc/png.d/bsetup.pngbin0 -> 420 bytes
-rw-r--r--app/doc/png.d/bsignal.pngbin581 -> 581 bytes
-rw-r--r--app/doc/png.d/bsplit.pngbin286 -> 919 bytes
-rw-r--r--app/doc/png.d/bstraigh.pngbin285 -> 1100 bytes
-rw-r--r--app/doc/png.d/bstruct.pngbin289 -> 777 bytes
-rw-r--r--app/doc/png.d/bswitchmotor.pngbin679 -> 805 bytes
-rw-r--r--app/doc/png.d/btext.pngbin241 -> 670 bytes
-rw-r--r--app/doc/png.d/bties.pngbin0 -> 727 bytes
-rw-r--r--app/doc/png.d/btop_bottom.pngbin705 -> 837 bytes
-rw-r--r--app/doc/png.d/btrain.pngbin273 -> 883 bytes
-rw-r--r--app/doc/png.d/btunnel.pngbin245 -> 652 bytes
-rw-r--r--app/doc/png.d/bturnout.pngbin278 -> 897 bytes
-rw-r--r--app/doc/png.d/bturntbl.pngbin282 -> 1151 bytes
-rw-r--r--app/doc/png.d/cgroup.pngbin7967 -> 32372 bytes
-rw-r--r--app/doc/png.d/cmdopt.pngbin7407 -> 20629 bytes
-rw-r--r--app/doc/png.d/colorw.pngbin8380 -> 5299 bytes
-rw-r--r--app/doc/png.d/convertfrom.pngbin4169 -> 874 bytes
-rw-r--r--app/doc/png.d/convertto.pngbin4169 -> 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.pngbin296 -> 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/displayopt.pngbin86476 -> 80557 bytes
-rw-r--r--app/doc/png.d/dlayer.pngbin9268 -> 0 bytes
-rw-r--r--app/doc/png.d/dlayers.pngbin8594 -> 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/dprmfile.pngbin13308 -> 11394 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/layout.pngbin72958 -> 39585 bytes
-rw-r--r--app/doc/png.d/madd.pngbin13693 -> 3174 bytes
-rw-r--r--app/doc/png.d/maddcircle.pngbin0 -> 1812 bytes
-rw-r--r--app/doc/png.d/maddcontrol.pngbin0 -> 1355 bytes
-rw-r--r--app/doc/png.d/maddcurve.pngbin0 -> 2394 bytes
-rw-r--r--app/doc/png.d/maddparallel.pngbin0 -> 1247 bytes
-rw-r--r--app/doc/png.d/map.pngbin3868 -> 1430 bytes
-rw-r--r--app/doc/png.d/mchange.pngbin23214 -> 5142 bytes
-rw-r--r--app/doc/png.d/mconvert.pngbin0 -> 1125 bytes
-rw-r--r--app/doc/png.d/mdraw.pngbin10174 -> 2053 bytes
-rw-r--r--app/doc/png.d/mdrawcircles.pngbin2758 -> 1934 bytes
-rw-r--r--app/doc/png.d/mdrawcurve.pngbin2570 -> 2032 bytes
-rw-r--r--app/doc/png.d/mdrawmeasure.pngbin0 -> 588 bytes
-rw-r--r--app/doc/png.d/mdrawnotes.pngbin0 -> 881 bytes
-rw-r--r--app/doc/png.d/mdrawshapes.pngbin2181 -> 1853 bytes
-rw-r--r--app/doc/png.d/mdrawstraight.pngbin2233 -> 1818 bytes
-rw-r--r--app/doc/png.d/medit.pngbin7035 -> 6233 bytes
-rw-r--r--app/doc/png.d/mentermove.pngbin0 -> 6641 bytes
-rw-r--r--app/doc/png.d/mfile.pngbin6016 -> 7770 bytes
-rw-r--r--app/doc/png.d/mhelp.pngbin2251 -> 4789 bytes
-rw-r--r--app/doc/png.d/mhelpdemos.pngbin4031 -> 3407 bytes
-rw-r--r--app/doc/png.d/mjoin.pngbin0 -> 978 bytes
-rw-r--r--app/doc/png.d/mmacro.pngbin1203 -> 941 bytes
-rw-r--r--app/doc/png.d/mmanage.pngbin8632 -> 4331 bytes
-rw-r--r--app/doc/png.d/mmanageturnoutdesign.pngbin3742 -> 3271 bytes
-rw-r--r--app/doc/png.d/moptions.pngbin3378 -> 2285 bytes
-rw-r--r--app/doc/png.d/mselect.pngbin4055 -> 0 bytes
-rw-r--r--app/doc/png.d/mselectcmd.pngbin0 -> 78701 bytes
-rw-r--r--app/doc/png.d/mselectcontext.pngbin0 -> 47076 bytes
-rw-r--r--app/doc/png.d/mselected.pngbin5004 -> 0 bytes
-rw-r--r--app/doc/png.d/mselectedcontext.pngbin0 -> 68960 bytes
-rw-r--r--app/doc/png.d/msplit.pngbin0 -> 1399 bytes
-rw-r--r--app/doc/png.d/mview.pngbin15591 -> 4108 bytes
-rw-r--r--app/doc/png.d/pan.pngbin3929 -> 788 bytes
-rw-r--r--app/doc/png.d/paramsearch.pngbin14516 -> 34767 bytes
-rw-r--r--app/doc/png.d/pref.pngbin12308 -> 46567 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.pngbin1681 -> 3860 bytes
-rw-r--r--app/doc/png.d/sticky.pngbin12075 -> 8324 bytes
-rw-r--r--app/doc/png.d/turnsel.pngbin18373 -> 50207 bytes
-rw-r--r--app/doc/view_winm.but53
-rw-r--r--app/doc/warranty.but142
-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/cJSON.c2932
-rw-r--r--app/help/cJSON.h285
-rw-r--r--app/help/genhelp.c4
-rw-r--r--app/help/genhelp.json1454
-rw-r--r--app/help/genmessages.c4
-rw-r--r--app/help/messages.in198
-rw-r--r--app/i18n/CMakeLists.txt248
-rw-r--r--app/i18n/cy_GB.po16042
-rw-r--r--app/i18n/de_DE.po14201
-rw-r--r--app/i18n/fi.po32830
-rw-r--r--app/i18n/fr_FR.po32676
-rw-r--r--app/i18n/pt_BR.po13057
-rw-r--r--app/i18n/ru.po15115
-rw-r--r--app/i18n/stripmsg.c6
-rw-r--r--app/lib/AStyle.cfg8
-rw-r--r--app/lib/CHANGELOG.md451
-rw-r--r--app/lib/CMakeLists.txt37
-rw-r--r--app/lib/COPYING39
-rwxr-xr-x[-rw-r--r--]app/lib/Readme.md256
-rw-r--r--app/lib/astylerc15
-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.xtr114
-rw-r--r--app/lib/demos/dmdelund.xtr2
-rw-r--r--app/lib/demos/dmdimlin.xtr3
-rw-r--r--app/lib/demos/dmexcept.xtr4
-rw-r--r--app/lib/demos/dmextend.xtr6
-rw-r--r--app/lib/demos/dmgroup.xtr101
-rw-r--r--app/lib/demos/dmhelix.xtr8
-rw-r--r--app/lib/demos/dmlines.xtr63
-rw-r--r--app/lib/demos/dmlines2.xtr6
-rw-r--r--app/lib/demos/dmnotes.xtr53
-rw-r--r--app/lib/demos/dmrescal.xtr10
-rw-r--r--app/lib/demos/dmrotate.xtr6
-rw-r--r--app/lib/demos/dmselect.xtr34
-rw-r--r--app/lib/demos/dmtbledg.xtr57
-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/Garden RGS.xtc39643
-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/4DBrix(Lego Track).xtp230
-rw-r--r--app/lib/params/5in-MiniTrain.xtp889
-rw-r--r--app/lib/params/7.25-AccuTie.xtp74
-rw-r--r--app/lib/params/7.25-MiniRailway.xtp65
-rw-r--r--app/lib/params/7.25-MiniTrain.xtp921
-rw-r--r--app/lib/params/7.5-AccuTie.xtp74
-rw-r--r--app/lib/params/AccucraftFn3.cars329
-rw-r--r--app/lib/params/AccucraftOn3.cars36
-rw-r--r--app/lib/params/Any-CTC_panel.xtp56
-rw-r--r--app/lib/params/Any-DCC-Concepts Point Motors.xtp115
-rwxr-xr-xapp/lib/params/Any-MTB Switch Machines.xtp220
-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/BrickTracks(Lego Track).xtp75
-rw-r--r--app/lib/params/BrioWoodTrack.xtp990
-rw-r--r--app/lib/params/CMakeLists.txt116
-rw-r--r--app/lib/params/Circuits.xtp40
-rw-r--r--app/lib/params/EM-UK Fine Scale.xtp24
-rw-r--r--app/lib/params/F-NMRA-RP12-21.xtp16
-rw-r--r--app/lib/params/FastTrack-HO.xtp93
-rw-r--r--app/lib/params/FastTrack_n.xtp8
-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-MicroEngineering250.xtp49
-rw-r--r--app/lib/params/G-MicroEngineering332.xtp49
-rw-r--r--app/lib/params/G-MicroEngineeringTrack.xtp142
-rw-r--r--app/lib/params/G-NMRA-RP12-23.xtp16
-rw-r--r--app/lib/params/G-NQD-AMAX Plastic.xtp2
-rw-r--r--app/lib/params/G-Piko.xtp248
-rw-r--r--app/lib/params/G-Playmobil RC Track.xtp61
-rw-r--r--app/lib/params/G-USA.xtp194
-rw-r--r--app/lib/params/G-aristo.xtp468
-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.xtp (renamed from app/lib/params/BachmannEZ-HO.xtp)152
-rw-r--r--app/lib/params/HO-Busch.xtp10
-rw-r--r--app/lib/params/HO-DapolHOOO.xtp151
-rw-r--r--app/lib/params/HO-Frateschi.xtp4
-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.xtp733
-rw-r--r--app/lib/params/HO-Lionel MagLock FasTrack.xtp95
-rw-r--r--app/lib/params/HO-Marklin C-Track.xtp330
-rw-r--r--app/lib/params/HO-Marklin K-track.xtp294
-rw-r--r--app/lib/params/HO-Marklin M-Track.xtp366
-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.xtp274
-rw-r--r--app/lib/params/HO-Peco-Code70USA.xtp54
-rw-r--r--app/lib/params/HO-Peco-Code75Finescale.xtp127
-rw-r--r--app/lib/params/HO-Peco-Code83.xtp8
-rw-r--r--app/lib/params/HO-Peco70USA.xtp32
-rw-r--r--app/lib/params/HO-Piko-A Roadbed.xtp302
-rw-r--r--app/lib/params/HO-Piko-A.xtp (renamed from app/lib/params/Piko-A.xtp)159
-rw-r--r--app/lib/params/HO-Roco HO Code 83.xtp942
-rw-r--r--app/lib/params/HO-Slot-Car-AFX-Track.xtp4
-rwxr-xr-xapp/lib/params/HO-Tillig Luna Tramway.xtp349
-rw-r--r--app/lib/params/HO-TrixExpress Tracks.xtp266
-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 Cornerstone Engineered Bridge System.xtp6
-rw-r--r--app/lib/params/HO-Walthers DCC Code 100.xtp68
-rw-r--r--app/lib/params/HO-Walthers DCC Code 70.xtp68
-rw-r--r--app/lib/params/HO-Walthers DCC Code 83.xtp267
-rw-r--r--app/lib/params/HO-Walthers-Power-Loc.xtp145
-rw-r--r--app/lib/params/HO-Weinert-Code75.xtp408
-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)535
-rw-r--r--app/lib/params/HOn30_Minitrains.xtp200
-rw-r--r--app/lib/params/Hornby Dublo 3 Rail with Turntable.xtp16
-rw-r--r--app/lib/params/Lego - RC-FX Track.xtp66
-rw-r--r--app/lib/params/Lego-Track.xtp152
-rw-r--r--app/lib/params/Lionel27.xtp7
-rw-r--r--app/lib/params/ME Models(Lego Track).xtp49
-rw-r--r--app/lib/params/Mianne-Bench.xtp134
-rw-r--r--app/lib/params/N-Atlas Code 80 Track.xtp (renamed from app/lib/params/N-atlasn80.xtp)1743
-rwxr-xr-xapp/lib/params/N-AtlasRoco Code80 Track.xtp88
-rw-r--r--app/lib/params/N-AtlasTrueTrack.xtp16
-rw-r--r--app/lib/params/N-Bachmann EZ.xtp (renamed from app/lib/params/BachmannEZ-N.xtp)89
-rw-r--r--app/lib/params/N-Bonus Generic Industrial Structures.xtp2
-rw-r--r--app/lib/params/N-BritishFinescaleFineTraxC40.xtp24
-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.xtp38
-rw-r--r--app/lib/params/N-MiniTrix Code 60 Concrete Tie Track.xtp256
-rw-r--r--app/lib/params/N-MiniTrix Track (De).xtp (renamed from app/lib/params/minitrix.xtp)14
-rw-r--r--app/lib/params/N-MiniTrix Track.xtp607
-rw-r--r--app/lib/params/N-ModellbahnUnion.xtp117
-rw-r--r--app/lib/params/N-N- 90ft-ROUNDHOUSE.xtp27
-rwxr-xr-xapp/lib/params/N-NTram Track.xtp258
-rw-r--r--app/lib/params/N-PecoCode55Finescale.xtp370
-rw-r--r--app/lib/params/N-PecoCode80Streamline.xtp38
-rwxr-xr-xapp/lib/params/N-ScaleScene Structures.xtp233
-rw-r--r--app/lib/params/N-Shinohara70.xtp8
-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.xtp3535
-rw-r--r--app/lib/params/N-atlasn55.xtp8
-rw-r--r--app/lib/params/N-fl.xtp8
-rw-r--r--app/lib/params/N-kato-turntable.xtp2
-rw-r--r--app/lib/params/N-walthers-n.xtp (renamed from app/lib/params/N-walth-n.xtp)7027
-rw-r--r--app/lib/params/NScale_SectorPlate_Traverser_Examples.xtp6
-rw-r--r--app/lib/params/NTrak.xtp1510
-rw-r--r--app/lib/params/Newqida.xtp4
-rw-r--r--app/lib/params/O-Atlas2Rail.xtp26
-rw-r--r--app/lib/params/O-Atlas3Rrail.xtp30
-rw-r--r--app/lib/params/O-Bassett-Lowke (discontinued).xtp12
-rw-r--r--app/lib/params/O-ETS.xtp2
-rw-r--r--app/lib/params/O-Lenz.xtp8
-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.xtp3522
-rw-r--r--app/lib/params/O-atlaso3rail.xtp36
-rw-r--r--app/lib/params/O-nmra-lapped.xtp70
-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
-rwxr-xr-xapp/lib/params/OO9-Peco.xtp62
-rw-r--r--app/lib/params/On3-FastTrack.xtp226
-rw-r--r--app/lib/params/Piko-g.xtp183
-rw-r--r--app/lib/params/RocoGeoLineHO.xtp8
-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.xtp228
-rw-r--r--app/lib/params/TT-Hornby.xtp256
-rw-r--r--app/lib/params/TT-Kuehn.xtp24
-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-Turntable.xtp2
-rw-r--r--app/lib/params/TT-Roco.xtp215
-rw-r--r--app/lib/params/TT-Zeuke.xtp144
-rw-r--r--app/lib/params/TilligAdvTT.xtp8
-rw-r--r--app/lib/params/TilligH0EliteCode83.xtp16
-rw-r--r--app/lib/params/TilligTTModellGS.xtp16
-rw-r--r--app/lib/params/TreeLgConif.xtp3023
-rw-r--r--app/lib/params/TreeLgDecid.xtp3483
-rw-r--r--app/lib/params/TreeLgFall.xtp3483
-rw-r--r--app/lib/params/TreeSmConif.xtp3023
-rw-r--r--app/lib/params/TreeSmDecid.xtp3483
-rw-r--r--app/lib/params/TreeSmFall.xtp3483
-rw-r--r--app/lib/params/USA-G.xtp110
-rw-r--r--app/lib/params/Z-Eisen Platz Track.xtp21
-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-Prim Track.xtp29
-rw-r--r--app/lib/params/Z-RealZJ Track.xtp37
-rw-r--r--app/lib/params/Z-Rokuhan.xtp2356
-rw-r--r--app/lib/params/arnold.xtp18
-rw-r--r--app/lib/params/atl83ho.xtp4
-rw-r--r--app/lib/params/atlaso2rail.xtp313
-rw-r--r--app/lib/params/fl-model.xtp496
-rw-r--r--app/lib/params/flnpicco.xtp32
-rw-r--r--app/lib/params/hubner1.xtp21
-rw-r--r--app/lib/params/kato-ho.xtp556
-rw-r--r--app/lib/params/lgb.xtp26
-rw-r--r--app/lib/params/marcway-EM.xtp8
-rw-r--r--app/lib/params/mkcarpart.c48
-rw-r--r--app/lib/params/mkstruct.c4
-rw-r--r--app/lib/params/mrkhomde.xtp113
-rw-r--r--app/lib/params/mrkln1.xtp82
-rw-r--r--app/lib/params/mrklnhoc-de.xtp32
-rw-r--r--app/lib/params/mrklnz.xtp36
-rw-r--r--app/lib/params/nmra-ho.xtp16
-rw-r--r--app/lib/params/nmra-n.xtp16
-rw-r--r--app/lib/params/nmra-o.xtp16
-rw-r--r--app/lib/params/nmra-s.xtp38
-rw-r--r--app/lib/params/nmra-tt.xtp8
-rw-r--r--app/lib/params/nmra-z.xtp16
-rw-r--r--app/lib/params/p4.xtp24
-rw-r--r--app/lib/params/peco turntable wo routes.xtp40
-rw-r--r--app/lib/params/peco-O-Bullhead.xtp80
-rw-r--r--app/lib/params/proto-ng-3-foot.xtp264
-rw-r--r--app/lib/params/proto-ng.xtp29
-rw-r--r--app/lib/params/protoam.xtp3
-rw-r--r--app/lib/params/protosteam.xtp8
-rw-r--r--app/lib/params/prototype-de.xtp24
-rw-r--r--app/lib/params/roadname.tab12
-rw-r--r--app/lib/params/rocho100.xtp8
-rw-r--r--app/lib/params/t-trak.xtp3
-rw-r--r--app/lib/params/walth-ho.xtp10
-rw-r--r--app/lib/params/wlthho83.xtp16
-rw-r--r--app/lib/xtrkcad-beta.desktop9
-rwxr-xr-xapp/lib/xtrkcad-setup87
-rw-r--r--app/lib/xtrkcad.desktop6
-rw-r--r--app/lib/xtrkcad.upd34
-rw-r--r--app/lib/xtrkcad.xml8
-rw-r--r--app/lib/xtrkcad.xtq150
-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/dirent.c6
-rw-r--r--app/tools/halibut/CMakeLists.txt15
-rw-r--r--app/tools/halibut/bk_html.c8
-rw-r--r--app/tools/halibut/bk_paper.c67
-rw-r--r--app/tools/halibut/charset/CMakeLists.txt16
-rw-r--r--app/tools/halibut/charset/fromucs.c6
-rw-r--r--app/tools/halibut/charset/iso2022.c6
-rw-r--r--app/tools/halibut/charset/test.c2
-rw-r--r--app/tools/halibut/charset/toucs.c6
-rw-r--r--app/tools/halibut/deflate.c13
-rw-r--r--app/tools/halibut/in_afm.c22
-rw-r--r--app/tools/halibut/in_pf.c20
-rw-r--r--app/tools/halibut/input.c2
-rw-r--r--app/tools/halibut/malloc.c2
-rw-r--r--app/tools/halibut/misc.c6
-rw-r--r--app/tools/halibut/paper.h4
-rw-r--r--app/tools/halibut/tree234.c2
-rw-r--r--app/tools/halibut/ustring.c16
-rw-r--r--app/tools/halibut/wcwidth.c7
-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.txt103
-rw-r--r--app/wlib/gtklib/bitmap.c38
-rw-r--r--app/wlib/gtklib/boxes.c194
-rw-r--r--app/wlib/gtklib/browserhelp.c69
-rw-r--r--app/wlib/gtklib/button.c904
-rw-r--r--app/wlib/gtklib/color.c512
-rw-r--r--app/wlib/gtklib/control.c259
-rw-r--r--app/wlib/gtklib/droplist.c441
-rw-r--r--app/wlib/gtklib/dynarr.h10
-rw-r--r--app/wlib/gtklib/filesel.c203
-rw-r--r--app/wlib/gtklib/font.c369
-rw-r--r--app/wlib/gtklib/gtkdraw-cairo.c1357
-rw-r--r--app/wlib/gtklib/gtkint.h307
-rw-r--r--app/wlib/gtklib/help.c43
-rw-r--r--app/wlib/gtklib/ixhelp.c424
-rw-r--r--app/wlib/gtklib/lines.c132
-rw-r--r--app/wlib/gtklib/list.c519
-rw-r--r--app/wlib/gtklib/liststore.c219
-rw-r--r--app/wlib/gtklib/main.c30
-rw-r--r--app/wlib/gtklib/menu.c493
-rw-r--r--app/wlib/gtklib/message.c224
-rw-r--r--app/wlib/gtklib/notice.c344
-rw-r--r--app/wlib/gtklib/opendocument.c88
-rw-r--r--app/wlib/gtklib/osxhelp.c169
-rw-r--r--app/wlib/gtklib/pixbuf.c96
-rw-r--r--app/wlib/gtklib/png.c65
-rw-r--r--app/wlib/gtklib/print.c1074
-rw-r--r--app/wlib/gtklib/single.c356
-rw-r--r--app/wlib/gtklib/splash.c115
-rw-r--r--app/wlib/gtklib/statusbar.c205
-rw-r--r--app/wlib/gtklib/sysinfo.c137
-rw-r--r--app/wlib/gtklib/text.c604
-rw-r--r--app/wlib/gtklib/timer.c95
-rw-r--r--app/wlib/gtklib/tooltip.c236
-rw-r--r--app/wlib/gtklib/treeview.c424
-rw-r--r--app/wlib/gtklib/uthash.h102
-rw-r--r--app/wlib/gtklib/util.c831
-rw-r--r--app/wlib/gtklib/window.c1339
-rw-r--r--app/wlib/gtklib/wpref.c360
-rw-r--r--app/wlib/gtklib/writebitmap.c102
-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.h407
-rw-r--r--app/wlib/mswlib/CMakeLists.txt89
-rw-r--r--app/wlib/mswlib/backgnd.c369
-rw-r--r--app/wlib/mswlib/checksum.c14
-rw-r--r--app/wlib/mswlib/dynarr.h12
-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.c155
-rw-r--r--app/wlib/mswlib/mswbitmap.c252
-rw-r--r--app/wlib/mswlib/mswbox.c45
-rw-r--r--app/wlib/mswlib/mswbutt.c341
-rw-r--r--app/wlib/mswlib/mswchoic.c357
-rw-r--r--app/wlib/mswlib/mswcolor.c131
-rw-r--r--app/wlib/mswlib/mswdraw.c1921
-rw-r--r--app/wlib/mswlib/mswedit.c592
-rw-r--r--app/wlib/mswlib/mswint.h181
-rw-r--r--app/wlib/mswlib/mswlines.c53
-rw-r--r--app/wlib/mswlib/mswlist.c1285
-rw-r--r--app/wlib/mswlib/mswmenu.c694
-rw-r--r--app/wlib/mswlib/mswmisc.c882
-rw-r--r--app/wlib/mswlib/mswmsg.c168
-rw-r--r--app/wlib/mswlib/mswpref.c442
-rw-r--r--app/wlib/mswlib/mswprint.c158
-rw-r--r--app/wlib/mswlib/mswsplash.c196
-rw-r--r--app/wlib/mswlib/mswstatus.c38
-rw-r--r--app/wlib/mswlib/mswtext.c568
-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
-rw-r--r--debian/changelog26
-rw-r--r--debian/control17
-rw-r--r--debian/copyright142
-rw-r--r--debian/not-installed5
-rw-r--r--debian/patches/0001-usr_gtk-3.patch13
-rw-r--r--debian/patches/series3
-rwxr-xr-xdebian/rules2
-rw-r--r--debian/source/lintian-overrides1
-rw-r--r--debian/xtrkcad-common.lintian-overrides1
-rw-r--r--debian/xtrkcad.install2
-rw-r--r--distribution/CMakeLists.txt7
-rw-r--r--distribution/fedora/README26
-rw-r--r--distribution/fedora/xtrkcad-5.2.2GA-xtrkcad.desktop.patch106
-rw-r--r--distribution/fedora/xtrkcad.spec97
-rw-r--r--distribution/posix/CMakeLists.txt33
-rwxr-xr-xdistribution/posix/postinst14
-rwxr-xr-xdistribution/posix/prerm15
-rw-r--r--distribution/win32/CMakeLists.txt5
-rw-r--r--distribution/win32/nsis/CMakeLists.txt29
-rw-r--r--docs/CMakeLists.txt6
-rw-r--r--docs/DevGuide.docxbin0 -> 64905 bytes
-rw-r--r--docs/doxygen/CMakeLists.txt23
-rw-r--r--docs/doxygen/Doxyfile.in2586
-rw-r--r--xtrkcad-config.h.in4
1126 files changed, 333959 insertions, 128948 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0ff0ae9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.pc
+debian/files
diff --git a/.hgignore b/.hgignore
index 3404f26..45b3ed7 100644
--- a/.hgignore
+++ b/.hgignore
@@ -1,7 +1,9 @@
# hg uses this global ignore file for all tree-wide ignores
.DS_Store
.project
+.settings.json
+build/
syntax: glob
*.mo
-xtrkcad-4.2.3b.hg
-app/bin/dprmfile.c.orig
+.vscode/launch.json
+.vscode/c_cpp_properties.json
diff --git a/.hgtags b/.hgtags
index 5c1cc48..17f8df6 100644
--- a/.hgtags
+++ b/.hgtags
@@ -73,3 +73,63 @@ a5a2221e59d57cb7227de4df566fb49643c4799b V5.2 Beta 2.0 Release
a9688ed807416e3a239268e05f2a26940f96eea7 V5.2 Beta 2.1 Release
a9688ed807416e3a239268e05f2a26940f96eea7 V5.2 Beta 2.1 Release
33627b1df2f6f96acecb26f402c918dd4c9ff3e0 V5.2 Beta 2.1 Release
+33627b1df2f6f96acecb26f402c918dd4c9ff3e0 V5.2 Beta 2.1 Release
+f000c6c8133bfa2048d827390b29cb425b21d45e V5.2 Beta 2.1 Release
+f000c6c8133bfa2048d827390b29cb425b21d45e V5.2 Beta 2.1 Release
+db53b5963eabf8b1826bb5d81292c9b800b69594 V5.2 Beta 2.1 Release
+1e8e89390a2f41daa5dc9150d21b7d25b57e25c6 V5.2 Beta 3.0 Release
+1e8e89390a2f41daa5dc9150d21b7d25b57e25c6 V5.2 Beta 3.0 Release
+635782edaba554c1799d022bffb1156141d97163 V5.2 Beta 3.0 Release
+635782edaba554c1799d022bffb1156141d97163 V5.2 Beta 3.0 Release
+3f76204dab88a44da829c6c73fa1738264a7a7ad V5.2 Beta 3.0 Release
+3f76204dab88a44da829c6c73fa1738264a7a7ad V5.2 Beta 3.0 Release
+9a2f95ba79f15a32b327504b6b24360133a23040 V5.2 Beta 3.0 Release
+9a2f95ba79f15a32b327504b6b24360133a23040 V5.2 Beta 3.0 Release
+a7b63a40ae8e627c3497ced304f188174ee99135 V5.2 Beta 3.0 Release
+fa8f70e41ffeac9e1a4fd9b30357cd6507c5b12e V5.2.0 GA Release
+fa8f70e41ffeac9e1a4fd9b30357cd6507c5b12e V5.2.0 GA Release
+07573f2b2fa101cfc852219b3f74dcb5d7023f79 V5.2.0 GA Release
+07573f2b2fa101cfc852219b3f74dcb5d7023f79 V5.2.0 GA Release
+110d992c3ca0158de78d09a9396c79159b7eaf08 V5.2.0 GA Release
+110d992c3ca0158de78d09a9396c79159b7eaf08 V5.2.0 GA Release
+96f7e3255dc2644bf44deaaa9b85cd898bed18ae V5.2.0 GA Release
+3337cc2abe22941114aeda2d9f2a1bd7ac65631e V5.2.1 GA Release
+2a23c333fbbd6c7f52ece6a6de087bb97213c9b5 V5.2.1 GA Release
+2a23c333fbbd6c7f52ece6a6de087bb97213c9b5 V5.2.1 GA Release
+04e33df10082be61feab5158c0905f099cc7e4cc V5.2.1 GA Release
+04e33df10082be61feab5158c0905f099cc7e4cc V5.2.1 GA Release
+88a438984fc2c6e9a0ed054db2b4c4abfe86adde V5.2.1 GA Release
+b247e6845a1c3306fc9dec7f607c02afc2e863c1 V5.2.1 Hotfix a Release
+b247e6845a1c3306fc9dec7f607c02afc2e863c1 V5.2.1 Hotfix a Release
+94ffe4a99fafda76eca76f83ffedd0274ce753b8 V5.2.1 Hotfix a Release
+94ffe4a99fafda76eca76f83ffedd0274ce753b8 V5.2.1 Hotfix a Release
+31686443927091c46337f73245750acb05d4e3bb V5.2.1 Hotfix a Release
+9a6a869e90ef8d437674b2a0d50408f4cf9ef2b1 V5.2.2 Release Candidate
+9a6a869e90ef8d437674b2a0d50408f4cf9ef2b1 V5.2.2 Release Candidate
+21bddd7f1d353ea3115253cd6def90cf82f115cb V5.2.2 Release Candidate
+21bddd7f1d353ea3115253cd6def90cf82f115cb V5.2.2 Beta 1
+ca04617d5211da2c79e4ec9952bb8b15255f9aab V5.2.2 Beta 2
+21bddd7f1d353ea3115253cd6def90cf82f115cb V5.2.2 Release Candidate
+0000000000000000000000000000000000000000 V5.2.2 Release Candidate
+ca04617d5211da2c79e4ec9952bb8b15255f9aab V5.2.2 Beta 2
+f7ca5abb27264e3bd2ea3743272e73de859fd8c0 V5.2.2 Beta 2
+a926b2fbe2a62877ec90bb0ba7b6e96beac82438 V5.2.2 Beta 2
+78067f56454632058cc12bed22f4ff8e8a204244 V5.2.2 Beta3
+78067f56454632058cc12bed22f4ff8e8a204244 V5.2.2 Beta3
+35b056b43144129e0aec461403999682dea5d285 V5.2.2 Beta3
+3bc84c7f38d15bd1ff0579723c42b09d2c58840b V5.2.2 GA
+cd2a3a174a69a50a74c19c8b4b69e3159bd3fba0 V5.3.0 Beta1
+cd2a3a174a69a50a74c19c8b4b69e3159bd3fba0 V5.3.0 Beta1
+0000000000000000000000000000000000000000 V5.3.0 Beta1
+0000000000000000000000000000000000000000 V5.3.0 Beta1
+5248ba8ae4e9d24e6b10569e973cc3ab1c9095f7 V5.3.0 Beta1
+5248ba8ae4e9d24e6b10569e973cc3ab1c9095f7 V5.3.0 Beta1
+c5ffaa4aece14cdff6f965f42010a48d7c6fb7ae V5.3.0 Beta1
+d2bceede7986a46839b67ca759319c924301dcc5 V5.3.0 Beta2
+a1bc40ece644d314131042b40427b7796887e785 V5.3.0
+a1bc40ece644d314131042b40427b7796887e785 GA
+dd46dfec7ede6206463bdaf03a2a8c953460fcba V5.3.0 GA
+a1bc40ece644d314131042b40427b7796887e785 V5.3.0
+0000000000000000000000000000000000000000 V5.3.0
+a1bc40ece644d314131042b40427b7796887e785 GA
+0000000000000000000000000000000000000000 GA
diff --git a/CMake/CMakeDefaults.cmake b/CMake/CMakeDefaults.cmake
new file mode 100644
index 0000000..4f143f8
--- /dev/null
+++ b/CMake/CMakeDefaults.cmake
@@ -0,0 +1,22 @@
+# Always include srcdir and builddir in include path
+# This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY} in
+# about every subdir
+# since cmake 2.4.0
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+# Put the include dirs which are in the source or build tree
+# before all other include dirs, so the headers in the sources
+# are prefered over the already installed ones
+# since cmake 2.4.1
+set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
+
+# Use colored output
+# since cmake 2.4.0
+set(CMAKE_COLOR_MAKEFILE ON)
+
+# Use folders to organize targets
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
+#
+# Print Installing but not Up-to-date messages
+set(CMAKE_INSTALL_MESSAGE LAZY)
diff --git a/CMake/FindCMocka.cmake b/CMake/FindCMocka.cmake
index 6a5484e..79ebeb8 100644
--- a/CMake/FindCMocka.cmake
+++ b/CMake/FindCMocka.cmake
@@ -21,9 +21,8 @@
#=============================================================================
#
-
-set (CMOCKA_ROOT_DIR
- "../../external/x86/cmocka")
+set(CMOCKA_ROOT_DIR
+ "$ENV{XTCEXTERNALROOT}/${XTRKCAD_ARCH_SUBDIR}/cmocka")
find_path(CMOCKA_INCLUDE_DIR
NAMES
diff --git a/CMake/FindFreeImage.cmake b/CMake/FindFreeImage.cmake
index 6073916..58afdac 100644
--- a/CMake/FindFreeImage.cmake
+++ b/CMake/FindFreeImage.cmake
@@ -11,22 +11,21 @@
# XTrackCAD specific directory tree is assumed
#
-if (WIN32)
+if(WIN32)
+ # Folders for x86/x64
+ set( FREEIMAGEBASEDIR "$ENV{XTCEXTERNALROOT}/${XTRKCAD_ARCH_SUBDIR}/FreeImage" )
find_path( FREEIMAGE_INCLUDE_PATH FreeImage.h
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/FreeImage
+ PATHS ${FREEIMAGEBASEDIR}
DOC "The directory where FreeImage.h resides")
find_library( FREEIMAGE_LIBRARY
NAMES FreeImage freeimage
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/FreeImage
+ PATHS ${FREEIMAGEBASEDIR}
DOC "The FreeImage library")
find_file( FREEIMAGE_SHAREDLIB
NAMES freeimage.DLL
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/FreeImage
+ PATHS ${FREEIMAGEBASEDIR}
)
-else (WIN32)
+else()
find_path( FREEIMAGE_INCLUDE_PATH FreeImage.h
/usr/include
/usr/local/include
@@ -43,16 +42,45 @@ else (WIN32)
/sw/lib
/opt/local/lib
DOC "The FreeImage library")
-endif (WIN32)
+endif()
+include(FindPackageHandleStandardArgs)
find_package_handle_standard_args( FreeImage
- DEFAULT_MSG
+ REQUIRED_VARS
FREEIMAGE_LIBRARY
FREEIMAGE_INCLUDE_PATH
)
-mark_as_advanced(
- FREEIMAGE_FOUND
- FREEIMAGE_LIBRARY
- FREEIMAGE_INCLUDE_PATH
- FREEIMAGE_SHAREDLIB)
+if(FreeImage_FOUND)
+ mark_as_advanced(
+ FREEIMAGE_FOUND
+ FREEIMAGE_LIBRARY
+ FREEIMAGE_INCLUDE_PATH
+ FREEIMAGE_SHAREDLIB
+ )
+endif()
+
+if(FreeImage_FOUND AND NOT TARGET FreeImage::FreeImage)
+ add_library(FreeImage::FreeImage UNKNOWN IMPORTED)
+ set_property(TARGET FreeImage::FreeImage PROPERTY IMPORTED_LOCATION ${FREEIMAGE_LIBRARY})
+ target_include_directories(FreeImage::FreeImage INTERFACE ${FREEIMAGE_INCLUDE_PATH})
+
+ set(FreeImage_VERSION_MAJOR)
+ set(FreeImage_VERSION_MINOR)
+ set(FreeImage_VERSION_PATCH)
+ file(READ "${FREEIMAGE_INCLUDE_PATH}/FreeImage.h" _FreeImage_H_CONTENTS)
+
+ string(REGEX MATCH "#define[ \t]+FREEIMAGE_MAJOR_VERSION[ \t]+[0-9]+" FreeImage_VERSION_MAJOR "${_FreeImage_H_CONTENTS}")
+ string(REGEX MATCH "[0-9]+$" FreeImage_VERSION_MAJOR ${FreeImage_VERSION_MAJOR})
+
+ string(REGEX MATCH "#define[ \t]+FREEIMAGE_MINOR_VERSION[ \t]+[0-9]+" FreeImage_VERSION_MINOR "${_FreeImage_H_CONTENTS}")
+ string(REGEX MATCH "[0-9]+$" FreeImage_VERSION_MINOR ${FreeImage_VERSION_MINOR})
+
+ string(REGEX MATCH "#define[ \t]+FREEIMAGE_RELEASE_SERIAL[ \t]+[0-9]+" FreeImage_VERSION_PATCH
+ "${_FreeImage_H_CONTENTS}")
+ string(REGEX MATCH "[0-9]+$" FreeImage_VERSION_PATCH ${FreeImage_VERSION_PATCH})
+
+ set(FreeImage_VERSION "${FreeImage_VERSION_MAJOR}.${FreeImage_VERSION_MINOR}.${FreeImage_VERSION_PATCH}"
+ CACHE STRING
+ "Version number of FreeImage")
+endif()
diff --git a/CMake/FindGTKUnixPrint.cmake b/CMake/FindGTKUnixPrint.cmake
index 06bc548..dd9baab 100644
--- a/CMake/FindGTKUnixPrint.cmake
+++ b/CMake/FindGTKUnixPrint.cmake
@@ -46,4 +46,9 @@ if (GTK_UNIX_PRINT_VERSION)
endif ()
include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK_UNIX_PRINT DEFAULT_MSG GTK_UNIX_PRINT_INCLUDE_DIRS GTK_UNIX_PRINT_LIBRARIES VERSION_OK)
+find_package_handle_standard_args(GTKUnixPrint
+ DEFAULT_MSG
+ GTK_UNIX_PRINT_INCLUDE_DIRS
+ GTK_UNIX_PRINT_LIBRARIES
+ VERSION_OK
+)
diff --git a/CMake/FindInkscape.cmake b/CMake/FindInkscape.cmake
new file mode 100644
index 0000000..0ed7034
--- /dev/null
+++ b/CMake/FindInkscape.cmake
@@ -0,0 +1,47 @@
+
+# Try to find the Inkscape command-line SVG rasterizer
+# Once done this will define
+#
+# Inkscape_FOUND
+# Inkscape_EXECUTABLE Where to find Inkscape
+# Inkscape_VERSION The Inkscape version number
+# Inkscape_EXPORT Option to specify the destination file
+# Inkscape_GUI Option to disable the GUI if needed
+#
+# Module is from https://github.com/arx/ArxLibertatis
+
+find_program(
+ Inkscape_EXECUTABLE
+ NAMES inkscape
+ HINTS "C:/Program Files/Inkscape/bin"
+ DOC "Inkscape command-line SVG rasterizer"
+)
+
+execute_process(COMMAND ${Inkscape_EXECUTABLE} "--version" OUTPUT_VARIABLE _Inkscape_VERSION ERROR_QUIET)
+STRING(REGEX MATCH "[1-9]\.[0-9\+\.[0-9]+" _Inkscape_VERSION ${_Inkscape_VERSION})
+
+set(Inkscape_VERSION ${_Inkscape_VERSION} CACHE STRING "Inkscape Version")
+
+execute_process(COMMAND ${Inkscape_EXECUTABLE} "--help" OUTPUT_VARIABLE _Inkscape_HELP ERROR_QUIET)
+
+if(_Inkscape_HELP MATCHES "--without-gui")
+ set(Inkscape_GUI "--without-gui" CACHE STRING "Inkscape option to disable the GUI if needed")
+endif()
+
+if(NOT DEFINED Inkscape_EXPORT)
+ foreach(option IN ITEMS "--export-filename=" "--export-file=" "--export-png=")
+ if(_Inkscape_HELP MATCHES "${option}")
+ set(Inkscape_EXPORT "${option}" CACHE STRING "Inkscape option to specify the export filename")
+ break()
+ endif()
+ endforeach()
+ if(NOT DEFINED Inkscape_EXPORT)
+ message(WARNING "Could not determine Inkscape export file option, assuming -o")
+ set(Inkscape_EXPORT "-o " CACHE STRING "Inkscape option to specify the export filename")
+ endif()
+endif()
+
+# handle the QUIETLY and REQUIRED arguments and set Inkscape_FOUND to TRUE if
+# all listed variables are TRUE
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Inkscape REQUIRED_VARS Inkscape_EXECUTABLE) \ No newline at end of file
diff --git a/CMake/FindLibzip.cmake b/CMake/FindLibzip.cmake
index b6f1a9e..8838a86 100644
--- a/CMake/FindLibzip.cmake
+++ b/CMake/FindLibzip.cmake
@@ -4,29 +4,26 @@
# LIBZIP_INCLUDE_DIR_ZIP
# LIBZIP_INCLUDE_DIR_ZIPCONF
# LIBZIP_LIBRARY
+# LIBZIP_VERSION
+#
+# Target Libzip::Libzip is exported
#
# There is no default installation for libzip on Windows so a
# XTrackCAD specific directory tree is assumed
#
if(WIN32)
+ set(LIBZIPBASEDIR "$ENV{XTCEXTERNALROOT}/${XTRKCAD_ARCH_SUBDIR}/libzip" )
find_path( LIBZIP_INCLUDE_DIR_ZIP zip.h
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/libzip
- DOC "The directory where zip.h resides")
+ PATHS ${LIBZIPBASEDIR} "${LIBZIPBASEDIR}/include"
+ DOC "The directory where zip.h resides")
find_path( LIBZIP_INCLUDE_DIR_ZIPCONF zipconf.h
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/libzip
- DOC "The directory where zip.h resides")
+ PATHS ${LIBZIPBASEDIR} "${LIBZIPBASEDIR}/include"
+ DOC "The directory where zip.h resides")
find_library( LIBZIP_LIBRARY
- NAMES zip Zip
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/libzip
- DOC "The libzip library")
- find_file( LIBZIP_SHAREDLIB
- NAMES zip.dll Zip.dll
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/libzip)
+ NAMES zip Zip
+ PATHS ${LIBZIPBASEDIR} "${LIBZIPBASEDIR}/lib"
+ DOC "The libzip library")
else(WIN32)
find_package(PkgConfig)
pkg_check_modules(PC_LIBZIP QUIET libzip)
@@ -39,23 +36,51 @@ else(WIN32)
NAMES zipconf.h
HINTS ${PC_LIBZIP_INCLUDE_DIRS})
- find_library(LIBZIP_LIBRARY
- NAMES zip)
+ if(UNIX AND NOT APPLE)
+ find_library(LIBZIP_LIBRARY
+ NAMES libzip.a zip
+ PATHS
+ /usr/lib64
+ /usr/lib
+ /usr/local/lib64
+ /usr/local/lib
+ /sw/lib
+ /opt/local/lib
+ ${CMAKE_CURRENT_SOURCE_DIR}/app/tools/lib/linux
+ )
+ else()
+ find_library(LIBZIP_LIBRARY
+ NAMES zip)
+ endif()
endif(WIN32)
include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(
- LIBZIP DEFAULT_MSG
- LIBZIP_LIBRARY LIBZIP_INCLUDE_DIR_ZIP LIBZIP_INCLUDE_DIR_ZIPCONF)
+find_package_handle_standard_args(
+ Libzip
+ REQUIRED_VARS
+ LIBZIP_LIBRARY LIBZIP_INCLUDE_DIR_ZIP LIBZIP_INCLUDE_DIR_ZIPCONF
+)
+
+if(Libzip_FOUND)
+ mark_as_advanced(
+ LIBZIP_LIBRARY
+ LIBZIP_INCLUDE_DIR_ZIP
+ LIBZIP_INCLUDE_DIR_ZIPCONF
+ )
+endif()
set(LIBZIP_VERSION 0)
-if (LIBZIP_INCLUDE_DIR_ZIPCONF)
- FILE(READ "${LIBZIP_INCLUDE_DIR_ZIPCONF}/zipconf.h" _LIBZIP_VERSION_CONTENTS)
- if (_LIBZIP_VERSION_CONTENTS)
- STRING(REGEX REPLACE ".*#define LIBZIP_VERSION \"([0-9a-z.]+)\".*" "\\1" LIBZIP_VERSION "${_LIBZIP_VERSION_CONTENTS}")
- endif ()
-endif ()
+if(Libzip_FOUND AND NOT TARGET Libzip::Libzip)
+ add_library(Libzip::Libzip UNKNOWN IMPORTED)
+ set_property(TARGET Libzip::Libzip PROPERTY IMPORTED_LOCATION ${LIBZIP_LIBRARY})
+ target_include_directories(Libzip::Libzip INTERFACE ${LIBZIP_INCLUDE_DIR_ZIP})
-set(LIBZIP_VERSION ${LIBZIP_VERSION} CACHE STRING "Version number of libzip")
-mark_as_advanced(LIBZIP_LIBRARY LIBZIP_INCLUDE_DIR_ZIP LIBZIP_INCLUDE_DIR_ZIPCONF LIBZIP_SHAREDLIB)
+ if (LIBZIP_INCLUDE_DIR_ZIPCONF)
+ file(READ "${LIBZIP_INCLUDE_DIR_ZIPCONF}/zipconf.h" _LIBZIP_VERSION_CONTENTS)
+ if (_LIBZIP_VERSION_CONTENTS)
+ string(REGEX REPLACE ".*#define LIBZIP_VERSION \"([0-9a-z.]+)\".*" "\\1" LIBZIP_VERSION "${_LIBZIP_VERSION_CONTENTS}")
+ endif ()
+ endif ()
+ set(LIBZIP_VERSION ${LIBZIP_VERSION} CACHE STRING "Version number of libzip")
+endif()
diff --git a/CMake/FindMiniXML.cmake b/CMake/FindMiniXML.cmake
new file mode 100644
index 0000000..cded8d4
--- /dev/null
+++ b/CMake/FindMiniXML.cmake
@@ -0,0 +1,98 @@
+#
+# Try to find the mini-xml library and include path.
+# Once done this will define
+#
+# MINIXML_FOUND
+# MINIXML_INCLUDE_PATH
+# MINIXML_LIBRARY
+#
+# There is no default installation for minixml on Windows so a
+# XTrackCAD specific directory tree is assumed
+# Windows build uses the static library for minixml
+
+if (WIN32)
+ set(MXMLBASEDIR "$ENV{XTCEXTERNALROOT}/${XTRKCAD_ARCH_SUBDIR}/mxml" )
+ find_path( MINIXML_INCLUDE_PATH mxml.h
+ PATHS ${MXMLBASEDIR}
+ DOC "The directory where mxml.h resides")
+ find_library( MINIXML_LIBRARY
+ NAMES mxmlstat.lib
+ PATHS ${MXMLBASEDIR}
+ DOC "The Mini XML static library")
+else ()
+ find_path( MINIXML_INCLUDE_PATH mxml.h
+ /usr/include
+ /usr/local/include
+ /sw/include
+ /opt/local/include
+ DOC "The directory where mxml.h resides")
+ if(UNIX AND NOT APPLE)
+ find_library( MINIXML_LIBRARY
+ NAMES libmxml.a mxml1 mxml
+ PATHS
+ /usr/lib64
+ /usr/lib
+ /usr/local/lib64
+ /usr/local/lib
+ /sw/lib
+ /opt/local/lib
+ DOC "The Mini XML library")
+ else()
+ find_library( MINIXML_LIBRARY
+ NAMES mxml1 mxml
+ PATHS
+ /usr/lib64
+ /usr/lib
+ /usr/local/lib64
+ /usr/local/lib
+ /sw/lib
+ /opt/local/lib
+ DOC "The Mini XML library")
+ endif()
+ find_library( MINIXML_STATIC_LIBRARY
+ NAMES libmxml.a
+ PATHS
+ /usr/lib64
+ /usr/lib
+ /usr/local/lib64
+ /usr/local/lib
+ /sw/lib
+ /opt/local/lib
+ DOC "The Mini XML static library")
+endif (WIN32)
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(
+ MiniXML
+ REQUIRED_VARS
+ MINIXML_LIBRARY
+ MINIXML_INCLUDE_PATH
+)
+
+if(MiniXML_FOUND)
+ mark_as_advanced(
+ MINIXML_FOUND
+ MINIXML_LIBRARY
+ MINIXML_INCLUDE_PATH
+ )
+endif()
+
+if (MiniXML_FOUND AND NOT TARGET MiniXML::MiniXML)
+ add_library(MiniXML::mxml UNKNOWN IMPORTED)
+ set_property(TARGET MiniXML::mxml PROPERTY IMPORTED_LOCATION ${MINIXML_LIBRARY})
+ target_include_directories(MiniXML::mxml INTERFACE ${MINIXML_INCLUDE_PATH})
+
+ set(MXML_VERSION_MAJOR)
+ set(MXML_VERSION_MINOR)
+ file(READ "${MINIXML_INCLUDE_PATH}/mxml.h" _mxml_H_CONTENTS)
+
+ string(REGEX MATCH "#[ \t]*define[ \t]+MXML_MAJOR_VERSION[ \t]+[0-9]+" MXML_VERSION_MAJOR "${_mxml_H_CONTENTS}")
+ string(REGEX MATCH "[0-9]+$" MXML_VERSION_MAJOR ${MXML_VERSION_MAJOR})
+
+ string(REGEX MATCH "#[ \t]*define[ \t]+MXML_MINOR_VERSION[ \t]+[0-9]+" MXML_VERSION_MINOR "${_mxml_H_CONTENTS}")
+ string(REGEX MATCH "[0-9]+$" MXML_VERSION_MINOR ${MXML_VERSION_MINOR})
+ set(MiniXML_VERSION "${MXML_VERSION_MAJOR}.${MXML_VERSION_MINOR}"
+ CACHE STRING
+ "Version number of MiniXML")
+endif()
diff --git a/CMake/FindPandoc.cmake b/CMake/FindPandoc.cmake
index 1a076ff..c5ea5ed 100644
--- a/CMake/FindPandoc.cmake
+++ b/CMake/FindPandoc.cmake
@@ -13,6 +13,6 @@ find_program(PANDOC_EXECUTABLE
NAMES pandoc
DOC "Pandoc - a universal document converter")
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Pandoc REQUIRED_VARS PANDOC_EXECUTABLE)
+find_package_handle_standard_args(Pandoc REQUIRED_VARS PANDOC_EXECUTABLE)
mark_as_advanced(PANDOC_EXECUTABLE) \ No newline at end of file
diff --git a/CMake/FindZlib.cmake b/CMake/FindZlib.cmake
index 3305ee3..e7785b6 100644
--- a/CMake/FindZlib.cmake
+++ b/CMake/FindZlib.cmake
@@ -1,29 +1,23 @@
# Finds zlib.
#
# This module defines:
-# zlib_INCLUDE_DIR_ZIP
-# zlib_INCLUDE_DIR_ZIPCONF
-# zlib_LIBRARY
+# ZLIB_INCLUDE_DIR
+# ZLIB_LIBRARY
#
# There is no default installation for zlib on Windows so a
# XTrackCAD specific directory tree is assumed
#
if(WIN32)
- find_path( ZLIB_INCLUDE_DIR zlib.h
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/zlib
- DOC "The directory where zip.h resides")
- find_library( ZLIB_LIBRARY
- NAMES zlib Zlib
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/zlib
- DOC "The zlib library")
- find_file( ZLIB_SHAREDLIB
- NAMES zlib.dll Zlib.dll
- PATHS
- $ENV{XTCEXTERNALROOT}/x86/zlib)
-else(WIN32)
+ set(ZLIBBASEDIR "$ENV{XTCEXTERNALROOT}/${XTRKCAD_ARCH_SUBDIR}/zlib" )
+ find_path( ZLIB_INCLUDE_DIR zlib.h
+ PATHS ${ZLIBBASEDIR} "${ZLIBBASEDIR}/include"
+ DOC "The directory where zlib.h resides")
+ find_library( ZLIB_LIBRARY
+ NAMES zlibstatic
+ PATHS ${ZLIBBASEDIR} "${ZLIBBASEDIR}/lib"
+ DOC "The zlib library")
+else()
find_package(PkgConfig)
pkg_check_modules(PC_ZLIB QUIET zlib)
@@ -33,11 +27,34 @@ else(WIN32)
find_library(ZLIB_LIBRARY
NAMES z)
-endif(WIN32)
+endif()
include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(
- ZLIB DEFAULT_MSG
- ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-mark_as_advanced(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
+find_package_handle_standard_args(
+ Zlib
+ REQUIRED_VARS
+ ZLIB_LIBRARY
+ ZLIB_INCLUDE_DIR
+)
+
+if(Zlib_FOUND)
+ mark_as_advanced(
+ ZLIB_LIBRARY
+ ZLIB_INCLUDE_DIR
+ )
+endif()
+
+if(Zlib_FOUND AND NOT TARGET Zlib::Zlib)
+ add_library(Zlib::Zlib UNKNOWN IMPORTED)
+ set_property(TARGET Zlib::Zlib PROPERTY IMPORTED_LOCATION ${ZLIB_LIBRARY})
+ target_include_directories(Zlib::Zlib INTERFACE ${ZLIB_INCLUDE_DIR})
+
+ if (ZLIB_INCLUDE_DIR)
+ file(READ "${ZLIB_INCLUDE_DIR}/zlib.h" _ZLIB_VERSION_CONTENTS)
+ if (_ZLIB_VERSION_CONTENTS)
+ string(REGEX REPLACE ".*#define ZLIB_VERSION \"([0-9a-z.]+)\".*" "\\1" ZLIB_VERSION "${_ZLIB_VERSION_CONTENTS}")
+ endif ()
+ endif ()
+ set(ZLIB_VERSION ${ZLIB_VERSION} CACHE STRING "Version number of zlib")
+endif()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0128295..845c847 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,59 +1,75 @@
-PROJECT(XTrkCAD)
-enable_testing()
-cmake_minimum_required(VERSION 2.8)
-set(CMAKE_MACOSX_RPATH 0)
+# Main CMake file for XTrackCAD
-# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
+cmake_minimum_required(VERSION 3.20.0)
+project(XTrkCAD)
+
+cmake_policy(SET CMP0076 NEW)
+cmake_policy(SET CMP0079 NEW)
+# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
# additional CMake modules can be found here
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
-# Setup high-level build options ...
-if(UNIX)
- include(FindPkgConfig)
- set(XTRKCAD_USE_GTK_DEFAULT ON)
- if(APPLE)
- SET(XTRKCAD_USE_GETTEXT_DEFAULT OFF)
- SET(XTRKCAD_USE_APPLEHELP_DEFAULT ON)
- PKG_CHECK_MODULES(GTK_WEBKIT "webkit-1.0" QUIET)
- if(GTK_WEBKIT_FOUND)
- set(XTRKCAD_USE_BROWSER_DEFAULT OFF)
- else()
- set(XTRKCAD_USE_BROWSER_DEFAULT ON)
- endif()
- else()
- set(XTRKCAD_USE_BROWSER_DEFAULT ON)
- endif(APPLE)
-endif(UNIX)
+# Include CMake defaults
+include(CMakeDefaults)
+
+include(CheckIncludeFiles)
+
+include(ProgramVersion.cmake)
+include(PlatformSettings.cmake)
+
+enable_testing()
+
+# Find all dependencies
+#
+# Additional libraries
find_package(Libzip)
find_package(Zlib)
-IF(WIN32)
- SET(XTRKCAD_USE_GTK_DEFAULT OFF)
- SET(XTRKCAD_USE_GETTEXT_DEFAULT ON)
+# Optionally enable SVG export
+find_package(MiniXML)
+if(MiniXML_FOUND)
+ set(XTRKCAD_CREATE_SVG 1)
+ message( STATUS "MiniXML found: SVG export is enabled")
+else()
+ message( STATUS "MiniXML not found: no SVG export")
+endif()
+
+# Find unit testing framework
+find_package(CMocka)
+if(CMOCKA_FOUND)
+ include_directories(${CMOCKA_INCLUDE_DIR})
+ set(LIBS ${LIBS} ${CMOCKA_LIBRARIES})
+ option(XTRKCAD_TESTING "Build unittests" ON)
+endif()
+
+# Tools
+# Find document conversion tool
+find_package(Pandoc)
+
+# For handling and creation of bitmaps the FreeImage library is required
+find_package(FreeImage REQUIRED)
- SET(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "Flags used by the compiler during debug builds" FORCE)
- SET(CMAKE_C_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "Flags used by the compiler during release minumum size builds" FORCE)
- SET(CMAKE_C_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "Flags used by the compiler during release builds" FORCE)
- SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "Flags used by the compiler during release with debug info builds" FORCE)
+# check for GTK+ 2.0
+if(UNIX)
+ pkg_check_modules(GTK REQUIRED "gtk+-2.0")
+ set(XTRKCAD_USE_GTK_DEFAULT ON)
+endif(UNIX)
- ADD_DEFINITIONS(-DWINDOWS)
- ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
-ENDIF(WIN32)
+if(WIN32 AND NOT XTRKCAD_USE_GTK)
+ # use the Windows HTMLHelp tool
+ find_package(HTMLHelp REQUIRED)
+endif(WIN32 AND NOT XTRKCAD_USE_GTK)
-if(COMMAND cmake_policy)
- cmake_policy(SET CMP0003 NEW)
- if( POLICY CMP0026 )
- cmake_policy(SET CMP0026 NEW)
- endif( POLICY CMP0026 )
-endif(COMMAND cmake_policy)
+#
+# Configure options
+#
-SET(XTRKCAD_USE_DOXYGEN_DEFAULT OFF)
+option(XTRKCAD_USE_GTK "Use GTK for the graphical user interface back-end" ${XTRKCAD_USE_GTK_DEFAULT})
+option(XTRKCAD_USE_GETTEXT "Use gettext for internationalization" ${XTRKCAD_USE_GETTEXT_DEFAULT})
+option(XTRKCAD_USE_DOXYGEN "Generate internals documentation using doxygen" OFF)
-OPTION(XTRKCAD_USE_GTK "Use GTK for the graphical user interface back-end" ${XTRKCAD_USE_GTK_DEFAULT})
-OPTION(XTRKCAD_USE_GETTEXT "Use gettext for internationalization" ${XTRKCAD_USE_GETTEXT_DEFAULT})
-OPTION(XTRKCAD_USE_DOXYGEN "Generate internals documentation using doxygen" ${XTRKCAD_USE_DOXYGEN_DEFAULT})
if(UNIX AND NOT APPLE)
option(XTRKCAD_USE_BROWSER "Show help in default browser" ${XTRKCAD_USE_BROWSER_DEFAULT})
endif()
@@ -61,102 +77,89 @@ endif()
if(APPLE)
option(XTRKCAD_USE_APPLEHELP "Show help in Apple Help" ${XTRKCAD_USE_APPLEHELP_DEFAULT})
option(XTRKCAD_USE_BROWSER "Show help in default browser" ${XTRKCAD_USE_BROWSER_DEFAULT})
+ option(XTRKCAD_USE_PACKAGEMAKER "Generate an OSX PackageMaker package for distribution." OFF)
endif()
-IF(UNIX)
- PKG_CHECK_MODULES(GTK REQUIRED "gtk+-2.0")
-ENDIF()
+# Hide the advanced stuff ...
+mark_as_advanced(CMAKE_BACKWARDS_COMPATIBILITY)
+mark_as_advanced(CMAKE_EXECUTABLE_FORMAT)
+mark_as_advanced(CMAKE_OSX_ARCHITECTURES)
+mark_as_advanced(CMAKE_OSX_SYSROOT)
+mark_as_advanced(CMAKE_USE_CHRPATH)
+mark_as_advanced(EXECUTABLE_OUTPUT_PATH)
+mark_as_advanced(LIBRARY_OUTPUT_PATH)
-IF(APPLE)
- OPTION(XTRKCAD_USE_PACKAGEMAKER "Generate an OSX PackageMaker package for distribution." OFF)
-ENDIF(APPLE)
+# Test for headers and libraries for portability ...
+# check_include_files (malloc.h HAVE_MALLOC_H)
+# if(HAVE_MALLOC_H)
+# add_definitions(-DHAVE_MALLOC_H)
+# endif()
-# Hide the advanced stuff ...
-MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)
-MARK_AS_ADVANCED(CMAKE_EXECUTABLE_FORMAT)
-MARK_AS_ADVANCED(CMAKE_OSX_ARCHITECTURES)
-MARK_AS_ADVANCED(CMAKE_OSX_SYSROOT)
-MARK_AS_ADVANCED(CMAKE_USE_CHRPATH)
-MARK_AS_ADVANCED(EXECUTABLE_OUTPUT_PATH)
-MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH)
-
-# Test for dependencies ...
-IF(WIN32 AND NOT XTRKCAD_USE_GTK)
- FIND_PACKAGE(HTMLHelp REQUIRED)
-ENDIF(WIN32 AND NOT XTRKCAD_USE_GTK)
-
-IF(XTRKCAD_USE_PACKAGEMAKER)
- IF(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
- MESSAGE(SEND_ERROR "XTRKCAD_USE_PACKAGEMAKER requires CMAKE_INSTALL_PREFIX set to /usr.")
- ENDIF(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
-ENDIF(XTRKCAD_USE_PACKAGEMAKER)
+#packaging related stuff
-# Find unit testing framework
-find_package(CMocka)
-if(CMOCKA_FOUND)
- include_directories(${CMOCKA_INCLUDE_DIR})
- set(LIBS ${LIBS} ${CMOCKA_LIBRARIES})
- option( XTRKCAD_TESTING "Build unittests" ON)
+if(XTRKCAD_USE_PACKAGEMAKER)
+ if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
+ message(SEND_ERROR "XTRKCAD_USE_PACKAGEMAKER requires CMAKE_INSTALL_PREFIX set to /usr.")
+ endif()
endif()
-# Find document conversion tool
-find_package(Pandoc)
-
-# Test for headers and libraries for portability ...
+#
+# configure installation directories
+if(WIN32)
+ set( CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX} ${XTRKCAD_VERSION}" )
+endif()
-INCLUDE (CheckIncludeFiles)
-CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)
+set(XTRKCAD_BIN_INSTALL_DIR "bin")
+set(XTRKCAD_LOCALE_INSTALL_DIR "share/locale")
+set(XTRKCAD_PACKAGE "xtrkcad")
+set(XTRKCAD_BETA "")
+if(UNIX AND NOT APPLE)
+ if(XTRKCAD_VERSION_MODIFIER MATCHES "^Beta")
+ set(XTRKCAD_BETA "-beta")
+ endif()
+endif()
+set(XTRKCAD_SHARE_INSTALL_DIR "share/xtrkcad${XTRKCAD_BETA}")
-# Setup some global options for installation ...
-SET(XTRKCAD_MAJOR_VERSION "5")
-SET(XTRKCAD_MINOR_VERSION "2")
-SET(XTRKCAD_RELEASE_VERSION "0")
-SET(XTRKCAD_VERSION_MODIFIER "Beta2.1")
-SET(XTRKCAD_VERSION "${XTRKCAD_MAJOR_VERSION}.${XTRKCAD_MINOR_VERSION}.${XTRKCAD_RELEASE_VERSION}${XTRKCAD_VERSION_MODIFIER}")
+# Enable use of a configuration file ...
+add_definitions(-DXTRKCAD_CMAKE_BUILD)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad-config.h.in ${CMAKE_CURRENT_BINARY_DIR}/xtrkcad-config.h)
-IF(WIN32)
- SET( CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX} ${XTRKCAD_VERSION}" )
-ENDIF(WIN32)
-SET(XTRKCAD_BIN_INSTALL_DIR "bin")
-SET(XTRKCAD_LOCALE_INSTALL_DIR "share/locale")
-SET(XTRKCAD_PACKAGE "xtrkcad")
-SET(XTRKCAD_SHARE_INSTALL_DIR "share/xtrkcad")
+# find the config.h include file
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
-# Enable use of a configuration file ...
-ADD_DEFINITIONS(-DXTRKCAD_CMAKE_BUILD)
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad-config.h.in ${CMAKE_CURRENT_BINARY_DIR}/xtrkcad-config.h)
+#
+# I18N related dependencies
-IF(XTRKCAD_USE_GETTEXT)
- SET(GENHELP_OPTS "-bhi")
+if(XTRKCAD_USE_GETTEXT)
#
# Find the GnuWin32 installation directory, the gettext include should be located in subdir include
#
- IF(WIN32)
+ if(WIN32)
if(MSVC)
# use supplied gettext library for Visual Studio
message( STATUS "Use simple_gettext module included with XTrackCAD" )
- ADD_DEFINITIONS(-DUSE_SIMPLE_GETTEXT )
+ add_definitions(-DUSE_SIMPLE_GETTEXT )
else()
# for mingw & co. find libintl.h and use it
find_path ( INTL_PATH libintl.h )
if(INTL_PATH)
message( STATUS "Use installed gettext module" )
- INCLUDE_DIRECTORIES(${INTL_PATH})
- endif(INTL_PATH)
+ include_directories(${INTL_PATH})
+ endif()
endif()
- ENDIF(WIN32)
- iF(APPLE)
+ endif()
+ if(APPLE)
find_path ( INTL_PATH libintl.h )
if(INTL_PATH)
message( STATUS "Use installed gettext module" )
- INCLUDE_DIRECTORIES(${INTL_PATH})
- endif(INTL_PATH)
- ENDIF(APPLE)
-ELSE(XTRKCAD_USE_GETTEXT)
- SET(GENHELP_OPTS "-bh")
-ENDIF(XTRKCAD_USE_GETTEXT)
+ include_directories(${INTL_PATH})
+ endif()
+ endif()
+endif()
# Setup the rest of the build ...
-ADD_SUBDIRECTORY(app)
-ADD_SUBDIRECTORY(distribution)
-ADD_SUBDIRECTORY(docs)
+add_subdirectory(app)
+add_subdirectory(distribution)
+add_subdirectory(docs)
diff --git a/PlatformSettings.cmake b/PlatformSettings.cmake
new file mode 100644
index 0000000..272af37
--- /dev/null
+++ b/PlatformSettings.cmake
@@ -0,0 +1,61 @@
+# Configure the platform specific settings
+#
+# Setup high-level build options ...
+if(UNIX)
+ include(FindPkgConfig)
+ set(XTRKCAD_USE_GTK_DEFAULT ON)
+
+ # Configure help display and i18n
+ if(APPLE)
+ set(CMAKE_MACOSX_RPATH 0)
+ set(XTRKCAD_USE_GETTEXT_DEFAULT OFF)
+ set(XTRKCAD_USE_APPLEHELP_DEFAULT ON)
+ set(CMAKE_FIND_APPBUNDLE LAST)
+ pkg_check_modules(GTK_WEBKIT "webkit-1.0" QUIET)
+ if(GTK_WEBKIT_FOUND)
+ set(XTRKCAD_USE_BROWSER_DEFAULT OFF)
+ else()
+ set(XTRKCAD_USE_BROWSER_DEFAULT ON)
+ endif()
+ else()
+ set(XTRKCAD_USE_GETTEXT_DEFAULT ON)
+ set(XTRKCAD_USE_BROWSER_DEFAULT ON)
+ add_compile_options("-pthread")
+ add_link_options("-pthread")
+ endif()
+
+ # glib 2.0 deprecated GTypeDebugFlags and GTimeVal, gtk2 has not been updated
+ add_compile_options("-Wno-deprecated-declarations")
+endif()
+
+# Set Win64 flag when a 64 bit build is selected
+if(WIN32)
+ set(XTRKCAD_USE_GETTEXT_DEFAULT ON)
+ set(XTRKCAD_USE_GTK_DEFAULT OFF)
+
+ # determine processor target architecture
+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(Win64Bit ON CACHE BOOL "Target Architecture: x64")
+ else ()
+ set(Win64Bit OFF CACHE BOOL "Target Architecture: x86")
+ endif ()
+
+ mark_as_advanced(Win64Bit)
+
+ if (Win64Bit)
+ set(XTRKCAD_ARCH_SUBDIR "x64")
+ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ set(CMAKE_INSTALL_PREFIX "C:/Program Files/XTrkCAD" CACHE PATH "WIN64 Install" FORCE)
+ endif()
+ else ()
+ set( XTRKCAD_ARCH_SUBDIR "x86")
+ endif ()
+
+ set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1" CACHE STRING "Flags used by the compiler during debug builds" FORCE)
+ set(CMAKE_C_FLAGS_MINSIZEREL "/MD /O1 /Ob1 /D NDEBUG" CACHE STRING "Flags used by the compiler during release minumum size builds" FORCE)
+ set(CMAKE_C_FLAGS_RELEASE "/MD /O2 /Ob2 /D NDEBUG" CACHE STRING "Flags used by the compiler during release builds" FORCE)
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MDd /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "Flags used by the compiler during release with debug info builds" FORCE)
+
+ add_definitions(-DWINDOWS)
+ add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+endif()
diff --git a/ProgramVersion.cmake b/ProgramVersion.cmake
new file mode 100644
index 0000000..01e4d34
--- /dev/null
+++ b/ProgramVersion.cmake
@@ -0,0 +1,7 @@
+# Define program version
+
+set(XTRKCAD_MAJOR_VERSION "5")
+set(XTRKCAD_MINOR_VERSION "3")
+set(XTRKCAD_RELEASE_VERSION "0")
+set(XTRKCAD_VERSION_MODIFIER "GA")
+set(XTRKCAD_VERSION "${XTRKCAD_MAJOR_VERSION}.${XTRKCAD_MINOR_VERSION}.${XTRKCAD_RELEASE_VERSION}${XTRKCAD_VERSION_MODIFIER}")
diff --git a/README b/README
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/README
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 2dea1bc..48a0b72 100644
--- a/app/bin/CMakeLists.txt
+++ b/app/bin/CMakeLists.txt
@@ -1,17 +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)
-ADD_EXECUTABLE(cnvdsgn cnvdsgn.c utility.c)
-IF(NOT WIN32)
- TARGET_LINK_LIBRARIES(cnvdsgn m)
-ENDIF(NOT WIN32)
+target_link_libraries(cnvdsgn xtrkcad-wlib)
+
+if(NOT WIN32)
+ target_link_libraries(cnvdsgn m)
+endif()
+
+add_custom_target(lines
+ DEPENDS cnvdsgn
+)
-MACRO(GENERATE_LIN lin_name)
- ADD_CUSTOM_COMMAND(
+#
+# 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()
+
+
+#
+# macro creates lin files and adds the result as dependency
+#
+
+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)
@@ -29,241 +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
- )
+# put these targets into the folder LineSymbols
+set_target_properties(lines cnvdsgn PROPERTIES FOLDER LineSymbols)
-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
- )
-
-SET(SOURCES
- ${LIN_SOURCES}
- appdefaults.c
- archive.c
- bllnhlp.c
- cbezier.c
- cblock.c
- ccornu.c
- ccurve.c
- ccontrol.c
- cdraw.c
- celev.c
- cgroup.c
- chndldto.c
- chotbar.c
- cjoin.c
- cmisc.c
- cmodify.c
- cnote.c
- compound.c
- cparalle.c
- cprint.c
- cprofile.c
- cpull.c
- cruler.c
- cselect.c
- csensor.c
- csnap.c
- csplit.c
- csignal.c
- cstraigh.c
- cstruct.c
- cswitchmotor.c
- ctext.c
- ctodesgn.c
- ctrain.c
- cturnout.c
- cturntbl.c
- cundo.c
- custom.c
- 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
- drawgeom.c
- dxfformat.c
- dxfoutput.c
- elev.c
- file2uri.c
- file2uri.h
- fileio.c
- filenoteui.c
- i18n.c
- layout.c
- linknoteui.c
- lprintf.c
- macro.c
- manifest.c
- 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
- trknote.c
- trkseg.c
- tstraigh.c
- utility.c
- validator.c
- cJSON.c
- archive.h
- directory.h
- manifest.h
- validator.h
- )
+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
+)
# 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)
+endif()
-set (SOURCES
- ${SOURCES}
- include/dirent.h
- include/paramfile.h
- include/paramfilelist.h
+# This ensures that messages.h has been generated before we build xtrkcad-lib
+add_dependencies(xtrkcad-lib
+ msgfiles
+ lines
+ genbitmaps
)
-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})
-LINK_DIRECTORIES(${GTK_LIBRARY_DIRS})
-LINK_DIRECTORIES(${GTK_WEBKIT_LIBRARY_DIRS})
-LINK_DIRECTORIES(${LIBZIP_LIBZIP_LIBRARY})
+target_include_directories(xtrkcad-lib
+ PUBLIC
+ ${messagefile_BINARY_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+)
-ADD_LIBRARY(xtrkcad-lib ${SOURCES})
+target_link_libraries(xtrkcad-lib
+ PRIVATE
+ cJSON
+ dynstring
+ xtrkcad-cornu
+ xtrkcad-wlib
+)
-# This ensures that messages.h has been generated before we build xtrkcad-lib
-ADD_DEPENDENCIES(xtrkcad-lib Help)
+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()
+
+#
+# Start building the main program itself
+#
+add_executable(${XTRKCAD_BIN} WIN32 "" )
-ADD_EXECUTABLE(xtrkcad WIN32
- misc.c
- xtrkcad.rc
+# if SVG export is built and source files and dependency on MiniXML
+
+if(XTRKCAD_CREATE_SVG)
+ target_sources(xtrkcad-lib
+ PRIVATE
+ svgformat.c
+ svgoutput.c
)
-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-lib)
-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-wlib)
-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-cornu)
-TARGET_LINK_LIBRARIES(xtrkcad dynstring)
-target_link_libraries(xtrkcad ${LIBZIP_LIBRARY} ${LIBZIP_LIBRARIES})
-
-ADD_EXECUTABLE(mkturnout
- ${LIN_SOURCES}
- ctodesgn.c
+
+ 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_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
+)
+
+add_dependencies(mkturnout
+ msgfiles
+ lines
+)
-IF(NOT WIN32)
- TARGET_LINK_LIBRARIES(mkturnout m)
- TARGET_LINK_LIBRARIES(xtrkcad m)
+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}
+ 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}
+ DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
)
-
- add_custom_command(
- TARGET xtrkcad POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy
- ${ZLIB_SHAREDLIB}
- ${CMAKE_CURRENT_BINARY_DIR}
+ install(
+ FILES ${ZLIB_SHAREDLIB}
+ DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
)
- # add dll to install package
- install(FILES
- ${LIBZIP_SHAREDLIB}
- DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
+ # Copy program PDB file
+ install(
+ FILES $<TARGET_PDB_FILE:xtrkcad>
+ DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
+ OPTIONAL
)
- install(FILES
- ${ZLIB_SHAREDLIB}
- DESTINATION ${XTRKCAD_BIN_INSTALL_DIR}
- )
-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 4dd80fc..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
*/
/*
@@ -55,11 +55,14 @@
#define ACCL_CONNECT (WCTL+WSHIFT+'j')
#define ACCL_HELIX (WCTL+WSHIFT+'h')
#define ACCL_SPLIT (WCTL+WSHIFT+'s')
+#define ACCL_SPLITDRAW (0)
+#define ACCL_TRIMDRAW (0)
#define ACCL_ELEVATION (WCTL+WSHIFT+'e')
#define ACCL_PROFILE (WCTL+WSHIFT+'f')
#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')
@@ -89,6 +92,7 @@
#define ACCL_ABOVE (WCTL+WSHIFT+'b')
#define ACCL_BELOW (WCTL+WSHIFT+'w')
#define ACCL_RULER (0)
+#define ACCL_ANGLE (0)
/* fileM */
#define ACCL_NEW (WCTL+'n')
@@ -121,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 55a2201..0e1898d 100644
--- a/app/bin/appdefaults.c
+++ b/app/bin/appdefaults.c
@@ -17,49 +17,39 @@
*
* 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>
-#include <stdbool.h>
-#include <stdio.h>
-#include <string.h>
#include <wchar.h>
-#ifdef WINDOWS
-#include <Windows.h>
-#include <malloc.h>
-#endif
-
#include "common.h"
#include "custom.h"
#include "fileio.h"
#include "paths.h"
-#include "wlib.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,
@@ -73,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
@@ -83,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 (sizeof(xtcDefaults)/sizeof(xtcDefaults[0]))
+#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
@@ -138,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;
}
/**
@@ -178,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.
@@ -201,31 +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
}
@@ -235,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.
@@ -244,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
}
/**
@@ -262,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");
}
/**
@@ -271,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);
}
/**
@@ -280,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");
}
/**
@@ -300,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, (void *)0);
- return str;
+ char *str;
+ MakeFullpath(&str, libDir, PARAM_SUBDIR, (char*)additionalData, I2VP(0));
+ return str;
}
@@ -311,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);
@@ -343,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));
}
/**
@@ -374,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));
}
/**
@@ -401,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 4e82bd3..7b9d0e5 100644
--- a/app/bin/archive.c
+++ b/app/bin/archive.c
@@ -17,45 +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 <errno.h>
#include <fcntl.h>
-#include <string.h>
-#include <stdint.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
#include <zip.h>
-#ifdef WINDOWS
- #include "include/dirent.h"
- #include <direct.h>
- #include <io.h>
- #include <process.h>
- #define unlink(a) _unlink((a))
- #define rmdir(a) _rmdir((a))
- #define open(name, flag, mode) _open((name), (flag), (mode))
- #define write(file, buffer, count) _write((file),(buffer), (count))
- #define close(file) _close((file))
- #define getpid() _getpid()
-#else
- #include <dirent.h>
- #include <unistd.h>
-#endif
-
-#include <wlib.h>
#include "archive.h"
#include "directory.h"
#include "dynstring.h"
-#include "i18n.h"
-#include "messages.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;
@@ -63,13 +39,13 @@ int log_zip = 0;
//NativeToUtf8(const char *nativeString)
//{
//
-//#ifdef WINDOWS
+//#ifdef XINDOWS
//
// int cnt = 2 * (strlen(nativeString) + 1);
// char *tempBuffer = MyMalloc( cnt );
// char *destBuffer = MyMalloc( cnt );
//
-// //// find the
+// //// find the
// //cnt = MultiByteToWideChar(CP_ACP,
// // 0,
// // nativeString,
@@ -115,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);
}
/*****************************************************************************
@@ -155,107 +131,107 @@ 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 WINDOWS
+#ifdef UTFCONVERT
archPathUtf8 = Convert2UTF8(archPathUtf8);
fullPathUtf8 = Convert2UTF8(fullPathUtf8);
ConvertPathForward(archPathUtf8);
-#endif // WINDOWS
- 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);
+#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);
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;
}
/***********************************************************************
@@ -268,64 +244,72 @@ 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 WINDOWS
+#ifdef UTFCONVERT
archiveUtf8 = Convert2UTF8(archiveUtf8);
-#endif // WINDOWS
+#endif // UTFCONVERT
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;
}
/**************************************************************************
@@ -338,117 +322,120 @@ 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 WINDOWS
+#ifdef UTFCONVERT
destBuffer = Convert2UTF8(destBuffer);
-#endif // WINDOWS
+#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);
-#ifdef WINDOWS
+ 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 // WINDOWS
+#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 cfbb642..8c938b2 100644
--- a/app/bin/archive.h
+++ b/app/bin/archive.h
@@ -1,15 +1,17 @@
#ifndef HAVE_ARCHIVE_H
#define HAVE_ARCHIVE_H
-#include <zip.h>
#include "common.h"
enum ArchiveOps { ARCHIVE_READ, ARCHIVE_WRITE }; // has to be contiguous, see CleanupFiles()!
extern int log_zip;
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 c979aa3..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[ sizeof tokens / sizeof *tp ]; 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/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/SVG/block.svg b/app/bin/bitmaps/SVG/block.svg
deleted file mode 100755
index 221d631..0000000
--- a/app/bin/bitmaps/SVG/block.svg
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- 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"
- width="16px"
- height="16px"
- id="svg2160"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="C:\Dokumente und Einstellungen\MF\Eigene Dateien\xtc\source\xtrkcad\app\bin\bitmaps\SVG"
- sodipodi:docname="block.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2162">
- <linearGradient
- id="linearGradient3240">
- <stop
- style="stop-color:#c6ffc7;stop-opacity:1;"
- offset="0"
- id="stop3242" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop3244" />
- </linearGradient>
- <filter
- inkscape:collect="always"
- x="-0.40165289"
- width="1.8033058"
- y="-0.40165289"
- height="1.8033058"
- id="filter4024">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="0.34075874"
- id="feGaussianBlur4026" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.197802"
- inkscape:cx="8"
- inkscape:cy="8"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="797"
- inkscape:window-height="573"
- inkscape:window-x="43"
- inkscape:window-y="33" />
- <metadata
- id="metadata2165">
- <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>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.39860046px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 1.6993002,4.8001142 C 1.6993002,4.0323881 1.6993002,6.1874076 1.6993002,7.1314013 C 1.6993002,8.3269519 1.6993002,9.5225027 1.6993002,10.718053"
- id="path3197"
- inkscape:transform-center-x="-0.69930023" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.30206299px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 16.340038,7.9045778 C 16.170995,7.9045778 15.782267,7.9045778 15.510057,7.9045778 C 15.332995,7.9045778 15.155932,7.9045778 14.97887,7.9045778 C 14.646878,7.9045778 14.314885,7.9045778 13.982894,7.9045778 C 13.756061,7.9045778 14.109982,7.9045778 14.182089,7.9045778"
- id="path3204" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#00c3ff;stroke-width:1.39256012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 4.8935538,8.0622511 C 5.3383788,8.0622511 6.3612827,8.0622511 7.0775815,8.0622511 C 7.5435072,8.0622511 8.0094329,8.0622511 8.4753585,8.0622511 C 9.3489697,8.0622511 10.22258,8.0622511 11.096191,8.0622511 C 11.693085,8.0622511 10.761766,8.0622511 10.572024,8.0622511"
- id="path3214" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#00c3ff;stroke-width:1.38903475px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 11.694517,4.8941729 C 11.694517,4.1226995 11.694517,6.2882379 11.694517,7.2368393 C 11.694517,8.4382256 11.694517,9.639612 11.694517,10.840998"
- id="path3216" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#00c3ff;stroke-width:1.3360846px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 4.2655817,10.718063 C 4.2569707,11.44917 4.2811417,9.396941 4.2917297,8.4979743 C 4.305139,7.3594493 4.3185482,6.2209242 4.3319577,5.0823988"
- id="path3220"
- inkscape:transform-center-x="2.6989442"
- inkscape:transform-center-y="1.5477264" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.34471488px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 14.327643,4.8345845 C 14.327643,4.0668584 14.327643,6.2218779 14.327643,7.1658716 C 14.327643,8.3614222 14.327643,9.5569733 14.327643,10.752524"
- id="path3222" />
- <path
- sodipodi:type="arc"
- style="fill:#00cb05;fill-opacity:1;fill-rule:nonzero;stroke:#00cb05;stroke-linejoin:round;stroke-opacity:1"
- id="path3224"
- sodipodi:cx="8.1990099"
- sodipodi:cy="3.1608911"
- sodipodi:rx="1.5316832"
- sodipodi:ry="1.5316832"
- d="M 9.7306931 3.1608911 A 1.5316832 1.5316832 0 1 1 6.6673267,3.1608911 A 1.5316832 1.5316832 0 1 1 9.7306931 3.1608911 z"
- transform="matrix(1.3326023,0,0,1.3326023,-3.0745345,-1.504785)" />
- <path
- sodipodi:type="arc"
- style="fill:#8bf68e;fill-opacity:1;fill-rule:nonzero;stroke:#d3fcd3;stroke-linejoin:round;stroke-opacity:1;filter:url(#filter4024)"
- id="path3250"
- sodipodi:cx="7.5007424"
- sodipodi:cy="2.4626236"
- sodipodi:rx="0.51806933"
- sodipodi:ry="0.51806933"
- d="M 8.0188118 2.4626236 A 0.51806933 0.51806933 0 1 1 6.9826731,2.4626236 A 0.51806933 0.51806933 0 1 1 8.0188118 2.4626236 z"
- transform="matrix(1.2433747,0,0,1.2433747,-2.0603915,-0.8322608)" />
- <path
- sodipodi:type="arc"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-linejoin:round;stroke-opacity:1"
- id="path4034"
- sodipodi:cx="8.1990099"
- sodipodi:cy="3.1608911"
- sodipodi:rx="1.5316832"
- sodipodi:ry="1.5316832"
- d="M 9.7306931 3.1608911 A 1.5316832 1.5316832 0 1 1 6.6673267,3.1608911 A 1.5316832 1.5316832 0 1 1 9.7306931 3.1608911 z"
- transform="matrix(1.3326023,0,0,1.3326023,-3.0379006,8.949671)" />
- <path
- sodipodi:type="arc"
- style="fill:#ed0202;fill-opacity:0.9766355;fill-rule:nonzero;stroke:#fff6f6;stroke-linejoin:round;stroke-opacity:1;filter:url(#filter4024)"
- id="path4036"
- sodipodi:cx="7.5007424"
- sodipodi:cy="2.4626236"
- sodipodi:rx="0.51806933"
- sodipodi:ry="0.51806933"
- d="M 8.0188118 2.4626236 A 0.51806933 0.51806933 0 1 1 6.9826731,2.4626236 A 0.51806933 0.51806933 0 1 1 8.0188118 2.4626236 z"
- transform="matrix(1.3434079,0,0,1.3868861,-2.6614572,9.403929)" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.30206299px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 2.3873088,7.8910891 C 2.2182658,7.8910891 1.8295378,7.8910891 1.5573278,7.8910891 C 1.3802658,7.8910891 1.2032028,7.8910891 1.0261408,7.8910891 C 0.69414879,7.8910891 0.36215579,7.8910891 0.030164793,7.8910891 C -0.19666821,7.8910891 0.15725279,7.8910891 0.22935979,7.8910891"
- id="path4052" />
- </g>
-</svg>
diff --git a/app/bin/bitmaps/above.xpm b/app/bin/bitmaps/above.xpm
deleted file mode 100644
index 07f5daf..0000000
--- a/app/bin/bitmaps/above.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * above_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" ..........",
-" ..... . . . .",
-" ..XXX... . . ..",
-" .XXXXXX.. . . .",
-".XXXXXXX. . . ..",
-".XXXXXXXX. . . .",
-".XXXXXXXX.. . ..",
-".XXXXXXXX. . . .",
-".XXXXXXX. . . ..",
-" .XXXXXX.. . . .",
-" ..XXX... . . ..",
-" ..... . . . .",
-" ..........",
-" ",
-" "};
diff --git a/app/bin/bitmaps/background.xpm b/app/bin/bitmaps/background.xpm
deleted file mode 100644
index 4859734..0000000
--- a/app/bin/bitmaps/background.xpm
+++ /dev/null
@@ -1,155 +0,0 @@
-/* XPM */
-static char *background[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 133 2 ",
-" c #0B2B2B",
-". c #183A3A",
-"X c #789757",
-"o c #799358",
-"O c #7E9068",
-"+ c #86A068",
-"@ c #9BA77A",
-"# c #99B073",
-"$ c #9DB777",
-"% c #98B67E",
-"& c #A6BD7F",
-"* c #A4BE7E",
-"= c #77AAA8",
-"- c #5FA7D7",
-"; c #58A1DB",
-": c #59A2DB",
-"> c #5AA3DA",
-", c #5BA4DB",
-"< c #5CA4D9",
-"1 c #5DA5DB",
-"2 c #66ACD3",
-"3 c #62A9D5",
-"4 c #69AED1",
-"5 c #60A9DB",
-"6 c #63ACDB",
-"7 c #64ACDA",
-"8 c #66AFDB",
-"9 c #62ACDE",
-"0 c #67B0DC",
-"q c #67B0DE",
-"w c #68B1DB",
-"e c #6BB4DB",
-"r c #6EB7DB",
-"t c #6FBADF",
-"y c #71B9DB",
-"u c #71BADB",
-"i c #74BEDE",
-"p c #6FBAE0",
-"a c #6EB9E3",
-"s c #73BEE3",
-"d c #74BEE0",
-"f c #72BEE4",
-"g c #70BCE7",
-"h c #6BBFFF",
-"j c #7CC9E9",
-"k c #7CCAEC",
-"l c #6EC2FF",
-"z c #6FC4FF",
-"x c #73C8FF",
-"c c #74C9FF",
-"v c #78CDFF",
-"b c #79CEFF",
-"n c #7DD2FF",
-"m c #7ED3FF",
-"M c #809786",
-"N c #84AC98",
-"B c #93A492",
-"V c #A1AD8E",
-"C c #A3B587",
-"Z c #A7B787",
-"A c #ABB584",
-"S c #A2B389",
-"D c #A3B988",
-"F c #A8BA94",
-"G c #ACBD97",
-"H c #B5BC90",
-"J c #8EA8A8",
-"K c #97BEAB",
-"L c #8BADB7",
-"P c #80B2B8",
-"I c #91B5B6",
-"U c #AFBFA9",
-"Y c #A4C182",
-"T c #B5C987",
-"R c #B2C088",
-"E c #BAD08E",
-"W c #AFC491",
-"Q c #B6CB97",
-"! c #BED190",
-"~ c #AFCEAA",
-"^ c #BBCAA0",
-"/ c #BECFA1",
-"( c #BDCEA7",
-") c #B5C7A9",
-"_ c #BFD0AE",
-"` c #BFD1AF",
-"' c #A8CDBF",
-"] c #C2CC95",
-"[ c #C7D798",
-"{ c #C3D19D",
-"} c #C6D898",
-"| c #CDD8A6",
-" . c #D0DDA6",
-".. c #C4DCB6",
-"X. c #D3E0A2",
-"o. c #D0E4B9",
-"O. c #DBE5B9",
-"+. c #D9E5BD",
-"@. c #E2ECB3",
-"#. c #E4EDB0",
-"$. c #87B8C5",
-"%. c #96CFDB",
-"&. c #9CD1D5",
-"*. c #98D1DF",
-"=. c #A4CDC4",
-"-. c #ADD7D0",
-";. c #B0D1D5",
-":. c #82D6FF",
-">. c #83D7FF",
-",. c #83D8FF",
-"<. c #8CDEFF",
-"1. c #95DEFC",
-"2. c #99E1F6",
-"3. c #A8E4ED",
-"4. c #B6E6E2",
-"5. c #BDEAE6",
-"6. c #ADE7F8",
-"7. c #E2EBCA",
-"8. c #E2F3F3",
-"9. c #E4F4F4",
-"0. c #E6F5F5",
-"q. c #E9F6F6",
-"w. c #EBF7F7",
-"e. c #E9F9F9",
-"r. c #EEF8F8",
-"t. c #F1F9F9",
-"y. c #F4FBFB",
-"u. c #F7FCFC",
-"i. c #F9FDFD",
-"p. c #FCFEFE",
-"a. c #FEFFFF",
-"s. c #FFFFFF",
-"d. c None",
-/* pixels */
-"d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.",
-"d.s.s.s.s.s.s.s.s.s.s.s.s.s.d.d.",
-"d.s.; ; , < 5 6 7 w e r r s.d.d.",
-"d.s.; l l 9 x v a m ,.1.k s.d.d.",
-"d.i.< z x q b m j ,.3.5.-.i.d.d.",
-"d.u.- 7 q g p s %.*.%.=.{ u.d.d.",
-"d.y.3 b m t :.5.| @.o...K u.d.d.",
-"d.t.2 m :.i 2.#._ .} ! = t.d.d.",
-"d.w.4 u i k ' ] / W * $ = w.d.d.",
-"d.q.$.<.6.;.7.+.^ ~ D % N q.d.d.",
-"d.w.H O. .R T * D _ ) F I q.d.d.",
-"d.q.A [ ! # Q ( F F ) V L 0.d.d.",
-"d.0.@ Z C S + X o O B M J 0.d.d.",
-". e.8.8.8.8.8.8.8.8.8.8.8.e.. d.",
-"d. d.d.",
-"d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d."
-};
diff --git a/app/bin/bitmaps/below.xpm b/app/bin/bitmaps/below.xpm
deleted file mode 100644
index 43bc22a..0000000
--- a/app/bin/bitmaps/below.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * below_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" ...........",
-" ... . . . . .",
-" ..XX.. . . . ..",
-" .XXX. . . . . .",
-".XXXX.. . . . ..",
-".XXXX. . . . . .",
-".XXXX.. . . . ..",
-".XXXX. . . . . .",
-".XXXX.. . . . ..",
-" .XXX. . . . . .",
-" ..XX.. . . . ..",
-" ... . . . . .",
-" ...........",
-" ",
-" "};
diff --git a/app/bin/bitmaps/bezier.xpm b/app/bin/bitmaps/bezier.xpm
deleted file mode 100644
index 6c592ed..0000000
--- a/app/bin/bitmaps/bezier.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * bezier_xpm[] = {
-"16 16 4 1",
-" c None",
-"! c #000000000000",
-"# c #FFFF00000000",
-"$ c #808080000000",
-" ### !!!!",
-" # #########",
-" ### !! !",
-" $!! $!!!",
-" !!$$ !! !",
-" !! $!$ !",
-" $$ !! !! $ ",
-" !!!!!!! ",
-" !! ! $$ ",
-" $!! !! ",
-"! !$$!! ",
-"! ! $! ",
-"!!!$ !!$ ",
-"! !! ### ",
-"######### # ",
-"!!!! ### "}; \ No newline at end of file
diff --git a/app/bin/bitmaps/block.xpm b/app/bin/bitmaps/block.xpm
deleted file mode 100644
index 232d859..0000000
--- a/app/bin/bitmaps/block.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static char * block_xpm[] = {
-"16 16 5 1",
-" c None",
-". c #2E3436",
-"+ c #00FFFF",
-"@ c #25E100",
-"# c #EF2929",
-".. . ",
-"... ... ",
-" .....++ @@@ ",
-" ...+++ @@@@@ ",
-" ...+++ @@@@@ ",
-"...++++ @@@@@ ",
-" .++++++ @@@ ",
-" ++ +++ ",
-" +++ + ",
-" ### +++ +++ ",
-" ##### +++++..",
-" ##### +++...",
-" ##### +++... ",
-" ### +++.... ",
-" +......",
-" .. ..."};
diff --git a/app/bin/bitmaps/bridge.xbm b/app/bin/bitmaps/bridge.xbm
deleted file mode 100644
index fd5857b..0000000
--- a/app/bin/bitmaps/bridge.xbm
+++ /dev/null
@@ -1,7 +0,0 @@
-#define bridge_width 16
-#define bridge_height 16
-// static unsigned char bridge_bits[] = {
-static char bridge_bits[] = {
- 0x01, 0x80, 0x01, 0x80, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x82, 0x20,
- 0xff, 0xff, 0x82, 0x20, 0x82, 0x20, 0xff, 0xff, 0x82, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0x7f, 0x01, 0x80, 0x01, 0x80};
diff --git a/app/bin/bitmaps/bridge.xpm b/app/bin/bitmaps/bridge.xpm
deleted file mode 100644
index 446f055..0000000
--- a/app/bin/bitmaps/bridge.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * bridge_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #00FFFF",
-"+ c #000000",
-".. ..",
-" .. .. ",
-" ............ ",
-" .......... ",
-"+ + + + ",
-"+++++++++++++++ ",
-"+ + + + ",
-"+ + + + ",
-"+ + + + ",
-"+++++++++++++++ ",
-"+ + + + ",
-" .......... ",
-" ............ ",
-" .. .. ",
-".. ..",
-" "};
diff --git a/app/bin/bitmaps/circle1.xpm b/app/bin/bitmaps/circle1.xpm
deleted file mode 100644
index 03426f0..0000000
--- a/app/bin/bitmaps/circle1.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * circle1_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-"o c #FFFFFFFFFFFF",
-" ...... ",
-" . . ",
-" .. .... .. ",
-" .XXXXXXXXXXX . ",
-" .XoooooooooX . ",
-". XoXXXoXXXoX .",
-". XoXoXoXoooX. .",
-". XoXXXoXXooX. .",
-". XoooXoooXoX. .",
-". XoooXoooXoX. .",
-". XoooXoXXooX .",
-" .XoooooooooX . ",
-" .XXXXXXXXXXX . ",
-" .. .... .. ",
-" . . ",
-" ...... "};
diff --git a/app/bin/bitmaps/circle2.xpm b/app/bin/bitmaps/circle2.xpm
deleted file mode 100644
index 343f29b..0000000
--- a/app/bin/bitmaps/circle2.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * circle2_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ...... ",
-" . . . . . ",
-" .. .... .. ",
-" . ... . ... . ",
-" . .. .. . ",
-". . . .",
-". . . .",
-". . XXXX ....",
-".... XX . .",
-". . X X . .",
-". . X X . .",
-" . .. X. . ",
-" . ... . ..X . ",
-" .. .... .X ",
-" . . . . ",
-" ...... "};
diff --git a/app/bin/bitmaps/circle3.xpm b/app/bin/bitmaps/circle3.xpm
deleted file mode 100644
index 3a7c9ab..0000000
--- a/app/bin/bitmaps/circle3.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * circle3_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ...... ",
-" . . . . . ",
-" .. .... .. ",
-" . ... . ... . ",
-" . .. .. . ",
-". . . .",
-". . . .",
-". . XX ....",
-".... XX . .",
-". . X X. .",
-". . X X .",
-" . .. XX . ",
-" . ... .XXXX . ",
-" .. .... .. ",
-" . . . . . ",
-" ...... "};
diff --git a/app/bin/bitmaps/cnote.xpm b/app/bin/bitmaps/cnote.xpm
deleted file mode 100644
index c008c24..0000000
--- a/app/bin/bitmaps/cnote.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * cnote_xpm[] = {
-"16 16 3 1",
-". c None",
-" c #000000000000",
-"X c #FFFFFFFF0000",
-" ......",
-" XXXXXXXX .....",
-" XXXXXX X X ....",
-" XXXXXX X XX ...",
-" XXXXXX X XXX ..",
-" XXXXXX X .",
-" XXXXXX XXXXXX .",
-" XXXXXX XXXXXX .",
-" XXXXXX XXXXXX .",
-" XXXXXX XXXXXX .",
-" XXXXXX XXXXXX .",
-" XXXXXXXXXXXXX .",
-" XXXXXX XXXXXX .",
-" XXXXXXXXXXXXX .",
-" XXXXXXXXXXXXX .",
-" ."};
diff --git a/app/bin/bitmaps/control.xpm b/app/bin/bitmaps/control.xpm
deleted file mode 100644
index bc73a57..0000000
--- a/app/bin/bitmaps/control.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static char * control_xpm[] = {
-"16 16 5 1",
-" c None",
-". c #05FB0B",
-"+ c #000000",
-"@ c #EF2929",
-"# c #25E100",
-".+ + ",
-"+++ +++",
-" +++ +++ ",
-" +++ +++ +++ ",
-" ++++++++++ ",
-" +++@@@+++ ",
-" ++@@@@@++ ",
-" ++###@@@@++ ",
-" ++####@@@++ ",
-" ++#####@@++ ",
-" ++####@++ ",
-" +++###++++ ",
-" ++++++++++++ ",
-" +++ +++ +++ ",
-"+++ +++",
-"++ ++"};
diff --git a/app/bin/bitmaps/convertfr.xpm b/app/bin/bitmaps/convertfr.xpm
deleted file mode 100644
index 7f141c8..0000000
--- a/app/bin/bitmaps/convertfr.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * convertfr_xpm[] = {
-"16 16 4 1",
-" c None",
-"! c #000000000000",
-"# c #FFFF00000000",
-"$ c #808080000000",
-" !!! !!!! ",
-" !! !!! !!",
-" !! !! !! ",
-" !!!! # !!! ",
-" # ",
-" ## # ## ",
-" ####### ",
-" ### ",
-" # ",
-" ",
-" !!!!!! ",
-" !! ",
-" !!!! ",
-" !! ",
-" !! ",
-" "}; \ No newline at end of file
diff --git a/app/bin/bitmaps/convertto.xpm b/app/bin/bitmaps/convertto.xpm
deleted file mode 100644
index f0fead2..0000000
--- a/app/bin/bitmaps/convertto.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * convertto_xpm[] = {
-"16 16 4 1",
-" c None",
-"! c #000000000000",
-"# c #FFFF00000000",
-"$ c #808080000000",
-" !!! !!!! ",
-" !! !!! !!",
-" !! !! !! ",
-" !!!! # !!! ",
-" ### ",
-" ####### ",
-" ## # ## ",
-" # ",
-" # ",
-" ",
-" !!!!!! ",
-" !! ",
-" !!!! ",
-" !! ",
-" !! ",
-" "}; \ No newline at end of file
diff --git a/app/bin/bitmaps/cornu.xpm b/app/bin/bitmaps/cornu.xpm
deleted file mode 100644
index bd3a2ed..0000000
--- a/app/bin/bitmaps/cornu.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * cornu_xpm[] = {
-"16 16 4 1",
-" c None",
-"! c #000000000000",
-"# c #FFFF00000000",
-"$ c #808080000000",
-" !!$!!!! ",
-" !! $ !! ",
-" !! $!!! $$$",
-" $! !!$ $$ !!",
-" !! $! ! !!",
-"!! !! !! !! ",
-"! !! $###$ ",
-"$$$$ # # ",
-"! !! ### ",
-"! !! ",
-"! !$ ",
-"!!$$! ",
-"!$ !! ",
-"$! $!!!$!!$###",
-" !! $ $ # #",
-" $!!!!!$!!$###"};
diff --git a/app/bin/bitmaps/curve1.xpm b/app/bin/bitmaps/curve1.xpm
deleted file mode 100644
index dd1a295..0000000
--- a/app/bin/bitmaps/curve1.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * curve1_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #FFFF00000000",
-"X c #000000000000",
-"o c #861782078617",
-" . ",
-" ... ",
-" . . . ",
-" . .X .",
-" X XX.XX ",
-" oXXX .X ",
-" X XXX XX.XX ",
-" X X. .X .",
-" XooX X. . . ",
-" X X ... ",
-" XoX X X . ",
-" XoX ",
-" X XX ",
-" X X ",
-"XXXXX ",
-" X X "};
diff --git a/app/bin/bitmaps/curve2.xpm b/app/bin/bitmaps/curve2.xpm
deleted file mode 100644
index e1ff0c6..0000000
--- a/app/bin/bitmaps/curve2.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * curve2_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #000000000000",
-"X c #861782078617",
-"o c #FFFF00000000",
-" . X",
-" ......",
-" . .. . .",
-" .. ..... ",
-" . X.. . ..",
-" . .o .. . ",
-" X. o . ",
-" . X. o ",
-" . .X o ",
-" . . X o ",
-" . . o ",
-"..... o o",
-" . . o o",
-" . . ooo",
-" . . ooo",
-" .... ooooo"};
diff --git a/app/bin/bitmaps/curve3.xpm b/app/bin/bitmaps/curve3.xpm
deleted file mode 100644
index 97c447b..0000000
--- a/app/bin/bitmaps/curve3.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * curve3_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #000000000000",
-"X c #861782078617",
-"o c #FFFF00000000",
-" . X",
-" ......",
-" . .. . .",
-" ..X ..... ",
-" . .. . ..",
-" . .ooooo . ",
-" .Xooo . ",
-" . .ooo ",
-" . .o. o ",
-" . .o o ",
-" . . o ",
-" . . o ",
-"..... o ",
-" . . o ",
-" . . o ",
-" .... o"};
diff --git a/app/bin/bitmaps/curve4.xpm b/app/bin/bitmaps/curve4.xpm
deleted file mode 100644
index 0d26396..0000000
--- a/app/bin/bitmaps/curve4.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * curve4_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #000000000000",
-"X c #861782078617",
-"o c #FFFF00000000",
-" . X",
-" ......",
-" . .. . .",
-" ..X ..... ",
-" . .. . ..",
-" . .ooooo . ",
-" .Xooo . ",
-" . .ooo ",
-" . .o. o o",
-" . .o o o ",
-" . . o o ",
-" . . oo ",
-"..... oo ",
-" . . o ",
-" . . o ",
-" .... o "};
diff --git a/app/bin/bitmaps/dbench.xpm b/app/bin/bitmaps/dbench.xpm
deleted file mode 100644
index a880329..0000000
--- a/app/bin/bitmaps/dbench.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dbench_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF9A691861",
-" .XXXX.XX",
-" .XXXX.XXX",
-" ..XXX..XXXX",
-" .XXXX.XXXXXX",
-" .XXXX.XXXXXXX",
-" ......XXXXXXXX",
-" .XXXX.XXXXXXXX",
-" .XXXX.XXXXXXXX",
-" .XXXX.XXXXXXX.",
-" .XXXX.XXXXXX. ",
-" .XXXX.XXXXX. ",
-" .XXXX.XXXX. ",
-" .XXXX.XX.. ",
-" .XXXX.X. ",
-" .XXXX.. ",
-" ...... "};
diff --git a/app/bin/bitmaps/dbezier.xpm b/app/bin/bitmaps/dbezier.xpm
deleted file mode 100644
index 1bf366f..0000000
--- a/app/bin/bitmaps/dbezier.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dbezier_xpm[] = {
-"16 16 3 1",
-" c None",
-"! c #000000000000",
-"# c #FFFF00000000",
-" ### ",
-" # ########",
-" ### !!!!",
-" !!!! ",
-" !!!! ",
-" !!! ",
-" !!! ",
-" !! ",
-" !!! ",
-" !! ",
-" !!! ",
-" !!! ",
-" !!! ",
-"!!!! ### ",
-"######## # ",
-" ### "}; \ No newline at end of file
diff --git a/app/bin/bitmaps/dbox.xpm b/app/bin/bitmaps/dbox.xpm
deleted file mode 100644
index 83dbeec..0000000
--- a/app/bin/bitmaps/dbox.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dbox_xpm[] = {
-"16 16 3 1",
-"X c None",
-" c #000000000000",
-". c #FFFF00000000",
-" .....",
-" XX..",
-" XXXXXXXXXXX.X.",
-" XXXXXXXXXX.XX.",
-" XXXXXXXXX.XX .",
-" XXXXXXXX.XXX ",
-" XXXXXXX.XXXX ",
-" XXXXXX.XXXXX ",
-" XXXXX.XXXXXX ",
-" XXXX.XXXXXXX ",
-" XXX.XXXXXXXX ",
-" XX.XXXXXXXXX ",
-" X.XXXXXXXXXX ",
-" .XXXXXXXXXXX ",
-".. ",
-".. "};
diff --git a/app/bin/bitmaps/dcircle1.xpm b/app/bin/bitmaps/dcircle1.xpm
deleted file mode 100644
index a17a56a..0000000
--- a/app/bin/bitmaps/dcircle1.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dcircle1_xpm[] = {
-"16 16 3 1",
-" c #None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ...... ",
-" ........ ",
-" ... ... ",
-" .XXXXXXXXXXX.. ",
-" .X X.. ",
-"..X XXX XXX X ..",
-". X X X X X ..",
-". X XXX XX X ..",
-". X X X X ..",
-". X X X X ..",
-"..X X XX X ..",
-" .X X.. ",
-" .XXXXXXXXXXX.. ",
-" ... ... ",
-" ........ ",
-" ...... "};
diff --git a/app/bin/bitmaps/dcircle2.xpm b/app/bin/bitmaps/dcircle2.xpm
deleted file mode 100644
index 36e4763..0000000
--- a/app/bin/bitmaps/dcircle2.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dcircle2_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ...... ",
-" ........ ",
-" ... ... ",
-" ... .. ",
-" .. . ",
-".. ..",
-".. ..",
-".. XXXXX ..",
-".. XX ..",
-".. X X ..",
-".. X X ..",
-" .. X X . ",
-" ... X.. ",
-" ... .X ",
-" ......... ",
-" ...... "};
diff --git a/app/bin/bitmaps/dcircle3.xpm b/app/bin/bitmaps/dcircle3.xpm
deleted file mode 100644
index ec0dc1f..0000000
--- a/app/bin/bitmaps/dcircle3.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dcircle3_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ...... ",
-" ........ ",
-" ... ... ",
-" .. .. ",
-" .. . ",
-".. ..",
-".. ..",
-".. XX ..",
-".. XX X ..",
-".. X X ..",
-".. X X ..",
-" . XX . ",
-" .. XXXXX.. ",
-" ... ... ",
-" ........ ",
-" ...... "};
diff --git a/app/bin/bitmaps/dcurve1.xpm b/app/bin/bitmaps/dcurve1.xpm
deleted file mode 100644
index 286e8bc..0000000
--- a/app/bin/bitmaps/dcurve1.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dcurve1_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #FFFF00000000",
-"X c #000000000000",
-" . ",
-" ... ",
-" . . . ",
-" . . .",
-" XXX.X ",
-" XXXX.X ",
-" XXX . ",
-" XXX . . ",
-" XXX . . . ",
-" XXX ... ",
-" XXX . ",
-" XX ",
-" XXX ",
-" XX ",
-" XX ",
-" XX "};
diff --git a/app/bin/bitmaps/dcurve2.xpm b/app/bin/bitmaps/dcurve2.xpm
deleted file mode 100644
index 2714d5e..0000000
--- a/app/bin/bitmaps/dcurve2.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dcurve2_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" ..... ",
-" ........",
-" .... ..",
-" ... .",
-" .X. ",
-" ...X ",
-" ... X ",
-" .. X ",
-" ... X ",
-" .. X ",
-" .. X X",
-" .. X X",
-" .. X X",
-" .. XX",
-" .. XXXXX"};
diff --git a/app/bin/bitmaps/dcurve3.xpm b/app/bin/bitmaps/dcurve3.xpm
deleted file mode 100644
index c452ffd..0000000
--- a/app/bin/bitmaps/dcurve3.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dcurve3_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" ..... ",
-" ........",
-" .... .",
-" ... ",
-" .XXXXXX ",
-" ..XXX ",
-" .. XXX ",
-" .. X X ",
-" ... X X ",
-" .. X X ",
-" .. X ",
-" .. X ",
-" .. X ",
-" .. XX",
-" .. XX"};
diff --git a/app/bin/bitmaps/dcurve4.xpm b/app/bin/bitmaps/dcurve4.xpm
deleted file mode 100644
index 2474481..0000000
--- a/app/bin/bitmaps/dcurve4.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dcurve4_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" ..... ",
-" ........",
-" .... ..",
-" ... ",
-" .XXXXXX ",
-" ..XXX ",
-" .. XXX ",
-" .. X X .",
-" .. X X . ",
-" .. X X . ",
-" .. X. ",
-" .. .X ",
-" .. . ",
-" .. . ",
-" .. . "};
diff --git a/app/bin/bitmaps/ddimlin.xpm b/app/bin/bitmaps/ddimlin.xpm
deleted file mode 100644
index 3980e44..0000000
--- a/app/bin/bitmaps/ddimlin.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * ddimlin_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #FFFF00000000",
-"X c #000000000000",
-" .....",
-" ..",
-" . .",
-" . .",
-" . .",
-" X XXX ",
-" X X X ",
-" XX XX ",
-" X X ",
-" XX XX ",
-" . ",
-". . ",
-". . ",
-". . ",
-".. ",
-"..... "};
diff --git a/app/bin/bitmaps/delete.xpm b/app/bin/bitmaps/delete.xpm
deleted file mode 100644
index 63b875a..0000000
--- a/app/bin/bitmaps/delete.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * delete_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #FF0000",
-"+ c #000000",
-" .. .. ",
-" .. .. ",
-" .. .. ",
-" .. .. ",
-" + .. .. + ",
-"++++++....++++++",
-" + +..+ + ",
-" + +..+ + ",
-" + .... + ",
-"+++++..++..+++++",
-" + .. .. + ",
-" .. .. ",
-" .. .. ",
-" .. .. ",
-".. ..",
-" "};
diff --git a/app/bin/bitmaps/describe.xpm b/app/bin/bitmaps/describe.xpm
deleted file mode 100644
index e5506a5..0000000
--- a/app/bin/bitmaps/describe.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * describe_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #FFFF00000000",
-"X c #000000000000",
-" ...... ",
-" ... ... ",
-" ... ... ",
-" ... ... ",
-" ... ... ",
-" X X ... X ",
-"XXXXXXXX ... XX",
-" X X ... X ",
-" X .... X ",
-" X ... X ",
-"XXXX ... XXXXXX",
-" X ... X X ",
-" ... ",
-" ",
-" ... ",
-" ... "};
diff --git a/app/bin/bitmaps/dfilbox.xpm b/app/bin/bitmaps/dfilbox.xpm
deleted file mode 100644
index 4d78c26..0000000
--- a/app/bin/bitmaps/dfilbox.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * dfilbox_xpm[] = {
-"16 16 4 1",
-"o c None",
-" c #000000000000",
-". c #FFFF00000000",
-"X c #0000FFFFFFFF",
-" .....",
-" XXXXXXXXXXXXX..",
-" XXXXXXXXXXXX.X.",
-" XXXXXXXXXXX.XX.",
-" XXXXXXXXXX.XXX.",
-" XXXXXXXXX.XXXX ",
-" XXXXXXXX.XXXXX ",
-" XXXXXXX.XXXXXX ",
-" XXXXXX.XXXXXXX ",
-" XXXXX.XXXXXXXX ",
-" XXXX.XXXXXXXXX ",
-" XXX.XXXXXXXXXX ",
-" XX.XXXXXXXXXXX ",
-" X.XXXXXXXXXXXX ",
-"..XXXXXXXXXXXXX ",
-".. "};
diff --git a/app/bin/bitmaps/dfilpoly.xpm b/app/bin/bitmaps/dfilpoly.xpm
deleted file mode 100644
index 56a62ee..0000000
--- a/app/bin/bitmaps/dfilpoly.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * dfilpoly_xpm[] = {
-"16 16 4 1",
-"X c None",
-" c #FFFF00000000",
-". c #000000000000",
-"o c #0000FFFFFFFF",
-" ..... XXXXXXXXX",
-".oooooo..... XXX",
-".ooooooooo..XXXX",
-".oooooooo.XXXXXX",
-".oooooo..XXXXXXX",
-".ooooo.XXXXXXXXX",
-".oooo.XXXXXXXXXX",
-".oooo .XXXXXXXXX",
-".oooooo..... XXX",
-" oooooooooooo.. ",
-"X.oooooooooooo.X",
-"X.oooooooooo..XX",
-"XX.oooooooo.XXXX",
-"XXX.oooooo.XXXXX",
-"XXX.oooo..XXXXXX",
-"XXXX .. XXXXXXXX"};
diff --git a/app/bin/bitmaps/dflcrcl1.xpm b/app/bin/bitmaps/dflcrcl1.xpm
deleted file mode 100644
index 404660d..0000000
--- a/app/bin/bitmaps/dflcrcl1.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dflcrcl1_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ...... ",
-" .. . . . ",
-" . . . . . .. ",
-" .XXXXXXXXXXX.. ",
-" .X X . ",
-". X XXX XXX X. .",
-"..X X X X X ..",
-". X XXX XX X. .",
-"..X X X X ..",
-". X X X X. .",
-"..X X XX X ..",
-". X X.. ",
-" .XXXXXXXXXXX . ",
-" .. . . . ... ",
-" . . . .. ",
-" ...... "};
diff --git a/app/bin/bitmaps/dflcrcl2.xpm b/app/bin/bitmaps/dflcrcl2.xpm
deleted file mode 100644
index c02d1ea..0000000
--- a/app/bin/bitmaps/dflcrcl2.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * dflcrcl2_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #000000000000",
-"X c #0000FFFFFFFF",
-"o c #FFFF00000000",
-" ...... ",
-" .XXXXXX. ",
-" ..XXXXXXXX.. ",
-" .XXXXXXXXXXXX. ",
-" .XXXXXXXXXXXX. ",
-".XXXXXXXXXXXXXX.",
-".XXXXXXXXXXXXXX.",
-".XXXXXXoooooXXX.",
-".XXXXXXooXXXXXX.",
-".XXXXXXoXoXXXXX.",
-".XXXXXXoXXoXXXX.",
-" .XXXXXoXXXoXX. ",
-" .XXXXXXXXXXoX. ",
-" ..XXXXXXXXXo ",
-" .XXXXXX.. ",
-" ...... "};
diff --git a/app/bin/bitmaps/dflcrcl3.xpm b/app/bin/bitmaps/dflcrcl3.xpm
deleted file mode 100644
index e1bd80a..0000000
--- a/app/bin/bitmaps/dflcrcl3.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * dflcrcl3_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #000000000000",
-"X c #0000FFFFFFFF",
-"o c #FFFF00000000",
-" ...... ",
-" .XXXXXX. ",
-" ..XXXXXXXX.. ",
-" .XXXXXXXXXXXX. ",
-" .XXXXXXXXXXXX. ",
-".XXXXXXXXXXXXXX.",
-".XXXXXXXXXXXXXX.",
-".XXXXXXooXXXXXX.",
-".XXXXXXooXXXoXX.",
-".XXXXXXXXoXXoXX.",
-".XXXXXXXXXoXoXX.",
-" .XXXXXXXXXooX. ",
-" .XXXXXXoooooX. ",
-" ..XXXXXXXX.. ",
-" .XXXXXX. ",
-" ...... "};
diff --git a/app/bin/bitmaps/dline.xpm b/app/bin/bitmaps/dline.xpm
deleted file mode 100644
index 2105dad..0000000
--- a/app/bin/bitmaps/dline.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dline_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #FFFF00000000",
-"X c #000000000000",
-" .....",
-" ..",
-" . .",
-" . .",
-" . .",
-" . ",
-" X. ",
-" XXX ",
-" XXX ",
-" XXX ",
-" XXX ",
-" XXX ",
-" XXX ",
-" XXX ",
-"XXX ",
-"XX "};
diff --git a/app/bin/bitmaps/document-export.xpm b/app/bin/bitmaps/document-export.xpm
deleted file mode 100644
index 8d632de..0000000
--- a/app/bin/bitmaps/document-export.xpm
+++ /dev/null
@@ -1,90 +0,0 @@
-/* XPM */
-static char * export_xpm[] = {
-"16 16 71 1",
-" c None",
-". c #406C98",
-"+ c #DDF0FB",
-"@ c #D4E9F7",
-"# c #D1E7F5",
-"$ c #CEE4F4",
-"% c #CCE2F3",
-"& c #CCE1F2",
-"* c #A7C2DC",
-"= c #D6EBF7",
-"- c #C5DFEF",
-"; c #C1DBED",
-"> c #BCD6EA",
-", c #B6D0E8",
-"' c #B3CDE6",
-") c #B2CCE5",
-"! c #9AB6D2",
-"~ c #E5F6FF",
-"{ c #D7ECF8",
-"] c #C7E1EF",
-"^ c #85A4C2",
-"/ c #D7EDF8",
-"( c #C8E2F0",
-"_ c #D8EEF8",
-": c #CAE4F1",
-"< c #D9EEF9",
-"[ c #CBE5F2",
-"} c #8FAFCF",
-"| c #83A5C7",
-"1 c #DAEFF9",
-"2 c #CDE7F2",
-"3 c #81A3C5",
-"4 c #105293",
-"5 c #DAF0F9",
-"6 c #CEE8F3",
-"7 c #C0DAEB",
-"8 c #AFCCE0",
-"9 c #9AB9D4",
-"0 c #88A9C9",
-"a c #7FA1C3",
-"b c #CCE1F0",
-"c c #155493",
-"d c #DBF0FA",
-"e c #D0EAF4",
-"f c #CFE8F3",
-"g c #D4EAF6",
-"h c #E1F3FD",
-"i c #195793",
-"j c #DBF1FA",
-"k c #D1EBF4",
-"l c #C1DCEB",
-"m c #AFCBE0",
-"n c #98B7D1",
-"o c #84A4C4",
-"p c #799BBD",
-"q c #CBE0EF",
-"r c #1E5993",
-"s c #DCF1FA",
-"t c #D2ECF5",
-"u c #7597B9",
-"v c #275D94",
-"w c #DCF2FB",
-"x c #D3EDF5",
-"y c #84A4C0",
-"z c #6B8DAF",
-"A c #3D71A5",
-"B c #DDF2FB",
-"C c #D4EEF6",
-"D c #D8EDF8",
-"E c #E1F4FD",
-"F c #DFF2FC",
-" ......... ",
-" .+@#$%&&*. ",
-" .=-;>,')!~. ",
-" .{]-;>,'^^^. ",
-" ./(]-;>,')&. ",
-" ._:(]-;>,'&. ",
-" .<[:(]-;>}| ",
-" .12[:(]-;3~4 ",
-" .562[7890ab~c ",
-" .de62fg1h~~~~i",
-" .jke6lmnopq~r ",
-" .stke62[:u~v ",
-" .wxtke62[yzA ",
-" .BCxtke62[D. ",
-" .EBwsjd51<F. ",
-" ............ "};
diff --git a/app/bin/bitmaps/document-exportdxf.xpm b/app/bin/bitmaps/document-exportdxf.xpm
deleted file mode 100644
index fc4071b..0000000
--- a/app/bin/bitmaps/document-exportdxf.xpm
+++ /dev/null
@@ -1,84 +0,0 @@
-/* XPM */
-static char * export_dxf_xpm[] = {
-"16 16 65 1",
-" c None",
-". c #406C98",
-"+ c #DDF0FB",
-"@ c #D4E9F7",
-"# c #11CC22",
-"$ c #CEE4F4",
-"% c #CCE2F3",
-"& c #CCE1F2",
-"* c #A7C2DC",
-"= c #D6EBF7",
-"- c #C5DFEF",
-"; c #BCD6EA",
-"> c #B6D0E8",
-", c #B3CDE6",
-"' c #9AB6D2",
-") c #E5F6FF",
-"! c #D7ECF8",
-"~ c #C7E1EF",
-"{ c #C1DBED",
-"] c #85A4C2",
-"^ c #D8EEF8",
-"/ c #CAE4F1",
-"( c #D9EEF9",
-"_ c #CBE5F2",
-": c #C8E2F0",
-"< c #8FAFCF",
-"[ c #83A5C7",
-"} c #DAEFF9",
-"| c #CDE7F2",
-"1 c #81A3C5",
-"2 c #105293",
-"3 c #AFCCE0",
-"4 c #9AB9D4",
-"5 c #88A9C9",
-"6 c #7FA1C3",
-"7 c #CCE1F0",
-"8 c #155493",
-"9 c #DBF0FA",
-"0 c #D0EAF4",
-"a c #CFE8F3",
-"b c #D4EAF6",
-"c c #E1F3FD",
-"d c #195793",
-"e c #DBF1FA",
-"f c #D1EBF4",
-"g c #CEE8F3",
-"h c #C1DCEB",
-"i c #AFCBE0",
-"j c #98B7D1",
-"k c #84A4C4",
-"l c #799BBD",
-"m c #CBE0EF",
-"n c #1E5993",
-"o c #DCF1FA",
-"p c #D2ECF5",
-"q c #7597B9",
-"r c #275D94",
-"s c #84A4C0",
-"t c #6B8DAF",
-"u c #3D71A5",
-"v c #DDF2FB",
-"w c #D4EEF6",
-"x c #D8EDF8",
-"y c #E1F4FD",
-"z c #DFF2FC",
-" ......... ",
-" .+@#$%&#*. ",
-" .=-#;>,#'). ",
-" .!~#{;>#]]]. ",
-" .##########. ",
-" .^/#~-{#>,&. ",
-" .(_#:~-#;<[ ",
-" .}|#/:~#{1)2 ",
-" .#####34567)8 ",
-" .90#|ab}c))))d",
-" .ef#ghijklm)n ",
-" .op#0g|#/q)r ",
-" .########stu ",
-" .vw#pf0#|_x. ",
-" .yv#oe9#}(z. ",
-" ............ "};
diff --git a/app/bin/bitmaps/document-import.xpm b/app/bin/bitmaps/document-import.xpm
deleted file mode 100644
index 28dc3c8..0000000
--- a/app/bin/bitmaps/document-import.xpm
+++ /dev/null
@@ -1,92 +0,0 @@
-/* XPM */
-static char * import_xpm[] = {
-"16 16 73 1",
-" c None",
-". c #406C98",
-"+ c #DDF0FB",
-"@ c #D4E9F7",
-"# c #D1E7F5",
-"$ c #CEE4F4",
-"% c #CCE2F3",
-"& c #CCE1F2",
-"* c #A7C2DC",
-"= c #D6EBF7",
-"- c #C5DFEF",
-"; c #C1DBED",
-"> c #BCD6EA",
-", c #B6D0E8",
-"' c #B3CDE6",
-") c #B2CCE5",
-"! c #9AB6D2",
-"~ c #E5F6FF",
-"{ c #D7ECF8",
-"] c #C7E1EF",
-"^ c #85A4C2",
-"/ c #D7EDF8",
-"( c #C8E2F0",
-"_ c #D8EEF8",
-": c #94B4D1",
-"< c #86A7C9",
-"[ c #AECBE1",
-"} c #D9EEF9",
-"| c #81A3C5",
-"1 c #E4F6FF",
-"2 c #93B2D0",
-"3 c #B6D2E6",
-"4 c #155493",
-"5 c #7FA1C3",
-"6 c #CBE1F0",
-"7 c #DEF2FC",
-"8 c #A5C3DA",
-"9 c #BED9EA",
-"0 c #195793",
-"a c #DFF2FC",
-"b c #CFE7F4",
-"c c #1E5993",
-"d c #799BBD",
-"e c #CAE0EF",
-"f c #A4C2D9",
-"g c #C0DBEB",
-"h c #D4EAF7",
-"i c #DBF1FA",
-"j c #7597B9",
-"k c #8BABC7",
-"l c #B8D4E6",
-"m c #CBE5F2",
-"n c #CAE4F1",
-"o c #D5EBF7",
-"p c #DCF1FA",
-"q c #86A6C1",
-"r c #6F91B2",
-"s c #ACC9DC",
-"t c #CEE8F3",
-"u c #CDE7F2",
-"v c #D6ECF7",
-"w c #DCF2FB",
-"x c #D3EDF5",
-"y c #D2ECF5",
-"z c #D1EBF4",
-"A c #D0EAF4",
-"B c #DDF2FB",
-"C c #D4EEF6",
-"D c #D8EDF8",
-"E c #E1F4FD",
-"F c #DBF0FA",
-"G c #DAF0F9",
-"H c #DAEFF9",
-" ......... ",
-" .+@#$%&&* ",
-" .=-;>,')!~ ",
-" .{]-;>,'^^^. ",
-" ./(]-;>,')&. ",
-" ._:<[-;>,'&. ",
-" .}|123-;>,%. ",
-" 44556789-;>$. ",
-"0~~~~1a/b]-;#. ",
-" ccddeafg(]-h. ",
-" .ij1klmn(]o. ",
-" .pqrstumn(v. ",
-" .wxyzAtumn{. ",
-" .BCxyzAtumD. ",
-" .EBwpiFGH}a. ",
-" ............ "};
diff --git a/app/bin/bitmaps/document-importmod.xpm b/app/bin/bitmaps/document-importmod.xpm
deleted file mode 100644
index d0efd02..0000000
--- a/app/bin/bitmaps/document-importmod.xpm
+++ /dev/null
@@ -1,71 +0,0 @@
-/* XPM */
-static char *importmod_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 49 1 ",
-" c #27795F",
-". c #305173",
-"X c #1A6878",
-"o c #07900F",
-"O c #0E8E14",
-"+ c #0B9C17",
-"@ c #10971E",
-"# c #0BA619",
-"$ c #10A51D",
-"% c #0DB61C",
-"& c #159E22",
-"* c #209E2D",
-"= c #18A727",
-"- c #16B627",
-"; c #27AB35",
-": c #30AF3B",
-"> c #2AB437",
-", c #31B63E",
-"< c #36BD46",
-"1 c #3CC44C",
-"2 c #40C94E",
-"3 c #44CB54",
-"4 c #54DB64",
-"5 c #195793",
-"6 c #3B6D8D",
-"7 c #39798B",
-"8 c #3F6E9C",
-"9 c #377C97",
-"0 c #3D77A6",
-"q c #3F7FBC",
-"w c #37878B",
-"e c #38938E",
-"r c #378399",
-"t c #3983A7",
-"y c #6F91B2",
-"u c #789ABC",
-"i c #7FA1C3",
-"p c #86A6C4",
-"a c #96B4D1",
-"s c #A7C4DB",
-"d c #AECBE1",
-"f c #B9D5E7",
-"g c #C0DBEB",
-"h c #C9E1EF",
-"j c #CDE4F2",
-"k c #D7EDF8",
-"l c #DFF2FC",
-"z c #E5F6FF",
-"x c None",
-/* pixels */
-"xxqqqqqqqqqxxxxx",
-"xxt3111;<>sqxxxx",
-"xxq1<<:O;<a;qxxx",
-"xxq<;;&x=2pppqxx",
-"xxq===$o+;>#xxxx",
-"xxq=aid=$=,1>txx",
-"xxq=ilaf->44>txx",
-"x5qiijlsg-31=0xx",
-"5zzzzzzkjh1,#rxx",
-"x5Xuuhlsf1111exx",
-"xxw<uzpf211;:exx",
-"xx9;pys1<<;$+9xx",
-"xx0@&@=<;;=%#9xx",
-"xx8;<;;===$##7xx",
-"xx8*<<==+@++#7xx",
-"xx.677776667w xx"
-};
diff --git a/app/bin/bitmaps/document-new.xpm b/app/bin/bitmaps/document-new.xpm
deleted file mode 100644
index df4790d..0000000
--- a/app/bin/bitmaps/document-new.xpm
+++ /dev/null
@@ -1,38 +0,0 @@
-/* XPM */
-static char *document_new[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 16 1",
-" c #578757875787",
-". c #D8CCC69C0972",
-"X c #F68EE212077A",
-"o c #4DB24DB22F3A",
-"O c #6DBE6C5B24E5",
-"+ c #F4FCE3151187",
-"@ c #F755E8202525",
-"# c #EC82D7FE0467",
-"$ c #383338333833",
-"% c #E683DCF75128",
-"& c #F190EA107861",
-"* c #E462E45CE3EB",
-"= c #FFFDE56F00EE",
-"- c #E1C4CC690469",
-"; c None",
-": c #FFFFE5710000",
-/* pixels */
-" $$$$$$$$$oo.=;;",
-"$********%@++#-;",
-"$*******&@+@++#:",
-"$*******%+@&&@X=",
-"$*******%+@&&@X=",
-"$*****o*&@+@@+#:",
-"$***&****%@++@-;",
-"$*********%%%o;;",
-"$************$;;",
-"$************$;;",
-"$*&**********$;;",
-"$*******&****$;;",
-"$************$;;",
-"$************$;;",
-" $$$$$$$$$$$$ ;;",
-";;;;;;;;;;;;;;;;"
-};
diff --git a/app/bin/bitmaps/document-open.xpm b/app/bin/bitmaps/document-open.xpm
deleted file mode 100644
index be91cd7..0000000
--- a/app/bin/bitmaps/document-open.xpm
+++ /dev/null
@@ -1,35 +0,0 @@
-/* XPM */
-static char * document_open[] = {
-"16 16 16 1",
-" c None",
-". c #181917",
-"+ c #292928",
-"@ c #DBDBDB",
-"# c #5E5F5E",
-"$ c #181919",
-"% c #A6A6A5",
-"& c #09215F",
-"* c #092260",
-"= c #88ABD2",
-"- c #779BCA",
-"; c #4A76B5",
-"> c #265299",
-", c #243F67",
-"' c #0F2D6C",
-") c #082160",
-" ...+.++. ",
-" +.@@@@@@#. ",
-"++++.@@@@@@@#$ ",
-"+%%#.@#####@@#$ ",
-"+%%#+@@@@@@@@%. ",
-".%%#.@######@%. ",
-".%%#.@@@@@@@@%. ",
-".%&&&&&&&&&&&&&*",
-"+%&=====-======&",
-".%&=;;;;;;;;;;-&",
-".%&=;;-;;;-;;;-&",
-"$%&=;;;-;;;;;;-&",
-".%*;;;>>;>;>>>;&",
-"$%&;>>>;>;>>;>;&",
-".,&,'>'>>>>''>'*",
-"$&&&&&&&&&&&&&*)"};
diff --git a/app/bin/bitmaps/document-print.xpm b/app/bin/bitmaps/document-print.xpm
deleted file mode 100644
index 69802d6..0000000
--- a/app/bin/bitmaps/document-print.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static char * document_print_xpm[] = {
-"16 16 5 1",
-" c None",
-". c #BABDB6",
-"+ c #EEEEEC",
-"@ c #888A85",
-"# c #D3D7CF",
-" ",
-" ........... ",
-" .++++@++++. ",
-" .+..@@@..+. ",
-" .++@@@@@++. ",
-" .+...@...+. ",
-" .++++@++++. ",
-" .+++++++++. ",
-" @@@.........@@@",
-" @+++++++++++++@",
-" @+#+.+#+#+#+#+@",
-" @+###########+@",
-" @+.@@@@@@@@@.+@",
-" @+...........+@",
-" @+###########+@",
-" @@@@@@@@@@@@@@@"};
diff --git a/app/bin/bitmaps/document-save.xpm b/app/bin/bitmaps/document-save.xpm
deleted file mode 100644
index afc2ce6..0000000
--- a/app/bin/bitmaps/document-save.xpm
+++ /dev/null
@@ -1,35 +0,0 @@
-/* XPM */
-static char * document_save[] = {
-"16 16 16 1",
-" c None",
-". c #193A55",
-"+ c #192933",
-"@ c #0A2342",
-"# c #122735",
-"$ c #536974",
-"% c #A7BDC6",
-"& c #5180AA",
-"* c #244E77",
-"= c #272925",
-"- c #102C4B",
-"; c #E6E6E6",
-"> c #7095AB",
-", c #2D5C8D",
-"' c #6E6E6E",
-") c #9B9C9B",
-".+..@@@#. ",
-"...$%%&*@ ",
-"+=#---&%*#=====.",
-"=%;%>,@>&-%;;;;=",
-"=;;%%$@,&-'%;;;=",
-"=;;@@@@,*@@@@;;=",
-"=;;)@&***,&@$%;=",
-"=;;;)@&,,>@$;;;=",
-"=;;;%)@>&@$%;;;=",
-"=;;;;;)#@$;;;;;=",
-"=;;;;;;;;;;;;;;=",
-"=))))))))))))))=",
-"=))')')')')')')=",
-"=))')')')')')')=",
-"=))))))))))))))=",
-"+==============+"};
diff --git a/app/bin/bitmaps/dpoly.xpm b/app/bin/bitmaps/dpoly.xpm
deleted file mode 100644
index b46993e..0000000
--- a/app/bin/bitmaps/dpoly.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * dpoly_xpm[] = {
-"16 16 3 1",
-"X c None",
-" c #FFFF00000000",
-". c #000000000000",
-" ..... XXXXXXXXX",
-".XXXXXX..... XXX",
-".XXXXXXXXX..XXXX",
-".XXXXXXXX.XXXXXX",
-".XXXXXX..XXXXXXX",
-".XXXXX.XXXXXXXXX",
-".XXX..XXXXXXXXXX",
-".XX ...XXXXXXXXX",
-".XXXXXX......XXX",
-" XXXXXXXXXXXX.. ",
-"X.XXXXXXXXXXXX.X",
-"X.XXXXXXXXXX..XX",
-"XX.XXXXXXXX.XXXX",
-"XXX.XXXXXX.XXXXX",
-"XXX.XXXX..XXXXXX",
-"XXXX .. XXXXXXXX"};
diff --git a/app/bin/bitmaps/dpolyline.xpm b/app/bin/bitmaps/dpolyline.xpm
deleted file mode 100644
index 7f01bda..0000000
--- a/app/bin/bitmaps/dpolyline.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * dpolyline_xpm[] = {
-"16 16 3 1",
-"X c None",
-" c #FFFF00000000",
-". c #000000000000",
-"XXXXXXXXXXXXXXXX",
-"XXXXXXX .... XXX",
-"XXXXXXXXXX..XXXX",
-"XXXXXXXXX.XXXXXX",
-"XXXXXXX..XXXXXXX",
-"XXXXXX.XXXXXXXXX",
-"XXXX..XXXXXXXXXX",
-"XXX ...XXXXXXXXX",
-"XXXXXXX......XXX",
-" XXXXXXXXXXXX.. ",
-"X.XXXXXXXXXXXX.X",
-"X.XXXXXXXXXX..XX",
-"XX.XXXXXXXX.XXXX",
-"XXX.XXXXXX.XXXXX",
-"XXX.XXXX..XXXXXX",
-"XXXX .. XXXXXXXX"};
-
diff --git a/app/bin/bitmaps/dtbledge.xpm b/app/bin/bitmaps/dtbledge.xpm
deleted file mode 100644
index 7772d10..0000000
--- a/app/bin/bitmaps/dtbledge.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * dtbledge_xpm[] = {
-"16 16 4 1",
-"o c None",
-". c #000000000000",
-" c #0000FFFF0000",
-"X c #861782078617",
-" .",
-" ..",
-" .X",
-" ..X",
-" ..XX",
-" .XXX",
-" ..XXX",
-" ..XXXX",
-" .XXXXo",
-" ..XXXXo",
-" .XXXXoo",
-"..........XXXooo",
-"..........XXXooo",
-"XXXXXXXX..XXoooo",
-"XXXXXXXX..Xooooo",
-"XXXXXXXX..Xooooo"};
diff --git a/app/bin/bitmaps/ebroad.xpm b/app/bin/bitmaps/ebroad.xpm
deleted file mode 100644
index 11bc4d6..0000000
--- a/app/bin/bitmaps/ebroad.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * ebroad_xpm[] = {
-"41 16 2 1",
-". c None",
-" c #000000000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... . .... . .... .. .. . .... .. . .",
-" .. . . ... . .. .. .. . .. .. ",
-".........................................",
-".........................................",
-"........ .................... ........",
-"........ ... ................... ........",
-"........ ... . ... ... ... ........",
-"........ .. .. . .. . .. . .. ........",
-"........ ... . .... .. . .. . .. ........",
-"........ ... . .... .. . . . .. ........",
-"........ .. ..... ... . .. ........"};
diff --git a/app/bin/bitmaps/ecornu.xpm b/app/bin/bitmaps/ecornu.xpm
deleted file mode 100644
index e32e56a..0000000
--- a/app/bin/bitmaps/ecornu.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * ecornu_xpm[] = {
-"41 16 4 1",
-". c None",
-" c #000000000000",
-"# c #FFFF00000000",
-"$ c #808080000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... .. .... . .... .. .. . .... .. . .",
-" .. . ... . .. .. .. . .. .. ",
-".........................................",
-"...$$$...###.....................$$$$$...",
-"..$...$.#...#................$$$$.....$..",
-".$..$..$#......##..###..###$$#..#.$$$..$.",
-"$..$.$..#.....#..#.#$$#$#..#.#..#$...$..$",
-"$..$...$#.....#$$#$#....#..#.#..#..$.$..$",
-".$..$$$.#..$#$#..#.#....#..#.#..#$..$..$.",
-"..$.....$###...##..#....#..#..##..$...$..",
-"...$$$$$...........................$$$..."};
diff --git a/app/bin/bitmaps/edit-redo.xpm b/app/bin/bitmaps/edit-redo.xpm
deleted file mode 100644
index 3d3a70c..0000000
--- a/app/bin/bitmaps/edit-redo.xpm
+++ /dev/null
@@ -1,29 +0,0 @@
-/* XPM */
-static char *edit_redo[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 7 1",
-" c #4EE29B270680",
-". c #73EAD2BE1616",
-"X c #94FB9F050707",
-"o c #A20EDAEE280A",
-"O c #CC4BD6801D9D",
-"+ c #AEC8ED136114",
-"@ c None",
-/* pixels */
-"@@@@@@@@@ @@@@@@",
-"@@@@@@@@@ @@@@@",
-"@@@@@@@@@ + @@@@",
-"@@@@@@ ++ @@@",
-"@@@@ X+++++.+ @@",
-"@@@ ++ooooo..+ @",
-"@@ o+ooooo....+ ",
-"@ o+oooO.....+ @",
-"@.+OOoooooO.o @@",
-"@ +OX oo @@@",
-"@ +X @@@@ o @@@@",
-"@ o @@@@@ @@@@@",
-"@ + @@@@@ @@@@@@",
-"@ oX@@@@@@@@@@@@",
-"@@ OX@@@@@@@@@@@",
-"@@@@@@@@@@@@@@@@"
-};
diff --git a/app/bin/bitmaps/edit-undo.xpm b/app/bin/bitmaps/edit-undo.xpm
deleted file mode 100644
index 4840284..0000000
--- a/app/bin/bitmaps/edit-undo.xpm
+++ /dev/null
@@ -1,28 +0,0 @@
-/* XPM */
-static char *edit_undo[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 6 1",
-" c #BD4FA17C1684",
-". c #C482A29B05D3",
-"X c #ECB0D6B82037",
-"o c #F318E3AA67FF",
-"O c #FA79F1F1A77C",
-"+ c None",
-/* pixels */
-"++++++.+++++++++",
-"+++++..+++++++++",
-"++++.O.+++++++++",
-"+++.OX.. +++++",
-"++.OXXoooo ++++",
-"+.OXXoXXXXoo +++",
-".OXXXXXXXXXXX ++",
-"+.OXXXXXXXXXo +",
-"++.oXoooooXX.o.+",
-"+++.oo.....oXo +",
-"++++.o.++++.oo +",
-"+++++..+++++.O +",
-"++++++.+++++.o +",
-"++++++++++++Xo++",
-"++++++++++++o ++",
-"++++++++++++++++"
-};
diff --git a/app/bin/bitmaps/egtbroad.xpm b/app/bin/bitmaps/egtbroad.xpm
deleted file mode 100644
index 1a6ca6d..0000000
--- a/app/bin/bitmaps/egtbroad.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * egtbroad_xpm[] = {
-"41 16 2 1",
-". c None",
-" c #000000000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... . .... . .... .. .. . .... .. . .",
-" .. . . ... . .. .. .. . .. .. ",
-".........................................",
-".........................................",
-"..... ..... .................... .....",
-"...... .... ... ................... .....",
-"....... ... ... . ... ... ... .....",
-"........ .. .. .. . .. . .. . .. .....",
-"....... ... ... . .... .. . .. . .. .....",
-"...... .... ... . .... .. . . . .. .....",
-"..... ..... .. ..... .. . .. ......"};
diff --git a/app/bin/bitmaps/egtsharp.xpm b/app/bin/bitmaps/egtsharp.xpm
deleted file mode 100644
index 63212a0..0000000
--- a/app/bin/bitmaps/egtsharp.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * egtsharp_xpm[] = {
-"41 16 2 1",
-". c None",
-" c #000000000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... . .... . .... .. .. . .... .. . .",
-" .. . . ... . .. .. .. . .. .. ",
-".........................................",
-"..... ...... . ......................",
-"...... .... ...... ......................",
-"....... ... ...... ... .. .. .....",
-"........ ... . .. . .. . .. . .. ....",
-"....... ........ . .. . .. . .... .. ....",
-"...... ......... . .. . . . .... .....",
-"..... ..... .. .. .. . . .... .......",
-"................................. ......."};
diff --git a/app/bin/bitmaps/elev.xpm b/app/bin/bitmaps/elev.xpm
deleted file mode 100644
index de8cd96..0000000
--- a/app/bin/bitmaps/elev.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * elev_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #FFFF00000000",
-"X c #FFFF0000FFFF",
-"o c #000000000000",
-" . ",
-" ... ",
-" . . . XXXXX",
-" . . . X",
-" . X ",
-" . X ",
-" . X ",
-" . X ",
-" . XXXXX",
-" o o o o ",
-"ooooooooooooooo ",
-" o o o o ",
-" o o o o ",
-" o o o o ",
-"ooooooooooooooo ",
-" o o o o "};
diff --git a/app/bin/bitmaps/eltbroad.xpm b/app/bin/bitmaps/eltbroad.xpm
deleted file mode 100644
index a2fb83a..0000000
--- a/app/bin/bitmaps/eltbroad.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * eltbroad_xpm[] = {
-"41 16 2 1",
-". c None",
-" c #000000000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... . .... . .... .. .. . .... .. . .",
-" .. . . ... . .. .. .. . .. .. ",
-".........................................",
-".........................................",
-"........ .. .................... .....",
-"....... ... ... ................... .....",
-"...... .... ... . ... ... ... .....",
-"..... ..... .. .. . .. . .. . .. .....",
-"...... .... ... . .... .. . .. . .. .....",
-"....... ... ... . .... .. . . . .. .....",
-"........ .. .. ..... .. . .. ......"};
diff --git a/app/bin/bitmaps/eltsharp.xpm b/app/bin/bitmaps/eltsharp.xpm
deleted file mode 100644
index 70985c1..0000000
--- a/app/bin/bitmaps/eltsharp.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * eltsharp_xpm[] = {
-"41 16 2 1",
-". c None",
-" c #000000000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... . .... . .... .. .. . .... .. . .",
-" .. . . ... . .. .. .. . .. .. ",
-".........................................",
-"..... ...... . ......................",
-".... ...... ...... ......................",
-"... ....... ...... ... .. .. .....",
-".. ......... . .. . .. . .. . .. ....",
-"... ............ . .. . .. . .... .. ....",
-".... ........... . .. . . . .... .....",
-"..... ..... .. .. .. . . .... .......",
-"................................. ......."};
diff --git a/app/bin/bitmaps/enone.xpm b/app/bin/bitmaps/enone.xpm
deleted file mode 100644
index bcc479e..0000000
--- a/app/bin/bitmaps/enone.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * enone_xpm[] = {
-"41 16 2 1",
-". c None",
-" c #000000000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... .. .... . .... .. .. . .... .. . .",
-" .. . ... . .. .. .. . .. .. ",
-".........................................",
-".......... ... ..........................",
-".......... .. ..........................",
-".......... . .. .. ... ............",
-".......... . . . .. . .. . .. ...........",
-".......... . . .. . .. . ............",
-".......... .. . .. . .. . ..............",
-".......... ... .. .. .. .. ...........",
-"........................................."};
diff --git a/app/bin/bitmaps/enormal.xpm b/app/bin/bitmaps/enormal.xpm
deleted file mode 100644
index fa5890a..0000000
--- a/app/bin/bitmaps/enormal.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * enormal_xpm[] = {
-"41 16 2 1",
-". c None",
-" c #000000000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... .. .... . .... .. .. . .... .. . .",
-" .. . ... . .. .. .. . .. .. ",
-".........................................",
-"..... ... ........................ ......",
-"..... .. ........................ ......",
-"..... . .. .. .. . ... .. ......",
-"..... . . . .. . .. . .. .. . .. . ......",
-"..... . . .. . .... .. .. . .. . ......",
-"..... .. . .. . .... .. .. . .. . ......",
-"..... ... .. .. .... .. .. .. .. .....",
-"........................................."};
diff --git a/app/bin/bitmaps/esharp.xpm b/app/bin/bitmaps/esharp.xpm
deleted file mode 100644
index b7129f0..0000000
--- a/app/bin/bitmaps/esharp.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * esharp_xpm[] = {
-"41 16 2 1",
-". c None",
-" c #000000000000",
-" .................................. .",
-" ..................................... ",
-" ...... ... .. .. . ... .. .. .",
-" .. .. . .... .. . .. .. . .. . .. . .",
-" ..... .. .. .. . .. .. . . .. . .",
-" ..... . .... . .... .. .. . .... .. . .",
-" .. . . ... . .. .. .. . .. .. ",
-".........................................",
-"........ . ..........................",
-"....... ...... ..........................",
-"....... ...... ... .. .. .........",
-"........ . .. . .. . .. . .. ........",
-"............ . .. . .. . .... .. ........",
-"............ . .. . . . .... .........",
-"....... .. .. .. . . .... ...........",
-"............................. ..........."};
diff --git a/app/bin/bitmaps/exit.xpm b/app/bin/bitmaps/exit.xpm
deleted file mode 100644
index ab8c191..0000000
--- a/app/bin/bitmaps/exit.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char*exit_xpm[]={
-"16 16 2 1",
-". c None",
-"# c #000000000000",
-"................",
-"................",
-".###.#.#.#.###..",
-".#...#.#.#..#...",
-".#...#.#.#..#...",
-".#...#.#.#..#...",
-".#....#..#..#...",
-".###..#..#..#...",
-".#....#..#..#...",
-".#...#.#.#..#...",
-".#...#.#.#..#...",
-".#...#.#.#..#...",
-".###.#.#.#..#...",
-"................",
-"................",
-"................"};
diff --git a/app/bin/bitmaps/extend.xpm b/app/bin/bitmaps/extend.xpm
deleted file mode 100644
index 4fb45d1..0000000
--- a/app/bin/bitmaps/extend.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * extend_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #FFFF00000000",
-"X c #000000000000",
-"o c #0000FFFFFFFF",
-" ",
-" . ",
-" ... ",
-" . . . ",
-" .X . X.",
-" XXX.XXX",
-" X . X ",
-" X X . X ",
-" X . X ",
-"o o X X X. X ",
-"oooooXX .X X ",
-"o o X .. X ",
-"o o... XX X ",
-"o o X XX ",
-"oooooXX ",
-"o o X "};
diff --git a/app/bin/bitmaps/flip.xpm b/app/bin/bitmaps/flip.xpm
deleted file mode 100644
index 03966eb..0000000
--- a/app/bin/bitmaps/flip.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * flip_xpm[] = {
-"16 16 4 1",
-"# c None",
-". c #0000ffffffff",
-"b c #000000000000",
-"a c #ffff00000000",
-".######a#######b",
-"..#####a######bb",
-"...####a#####bbb",
-"....###a####bbbb",
-".....##a###bbbbb",
-"......#a##bbbbbb",
-".......a#bbbbbbb",
-".......abbbbbbbb",
-".......abbbbbbbb",
-".......a#bbbbbbb",
-"......#a##bbbbbb",
-".....##a###bbbbb",
-"....###a####bbbb",
-"...####a#####bbb",
-"..#####a######bb",
-".######a#######b"};
diff --git a/app/bin/bitmaps/funnel.xpm b/app/bin/bitmaps/funnel.xpm
new file mode 100644
index 0000000..ef7cd23
--- /dev/null
+++ b/app/bin/bitmaps/funnel.xpm
@@ -0,0 +1,62 @@
+/* XPM */
+static char *funnel_xpm[] = {
+"16 16 43 1",
+" c None",
+". c #216262",
+"+ c #123737",
+"@ c #030A0A",
+"# c #000000",
+"$ c #010303",
+"% c #050E0E",
+"& c #091C1C",
+"* c #0F2E2E",
+"= c #164242",
+"- c #1C5353",
+"; c #76D1D1",
+"> c #82D5D5",
+", c #79D2D2",
+"' c #62CBCB",
+") c #65CCCC",
+"! c #75D1D1",
+"~ c #80D5D5",
+"{ c #5FCACA",
+"] c #52C5C5",
+"^ c #42C0C0",
+"/ c #39ACAC",
+"( c #3BB1B1",
+"_ c #57C7C7",
+": c #7BD3D3",
+"< c #89D8D8",
+"[ c #7ED4D4",
+"} c #60CACA",
+"| c #43C0C0",
+"1 c #4BC3C3",
+"2 c #86D7D7",
+"3 c #71D0D0",
+"4 c #46C1C1",
+"5 c #50C5C5",
+"6 c #49C2C2",
+"7 c #4CC3C3",
+"8 c #5EC9C9",
+"9 c #000101",
+"0 c #040B0B",
+"a c #020606",
+"b c #72D0D0",
+"c c #010404",
+"d c #313333",
+" ",
+" .+@###$%&*=-. ",
+" .;;;>,')!~;;. ",
+" .+;{]^/(^_:-. ",
+" +<;[}|1:;2- ",
+" +@;;345;;=- ",
+" @#;;6_;*= ",
+" ##;78&* ",
+" ##'%& ",
+" #'% ",
+" #'% ",
+" #'% ",
+" 9'0 ",
+" $'a ",
+" #bc ",
+" ##d "};
diff --git a/app/bin/bitmaps/funnelclear.xpm b/app/bin/bitmaps/funnelclear.xpm
new file mode 100644
index 0000000..45d948f
--- /dev/null
+++ b/app/bin/bitmaps/funnelclear.xpm
@@ -0,0 +1,124 @@
+/* XPM */
+static char * funnelclear_xpm[] = {
+"16 16 105 2",
+" c None",
+". c #216262",
+"+ c #123737",
+"@ c #030A0A",
+"# c #000000",
+"$ c #010303",
+"% c #050E0E",
+"& c #091C1C",
+"* c #0F2E2E",
+"= c #164242",
+"- c #1C5353",
+"; c #76D1D1",
+"> c #82D5D5",
+", c #79D2D2",
+"' c #62CBCB",
+") c #65CCCC",
+"! c #75D1D1",
+"~ c #80D5D5",
+"{ c #7AAEAE",
+"] c #9D5E5E",
+"^ c #6DA5A5",
+"/ c #39ACAC",
+"( c #3BB1B1",
+"_ c #42C0C0",
+": c #57C7C7",
+"< c #8AB6B6",
+"[ c #A21717",
+"} c #7D4747",
+"| c #92BABA",
+"1 c #9F6464",
+"2 c #FF7777",
+"3 c #9C6060",
+"4 c #6CA5A5",
+"5 c #4BC3C3",
+"6 c #7BD3D3",
+"7 c #86B4B4",
+"8 c #A16767",
+"9 c #F87070",
+"0 c #A70000",
+"a c #9C0101",
+"b c #FE7676",
+"c c #D44C4C",
+"d c #FA7272",
+"e c #965C5C",
+"f c #70AAAA",
+"g c #85B4B4",
+"h c #9B6464",
+"i c #EA6262",
+"j c #E45C5C",
+"k c #A30000",
+"l c #8C0303",
+"m c #990000",
+"n c #EF6767",
+"o c #BE3636",
+"p c #E65E5E",
+"q c #955F5F",
+"r c #996464",
+"s c #D74F4F",
+"t c #CD4545",
+"u c #A00000",
+"v c #A10000",
+"w c #880000",
+"x c #940000",
+"y c #DB5353",
+"z c #B72E2E",
+"A c #C63D3D",
+"B c #BA3131",
+"C c #9F1515",
+"D c #A81E1E",
+"E c #9B0000",
+"F c #9C0000",
+"G c #830000",
+"H c #8F0000",
+"I c #B42525",
+"J c #A21111",
+"K c #A51414",
+"L c #970000",
+"M c #980000",
+"N c #910000",
+"O c #8B0000",
+"P c #AF1515",
+"Q c #AC1111",
+"R c #920000",
+"S c #8C0000",
+"T c #8D0000",
+"U c #B81111",
+"V c #870000",
+"W c #C41111",
+"X c #800202",
+"Y c #820000",
+"Z c #D01111",
+"` c #7C6161",
+" . c #5A0606",
+".. c #570000",
+"+. c #720000",
+"@. c #D81111",
+"#. c #6C0000",
+"$. c #5FAFAF",
+"%. c #020606",
+"&. c #340000",
+"*. c #5F0000",
+"=. c #270000",
+"-. c #6AC2C2",
+";. c #360000",
+">. c #313333",
+" ",
+" . + @ # # # $ % & * = - . ",
+" . ; ; ; > , ' ) ! ~ ; ; . ",
+" . + ; { ] ^ / ( _ : < [ } ",
+" + | 1 2 3 4 5 6 7 8 9 0 0 ",
+" + a b c d e f g h i c j k ",
+" l m n o p q r s o t u v ",
+" w x y z A B C D E F ",
+" G H I J J K L M ",
+" N O P Q Q Q R N ",
+" S T U U U U U U T S ",
+" V V W W W X V W W W V V ",
+" Y Z Z Z ` .G Y Z Z Z Y ",
+" ..+.@.#.$.%. ..+.@.+... ",
+" # &.*.=.-.$ # # ;.*.&.# ",
+" # # >. "};
diff --git a/app/bin/bitmaps/go.xpm b/app/bin/bitmaps/go.xpm
deleted file mode 100644
index b8a5478..0000000
--- a/app/bin/bitmaps/go.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * go_xpm[] = {
-"16 16 3 1",
-" c None",
-"X c #000000000000",
-"o c #0000FFFF0000",
-" XXXXX ",
-" XXXXXXXXX ",
-" XXoooooooXX ",
-" XXoooooooooXX ",
-" XoooooooooooX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-" XoooooooooooX ",
-" XXoooooooooXX ",
-" XXoooooooXX ",
-" XXXXXXXXX ",
-" XXXXX ",
-" "};
diff --git a/app/bin/bitmaps/hndldto.xpm b/app/bin/bitmaps/hndldto.xpm
deleted file mode 100644
index f49fef6..0000000
--- a/app/bin/bitmaps/hndldto.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * hndldto_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000000000",
-" . . ",
-" .. ",
-" . ... ",
-" .. . . ",
-" . .. ",
-" . ...... . ",
-"... ....... ... ",
-" . ........ . ",
-" . .. . ",
-"..... .. ...... ",
-" . .. . . ",
-" .. ",
-" .. ",
-" .. ",
-" .. ",
-" "};
diff --git a/app/bin/bitmaps/join.xpm b/app/bin/bitmaps/join.xpm
deleted file mode 100644
index b42f2cb..0000000
--- a/app/bin/bitmaps/join.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * join_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" ",
-" . .",
-" . ",
-" . . .",
-" . ",
-" . . .",
-" . ",
-" XXX . .",
-". . XX ",
-"..... X X X ",
-". . X X ",
-". .XXXX ",
-". . X ",
-"..... X ",
-". . "};
diff --git a/app/bin/bitmaps/joinline.xpm b/app/bin/bitmaps/joinline.xpm
deleted file mode 100644
index 06e22f8..0000000
--- a/app/bin/bitmaps/joinline.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * joinline_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" ",
-" ",
-" .",
-" ..",
-" ...",
-" ... ",
-" ... ",
-" XXX ",
-" X X ",
-" X X X ",
-".....X X ",
-".....XXXX ",
-"..... X ",
-" X ",
-" "}; \ No newline at end of file
diff --git a/app/bin/bitmaps/l1.xbm b/app/bin/bitmaps/l1.xbm
deleted file mode 100644
index e332794..0000000
--- a/app/bin/bitmaps/l1.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l1_width 14
-#define l1_height 16
-static char l1_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x50, 0x00,
- 0x48, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 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 0cf7dc8..0000000
--- a/app/bin/bitmaps/l10.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l10_width 14
-#define l10_height 16
-static char l10_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x8C, 0x10, 0x8A, 0x18,
- 0x89, 0x14, 0x88, 0x12, 0x88, 0x11, 0x88, 0x10, 0x88, 0x10, 0x08, 0x0F,
- 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 c38f98b..0000000
--- a/app/bin/bitmaps/l11.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l11_width 14
-#define l11_height 16
-static char l11_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x0C, 0x06, 0x0A, 0x05,
- 0x89, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04,
- 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 19b8726..0000000
--- a/app/bin/bitmaps/l12.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l12_width 14
-#define l12_height 16
-static char l12_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x8C, 0x10, 0x8A, 0x10,
- 0x09, 0x08, 0x08, 0x04, 0x08, 0x02, 0x08, 0x01, 0x88, 0x00, 0x88, 0x1F,
- 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 812bbe3..0000000
--- a/app/bin/bitmaps/l13.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l13_width 14
-#define l13_height 16
-static char l13_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x8C, 0x10, 0x0A, 0x10,
- 0x09, 0x10, 0x08, 0x0E, 0x08, 0x10, 0x08, 0x10, 0x88, 0x10, 0x08, 0x0F,
- 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 63f2e44..0000000
--- a/app/bin/bitmaps/l14.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l14_width 14
-#define l14_height 16
-static char l14_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0C, 0x0C, 0x0A, 0x0A,
- 0x09, 0x09, 0x88, 0x08, 0x88, 0x1F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 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 4d66f1b..0000000
--- a/app/bin/bitmaps/l15.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l15_width 14
-#define l15_height 16
-static char l15_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x1F, 0x8C, 0x00, 0x8A, 0x00,
- 0x89, 0x0F, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x88, 0x10, 0x08, 0x0F,
- 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 84366d3..0000000
--- a/app/bin/bitmaps/l16.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l16_width 14
-#define l16_height 16
-static char l16_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x8C, 0x00, 0x8A, 0x00,
- 0x89, 0x0F, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x08, 0x0F,
- 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 0881871..0000000
--- a/app/bin/bitmaps/l17.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l17_width 14
-#define l17_height 16
-static char l17_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x1F, 0x0C, 0x10, 0x0A, 0x08,
- 0x09, 0x08, 0x08, 0x04, 0x08, 0x04, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02,
- 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 3e9074c..0000000
--- a/app/bin/bitmaps/l18.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l18_width 14
-#define l18_height 16
-static char l18_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x8C, 0x10, 0x8A, 0x10,
- 0x89, 0x10, 0x08, 0x0F, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x08, 0x0F,
- 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 71beff5..0000000
--- a/app/bin/bitmaps/l19.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l19_width 14
-#define l19_height 16
-static char l19_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x8C, 0x10, 0x8A, 0x10,
- 0x89, 0x10, 0x08, 0x1F, 0x08, 0x10, 0x08, 0x10, 0x08, 0x08, 0x08, 0x07,
- 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 5efcb45..0000000
--- a/app/bin/bitmaps/l2.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l2_width 14
-#define l2_height 16
-static char l2_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x01, 0x08, 0x01,
- 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0xF8, 0x01,
- 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 3b89521..0000000
--- a/app/bin/bitmaps/l20.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l20_width 14
-#define l20_height 16
-static char l20_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x18,
- 0x90, 0x14, 0x88, 0x12, 0x84, 0x11, 0x82, 0x10, 0x81, 0x10, 0x3F, 0x0F,
- 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 4c21534..0000000
--- a/app/bin/bitmaps/l21.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l21_width 14
-#define l21_height 16
-static char l21_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x04, 0x21, 0x06, 0x21, 0x05,
- 0x90, 0x04, 0x08, 0x04, 0x04, 0x04, 0x02, 0x04, 0x01, 0x04, 0x3F, 0x04,
- 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 1d3d0b8..0000000
--- a/app/bin/bitmaps/l22.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l22_width 14
-#define l22_height 16
-static char l22_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x81, 0x00, 0xBF, 0x1F,
- 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 27bb4ad..0000000
--- a/app/bin/bitmaps/l23.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l23_width 14
-#define l23_height 16
-static char l23_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0x21, 0x10,
- 0x10, 0x10, 0x08, 0x0E, 0x04, 0x10, 0x02, 0x10, 0x81, 0x10, 0x3F, 0x0F,
- 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 8b2efc5..0000000
--- a/app/bin/bitmaps/l24.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l24_width 14
-#define l24_height 16
-static char l24_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x08, 0x21, 0x0C, 0x21, 0x0A,
- 0x10, 0x09, 0x88, 0x08, 0x84, 0x1F, 0x02, 0x08, 0x01, 0x08, 0x3F, 0x08,
- 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 f4751dc..0000000
--- a/app/bin/bitmaps/l25.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l25_width 14
-#define l25_height 16
-static char l25_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0xA1, 0x00, 0xA1, 0x00,
- 0x90, 0x0F, 0x08, 0x10, 0x04, 0x10, 0x02, 0x10, 0x81, 0x10, 0x3F, 0x0F,
- 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 9e67365..0000000
--- a/app/bin/bitmaps/l26.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l26_width 14
-#define l26_height 16
-static char l26_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x00, 0xA1, 0x00,
- 0x90, 0x0F, 0x88, 0x10, 0x84, 0x10, 0x82, 0x10, 0x81, 0x10, 0x3F, 0x0F,
- 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 abdbb55..0000000
--- a/app/bin/bitmaps/l27.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l27_width 14
-#define l27_height 16
-static char l27_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0x21, 0x10, 0x21, 0x08,
- 0x10, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x02, 0x3F, 0x02,
- 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 ceb8a68..0000000
--- a/app/bin/bitmaps/l28.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l28_width 14
-#define l28_height 16
-static char l28_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0x90, 0x10, 0x08, 0x0F, 0x84, 0x10, 0x82, 0x10, 0x81, 0x10, 0x3F, 0x0F,
- 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 84c6512..0000000
--- a/app/bin/bitmaps/l29.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l29_width 14
-#define l29_height 16
-static char l29_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0x90, 0x10, 0x08, 0x1F, 0x04, 0x10, 0x02, 0x10, 0x01, 0x08, 0x3F, 0x07,
- 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 be5c0d1..0000000
--- a/app/bin/bitmaps/l3.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l3_width 14
-#define l3_height 16
-static char l3_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x01, 0x00, 0x01,
- 0x00, 0x01, 0xE0, 0x00, 0x00, 0x01, 0x00, 0x01, 0x08, 0x01, 0xF0, 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 f7ab137..0000000
--- a/app/bin/bitmaps/l30.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l30_width 14
-#define l30_height 16
-static char l30_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA0, 0x18,
- 0xA0, 0x14, 0x9C, 0x12, 0xA0, 0x11, 0xA0, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 5ca3354..0000000
--- a/app/bin/bitmaps/l31.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l31_width 14
-#define l31_height 16
-static char l31_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x04, 0x21, 0x06, 0x20, 0x05,
- 0xA0, 0x04, 0x1C, 0x04, 0x20, 0x04, 0x20, 0x04, 0x21, 0x04, 0x1E, 0x04,
- 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 c083094..0000000
--- a/app/bin/bitmaps/l32.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l32_width 14
-#define l32_height 16
-static char l32_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA0, 0x10,
- 0x20, 0x08, 0x1C, 0x04, 0x20, 0x02, 0x20, 0x01, 0xA1, 0x00, 0x9E, 0x1F,
- 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 241eac5..0000000
--- a/app/bin/bitmaps/l33.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l33_width 14
-#define l33_height 16
-static char l33_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0x20, 0x10,
- 0x20, 0x10, 0x1C, 0x0E, 0x20, 0x10, 0x20, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 552eafd..0000000
--- a/app/bin/bitmaps/l34.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l34_width 14
-#define l34_height 16
-static char l34_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x08, 0x21, 0x0C, 0x20, 0x0A,
- 0x20, 0x09, 0x9C, 0x08, 0xA0, 0x1F, 0x20, 0x08, 0x21, 0x08, 0x1E, 0x08,
- 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 4bf7b2f..0000000
--- a/app/bin/bitmaps/l35.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l35_width 14
-#define l35_height 16
-static char l35_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0xA1, 0x00, 0xA0, 0x00,
- 0xA0, 0x0F, 0x1C, 0x10, 0x20, 0x10, 0x20, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 a048e6d..0000000
--- a/app/bin/bitmaps/l36.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l36_width 14
-#define l36_height 16
-static char l36_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x00, 0xA0, 0x00,
- 0xA0, 0x0F, 0x9C, 0x10, 0xA0, 0x10, 0xA0, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 cd58fcd..0000000
--- a/app/bin/bitmaps/l37.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l37_width 14
-#define l37_height 16
-static char l37_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0x21, 0x10, 0x20, 0x08,
- 0x20, 0x08, 0x1C, 0x04, 0x20, 0x04, 0x20, 0x02, 0x21, 0x02, 0x1E, 0x02,
- 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 d47e1ea..0000000
--- a/app/bin/bitmaps/l38.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l38_width 14
-#define l38_height 16
-static char l38_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA0, 0x10,
- 0xA0, 0x10, 0x1C, 0x0F, 0xA0, 0x10, 0xA0, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 459ad96..0000000
--- a/app/bin/bitmaps/l39.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l39_width 14
-#define l39_height 16
-static char l39_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA0, 0x10,
- 0xA0, 0x10, 0x1C, 0x1F, 0x20, 0x10, 0x20, 0x10, 0x21, 0x08, 0x1E, 0x07,
- 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 ea52f95..0000000
--- a/app/bin/bitmaps/l4.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l4_width 14
-#define l4_height 16
-static char l4_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0xA0, 0x00,
- 0x90, 0x00, 0x88, 0x00, 0xF8, 0x01, 0x80, 0x00, 0x80, 0x00, 0x80, 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 f8d17da..0000000
--- a/app/bin/bitmaps/l40.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l40_width 14
-#define l40_height 16
-static char l40_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0F, 0x98, 0x10, 0x94, 0x18,
- 0x92, 0x14, 0x91, 0x12, 0xBF, 0x11, 0x90, 0x10, 0x90, 0x10, 0x10, 0x0F,
- 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 2029d0a..0000000
--- a/app/bin/bitmaps/l41.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l41_width 14
-#define l41_height 16
-static char l41_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x18, 0x06, 0x14, 0x05,
- 0x92, 0x04, 0x11, 0x04, 0x3F, 0x04, 0x10, 0x04, 0x10, 0x04, 0x10, 0x04,
- 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 b5be599..0000000
--- a/app/bin/bitmaps/l42.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l42_width 14
-#define l42_height 16
-static char l42_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0F, 0x98, 0x10, 0x94, 0x10,
- 0x12, 0x08, 0x11, 0x04, 0x3F, 0x02, 0x10, 0x01, 0x90, 0x00, 0x90, 0x1F,
- 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 23ea804..0000000
--- a/app/bin/bitmaps/l43.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l43_width 14
-#define l43_height 16
-static char l43_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0F, 0x98, 0x10, 0x14, 0x10,
- 0x12, 0x10, 0x11, 0x0E, 0x3F, 0x10, 0x10, 0x10, 0x90, 0x10, 0x10, 0x0F,
- 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 f55e45c..0000000
--- a/app/bin/bitmaps/l44.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l44_width 14
-#define l44_height 16
-static char l44_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x0C, 0x14, 0x0A,
- 0x12, 0x09, 0x91, 0x08, 0xBF, 0x1F, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08,
- 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 8509e7c..0000000
--- a/app/bin/bitmaps/l45.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l45_width 14
-#define l45_height 16
-static char l45_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x1F, 0x98, 0x00, 0x94, 0x00,
- 0x92, 0x0F, 0x11, 0x10, 0x3F, 0x10, 0x10, 0x10, 0x90, 0x10, 0x10, 0x0F,
- 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 873164e..0000000
--- a/app/bin/bitmaps/l46.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l46_width 14
-#define l46_height 16
-static char l46_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0F, 0x98, 0x00, 0x94, 0x00,
- 0x92, 0x0F, 0x91, 0x10, 0xBF, 0x10, 0x90, 0x10, 0x90, 0x10, 0x10, 0x0F,
- 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 61043f1..0000000
--- a/app/bin/bitmaps/l47.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l47_width 14
-#define l47_height 16
-static char l47_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x1F, 0x18, 0x10, 0x14, 0x08,
- 0x12, 0x08, 0x11, 0x04, 0x3F, 0x04, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02,
- 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 0a04953..0000000
--- a/app/bin/bitmaps/l48.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l48_width 14
-#define l48_height 16
-static char l48_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0F, 0x98, 0x10, 0x94, 0x10,
- 0x92, 0x10, 0x11, 0x0F, 0xBF, 0x10, 0x90, 0x10, 0x90, 0x10, 0x10, 0x0F,
- 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 14b9914..0000000
--- a/app/bin/bitmaps/l49.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l49_width 14
-#define l49_height 16
-static char l49_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0F, 0x98, 0x10, 0x94, 0x10,
- 0x92, 0x10, 0x11, 0x1F, 0x3F, 0x10, 0x10, 0x10, 0x10, 0x08, 0x10, 0x07,
- 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 da409be..0000000
--- a/app/bin/bitmaps/l5.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l5_width 14
-#define l5_height 16
-static char l5_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x08, 0x00, 0x08, 0x00,
- 0xF8, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x08, 0x01, 0xF0, 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 981e2c8..0000000
--- a/app/bin/bitmaps/l50.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l50_width 14
-#define l50_height 16
-static char l50_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0x81, 0x10, 0x81, 0x18,
- 0x9F, 0x14, 0xA0, 0x12, 0xA0, 0x11, 0xA0, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 ac2e9a2..0000000
--- a/app/bin/bitmaps/l51.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l51_width 14
-#define l51_height 16
-static char l51_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x04, 0x01, 0x06, 0x01, 0x05,
- 0x9F, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x21, 0x04, 0x1E, 0x04,
- 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 266c9a4..0000000
--- a/app/bin/bitmaps/l52.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l52_width 14
-#define l52_height 16
-static char l52_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0x81, 0x10, 0x81, 0x10,
- 0x1F, 0x08, 0x20, 0x04, 0x20, 0x02, 0x20, 0x01, 0xA1, 0x00, 0x9E, 0x1F,
- 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 232b96c..0000000
--- a/app/bin/bitmaps/l53.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l53_width 14
-#define l53_height 16
-static char l53_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0x81, 0x10, 0x01, 0x10,
- 0x1F, 0x10, 0x20, 0x0E, 0x20, 0x10, 0x20, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 e68e643..0000000
--- a/app/bin/bitmaps/l54.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l54_width 14
-#define l54_height 16
-static char l54_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x08, 0x01, 0x0C, 0x01, 0x0A,
- 0x1F, 0x09, 0xA0, 0x08, 0xA0, 0x1F, 0x20, 0x08, 0x21, 0x08, 0x1E, 0x08,
- 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 6b29ef2..0000000
--- a/app/bin/bitmaps/l55.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l55_width 14
-#define l55_height 16
-static char l55_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x1F, 0x81, 0x00, 0x81, 0x00,
- 0x9F, 0x0F, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 20eedef..0000000
--- a/app/bin/bitmaps/l56.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l56_width 14
-#define l56_height 16
-static char l56_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0x81, 0x00, 0x81, 0x00,
- 0x9F, 0x0F, 0xA0, 0x10, 0xA0, 0x10, 0xA0, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 a9b7d42..0000000
--- a/app/bin/bitmaps/l57.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l57_width 14
-#define l57_height 16
-static char l57_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x1F, 0x01, 0x10, 0x01, 0x08,
- 0x1F, 0x08, 0x20, 0x04, 0x20, 0x04, 0x20, 0x02, 0x21, 0x02, 0x1E, 0x02,
- 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 01fb1bd..0000000
--- a/app/bin/bitmaps/l58.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l58_width 14
-#define l58_height 16
-static char l58_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0x81, 0x10, 0x81, 0x10,
- 0x9F, 0x10, 0x20, 0x0F, 0xA0, 0x10, 0xA0, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 8f5b367..0000000
--- a/app/bin/bitmaps/l59.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l59_width 14
-#define l59_height 16
-static char l59_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0x81, 0x10, 0x81, 0x10,
- 0x9F, 0x10, 0x20, 0x1F, 0x20, 0x10, 0x20, 0x10, 0x21, 0x08, 0x1E, 0x07,
- 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 89efd19..0000000
--- a/app/bin/bitmaps/l6.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l6_width 14
-#define l6_height 16
-static char l6_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x00, 0x08, 0x00,
- 0xF8, 0x00, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0xF0, 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 29692e4..0000000
--- a/app/bin/bitmaps/l60.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l60_width 14
-#define l60_height 16
-static char l60_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x81, 0x10, 0x81, 0x18,
- 0x9F, 0x14, 0xA1, 0x12, 0xA1, 0x11, 0xA1, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 22973a9..0000000
--- a/app/bin/bitmaps/l61.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l61_width 14
-#define l61_height 16
-static char l61_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x04, 0x01, 0x06, 0x01, 0x05,
- 0x9F, 0x04, 0x21, 0x04, 0x21, 0x04, 0x21, 0x04, 0x21, 0x04, 0x1E, 0x04,
- 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 0447b20..0000000
--- a/app/bin/bitmaps/l62.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l62_width 14
-#define l62_height 16
-static char l62_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x81, 0x10, 0x81, 0x10,
- 0x1F, 0x08, 0x21, 0x04, 0x21, 0x02, 0x21, 0x01, 0xA1, 0x00, 0x9E, 0x1F,
- 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 8fb46f9..0000000
--- a/app/bin/bitmaps/l63.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l63_width 14
-#define l63_height 16
-static char l63_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x81, 0x10, 0x01, 0x10,
- 0x1F, 0x10, 0x21, 0x0E, 0x21, 0x10, 0x21, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 8fec658..0000000
--- a/app/bin/bitmaps/l64.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l64_width 14
-#define l64_height 16
-static char l64_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x08, 0x01, 0x0C, 0x01, 0x0A,
- 0x1F, 0x09, 0xA1, 0x08, 0xA1, 0x1F, 0x21, 0x08, 0x21, 0x08, 0x1E, 0x08,
- 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 34b6f4a..0000000
--- a/app/bin/bitmaps/l65.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l65_width 14
-#define l65_height 16
-static char l65_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0x81, 0x00, 0x81, 0x00,
- 0x9F, 0x0F, 0x21, 0x10, 0x21, 0x10, 0x21, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 1e28cf3..0000000
--- a/app/bin/bitmaps/l66.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l66_width 14
-#define l66_height 16
-static char l66_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x81, 0x00, 0x81, 0x00,
- 0x9F, 0x0F, 0xA1, 0x10, 0xA1, 0x10, 0xA1, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 bbc56bf..0000000
--- a/app/bin/bitmaps/l67.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l67_width 14
-#define l67_height 16
-static char l67_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0x01, 0x10, 0x01, 0x08,
- 0x1F, 0x08, 0x21, 0x04, 0x21, 0x04, 0x21, 0x02, 0x21, 0x02, 0x1E, 0x02,
- 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 db31fa9..0000000
--- a/app/bin/bitmaps/l68.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l68_width 14
-#define l68_height 16
-static char l68_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x81, 0x10, 0x81, 0x10,
- 0x9F, 0x10, 0x21, 0x0F, 0xA1, 0x10, 0xA1, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 2d79bc7..0000000
--- a/app/bin/bitmaps/l69.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l69_width 14
-#define l69_height 16
-static char l69_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x81, 0x10, 0x81, 0x10,
- 0x9F, 0x10, 0x21, 0x1F, 0x21, 0x10, 0x21, 0x10, 0x21, 0x08, 0x1E, 0x07,
- 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 28b2698..0000000
--- a/app/bin/bitmaps/l7.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l7_width 14
-#define l7_height 16
-static char l7_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x01, 0x80, 0x00,
- 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 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 16b4c70..0000000
--- a/app/bin/bitmaps/l70.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l70_width 14
-#define l70_height 16
-static char l70_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0xA0, 0x10, 0x90, 0x18,
- 0x90, 0x14, 0x88, 0x12, 0x88, 0x11, 0x84, 0x10, 0x84, 0x10, 0x04, 0x0F,
- 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 12223f5..0000000
--- a/app/bin/bitmaps/l71.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l71_width 14
-#define l71_height 16
-static char l71_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x04, 0x20, 0x06, 0x10, 0x05,
- 0x90, 0x04, 0x08, 0x04, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 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 164f621..0000000
--- a/app/bin/bitmaps/l72.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l72_width 14
-#define l72_height 16
-static char l72_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0xA0, 0x10, 0x90, 0x10,
- 0x10, 0x08, 0x08, 0x04, 0x08, 0x02, 0x04, 0x01, 0x84, 0x00, 0x84, 0x1F,
- 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 0031594..0000000
--- a/app/bin/bitmaps/l73.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l73_width 14
-#define l73_height 16
-static char l73_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0xA0, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x08, 0x0E, 0x08, 0x10, 0x04, 0x10, 0x84, 0x10, 0x04, 0x0F,
- 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 be95f2c..0000000
--- a/app/bin/bitmaps/l74.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l74_width 14
-#define l74_height 16
-static char l74_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x08, 0x20, 0x0C, 0x10, 0x0A,
- 0x10, 0x09, 0x88, 0x08, 0x88, 0x1F, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08,
- 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 3524c94..0000000
--- a/app/bin/bitmaps/l75.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l75_width 14
-#define l75_height 16
-static char l75_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x1F, 0xA0, 0x00, 0x90, 0x00,
- 0x90, 0x0F, 0x08, 0x10, 0x08, 0x10, 0x04, 0x10, 0x84, 0x10, 0x04, 0x0F,
- 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 83e8f59..0000000
--- a/app/bin/bitmaps/l76.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l76_width 14
-#define l76_height 16
-static char l76_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0xA0, 0x00, 0x90, 0x00,
- 0x90, 0x0F, 0x88, 0x10, 0x88, 0x10, 0x84, 0x10, 0x84, 0x10, 0x04, 0x0F,
- 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 4e48354..0000000
--- a/app/bin/bitmaps/l77.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l77_width 14
-#define l77_height 16
-static char l77_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x1F, 0x20, 0x10, 0x10, 0x08,
- 0x10, 0x08, 0x08, 0x04, 0x08, 0x04, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02,
- 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 731d05d..0000000
--- a/app/bin/bitmaps/l78.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l78_width 14
-#define l78_height 16
-static char l78_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0xA0, 0x10, 0x90, 0x10,
- 0x90, 0x10, 0x08, 0x0F, 0x88, 0x10, 0x84, 0x10, 0x84, 0x10, 0x04, 0x0F,
- 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 4e5259a..0000000
--- a/app/bin/bitmaps/l79.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l79_width 14
-#define l79_height 16
-static char l79_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0xA0, 0x10, 0x90, 0x10,
- 0x90, 0x10, 0x08, 0x1F, 0x08, 0x10, 0x04, 0x10, 0x04, 0x08, 0x04, 0x07,
- 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 cf07c8f..0000000
--- a/app/bin/bitmaps/l8.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l8_width 14
-#define l8_height 16
-static char l8_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x01, 0x08, 0x01,
- 0x08, 0x01, 0xF0, 0x00, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0xF0, 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 116c68f..0000000
--- a/app/bin/bitmaps/l80.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l80_width 14
-#define l80_height 16
-static char l80_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x18,
- 0xA1, 0x14, 0x9E, 0x12, 0xA1, 0x11, 0xA1, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 747787e..0000000
--- a/app/bin/bitmaps/l81.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l81_width 14
-#define l81_height 16
-static char l81_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x04, 0x21, 0x06, 0x21, 0x05,
- 0xA1, 0x04, 0x1E, 0x04, 0x21, 0x04, 0x21, 0x04, 0x21, 0x04, 0x1E, 0x04,
- 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 e8758f9..0000000
--- a/app/bin/bitmaps/l82.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l82_width 14
-#define l82_height 16
-static char l82_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0x21, 0x08, 0x1E, 0x04, 0x21, 0x02, 0x21, 0x01, 0xA1, 0x00, 0x9E, 0x1F,
- 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 8ccbf89..0000000
--- a/app/bin/bitmaps/l83.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l83_width 14
-#define l83_height 16
-static char l83_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0x21, 0x10,
- 0x21, 0x10, 0x1E, 0x0E, 0x21, 0x10, 0x21, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 5e0e1ba..0000000
--- a/app/bin/bitmaps/l84.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l84_width 14
-#define l84_height 16
-static char l84_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x08, 0x21, 0x0C, 0x21, 0x0A,
- 0x21, 0x09, 0x9E, 0x08, 0xA1, 0x1F, 0x21, 0x08, 0x21, 0x08, 0x1E, 0x08,
- 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 ee8ed02..0000000
--- a/app/bin/bitmaps/l85.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l85_width 14
-#define l85_height 16
-static char l85_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0xA1, 0x00, 0xA1, 0x00,
- 0xA1, 0x0F, 0x1E, 0x10, 0x21, 0x10, 0x21, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 49e4a8d..0000000
--- a/app/bin/bitmaps/l86.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l86_width 14
-#define l86_height 16
-static char l86_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x00, 0xA1, 0x00,
- 0xA1, 0x0F, 0x9E, 0x10, 0xA1, 0x10, 0xA1, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 bbba679..0000000
--- a/app/bin/bitmaps/l87.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l87_width 14
-#define l87_height 16
-static char l87_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0x21, 0x10, 0x21, 0x08,
- 0x21, 0x08, 0x1E, 0x04, 0x21, 0x04, 0x21, 0x02, 0x21, 0x02, 0x1E, 0x02,
- 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 17a4121..0000000
--- a/app/bin/bitmaps/l88.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l88_width 14
-#define l88_height 16
-static char l88_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0xA1, 0x10, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10, 0xA1, 0x10, 0x1E, 0x0F,
- 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 625081d..0000000
--- a/app/bin/bitmaps/l89.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l89_width 14
-#define l89_height 16
-static char l89_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0xA1, 0x10, 0x1E, 0x1F, 0x21, 0x10, 0x21, 0x10, 0x21, 0x08, 0x1E, 0x07,
- 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 14a43a4..0000000
--- a/app/bin/bitmaps/l9.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l9_width 14
-#define l9_height 16
-static char l9_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x01, 0x08, 0x01,
- 0x08, 0x01, 0xF0, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00, 0x70, 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 f251dbe..0000000
--- a/app/bin/bitmaps/l90.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l90_width 14
-#define l90_height 16
-static char l90_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x18,
- 0xA1, 0x14, 0xBE, 0x12, 0xA0, 0x11, 0xA0, 0x10, 0x90, 0x10, 0x0E, 0x0F,
- 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 4df09a2..0000000
--- a/app/bin/bitmaps/l91.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l91_width 14
-#define l91_height 16
-static char l91_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x04, 0x21, 0x06, 0x21, 0x05,
- 0xA1, 0x04, 0x3E, 0x04, 0x20, 0x04, 0x20, 0x04, 0x10, 0x04, 0x0E, 0x04,
- 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 16a5631..0000000
--- a/app/bin/bitmaps/l92.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l92_width 14
-#define l92_height 16
-static char l92_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0x21, 0x08, 0x3E, 0x04, 0x20, 0x02, 0x20, 0x01, 0x90, 0x00, 0x8E, 0x1F,
- 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 72515dd..0000000
--- a/app/bin/bitmaps/l93.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l93_width 14
-#define l93_height 16
-static char l93_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0x21, 0x10,
- 0x21, 0x10, 0x3E, 0x0E, 0x20, 0x10, 0x20, 0x10, 0x90, 0x10, 0x0E, 0x0F,
- 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 5732695..0000000
--- a/app/bin/bitmaps/l94.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l94_width 14
-#define l94_height 16
-static char l94_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x08, 0x21, 0x0C, 0x21, 0x0A,
- 0x21, 0x09, 0xBE, 0x08, 0xA0, 0x1F, 0x20, 0x08, 0x10, 0x08, 0x0E, 0x08,
- 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 33560b1..0000000
--- a/app/bin/bitmaps/l95.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l95_width 14
-#define l95_height 16
-static char l95_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0xA1, 0x00, 0xA1, 0x00,
- 0xA1, 0x0F, 0x3E, 0x10, 0x20, 0x10, 0x20, 0x10, 0x90, 0x10, 0x0E, 0x0F,
- 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 a959a68..0000000
--- a/app/bin/bitmaps/l96.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l96_width 14
-#define l96_height 16
-static char l96_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x00, 0xA1, 0x00,
- 0xA1, 0x0F, 0xBE, 0x10, 0xA0, 0x10, 0xA0, 0x10, 0x90, 0x10, 0x0E, 0x0F,
- 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 1cd2c1e..0000000
--- a/app/bin/bitmaps/l97.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l97_width 14
-#define l97_height 16
-static char l97_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x1F, 0x21, 0x10, 0x21, 0x08,
- 0x21, 0x08, 0x3E, 0x04, 0x20, 0x04, 0x20, 0x02, 0x10, 0x02, 0x0E, 0x02,
- 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 bad329d..0000000
--- a/app/bin/bitmaps/l98.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l98_width 14
-#define l98_height 16
-static char l98_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0xA1, 0x10, 0x3E, 0x0F, 0xA0, 0x10, 0xA0, 0x10, 0x90, 0x10, 0x0E, 0x0F,
- 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 53b1b0e..0000000
--- a/app/bin/bitmaps/l99.xbm
+++ /dev/null
@@ -1,6 +0,0 @@
-#define l99_width 14
-#define l99_height 16
-static char l99_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0xA1, 0x10, 0xA1, 0x10,
- 0xA1, 0x10, 0x3E, 0x1F, 0x20, 0x10, 0x20, 0x10, 0x10, 0x08, 0x0E, 0x07,
- 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/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 99a31db..0000000
--- a/app/bin/bitmaps/magnet.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * magnet_xpm[] = {
-"16 16 3 1",
-" c #FF0000",
-". c None",
-"X c #FFFF00",
-"................",
-"........ ......",
-"....... ....",
-"...... ...",
-"..... ..",
-"..... . .",
-".... ... .",
-"... ... .",
-"..XXX ... ..",
-".XXXXX... ..",
-"..XXXX.. ...",
-"...XX..XX ....",
-"......XXXXX ....",
-"......XXXXX.....",
-"........XX......",
-"................"};
diff --git a/app/bin/bitmaps/magnifier.xpm b/app/bin/bitmaps/magnifier.xpm
deleted file mode 100644
index 69a3faa..0000000
--- a/app/bin/bitmaps/magnifier.xpm
+++ /dev/null
@@ -1,89 +0,0 @@
-/* XPM */
-static char * magnifier_xpm[] = {
-"16 16 70 1",
-" c None",
-". c #545454",
-"+ c #555555",
-"@ c #515151",
-"# c #5E6063",
-"$ c #94A3B1",
-"% c #C5D5E6",
-"& c #DFEAF4",
-"* c #D9E3ED",
-"= c #A2ACB6",
-"- c #4D4D4D",
-"; c #5A5D5F",
-"> c #AEC1D5",
-", c #C4D8EB",
-"' c #E2ECF6",
-") c #E4EDF6",
-"! c #B8C8D9",
-"~ c #5B5D60",
-"{ c #494949",
-"] c #919FAD",
-"^ c #BBD2E8",
-"/ c #D5E3F1",
-"( c #D6E4F2",
-"_ c #97A4B0",
-": c #434343",
-"< c #B6CBE0",
-"[ c #C1D3E4",
-"} c #3E3E3E",
-"| c #BED4E9",
-"1 c #C8DBED",
-"2 c #383838",
-"3 c #BCCFE1",
-"4 c #CAD8E7",
-"5 c #313131",
-"6 c #939DA8",
-"7 c #BFD5EA",
-"8 c #DFE9F5",
-"9 c #9EA6AD",
-"0 c #373737",
-"a c #444647",
-"b c #C4D1DE",
-"c c #D9E6F3",
-"d c #E6EFF7",
-"e c #D3D9DF",
-"f c #3B3C3D",
-"g c #262626",
-"h c #3B3B3B",
-"i c #3C3C3C",
-"j c #ADADAF",
-"k c #28292B",
-"l c #91979D",
-"m c #E3E8EE",
-"n c #EDF3F9",
-"o c #E5EAEF",
-"p c #9EA0A3",
-"q c #282829",
-"r c #464647",
-"s c #B8B8BC",
-"t c #151516",
-"u c #141414",
-"v c #3D3D3D",
-"w c #515153",
-"x c #C4C4CC",
-"y c #212122",
-"z c #606064",
-"A c #D1D1DD",
-"B c #2E2E30",
-"C c #DADAEA",
-"D c #3F3F43",
-"E c #151515",
-" .+++++. ",
-" @#$%&*=#@ ",
-" -;>,'))'!~-",
-" {]^/))))(_{",
-" :<^^^^^^^[:",
-" }|^^)))))1}",
-" 23^))))))42",
-" 5678))))'95",
-" 0abc)))defg",
-" hijklmnopq ",
-" irst uuuuu ",
-" vwxy ",
-" }zAB ",
-" 0CD ",
-" Eu ",
-" "};
diff --git a/app/bin/bitmaps/map.xpm b/app/bin/bitmaps/map.xpm
deleted file mode 100644
index 5d47930..0000000
--- a/app/bin/bitmaps/map.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static char * map_xpm[] = {
-"16 16 5 1",
-"o c None",
-" c #000000000000",
-". c #FFFFFFFFFFFF",
-"X c #0000FFFFFFFF",
-"Y c #FFFF7DF70000",
-"................",
-". ...... .....",
-". . .... . ....",
-". .. .. .. . ...",
-". YY. ... .. ..",
-". .YY. ... ... .",
-". X.YY ..X ... .",
-". XX.Y YXX X.. .",
-". .XX. YYY YX. .",
-". ..XX XX. YYX .",
-". ...X X.. .YY .",
-". ... .. ... .",
-".. .. . . .. .",
-"... . ... . .",
-".... ..... .",
-"................"};
diff --git a/app/bin/bitmaps/move.xpm b/app/bin/bitmaps/move.xpm
deleted file mode 100644
index ab90555..0000000
--- a/app/bin/bitmaps/move.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * move_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #0000FFFFFFFF",
-"X c #000000000000",
-"o c #FFFF00000000",
-" . . X X ",
-"...... XXXXXX ",
-" . . X X ",
-" . . o X X ",
-" . . oX X ",
-"...... XoXXXX ",
-" . . Xo X ",
-" . oooooooooXX ",
-" . . Xo X ",
-"...... XoXXXX ",
-" . . oX X ",
-" . . o X X ",
-" . . X X ",
-"...... XXXXXX ",
-" . . X X ",
-" "};
diff --git a/app/bin/bitmaps/movedesc.xpm b/app/bin/bitmaps/movedesc.xpm
deleted file mode 100644
index 520cfd6..0000000
--- a/app/bin/bitmaps/movedesc.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * movedesc_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-"o c #0000FFFFFFFF",
-" .. .. .. .. ",
-" . . . . . ",
-" . . .. .. . ",
-" . . . . . ",
-" .. ..X.. .. ",
-" XXX ",
-" X X X ",
-" X X X ",
-" X ",
-" . . X . ",
-"..oo..ooX o.oo..",
-" .o o o Xo o. ",
-" .o o ooXoo o. ",
-" .o o o X o o. ",
-"..oo..oo.oo.oo..",
-" . . . . "};
diff --git a/app/bin/bitmaps/newcar.xpm b/app/bin/bitmaps/newcar.xpm
deleted file mode 100644
index e1bc24a..0000000
--- a/app/bin/bitmaps/newcar.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * newcar_xpm[] = {
-"16 16 4 1",
-". c None",
-"X c #800080008000",
-"o c #000000000000",
-" c #FFFFFFFF0000",
-" ...X. X.X.... ",
-"oooo... ..XX. ",
-".. o... ...X .",
-"...o ..o ..X ..",
-"...o ooo. oo...",
-"...o. ooo oo...",
-"oooooooooooooo ",
-"oooooooooooooo ",
-"oooooooooooooo..",
-"oooooooooooooooo",
-"oooooooooooooooo",
-"...oo.. oo ...o",
-"..oooo.oooo ..o",
-". oooo.oooo. o.",
-" .oo.. oo...oo.",
-" ...... ..... "};
diff --git a/app/bin/bitmaps/note.xpm b/app/bin/bitmaps/note.xpm
new file mode 100644
index 0000000..51bf8c7
--- /dev/null
+++ b/app/bin/bitmaps/note.xpm
@@ -0,0 +1,114 @@
+static char *note_x16[] = {
+ "16 16 10 1",
+ " c None",
+ "0 c #000000",
+ "1 c #0066CC",
+ "2 c #999999",
+ "3 c #CC9900",
+ "4 c #CC9933",
+ "5 c #CC9999",
+ "6 c #FFCC00",
+ "7 c #FFCC33",
+ "8 c #FFCC66",
+ " ",
+ " ",
+ " ",
+ " 444444444444 ",
+ " 46666666666344 ",
+ " 46888888886664 ",
+ " 47222222227664 ",
+ " 46522222566664 ",
+ " 46788888866664 ",
+ " 47111111117664 ",
+ " 46666666666664 ",
+ " 46666666666664 ",
+ " 47777777777774 ",
+ " ",
+ " ",
+ " "};
+
+static char *note_x24[] = {
+ "24 24 10 1",
+ " c None",
+ "0 c #000000",
+ "1 c #999999",
+ "2 c #CC9900",
+ "3 c #CC9933",
+ "4 c #CC9999",
+ "5 c #CCCC66",
+ "6 c #FFCC00",
+ "7 c #FFCC33",
+ "8 c #FFCC66",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " 37777777777333333 ",
+ " 3666666666666666233 ",
+ " 36666666666666662223 ",
+ " 36788888888888766663 ",
+ " 36411111111111566663 ",
+ " 36666666666666666663 ",
+ " 36611111111156666663 ",
+ " 36688888888876666663 ",
+ " 36844444444444866663 ",
+ " 36544444444444566663 ",
+ " 36666666666666666663 ",
+ " 36666666666666666663 ",
+ " 36666666666666666663 ",
+ " 37777777777777777773 ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "};
+
+static char *note_x32[] = {
+ "32 32 11 1",
+ " c None",
+ "0 c #000000",
+ "1 c #0066CC",
+ "2 c #3399CC",
+ "3 c #999999",
+ "4 c #CC9900",
+ "5 c #CC9933",
+ "6 c #CCCC00",
+ "7 c #FFCC00",
+ "8 c #FFCC33",
+ "9 c #FFCC66",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " 55555555 ",
+ " 57777778888888888888855 ",
+ " 877777777777777777777445 ",
+ " 8777777777777777777774445 ",
+ " 87777777777777777777774465 ",
+ " 87799999999999999997777775 ",
+ " 87833333333333333337777775 ",
+ " 87777777777777777777777775 ",
+ " 87777777777777777777777775 ",
+ " 87782111111111128777777775 ",
+ " 87777777777777777777777775 ",
+ " 87777777777777777777777775 ",
+ " 87833333333333333337777775 ",
+ " 87799999999999999997777775 ",
+ " 87777777777777777777777775 ",
+ " 87777777777777777777777775 ",
+ " 87777777777777777777777775 ",
+ " 87777777777777777777777775 ",
+ " 58888887777777777777777775 ",
+ " 55555555555555555555 ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "};
+
+static char *note_xpm[3] = { note_x16, note_x24, note_x32 };
+
diff --git a/app/bin/bitmaps/openbutt.xpm b/app/bin/bitmaps/openbutt.xpm
deleted file mode 100644
index 99b9666..0000000
--- a/app/bin/bitmaps/openbutt.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * openbutt_xpm[] = {
-"7 16 2 1",
-" c None",
-". c #000000000000",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-".......",
-" ..... ",
-" ... ",
-" . ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/app/bin/bitmaps/pan.xpm b/app/bin/bitmaps/pan.xpm
deleted file mode 100644
index 9575ec5..0000000
--- a/app/bin/bitmaps/pan.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * pan_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" XX ",
-" XXXX ",
-" XXXXXX. ",
-" XX XX XX ",
-" XX ",
-" XX XX XX ",
-" XXXXXXXXXXXXXX ",
-" XXXXXXXXXXXXXX ",
-" XX XX XX ",
-" XX ",
-" XX XX XX ",
-" XXXXXX ",
-" XXXX ",
-" XX ",
-" "};
diff --git a/app/bin/bitmaps/parallel-line.xpm b/app/bin/bitmaps/parallel-line.xpm
deleted file mode 100644
index 4ac471d..0000000
--- a/app/bin/bitmaps/parallel-line.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * parallel_line_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" ",
-" ",
-"................",
-" X ",
-" X X ",
-" X X ",
-" ",
-" ",
-" . . . ",
-"................",
-" . . . ",
-" . . . ",
-" . . . ",
-"................",
-" . . . "};
diff --git a/app/bin/bitmaps/parallel.xpm b/app/bin/bitmaps/parallel.xpm
deleted file mode 100644
index eb816dc..0000000
--- a/app/bin/bitmaps/parallel.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * parallel_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-"................",
-" . . . ",
-" . . . ",
-"................",
-" . X . ",
-" X X ",
-" X X ",
-" ",
-" ",
-" . . . ",
-"................",
-" . . . ",
-" . . . ",
-" . . . ",
-"................",
-" . . . "};
diff --git a/app/bin/bitmaps/pause.xpm b/app/bin/bitmaps/pause.xpm
new file mode 100644
index 0000000..da61446
--- /dev/null
+++ b/app/bin/bitmaps/pause.xpm
@@ -0,0 +1,147 @@
+static char* pause_x16[] = {
+ "16 16 20 1",
+ " c None",
+ "0 c #000000",
+ "1 c #003300",
+ "2 c #003333",
+ "3 c #006633",
+ "4 c #009966",
+ "5 c #333333",
+ "6 c #336633",
+ "7 c #336666",
+ "8 c #339966",
+ "9 c #33CC99",
+ "A c #666666",
+ "B c #66CC99",
+ "C c #99CC99",
+ "D c #99CCCC",
+ "E c #CCCCCC",
+ "F c #CCFFCC",
+ "G c #CCFFFF",
+ "H c #FFFFFF",
+ "I c #808080",
+ " 0 ",
+ " 00000 ",
+ " 01133300 ",
+ " 001688887210 ",
+ " 01688888888821 ",
+ " 07CCCCDDDDDDC5 ",
+ " 0AEEEEEEEEEEE5 ",
+ " 0IHHHHHHHHHHG5 ",
+ " 0IHHHHHHHHHHG5 ",
+ " 0AFFFFFFFFFFD5 ",
+ " 07DDDDDDDDDDC2 ",
+ " 05BBBBBBBBBBB2 ",
+ " 128BBBBBB9720 ",
+ " 0128999810 ",
+ " 0134210 ",
+ " 020 "};
+
+static char* pause_x24[] = {
+ "24 24 22 1",
+ " c None",
+ "0 c #000000",
+ "1 c #003300",
+ "2 c #003333",
+ "3 c #006633",
+ "4 c #009966",
+ "5 c #333333",
+ "6 c #336633",
+ "7 c #336666",
+ "8 c #339966",
+ "9 c #33CC66",
+ "A c #33CC99",
+ "B c #666666",
+ "C c #669999",
+ "D c #66CC99",
+ "E c #99CCCC",
+ "F c #99FFCC",
+ "G c #CCCCCC",
+ "H c #CCFFCC",
+ "I c #CCFFFF",
+ "J c #FFFFFF",
+ "K c #808080",
+ " ",
+ " 000 ",
+ " 0012000 ",
+ " 0003333300 ",
+ " 0036777773210 ",
+ " 01278888888887100 ",
+ " 01278888888888888710 ",
+ " 05CCCCCCCCCCCCCCCCC0 ",
+ " 07EEEEEEEEEEEEEEEEE0 ",
+ " 0BGGGGGGGGGGGGGGGGG0 ",
+ " 0BIIIIIIIIIIIIIIIII0 ",
+ " 0KJJJJJJJJJJJJJJJJJ0 ",
+ " 0KJJJJJJJJJJJJJJJJJ0 ",
+ " 0BHHHHHHHHHHHHHHHHH0 ",
+ " 0BFFFFFFFFFFFFFFFFF0 ",
+ " 07EEEEEEEEEEEEEEEEE0 ",
+ " 07DDDDDDDDDDDDDDDDD0 ",
+ " 02DDDDDDDDDDDDDDDDC1 ",
+ " 027DDDDDDDDDDDDA620 ",
+ " 028AAAAAAAAA720 ",
+ " 0128AAAA9811 ",
+ " 013894110 ",
+ " 01210 ",
+ " 0 "};
+
+static char* pause_x32[] = {
+ "32 32 22 1",
+ " c None",
+ "0 c #000000",
+ "1 c #003300",
+ "2 c #003333",
+ "3 c #006633",
+ "4 c #009966",
+ "5 c #333333",
+ "6 c #336633",
+ "7 c #336666",
+ "8 c #339966",
+ "9 c #339999",
+ "A c #33CC66",
+ "B c #33CC99",
+ "C c #669966",
+ "D c #66CC99",
+ "E c #99CC99",
+ "F c #99CCCC",
+ "G c #99FFCC",
+ "H c #CCCCCC",
+ "I c #CCFFCC",
+ "J c #CCFFFF",
+ "K c #FFFFFF",
+ " ",
+ " ",
+ " 00000 ",
+ " 0023300 ",
+ " 00233333200 ",
+ " 011333333333210 ",
+ " 0013777777777776100 ",
+ " 006888888888888888600 ",
+ " 0168888888888888888888210 ",
+ " 018CCCCCCCCCCCCCCCCCCCCC810 ",
+ " 05EEEEEEEEEEEEEEEEEEEEEEE50 ",
+ " 05FFFFFFFFFFFFFFFFFFFFFFF50 ",
+ " 05HHHHHHHHHHHHHHHHHHHHHHH50 ",
+ " 05IIIIIIIIIIIIIIIIIIIIIII50 ",
+ " 05KKKKKKKKKKKKKKKKKKKKKKK50 ",
+ " 05KKKKKKKKKKKKKKKKKKKKKKK50 ",
+ " 06KKKKKKKKKKKKKKKKKKKKKKK60 ",
+ " 05JJJJJJJJJJJJJJJJJJJJJJJ50 ",
+ " 05IIIIIIIIIIIIIIIIIIIIIII50 ",
+ " 05GGGGGGGGGGGGGGGGGGGGGGG50 ",
+ " 05FFFFFFFFFFFFFFFFFFFFFFF50 ",
+ " 05FFFFFFFFFFFFFFFFFFFFFFF50 ",
+ " 05DDDDDDDDDDDDDDDDDDDDDDD50 ",
+ " 028DDDDDDDDDDDDDDDDDDDDD820 ",
+ " 0228DDDDDDDDDDDDDDDDD9220 ",
+ " 026BBBBBBBBBBBBBBB620 ",
+ " 028BBBBBBBBBBB820 ",
+ " 128AAAAAAA821 ",
+ " 0128AAA4210 ",
+ " 0134310 ",
+ " 010 ",
+ " "};
+
+static char *pause_xpm[3] = { pause_x16, pause_x24, pause_x32 };
+
diff --git a/app/bin/bitmaps/png/circle-center16.png b/app/bin/bitmaps/png/circle-center16.png
new file mode 100644
index 0000000..062560d
--- /dev/null
+++ b/app/bin/bitmaps/png/circle-center16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/circle-tangent16.png b/app/bin/bitmaps/png/circle-tangent16.png
new file mode 100644
index 0000000..0dc831b
--- /dev/null
+++ b/app/bin/bitmaps/png/circle-tangent16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/circle16.png b/app/bin/bitmaps/png/circle16.png
new file mode 100644
index 0000000..eaecd31
--- /dev/null
+++ b/app/bin/bitmaps/png/circle16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/curved-chord16.png b/app/bin/bitmaps/png/curved-chord16.png
new file mode 100644
index 0000000..0068d1a
--- /dev/null
+++ b/app/bin/bitmaps/png/curved-chord16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/curved-end16.png b/app/bin/bitmaps/png/curved-end16.png
new file mode 100644
index 0000000..49dcee3
--- /dev/null
+++ b/app/bin/bitmaps/png/curved-end16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/curved-middle16.png b/app/bin/bitmaps/png/curved-middle16.png
new file mode 100644
index 0000000..d23a6a2
--- /dev/null
+++ b/app/bin/bitmaps/png/curved-middle16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/curved-tangent16.png b/app/bin/bitmaps/png/curved-tangent16.png
new file mode 100644
index 0000000..6d8fcfe
--- /dev/null
+++ b/app/bin/bitmaps/png/curved-tangent16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/description16.png b/app/bin/bitmaps/png/description16.png
new file mode 100644
index 0000000..9bd679c
--- /dev/null
+++ b/app/bin/bitmaps/png/description16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/description24.png b/app/bin/bitmaps/png/description24.png
new file mode 100644
index 0000000..e273ed5
--- /dev/null
+++ 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/png/elevation16.png b/app/bin/bitmaps/png/elevation16.png
new file mode 100644
index 0000000..9121d56
--- /dev/null
+++ b/app/bin/bitmaps/png/elevation16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/exit16.png b/app/bin/bitmaps/png/exit16.png
new file mode 100644
index 0000000..ba227c3
--- /dev/null
+++ b/app/bin/bitmaps/png/exit16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/exit24.png b/app/bin/bitmaps/png/exit24.png
new file mode 100644
index 0000000..d3ebf2f
--- /dev/null
+++ 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/png/palette.png b/app/bin/bitmaps/png/palette.png
new file mode 100644
index 0000000..efcf3d3
--- /dev/null
+++ b/app/bin/bitmaps/png/palette.png
Binary files differ
diff --git a/app/bin/bitmaps/png/pan-zoom16.png b/app/bin/bitmaps/png/pan-zoom16.png
new file mode 100644
index 0000000..04d18f7
--- /dev/null
+++ b/app/bin/bitmaps/png/pan-zoom16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/pan-zoom24.png b/app/bin/bitmaps/png/pan-zoom24.png
new file mode 100644
index 0000000..67ab631
--- /dev/null
+++ 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/png/select16.png b/app/bin/bitmaps/png/select16.png
new file mode 100644
index 0000000..39605d1
--- /dev/null
+++ b/app/bin/bitmaps/png/select16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/snap-curs16.png b/app/bin/bitmaps/png/snap-curs16.png
new file mode 100644
index 0000000..acf8f66
--- /dev/null
+++ b/app/bin/bitmaps/png/snap-curs16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/snap-curs24.png b/app/bin/bitmaps/png/snap-curs24.png
new file mode 100644
index 0000000..15154a2
--- /dev/null
+++ b/app/bin/bitmaps/png/snap-curs24.png
Binary files differ
diff --git a/app/bin/bitmaps/png/snap-grid16.png b/app/bin/bitmaps/png/snap-grid16.png
new file mode 100644
index 0000000..381b451
--- /dev/null
+++ b/app/bin/bitmaps/png/snap-grid16.png
Binary files differ
diff --git a/app/bin/bitmaps/png/snap-grid24.png b/app/bin/bitmaps/png/snap-grid24.png
new file mode 100644
index 0000000..3073985
--- /dev/null
+++ 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/profile.xpm b/app/bin/bitmaps/profile.xpm
deleted file mode 100644
index df22abe..0000000
--- a/app/bin/bitmaps/profile.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static char * profile_xpm[] = {
-"16 16 5 1",
-" c None",
-". c #FFFF00000000",
-"X c #0000FFFFFFFF",
-"o c #00000000FFFF",
-"O c #000000000000",
-" ",
-" . ",
-" .Xo ",
-" .Xo ",
-" .XXXo o ",
-".XXXXo .Xo",
-"OXXXXXo .XO",
-"OXXXXXo .XXO",
-"OXXXXXXo .XXXO",
-"OXXXXXXXo .XXXXO",
-"OXXXXXXXXoXXXXXO",
-"OXXXXXXXXXXXXXXO",
-"OXXXXXXXXXXXXXXO",
-"OOOOOOOOOOOOOOOO",
-" O O O ",
-" O O O "};
diff --git a/app/bin/bitmaps/pull.xpm b/app/bin/bitmaps/pull.xpm
deleted file mode 100644
index a25248e..0000000
--- a/app/bin/bitmaps/pull.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * pull_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #0000FFFFFFFF",
-"X c #FFFF00000000",
-"o c #000000000000",
-" . . . . ",
-"...... ......",
-" . . . . ",
-" . . . . ",
-"...... ......",
-" . . . . ",
-" X X ",
-" XX XX ",
-"XXXXXXX XXXXXXX",
-" XX XX ",
-" o X o Xo ",
-"ooo oooo oooo oo",
-" o o o ",
-" o o o ",
-"oo oooo oooo ooo",
-" o o o "};
diff --git a/app/bin/bitmaps/rotate.xpm b/app/bin/bitmaps/rotate.xpm
deleted file mode 100644
index 00b6b5a..0000000
--- a/app/bin/bitmaps/rotate.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * rotate_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #0000FFFFFFFF",
-"X c #FFFF00000000",
-"o c #000000000000",
-" . .XX ",
-"....... XX ",
-" . . XX ",
-" . . X X",
-"....... o X X",
-" . . XX",
-" . . o XXXX",
-"....... ",
-" . . o ",
-" .o o o o o ",
-".ooooooooooooooo",
-" .o o o o o ",
-" .oo o o o o ",
-"..o..o. o o o ",
-" ooooooooooooooo",
-" o o o o o "};
diff --git a/app/bin/bitmaps/ruler.xpm b/app/bin/bitmaps/ruler.xpm
deleted file mode 100644
index 55d4842..0000000
--- a/app/bin/bitmaps/ruler.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * ruler_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000000000",
-" .. ",
-" . ",
-" . ",
-" . . ",
-" . ... ",
-" . ",
-". ",
-". ",
-" .. ",
-" .. . . ",
-" .. . ",
-" .. . ",
-" .. . ",
-" .. ",
-" .. ",
-" ."};
diff --git a/app/bin/bitmaps/select.xpm b/app/bin/bitmaps/select.xpm
deleted file mode 100644
index c630541..0000000
--- a/app/bin/bitmaps/select.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * select_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" ",
-" . . . . ",
-"................",
-" . . . . ",
-" . . . ",
-" . XX . ",
-"... XXXXXX ..",
-" . XXXXXXXX . ",
-" XXXXXXXX ",
-" XXXXXXX ",
-" XXXXXX ",
-" XXXXXX ",
-" XXX XXX ",
-" XX XXX ",
-" XXX ",
-" X "};
diff --git a/app/bin/bitmaps/sensor.xpm b/app/bin/bitmaps/sensor.xpm
deleted file mode 100644
index 6ed65a3..0000000
--- a/app/bin/bitmaps/sensor.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * sensor_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #00FFFF",
-"+ c #FFFFFF",
-" ",
-" ",
-" ..... ",
-" +.......+ ",
-" +++.....+++ ",
-" .+++...+++. ",
-" ...+++.+++... ",
-" ....+++++.... ",
-" .....+++..... ",
-" ....+++++.... ",
-" ...+++.+++... ",
-" .+++...+++. ",
-" +++.....+++ ",
-" +.......+ ",
-" ..... ",
-" "};
diff --git a/app/bin/bitmaps/signal.xpm b/app/bin/bitmaps/signal.xpm
deleted file mode 100644
index 521adad..0000000
--- a/app/bin/bitmaps/signal.xpm
+++ /dev/null
@@ -1,25 +0,0 @@
-/* XPM */
-static char * signal_xpm[] = {
-"16 16 6 1",
-" c None",
-". c #000000",
-"+ c #3A000B",
-"@ c #C90328",
-"# c #D9032B",
-"$ c #F30431",
-" .. ",
-" .... ",
-" .+$@+. ",
-" .#$$#. ",
-" .+$@+. ",
-" .... ",
-" .. ",
-" .. ",
-" .. ",
-" .. ",
-" .. ",
-" .. ",
-" .. ",
-" .. ",
-" ............ ",
-" ............ "};
diff --git a/app/bin/bitmaps/snapcurs.xbm b/app/bin/bitmaps/snapcurs.xbm
deleted file mode 100644
index 06db450..0000000
--- a/app/bin/bitmaps/snapcurs.xbm
+++ /dev/null
@@ -1,7 +0,0 @@
-#define snapcurs_width 16
-#define snapcurs_height 16
-// static unsigned char snapcurs_bits[] = {
-static char snapcurs_bits[] = {
- 0x00, 0x00, 0x44, 0x44, 0xaa, 0xaa, 0xfc, 0x40, 0xf8, 0x07, 0xfc, 0x47,
- 0xfa, 0xab, 0xfc, 0x45, 0xf0, 0x03, 0x74, 0x47, 0xb2, 0xae, 0x44, 0x5c,
- 0x00, 0x08, 0x44, 0x44, 0xaa, 0xaa, 0x44, 0x44};
diff --git a/app/bin/bitmaps/snapvis.xbm b/app/bin/bitmaps/snapvis.xbm
deleted file mode 100644
index cab6ee5..0000000
--- a/app/bin/bitmaps/snapvis.xbm
+++ /dev/null
@@ -1,7 +0,0 @@
-#define snapvis_width 16
-#define snapvis_height 16
-// static unsigned char snapvis_bits[] = {
-static char snapvis_bits[] = {
- 0x44, 0x44, 0x44, 0x44, 0xff, 0xff, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
- 0xff, 0xff, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xff, 0xff, 0x44, 0x44,
- 0x44, 0x44, 0x44, 0x44, 0xff, 0xff, 0x44, 0x44};
diff --git a/app/bin/bitmaps/splittrk.xpm b/app/bin/bitmaps/splittrk.xpm
deleted file mode 100644
index 3a03c77..0000000
--- a/app/bin/bitmaps/splittrk.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * splittrk_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000000000",
-"X c #FFFF00000000",
-" . . ",
-" . ",
-" X . . .",
-" X . . . ",
-" X . . .",
-" XXXX . . . ",
-" . ",
-" . . ",
-" . . ",
-" . ",
-" . . . XXXX ",
-". . . X ",
-" . . . X ",
-". . . X ",
-" . ",
-" . . "};
diff --git a/app/bin/bitmaps/sticky-note-chain.xpm b/app/bin/bitmaps/sticky-note-chain.xpm
deleted file mode 100644
index aa9445a..0000000
--- a/app/bin/bitmaps/sticky-note-chain.xpm
+++ /dev/null
@@ -1,84 +0,0 @@
-/* XPM */
-static char * sticky_note_chain_bits[] = {
-"16 16 65 1",
-" c None",
-". c #CCB301",
-"+ c #CAB101",
-"@ c #FBEF9C",
-"# c #F9EB8F",
-"$ c #F8EA8D",
-"% c #F8E98A",
-"& c #F6E785",
-"* c #F3E37C",
-"= c #F0E074",
-"- c #EEDD6F",
-"; c #D5C44D",
-"> c #C8AF01",
-", c #FBED95",
-"' c #F7E67E",
-") c #F6E57C",
-"! c #F5E47B",
-"~ c #F4E379",
-"{ c #F1E075",
-"] c #ECDB70",
-"^ c #E8D76A",
-"/ c #E6D567",
-"( c #CDBC45",
-"_ c #FFF6BB",
-": c #C6AD01",
-"< c #FCEB84",
-"[ c #B7A73A",
-"} c #BFAE37",
-"| c #AC9401",
-"1 c #C3AA01",
-"2 c #FBED97",
-"3 c #EEDD7B",
-"4 c #9D96F6",
-"5 c #E1D26F",
-"6 c #C0A701",
-"7 c #006E6E",
-"8 c #00FFFF",
-"9 c #BCA401",
-"0 c #AFA358",
-"a c #ADA054",
-"b c #B9A101",
-"c c #B59E01",
-"d c #FEF19E",
-"e c #EDDD7C",
-"f c #E5D575",
-"g c #E5D571",
-"h c #B29A01",
-"i c #FFF2A1",
-"j c #FEED87",
-"k c #FDEC86",
-"l c #FDEC85",
-"m c #FBEA82",
-"n c #FAE981",
-"o c #F8E77F",
-"p c #A89100",
-"q c #FFF4AF",
-"r c #FFF1A0",
-"s c #FDF09C",
-"t c #FDEF9B",
-"u c #FCEE99",
-"v c #FAEC92",
-"w c #F9EA90",
-"x c #FAEC96",
-"y c #9D8600",
-"z c #9C8500",
-" ",
-" ",
-" ........... ",
-" +@#$%&*=--;+ ",
-" >,')!~{]^/(_> ",
-" :<<<<<<<<<[}}| ",
-" 1234445444''-1 ",
-" 647887478874-6 ",
-" 94800878a084=9 ",
-" b47887478874*b ",
-" cde444f444g{&c ",
-" hijkl<mno')!%h ",
-" pqirdstu2,vwxp ",
-" yzzzzzzzzzzzzy ",
-" ",
-" "};
diff --git a/app/bin/bitmaps/sticky-note-clip.xpm b/app/bin/bitmaps/sticky-note-clip.xpm
deleted file mode 100644
index c74c64d..0000000
--- a/app/bin/bitmaps/sticky-note-clip.xpm
+++ /dev/null
@@ -1,99 +0,0 @@
-/* XPM */
-static char * sticky_note_clip_bits[] = {
-"16 16 80 1",
-" c None",
-". c #CCB301",
-"+ c #CAB101",
-"@ c #FBEF9C",
-"# c #F9EB8F",
-"$ c #F8EA8D",
-"% c #F8E98A",
-"& c #F7E992",
-"* c #EDE1A3",
-"= c #555753",
-"- c #DFCF67",
-"; c #D5C44D",
-"> c #C8AF01",
-", c #FBED95",
-"' c #F7E67E",
-") c #F6E57C",
-"! c #F6E68A",
-"~ c #ECE0A0",
-"{ c #BABDB6",
-"] c #EFE3A7",
-"^ c #CDBC45",
-"/ c #FFF6BB",
-"( c #C6AD01",
-"_ c #FBED97",
-": c #F8E77F",
-"< c #F8E88D",
-"[ c #EDE0A0",
-"} c #F5E68F",
-"| c #F0E39B",
-"1 c #888A85",
-"2 c #BFAE37",
-"3 c #AC9401",
-"4 c #C3AA01",
-"5 c #FCEE99",
-"6 c #F7E78B",
-"7 c #EBDE9C",
-"8 c #F8EBA2",
-"9 c #ECDB70",
-"0 c #E8D76A",
-"a c #E6D567",
-"b c #EEDD6F",
-"c c #C0A701",
-"d c #FDF0A5",
-"e c #DCD695",
-"f c #EAE29B",
-"g c #E8E098",
-"h c #DACB69",
-"i c #BCA401",
-"j c #FDF3B6",
-"k c #B9A101",
-"l c #FEF4B7",
-"m c #E0D986",
-"n c #F5E47B",
-"o c #F4E379",
-"p c #F1E075",
-"q c #F3E37C",
-"r c #B59E01",
-"s c #FFF3B4",
-"t c #DECF6F",
-"u c #F4E47D",
-"v c #F5E47C",
-"w c #F6E785",
-"x c #B29A01",
-"y c #FFF2A3",
-"z c #FBEDA4",
-"A c #F0E07C",
-"B c #F3E27C",
-"C c #F5E47D",
-"D c #A89100",
-"E c #FFF4AF",
-"F c #FFF2A1",
-"G c #FFF1A0",
-"H c #FEF19E",
-"I c #FDF09C",
-"J c #FDEF9B",
-"K c #FAEC92",
-"L c #F9EA90",
-"M c #FAEC96",
-"N c #9D8600",
-"O c #9C8500",
-" ",
-" ",
-" ........... ",
-" +@#$%&*==-;+ ",
-" >,')!~={]=^/> ",
-" (_:<[=}=|1{223 ",
-" 4567=8=8=90ab4 ",
-" cde=f=g=}h90bc ",
-" ij1818=8={)))i ",
-" kl=m=1f={nopqk ",
-" rs1t)8={uvnowr ",
-" xyz1=1{ABC)n%x ",
-" DEFGHIJ5_,KLMD ",
-" NOOOOOOOOOOOON ",
-" ",
-" "};
diff --git a/app/bin/bitmaps/sticky-note-text.xpm b/app/bin/bitmaps/sticky-note-text.xpm
deleted file mode 100644
index 119f39b..0000000
--- a/app/bin/bitmaps/sticky-note-text.xpm
+++ /dev/null
@@ -1,86 +0,0 @@
-/* XPM */
-static char * sticky_note_text_bits[] = {
-"16 16 67 1",
-" c None",
-". c #CCB301",
-"+ c #CAB101",
-"@ c #FBEF9C",
-"# c #F9EB8F",
-"$ c #F8EA8D",
-"% c #F8E98A",
-"& c #F6E785",
-"* c #F3E37C",
-"= c #F0E074",
-"- c #EEDD6F",
-"; c #D5C44D",
-"> c #C8AF01",
-", c #FBED95",
-"' c #F7E67E",
-") c #F6E57C",
-"! c #F5E47B",
-"~ c #F4E379",
-"{ c #F1E075",
-"] c #ECDB70",
-"^ c #E8D76A",
-"/ c #E6D567",
-"( c #CDBC45",
-"_ c #FFF6BB",
-": c #C6AD01",
-"< c #FBED97",
-"[ c #F8E77F",
-"} c #BFAE37",
-"| c #AC9401",
-"1 c #C3AA01",
-"2 c #FCEE99",
-"3 c #7E7E7E",
-"4 c #979797",
-"5 c #C0A701",
-"6 c #FDEF9B",
-"7 c #E5DC75",
-"8 c #E4DB73",
-"9 c #E4DA70",
-"0 c #E3D86D",
-"a c #E2D769",
-"b c #EBDC70",
-"c c #BCA401",
-"d c #FDF09D",
-"e c #B9A101",
-"f c #FEF19E",
-"g c #E5DD77",
-"h c #EDDF75",
-"i c #B59E01",
-"j c #FFF1A0",
-"k c #DED273",
-"l c #E1D078",
-"m c #B29A01",
-"n c #FFF2A1",
-"o c #FEED87",
-"p c #FDEC86",
-"q c #FDEC85",
-"r c #FCEB84",
-"s c #FBEA82",
-"t c #FAE981",
-"u c #A89100",
-"v c #FFF4AF",
-"w c #FDF09C",
-"x c #FAEC92",
-"y c #F9EA90",
-"z c #FAEC96",
-"A c #9D8600",
-"B c #9C8500",
-" ",
-" ",
-" ........... ",
-" +@#$%&*=--;+ ",
-" >,')!~{]^/(_> ",
-" :<[')!~{]^}}}| ",
-" 12334344{]^/-1 ",
-" 567890ab~{]^-5 ",
-" cd3334333443=c ",
-" efgg789h)!~{*e ",
-" ij3343kl')!~&i ",
-" mnopqrst[')!%m ",
-" uvnjfw62<,xyzu ",
-" ABBBBBBBBBBBBA ",
-" ",
-" "};
diff --git a/app/bin/bitmaps/stop.xpm b/app/bin/bitmaps/stop.xpm
deleted file mode 100644
index 5c66ba1..0000000
--- a/app/bin/bitmaps/stop.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * stop_xpm[] = {
-"16 16 3 1",
-" c None",
-"X c #000000000000",
-"o c #FFFF00000000",
-" XXXXXXX ",
-" XXXXXXXXX ",
-" XXoooooooXX ",
-" XXoooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-"XXoooooooooooXX ",
-" XXoooooooooXX ",
-" XXoooooooXX ",
-" XXXXXXXXX ",
-" XXXXXXX ",
-" "};
diff --git a/app/bin/bitmaps/straight.xpm b/app/bin/bitmaps/straight.xpm
deleted file mode 100644
index b5fc178..0000000
--- a/app/bin/bitmaps/straight.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * straight_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #FFFF00000000",
-"X c #000000000000",
-" .....",
-" 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 X X ",
-" X X X ",
-"X X X ",
-" X ",
-" X X "};
diff --git a/app/bin/bitmaps/svg/background.svg b/app/bin/bitmaps/svg/background.svg
new file mode 100644
index 0000000..b168f0b
--- /dev/null
+++ b/app/bin/bitmaps/svg/background.svg
@@ -0,0 +1,153 @@
+<?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="background.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="metadata23"><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="defs21" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1391"
+ inkscape:window-height="949"
+ id="namedview19"
+ showgrid="false"
+ inkscape:snap-nodes="false"
+ inkscape:zoom="10.897825"
+ inkscape:cx="23.857972"
+ inkscape:cy="23.995614"
+ 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:#FF8200;stroke:#000000;stroke-miterlimit:10;}
+ .st1{fill:#FF8200;}
+ .st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+
+<rect
+ style="fill:#c3a88f;fill-opacity:1;stroke:#000000;stroke-width:1.35834;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none"
+ id="rect838"
+ width="44.851173"
+ height="44.803501"
+ x="1.5744133"
+ y="1.5982494"
+ ry="0.17218179" /><path
+ style="fill:#dbba97;fill-opacity:1;stroke:none;stroke-width:1.52011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 32.777013,18.174801 c -4.157865,0.903053 -7.696832,2.631511 -10.739238,5.022215 -4.639351,3.822421 -4.528826,7.116944 -6.136711,10.602452 -0.780291,3.794007 0.03684,6.389656 2.231529,7.951842 4.251402,1.505827 8.952585,1.886909 13.947067,1.534565 5.358135,-1.22642 6.897492,-4.362714 8.64718,-7.393815 1.69377,-4.003568 3.15454,-8.045977 2.649944,-12.416033 -2.302846,-2.690118 -5.339428,-4.829793 -10.599771,-5.301226 z"
+ id="path842"
+ sodipodi:nodetypes="cccccccc" /><path
+ style="fill:#56c3f5;fill-opacity:1;stroke:none;stroke-width:1.37152px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 2.1564527,25.837385 V 2.5176282 L 27.76259,2.3858789 l -1.803248,8.5637491 -7.693863,6.192253 -8.8960277,2.50325 -3.4862828,4.874752 z"
+ id="path844" /><path
+ style="fill:#e8d2bc;fill-opacity:1;stroke:none;stroke-width:1.3392px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 32.210606,25.083687 c -4.263344,2.518472 -5.063624,3.679963 -6.972564,5.275878 -1.696817,2.010047 -1.986404,3.38991 -1.442598,4.396562 1.270215,2.935761 3.010079,2.436341 4.568231,3.266019 2.510399,-0.677969 4.771475,-1.681583 6.010831,-4.019716 0.814054,-1.508562 1.38896,-3.391959 1.562814,-5.903956 -0.557331,-1.60132 -1.277486,-3.060858 -3.726714,-3.014787 z"
+ id="path846"
+ sodipodi:nodetypes="ccccccc" /><path
+ sodipodi:type="star"
+ style="fill:#2f8e42;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path848-6"
+ sodipodi:sides="8"
+ sodipodi:cx="-6.4232998"
+ sodipodi:cy="-6.5150614"
+ sodipodi:r1="2.8626306"
+ sodipodi:r2="3.6571999"
+ sodipodi:arg1="0.69302282"
+ sodipodi:arg2="1.085722"
+ inkscape:flatsided="false"
+ inkscape:rounded="0.2"
+ inkscape:randomized="0"
+ transform="matrix(1.5067484,0,0,1.4293975,17.484929,49.907452)"
+ d="m -4.2210255,-4.6862251 c -0.1905998,0.2295192 -0.2330922,1.2673614 -0.4970167,1.4064701 -0.2639243,0.1391086 -1.1441281,-0.4124009 -1.441197,-0.3848808 -0.297069,0.02752 -1.0609809,0.7313388 -1.3459684,0.6430807 -0.2849874,-0.088258 -0.5174093,-1.1006322 -0.7469284,-1.291232 -0.2295192,-0.1905998 -1.2673614,-0.2330922 -1.4064702,-0.4970167 -0.1391086,-0.2639243 0.412401,-1.1441281 0.3848808,-1.441197 -0.02752,-0.297069 -0.7313386,-1.0609809 -0.6430807,-1.3459684 0.088258,-0.2849874 1.1006323,-0.5174093 1.291232,-0.7469284 0.1905999,-0.2295192 0.2330922,-1.2673614 0.4970167,-1.4064701 0.2639243,-0.1391087 1.1441282,0.4124009 1.441197,0.3848807 0.297069,-0.02752 1.060981,-0.731339 1.3459685,-0.643081 0.2849873,0.088258 0.5174092,1.1006326 0.7469284,1.2912323 0.2295191,0.1905999 1.2673614,0.2330922 1.4064701,0.4970167 0.1391086,0.2639244 -0.4124009,1.1441282 -0.3848808,1.4411971 0.02752,0.297069 0.7313388,1.0609809 0.6430807,1.3459684 -0.088258,0.2849873 -1.1006323,0.5174093 -1.291232,0.7469284 z" /><path
+ sodipodi:type="star"
+ style="fill:#35a559;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path848-6-3"
+ sodipodi:sides="8"
+ sodipodi:cx="-6.4232998"
+ sodipodi:cy="-6.5150614"
+ sodipodi:r1="2.8626306"
+ sodipodi:r2="3.6571999"
+ sodipodi:arg1="0.69302282"
+ sodipodi:arg2="1.085722"
+ inkscape:flatsided="false"
+ inkscape:rounded="0.2"
+ inkscape:randomized="0"
+ transform="matrix(1.2663948,0,0,1.4473368,20.46062,35.996562)"
+ d="m -4.2210255,-4.6862251 c -0.1905998,0.2295192 -0.2330922,1.2673614 -0.4970167,1.4064701 -0.2639243,0.1391086 -1.1441281,-0.4124009 -1.441197,-0.3848808 -0.297069,0.02752 -1.0609809,0.7313388 -1.3459684,0.6430807 -0.2849874,-0.088258 -0.5174093,-1.1006322 -0.7469284,-1.291232 -0.2295192,-0.1905998 -1.2673614,-0.2330922 -1.4064702,-0.4970167 -0.1391086,-0.2639243 0.412401,-1.1441281 0.3848808,-1.441197 -0.02752,-0.297069 -0.7313386,-1.0609809 -0.6430807,-1.3459684 0.088258,-0.2849874 1.1006323,-0.5174093 1.291232,-0.7469284 0.1905999,-0.2295192 0.2330922,-1.2673614 0.4970167,-1.4064701 0.2639243,-0.1391087 1.1441282,0.4124009 1.441197,0.3848807 0.297069,-0.02752 1.060981,-0.731339 1.3459685,-0.643081 0.2849873,0.088258 0.5174092,1.1006326 0.7469284,1.2912323 0.2295191,0.1905999 1.2673614,0.2330922 1.4064701,0.4970167 0.1391086,0.2639244 -0.4124009,1.1441282 -0.3848808,1.4411971 0.02752,0.297069 0.7313388,1.0609809 0.6430807,1.3459684 -0.088258,0.2849873 -1.1006323,0.5174093 -1.291232,0.7469284 z" /><path
+ sodipodi:type="star"
+ style="fill:#2bbf4a;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path848-6-8"
+ sodipodi:sides="8"
+ sodipodi:cx="-6.4232998"
+ sodipodi:cy="-6.5150614"
+ sodipodi:r1="2.8626306"
+ sodipodi:r2="3.6571999"
+ sodipodi:arg1="0.69302282"
+ sodipodi:arg2="1.085722"
+ inkscape:flatsided="false"
+ inkscape:rounded="0.2"
+ inkscape:randomized="0"
+ transform="matrix(1.4380759,0,0,1.5370329,27.091592,46.182324)"
+ d="m -4.2210255,-4.6862251 c -0.1905998,0.2295192 -0.2330922,1.2673614 -0.4970167,1.4064701 -0.2639243,0.1391086 -1.1441281,-0.4124009 -1.441197,-0.3848808 -0.297069,0.02752 -1.0609809,0.7313388 -1.3459684,0.6430807 -0.2849874,-0.088258 -0.5174093,-1.1006322 -0.7469284,-1.291232 -0.2295192,-0.1905998 -1.2673614,-0.2330922 -1.4064702,-0.4970167 -0.1391086,-0.2639243 0.412401,-1.1441281 0.3848808,-1.441197 -0.02752,-0.297069 -0.7313386,-1.0609809 -0.6430807,-1.3459684 0.088258,-0.2849874 1.1006323,-0.5174093 1.291232,-0.7469284 0.1905999,-0.2295192 0.2330922,-1.2673614 0.4970167,-1.4064701 0.2639243,-0.1391087 1.1441282,0.4124009 1.441197,0.3848807 0.297069,-0.02752 1.060981,-0.731339 1.3459685,-0.643081 0.2849873,0.088258 0.5174092,1.1006326 0.7469284,1.2912323 0.2295191,0.1905999 1.2673614,0.2330922 1.4064701,0.4970167 0.1391086,0.2639244 -0.4124009,1.1441282 -0.3848808,1.4411971 0.02752,0.297069 0.7313388,1.0609809 0.6430807,1.3459684 -0.088258,0.2849873 -1.1006323,0.5174093 -1.291232,0.7469284 z" /><path
+ sodipodi:type="star"
+ style="opacity:1;fill:#2f9043;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path848-6-2"
+ sodipodi:sides="8"
+ sodipodi:cx="-6.4232998"
+ sodipodi:cy="-6.5150614"
+ sodipodi:r1="2.8626306"
+ sodipodi:r2="3.6571999"
+ sodipodi:arg1="0.69302282"
+ sodipodi:arg2="1.085722"
+ inkscape:flatsided="false"
+ inkscape:rounded="0.2"
+ inkscape:randomized="0"
+ transform="matrix(1.4552441,0,0,1.4473369,44.576027,19.07371)"
+ d="m -4.2210255,-4.6862251 c -0.1905998,0.2295192 -0.2330922,1.2673614 -0.4970167,1.4064701 -0.2639243,0.1391086 -1.1441281,-0.4124009 -1.441197,-0.3848808 -0.297069,0.02752 -1.0609809,0.7313388 -1.3459684,0.6430807 -0.2849874,-0.088258 -0.5174093,-1.1006322 -0.7469284,-1.291232 -0.2295192,-0.1905998 -1.2673614,-0.2330922 -1.4064702,-0.4970167 -0.1391086,-0.2639243 0.412401,-1.1441281 0.3848808,-1.441197 -0.02752,-0.297069 -0.7313386,-1.0609809 -0.6430807,-1.3459684 0.088258,-0.2849874 1.1006323,-0.5174093 1.291232,-0.7469284 0.1905999,-0.2295192 0.2330922,-1.2673614 0.4970167,-1.4064701 0.2639243,-0.1391087 1.1441282,0.4124009 1.441197,0.3848807 0.297069,-0.02752 1.060981,-0.731339 1.3459685,-0.643081 0.2849873,0.088258 0.5174092,1.1006326 0.7469284,1.2912323 0.2295191,0.1905999 1.2673614,0.2330922 1.4064701,0.4970167 0.1391086,0.2639244 -0.4124009,1.1441282 -0.3848808,1.4411971 0.02752,0.297069 0.7313388,1.0609809 0.6430807,1.3459684 -0.088258,0.2849873 -1.1006323,0.5174093 -1.291232,0.7469284 z" /><path
+ sodipodi:type="star"
+ style="fill:#2bbf4a;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path848-6-1"
+ sodipodi:sides="8"
+ sodipodi:cx="-6.4232998"
+ sodipodi:cy="-6.5150614"
+ sodipodi:r1="2.8626306"
+ sodipodi:r2="3.6571999"
+ sodipodi:arg1="0.69302282"
+ sodipodi:arg2="1.085722"
+ inkscape:flatsided="false"
+ inkscape:rounded="0.2"
+ inkscape:randomized="0"
+ transform="matrix(1.5067484,0,0,1.4293975,37.145326,26.702193)"
+ d="m -4.2210255,-4.6862251 c -0.1905998,0.2295192 -0.2330922,1.2673614 -0.4970167,1.4064701 -0.2639243,0.1391086 -1.1441281,-0.4124009 -1.441197,-0.3848808 -0.297069,0.02752 -1.0609809,0.7313388 -1.3459684,0.6430807 -0.2849874,-0.088258 -0.5174093,-1.1006322 -0.7469284,-1.291232 -0.2295192,-0.1905998 -1.2673614,-0.2330922 -1.4064702,-0.4970167 -0.1391086,-0.2639243 0.412401,-1.1441281 0.3848808,-1.441197 -0.02752,-0.297069 -0.7313386,-1.0609809 -0.6430807,-1.3459684 0.088258,-0.2849874 1.1006323,-0.5174093 1.291232,-0.7469284 0.1905999,-0.2295192 0.2330922,-1.2673614 0.4970167,-1.4064701 0.2639243,-0.1391087 1.1441282,0.4124009 1.441197,0.3848807 0.297069,-0.02752 1.060981,-0.731339 1.3459685,-0.643081 0.2849873,0.088258 0.5174092,1.1006326 0.7469284,1.2912323 0.2295191,0.1905999 1.2673614,0.2330922 1.4064701,0.4970167 0.1391086,0.2639244 -0.4124009,1.1441282 -0.3848808,1.4411971 0.02752,0.297069 0.7313388,1.0609809 0.6430807,1.3459684 -0.088258,0.2849873 -1.1006323,0.5174093 -1.291232,0.7469284 z" /></svg>
diff --git a/app/bin/bitmaps/svg/benchwork.svg b/app/bin/bitmaps/svg/benchwork.svg
new file mode 100644
index 0000000..1562ae3
--- /dev/null
+++ b/app/bin/bitmaps/svg/benchwork.svg
@@ -0,0 +1,100 @@
+<?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="benchwork.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="metadata23"><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="defs21" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1352"
+ inkscape:window-height="949"
+ id="namedview19"
+ showgrid="false"
+ inkscape:snap-nodes="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="23.879304"
+ inkscape:cy="24.478283"
+ 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:#FF8200;stroke:#000000;stroke-miterlimit:10;}
+ .st1{fill:#FF8200;}
+ .st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<path
+ style="fill:#ff8200;fill-opacity:1;stroke:none;stroke-width:1.404px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 8.5262885,15.440457 28.146087,1.6811615 38.776901,1.7919341 19.758367,15.440457 H 8.5262885"
+ id="path2655"
+ sodipodi:nodetypes="ccccc" /><rect
+ x="8.526289"
+ y="15.440457"
+ class="st0"
+ width="11.232078"
+ height="30.888212"
+ id="rect4"
+ style="stroke-width:1.55649;stroke-miterlimit:10;stroke-dasharray:none" />
+<polygon
+ class="st1"
+ points="37,29.4 24,39.5 24,17.8 37,8.1 "
+ id="polygon6"
+ transform="matrix(1.4040097,0,0,1.4040097,-13.23586,-9.1297125)" />
+<line
+ class="st2"
+ x1="19.758366"
+ y1="15.440457"
+ x2="38.712502"
+ y2="2.2427664"
+ id="line8"
+ style="stroke-width:1.55649;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st3"
+ d="M 40.256907,31.586568"
+ id="path10"
+ style="stroke-width:1.404" />
+<path
+ class="st3"
+ d="M 19.758367,46.890273"
+ id="path12"
+ style="stroke-width:1.404" />
+<line
+ class="st2"
+ x1="8.5213375"
+ y1="15.013557"
+ x2="28.155918"
+ y2="1.6713308"
+ id="line14"
+ style="stroke-width:1.55649;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none" />
+
+<path
+ style="fill:none;stroke:#000000;stroke-width:1.55649;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 20.106958,46.262547 38.702489,31.854252"
+ id="path848" /></svg>
diff --git a/app/bin/bitmaps/svg/bezier-line.svg b/app/bin/bitmaps/svg/bezier-line.svg
new file mode 100644
index 0000000..df4232b
--- /dev/null
+++ b/app/bin/bitmaps/svg/bezier-line.svg
@@ -0,0 +1,92 @@
+<?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="bezier-line.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="metadata1498"><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="defs1496" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1447"
+ inkscape:window-height="957"
+ id="namedview1494"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="23.959168"
+ inkscape:cy="28.551342"
+ 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="style1477">
+ .st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FE0000;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="m 2.5330556,42.626221 c 25.6476684,0 22.1392604,-36.7937448 42.9477454,-36.7937448"
+ id="path1479"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st1"
+ d="M 11.848483,31.072088"
+ id="path1481"
+ style="stroke-width:1.16495" />
+<path
+ class="st1"
+ d="M 18.502359,38.251356"
+ id="path1483"
+ style="stroke-width:1.16495" />
+<line
+ class="st2"
+ x1="45.480801"
+ y1="5.8324766"
+ x2="16.445704"
+ y2="5.8324766"
+ id="line1485"
+ style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<line
+ class="st2"
+ x1="2.5330553"
+ y1="42.649242"
+ x2="29.21492"
+ y2="42.378853"
+ id="line1487"
+ style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st2"
+ d="m 16.445704,5.8324767 c 0,1.9535366 -1.692253,3.6279968 -3.807572,3.6279968 -2.115318,0 -3.8075738,-1.6744602 -3.8075738,-3.6279968 0,-1.9535361 1.6922558,-3.6279958 3.8075738,-3.6279958 2.115319,0.1395386 3.807572,1.6744597 3.807572,3.6279958 z"
+ id="path1489"
+ style="fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st2"
+ d="m 37.501558,42.136003 c 0,1.970509 -1.670072,3.659516 -3.757664,3.659516 -2.087592,0 -3.757665,-1.689007 -3.757665,-3.659516 0,-1.970511 1.670073,-3.659519 3.757665,-3.659519 2.087592,0 3.757664,1.548259 3.757664,3.659519 z"
+ id="path1491"
+ style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/bezier-track.svg b/app/bin/bitmaps/svg/bezier-track.svg
new file mode 100644
index 0000000..4f3cf33
--- /dev/null
+++ b/app/bin/bitmaps/svg/bezier-track.svg
@@ -0,0 +1,424 @@
+<?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="bezier-track.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="metadata878"><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="defs876"><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1638"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1634"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1630"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1626"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1622"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1564"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1560"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1556"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1552"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1548"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1544"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1540"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1536"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1532"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1528"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1524"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1520"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1516"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1512"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1508"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1456"><rect
+ style="display:block;opacity:1;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none"
+ id="rect1458"
+ width="19.127279"
+ height="3.9545863"
+ x="27.197866"
+ y="6.6178784"
+ ry="0.079863898" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1460"><rect
+ style="display:block;opacity:1;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none"
+ id="rect1462"
+ width="19.127279"
+ height="3.9545863"
+ x="27.197866"
+ y="6.6178784"
+ ry="0.079863898" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1464"><rect
+ style="display:none;opacity:1;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none"
+ id="rect1466"
+ width="19.127279"
+ height="3.9545863"
+ x="27.197866"
+ y="6.6178784"
+ ry="0.079863898"
+ d="m 27.27773,6.6178784 h 18.967552 c 0.04424,0 0.07986,0.035619 0.07986,0.079864 v 3.7948587 c 0,0.04424 -0.03562,0.07986 -0.07986,0.07986 H 27.27773 c -0.04424,0 -0.07986,-0.03562 -0.07986,-0.07986 V 6.6977423 c 0,-0.044245 0.03562,-0.079864 0.07986,-0.079864 z" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1468"><rect
+ style="display:none;opacity:1;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none"
+ id="rect1470"
+ width="19.127279"
+ height="3.9545863"
+ x="27.197866"
+ y="6.6178784"
+ ry="0.079863898"
+ d="m 27.27773,6.6178784 h 18.967552 c 0.04424,0 0.07986,0.035619 0.07986,0.079864 v 3.7948587 c 0,0.04424 -0.03562,0.07986 -0.07986,0.07986 H 27.27773 c -0.04424,0 -0.07986,-0.03562 -0.07986,-0.07986 V 6.6977423 c 0,-0.044245 0.03562,-0.079864 0.07986,-0.079864 z" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1472"><rect
+ style="display:none;opacity:1;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none"
+ id="rect1474"
+ width="19.127279"
+ height="3.9545863"
+ x="27.197866"
+ y="6.6178784"
+ ry="0.079863898"
+ d="m 27.27773,6.6178784 h 18.967552 c 0.04424,0 0.07986,0.035619 0.07986,0.079864 v 3.7948587 c 0,0.04424 -0.03562,0.07986 -0.07986,0.07986 H 27.27773 c -0.04424,0 -0.07986,-0.03562 -0.07986,-0.07986 V 6.6977423 c 0,-0.044245 0.03562,-0.079864 0.07986,-0.079864 z" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1476"><rect
+ style="display:none;opacity:1;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none"
+ id="rect1478"
+ width="19.127279"
+ height="3.9545863"
+ x="27.197866"
+ y="6.6178784"
+ ry="0.079863898"
+ d="m 27.27773,6.6178784 h 18.967552 c 0.04424,0 0.07986,0.035619 0.07986,0.079864 v 3.7948587 c 0,0.04424 -0.03562,0.07986 -0.07986,0.07986 H 27.27773 c -0.04424,0 -0.07986,-0.03562 -0.07986,-0.07986 V 6.6977423 c 0,-0.044245 0.03562,-0.079864 0.07986,-0.079864 z" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1504"><rect
+ style="display:none;opacity:1;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none"
+ id="rect1506"
+ width="19.127279"
+ height="3.9545863"
+ x="27.197866"
+ y="6.6178784"
+ ry="0.079863898"
+ d="m 27.27773,6.6178784 h 18.967552 c 0.04424,0 0.07986,0.035619 0.07986,0.079864 v 3.7948587 c 0,0.04424 -0.03562,0.07986 -0.07986,0.07986 H 27.27773 c -0.04424,0 -0.07986,-0.03562 -0.07986,-0.07986 V 6.6977423 c 0,-0.044245 0.03562,-0.079864 0.07986,-0.079864 z" /></clipPath></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1504"
+ inkscape:window-height="972"
+ id="namedview874"
+ showgrid="false"
+ inkscape:zoom="12.390678"
+ inkscape:cx="23.92928"
+ inkscape:cy="21.225634"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style833">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FE0000;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+
+
+
+
+<g
+ id="g906"
+ inkscape:label="ties"
+ transform="matrix(1.0591506,0,0,1.0591506,-1.4196144,-1.3413732)"><line
+ class="st0"
+ x1="4.1279888"
+ y1="34.576862"
+ x2="4.6168704"
+ y2="45.168163"
+ id="line835"
+ style="stroke:#dab16f;stroke-opacity:1;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none"
+ clip-path="none"
+ d="M 4.1279888,34.576862 4.6168704,45.168163" /><line
+ class="st0"
+ x1="42.886402"
+ y1="2.6856358"
+ x2="43.408516"
+ y2="13.62998"
+ id="line837"
+ style="fill:#f29a0d;fill-opacity:1;stroke:#dab16f;stroke-opacity:1;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none"
+ clip-path="none" /><line
+ class="st0"
+ x1="34.10844"
+ y1="5.7627635"
+ x2="39.163727"
+ y2="14.855262"
+ id="line841"
+ style="fill:#fbb03b;fill-opacity:1;stroke:#dab16f;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /><line
+ class="st0"
+ x1="35.005325"
+ y1="17.727415"
+ x2="27.096411"
+ y2="11.148679"
+ id="line843"
+ style="stroke:#dab16f;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /><line
+ class="st0"
+ x1="19.002396"
+ y1="21.82789"
+ x2="28.405186"
+ y2="27.61499"
+ id="line845"
+ style="stroke:#dab16f;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /><line
+ class="st0"
+ x1="22.733572"
+ y1="16.710386"
+ x2="31.354567"
+ y2="22.478386"
+ id="line847"
+ style="stroke:#dab16f;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /><line
+ class="st0"
+ x1="15.614336"
+ y1="26.927553"
+ x2="24.364897"
+ y2="33.04113"
+ id="line849"
+ style="stroke:#dab16f;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /><line
+ class="st0"
+ x1="11.880663"
+ y1="30.71059"
+ x2="20.037558"
+ y2="38.954033"
+ id="line851"
+ style="stroke:#dab16f;stroke-opacity:1;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none"
+ clip-path="none"
+ d="m 11.880663,30.71059 8.156895,8.243443" /><line
+ class="st0"
+ x1="8.2077017"
+ y1="33.453312"
+ x2="12.669186"
+ y2="43.218498"
+ id="line855"
+ style="stroke:#dab16f;stroke-opacity:1;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none"
+ clip-path="none"
+ d="m 8.2077017,33.453312 4.4614843,9.765186" /></g>
+
+<g
+ id="g910"
+ inkscape:label="rails"
+ transform="matrix(1.0591506,0,0,1.0591506,-1.4196144,-1.3413732)"><path
+ class="st1"
+ d="m 2.169398,37.254044 c 19.921904,0 19.094929,-31.9056952 43.661204,-31.9056952"
+ id="path857"
+ style="stroke-width:1.88830559;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc"
+ clip-path="none" /><path
+ class="st1"
+ d="m 2.4505108,42.567322 c 25.9106962,0 22.1552802,-31.807439 43.2993872,-31.219033"
+ id="path859"
+ style="stroke-width:1.88830559;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc"
+ clip-path="none" /></g>
+
+
+
+
+<g
+ id="g922"
+ inkscape:label="uhandle"
+ transform="matrix(1.0591506,0,0,1.0591506,-1.4196144,-1.3413732)"><line
+ class="st2"
+ x1="45.715103"
+ y1="8.5967131"
+ x2="16.382238"
+ y2="8.5967131"
+ id="line865"
+ style="stroke:#cc0000;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /><path
+ class="st2"
+ d="m 15.445121,8.6158886 c 0,1.8694864 -1.5274,3.4719024 -3.436654,3.4719024 -1.909251,0 -3.4366529,-1.602416 -3.4366529,-3.4719024 0,-1.8694855 1.5274019,-3.4719017 3.4366529,-3.4719017 1.909254,0.1335346 3.436654,1.6024162 3.436654,3.4719017 z"
+ id="path869"
+ style="stroke:#cc0000;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /></g>
+<g
+ id="g914"
+ inkscape:label="bhandle"
+ transform="matrix(1.0591506,0,0,1.0591506,-1.4196144,-1.3413732)"><line
+ class="st2"
+ x1="2.6384158"
+ y1="39.785053"
+ x2="30.46909"
+ y2="39.785053"
+ id="line867"
+ style="stroke:#cc0000;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /><path
+ class="st2"
+ d="m 38.117928,39.798562 c 0,1.791916 -1.509641,3.327846 -3.396691,3.327846 -1.887051,0 -3.396691,-1.53593 -3.396691,-3.327846 0,-1.791917 1.50964,-3.327846 3.396691,-3.327846 1.88705,0 3.396691,1.407935 3.396691,3.327846 z"
+ id="path871"
+ style="stroke:#cc0000;stroke-width:2.36038199;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/block.svg b/app/bin/bitmaps/svg/block.svg
new file mode 100755
index 0000000..9d306d7
--- /dev/null
+++ b/app/bin/bitmaps/svg/block.svg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg39"
+ sodipodi:docname="block.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="metadata43"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1578"
+ inkscape:window-height="996"
+ id="namedview41"
+ showgrid="false"
+ inkscape:zoom="8.7705101"
+ inkscape:cx="31.982176"
+ inkscape:cy="37.968145"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g37"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs5"><clipPath
+ id="clipPath3629"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ transform="matrix(1.3333,0,0,-1.3333,0,64)"
+ id="g37"><g
+ transform="matrix(1.2967909,0,0,1.2967909,2.1246308,45.683498)"
+ id="g9"
+ style="stroke-width:2.7112;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 9.091,-9.014"
+ fill="none"
+ stroke="#020000"
+ stroke-miterlimit="10"
+ id="path7"
+ style="stroke-width:2.7112;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.4132365,0,0,1.3859063,34.452001,13.107736)"
+ id="g13"
+ style="stroke-width:2.51221;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 8.089,-7.781"
+ fill="none"
+ stroke="#020000"
+ stroke-miterlimit="10"
+ id="path11"
+ style="stroke-width:2.51221;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.2967909,0,0,1.2967909,12.971957,34.587781)"
+ id="g17"
+ style="stroke-width:2.7112;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 16.564,-16.564"
+ fill="none"
+ stroke="#11d9f4"
+ stroke-miterlimit="10"
+ id="path15"
+ style="stroke:#009199;stroke-width:2.7112;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ clip-path="url(#clipPath3629)"
+ id="g35"
+ transform="matrix(1.5187104,0,0,1.5187104,-13.299409,-11.938881)"><g
+ transform="matrix(1.6641602,0,0,1.6641602,23.655168,17.693415)"
+ id="g29"
+ style="stroke:#000000;stroke-width:0.49871;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
+ d="m 0,0 c 0,-1.681 -1.346,-3.043 -3.005,-3.043 -1.659,0 -3.005,1.362 -3.005,3.043 0,1.681 1.346,3.043 3.005,3.043 C -1.346,3.043 0,1.681 0,0"
+ fill="#f21434"
+ id="path27"
+ style="stroke:#000000;stroke-width:0.781659;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.6663611,0,0,1.6663611,35.459199,29.364105)"
+ id="g33"
+ style="stroke-width:0.498051;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="m 0,0 c 0,-1.766 -1.397,-3.197 -3.121,-3.197 -1.723,0 -3.12,1.431 -3.12,3.197 0,1.766 1.397,3.197 3.12,3.197 C -1.397,3.197 0,1.766 0,0"
+ fill="#16ef16"
+ id="path31"
+ style="stroke:#000000;stroke-width:0.780626;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g></g><path
+ style="fill:none;stroke:#009199;stroke-width:3.51586;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 8.9911407,28.141226 19.792915,38.943"
+ id="path871" /><path
+ style="fill:none;stroke:#009199;stroke-width:3.51586;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 28.19633,9.0458839 38.998106,19.847659"
+ id="path871-4" /></g></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
new file mode 100644
index 0000000..e529c66
--- /dev/null
+++ b/app/bin/bitmaps/svg/bottom.svg
@@ -0,0 +1,62 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="bottom.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata13"><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="defs11" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1391"
+ inkscape:window-height="982"
+ id="namedview9"
+ showgrid="false"
+ inkscape:zoom="13.418604"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:#FF0603;}
+ .st1{fill:#808080;}
+</style>
+<path
+ class="st0"
+ d="m 29.039558,24.250588 c 0,7.267052 -6.073314,13.030574 -13.438823,13.030574 -7.4947277,0 -13.4388221,-5.888816 -13.4388221,-13.030574 0,-7.267051 6.0733144,-13.030575 13.4388221,-13.030575 7.365509,-0.125294 13.438823,5.763524 13.438823,13.030575 z"
+ id="path4"
+ style="stroke-width:1.27241;stroke:#990000;stroke-opacity:1" />
+<rect
+ x="17.409807"
+ y="8.3382511"
+ class="st1"
+ width="28.42828"
+ height="31.323498"
+ id="rect6"
+ style="stroke-width:1.27241;stroke:#000000;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/box.svg b/app/bin/bitmaps/svg/box.svg
new file mode 100644
index 0000000..49054b5
--- /dev/null
+++ b/app/bin/bitmaps/svg/box.svg
@@ -0,0 +1,72 @@
+<?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="box.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="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
+ id="defs908" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1288"
+ inkscape:window-height="878"
+ id="namedview906"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ 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:pagecheckerboard="0"
+ inkscape:snap-smooth-nodes="true" />
+<style
+ type="text/css"
+ id="style897">
+ .st0{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st1{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<rect
+ x="3.7880173"
+ y="5.0129852"
+ class="st0"
+ width="40.423965"
+ height="37.97403"
+ id="rect899"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="7.0859327"
+ y1="39.584835"
+ x2="40.014923"
+ y2="9.0605688"
+ id="line901"
+ style="stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1" />
+
+<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
new file mode 100644
index 0000000..c05e827
--- /dev/null
+++ b/app/bin/bitmaps/svg/bridge.svg
@@ -0,0 +1,152 @@
+<?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="bridge.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/"><g
+ 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 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"
+ sodipodi:nodetypes="cc" /><path
+ d="M 15.928935,38.645967 11.357049,43.85517"
+ fill="none"
+ stroke="#ff6700"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ 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 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"
+ sodipodi:nodetypes="cc" /><path
+ d="M 16.886244,18.657134 11.358382,13.313268"
+ fill="none"
+ stroke="#ff6700"
+ stroke-linecap="round"
+ 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" /></g><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="7.6322099"
+ inkscape:cx="36.162527"
+ inkscape:cy="32.100794"
+ 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 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 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
new file mode 100644
index 0000000..4b63286
--- /dev/null
+++ b/app/bin/bitmaps/svg/building.svg
@@ -0,0 +1,85 @@
+<?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="building.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="metadata19"><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="defs17" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1579"
+ inkscape:window-height="975"
+ id="namedview15"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="23.999379"
+ inkscape:cy="24.036645"
+ 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:#000000;stroke-miterlimit:10;}
+</style>
+<polygon
+ class="st0"
+ points="39.5,37.5 39.5,29.5 34.5,29.3 29,19.5 17,19.5 10.5,29.3 5.5,29.5 5.5,37.5 "
+ id="polygon8"
+ style="fill:#cccccc;fill-opacity:1"
+ transform="matrix(1.3413882,0,0,1.3436174,-6.1812345,-6.1642108)" /><path
+ class="st0"
+ d="M 40.767352,3.1067495"
+ id="path4"
+ style="stroke-width:1.3425" />
+<rect
+ x="7.9033418"
+ y="5.2565374"
+ class="st0"
+ width="32.193317"
+ height="28.215967"
+ id="rect6"
+ style="stroke-width:1.3425" />
+
+
+
+<path
+ style="fill:none;stroke:#000000;stroke-width:1.3425px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 7.9033409,5.2565374 16.622364,20.036329"
+ id="path844" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.3425px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 32.719023,20.036329 40.096659,5.2565374"
+ id="path846" /><path
+ style="fill:#b2b2b2;fill-opacity:1;stroke:#665900;stroke-width:0.0759312"
+ d="M 13.134754,12.71703 C 10.989166,9.0805473 9.2223194,6.0761113 9.2084336,6.0405055 9.1945466,6.0048995 15.867084,5.9757675 24.036296,5.9757675 c 8.169211,0 14.853113,0.017022 14.853113,0.037823 0,0.020802 -1.491218,3.0254477 -3.313816,6.6769895 l -3.313815,6.639165 -7.612975,-4.65e-4 -7.612975,-4.65e-4 z"
+ id="path848" /><path
+ style="fill:#cccccc;fill-opacity:1;stroke:#665900;stroke-width:0.0759312"
+ d="m 36.484379,25.297924 c -1.59357,-2.849671 -2.895525,-5.230247 -2.893235,-5.290169 0.0022,-0.05992 1.312768,-2.720941 2.912171,-5.913376 l 2.908008,-5.8044275 0.0042,11.0967005 c 0.0022,6.103184 -0.0043,11.095752 -0.01476,11.094597 -0.01056,-0.0012 -1.322766,-2.333652 -2.916335,-5.183325 z"
+ id="path850" /><path
+ style="fill:#b2b2b2;fill-opacity:1;stroke:#665900;stroke-width:0.0759312"
+ d="m 8.5921196,19.325952 c 0.00171,-8.408703 0.024691,-11.4526151 0.085796,-11.3472267 0.045906,0.079205 1.6620084,2.8197237 3.5913084,6.0900237 l 3.507818,5.946001 -3.526133,5.329145 c -1.939371,2.931029 -3.5564976,5.361579 -3.5936104,5.401224 -0.039496,0.04218 -0.066512,-4.693848 -0.065179,-11.419167 z"
+ id="path852" /></svg>
diff --git a/app/bin/bitmaps/svg/car-inventory.svg b/app/bin/bitmaps/svg/car-inventory.svg
new file mode 100644
index 0000000..27d805d
--- /dev/null
+++ b/app/bin/bitmaps/svg/car-inventory.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="car-inventory.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="metadata50"><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="defs48" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1583"
+ inkscape:window-height="965"
+ id="namedview46"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="24.039032"
+ inkscape:cy="26.235289"
+ 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:#808080;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000401;stroke-miterlimit:10;}
+ .st2{fill:#000401;}
+ .st3{fill:url(#SVGID_1_);}
+ .st4{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st5{fill:#006837;}
+ .st6{fill:#FFE53F;}
+ .st7{font-family:'MyriadPro-Regular';}
+ .st8{font-size:6px;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+<linearGradient
+ id="SVGID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="24.5506"
+ y1="21.5"
+ x2="30.4868"
+ y2="21.5"
+ gradientTransform="matrix(0,1.0571338,-1.0571338,0,51.676842,-1.8693808)">
+ <stop
+ offset="2.455360e-02"
+ style="stop-color:#006837"
+ id="stop26" />
+ <stop
+ offset="0.4355"
+ style="stop-color:#22B573"
+ id="stop28" />
+ <stop
+ offset="1"
+ style="stop-color:#006837"
+ id="stop30" />
+</linearGradient>
+
+
+<rect
+ x="1.0481793"
+ y="1.453462"
+ class="st5"
+ width="32.050381"
+ height="12.064563"
+ id="body"
+ style="fill:#682b00;fill-opacity:1;stroke:#d9d9d9;stroke-width:0.913228;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+
+
+<g
+ id="wheels"
+ transform="matrix(1.1266654,0,0,1.1266654,-5.5483902,-27.757493)"><path
+ class="st2"
+ d="m 11.136232,39.118101 c 0,1.134615 -0.882478,2.143161 -2.1431611,2.143161 -1.1346136,0 -2.1431594,-0.882478 -2.1431594,-2.143161 0,-1.260681 0.8824776,-2.143159 2.1431594,-2.143159 1.2606831,0.126067 2.1431611,1.008545 2.1431611,2.143159 z"
+ id="path39"
+ style="stroke-width:1.26068" /></g>
+<rect
+ x="8.0319376"
+ y="15.51599"
+ class="st5"
+ width="32.050381"
+ height="12.064563"
+ id="body-1"
+ style="fill:#004c68;fill-opacity:1;stroke:#d9d9d9;stroke-width:0.913228;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><g
+ id="wheels-5"
+ transform="matrix(1.1490837,0,0,1.1490837,1.0035607,-14.65363)"><path
+ class="st2"
+ d="m 11.344738,39.187603 c 0,1.134615 -0.882478,2.143161 -2.1431605,2.143161 -1.1346136,0 -2.1431594,-0.882478 -2.1431594,-2.143161 0,-1.260681 0.8824776,-2.143159 2.1431594,-2.143159 1.2606825,0.126067 2.1431605,1.008545 2.1431605,2.143159 z"
+ id="path39-0"
+ style="stroke-width:1.26068" /></g><rect
+ x="14.90144"
+ y="29.569271"
+ class="st5"
+ width="32.050381"
+ height="12.064563"
+ id="body-1-5"
+ style="fill:#006806;fill-opacity:1;stroke:#d9d9d9;stroke-width:0.913228;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><g
+ id="wheels-5-4"
+ transform="matrix(1.1643725,0,0,1.1643725,1.2420809,-1.0403268)"><path
+ class="st2"
+ d="m 33.655476,39.118101 c 0,1.134615 -0.882478,2.143161 -2.143161,2.143161 -1.260682,0 -2.143159,-0.882478 -2.143159,-2.143161 0,-1.260681 0.882477,-2.143159 2.143159,-2.143159 1.260683,0 2.143161,1.008546 2.143161,2.143159 z"
+ id="path43-6-1-4"
+ style="fill:#000401;stroke-width:1.26068" /><path
+ class="st2"
+ d="m 38.282412,39.118101 c 0,1.134615 -0.882478,2.143161 -2.14316,2.143161 -1.260683,0 -2.14316,-0.882478 -2.14316,-2.143161 0,-1.260681 0.882477,-2.143159 2.14316,-2.143159 1.260682,0 2.14316,1.008546 2.14316,2.143159 z"
+ id="path20-6-1"
+ style="stroke-width:1.26068" /><path
+ class="st2"
+ d="m 16.748068,39.118101 c 0,1.134615 -0.882478,2.143161 -2.143161,2.143161 -1.134614,0 -2.14316,-0.882478 -2.14316,-2.143161 0,-1.260681 0.882478,-2.143159 2.14316,-2.143159 1.260683,0.126067 2.143161,1.008545 2.143161,2.143159 z"
+ id="path39-0-8"
+ style="stroke-width:1.26068" /><path
+ class="st2"
+ d="m 21.527695,39.118101 c 0,1.134615 -0.882478,2.143161 -2.14316,2.143161 -1.260683,0 -2.14316,-0.882478 -2.14316,-2.143161 0,-1.260681 0.882477,-2.143159 2.14316,-2.143159 1.260682,0 2.14316,1.008545 2.14316,2.143159 z"
+ id="path43-68-8"
+ style="stroke-width:1.26068" /></g></svg>
diff --git a/app/bin/bitmaps/svg/change-grid.svg b/app/bin/bitmaps/svg/change-grid.svg
new file mode 100644
index 0000000..0962f5f
--- /dev/null
+++ b/app/bin/bitmaps/svg/change-grid.svg
@@ -0,0 +1,136 @@
+<?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="change-grid.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="metadata73"><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="defs71" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1524"
+ inkscape:window-height="969"
+ id="namedview69"
+ showgrid="false"
+ inkscape:zoom="12.260054"
+ inkscape:cx="19.942816"
+ inkscape:cy="21.981959"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g66"
+ inkscape:snap-nodes="false"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:#FFFFFF;stroke:#000000;stroke-miterlimit:10;}
+ .st1{fill:none;}
+ .st2{fill:#231F20;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<g
+ id="g66">
+
+
+<g
+ id="g927"
+ transform="matrix(1.2365151,0,0,1.2365151,-0.45780653,-10.909155)"><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 37.67926,36.998679 H 1.6603668"
+ id="path906-0"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 10.957925,10.259045 v 35.36001"
+ id="path900"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 19.779626,10.259045 V 45.985102"
+ id="path904"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 28.601326,10.259045 V 46.277938"
+ id="path906"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 37.75247,19.465092 H 1.6603668"
+ id="path902-1"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 37.825679,28.231886 H 1.6603668"
+ id="path904-7"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 37.423027,10.259045 V 46.277937"
+ id="path906-06"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 2.1362255,10.259045 V 46.277938"
+ id="path906-01"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 38.281206,10.763375 1.2699144,10.6983"
+ id="path900-5-5"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:1.83335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 38.281207,45.765474 H 1.3349898"
+ id="path900-5-8"
+ sodipodi:nodetypes="cc" /></g><g
+ id="g6458"
+ transform="translate(-4.3292157,4.0470317)"><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></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/circle-center.svg b/app/bin/bitmaps/svg/circle-center.svg
new file mode 100644
index 0000000..dc1b0fc
--- /dev/null
+++ b/app/bin/bitmaps/svg/circle-center.svg
@@ -0,0 +1,283 @@
+<?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="circle-center.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="metadata3349"><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="defs3347"><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect868"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect864"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath856"><path
+ style="display:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.27456px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 37.481595,37.263175 1.203443,-8.895802 -3.93469,-1.125417 -8.186482,7.583889 1.789451,3.620637 z"
+ id="path858"
+ sodipodi:nodetypes="cccccc" /><path
+ id="lpe_path-effect864"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.27456px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ class="powerclip"
+ d="M -0.81667071,-1.0453595 H 49.139391 V 48.910703 H -0.81667071 Z M 37.481595,37.263175 l 1.203443,-8.895802 -3.93469,-1.125417 -8.186482,7.583889 1.789451,3.620637 z" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath860"><path
+ style="display:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.27456px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 37.481595,37.263175 1.203443,-8.895802 -3.93469,-1.125417 -8.186482,7.583889 1.789452,3.620637 z"
+ id="path862"
+ sodipodi:nodetypes="cccccc" /><path
+ id="lpe_path-effect868"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.27456px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ class="powerclip"
+ d="M -2,-2.5284135 H 50.322721 V 50.393757 H -2 Z m 39.481595,39.7915885 1.203443,-8.895802 -3.93469,-1.125417 -8.186482,7.583889 1.789452,3.620637 z" /></clipPath></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1429"
+ inkscape:window-height="935"
+ id="namedview3345"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="23.999379"
+ inkscape:cy="24.036645"
+ 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="style3300">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<style
+ type="text/css"
+ id="style2554">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st4{fill:#FB0000;}
+ .st5{font-family:'MyriadPro-Regular';}
+ .st6{font-size:12px;}
+</style><g
+ id="g2669"
+ inkscape:label="ties"
+ transform="matrix(1.0980006,0,0,1.0732591,-2.5664524,-1.7232245)"
+ clip-path="url(#clipPath860)"
+ inkscape:path-effect="#path-effect868"><line
+ class="st0"
+ x1="32"
+ y1="43.900002"
+ x2="28.799999"
+ y2="35.900002"
+ id="line2586"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 32,43.900002 -3.200001,-8" /><line
+ class="st0"
+ x1="23.9"
+ y1="2.482697"
+ x2="24"
+ y2="11.482697"
+ id="line2556"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 23.9,2.482697 0.1,9" /><line
+ class="st0"
+ x1="23.900255"
+ y1="36.408672"
+ x2="23.999744"
+ y2="45.382671"
+ id="line2558"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 23.900255,36.408672 0.09949,8.973999" /><line
+ class="st0"
+ x1="36.5"
+ y1="24"
+ x2="45.299999"
+ y2="24.200001"
+ id="line2560"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 36.5,24 8.799999,0.200001" /><line
+ class="st0"
+ x1="3"
+ y1="25"
+ x2="12"
+ y2="25"
+ id="line2562"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 3,25 h 9" /><line
+ class="st0"
+ x1="8.3002796"
+ y1="9.5427513"
+ x2="14.785051"
+ y2="15.379046"
+ id="line2564"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 8.3002796,9.5427513 14.785051,15.379046" /><line
+ class="st0"
+ x1="38.767326"
+ y1="8.2077475"
+ x2="32.819508"
+ y2="15.283601"
+ id="line2566"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 38.767326,8.2077475 32.819508,15.283601" /><line
+ class="st0"
+ x1="32.130051"
+ y1="4.2333679"
+ x2="28.829287"
+ y2="12.58843"
+ id="line2568"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 32.130051,4.2333679 28.829287,12.58843" /><line
+ class="st0"
+ x1="43.626308"
+ y1="14.811062"
+ x2="35.262169"
+ y2="19.377419"
+ id="line2570"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 43.626308,14.811062 -8.364139,4.566357" /><line
+ class="st0"
+ x1="14.7"
+ y1="4.9000001"
+ x2="18.6"
+ y2="12.6"
+ id="line2572"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 14.7,4.9000001 18.6,12.6" /><line
+ class="st0"
+ x1="4.0999999"
+ y1="16.9"
+ x2="12.4"
+ y2="19.700001"
+ id="line2574"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 4.0999999,16.9 12.4,19.700001" /><line
+ class="st0"
+ x1="8.6999998"
+ y1="39"
+ x2="15.3"
+ y2="32.799999"
+ id="line2576"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 8.6999998,39 15.3,32.799999" /><line
+ class="st0"
+ x1="4.5999999"
+ y1="32.799999"
+ x2="12.8"
+ y2="28.9"
+ id="line2578"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 4.5999999,32.799999 12.8,28.9" /><line
+ class="st0"
+ x1="15.3"
+ y1="43.900002"
+ x2="19.4"
+ y2="35.400002"
+ id="line2580"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 15.3,43.900002 4.1,-8.5" /><line
+ class="st0"
+ x1="39.200001"
+ y1="39.599998"
+ x2="32.400002"
+ y2="33.5"
+ id="line2582"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 39.200001,39.599998 32.400002,33.5" /><line
+ class="st0"
+ x1="43.900002"
+ y1="32.799999"
+ x2="34.700001"
+ y2="29.6"
+ id="line2584"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 43.900002,32.799999 34.700001,29.6" /></g><g
+ id="g2682"
+ inkscape:label="rail"
+ transform="matrix(1.0980006,0,0,1.0732591,-2.5664522,-1.7232244)"
+ style="stroke-width:1.87256;stroke-miterlimit:10;stroke-dasharray:none"
+ clip-path="url(#clipPath856)"
+ inkscape:path-effect="#path-effect864"><path
+ class="st1"
+ d="m 43.203111,23.932672 c 0,10.53579 -8.50596,19.041751 -19.041752,19.041751 -10.53579,0 -19.0417497,-8.505961 -19.0417497,-19.041751 0,-10.535792 8.5059597,-19.0417515 19.0417497,-19.0417515 10.535792,0 19.041752,8.5059595 19.041752,19.0417515 z"
+ id="path2588"
+ style="stroke-width:1.87256;stroke-miterlimit:10;stroke-dasharray:none"
+ inkscape:original-d="m 43.203111,23.932672 c 0,10.53579 -8.50596,19.041751 -19.041752,19.041751 -10.53579,0 -19.0417497,-8.505961 -19.0417497,-19.041751 0,-10.535792 8.5059597,-19.0417515 19.0417497,-19.0417515 10.535792,0 19.041752,8.5059595 19.041752,19.0417515 z" /><path
+ class="st1"
+ d="m 38.997085,23.932672 c 0,8.230037 -6.605687,14.835726 -14.835725,14.835726 -8.230037,0 -14.8357248,-6.605689 -14.8357248,-14.835726 0,-8.230038 6.6056878,-14.8357262 14.8357248,-14.8357262 8.121748,0 14.835725,6.6056882 14.835725,14.8357262 z"
+ id="path2590"
+ style="stroke-width:1.87256;stroke-miterlimit:10;stroke-dasharray:none"
+ inkscape:original-d="m 38.997085,23.932672 c 0,8.230037 -6.605687,14.835726 -14.835725,14.835726 -8.230037,0 -14.8357248,-6.605689 -14.8357248,-14.835726 0,-8.230038 6.6056878,-14.8357262 14.8357248,-14.8357262 8.121748,0 14.835725,6.6056882 14.835725,14.8357262 z" /></g><g
+ id="g3424"
+ inkscape:label="arrow"
+ transform="matrix(1.0504397,0,0,1.0504397,-1.5029059,-2.1739336)"><line
+ class="st2"
+ x1="35.225948"
+ y1="35.590187"
+ x2="24.211658"
+ y2="24.43399"
+ id="line876"
+ style="fill:none;stroke:#cc0000;stroke-width:2.61571;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st3"
+ points="32.3,37.8 36.9,37.2 37.5,32.7 "
+ id="polyline878"
+ transform="matrix(1.2491748,0,0,1.2491748,-10.868603,-10.879114)"
+ style="fill:none;stroke:#cc0000;stroke-width:2.22802;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></svg>
diff --git a/app/bin/bitmaps/svg/circle-filled-center.svg b/app/bin/bitmaps/svg/circle-filled-center.svg
new file mode 100644
index 0000000..252ce43
--- /dev/null
+++ b/app/bin/bitmaps/svg/circle-filled-center.svg
@@ -0,0 +1,72 @@
+<?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="circle-filled-center.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="metadata1478"><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="defs1476" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1421"
+ inkscape:window-height="922"
+ id="namedview1474"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="24.039032"
+ 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:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style1463">
+ .st0{fill:#00C9FF;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="M 45.714152,24 C 45.714152,36.014429 36.014429,45.714152 24,45.714152 11.98557,45.714152 2.2858483,36.014429 2.2858483,24 2.2858483,11.98557 11.98557,2.2858481 24,2.2858481 36.014429,2.2858481 45.714152,11.98557 45.714152,24 Z"
+ id="path1465"
+ style="fill:#80e2ff;fill-opacity:1" />
+
+
+
+<line
+ class="st2"
+ x1="36.442284"
+ y1="36.748508"
+ x2="22.401169"
+ y2="22.70739"
+ id="line876"
+ style="fill:none;stroke:#cc0000;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st3"
+ points="32.3,37.8 36.9,37.2 37.5,32.7 "
+ id="polyline878"
+ transform="matrix(1.6532977,0,0,1.6532977,-24.564402,-24.754165)"
+ style="fill:none;stroke:#cc0000;stroke-width:1.81456;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></svg>
diff --git a/app/bin/bitmaps/svg/circle-filled-tangent.svg b/app/bin/bitmaps/svg/circle-filled-tangent.svg
new file mode 100644
index 0000000..afbf7ea
--- /dev/null
+++ b/app/bin/bitmaps/svg/circle-filled-tangent.svg
@@ -0,0 +1,78 @@
+<?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="circle-filled-tangent.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="metadata3982"><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="defs3980" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1426"
+ inkscape:window-height="903"
+ id="namedview3978"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="24.036645"
+ inkscape:cy="24.036645"
+ 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="style3967">
+ .st0{fill:#3FD1FF;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="m 46.005278,23.999999 c 0,12.17551 -9.829769,22.005279 -22.005279,22.005279 -12.175509,0 -22.0052775,-9.829769 -22.0052775,-22.005279 0,-12.175509 9.8297685,-22.0052775 22.0052775,-22.0052775 12.17551,0 22.005279,9.8297685 22.005279,22.0052775 z"
+ id="path3969"
+ style="fill:#80e1ff;fill-opacity:1" />
+<line
+ class="st1"
+ x1="43.5"
+ y1="45"
+ x2="43.5"
+ y2="45"
+ id="line3971" />
+
+
+<line
+ class="st2"
+ x1="24.167141"
+ y1="23.9102"
+ x2="38.231514"
+ y2="37.811775"
+ id="line4088"
+ style="fill:none;stroke:#cc0000;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st3"
+ points="28.8,24 24.4,24.7 23.7,29.1 "
+ id="polyline4090"
+ transform="matrix(1.6700933,0,0,1.6023948,-16.583136,-15.668951)"
+ style="fill:none;stroke:#cc0000;stroke-width:1.83385977;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></svg>
diff --git a/app/bin/bitmaps/svg/circle-line-center.svg b/app/bin/bitmaps/svg/circle-line-center.svg
new file mode 100644
index 0000000..18e05df
--- /dev/null
+++ b/app/bin/bitmaps/svg/circle-line-center.svg
@@ -0,0 +1,78 @@
+<?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="circle-line-center.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="metadata885"><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="defs883" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1460"
+ inkscape:window-height="897"
+ id="namedview881"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="24.012177"
+ inkscape:cy="24.012177"
+ inkscape:window-x="115"
+ inkscape:window-y="26"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style870">
+ .st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="m 45.672182,24.000001 c 0,11.991207 -9.680974,21.672181 -21.672181,21.672181 -11.991208,0 -21.6721826,-9.680974 -21.6721826,-21.672181 0,-11.991208 9.6809746,-21.6721826 21.6721826,-21.6721826 11.991207,0 21.672181,9.6809746 21.672181,21.6721826 z"
+ id="path872"
+ style="stroke-width:2.75028;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="43.5"
+ y1="45"
+ x2="43.5"
+ y2="45"
+ id="line874" />
+<line
+ class="st2"
+ x1="36.391674"
+ y1="36.691673"
+ x2="23.238926"
+ y2="23.538925"
+ id="line876"
+ style="stroke:#cc0000;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st3"
+ points="32.3,37.8 36.9,37.2 37.5,32.7 "
+ id="polyline878"
+ transform="matrix(1.3660384,0,0,1.3660384,-13.920935,-14.030747)"
+ style="stroke:#cc0000;stroke-width:2.19613153;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/circle-line-tangent.svg b/app/bin/bitmaps/svg/circle-line-tangent.svg
new file mode 100644
index 0000000..02f8c39
--- /dev/null
+++ b/app/bin/bitmaps/svg/circle-line-tangent.svg
@@ -0,0 +1,78 @@
+<?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="circle-line-tangent.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="metadata3363"><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="defs3361" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1346"
+ inkscape:window-height="914"
+ id="namedview3359"
+ showgrid="false"
+ inkscape:zoom="10.897825"
+ inkscape:cx="23.995613"
+ inkscape:cy="24.041494"
+ 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="style3348">
+ .st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="m 45.560452,24.091762 c 0,11.878615 -9.590075,21.468691 -21.46869,21.468691 -11.878617,0 -21.4686915,-9.590076 -21.4686915,-21.468691 0,-11.878617 9.5900745,-21.4686919 21.4686915,-21.4686919 11.878615,0 21.46869,9.5900749 21.46869,21.4686919 z"
+ id="path3350"
+ style="stroke-width:2.72446;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="43.5"
+ y1="45"
+ x2="43.5"
+ y2="45"
+ id="line3352" />
+
+
+<line
+ class="st2"
+ x1="23.34251"
+ y1="22.752092"
+ x2="37.761456"
+ y2="37.004139"
+ id="line4088"
+ style="fill:none;stroke:#cc0000;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st3"
+ points="28.8,24 24.4,24.7 23.7,29.1 "
+ id="polyline4090"
+ transform="matrix(1.6557924,0,0,1.5886737,-17.058824,-16.488148)"
+ style="fill:none;stroke:#cc0000;stroke-width:1.84969856;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></svg>
diff --git a/app/bin/bitmaps/svg/circle-line.svg b/app/bin/bitmaps/svg/circle-line.svg
new file mode 100644
index 0000000..2aa4811
--- /dev/null
+++ b/app/bin/bitmaps/svg/circle-line.svg
@@ -0,0 +1,228 @@
+<?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="circle-line.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="metadata1023"><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="defs1021" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1316"
+ inkscape:window-height="850"
+ id="namedview1019"
+ showgrid="false"
+ inkscape:zoom="10.889218"
+ inkscape:cx="24.01458"
+ inkscape:cy="23.968663"
+ inkscape:window-x="362"
+ inkscape:window-y="40"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style940">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st5{fill:#FB0000;}
+ .st6{font-family:'MyriadPro-Regular';}
+ .st7{font-size:12px;}
+</style>
+<path
+ class="st0"
+ d="M24,11.9"
+ id="path942" />
+<path
+ class="st0"
+ d="M23.9,2.9"
+ id="path944" />
+<path
+ class="st0"
+ d="M24,45.1"
+ id="path946" />
+<path
+ class="st0"
+ d="M23.9,36.9"
+ id="path948" />
+<path
+ class="st0"
+ d="M45.3,24.2"
+ id="path950" />
+<path
+ class="st0"
+ d="M36.5,24"
+ id="path952" />
+<path
+ class="st0"
+ d="M12,25"
+ id="path954" />
+<path
+ class="st0"
+ d="M3,25"
+ id="path956" />
+<path
+ class="st0"
+ d="M14.7,15.3"
+ id="path958" />
+<path
+ class="st0"
+ d="M8.7,9.9"
+ id="path960" />
+<path
+ class="st0"
+ d="M32.8,15.3"
+ id="path962" />
+<path
+ class="st0"
+ d="M38.6,8.4"
+ id="path964" />
+<path
+ class="st0"
+ d="M28.8,12.6"
+ id="path966" />
+<path
+ class="st0"
+ d="M32,4.5"
+ id="path968" />
+<path
+ class="st0"
+ d="M35.1,19"
+ id="path970" />
+<path
+ class="st0"
+ d="M43.3,14.7"
+ id="path972" />
+<path
+ class="st0"
+ d="M18.6,12.6"
+ id="path974" />
+<path
+ class="st0"
+ d="M14.7,4.9"
+ id="path976" />
+<path
+ class="st0"
+ d="M12.4,19.7"
+ id="path978" />
+<path
+ class="st0"
+ d="M4.1,16.9"
+ id="path980" />
+<path
+ class="st0"
+ d="M15.3,32.8"
+ id="path982" />
+<path
+ class="st0"
+ d="M8.7,39"
+ id="path984" />
+<path
+ class="st0"
+ d="M12.8,28.9"
+ id="path986" />
+<path
+ class="st0"
+ d="M4.6,32.8"
+ id="path988" />
+<path
+ class="st0"
+ d="M19.4,35.4"
+ id="path990" />
+<path
+ class="st0"
+ d="M15.3,43.9"
+ id="path992" />
+<path
+ class="st0"
+ d="M32.4,33.5"
+ id="path994" />
+<path
+ class="st0"
+ d="M39.2,39.6"
+ id="path996" />
+<path
+ class="st0"
+ d="M34.7,29.6"
+ id="path998" />
+<path
+ class="st0"
+ d="M43.9,32.8"
+ id="path1000" />
+<path
+ class="st0"
+ d="M28.8,35.9"
+ id="path1002" />
+<path
+ class="st0"
+ d="M32,43.9"
+ id="path1004" />
+<path
+ class="st1"
+ d="M 45.599801,24 C 45.599801,35.951159 35.951158,45.599801 24,45.599801 12.048841,45.599801 2.4001988,35.951159 2.4001988,24 2.4001988,12.048842 12.048841,2.4001989 24,2.4001989 35.951158,2.4001989 45.599801,12.048842 45.599801,24 Z"
+ id="path1006"
+ style="stroke-width:2.74109;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="43.5"
+ y1="45"
+ x2="43.5"
+ y2="45"
+ id="line1008" />
+<line
+ class="st3"
+ x1="6.2269526"
+ y1="24.224487"
+ x2="41.573009"
+ y2="24.275513"
+ id="line1010"
+ style="stroke:#cc0000;stroke-width:2.44399;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st4"
+ points="8.6,20.9 5.6,24.5 8.6,28.1 "
+ id="polyline1012"
+ style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.1988158,0,0,1.1988158,-0.48641593,-5.1464998)" />
+<polyline
+ class="st4"
+ points="39.2,27.7 42.6,24.2 39.2,20.9 "
+ id="polyline1014"
+ style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.1777431,0,0,1.1777431,-8.5988466,-4.2258703)" />
+
+<text
+ xml:space="preserve"
+ style="font-weight:bold;font-size:17.0194px;line-height:0;font-family:Arial;-inkscape-font-specification:'Arial Bold';fill:#cc0000;fill-opacity:1;stroke-width:1.41828"
+ x="12.717101"
+ y="21.812561"
+ id="text1608"
+ transform="scale(1.0582049,0.94499656)"><tspan
+ sodipodi:role="line"
+ id="tspan1606"
+ x="12.717101"
+ y="21.812561"
+ style="fill:#cc0000;fill-opacity:1;stroke-width:1.41828">36</tspan></text></svg>
diff --git a/app/bin/bitmaps/svg/circle-tangent.svg b/app/bin/bitmaps/svg/circle-tangent.svg
new file mode 100644
index 0000000..3e970c6
--- /dev/null
+++ b/app/bin/bitmaps/svg/circle-tangent.svg
@@ -0,0 +1,272 @@
+<?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="circle-tangent.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="metadata4097"><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="defs4095"><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect890"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect886"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath878"><path
+ style="display:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.07687px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 30.578006,35.073034 3.682037,4.464428 4.595747,-4.216244 -3.946461,-4.268054 z"
+ id="path880"
+ sodipodi:nodetypes="ccccc" /><path
+ id="lpe_path-effect886"
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.07687px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ class="powerclip"
+ d="M -0.929284,-0.7316369 H 48.929284 V 49.126931 H -0.929284 Z m 31.50729,35.8046709 3.682037,4.464428 4.595747,-4.216244 -3.946461,-4.268054 z" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath882"><path
+ style="display:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.07687px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 30.578006,35.073034 3.682037,4.464428 4.595747,-4.216244 -3.946461,-4.268054 z"
+ id="path884"
+ sodipodi:nodetypes="ccccc" /><path
+ id="lpe_path-effect890"
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.07687px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ class="powerclip"
+ d="M -2,-2.1111104 H 50.322721 V 50.112193 H -2 Z m 32.578006,37.1841444 3.682037,4.464428 4.595747,-4.216244 -3.946461,-4.268054 z" /></clipPath></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1545"
+ inkscape:window-height="922"
+ id="namedview4093"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="24.039032"
+ inkscape:cy="28.51141"
+ 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="style4048">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<g
+ id="g872"
+ inkscape:label="ties"
+ transform="matrix(1.0865725,0,0,1.0985893,-2.2578819,-2.3618824)"
+ clip-path="url(#clipPath882)"
+ inkscape:path-effect="#path-effect890"><line
+ class="st0"
+ x1="23.9"
+ y1="2.9000001"
+ x2="24"
+ y2="11.9"
+ id="line4050"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 23.9,2.9000001 24,11.9" /><line
+ class="st0"
+ x1="23.9"
+ y1="36.900002"
+ x2="24"
+ y2="45.099998"
+ id="line4052"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 23.9,36.900002 24,45.099998" /><line
+ class="st0"
+ x1="36.5"
+ y1="24"
+ x2="45.299999"
+ y2="24.200001"
+ id="line4054"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="m 36.5,24 8.799999,0.200001" /><line
+ class="st0"
+ x1="3"
+ y1="25"
+ x2="12"
+ y2="25"
+ id="line4056"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="m 3,25 h 9" /><line
+ class="st0"
+ x1="8.6179476"
+ y1="9.9343204"
+ x2="14.894994"
+ y2="15.583662"
+ id="line4058"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 8.6179476,9.9343204 14.894994,15.583662" /><line
+ class="st0"
+ x1="38.599998"
+ y1="8.3999996"
+ x2="32.799999"
+ y2="15.3"
+ id="line4060"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 38.599998,8.3999996 32.799999,15.3" /><line
+ class="st0"
+ x1="32"
+ y1="4.5"
+ x2="28.799999"
+ y2="12.6"
+ id="line4062"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="m 32,4.5 -3.200001,8.1" /><line
+ class="st0"
+ x1="43.299999"
+ y1="14.7"
+ x2="35.099998"
+ y2="19"
+ id="line4064"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 43.299999,14.7 35.099998,19" /><line
+ class="st0"
+ x1="14.7"
+ y1="4.9000001"
+ x2="18.6"
+ y2="12.6"
+ id="line4066"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 14.7,4.9000001 18.6,12.6" /><line
+ class="st0"
+ x1="4.0999999"
+ y1="16.9"
+ x2="12.4"
+ y2="19.700001"
+ id="line4068"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 4.0999999,16.9 12.4,19.700001" /><line
+ class="st0"
+ x1="8.6999998"
+ y1="39"
+ x2="15.3"
+ y2="32.799999"
+ id="line4070"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 8.6999998,39 15.3,32.799999" /><line
+ class="st0"
+ x1="4.5999999"
+ y1="32.799999"
+ x2="12.8"
+ y2="28.9"
+ id="line4072"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 4.5999999,32.799999 12.8,28.9" /><line
+ class="st0"
+ x1="15.3"
+ y1="43.900002"
+ x2="19.4"
+ y2="35.400002"
+ id="line4074"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="m 15.3,43.900002 4.1,-8.5" /><line
+ class="st0"
+ x1="39.200001"
+ y1="39.599998"
+ x2="32.799999"
+ y2="33.099998"
+ id="line4076"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="m 39.200001,39.599998 -6.400002,-6.5" /><line
+ class="st0"
+ x1="43.900002"
+ y1="32.799999"
+ x2="34.700001"
+ y2="29.6"
+ id="line4078"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="M 43.900002,32.799999 34.700001,29.6" /><line
+ class="st0"
+ x1="32"
+ y1="43.900002"
+ x2="28.799999"
+ y2="35.900002"
+ id="line4080"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ d="m 32,43.900002 -3.200001,-8" /></g>
+
+<g
+ id="g854"
+ inkscape:label="rails"
+ transform="matrix(1.0865725,0,0,1.0985893,-2.2578819,-2.3618824)"
+ clip-path="url(#clipPath878)"
+ inkscape:path-effect="#path-effect886"><path
+ class="st1"
+ d="m 43.179284,24.197647 c 0,10.611888 -8.567397,19.179284 -19.179285,19.179284 -10.611888,0 -19.179283,-8.567396 -19.179283,-19.179284 0,-10.611888 8.567395,-19.1792839 19.179283,-19.1792839 10.611888,0 19.179285,8.5673959 19.179285,19.1792839 z"
+ id="path4082"
+ style="stroke-width:1.83055574;stroke-miterlimit:10;stroke-dasharray:none"
+ inkscape:original-d="m 43.179284,24.197647 c 0,10.611888 -8.567397,19.179284 -19.179285,19.179284 -10.611888,0 -19.179283,-8.567396 -19.179283,-19.179284 0,-10.611888 8.567395,-19.1792839 19.179283,-19.1792839 10.611888,0 19.179285,8.5673959 19.179285,19.1792839 z" /><path
+ class="st1"
+ d="m 38.685289,24 c 0,8.021276 -6.43813,14.459406 -14.459407,14.459406 -8.021276,0 -14.459406,-6.43813 -14.459406,-14.459406 0,-8.021277 6.43813,-14.4594063 14.459406,-14.4594063 7.915734,0 14.459407,6.4381293 14.459407,14.4594063 z"
+ id="path4084"
+ style="stroke-width:1.83055574;stroke-miterlimit:10;stroke-dasharray:none"
+ inkscape:original-d="m 38.685289,24 c 0,8.021276 -6.43813,14.459406 -14.459407,14.459406 -8.021276,0 -14.459406,-6.43813 -14.459406,-14.459406 0,-8.021277 6.43813,-14.4594063 14.459406,-14.4594063 7.915734,0 14.459407,6.4381293 14.459407,14.4594063 z" /></g>
+
+
+<g
+ id="g876"
+ inkscape:label="arrow"
+ transform="matrix(1.065425,0,0,1.1038274,-2.1546271,-3.2465836)"><line
+ class="st2"
+ x1="24.711523"
+ y1="25.142181"
+ x2="36"
+ y2="36.299999"
+ id="line4088"
+ style="stroke:#cc0000;stroke-width:2.76636;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st3"
+ points="28.8,24 24.4,24.7 23.7,29.1 "
+ id="polyline4090"
+ transform="matrix(1.3657905,0,0,1.3104272,-8.6137653,-7.225371)"
+ style="stroke:#cc0000;stroke-width:2.06781049;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/circle.svg b/app/bin/bitmaps/svg/circle.svg
new file mode 100644
index 0000000..660e7fd
--- /dev/null
+++ b/app/bin/bitmaps/svg/circle.svg
@@ -0,0 +1,301 @@
+<?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="circle.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="metadata2607"><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="defs2605"><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1130"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1126"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1118"><path
+ style="display:none;fill:#ffffff;fill-opacity:1;stroke:#fefefe;stroke-width:0.93628px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 4.7756386,23.899697 5.5479404,-6.428566 28.268076,0.264187 5.636002,6.340504 -6.340502,6.60469 -28.0038892,-0.176125 z"
+ id="path1120" /><path
+ id="lpe_path-effect1126"
+ style="fill:#ffffff;fill-opacity:1;stroke:#fefefe;stroke-width:0.93628px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ class="powerclip"
+ d="M -0.81667071,-1.0453595 H 49.139391 V 48.910703 H -0.81667071 Z m 5.59230931,24.9450565 5.1076272,6.60469 28.0038892,0.176125 6.340502,-6.60469 -5.636002,-6.340504 -28.268076,-0.264187 z" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath1122"><path
+ style="display:none;fill:#ffffff;fill-opacity:1;stroke:#fefefe;stroke-width:0.93628px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 4.7756386,23.899697 5.5479404,-6.428566 28.268076,0.264187 5.636002,6.340504 -6.340502,6.60469 -28.0038892,-0.176125 z"
+ id="path1124" /><path
+ id="lpe_path-effect1130"
+ style="fill:#ffffff;fill-opacity:1;stroke:#fefefe;stroke-width:0.93628px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ class="powerclip"
+ d="M -2,-2.5284135 H 50.322721 V 50.393757 H -2 Z m 6.7756386,26.4281105 5.1076272,6.60469 28.0038892,0.176125 6.340502,-6.60469 -5.636002,-6.340504 -28.268076,-0.264187 z" /></clipPath></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1594"
+ inkscape:window-height="933"
+ id="namedview2603"
+ showgrid="false"
+ inkscape:zoom="10.631993"
+ inkscape:cx="24.031242"
+ inkscape:cy="23.843131"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style2554">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st4{fill:#FB0000;}
+ .st5{font-family:'MyriadPro-Regular';}
+ .st6{font-size:12px;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<g
+ id="g2669"
+ inkscape:label="ties"
+ transform="matrix(1.1036179,0,0,1.0877739,-2.4767987,-1.9863076)"
+ clip-path="url(#clipPath1122)"
+ inkscape:path-effect="#path-effect1130"><line
+ class="st0"
+ x1="32"
+ y1="43.900002"
+ x2="28.799999"
+ y2="35.900002"
+ id="line2586"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 32,43.900002 -3.200001,-8" /><line
+ class="st0"
+ x1="23.9"
+ y1="2.482697"
+ x2="24"
+ y2="11.482697"
+ id="line2556"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 23.9,2.482697 0.1,9" /><line
+ class="st0"
+ x1="23.900255"
+ y1="36.408672"
+ x2="23.999744"
+ y2="45.382671"
+ id="line2558"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 23.900255,36.408672 0.09949,8.973999" /><line
+ class="st0"
+ x1="36.5"
+ y1="24"
+ x2="45.299999"
+ y2="24.200001"
+ id="line2560"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 36.5,24 8.799999,0.200001" /><line
+ class="st0"
+ x1="3"
+ y1="25"
+ x2="12"
+ y2="25"
+ id="line2562"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 3,25 h 9" /><line
+ class="st0"
+ x1="8.3002796"
+ y1="9.5427513"
+ x2="14.785051"
+ y2="15.379046"
+ id="line2564"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 8.3002796,9.5427513 14.785051,15.379046" /><line
+ class="st0"
+ x1="38.767326"
+ y1="8.2077475"
+ x2="32.819508"
+ y2="15.283601"
+ id="line2566"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 38.767326,8.2077475 32.819508,15.283601" /><line
+ class="st0"
+ x1="32.130051"
+ y1="4.2333679"
+ x2="28.829287"
+ y2="12.58843"
+ id="line2568"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 32.130051,4.2333679 28.829287,12.58843" /><line
+ class="st0"
+ x1="43.299999"
+ y1="14.7"
+ x2="35.099998"
+ y2="19"
+ id="line2570"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 43.299999,14.7 35.099998,19" /><line
+ class="st0"
+ x1="14.7"
+ y1="4.9000001"
+ x2="18.6"
+ y2="12.6"
+ id="line2572"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 14.7,4.9000001 18.6,12.6" /><line
+ class="st0"
+ x1="4.0999999"
+ y1="16.9"
+ x2="12.4"
+ y2="19.700001"
+ id="line2574"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 4.0999999,16.9 12.4,19.700001" /><line
+ class="st0"
+ x1="8.6999998"
+ y1="39"
+ x2="15.3"
+ y2="32.799999"
+ id="line2576"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 8.6999998,39 15.3,32.799999" /><line
+ class="st0"
+ x1="4.5999999"
+ y1="32.799999"
+ x2="12.8"
+ y2="28.9"
+ id="line2578"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 4.5999999,32.799999 12.8,28.9" /><line
+ class="st0"
+ x1="15.3"
+ y1="43.900002"
+ x2="19.4"
+ y2="35.400002"
+ id="line2580"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="m 15.3,43.900002 4.1,-8.5" /><line
+ class="st0"
+ x1="39.200001"
+ y1="39.599998"
+ x2="32.400002"
+ y2="33.5"
+ id="line2582"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 39.200001,39.599998 32.400002,33.5" /><line
+ class="st0"
+ x1="43.900002"
+ y1="32.799999"
+ x2="34.700001"
+ y2="29.6"
+ id="line2584"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ d="M 43.900002,32.799999 34.700001,29.6" /></g>
+<g
+ id="g2682"
+ inkscape:label="rail"
+ transform="matrix(1.1036179,0,0,1.0877739,-2.4767987,-1.9863076)"
+ style="stroke-width:1.87256;stroke-miterlimit:10;stroke-dasharray:none"
+ clip-path="url(#clipPath1118)"
+ inkscape:path-effect="#path-effect1126"><path
+ class="st1"
+ d="m 43.203111,23.932672 c 0,10.53579 -8.50596,19.041751 -19.041752,19.041751 -10.53579,0 -19.0417497,-8.505961 -19.0417497,-19.041751 0,-10.535792 8.5059597,-19.0417515 19.0417497,-19.0417515 10.535792,0 19.041752,8.5059595 19.041752,19.0417515 z"
+ id="path2588"
+ style="stroke-width:1.87256;stroke-miterlimit:10;stroke-dasharray:none"
+ inkscape:original-d="m 43.203111,23.932672 c 0,10.53579 -8.50596,19.041751 -19.041752,19.041751 -10.53579,0 -19.0417497,-8.505961 -19.0417497,-19.041751 0,-10.535792 8.5059597,-19.0417515 19.0417497,-19.0417515 10.535792,0 19.041752,8.5059595 19.041752,19.0417515 z" /><path
+ class="st1"
+ d="m 38.997085,23.932672 c 0,8.230037 -6.605687,14.835726 -14.835725,14.835726 -8.230037,0 -14.8357248,-6.605689 -14.8357248,-14.835726 0,-8.230038 6.6056878,-14.8357262 14.8357248,-14.8357262 8.121748,0 14.835725,6.6056882 14.835725,14.8357262 z"
+ id="path2590"
+ style="stroke-width:1.87256;stroke-miterlimit:10;stroke-dasharray:none"
+ inkscape:original-d="m 38.997085,23.932672 c 0,8.230037 -6.605687,14.835726 -14.835725,14.835726 -8.230037,0 -14.8357248,-6.605689 -14.8357248,-14.835726 0,-8.230038 6.6056878,-14.8357262 14.8357248,-14.8357262 8.121748,0 14.835725,6.6056882 14.835725,14.8357262 z" /></g>
+
+
+
+
+
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:18.6667px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:'Calibri Bold'"
+ x="14.594995"
+ y="29.897146"
+ id="text2688"><tspan
+ sodipodi:role="line"
+ id="tspan2686"
+ x="14.594995"
+ y="29.897146">30</tspan></text><g
+ id="g2674"
+ inkscape:label="larrow"
+ transform="translate(-0.94356603,-0.07462151)"><line
+ class="st2"
+ x1="7.8782554"
+ y1="24.262081"
+ x2="14.726001"
+ y2="24.237926"
+ id="line2594"
+ style="stroke:#cc0000;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st3"
+ points="10.2,20.9 7.5,24.5 10.2,28.1 "
+ id="polyline2596"
+ transform="matrix(1.3546522,0,0,1.2105618,-2.4320948,-5.5707793)"
+ style="stroke:#cc0000;stroke-width:2.34268;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ id="g2679"
+ inkscape:label="rarrow"
+ transform="translate(1.5967442,-0.1432525)"><polyline
+ class="st3"
+ points="37.4,27.7 40.4,24.2 37.4,20.9 "
+ id="polyline2598"
+ transform="matrix(1.3089049,0,0,1.3063324,-12.571103,-7.6491877)"
+ style="stroke:#cc0000;stroke-width:2.29425;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><line
+ class="st2"
+ x1="32.984512"
+ y1="23.985939"
+ x2="39.342487"
+ y2="23.961742"
+ id="line2594-8"
+ style="fill:none;stroke:#cc0000;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></svg>
diff --git a/app/bin/bitmaps/svg/clone.svg b/app/bin/bitmaps/svg/clone.svg
new file mode 100644
index 0000000..31c63bb
--- /dev/null
+++ b/app/bin/bitmaps/svg/clone.svg
@@ -0,0 +1,69 @@
+<?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="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"
+ 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/"><rect
+ 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="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
+ 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="1571"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="25.305762"
+ inkscape:cy="32.961287"
+ inkscape:window-x="18"
+ inkscape:window-y="57"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ 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
new file mode 100644
index 0000000..0fd3065
--- /dev/null
+++ b/app/bin/bitmaps/svg/connect.svg
@@ -0,0 +1,160 @@
+<?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="connect.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" />
+<line
+ class="st2"
+ x1="26.801924"
+ y1="31.447706"
+ x2="46.29179"
+ y2="31.447706"
+ id="line24"
+ style="stroke:#cc0000;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<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.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"
+ y1="31.447706"
+ x2="1.8347114"
+ y2="31.447706"
+ id="line30"
+ 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: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
new file mode 100644
index 0000000..051e57f
--- /dev/null
+++ b/app/bin/bitmaps/svg/control.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg31"
+ sodipodi:docname="control.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="metadata35"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1322"
+ inkscape:window-height="814"
+ id="namedview33"
+ showgrid="false"
+ inkscape:zoom="6.6431949"
+ inkscape:cx="31.987621"
+ inkscape:cy="32.062886"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg31"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs5"><clipPath
+ id="clipPath4350"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ transform="matrix(2.0501569,0,0,-2.0501569,-18.313258,76.783813)"
+ id="g29"><g
+ transform="translate(11.888,33.208)"
+ id="g9"><path
+ d="M -1.406431,2.5974208 26.856335,-25.32524"
+ fill="none"
+ stroke="#020000"
+ stroke-miterlimit="10"
+ id="path7"
+ style="stroke-width:2.00867;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="translate(11.425,9.4795)"
+ id="g13"><path
+ d="M -1.0910131,-1.3970219 27.226401,26.266849"
+ fill="none"
+ stroke="#020000"
+ stroke-miterlimit="10"
+ id="path11"
+ style="stroke-width:2.00867;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ clip-path="url(#clipPath4350)"
+ id="g27"><path
+ d="m 31.918,21.701 c 0,4.148 -3.363,7.511 -7.512,7.511 -4.148,0 -7.511,-3.363 -7.511,-7.511 0,-4.148 3.363,-7.512 7.511,-7.512 4.149,0 7.512,3.364 7.512,7.512 z"
+ fill="none"
+ stroke="#020000"
+ stroke-miterlimit="10"
+ id="path15"
+ style="stroke-width:2.29562;stroke-miterlimit:10;stroke-dasharray:none"
+ inkscape:label="circle" /><path
+ d="m 19.343502,27.02497 c 0,0 5.776086,4.650897 10.170815,-0.415086 4.573168,-5.272793 -0.02944,-10.123552 -0.02944,-10.123552 z"
+ fill="#f40f0f"
+ id="path19"
+ style="stroke-width:0.993037"
+ inkscape:label="red" /><path
+ d="m 29.65346,16.520082 c 0,0 -5.706152,-4.856377 -10.361581,0.407837 -4.65536,5.265211 0.108718,9.878092 0.108718,9.878092"
+ fill="#1cf211"
+ id="path23"
+ inkscape:label="green" /><path
+ style="fill:none;stroke:#000000;stroke-width:0.777716;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 19.343502,27.02497 29.65346,16.520082"
+ id="path860"
+ sodipodi:nodetypes="cc"
+ inkscape:label="divide" /></g></g></svg>
diff --git a/app/bin/bitmaps/svg/convert-from.svg b/app/bin/bitmaps/svg/convert-from.svg
new file mode 100644
index 0000000..ed1ac55
--- /dev/null
+++ b/app/bin/bitmaps/svg/convert-from.svg
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg5557"
+ sodipodi:docname="convert-from.svg"
+ 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 /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1623"
+ inkscape:window-height="905"
+ id="namedview5559"
+ showgrid="false"
+ inkscape:zoom="9.3956422"
+ 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"
+ 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)"
+ id="g4851"><path
+ d="M 0,0 V 6"
+ fill="none"
+ stroke="#f7113e"
+ stroke-miterlimit="10"
+ id="path4849"
+ style="stroke:#c4082d;stroke-width:1.23675;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,30.307242,26.6676)"
+ id="g4855"
+ style="stroke-width:1.06008;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 -3.352,-2.71"
+ fill="none"
+ stroke="#f7113e"
+ stroke-miterlimit="10"
+ id="path4853"
+ style="stroke:#c4082d;stroke-width:1.23675;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,30.307242,26.6676)"
+ id="g4859"
+ style="stroke-width:1.06008;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 2.889,-2.479"
+ fill="none"
+ stroke="#f7113e"
+ stroke-miterlimit="10"
+ id="path4857"
+ style="stroke:#c4082d;stroke-width:1.23675;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></g><g
+ id="f"
+ transform="matrix(1.4137631,0,0,1.3410122,-11.127876,-9.7695704)"
+ style="stroke-width:1.00007;stroke-miterlimit:4;stroke-dasharray:none"><g
+ transform="matrix(1.3333,0,0,-1.3333,35.654587,38.167384)"
+ id="g4839"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 -7.911,0.006"
+ fill="none"
+ stroke="#000202"
+ stroke-miterlimit="10"
+ id="path4837"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,25.99935,38.6673)"
+ id="g4843"
+ style="stroke-width:1.36178154;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 V -10"
+ fill="none"
+ stroke="#000202"
+ stroke-miterlimit="10"
+ id="path4841"
+ style="stroke-width:1.36178154;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,26.590717,44.286256)"
+ id="g4847"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 H 5"
+ fill="none"
+ stroke="#000202"
+ stroke-miterlimit="10"
+ id="path4845"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none" /></g></g><g
+ transform="matrix(1.799285,0,0,-2.0116395,10.651964,14.444271)"
+ id="cornu"
+ style="stroke-width:1.31406;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 C 1.185,-0.401 2.471,0.235 2.872,1.42 3.373,2.901 2.578,4.508 1.097,5.009 -0.755,5.636 -2.764,4.643 -3.39,2.791 c -0.783,-2.315 0.459,-4.826 2.773,-5.609 1.645,-0.556 4.729,0.566 4.729,0.566 0,0 6.054,3.132 8.366,4.21 2.311,1.079 7.842,2.739 7.842,2.739 0,0 2.679,0.676 4.067,0.207 2.314,-0.782 3.555,-3.294 2.773,-5.609 -0.627,-1.852 -2.636,-2.845 -4.487,-2.218 -1.482,0.501 -2.277,2.107 -1.775,3.589 0.401,1.185 1.686,1.821 2.872,1.42"
+ fill="none"
+ stroke="#000202"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path4833"
+ style="stroke-width:1.31406;stroke-miterlimit:4;stroke-dasharray:none" /></g></svg>
diff --git a/app/bin/bitmaps/svg/convert-to.svg b/app/bin/bitmaps/svg/convert-to.svg
new file mode 100644
index 0000000..5876444
--- /dev/null
+++ b/app/bin/bitmaps/svg/convert-to.svg
@@ -0,0 +1,107 @@
+<?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="svg4865"
+ sodipodi:docname="convert-to.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><g
+ id="g5467"
+ transform="matrix(1.4137631,0,0,1.3410122,-10.478931,-46.220575)"
+ style="stroke-width:1.00007;stroke-miterlimit:4;stroke-dasharray:none"><g
+ transform="matrix(1.3333,0,0,-1.3333,35.654587,38.167384)"
+ id="g4839"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 -7.911,0.006"
+ fill="none"
+ stroke="#000202"
+ stroke-miterlimit="10"
+ id="path4837"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,25.99935,38.6673)"
+ id="g4843"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 V -10"
+ fill="none"
+ stroke="#000202"
+ stroke-miterlimit="10"
+ id="path4841"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,26.590717,44.286256)"
+ id="g4847"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 H 5"
+ fill="none"
+ stroke="#000202"
+ stroke-miterlimit="10"
+ id="path4845"
+ style="stroke-width:1.36178;stroke-miterlimit:4;stroke-dasharray:none" /></g></g><metadata
+ id="metadata4869"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1669"
+ inkscape:window-height="967"
+ id="namedview4867"
+ showgrid="false"
+ inkscape:zoom="9.3956422"
+ inkscape:cx="35.831564"
+ inkscape:cy="27.742707"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g4855"
+ inkscape:document-rotation="0" /><defs
+ id="defs4831"><clipPath
+ id="clipPath3691"><path
+ d="m0 48h48v-48h-48z"
+ id="path4828" /></clipPath></defs><g
+ transform="matrix(1.799285,0,0,-2.0116395,10.947264,53.336766)"
+ id="g4835"><path
+ d="m -0.35491538,-0.05290825 c 1.185,-0.401 2.47099998,0.235 2.87199998,1.42000005 0.501,1.481 -0.294,3.088 -1.77499998,3.589 -1.85200002,0.627 -3.86100002,-0.366 -4.48700002,-2.218 -0.783,-2.31500005 0.459,-4.826 2.77300002,-5.609 1.645,-0.556 4.72899998,0.566 4.72899998,0.566 0,0 6.054,3.13199995 8.3659994,4.21 2.311,1.079 7.842,2.739 7.842,2.739 0,0 2.679,0.676 4.067,0.207 2.314,-0.782 3.555,-3.294 2.773,-5.60900005 -0.627,-1.85199995 -2.636,-2.84499995 -4.487,-2.21799995 -1.482,0.501 -2.277,2.10699995 -1.775,3.58899995 0.401,1.18500005 1.686,1.82100005 2.872,1.42000005"
+ fill="none"
+ stroke="#000202"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path4833"
+ style="stroke-width:1.31406;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ id="g5475"
+ transform="matrix(2.0520076,0,0,-2.195505,-29.734387,99.778597)"><g
+ transform="matrix(1.3333,0,0,-1.3333,30.307242,34.6674)"
+ id="g4851"><path
+ d="M 0,0 V 6"
+ fill="none"
+ stroke="#f7113e"
+ stroke-miterlimit="10"
+ id="path4849"
+ style="stroke:#c4082d;stroke-width:1.23675;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,30.307242,26.6676)"
+ id="g4855"><path
+ d="M 0,0 -3.352,-2.71"
+ fill="none"
+ stroke="#f7113e"
+ stroke-miterlimit="10"
+ id="path4853"
+ style="stroke:#c4082d;stroke-width:1.23675;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,30.307242,26.6676)"
+ id="g4859"><path
+ d="M 1.6008594e-7,0 2.8890002,-2.479"
+ fill="none"
+ stroke="#f7113e"
+ stroke-miterlimit="10"
+ id="path4857"
+ style="stroke:#c4082d;stroke-width:1.23675441;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;stroke-linecap:round" /></g></g></svg>
diff --git a/app/bin/bitmaps/svg/copy.svg b/app/bin/bitmaps/svg/copy.svg
new file mode 100644
index 0000000..a865437
--- /dev/null
+++ b/app/bin/bitmaps/svg/copy.svg
@@ -0,0 +1,57 @@
+<?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="copy.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/"><rect
+ 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="49.334457"
+ height="45.780003"
+ x="2.1271074"
+ y="-48.169491"
+ transform="rotate(90)" /><rect
+ 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-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
+ 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="1571"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="25.305762"
+ inkscape:cy="32.961287"
+ inkscape:window-x="18"
+ inkscape:window-y="57"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Export" /></svg>
diff --git a/app/bin/bitmaps/svg/cornu.svg b/app/bin/bitmaps/svg/cornu.svg
new file mode 100644
index 0000000..be91077
--- /dev/null
+++ b/app/bin/bitmaps/svg/cornu.svg
@@ -0,0 +1,275 @@
+<?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="svg6443"
+ sodipodi:docname="cornu.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1507"
+ inkscape:window-height="985"
+ id="namedview6445"
+ showgrid="false"
+ inkscape:zoom="10.785861"
+ inkscape:cx="32"
+ inkscape:cy="32"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg6443"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false" /><metadata
+ id="metadata6308"><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="defs6325"><clipPath
+ id="clipPath1912"><path
+ d="m0 48h48v-48h-48z"
+ id="path6310" /></clipPath><clipPath
+ id="clipPath1936"><path
+ d="m0 48h48v-48h-48z"
+ id="path6313" /></clipPath><clipPath
+ id="clipPath1964"><path
+ d="m0 48h48v-48h-48z"
+ id="path6316" /></clipPath><clipPath
+ id="clipPath1996"><path
+ d="m0 48h48v-48h-48z"
+ id="path6319" /></clipPath><clipPath
+ id="clipPath2020"><path
+ d="m0 48h48v-48h-48z"
+ id="path6322" /></clipPath></defs><g
+ transform="matrix(1.4051383,0.1207861,0.1207861,-1.4051383,52.653185,59.584292)"
+ id="g6329"
+ style="stroke:#da8b0d;stroke-opacity:1"><path
+ d="M -0.53043187,-0.32477071 -4.1384319,7.4052293"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6327"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ clip-path="url(#clipPath1912)"
+ id="g6335"
+ transform="matrix(1.3333,0,0,-1.3333,0,64)"
+ style="stroke:#da8b0d;stroke-opacity:1"><g
+ transform="translate(23.421,3.4521)"
+ id="g6333"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.4103202,0,0,-1.4103202,26.835818,59.959223)"
+ id="g6339"
+ style="stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0.43863234,-0.15445476 2.8143677,7.9924548"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6337"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,20.002167,54.772364)"
+ id="g6343"
+ style="stroke:#da8b0d;stroke-opacity:1" /><g
+ transform="matrix(1.3961819,-0.199196,-0.199196,-1.3961819,18.606956,56.393024)"
+ id="g6347"
+ style="stroke:#da8b0d;stroke-opacity:1"
+ inkscape:transform-center-x="-0.58841826"
+ inkscape:transform-center-y="-0.19613932"><path
+ d="M 0,0 5.955,6.266"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6345"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ clip-path="url(#clipPath1936)"
+ id="g6361"
+ transform="matrix(1.4103202,0,0,-1.4103202,-2.756989,65.624888)"
+ style="stroke:#da8b0d;stroke-opacity:1"><g
+ transform="translate(37.121,3.6514)"
+ id="g6351"
+ style="stroke:#da8b0d;stroke-opacity:1"><path
+ d="M -4.1461428,-0.66416076 -5.0396534,7.7465653"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6349"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="translate(32.61,3.1055)"
+ id="g6355"
+ style="stroke:#da8b0d;stroke-opacity:1" /><g
+ transform="translate(28.022,2.8711)"
+ id="g6359"
+ style="stroke:#da8b0d;stroke-opacity:1"><path
+ d="m -0.97125371,0 0.79568866,8.345"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6357"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g></g><g
+ transform="matrix(1.4075989,-0.08756851,-0.08756851,-1.4075989,11.637587,51.494181)"
+ id="g6365"
+ style="stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 7.415,5.462"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6363"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.4081934,-0.07742166,-0.07742166,-1.4081934,6.2032358,44.084047)"
+ id="g6369"
+ style="stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 8.257,3.587"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6367"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.4103202,0,0,-1.4103202,3.0355272,35.271384)"
+ id="g6373"
+ style="stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 8.792,1.248"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6371"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.4039347,-0.13405287,-0.13405287,-1.4039347,2.3960496,26.427677)"
+ id="g6381"
+ style="stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 8.792,-1.482"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6379"
+ style="stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.4103202,0,0,-1.4103202,38.869264,3.0702429)"
+ id="g6385"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 -2.576,-8.066"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6383"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.3739992,0.02466772,0.02412428,-1.3437294,11.230952,9.1341216)"
+ id="g6391"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 6.117,-6.317"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6389"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.4726035,0.09971061,0.09767207,-1.4424968,46.983641,7.6869091)"
+ id="g6395"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 -4.663,-6.551"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6393"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1" /></g><g
+ clip-path="url(#clipPath1996)"
+ id="g6401"
+ transform="matrix(1.4103202,0,-0.09291026,-1.4103202,-0.3046177,66.311376)"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1"><g
+ transform="translate(23.871,45.375)"
+ id="g6399"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 -0.165,-8.405"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6397"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1" /></g></g><g
+ transform="matrix(1.4017562,0.15518603,0.15518603,-1.4017562,19.744526,4.1692554)"
+ id="g6405"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1"
+ inkscape:transform-center-x="-0.098070038"
+ inkscape:transform-center-y="0.29420937"><path
+ d="M 0,0 4.052,-7.409"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6403"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.4055377,-0.11604642,-0.11604642,-1.4055377,5.3000909,16.561813)"
+ id="g6409"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1"><path
+ d="M 0,0 7.263,-4.523"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6407"
+ style="fill:#000000;fill-opacity:1;stroke:#da8b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.3333,0,0,-1.3333,55.595943,54.600502)"
+ id="g6417" /><g
+ id="g7089"
+ transform="matrix(1.0440666,0,0,1.0440666,-1.9914136,-1.4628919)"
+ style="stroke-width:2.02624;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M -0.42269799,0.07044967 C -13.122597,-5.531302 -28.031,-1.495 -34.561,9.957 c -3.953906,9.303899 -0.254255,21.297396 8.737,25.215 8.531148,2.893154 16.037859,1.590047 21.061255,-5.246805"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path6415"
+ transform="matrix(1.3333,0,0,-1.3333,55.595943,54.600502)"
+ style="stroke-width:1.51972;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cccc" /><g
+ transform="matrix(1.3333,0,0,-1.3333,52.142696,47.797738)"
+ id="g6421"
+ style="stroke-width:1.51972;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0.40159691,-0.79662787 C -9.968697,-5.7615966 -22.124981,-2.6274606 -26.983513,6.223499 c -3.88599,7.083272 -2.647838,15.389633 4.828833,19.071098 5.980293,2.944754 13.8382692,1.482331 16.8805774,-3.902071"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path6419"
+ style="stroke-width:1.51972;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cccc" /></g></g><g
+ transform="matrix(1.2168566,0,0,-1.2168566,52.523609,17.239565)"
+ id="g6425"
+ style="stroke-width:2.12718;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="m 0,0 c 0,-1.831 -1.455,-3.315 -3.248,-3.315 -1.796,0 -3.251,1.484 -3.251,3.315 0,1.831 1.455,3.314 3.251,3.314 C -1.455,3.314 0,1.831 0,0 Z"
+ fill="none"
+ stroke="#ff0000"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6423"
+ style="stroke:#cc0000;stroke-width:2.12718;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.2061086,0,0,-1.2061086,60.422316,51.690421)"
+ id="g6429"
+ style="stroke-width:2.12718;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="m 0,0 c 0,-1.83 -1.454,-3.314 -3.249,-3.314 -1.795,0 -3.25,1.484 -3.25,3.314 0,1.83 1.455,3.314 3.25,3.314 C -1.454,3.314 0,1.83 0,0 Z"
+ fill="none"
+ stroke="#ff0000"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6427"
+ style="stroke:#cc0000;stroke-width:2.12718;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g></svg>
diff --git a/app/bin/bitmaps/svg/curved-chord.svg b/app/bin/bitmaps/svg/curved-chord.svg
new file mode 100644
index 0000000..5db0f01
--- /dev/null
+++ b/app/bin/bitmaps/svg/curved-chord.svg
@@ -0,0 +1,172 @@
+<?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="curved-chord.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="metadata7187"><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="defs7185" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1490"
+ inkscape:window-height="975"
+ id="namedview7183"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="23.9991"
+ inkscape:cy="24.717875"
+ 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="style7140">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FC1500;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#FF0000;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+
+
+<g
+ id="g1493"
+ transform="matrix(1.1059459,0,0,1.1059459,-1.3574074,-1.8908062)"><line
+ class="st0"
+ x1="40.118973"
+ y1="1.8465961"
+ x2="41.373394"
+ y2="11.88195"
+ id="line7142"
+ style="stroke:#db8b0b;stroke-opacity:1" /><line
+ class="st0"
+ x1="1.8591815"
+ y1="42.364338"
+ x2="13.023514"
+ y2="42.866108"
+ id="line7144"
+ style="stroke:#db8b0b;stroke-opacity:1" /><line
+ class="st0"
+ x1="25.19138"
+ y1="6.8642731"
+ x2="31.087151"
+ y2="16.021534"
+ id="line7146"
+ style="stroke:#db8b0b;stroke-opacity:1" /><line
+ class="st0"
+ x1="5.2461133"
+ y1="27.562191"
+ x2="16.159559"
+ y2="31.576334"
+ id="line7148"
+ style="stroke:#db8b0b;stroke-opacity:1" /><line
+ class="st0"
+ x1="32.341572"
+ y1="3.4773419"
+ x2="36.355713"
+ y2="13.136369"
+ id="line7150"
+ style="stroke:#db8b0b;stroke-opacity:1" /><line
+ class="st0"
+ x1="18.417515"
+ y1="11.003859"
+ x2="26.069473"
+ y2="19.408464"
+ id="line7152"
+ style="stroke:#db8b0b;stroke-opacity:1" /><line
+ class="st0"
+ x1="8.8839293"
+ y1="21.164652"
+ x2="19.044725"
+ y2="26.558657"
+ id="line7154"
+ style="stroke:#db8b0b;stroke-opacity:1" /><line
+ class="st0"
+ x1="2.862716"
+ y1="34.837818"
+ x2="14.027048"
+ y2="37.095776"
+ id="line7156"
+ style="stroke:#db8b0b;stroke-opacity:1" /><line
+ class="st0"
+ x1="13.458588"
+ y1="15.277812"
+ x2="21.817545"
+ y2="23.181286"
+ id="line2709"
+ style="stroke:#db8b0b;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g>
+<g
+ id="g1497"
+ transform="matrix(1.1059459,0,0,1.1059459,-1.3574074,-1.8908062)"><path
+ class="st1"
+ d="M 4.2120581,44.280211 C 4.2120581,21.700663 24.56417,4.0360619 43.380459,4.0360619"
+ id="path7158"
+ style="stroke-width:2.2605084;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /><path
+ class="st1"
+ d="m 10.476705,44.352425 c 0,-16.432893 17.276742,-34.933535 32.831541,-34.933535"
+ id="path7160"
+ style="stroke-width:2.2605084;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /></g>
+
+
+
+
+
+
+
+
+
+<g
+ id="g1799"
+ transform="translate(0.23959168,0.39931946)"><line
+ class="st3"
+ x1="23.655668"
+ y1="25.22048"
+ x2="39.666615"
+ y2="39.675983"
+ id="line7174"
+ style="stroke:#cc0000;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st5"
+ points="18.4,25.3 18.2,20.3 22.8,20.4 "
+ id="polyline7178"
+ style="stroke:#cc0000;stroke-width:1.59116;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.8962586,0,0,1.8746343,-10.856238,-12.834596)" /><line
+ class="st3"
+ x1="45.968658"
+ y1="33.376415"
+ x2="33.764027"
+ y2="45.851318"
+ id="line7180"
+ style="stroke:#cc0000;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/curved-end.svg b/app/bin/bitmaps/svg/curved-end.svg
new file mode 100644
index 0000000..4c76cb4
--- /dev/null
+++ b/app/bin/bitmaps/svg/curved-end.svg
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 48 48"
+ xml:space="preserve"
+ id="svg7888"
+ sodipodi:docname="curved-end.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ width="48"
+ height="48"
+ 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/"><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1395"
+ inkscape:window-height="914"
+ id="namedview7890"
+ showgrid="false"
+ inkscape:zoom="8.1826993"
+ inkscape:cx="34.462955"
+ inkscape:cy="28.230293"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg7888"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><metadata
+ id="metadata7821"><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="defs7826"><clipPath
+ id="clipPath1727"><path
+ d="M 0,48 H 48 V 0 H 0 Z"
+ id="path7823" /></clipPath></defs><g
+ id="g8500"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ transform="matrix(0.8692292,0,0,0.8692292,-6.7606978,-1.3620069)"
+ inkscape:label="ties"><path
+ d="m 21.586127,24.580985 9.447217,9.122165"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path7828"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
+ d="M 8.6820496,53.493729 21.126063,54.043783"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path7832"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
+ d="m 34.24023,15.374714 5.791335,11.37158"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path7836"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
+ d="m 12.133163,36.783347 12.305351,5.82105"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path7840"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
+ d="m 41.608402,12.254396 4.134977,12.213093"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.76092"
+ id="path7844"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
+ d="m 27.582419,19.225126 7.784728,10.504797"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path7848"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
+ d="m 16.448922,30.578169 10.642725,7.318346"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path7852"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
+ d="M 9.4353641,44.787147 22.080108,47.785739"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2.6666"
+ id="path7856"
+ style="stroke:#d98b0d;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /></g><g
+ id="g1503"
+ inkscape:label="rails"
+ transform="matrix(1.2781936,0,0,-1.2781936,-2.2194528,64.491016)"
+ style="stroke-width:1.86098;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="m 4.0384022,13.324335 c 0,16.356939 11.8763738,25.429747 23.5178358,28.703908"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path7864"
+ style="stroke-width:1.59502;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /><path
+ d="M 8.9184235,13.479289 C 8.5091535,25.096957 18.605799,34.573361 28.746871,37.156338"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path7868"
+ style="stroke-width:1.59502;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /></g><g
+ id="g1511"
+ inkscape:label="arrow"
+ transform="matrix(1.1307026,0,0,-1.1307026,-5.699386,54.663387)"><path
+ d="m 38.000997,46.245811 4.610186,-16.6826"
+ fill="none"
+ stroke="#ff0000"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path7872"
+ style="stroke:#cc0000;stroke-width:2.34037;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" /><path
+ d="m 34.988266,41.74949 3.012731,4.496321 4.770156,-2.523132"
+ fill="none"
+ stroke="#ff0000"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path7876"
+ style="stroke:#cc0000;stroke-width:2.34037;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccc" /><path
+ d="m 45.584906,34.274145 -2.973723,-4.710934 -5.024264,2.58388"
+ fill="none"
+ stroke="#ff0000"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path7880"
+ style="stroke:#cc0000;stroke-width:2.34037;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="ccc" /></g></svg>
diff --git a/app/bin/bitmaps/svg/curved-line-chord.svg b/app/bin/bitmaps/svg/curved-line-chord.svg
new file mode 100644
index 0000000..b1cc041
--- /dev/null
+++ b/app/bin/bitmaps/svg/curved-line-chord.svg
@@ -0,0 +1,114 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="curved-line-chord.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata2200"><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="defs2198" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1351"
+ inkscape:window-height="907"
+ id="namedview2196"
+ showgrid="false"
+ inkscape:zoom="10.897825"
+ inkscape:cx="24"
+ 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="style2171">
+ .st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#FC1500;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="M 3.5220297,43.111597 C 3.5220297,21.615075 23.58545,4.1790071 41.499219,4.1790071"
+ id="path2173"
+ style="stroke-width:2.57;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st1"
+ d="M 38.315236,-0.27323563"
+ id="path2175"
+ style="stroke-width:1.16155" />
+<path
+ class="st1"
+ d="M 43.095812,2.5733838"
+ id="path2177"
+ style="stroke-width:1.16155" />
+<path
+ class="st1"
+ d="M 38.315236,-0.27323563"
+ id="path2179"
+ style="stroke-width:1.16155" />
+<path
+ class="st1"
+ d="M 35.894182,15.118161"
+ id="path2181"
+ style="stroke-width:1.16155" />
+<path
+ class="st1"
+ d="M 39.611153,16.744336"
+ id="path2183"
+ style="stroke-width:1.16155" />
+<path
+ class="st1"
+ d="M 43.095812,14.88585"
+ id="path2185"
+ style="stroke-width:1.16155" />
+<line
+ class="st2"
+ x1="17.087498"
+ y1="19.028881"
+ x2="38.513435"
+ y2="38.767605"
+ id="line2187"
+ style="stroke:#cc0000;stroke-width:2.36307;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st3"
+ d="M 39.611153,25.455986"
+ id="path2189"
+ style="stroke-width:1.16155" />
+<polyline
+ class="st4"
+ points="18.4,25.3 18.2,20.3 22.8,20.4 "
+ id="polyline2191"
+ style="stroke:#cc0000;stroke-width:1.34728;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.855595,0,0,1.855595,-16.684331,-18.639697)" />
+<line
+ class="st2"
+ x1="44.85672"
+ y1="30.743393"
+ x2="31.731171"
+ y2="44.56588"
+ id="line2193"
+ style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/curved-line-end.svg b/app/bin/bitmaps/svg/curved-line-end.svg
new file mode 100644
index 0000000..365e1bd
--- /dev/null
+++ b/app/bin/bitmaps/svg/curved-line-end.svg
@@ -0,0 +1,108 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="curved-line-end.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata2891"><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="defs2889" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1378"
+ inkscape:window-height="904"
+ id="namedview2887"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="24"
+ 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="style2828">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FC1500;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#FC1500;stroke-width:2;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FC1500;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<path
+ class="st1"
+ d="m 4.8384113,46.012013 c 0,-23.034633 15.2509007,-30.767254 31.7708447,-33.565002"
+ id="path2862"
+ style="stroke-width:2.57544;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" />
+
+
+
+
+
+
+
+
+
+
+<g
+ id="g1523"
+ inkscape:label="arrow"
+ transform="matrix(0.99329824,-0.11557947,0.10755047,0.99423249,-1.8346051,4.0269541)"
+ inkscape:transform-center-x="-0.51362946"
+ inkscape:transform-center-y="0.29967713"><line
+ class="st4"
+ x1="39.305443"
+ y1="22.109104"
+ x2="38.916668"
+ y2="4.0958133"
+ id="line2874"
+ style="stroke:#cc1400;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st5"
+ points="35.6,7.8 38.5,5.4 41.4,7.8 "
+ id="polyline2882"
+ style="stroke:#cc1400;stroke-width:1.62975;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.5339802,0,0,1.5339802,-20.141572,-4.1876794)" /><polyline
+ class="st5"
+ points="41.4,17 38.8,19.1 35.6,17 "
+ id="polyline2884"
+ style="stroke:#cc1400;stroke-width:1.62975;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.5339802,0,0,1.5339802,-20.21299,-7.1899163)" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/curved-line-middle.svg b/app/bin/bitmaps/svg/curved-line-middle.svg
new file mode 100644
index 0000000..237b453
--- /dev/null
+++ b/app/bin/bitmaps/svg/curved-line-middle.svg
@@ -0,0 +1,99 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="curved-line-middle.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata3510"><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="defs3508" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1293"
+ inkscape:window-height="809"
+ id="namedview3506"
+ showgrid="false"
+ inkscape:zoom="10.897825"
+ inkscape:cx="24"
+ 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="style3483">
+ .st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#FC1500;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="m 4.2736318,45.488353 c 0,-23.039286 21.5033322,-41.7267057 40.7027362,-41.7267057"
+ id="path3485"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st1"
+ d="M 38.28716,5.3096567"
+ id="path3487" />
+<path
+ class="st1"
+ d="M 41.58716,7.0096567"
+ id="path3489" />
+<path
+ class="st1"
+ d="M 38.28716,5.3096567"
+ id="path3491" />
+<path
+ class="st1"
+ d="M 35.38716,17.809657"
+ id="path3493" />
+<path
+ class="st1"
+ d="M 38.58716,19.209657"
+ id="path3495" />
+<path
+ class="st1"
+ d="M 41.58716,17.609657"
+ id="path3497" />
+<line
+ class="st2"
+ x1="17.988567"
+ y1="20.386417"
+ x2="42.018471"
+ y2="42.110428"
+ id="line3499"
+ style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st3"
+ d="M 38.58716,26.709657"
+ id="path3501" />
+<polyline
+ class="st4"
+ points="18,26 18,20.3 23.4,20.7 "
+ id="polyline3503"
+ style="stroke:#cc0000;stroke-width:1.99118;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.2541677,-0.05864525,0.05864525,1.2541677,-5.956031,-4.2156616)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/curved-line-tangent.svg b/app/bin/bitmaps/svg/curved-line-tangent.svg
new file mode 100644
index 0000000..dbac2e2
--- /dev/null
+++ b/app/bin/bitmaps/svg/curved-line-tangent.svg
@@ -0,0 +1,190 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="curved-line-tangent.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata4209"><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="defs4207" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1231"
+ inkscape:window-height="814"
+ id="namedview4205"
+ showgrid="false"
+ inkscape:zoom="10.897825"
+ inkscape:cx="24"
+ 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="style4142">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FC1500;stroke-miterlimit:10;}
+ .st4{fill:#BF8700;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FF0000;stroke-miterlimit:10;}
+ .st6{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="M 12.078246,44.927861"
+ id="path4144" />
+<path
+ class="st0"
+ d="M 1.0635811,44.409525"
+ id="path4146" />
+<path
+ class="st0"
+ d="M 30.738383,17.196825"
+ id="path4148" />
+<path
+ class="st0"
+ d="M 25.555012,7.2188348"
+ id="path4150" />
+<path
+ class="st0"
+ d="M 14.799516,33.265276"
+ id="path4152" />
+<path
+ class="st0"
+ d="M 4.8215252,28.341074"
+ id="path4154" />
+<path
+ class="st0"
+ d="M 25.166258,20.306848"
+ id="path4156" />
+<path
+ class="st0"
+ d="M 18.168707,11.495116"
+ id="path4158" />
+<path
+ class="st0"
+ d="M 18.168707,28.081905"
+ id="path4160" />
+<path
+ class="st0"
+ d="M 8.9682223,21.991444"
+ id="path4162" />
+<path
+ class="st0"
+ d="M 13.114921,38.966985"
+ id="path4164" />
+<path
+ class="st0"
+ d="M 1.5819182,36.634468"
+ id="path4166" />
+<path
+ class="st0"
+ d="M 41.364295,12.920544"
+ id="path4168" />
+<path
+ class="st0"
+ d="M 40.068452,2.5538006"
+ id="path4170" />
+<path
+ class="st0"
+ d="M 35.662586,14.34597"
+ id="path4172" />
+<path
+ class="st0"
+ d="M 32.682147,4.2383963"
+ id="path4174" />
+<path
+ class="st0"
+ d="M 21.667483,24.194376"
+ id="path4176" />
+<path
+ class="st0"
+ d="M 12.726167,16.419319"
+ id="path4178" />
+<path
+ class="st1"
+ d="m 3.1707748,45.065034 c 0,-22.568039 22.1983802,-40.8732267 42.0183602,-40.8732267"
+ id="path4180"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st2"
+ d="M 43.437643,11.495116"
+ id="path4182"
+ style="stroke-width:1.29584" />
+<path
+ class="st2"
+ d="M 9.7457276,46.612458"
+ id="path4184"
+ style="stroke-width:1.29584" />
+<path
+ class="st3"
+ d="M 43.913924,-1.2068227"
+ id="path4186"
+ style="stroke-width:1.29584" />
+<path
+ class="st3"
+ d="M 46.418082,1.3875421"
+ id="path4188"
+ style="stroke-width:1.29584" />
+<path
+ class="st3"
+ d="M 43.913924,-1.2068227"
+ id="path4190"
+ style="stroke-width:1.29584" />
+<path
+ class="st3"
+ d="M 38.383856,15.382645"
+ id="path4192"
+ style="stroke-width:1.29584" />
+<path
+ class="st3"
+ d="M 42.530553,17.196825"
+ id="path4194"
+ style="stroke-width:1.29584" />
+<path
+ class="st3"
+ d="M 46.418082,15.123476"
+ id="path4196"
+ style="stroke-width:1.29584" />
+<line
+ class="st4"
+ x1="42.983685"
+ y1="43.366608"
+ x2="16.089582"
+ y2="18.271143"
+ id="line4198"
+ style="stroke:#cc0000;stroke-width:2.47961;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st5"
+ d="M 42.530553,26.915646"
+ id="path4200"
+ style="stroke-width:1.29584" />
+<polyline
+ class="st6"
+ points="38,34 38,39 33,39 "
+ id="polyline4202"
+ style="stroke:#cc0000;stroke-width:1.43697;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.7397675,0,0,1.7397675,-23.134377,-24.49174)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/curved-middle.svg b/app/bin/bitmaps/svg/curved-middle.svg
new file mode 100644
index 0000000..011b402
--- /dev/null
+++ b/app/bin/bitmaps/svg/curved-middle.svg
@@ -0,0 +1,202 @@
+<?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="curved-middle.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="metadata8594"><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="defs8592"><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect895"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect891"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect887"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect883"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1432"
+ inkscape:window-height="931"
+ id="namedview8590"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="23.9991"
+ inkscape:cy="23.9991"
+ 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="style8549">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FC1500;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#FF0000;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+
+
+<g
+ id="g2961"
+ transform="matrix(1.0375641,0,0,1.0375641,-0.76566984,-0.77459533)"
+ clip-path="none"><line
+ class="st0"
+ x1="1.2915986"
+ y1="43.841686"
+ x2="13.326716"
+ y2="44.362141"
+ id="line8551"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="26.443645"
+ y1="7.0198193"
+ x2="32.799274"
+ y2="16.51804"
+ id="line8553"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="4.9427028"
+ y1="28.4884"
+ x2="16.707367"
+ y2="32.652"
+ id="line8555"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="34.151535"
+ y1="3.506778"
+ x2="38.478771"
+ y2="13.525451"
+ id="line8557"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="19.141439"
+ y1="11.313536"
+ x2="27.39023"
+ y2="20.03108"
+ id="line8559"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ clip-path="none" /><line
+ class="st0"
+ x1="8.8642578"
+ y1="21.852655"
+ x2="19.81757"
+ y2="27.4475"
+ id="line8561"
+ style="stroke:#d98a0d;stroke-opacity:1"
+ clip-path="none" /><line
+ class="st0"
+ x1="2.3734066"
+ y1="36.034924"
+ x2="14.408527"
+ y2="38.376953"
+ id="line8563"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="42.535553"
+ y1="1.8153136"
+ x2="43.887806"
+ y2="12.224323"
+ id="line8565"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="14.26063"
+ y1="15.951141"
+ x2="22.961445"
+ y2="23.591101"
+ id="line2092"
+ style="stroke:#d98a0d;stroke-width:2.56562462;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ clip-path="none" /></g>
+<g
+ id="g2946"
+ transform="matrix(1.0375641,0,0,1.0375641,-0.76566984,-0.77459533)"
+ clip-path="none"><path
+ class="st1"
+ d="m 4.0790933,46.133467 c 0,-23.42027 22.0049877,-41.5439928 42.1291687,-42.10304"
+ id="path8567"
+ style="stroke-width:1.92759175;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /><path
+ class="st1"
+ d="m 9.8063606,46.204656 c 0,-17.044752 19.4799254,-37.2195265 36.2479574,-37.2195265"
+ id="path8569"
+ style="stroke-width:1.92759175;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc"
+ clip-path="none" /></g>
+
+
+
+
+
+
+
+
+<g
+ id="g2950"
+ transform="matrix(0.85711663,0,0,0.85711663,6.9828261,7.7567279)"><line
+ class="st3"
+ x1="20.775936"
+ y1="20.909582"
+ x2="45.645229"
+ y2="44.291237"
+ id="line8583"
+ style="stroke:#cc0000;stroke-width:3.5001071;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st5"
+ points="18,26 18,20.3 23.4,20.7 "
+ id="polyline8587"
+ style="stroke:#cc0000;stroke-width:2.22328741;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.6049305,0,0,1.5442415,-8.1128129,-10.43852)" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/curved-tangent.svg b/app/bin/bitmaps/svg/curved-tangent.svg
new file mode 100644
index 0000000..e9aee6b
--- /dev/null
+++ b/app/bin/bitmaps/svg/curved-tangent.svg
@@ -0,0 +1,191 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="curved-tangent.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata9253"><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="defs9251" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1417"
+ inkscape:window-height="972"
+ id="namedview9249"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="24"
+ 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="style9206">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FC1500;stroke-miterlimit:10;}
+ .st3{fill:#BF8700;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#FF0000;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="1.7949519"
+ y1="43.925362"
+ x2="13.456883"
+ y2="44.449497"
+ id="line9208"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="27.084311"
+ y1="6.3189082"
+ x2="32.32563"
+ y2="16.408443"
+ id="line9210"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="6.1190376"
+ y1="27.677277"
+ x2="16.208576"
+ y2="32.656528"
+ id="line9212"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="19.615433"
+ y1="10.642995"
+ x2="26.691212"
+ y2="19.553236"
+ id="line9214"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="10.312092"
+ y1="21.256664"
+ x2="19.615433"
+ y2="27.415213"
+ id="line9216"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="2.8432145"
+ y1="36.063385"
+ x2="14.505148"
+ y2="38.421978"
+ id="line9218"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="41.760006"
+ y1="1.6017218"
+ x2="43.070328"
+ y2="12.084357"
+ id="line9220"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="34.291126"
+ y1="3.3051503"
+ x2="37.304882"
+ y2="13.525721"
+ id="line9222"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="14.112048"
+ y1="15.622247"
+ x2="23.153322"
+ y2="23.484222"
+ id="line9224"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<path
+ class="st1"
+ d="m 3.4983796,46.152922 c 0,-23.58593 22.0135354,-42.716739 41.6684764,-42.716739"
+ id="path9226"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st1"
+ d="m 11.098291,46.152922 c 0,-17.165315 17.820479,-35.509928 34.068565,-35.509928"
+ id="path9228"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st2"
+ d="M 43.195559,-1.4682949"
+ id="path9230"
+ style="stroke-width:1.30331" />
+<path
+ class="st2"
+ d="M 47.496477,0.74732904"
+ id="path9232"
+ style="stroke-width:1.30331" />
+<path
+ class="st2"
+ d="M 43.195559,-1.4682949"
+ id="path9234"
+ style="stroke-width:1.30331" />
+<path
+ class="st2"
+ d="M 40.056571,14.573983"
+ id="path9236"
+ style="stroke-width:1.31033" />
+<path
+ class="st2"
+ d="M 44.249625,16.408445"
+ id="path9238"
+ style="stroke-width:1.31033" />
+<path
+ class="st2"
+ d="M 48.180614,14.311918"
+ id="path9240"
+ style="stroke-width:1.31033" />
+<rect
+ style="opacity:1;fill:#ebebeb;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;fill-opacity:1"
+ id="rect2707"
+ width="6.7369518"
+ height="5.6268826"
+ x="26.763359"
+ y="-0.49409166"
+ transform="matrix(0.75078063,0.66055162,-0.68047575,0.7327706,0,0)" /><line
+ class="st3"
+ x1="44.249977"
+ y1="43.668476"
+ x2="19.586525"
+ y2="19.91222"
+ id="line9242"
+ style="stroke:#cc0000;stroke-width:3.18605;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st4"
+ d="M 44.249625,26.235915"
+ id="path9244"
+ style="stroke-width:1.31033" />
+<polyline
+ class="st5"
+ points="40,36 40,41 35,41 "
+ id="polyline9246"
+ style="stroke:#cc0000;stroke-width:2.20162;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.436209,0,0,1.4581584,-13.19838,-16.116015)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/cut.svg b/app/bin/bitmaps/svg/cut.svg
new file mode 100644
index 0000000..8b8d9f0
--- /dev/null
+++ b/app/bin/bitmaps/svg/cut.svg
@@ -0,0 +1,64 @@
+<?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="cut.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="1571"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="25.305762"
+ inkscape:cy="33.492921"
+ inkscape:window-x="18"
+ inkscape:window-y="57"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Export" /><path
+ style="fill:none;stroke:#404040;stroke-width:3.64621;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 24.366275,17.817103 c -0.216559,-2.583731 -2.637624,-5.586626 -7.305886,-6.813095 -3.724698,0.679851 -10.2494995,4.973226 -8.4980529,6.619454 l 7.7248489,5.748191 c 2.883549,0.704931 5.350618,-2.382586 8.07909,-5.55455 z"
+ id="path1208"
+ sodipodi:nodetypes="ccccc" /><path
+ style="fill:none;stroke:#404040;stroke-width:3.6332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 5.4748051,36.029254 c -2.7151332,0.433054 -0.1962835,7.037401 3.9655015,9.447893 3.7582774,0.32979 7.4204664,0.187587 9.8059744,-2.735214 -0.349439,-2.94556 -0.1757,-6.819736 -3.306541,-7.756504 z"
+ id="path1208-1"
+ sodipodi:nodetypes="ccccc" /><path
+ style="fill:none;stroke:#404040;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 8.5623361,17.623462 29.746591,34.057704 5.4748051,36.029254"
+ id="path1718"
+ sodipodi:nodetypes="ccc" /><path
+ style="fill:#404040;fill-opacity:1;stroke:#404040;stroke-width:1.15889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 32.967253,35.68144 59.33674,33.709891 53.175645,30.629342 29.763484,32.600893 Z"
+ id="path3015" /><path
+ style="fill:#404040;fill-opacity:1;stroke:#404040;stroke-width:1.14488;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 34.637458,37.491514 55.088511,53.974054 48.31229,52.934405 30.168362,38.01363 Z"
+ id="path3015-0"
+ inkscape:transform-center-x="-0.043751259"
+ inkscape:transform-center-y="-0.14231423"
+ sodipodi:nodetypes="ccccc" /></svg>
diff --git a/app/bin/bitmaps/svg/delete.svg b/app/bin/bitmaps/svg/delete.svg
new file mode 100644
index 0000000..55d6471
--- /dev/null
+++ b/app/bin/bitmaps/svg/delete.svg
@@ -0,0 +1,143 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="delete.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata31"><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="defs29" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1438"
+ inkscape:window-height="878"
+ id="namedview27"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="22.56245"
+ inkscape:cy="24"
+ inkscape:window-x="3"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+<g
+ id="ties"
+ inkscape:label="ties"
+ transform="matrix(1.3006641,0,0,1.3006641,-7.3756654,-4.111636)"><line
+ class="st0"
+ x1="9"
+ y1="16"
+ x2="9"
+ y2="27"
+ id="line4"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="14"
+ y1="16"
+ x2="14"
+ y2="27"
+ id="line6"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="19"
+ y1="16"
+ x2="19"
+ y2="27"
+ id="line8"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="24"
+ y1="16"
+ x2="24"
+ y2="27"
+ id="line10"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="29"
+ y1="16"
+ x2="29"
+ y2="27"
+ id="line12"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="34"
+ y1="16"
+ x2="34"
+ y2="27"
+ id="line14"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="39"
+ y1="16"
+ x2="39"
+ y2="27"
+ id="line16"
+ style="stroke:#d98a0d;stroke-opacity:1" /></g>
+
+<g
+ id="rail"
+ inkscape:label="rail"
+ transform="matrix(1.3006641,0,0,1.1040829,-7.3756654,0.10254712)"
+ style="stroke-width:1.47801;stroke-miterlimit:10;stroke-dasharray:none"><line
+ class="st1"
+ x1="7"
+ y1="17.5"
+ x2="41"
+ y2="17.5"
+ id="line18"
+ style="stroke-width:1.47801;stroke-miterlimit:10;stroke-dasharray:none" /><line
+ class="st1"
+ x1="7"
+ y1="25.5"
+ x2="41"
+ y2="25.5"
+ id="line20"
+ style="stroke-width:1.47801;stroke-miterlimit:10;stroke-dasharray:none" /></g>
+
+<g
+ id="x"
+ inkscape:label="x"
+ style="stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none"
+ transform="matrix(1.2833014,0,0,1.2251804,-6.9372327,-2.6670144)"><path
+ class="st2"
+ d="M 14.106487,7.2987516 C 26.983061,20.825658 26.983061,20.825658 15.277084,36.30356"
+ id="path22"
+ style="stroke:#cc0000;stroke-width:3.8281;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><path
+ class="st2"
+ d="m 34.006647,36.30356 c -12.096176,-14.047171 -12.096176,-14.047171 0,-29.0048084"
+ id="path24"
+ style="stroke:#cc0000;stroke-width:3.8281;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/describe.svg b/app/bin/bitmaps/svg/describe.svg
new file mode 100644
index 0000000..495a3b8
--- /dev/null
+++ b/app/bin/bitmaps/svg/describe.svg
@@ -0,0 +1,144 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="describe.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata928"><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="defs926" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1580"
+ inkscape:window-height="966"
+ id="namedview924"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="24"
+ inkscape:cy="19.482353"
+ 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="style893">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;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;}
+ .st5{fill:none;stroke:#FB0000;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+<g
+ id="ties"
+ inkscape:label="ties"
+ transform="matrix(1.3046527,0,0,1.3046527,-5.9214072,-2.9615326)"><line
+ class="st0"
+ x1="8"
+ y1="16"
+ x2="8"
+ y2="27"
+ id="line895"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="13"
+ y1="16"
+ x2="13"
+ y2="27"
+ id="line897"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="18"
+ y1="16"
+ x2="18"
+ y2="27"
+ id="line899"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="28"
+ y1="16"
+ x2="28"
+ y2="27"
+ id="line903"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="33"
+ y1="16"
+ x2="33"
+ y2="27"
+ id="line905"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="38"
+ y1="16"
+ x2="38"
+ y2="27"
+ id="line907"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g>
+
+<g
+ id="rail"
+ inkscape:label="rail"
+ transform="matrix(1.3046527,0,0,1.1147635,-6.0070121,1.1958036)"
+ style="stroke-width:1.49671;stroke-miterlimit:10;stroke-dasharray:none"><line
+ class="st1"
+ x1="6"
+ y1="17.5"
+ x2="40"
+ y2="17.5"
+ id="line909"
+ style="stroke-width:1.49671;stroke-miterlimit:10;stroke-dasharray:none" /><line
+ class="st1"
+ x1="6"
+ y1="25.5"
+ x2="40"
+ y2="25.5"
+ id="line911"
+ style="stroke-width:1.49671;stroke-miterlimit:10;stroke-dasharray:none" /></g>
+
+
+
+
+<g
+ id="question"
+ inkscape:label="question"
+ transform="matrix(1.8239805,0,0,1.6303501,-18.297728,-12.564437)"><path
+ class="st4"
+ d="M 18.825677,15.7 C 17.914059,11.7 27.6,11.1 27.6,15.3 c 0,3.9 -1.937188,5.6 -4.672042,5.7 v 7.5"
+ id="path919"
+ style="stroke:#cc0000;stroke-width:3.20245;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><rect
+ x="22.491764"
+ y="31.943529"
+ class="st5"
+ width="1"
+ height="1.1"
+ id="rect921"
+ style="stroke:#cc0000;stroke-opacity:1" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/description.svg b/app/bin/bitmaps/svg/description.svg
new file mode 100644
index 0000000..15f43e2
--- /dev/null
+++ b/app/bin/bitmaps/svg/description.svg
@@ -0,0 +1,143 @@
+<?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="description.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="metadata2191"><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="defs2189" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1578"
+ inkscape:window-height="889"
+ id="namedview2187"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="22.641414"
+ inkscape:cy="24.158828"
+ 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="style2160">
+ .st0{fill:none;stroke:#07ABFB;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000CBF;stroke-miterlimit:10;}
+ .st2{font-family:'MyriadPro-Regular';}
+ .st3{font-size:12px;}
+ .st4{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="4.4900389"
+ y1="31.815163"
+ x2="4.4900389"
+ y2="46.122471"
+ id="line2162" />
+<line
+ class="st0"
+ x1="10.993358"
+ y1="31.815163"
+ x2="10.993358"
+ y2="46.122471"
+ id="line2164" />
+<line
+ class="st0"
+ x1="17.496681"
+ y1="31.815163"
+ x2="17.496681"
+ y2="46.122471"
+ id="line2166" />
+<line
+ class="st0"
+ x1="24"
+ y1="31.815163"
+ x2="24"
+ y2="46.122471"
+ id="line2168" />
+<line
+ class="st0"
+ x1="30.503323"
+ y1="31.815163"
+ x2="30.503323"
+ y2="46.122471"
+ id="line2170" />
+<line
+ class="st0"
+ x1="37.006641"
+ y1="31.815163"
+ x2="37.006641"
+ y2="46.122471"
+ id="line2172" />
+<line
+ class="st0"
+ x1="43.509964"
+ y1="31.815163"
+ x2="43.509964"
+ y2="46.122471"
+ id="line2174" />
+<line
+ class="st1"
+ x1="1.8887103"
+ y1="35.076363"
+ x2="46.11129"
+ y2="35.076363"
+ id="line2176"
+ style="stroke-width:2.4;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="1.8887103"
+ y1="42.861271"
+ x2="46.11129"
+ y2="42.861271"
+ id="line2178"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+
+<line
+ class="st4"
+ x1="24.15"
+ y1="30.152931"
+ x2="24.15"
+ y2="15.152927"
+ id="line2182"
+ style="stroke:#cc0e00;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st5"
+ points="27.9,19.7 24,16 19.8,19.7 "
+ id="polyline2184"
+ transform="translate(0.14999976,-0.84707096)"
+ style="stroke:#cc0e00;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.6667px;line-height:1.25;font-family:'Gill Sans MT';-inkscape-font-specification:'Gill Sans MT Bold'"
+ x="3.2639496"
+ y="12.011017"
+ id="text2756"><tspan
+ sodipodi:role="line"
+ id="tspan2754"
+ x="3.2639496"
+ y="12.011017">DESC</tspan></text></svg>
diff --git a/app/bin/bitmaps/svg/dimension.svg b/app/bin/bitmaps/svg/dimension.svg
new file mode 100644
index 0000000..7443b8a
--- /dev/null
+++ b/app/bin/bitmaps/svg/dimension.svg
@@ -0,0 +1,148 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="dimension.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata1539"><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="defs1537" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1346"
+ inkscape:window-height="842"
+ id="namedview1535"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="24"
+ inkscape:cy="24.695735"
+ 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="style1492">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st5{font-family:'MyriadPro-Regular';}
+ .st6{font-size:12px;}
+</style>
+<path
+ class="st0"
+ d="M5.9,35.8"
+ id="path1494" />
+<path
+ class="st0"
+ d="M9.2,32.3"
+ id="path1496" />
+<path
+ class="st0"
+ d="M12.5,28.8"
+ id="path1498" />
+<path
+ class="st0"
+ d="M15.8,25.3"
+ id="path1500" />
+<path
+ class="st0"
+ d="M19.1,21.8"
+ id="path1502" />
+<path
+ class="st0"
+ d="M22.4,18.3"
+ id="path1504" />
+<path
+ class="st0"
+ d="M25.7,14.7"
+ id="path1506" />
+<path
+ class="st0"
+ d="M37.2,19.2"
+ id="path1508" />
+<path
+ class="st0"
+ d="M29,11.2"
+ id="path1510" />
+<path
+ class="st0"
+ d="M40.6,15.7"
+ id="path1512" />
+<path
+ class="st0"
+ d="M32.3,7.7"
+ id="path1514" />
+<path
+ class="st1"
+ d="M36.5,6.9"
+ id="path1516" />
+<path
+ class="st1"
+ d="M5.6,39.5"
+ id="path1518" />
+<path
+ class="st2"
+ d="M24.6,23.8"
+ id="path1520" />
+<path
+ class="st2"
+ d="M6,43.1"
+ id="path1522" />
+<line
+ class="st3"
+ x1="32.164993"
+ y1="15.832255"
+ x2="44.44154"
+ y2="3.2073443"
+ id="line1524"
+ style="stroke:#cc0e00;stroke-width:3.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st4"
+ points="42.6,12.6 42.1,5.8 35.5,5.8 "
+ id="polyline1526"
+ style="stroke:#cc0e00;stroke-width:2.94445055;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.1864868,0,0,1.1908708,-5.5442267,-3.6659913)" />
+<line
+ class="st3"
+ x1="15.726236"
+ y1="32.24678"
+ x2="4.0029783"
+ y2="44.370842"
+ id="line1528"
+ style="stroke:#cc0e00;stroke-width:3.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st4"
+ points="8,34 8.5,40.9 15.1,40.9 "
+ id="polyline1530"
+ style="stroke:#cc0e00;stroke-width:2.68761367;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.3022705,0,0,1.3022705,-6.8028116,-9.1468245)" />
+<text
+ class="st5 st6"
+ id="text1532"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:17.3333px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'"
+ x="12.357784"
+ y="30.296465">36</text>
+</svg>
diff --git a/app/bin/bitmaps/svg/doc-export-bmap.svg b/app/bin/bitmaps/svg/doc-export-bmap.svg
new file mode 100644
index 0000000..f6dd9c6
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-export-bmap.svg
@@ -0,0 +1,91 @@
+<?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-export-bmap.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ inkscape:export-filename="C:\Users\Russell\OneDrive\Desktop\XTC-Ribbon\svg\doc-export-bmap-64.png"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96"
+ 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="1331"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="7.6322099"
+ inkscape:cx="34.721267"
+ inkscape:cy="38.914024"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="layer2"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ 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 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="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" /><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"
+ sodipodi:nodetypes="ccc" /><rect
+ style="fill:#d58e5d;fill-opacity:1;stroke:#784521;stroke-width:0.536317;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect924-2-7"
+ width="12.223145"
+ height="8.0698709"
+ x="-39.133907"
+ y="-51.56028"
+ ry="0.11891395"
+ transform="matrix(-0.99999989,-4.716658e-4,0.00537433,-0.99998556,0,0)"
+ inkscape:transform-center-x="20.953983"
+ inkscape:transform-center-y="0.72420852" /><path
+ sodipodi:type="star"
+ style="fill:#488825;fill-opacity:1;stroke:#488825;stroke-width:0.560074;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path992-2"
+ sodipodi:sides="6"
+ sodipodi:cx="11.855275"
+ sodipodi:cy="15.882116"
+ sodipodi:r1="3.846628"
+ sodipodi:r2="3.0109019"
+ sodipodi:arg1="0.84914148"
+ sodipodi:arg2="1.3727403"
+ inkscape:flatsided="false"
+ inkscape:rounded="0.2"
+ inkscape:randomized="0"
+ d="m 14.396465,18.769832 c -0.292751,0.25762 -1.566414,-0.01241 -1.948754,0.06433 -0.382339,0.07673 -1.453195,0.81727 -1.822676,0.692551 C 10.255554,19.40199 9.8525707,18.163952 9.5949503,17.871202 9.3373299,17.578452 8.1605758,17.021333 8.0838452,16.638993 8.0071147,16.256654 8.8777948,15.288641 9.002514,14.91916 c 0.1247191,-0.369481 0.018821,-1.667139 0.3115714,-1.924759 0.2927505,-0.257621 1.5664136,0.0124 1.9487536,-0.06433 0.382339,-0.07673 1.453195,-0.81727 1.822676,-0.692551 0.369481,0.124719 0.772465,1.362756 1.030085,1.655507 0.25762,0.29275 1.434375,0.849869 1.511105,1.232208 0.07673,0.38234 -0.79395,1.350352 -0.918669,1.719833 -0.124719,0.369481 -0.01882,1.66714 -0.311571,1.92476 z" /><path
+ 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" /><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
new file mode 100644
index 0000000..d22f028
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-export-dxf.svg
@@ -0,0 +1,107 @@
+<?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-export-dxf.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="1443"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="32.004346"
+ inkscape:cy="32.961287"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="layer2"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:snap-bbox="true"><inkscape:grid
+ type="xygrid"
+ id="grid849" /></sodipodi:namedview><g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Export DXF"><g
+ id="grid"
+ transform="matrix(1.160237,0,0,1.0808223,-1.5115895,-2.4478775)"
+ inkscape:label="grid"
+ style="stroke:#666666;stroke-width:1.89694;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><g
+ id="g1735"
+ style="stroke:#666666;stroke-width:1.89694;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
+ style="fill:none;stroke:#666666;stroke-width:1.89694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 3.141179,15.31105 H 44.70585"
+ id="path855" /><path
+ style="fill:none;stroke:#666666;stroke-width:1.89694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 3.141179,48.484986 H 44.705851"
+ id="path855-1" /><path
+ style="fill:none;stroke:#666666;stroke-width:1.89694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 3.141179,37.427011 H 40.909775"
+ id="path855-2"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#666666;stroke-width:1.89694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 3.141179,26.369029 H 40.81244"
+ id="path855-4"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#666666;stroke-width:1.89694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 3.141179,4.2530693 H 44.70585"
+ id="path855-91" /><path
+ style="fill:none;stroke:#666666;stroke-width:1.89694;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 3.3519333,59.542966 44.432822,59.44459"
+ id="path855-40"
+ sodipodi:nodetypes="cc" /></g><g
+ id="g1721"
+ transform="matrix(1.0000001,0,0,1.0070684,-4.0552238e-7,-0.02780768)"
+ style="stroke:#666666;stroke-width:1.89027;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
+ 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 13.691837,3.93409 V 59.542971"
+ id="path949-0" /><path
+ 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 24.02984,3.93409 V 59.542971"
+ id="path949-7" /><path
+ 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 34.367842,35.060202 V 59.542971"
+ id="path949-9"
+ clip-path="none"
+ sodipodi:nodetypes="cc" /><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 34.166366,3.5704399 V 28.660365"
+ id="path949-9-6"
+ clip-path="none"
+ sodipodi:nodetypes="cc" /><path
+ 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.436613,43.120547 0.0019,16.965895"
+ id="path949-2-3"
+ sodipodi:nodetypes="cc" /><path
+ 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 3.3538333,3.3828771 V 59.542971"
+ id="path949-2-8" /><path
+ 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><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
new file mode 100644
index 0000000..6872f3c
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-export-svg.svg
@@ -0,0 +1,70 @@
+<?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-export-svg.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="1532"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="33.439757"
+ inkscape:cy="32.961287"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="layer2"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Export DXF"><path
+ sodipodi:type="star"
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#008000;stroke-width:6.80619;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2519"
+ inkscape:flatsided="false"
+ sodipodi:sides="8"
+ sodipodi:cx="27.432297"
+ sodipodi:cy="27.113317"
+ sodipodi:r1="24.592754"
+ sodipodi:r2="24.592754"
+ sodipodi:arg1="0.67204007"
+ sodipodi:arg2="1.0647392"
+ 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)" /><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"
+ sodipodi:nodetypes="cccc" /><path
+ 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" /><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
new file mode 100644
index 0000000..6954caf
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-export.svg
@@ -0,0 +1,66 @@
+<?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-export.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/"><rect
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:1.91414;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900"
+ width="59.480015"
+ height="42.939346"
+ x="2.3393428"
+ y="-45.517216"
+ 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" /></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="1583"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="29.984138"
+ inkscape:cy="31.366386"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><rect
+ style="fill:#d0d0d0;fill-opacity:1;stroke:#9c9c9c;stroke-width:1.10215;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect36"
+ width="29.763172"
+ height="30.887873"
+ x="9.1128759"
+ y="15.885306" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Export"><g
+ id="arrow"
+ transform="translate(2.4397,-0.74438648)"
+ 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.39951;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 57.802167,31.824812 H 31.366386"
+ id="path1706" /></g></g></svg>
diff --git a/app/bin/bitmaps/svg/doc-import-mod.svg b/app/bin/bitmaps/svg/doc-import-mod.svg
new file mode 100644
index 0000000..28bd818
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-import-mod.svg
@@ -0,0 +1,66 @@
+<?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-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"
+ 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/"><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.646675"
+ height="46.762989"
+ x="1.8175089"
+ y="-62.325417"
+ 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" /></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="1571"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="8.7705101"
+ inkscape:cx="35.117684"
+ inkscape:cy="32.951333"
+ inkscape:window-x="18"
+ inkscape:window-y="57"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Export"><rect
+ style="fill:#d0d0d0;fill-opacity:1;stroke:#9c9c9c;stroke-width:1.17;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect36"
+ width="32.256348"
+ height="31.92165"
+ x="22.810884"
+ y="16.09137" /><g
+ id="arrow"
+ transform="translate(-29.458331,-0.31907955)"
+ inkscape:label="arrow"
+ style="stroke:#02833c;stroke-width:4.7811;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
+ style="fill:none;fill-opacity:1;stroke:#02833c;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:#02833c;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>
diff --git a/app/bin/bitmaps/svg/doc-import.svg b/app/bin/bitmaps/svg/doc-import.svg
new file mode 100644
index 0000000..9a7eaa2
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-import.svg
@@ -0,0 +1,60 @@
+<?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-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"
+ 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/"><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.646675"
+ height="46.762989"
+ x="1.8175089"
+ y="-62.21909"
+ 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" /></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="1571"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="30.941079"
+ inkscape:cy="32.961287"
+ inkscape:window-x="18"
+ inkscape:window-y="57"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Export"><g
+ id="arrow"
+ transform="translate(-29.564658,-0.31907955)"
+ inkscape:label="arrow"
+ style="stroke:#02833c;stroke-width:4.7811;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
+ style="fill:none;fill-opacity:1;stroke:#02833c;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:#02833c;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>
diff --git a/app/bin/bitmaps/svg/doc-new.svg b/app/bin/bitmaps/svg/doc-new.svg
new file mode 100644
index 0000000..e324191
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-new.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-new.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="plus"
+ 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:#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></g></svg>
diff --git a/app/bin/bitmaps/svg/doc-open.svg b/app/bin/bitmaps/svg/doc-open.svg
new file mode 100644
index 0000000..ede9909
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-open.svg
@@ -0,0 +1,72 @@
+<?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-open.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" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ id="defs1663"><marker
+ style="overflow:visible"
+ id="Arrow1Lstart"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lstart"
+ inkscape:isstock="true"><path
+ transform="scale(0.8) translate(12.5,0)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path875" /></marker></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1581"
+ inkscape:window-height="943"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="8.1826993"
+ inkscape:cx="26.519366"
+ inkscape:cy="32.446506"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layout"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false"
+ inkscape:pagecheckerboard="0" /><g
+ id="Layout"
+ inkscape:label="#layout"
+ transform="translate(-0.22803691,0.91214765)"
+ style="opacity:1"><g
+ id="g1480"
+ transform="matrix(1.0113034,0,0,-2.2164172,-2.7819274,137.03913)"
+ style="stroke-width:1.4036;stroke-miterlimit:10;stroke-dasharray:none"><path
+ style="fill:#f6db93;fill-opacity:1;stroke:#674d09;stroke-width:0.741175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 4.9612505,58.671862 23.1549845,-0.06124 c 3.509047,-0.280952 3.845853,-1.595448 5.296087,-2.143264 l 24.386632,0.06124 V 36.933048 H 5.0844153 Z"
+ id="path1147"
+ sodipodi:nodetypes="ccccccc" /></g><path
+ id="path898"
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#9e9e9e;stroke-width:0.771915;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:transform-center-x="-0.086408966"
+ inkscape:transform-center-y="-2.125661"
+ d="m 50.078287,40.375329 -40.355118,0.05576 -0.1334945,-30.28419 31.4443435,0.07855 8.923599,8.061481 z"
+ sodipodi:nodetypes="cccccc" /><path
+ style="fill:#f6db93;fill-opacity:1;stroke:#674d09;stroke-width:1.10194px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 2.3773227,55.056954 10.246792,24.974007 h 51.861103 l -6.579394,30.082947 z"
+ id="path1149" /></g></svg>
diff --git a/app/bin/bitmaps/svg/doc-print.svg b/app/bin/bitmaps/svg/doc-print.svg
new file mode 100644
index 0000000..1926edf
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-print.svg
@@ -0,0 +1,94 @@
+<?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-print.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" /><dc:title /></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="1694"
+ inkscape:window-height="943"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="8.7705101"
+ inkscape:cx="31.982176"
+ inkscape:cy="38.025154"
+ 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:1.74846;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900-3"
+ width="21.686026"
+ height="43.641754"
+ x="1.2954774"
+ y="-54.048908"
+ transform="rotate(90)" /><g
+ id="g882"
+ transform="matrix(1.3128287,0,0,1.1627519,-9.9792225,-5.0700017)"
+ style="stroke-width:1.00005;stroke-miterlimit:4;stroke-dasharray:none"><rect
+ style="fill:#d9d9d9;fill-opacity:1;stroke:#797979;stroke-width:1.00005;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect884"
+ width="45.182987"
+ height="24.276136"
+ x="9.5583668"
+ y="24.055124"
+ ry="0.13436399" /></g><rect
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:1.74846;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900"
+ width="20.560341"
+ height="43.58411"
+ x="40.319885"
+ y="-54.020088"
+ transform="rotate(90)" /><path
+ style="fill:none;stroke:#333333;stroke-width:1.16565px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 13.25529,43.106167 H 42.861672"
+ id="path886" /><path
+ style="fill:none;stroke:#333333;stroke-width:1.16565px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 13.25529,46.681085 H 48.198877"
+ id="path888" /><path
+ style="fill:none;stroke:#333333;stroke-width:1.16565px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 13.25529,50.256011 H 45.077114"
+ id="path890" /><path
+ style="fill:none;stroke:#333333;stroke-width:1.16565px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 13.25529,53.830931 H 49.910812"
+ id="path892" /><path
+ style="fill:none;stroke:#333333;stroke-width:1.16565px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 13.25529,57.405849 H 42.257459"
+ id="path894" /><circle
+ style="fill:#d9d9d9;fill-opacity:1;stroke:#797979;stroke-width:2.04343;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path896"
+ sodipodi:type="arc"
+ sodipodi:cx="11.140548"
+ sodipodi:cy="28.202278"
+ sodipodi:rx="0.89170206"
+ sodipodi:ry="0.89170206"
+ sodipodi:start="1.5742817"
+ sodipodi:end="1.5686094"
+ sodipodi:arc-type="slice"
+ d="m 11.13744,29.093975 a 0.89170206,0.89170206 0 0 1 -0.888592,-0.89354 0.89170206,0.89170206 0 0 1 0.892279,-0.889859 0.89170206,0.89170206 0 0 1 0.891123,0.891017 0.89170206,0.89170206 0 0 1 -0.889752,0.892385 l -0.0019,-0.8917 z" /></g></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
new file mode 100644
index 0000000..f5b6290
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-revert.svg
@@ -0,0 +1,55 @@
+<?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-revert.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" /><dc:title /></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:1.2515;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900"
+ width="60.915188"
+ height="46.970032"
+ x="0.64903259"
+ y="-55.527374"
+ transform="rotate(90)" /><path
+ class="st0"
+ d="m 46.746873,49.389829 c 1.100724,0.102144 0.963134,0.102144 3.164588,0.102144 0,-11.746454 -3.577362,-30.030067 -21.876939,-30.336495 -0.275181,-2.96215 -0.137592,-5.617871 -0.137592,-5.617871 l -12.658353,8.375733 13.071127,9.499308 c 0,0 -0.275182,-2.349291 -0.275182,-5.720013 12.933536,-0.102143 18.161987,15.321463 18.712351,23.697194 z"
+ id="path4"
+ style="fill:#ffd000;fill-opacity:1;stroke:#a5690d;stroke-width:1.84077;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></svg>
diff --git a/app/bin/bitmaps/svg/doc-save-as.svg b/app/bin/bitmaps/svg/doc-save-as.svg
new file mode 100644
index 0000000..cf9244d
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-save-as.svg
@@ -0,0 +1,99 @@
+<?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-save-as.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="1582"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="38.756094"
+ inkscape:cy="32.961287"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Save"><g
+ id="g1480"
+ transform="matrix(1.1058567,0,0,1.1058567,-3.4510105,-2.7972238)"><rect
+ style="fill:#97c6dd;fill-opacity:1;stroke:#3b3b3b;stroke-width:1.05972;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1447"
+ width="55.608879"
+ height="18.713505"
+ x="4.2530689"
+ y="36.789047" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 8.0023498,39.872525 V 52.206426"
+ id="path1449" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 29.447147,39.872525 V 52.206426"
+ id="path1451" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 24.085947,39.872525 V 52.206426"
+ id="path1453" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 18.72475,39.872525 V 52.206426"
+ id="path1455" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 13.36355,39.872525 V 52.206426"
+ id="path1457" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 56.253142,39.872525 V 52.206426"
+ id="path1459" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 50.891944,39.872525 V 52.206426"
+ id="path1461" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 45.530746,39.872525 V 52.206426"
+ id="path1463" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 40.169551,39.872525 V 52.206426"
+ id="path1465" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 34.808346,39.872525 V 52.206426"
+ id="path1467" /></g><g
+ id="g1488"
+ transform="matrix(1.0806052,0,0,1.0806052,-3.5200239,-1.5422888)"><path
+ style="fill:none;stroke:#0078ff;stroke-width:7.55906;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 4.4608021,9.6803465 C 10.957255,9.6711193 10.684816,9.7556021 20.50994,9.7866732 30.747015,10.118781 32.138765,14.439738 32.840598,20.628278 v 11.158588"
+ id="path1482"
+ sodipodi:nodetypes="cccc" /><path
+ style="fill:none;fill-opacity:1;stroke:#0078ff;stroke-width:6.00947;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 24.263698,20.382729 8.5769,11.404137 8.430286,-11.209195"
+ id="path1484" /></g><g
+ id="g6458"
+ transform="matrix(1.2768147,0,0,1.2768147,5.6348825,14.0807)"><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></g></svg>
diff --git a/app/bin/bitmaps/svg/doc-save.svg b/app/bin/bitmaps/svg/doc-save.svg
new file mode 100644
index 0000000..3a553dd
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-save.svg
@@ -0,0 +1,90 @@
+<?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-save.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" /><dc:title /></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="1582"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="38.756094"
+ inkscape:cy="32.961287"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Save"><g
+ id="g1480"
+ transform="matrix(1.1058567,0,0,1.1058567,-3.4510105,-2.7972238)"><rect
+ style="fill:#97c6dd;fill-opacity:1;stroke:#3b3b3b;stroke-width:1.05972;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1447"
+ width="55.608879"
+ height="18.713505"
+ x="4.2530689"
+ y="36.789047" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 8.0023498,39.872525 V 52.206426"
+ id="path1449" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 29.447147,39.872525 V 52.206426"
+ id="path1451" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 24.085947,39.872525 V 52.206426"
+ id="path1453" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 18.72475,39.872525 V 52.206426"
+ id="path1455" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 13.36355,39.872525 V 52.206426"
+ id="path1457" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 56.253142,39.872525 V 52.206426"
+ id="path1459" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 50.891944,39.872525 V 52.206426"
+ id="path1461" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 45.530746,39.872525 V 52.206426"
+ id="path1463" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 40.169551,39.872525 V 52.206426"
+ id="path1465" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.10301px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 34.808346,39.872525 V 52.206426"
+ id="path1467" /></g><g
+ id="g1488"
+ transform="matrix(1.0806052,0,0,1.0806052,-3.5200239,-1.5422888)"><path
+ style="fill:none;stroke:#0078ff;stroke-width:7.55906;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 4.4608021,9.6803465 C 10.957255,9.6711193 10.684816,9.7556021 20.50994,9.7866732 30.747015,10.118781 32.138765,14.439738 32.840598,20.628278 v 11.158588"
+ id="path1482"
+ sodipodi:nodetypes="cccc" /><path
+ style="fill:none;fill-opacity:1;stroke:#0078ff;stroke-width:6.00947;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 24.263698,20.382729 8.5769,11.404137 8.430286,-11.209195"
+ id="path1484" /></g></g></svg>
diff --git a/app/bin/bitmaps/svg/doc-setup.svg b/app/bin/bitmaps/svg/doc-setup.svg
new file mode 100644
index 0000000..1219b1e
--- /dev/null
+++ b/app/bin/bitmaps/svg/doc-setup.svg
@@ -0,0 +1,101 @@
+<?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-setup.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" /><dc:title /></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="1697"
+ inkscape:window-height="943"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="8.1826993"
+ inkscape:cx="32.018774"
+ 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:1.81321;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900"
+ width="53.023766"
+ height="40.88517"
+ x="0.59824014"
+ y="-42.753574"
+ transform="rotate(90)" /><rect
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:1.20881;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900-3"
+ width="12.982697"
+ height="26.126856"
+ x="25.675159"
+ y="-58.653503"
+ transform="rotate(90)" /><g
+ id="g882"
+ transform="matrix(0.78594653,0,0,0.69610055,20.322029,21.864359)"
+ style="stroke-width:1.00005;stroke-miterlimit:4;stroke-dasharray:none"><rect
+ style="fill:#d9d9d9;fill-opacity:1;stroke:#797979;stroke-width:1.00005;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect884"
+ width="45.182987"
+ height="24.276136"
+ x="9.5583668"
+ y="24.055124"
+ ry="0.13436399" /></g><rect
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:1.20881;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect900-7"
+ width="12.872938"
+ height="26.065588"
+ x="49.05114"
+ y="-58.622875"
+ transform="rotate(90)" /><path
+ style="fill:none;stroke:#333333;stroke-width:0.906604;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 34.231752,51.148999 H 51.956101"
+ id="path886" /><path
+ style="fill:none;stroke:#333333;stroke-width:0.906604;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 34.231752,53.289181 H 55.151307"
+ id="path888" /><path
+ style="fill:none;stroke:#333333;stroke-width:0.906604;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 34.231752,55.42937 H 53.282414"
+ id="path890" /><path
+ style="fill:none;stroke:#333333;stroke-width:0.906604;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 34.231752,57.569555 H 56.176185"
+ id="path892" /><path
+ style="fill:none;stroke:#333333;stroke-width:0.906604;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 34.231752,59.70974 H 51.594381"
+ id="path894" /><circle
+ style="fill:#d9d9d9;fill-opacity:1;stroke:#797979;stroke-width:1.17965;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path896"
+ sodipodi:type="arc"
+ sodipodi:cx="32.965714"
+ sodipodi:cy="41.783356"
+ sodipodi:rx="0.53383213"
+ sodipodi:ry="0.53383213"
+ sodipodi:start="1.5742817"
+ sodipodi:end="1.5686094"
+ sodipodi:arc-type="slice"
+ d="m 32.963853,42.317185 a 0.53383213,0.53383213 0 0 1 -0.53197,-0.534933 0.53383213,0.53383213 0 0 1 0.534177,-0.532728 0.53383213,0.53383213 0 0 1 0.533485,0.533421 0.53383213,0.53383213 0 0 1 -0.532664,0.534242 l -0.0012,-0.533831 z" /></g></svg>
diff --git a/app/bin/bitmaps/svg/down.svg b/app/bin/bitmaps/svg/down.svg
new file mode 100644
index 0000000..41f83fb
--- /dev/null
+++ b/app/bin/bitmaps/svg/down.svg
@@ -0,0 +1,56 @@
+<?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 24 48"
+ style="enable-background:new 0 0 24 48;"
+ xml:space="preserve"
+ sodipodi:docname="down.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata13"><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="defs11" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1647"
+ inkscape:window-height="933"
+ id="namedview9"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="10.715926"
+ inkscape:cy="22.589078"
+ 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="style2">
+ .st0{stroke:#000000;stroke-miterlimit:10;}
+</style>
+
+
+<path
+ id="path838"
+ style="fill:#000000;fill-opacity:1;stroke-width:0.542529;stroke-linecap:square"
+ inkscape:transform-center-x="0.02977867"
+ inkscape:transform-center-y="-0.65983518"
+ d="m 21.394513,16.625061 -18.8746311,0.01685 0.1253841,3.396706 9.422005,11.319468 9.386564,-11.355799 z"
+ sodipodi:nodetypes="cccccc" /></svg>
diff --git a/app/bin/bitmaps/svg/elevation.svg b/app/bin/bitmaps/svg/elevation.svg
new file mode 100644
index 0000000..b6f9813
--- /dev/null
+++ b/app/bin/bitmaps/svg/elevation.svg
@@ -0,0 +1,139 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="elevation.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata33"><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="defs31" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1194"
+ inkscape:window-height="666"
+ id="namedview29"
+ showgrid="false"
+ inkscape:zoom="6.7085072"
+ inkscape:cx="21.31684"
+ 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="style2">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#F80E00;stroke-miterlimit:10;}
+ .st5{font-family:'MyriadPro-Regular';}
+ .st6{font-size:12px;}
+</style>
+<line
+ class="st0"
+ x1="5.7602229"
+ y1="29.971048"
+ x2="5.7602229"
+ y2="43.648643"
+ id="line4" />
+<line
+ class="st0"
+ x1="11.977306"
+ y1="29.971048"
+ x2="11.977306"
+ y2="43.648643"
+ id="line6" />
+<line
+ class="st0"
+ x1="18.194395"
+ y1="29.971048"
+ x2="18.194395"
+ y2="43.648643"
+ id="line8" />
+<line
+ class="st0"
+ x1="24.411482"
+ y1="29.971048"
+ x2="24.411482"
+ y2="43.648643"
+ id="line10" />
+<line
+ class="st0"
+ x1="30.628567"
+ y1="29.971048"
+ x2="30.628567"
+ y2="43.648643"
+ id="line12" />
+<line
+ class="st0"
+ x1="36.84565"
+ y1="29.971048"
+ x2="36.84565"
+ y2="43.648643"
+ id="line14" />
+<line
+ class="st0"
+ x1="43.062733"
+ y1="29.971048"
+ x2="43.062733"
+ y2="43.648643"
+ id="line16" />
+<line
+ class="st1"
+ x1="3.2733886"
+ y1="31.836174"
+ x2="45.549568"
+ y2="31.836174"
+ id="line18"
+ style="stroke-width:1.24342" />
+<line
+ class="st1"
+ x1="3.2733886"
+ y1="41.783516"
+ x2="45.549568"
+ y2="41.783516"
+ id="line20"
+ style="stroke-width:1.24342" />
+<line
+ class="st2"
+ x1="21.44589"
+ y1="36.504807"
+ x2="21.44589"
+ y2="12.933911"
+ id="line22"
+ style="stroke:#cc0e00;stroke-width:3.10854;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st3"
+ points="28.5,15.8 24,11.4 19.8,15.6 "
+ id="polyline24"
+ transform="matrix(1.2434171,0,0,1.2434171,-8.3961197,-2.041122)"
+ style="stroke:#cc0e00;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<text
+ class="st4 st5 st6"
+ id="text26"
+ x="30.474941"
+ y="21.261095"
+ style="font-size:23.2105px;fill:#cc0e00;fill-opacity:1;stroke:#cc0e00;stroke-width:1.24342;stroke-opacity:1">Z</text>
+</svg>
diff --git a/app/bin/bitmaps/svg/exit.svg b/app/bin/bitmaps/svg/exit.svg
new file mode 100644
index 0000000..210bdb9
--- /dev/null
+++ b/app/bin/bitmaps/svg/exit.svg
@@ -0,0 +1,88 @@
+<?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="exit.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="metadata33"><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="defs31" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1475"
+ inkscape:window-height="929"
+ id="namedview29"
+ showgrid="false"
+ inkscape:zoom="10.160412"
+ inkscape:cx="21.357402"
+ inkscape:cy="34.496633"
+ 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:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#F80E00;stroke-miterlimit:10;}
+ .st5{font-family:'MyriadPro-Regular';}
+ .st6{font-size:12px;}
+</style>
+
+
+
+
+
+
+
+
+
+<line
+ class="st2"
+ x1="23.713451"
+ y1="26.070175"
+ x2="23.713451"
+ y2="3.7465641"
+ id="line22"
+ style="stroke:#cc0e00;stroke-width:4.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st3"
+ points="28.5,15.8 24,11.4 19.8,15.6 "
+ id="polyline24"
+ transform="matrix(1.9103283,0,0,1.8174965,-22.134428,-16.972896)"
+ style="stroke:#cc0e00;stroke-width:2.41503;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:21.3333px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold'"
+ x="-0.028499108"
+ y="46.119984"
+ id="text844"><tspan
+ sodipodi:role="line"
+ x="-0.028499108"
+ y="46.119984"
+ id="tspan1266">EXIT</tspan></text></svg>
diff --git a/app/bin/bitmaps/svg/extend.svg b/app/bin/bitmaps/svg/extend.svg
new file mode 100644
index 0000000..eac7840
--- /dev/null
+++ b/app/bin/bitmaps/svg/extend.svg
@@ -0,0 +1,154 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="extend.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><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="1501"
+ inkscape:window-height="979"
+ id="namedview35"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="22.802042"
+ inkscape:cy="25.410264"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="true" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:none;stroke:#6AC2FF;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#CCCCCC;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#666666;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#2A73FF;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#005EFF;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FF3515;stroke-width:2;stroke-miterlimit:10;}
+ .st6{fill:none;stroke:#FF3515;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="8.0488663"
+ y1="46.883717"
+ x2="7.7823558"
+ y2="35.003647"
+ id="line4" />
+<line
+ class="st0"
+ x1="32.46632"
+ y1="33.972927"
+ x2="23.902817"
+ y2="27.012367"
+ id="line6" />
+<line
+ class="st1"
+ x1="43.030769"
+ y1="9.9180746"
+ x2="31.705139"
+ y2="9.3531666"
+ id="line8" />
+<line
+ class="st0"
+ x1="21.559429"
+ y1="42.421944"
+ x2="15.962461"
+ y2="32.486633"
+ id="line10" />
+<line
+ class="st1"
+ x1="39.806316"
+ y1="23.599007"
+ x2="29.234509"
+ y2="19.125751"
+ id="line12" />
+<line
+ class="st0"
+ x1="15.522112"
+ y1="45.15593"
+ x2="11.712162"
+ y2="34.346085"
+ id="line14" />
+<line
+ class="st0"
+ x1="27.655085"
+ y1="38.615269"
+ x2="20.143089"
+ y2="29.865065"
+ id="line16" />
+<line
+ class="st1"
+ x1="36.311913"
+ y1="29.410093"
+ x2="26.634504"
+ y2="23.426489"
+ id="line18" />
+<line
+ class="st1"
+ x1="42.116776"
+ y1="16.602833"
+ x2="30.827339"
+ y2="14.766017"
+ id="line20" />
+<path
+ class="st2"
+ d="m 41.023581,7.9807585 c 0,8.6737585 -2.714909,15.9041265 -7.964815,22.2953165"
+ id="path22"
+ sodipodi:nodetypes="cc"
+ style="stroke-width:1.82605;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st3"
+ d="M 27.139223,26.464154 C 21.448838,33.020546 12.504364,37.904414 4.9171842,37.904414"
+ id="path24"
+ sodipodi:nodetypes="cc"
+ style="stroke-width:1.82605;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st2"
+ d="M 33.914475,7.8666305 C 33.572089,15.170848 32.617385,19.844707 27.139223,26.464154"
+ id="path26"
+ sodipodi:nodetypes="cc"
+ style="stroke-width:1.826;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st4"
+ d="M 33.058766,30.276075 C 25.868678,39.07873 15.954277,44.437137 5.3752468,44.694932"
+ id="path28"
+ sodipodi:nodetypes="cc"
+ style="stroke-width:1.82605;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st5"
+ d="M 30.495417,28.297573 C 36.264116,21.614347 38.199674,10.242642 37.674486,2.4997028"
+ id="path30"
+ style="stroke:#cc1b00;stroke-width:2.28257;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" />
+<polyline
+ class="st6"
+ points="33.8,8.5 37.6,6.4 40.7,8.5 "
+ id="polyline32"
+ style="stroke:#cc1b00;stroke-width:1.56957;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.3817155,0,0,1.5306208,-14.278017,-7.2962703)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/filled-box.svg b/app/bin/bitmaps/svg/filled-box.svg
new file mode 100644
index 0000000..2d8e2dd
--- /dev/null
+++ b/app/bin/bitmaps/svg/filled-box.svg
@@ -0,0 +1,72 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="filled-box.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="1502"
+ inkscape:window-height="991"
+ id="namedview11"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:#00C9FF;stroke:#000000;stroke-miterlimit:10;}
+ .st1{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<rect
+ x="3.4919739"
+ y="4.7348843"
+ class="st0"
+ width="41.016052"
+ height="38.530231"
+ id="rect4"
+ style="fill:#80e2ff;fill-opacity:1;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="6.4384027"
+ y1="40.359879"
+ x2="40.216499"
+ y2="8.7573147"
+ id="line6"
+ style="stroke:#cc0e00;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st2"
+ points="39.9,18.3 39.4,11.4 32.7,11.4 "
+ id="polyline8"
+ style="stroke:#cc0e00;stroke-width:2.48773465;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.1910839,0,0,1.2209336,-6.7122048,-5.1613282)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/filled-polygon.svg b/app/bin/bitmaps/svg/filled-polygon.svg
new file mode 100644
index 0000000..6fe8cce
--- /dev/null
+++ b/app/bin/bitmaps/svg/filled-polygon.svg
@@ -0,0 +1,59 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="filled-polygon.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata857"><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="defs855" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1330"
+ inkscape:window-height="961"
+ id="namedview853"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="24"
+ 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="style846">
+ .st0{fill:#15C7FF;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+</style>
+<polygon
+ class="st0"
+ points="10.9,10 28.2,7.8 39.7,20.1 40,36.5 24.7,39.8 11.8,32.9 7.4,19.8 "
+ id="polygon848"
+ style="fill:#80e1ff;fill-opacity:1"
+ transform="matrix(1.3119381,0,0,1.3037001,-7.0644654,-7.0270096)" />
+<path
+ class="st1"
+ d="M3.5,28.2"
+ id="path850" />
+</svg>
diff --git a/app/bin/bitmaps/svg/go.svg b/app/bin/bitmaps/svg/go.svg
new file mode 100644
index 0000000..943e561
--- /dev/null
+++ b/app/bin/bitmaps/svg/go.svg
@@ -0,0 +1,106 @@
+<?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"
+ y="0px"
+ viewBox="0 0 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="go.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata42"><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="defs40"><radialGradient
+ inkscape:collect="always"
+ xlink:href="#SVGID_1_"
+ id="radialGradient867"
+ cx="23.599313"
+ cy="23.299802"
+ fx="23.599313"
+ fy="23.299802"
+ r="18.802058"
+ gradientTransform="matrix(1,0,0,1.1475892,0,-3.4387987)"
+ gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1523"
+ inkscape:window-height="918"
+ id="namedview38"
+ showgrid="false"
+ inkscape:zoom="14.378038"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:url(#SVGID_1_);stroke:#000000;stroke-miterlimit:10;}
+</style>
+<linearGradient
+ id="SVGID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="2.3596"
+ y1="25.2837"
+ x2="44.5404"
+ y2="25.2837"
+ gradientTransform="matrix(5.000000e-03 1 -1 5.000000e-03 48.7725 -0.2285)">
+
+
+
+
+
+
+
+
+ <stop
+ offset="0.08821"
+ style="stop-color:#b1e7ba;stop-opacity:1"
+ id="stop20" />
+ <stop
+ offset="0.3086791"
+ style="stop-color:#a0deac;stop-opacity:1"
+ id="stop22" />
+ <stop
+ offset="0.54394364"
+ style="stop-color:#6ece7c;stop-opacity:1"
+ id="stop24" />
+ <stop
+ offset="0.75441277"
+ style="stop-color:#36c450;stop-opacity:1"
+ id="stop26" />
+
+ <stop
+ offset="0.9501"
+ style="stop-color:#06ab21;stop-opacity:1"
+ id="stop30" />
+ <stop
+ offset="0.9992"
+ style="stop-color:#00a91a;stop-opacity:1"
+ id="stop32" />
+</linearGradient>
+<polygon
+ class="st0"
+ points="23.5,44.3 5.3,33.7 5.5,12.7 23.7,2.3 41.9,12.9 41.8,33.9 "
+ id="polygon35"
+ style="fill-opacity:1;fill:url(#radialGradient867)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/grid.svg b/app/bin/bitmaps/svg/grid.svg
new file mode 100644
index 0000000..23b9b93
--- /dev/null
+++ b/app/bin/bitmaps/svg/grid.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;stroke:#000000;stroke-miterlimit:10;}
+</style>
+<line class="st0" x1="4.9" y1="10.2" x2="42" y2="10.4"/>
+<line class="st0" x1="5" y1="17.5" x2="42" y2="17.5"/>
+<line class="st0" x1="5" y1="24.5" x2="42" y2="24.5"/>
+<line class="st0" x1="5" y1="31.5" x2="42" y2="31.5"/>
+<line class="st0" x1="5" y1="38.5" x2="42" y2="38.5"/>
+<line class="st0" x1="9.5" y1="7" x2="9.5" y2="42"/>
+<line class="st0" x1="16.5" y1="7" x2="16.5" y2="42"/>
+<line class="st0" x1="23.5" y1="7" x2="23.5" y2="42"/>
+<line class="st0" x1="30.5" y1="7" x2="30.5" y2="42"/>
+<line class="st0" x1="37.5" y1="7" x2="37.5" y2="42"/>
+</svg>
diff --git a/app/bin/bitmaps/svg/helix.svg b/app/bin/bitmaps/svg/helix.svg
new file mode 100644
index 0000000..c88f470
--- /dev/null
+++ b/app/bin/bitmaps/svg/helix.svg
@@ -0,0 +1,170 @@
+<?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="helix.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="metadata2607"><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="defs2605"><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1130"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /><inkscape:path-effect
+ effect="powerclip"
+ id="path-effect1126"
+ is_visible="true"
+ lpeversion="1"
+ inverse="true"
+ flatten="false"
+ hide_clip="false"
+ message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." /></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1440"
+ inkscape:window-height="741"
+ id="namedview2603"
+ showgrid="false"
+ inkscape:zoom="10.631993"
+ inkscape:cx="24.031242"
+ inkscape:cy="23.843131"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="true"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style2554">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#FF0000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FF0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st4{fill:#FB0000;}
+ .st5{font-family:'MyriadPro-Regular';}
+ .st6{font-size:12px;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#666666;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path6188"
+ sodipodi:type="arc"
+ sodipodi:cx="24.133484"
+ sodipodi:cy="30.883982"
+ sodipodi:rx="21.415539"
+ sodipodi:ry="14.88994"
+ sodipodi:start="1.5677882"
+ sodipodi:end="4.7181141"
+ sodipodi:arc-type="arc"
+ d="M 24.197904,45.773855 A 21.415539,14.88994 0 0 1 5.5881225,38.330203 21.415539,14.88994 0 0 1 5.6172887,23.402754 21.415539,14.88994 0 0 1 24.25609,15.994285"
+ sodipodi:open="true" /><path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#595959;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path6188-2"
+ sodipodi:type="arc"
+ sodipodi:cx="-24.210531"
+ sodipodi:cy="27.442301"
+ sodipodi:rx="21.415539"
+ sodipodi:ry="11.448045"
+ sodipodi:start="1.5617363"
+ sodipodi:end="4.744592"
+ sodipodi:arc-type="arc"
+ sodipodi:open="true"
+ d="m -24.016509,38.889876 a 21.415539,11.448045 0 0 1 -18.790484,-5.770157 21.415539,11.448045 0 0 1 0.25075,-11.583362 21.415539,11.448045 0 0 1 19.035238,-5.536165"
+ transform="scale(-1,1)" /><path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path6188-25"
+ sodipodi:type="arc"
+ sodipodi:cx="23.952087"
+ sodipodi:cy="24.000002"
+ sodipodi:rx="21.415539"
+ sodipodi:ry="14.88994"
+ sodipodi:start="1.5677882"
+ sodipodi:end="4.7181141"
+ sodipodi:arc-type="arc"
+ sodipodi:open="true"
+ d="M 24.016508,38.889875 A 21.415539,14.88994 0 0 1 5.406726,31.446223 21.415539,14.88994 0 0 1 5.4358922,16.518774 21.415539,14.88994 0 0 1 24.074693,9.1103057" /><path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#404040;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path6188-2-6"
+ sodipodi:type="arc"
+ sodipodi:cx="-24.029137"
+ sodipodi:cy="20.558321"
+ sodipodi:rx="21.415539"
+ sodipodi:ry="11.448045"
+ sodipodi:start="1.5617363"
+ sodipodi:end="4.744592"
+ sodipodi:arc-type="arc"
+ sodipodi:open="true"
+ transform="scale(-1,1)"
+ d="m -23.835114,32.005896 a 21.415539,11.448045 0 0 1 -18.790484,-5.770156 21.415539,11.448045 0 0 1 0.25075,-11.583363 21.415539,11.448045 0 0 1 19.035237,-5.5361653" /><path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#333333;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path6188-5"
+ sodipodi:type="arc"
+ sodipodi:cx="23.770693"
+ sodipodi:cy="17.116022"
+ sodipodi:rx="21.415539"
+ sodipodi:ry="14.88994"
+ sodipodi:start="1.5677882"
+ sodipodi:end="4.7181141"
+ sodipodi:arc-type="arc"
+ sodipodi:open="true"
+ d="M 23.835113,32.005895 A 21.415539,14.88994 0 0 1 5.2253314,24.562244 21.415539,14.88994 0 0 1 5.2544977,9.6347943 21.415539,14.88994 0 0 1 23.893299,2.2263259" /><path
+ style="opacity:1;fill:none;fill-rule:evenodd;stroke:#262626;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="path6188-2-96"
+ sodipodi:type="arc"
+ sodipodi:cx="-23.847742"
+ sodipodi:cy="13.674341"
+ sodipodi:rx="21.415539"
+ sodipodi:ry="11.448045"
+ sodipodi:start="1.5617363"
+ sodipodi:end="4.744592"
+ sodipodi:arc-type="arc"
+ sodipodi:open="true"
+ transform="scale(-1,1)"
+ d="M -23.653719,25.121916 A 21.415539,11.448045 0 0 1 -42.444204,19.35176 21.415539,11.448045 0 0 1 -42.193454,7.7683976 21.415539,11.448045 0 0 1 -23.158216,2.2322319" /></svg>
diff --git a/app/bin/bitmaps/svg/info.svg b/app/bin/bitmaps/svg/info.svg
new file mode 100644
index 0000000..979601d
--- /dev/null
+++ b/app/bin/bitmaps/svg/info.svg
@@ -0,0 +1,69 @@
+<?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 24 24"
+ style="enable-background:new 0 0 24 24;"
+ xml:space="preserve"
+ sodipodi:docname="Info.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="1225"
+ inkscape:window-height="900"
+ id="namedview11"
+ showgrid="false"
+ inkscape:zoom="18.981108"
+ inkscape:cx="12.697376"
+ inkscape:cy="12"
+ inkscape:window-x="509"
+ inkscape:window-y="7"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:#FFFFFF;stroke:#005CFE;stroke-miterlimit:10;}
+ .st1{fill:#00BEFC;stroke:#005CFE;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:#00AFFD;stroke:#005CFE;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<ellipse
+ transform="matrix(0.03517289,-0.99938124,0.99934733,0.03612357,0,0)"
+ class="st0"
+ cx="-11.55869"
+ cy="12.414656"
+ id="ellipse4"
+ style="stroke-width:2.09873;stroke-miterlimit:10;stroke-dasharray:none"
+ rx="9.9303188"
+ ry="9.7989435" />
+<path
+ class="st1"
+ d="m 13,17.344792 c 0,0.468616 -0.4,0.937232 -1,0.937232 -0.5,0 -1,-0.374893 -1,-0.937232 0,-0.562339 0.4,-0.937232 1,-0.937232 0.5,0.09372 1,0.468616 1,0.937232 z"
+ id="path6" />
+<path
+ class="st2"
+ d="m 12.01408,14.088782 c 0,0 -0.480201,-1.868907 -0.761396,-3.822605 -0.529551,-3.6792392 0.661396,-4.5482251 0.661396,-4.5482251 0,0 1.226159,0.9594783 0.796656,4.5532561 -0.255236,2.135635 -0.696656,3.817574 -0.696656,3.817574 z"
+ id="path8"
+ sodipodi:nodetypes="cscsc"
+ style="stroke-linejoin:round" />
+</svg>
diff --git a/app/bin/bitmaps/svg/join-line.svg b/app/bin/bitmaps/svg/join-line.svg
new file mode 100644
index 0000000..feb8a93
--- /dev/null
+++ b/app/bin/bitmaps/svg/join-line.svg
@@ -0,0 +1,94 @@
+<?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="svg1519"
+ sodipodi:docname="join-line.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata1523"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1454"
+ inkscape:window-height="888"
+ id="namedview1521"
+ showgrid="false"
+ inkscape:zoom="8.7705101"
+ inkscape:cx="32"
+ inkscape:cy="32"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g1515"
+ inkscape:document-rotation="0" /><defs
+ id="defs1493"><clipPath
+ id="clipPath2821"><path
+ d="m0 48h48v-48h-48z"
+ id="path1490" /></clipPath></defs><g
+ transform="matrix(1.3333,0,0,-1.3333,0,64)"
+ id="g1517"><g
+ clip-path="url(#clipPath2821)"
+ id="g1515"><g
+ transform="matrix(1.3145504,0,0,1.3145504,44.440574,45.894188)"
+ id="g1497"
+ style="stroke-width:1.42638;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 C -0.224,-3.8 -0.994,-8.962 -2.938,-12.877"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path1495"
+ style="stroke-width:1.42638;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="matrix(1.3145504,0,0,1.3145504,20.707682,7.9609974)"
+ id="g1501"
+ style="stroke-width:1.42638;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 C -4.396,-2.414 -9.159,-3.782 -13.756,-3.782"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path1499"
+ style="stroke-width:1.42638;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="translate(20.860044,9.2266046)"
+ id="g1505"><path
+ d="M -1.3643768,-1.428611 C 7.6547534,2.8134428 16.617357,12.690975 20.206079,20.918744"
+ fill="none"
+ stroke="#ff3515"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path1503"
+ style="stroke:#cc1a00;stroke-width:2.46485;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.3145504,0,0,1.3145504,35.788203,30.460053)"
+ id="g1509"
+ style="stroke-width:0.999775;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 4.322,0.468 6.307,-2.751"
+ fill="none"
+ stroke="#ff3515"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path1507"
+ style="stroke:#cc1a00;stroke-width:1.87505;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.3145504,0,0,1.3145504,24.610582,5.2201604)"
+ id="g1513"><path
+ d="m 0,0 -3.818,2.082 0.207,3.776"
+ fill="none"
+ stroke="#ff3515"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path1511"
+ style="stroke:#cc1a00;stroke-width:1.87505;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></g></g></svg>
diff --git a/app/bin/bitmaps/svg/join.svg b/app/bin/bitmaps/svg/join.svg
new file mode 100644
index 0000000..c441656
--- /dev/null
+++ b/app/bin/bitmaps/svg/join.svg
@@ -0,0 +1,154 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="join.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata962"><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="defs960" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1364"
+ inkscape:window-height="842"
+ id="namedview958"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false" />
+<style
+ type="text/css"
+ id="style911">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#CCCCCC;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#B3B3B3;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#808080;stroke-linecap:round;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FF3515;stroke-width:2;stroke-miterlimit:10;}
+ .st6{fill:none;stroke:#FF3515;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="4.7765999"
+ y1="46.437527"
+ x2="4.25386"
+ y2="34.322994"
+ id="line913"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+
+<line
+ class="st0"
+ x1="45.788837"
+ y1="3.8463986"
+ x2="33.064186"
+ y2="3.1967058"
+ id="line917"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+<path
+ class="st2"
+ d="M 15.061216,31.402502"
+ id="path919" />
+<path
+ class="st2"
+ d="M 21.125158,41.15754"
+ id="path921" />
+<path
+ class="st2"
+ d="M 30.616547,15.188049"
+ id="path923" />
+<path
+ class="st2"
+ d="M 42.217131,19.406444"
+ id="path925" />
+<line
+ class="st0"
+ x1="13.55937"
+ y1="45.097534"
+ x2="9.8468332"
+ y2="33.243919"
+ id="line927"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+
+
+<line
+ class="st0"
+ x1="44.724155"
+ y1="11.753452"
+ x2="32.387802"
+ y2="9.2630863"
+ id="line933"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+<path
+ class="st3"
+ d="M 43.37784,1.6100916 C 43.114189,6.6194351 42.059591,13.474326 39.554918,18.615495"
+ id="path935"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st3"
+ d="M 16.115816,32.773806 C 11.633771,35.410302 6.7562524,36.860375 2.1423833,36.860375"
+ id="path937"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st3"
+ d="M 35.942594,1.4782669 C 36.074418,6.2239605 34.756171,11.628778 32.646973,15.978998"
+ id="path939"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st3"
+ d="M 20.202385,38.890802 C 14.402092,42.054599 8.0745012,43.900146 2.1423833,43.900146"
+ id="path941"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+
+<path
+ class="st4"
+ d="M 18.333961,46.5495"
+ id="path945" />
+<path
+ class="st4"
+ d="M 20.333961,46.5495"
+ id="path947" />
+
+<path
+ class="st5"
+ d="M 14.948598,37.230225 C 24.078207,33.30287 33.464632,24.34554 36.647664,15.972193"
+ id="path951"
+ style="stroke:#cc1a00;stroke-width:3.46926;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cc" />
+<polyline
+ class="st6"
+ points="30.9,20.2 35.2,19.9 37.1,23.2 "
+ id="polyline953"
+ style="stroke:#cc1a00;stroke-width:1.91786;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.8215816,-0.10780836,0.10780836,1.8215816,-28.758825,-17.280872)" />
+<polyline
+ class="st6"
+ points="21.8,39.1 18,37 18.4,33.2 "
+ id="polyline955"
+ style="stroke:#cc1a00;stroke-width:1.93219;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.8040301,0,0,1.8040301,-16.833582,-29.960531)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/layers.svg b/app/bin/bitmaps/svg/layers.svg
new file mode 100644
index 0000000..b261d30
--- /dev/null
+++ b/app/bin/bitmaps/svg/layers.svg
@@ -0,0 +1,98 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="layers.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata1539"><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="defs1537" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1338"
+ inkscape:window-height="936"
+ id="namedview1535"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="24"
+ inkscape:cy="24.722465"
+ 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="style1492">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st5{font-family:'MyriadPro-Regular';}
+ .st6{font-size:12px;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<rect
+ style="fill:#999999;fill-opacity:1;stroke:#000000;stroke-width:2.00793;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98"
+ id="rect860-7"
+ width="33.315411"
+ height="15.514964"
+ x="25.02117"
+ y="30.31708"
+ ry="0.29794645"
+ transform="matrix(1,0,-0.45844986,0.88872027,0,0)" /><rect
+ style="fill:#bfbfbf;fill-opacity:1;stroke:#000000;stroke-width:2.00793;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98"
+ id="rect860-8"
+ width="33.315411"
+ height="15.514964"
+ x="19.462948"
+ y="18.680857"
+ ry="0.29794645"
+ transform="matrix(1,0,-0.45844986,0.88872027,0,0)" /><rect
+ style="opacity:1;fill:#e5e5e5;fill-opacity:1;stroke:#000000;stroke-width:2.00793;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98"
+ id="rect860"
+ width="33.315411"
+ height="15.514964"
+ x="14.359009"
+ y="7.5478206"
+ ry="0.29794645"
+ transform="matrix(1,0,-0.45844986,0.88872027,0,0)" /></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
new file mode 100644
index 0000000..9d0b3a6
--- /dev/null
+++ b/app/bin/bitmaps/svg/magnet.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg23"
+ sodipodi:docname="magnet.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="metadata27"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1446"
+ inkscape:window-height="937"
+ id="namedview25"
+ showgrid="false"
+ inkscape:zoom="7.9847123"
+ inkscape:cx="32.123888"
+ inkscape:cy="32.123888"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g925"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:snap-nodes="true"
+ inkscape:snap-others="true" /><defs
+ id="defs5"><clipPath
+ id="clipPath1505"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ id="g880"
+ transform="matrix(1.3226362,0,0,1.3226362,-8.1164854,-11.85842)"><path
+ d="m 14.435367,34.575808 c 0,0 14.228208,-19.311121 19.633295,-19.660002 5.403604,-0.348882 14.272694,6.170391 14.272694,11.69849 -0.591669,5.412776 -17.564682,22.176623 -17.564682,22.176623"
+ fill="none"
+ stroke="#f80e00"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="8.82763"
+ id="path7"
+ style="stroke-width:8.97904;stroke-miterlimit:10;stroke-dasharray:none" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.51213;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 11.330754,30.48781 c 5.957485,-7.27871 12.690173,-17.209345 21.393032,-20.040332 5.117394,-0.344091 9.646675,1.097298 13.772433,4.543503 4.922997,3.906705 6.190886,6.874275 6.767488,11.533505 -0.721479,7.262755 -11.340738,17.177757 -18.740785,25.161964"
+ id="path870"
+ sodipodi:nodetypes="ccccc" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.65482;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 18.475636,36.915263 c 8.069478,-11.086752 9.916753,-12.484666 15.946619,-17.8605 5.171653,1.210228 7.461614,3.144793 10.176073,7.550811 -5.574625,8.638889 -9.088159,10.653142 -17.119996,18.472961"
+ id="path872"
+ sodipodi:nodetypes="cccc" /></g><g
+ id="g930"
+ transform="matrix(1.4474381,0,0,1.4474381,-11.767259,-16.212821)"
+ style="stroke-width:1.51213;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="m 30.476571,54.014516 -6.441172,-5.87452 3.59591,-3.939901 6.439839,5.873186 z"
+ fill="#ffe003"
+ id="path11"
+ style="stroke-width:1.51214;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ style="fill:none;stroke:#332c00;stroke-width:1.38175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 27.631309,44.200095 -3.59591,3.939901 6.441172,5.87452 3.594577,-3.941235"
+ id="path867" /></g><g
+ id="g925"
+ transform="matrix(1.4474381,0,0,1.4474381,-11.767259,-16.212821)"
+ style="stroke-width:1.51213;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="m 15.810271,40.681916 -6.4411723,-5.87452 3.5959103,-3.939901 6.439839,5.873186 z"
+ fill="#ffe003"
+ id="path15"
+ style="stroke-width:1.51214;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ style="fill:none;stroke:#332d00;stroke-width:1.38175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 12.965009,30.867495 -3.5959103,3.939901 6.4411723,5.87452 3.594577,-3.941235"
+ id="path865" /></g></svg>
diff --git a/app/bin/bitmaps/svg/manage.svg b/app/bin/bitmaps/svg/manage.svg
new file mode 100644
index 0000000..2791e15
--- /dev/null
+++ b/app/bin/bitmaps/svg/manage.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg75"
+ sodipodi:docname="manage.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="metadata79"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1532"
+ inkscape:window-height="913"
+ id="namedview77"
+ showgrid="false"
+ inkscape:zoom="5.3929307"
+ inkscape:cx="31.986319"
+ inkscape:cy="21.046071"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g73"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs5"><clipPath
+ id="clipPath4002"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ transform="matrix(2.2443875,0,0,-2.2010601,-22.872113,82.32556)"
+ id="g73"><g
+ transform="translate(12.5,35)"
+ id="g21" /><path
+ sodipodi:type="star"
+ style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:4.30787;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3469"
+ inkscape:flatsided="false"
+ sodipodi:sides="8"
+ sodipodi:cx="3.0788169"
+ sodipodi:cy="2.956532"
+ sodipodi:r1="42.981846"
+ sodipodi:r2="30.087292"
+ sodipodi:arg1="0.76729149"
+ sodipodi:arg2="1.1599906"
+ inkscape:rounded="0.7"
+ inkscape:randomized="0"
+ d="m 34.016871,32.794023 c -9.260139,9.601701 -6.693085,-7.580595 -18.92275,-2.253481 -12.2296636,5.327113 2.100246,15.149269 -11.2370884,15.39079 -13.337335,0.241521 0.6275641,-10.093016 -11.7869529,-14.973857 -12.4145157,-4.88084 -9.2270537,12.19725 -18.8287537,2.937111 -9.601701,-9.260139 7.580595,-6.693085 2.253481,-18.92275 -5.327113,-12.2296635 -15.14927,2.100246 -15.39079,-11.2370883 -0.241521,-13.337335 10.093016,0.6275641 14.973857,-11.7869529 4.88084,-12.4145158 -12.19725,-9.2270538 -2.937111,-18.8287538 9.260139,-9.601701 6.693085,7.580595 18.9227497,2.253481 12.2296637,-5.327113 -2.1002457,-15.149269 11.2370885,-15.39079 13.3373348,-0.241521 -0.6275641,10.093016 11.7869528,14.973857 12.414516,4.88084 9.227054,-12.19725 18.828754,-2.937111 9.601701,9.260139 -7.580595,6.693085 -2.253481,18.9227498 C 35.98994,3.1708915 45.812096,-11.159018 46.053617,2.1783163 46.295138,15.515651 35.960601,1.5507522 31.07976,13.965269 c -4.88084,12.414516 12.197249,9.227054 2.937111,18.828754 z"
+ transform="matrix(0.31028492,0,0,-0.31639281,23.493281,23.799663)" /><path
+ sodipodi:type="star"
+ style="opacity:1;fill:#e5e5e5;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.65588;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path5664"
+ inkscape:flatsided="false"
+ sodipodi:sides="10"
+ sodipodi:cx="32.635319"
+ sodipodi:cy="31.522749"
+ sodipodi:r1="12.211524"
+ sodipodi:r2="12.211524"
+ sodipodi:arg1="0.73168643"
+ sodipodi:arg2="1.0458457"
+ inkscape:rounded="1"
+ inkscape:randomized="0"
+ d="m 41.721287,39.681578 c -2.552644,2.842717 0.340241,0.493623 -2.965915,2.408397 -3.306157,1.914775 0.17105,0.574604 -3.564989,1.374004 -3.73604,0.7994 -0.01488,0.599338 -3.815097,0.205112 -3.800213,-0.394225 -0.199361,0.565405 -3.691756,-0.983855 -3.492395,-1.549261 -0.364323,0.476126 -3.20704,-2.076518 -2.842718,-2.552644 -0.493623,0.340241 -2.408397,-2.965916 -1.914775,-3.306157 -0.574604,0.17105 -1.374004,-3.564989 -0.7994,-3.73604 -0.599338,-0.01488 -0.205113,-3.815097 0.394225,-3.800213 -0.565405,-0.199361 0.983856,-3.691756 1.549261,-3.492395 -0.476126,-0.364323 2.076518,-3.20704 2.552644,-2.842717 -0.340241,-0.493623 2.965916,-2.408397 3.306157,-1.914775 -0.171051,-0.574604 3.564989,-1.374004 3.73604,-0.7994 0.01488,-0.599338 3.815097,-0.205113 3.800213,0.394226 0.19936,-0.565404 3.691755,0.983856 3.492396,1.549261 0.364323,-0.476126 3.207041,2.076518 2.842717,2.552644 0.493623,-0.340241 2.408397,2.965916 1.914774,3.306157 0.574603,-0.171051 1.374004,3.564989 0.7994,3.73604 0.599337,0.01488 0.205112,3.815097 -0.394225,3.800213 0.565405,0.19936 -0.983856,3.691756 -1.54926,3.492395 0.476127,0.364323 -2.076518,3.20704 z"
+ transform="matrix(0.36562159,0,0,-0.37281877,12.516414,34.61651)" /></g></svg>
diff --git a/app/bin/bitmaps/svg/map.svg b/app/bin/bitmaps/svg/map.svg
new file mode 100644
index 0000000..69686be
--- /dev/null
+++ b/app/bin/bitmaps/svg/map.svg
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg75"
+ sodipodi:docname="map.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="metadata79"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1532"
+ inkscape:window-height="913"
+ id="namedview77"
+ showgrid="false"
+ inkscape:zoom="8.1776315"
+ inkscape:cx="31.977474"
+ inkscape:cy="20.971843"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g73"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs5"><clipPath
+ id="clipPath4002"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ transform="matrix(2.2443875,0,0,-2.2010601,-22.872113,82.32556)"
+ id="g73"><g
+ transform="matrix(1.1604879,0,0,-1.2603903,11.985406,19.218785)"
+ id="g9"
+ inkscape:label="Blue"
+ style="stroke-width:1.39564;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 5.547,1.772 7.165,1.541 9.63,3.39 l 3.775,-2.388 1.696,-1.079 2.003,-2.85 4.622,4.083"
+ fill="none"
+ stroke="#0dc7f9"
+ stroke-miterlimit="10"
+ id="path7"
+ style="stroke-width:1.39564;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.0718729,0,0,1.0718729,19.14911,19.235271)"
+ id="g13"
+ inkscape:label="Yellow"
+ style="stroke-width:1.57472;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="m -7.2464661,7.5557829 4.4623989,1.683774 3.8630671,-2.483018 4.6657906,1.0624365 3.4740871,3.9357916 4.4085404,-2.4503968 1.053245,-4.7487168 2.235,-0.077"
+ fill="none"
+ stroke="#f79e0f"
+ stroke-miterlimit="10"
+ id="path11"
+ style="stroke-width:1.57472;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:nodetypes="cccccccc" /></g><g
+ transform="matrix(1.332436,0,0,1.0673884,12.044914,20.992887)"
+ id="g17"
+ inkscape:label="Magenta"
+ style="stroke-width:1.41534;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="m 0,0 c 2.157,1.079 4.227,1.31 4.227,1.31 h 1.254 l 3.137,2.544 3.39,-4.083 0.848,-2.621 1.771,-1.386 4.238,2.773"
+ fill="none"
+ stroke="#f411b4"
+ stroke-miterlimit="10"
+ id="path15"
+ style="stroke-width:1.41534;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="translate(12.5,35)"
+ id="g21" /><g
+ transform="matrix(1.0718729,0,0,1.0718729,20.304589,9.7384755)"
+ id="Map"
+ inkscape:label="Map"
+ style="stroke:#333333;stroke-opacity:1;stroke-width:1.04937774;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M -8.166,24.422 V 4.1442139"
+ fill="none"
+ stroke="#050001"
+ stroke-miterlimit="10"
+ id="path19"
+ style="stroke-width:1.04937774;stroke:#333333;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="m -0.154,20.031 v -20"
+ fill="none"
+ stroke="#050001"
+ stroke-miterlimit="10"
+ id="path27"
+ style="stroke:#333333;stroke-opacity:1;stroke-width:1.04937774;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="m 8.012,24.423 v -20"
+ fill="none"
+ stroke="#050001"
+ stroke-miterlimit="10"
+ id="path31"
+ style="stroke:#333333;stroke-opacity:1;stroke-width:1.04937774;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="m 15.87,20.186 v -20"
+ fill="none"
+ stroke="#050001"
+ stroke-miterlimit="10"
+ id="path35"
+ style="stroke:#333333;stroke-opacity:1;stroke-width:1.04937774;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="m -8.166,24.422 8.012,-4.391"
+ fill="none"
+ stroke="#050001"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path39"
+ style="stroke:#333333;stroke-opacity:1;stroke-width:1.04937774;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="m -0.154,20.031 8.166,4.392"
+ fill="none"
+ stroke="#050001"
+ stroke-miterlimit="10"
+ id="path43"
+ style="stroke:#333333;stroke-opacity:1;stroke-width:1.04937774;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="M 7.935,24.5 15.87,20.186"
+ fill="none"
+ stroke="#050001"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path47"
+ style="stroke:#333333;stroke-opacity:1;stroke-width:1.04937774;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="M 0,0 -8.166,4.1442139"
+ fill="none"
+ stroke="#050001"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path51"
+ style="stroke-width:1.04937774;stroke:#333333;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="M 8.09,4.623 -0.154,0.031"
+ fill="none"
+ stroke="#050001"
+ stroke-miterlimit="10"
+ id="path55"
+ style="stroke-width:1.04937774;stroke:#333333;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="M 15.907,0.366 7.895,4.68"
+ fill="none"
+ stroke="#050001"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path59"
+ style="stroke:#333333;stroke-opacity:1;stroke-width:1.04937774;stroke-miterlimit:4;stroke-dasharray:none" /></g></g></svg>
diff --git a/app/bin/bitmaps/svg/move.svg b/app/bin/bitmaps/svg/move.svg
new file mode 100644
index 0000000..9c1e906
--- /dev/null
+++ b/app/bin/bitmaps/svg/move.svg
@@ -0,0 +1,231 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="move.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata57"><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="defs55" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1250"
+ inkscape:window-height="856"
+ id="namedview53"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:none;stroke:#CCCCCC;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#00FFFF;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#808080;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FB0000;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#808080;stroke-width:2;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FB0000;stroke-miterlimit:10;}
+ .st6{fill:none;stroke:#007CBF;stroke-miterlimit:10;}
+ .st7{fill:none;stroke:#007CBF;stroke-width:2;stroke-miterlimit:10;}
+ .st8{fill:none;stroke:#FF0B00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="44.622711"
+ y1="4.6662092"
+ x2="30.444595"
+ y2="4.6662092"
+ id="line4"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="44.622711"
+ y1="11.110806"
+ x2="30.444595"
+ y2="11.110806"
+ id="line6"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="44.622711"
+ y1="17.555403"
+ x2="30.444595"
+ y2="17.555403"
+ id="line8"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="44.622711"
+ y1="24"
+ x2="30.444595"
+ y2="24"
+ id="line10"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="44.622711"
+ y1="30.444595"
+ x2="30.444595"
+ y2="30.444595"
+ id="line12"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="44.622711"
+ y1="36.889191"
+ x2="30.444595"
+ y2="36.889191"
+ id="line14"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="44.622711"
+ y1="43.33379"
+ x2="30.444595"
+ y2="43.33379"
+ id="line16"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st1"
+ x1="17.555403"
+ y1="4.6662092"
+ x2="3.3772895"
+ y2="4.6662092"
+ id="line18"
+ style="stroke:#00cccc;stroke-opacity:1" />
+<line
+ class="st1"
+ x1="17.555403"
+ y1="11.110806"
+ x2="3.3772895"
+ y2="11.110806"
+ id="line20"
+ style="stroke:#00cccc;stroke-opacity:1" />
+<line
+ class="st1"
+ x1="17.555403"
+ y1="17.555403"
+ x2="3.3772895"
+ y2="17.555403"
+ id="line22"
+ style="stroke:#00cccc;stroke-opacity:1" />
+<line
+ class="st1"
+ x1="17.555403"
+ y1="24"
+ x2="3.3772895"
+ y2="24"
+ id="line24"
+ style="stroke:#00cccc;stroke-opacity:1" />
+<line
+ class="st1"
+ x1="17.555403"
+ y1="30.444595"
+ x2="3.3772895"
+ y2="30.444595"
+ id="line26"
+ style="stroke:#00cccc;stroke-opacity:1" />
+<line
+ class="st1"
+ x1="17.555403"
+ y1="36.889191"
+ x2="3.3772895"
+ y2="36.889191"
+ id="line28"
+ style="stroke:#00cccc;stroke-opacity:1" />
+<line
+ class="st1"
+ x1="17.555403"
+ y1="43.33379"
+ x2="3.3772895"
+ y2="43.33379"
+ id="line30"
+ style="stroke:#00cccc;stroke-opacity:1" />
+<line
+ class="st2"
+ x1="41.411499"
+ y1="2.0883698"
+ x2="41.411499"
+ y2="45.911629"
+ id="line32"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke:#666666;stroke-opacity:1" />
+<line
+ class="st2"
+ x1="33.655811"
+ y1="2.0883698"
+ x2="33.655811"
+ y2="45.911629"
+ id="line34"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke:#666666;stroke-opacity:1" />
+<path
+ class="st3"
+ d="M 41.271518,38.04922"
+ id="path36" />
+<path
+ class="st4"
+ d="M 38.822572,24.773351"
+ id="path38" />
+<path
+ class="st5"
+ d="M 24.902243,36.502517"
+ id="path40"
+ style="stroke-width:1.28891" />
+<line
+ class="st6"
+ x1="14.344203"
+ y1="2.0883698"
+ x2="14.344203"
+ y2="45.911629"
+ id="line42"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke:#006699;stroke-opacity:1" />
+<line
+ class="st6"
+ x1="6.5884933"
+ y1="2.0883698"
+ x2="6.5884933"
+ y2="45.911629"
+ id="line44"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke:#006699;stroke-opacity:1" />
+<path
+ class="st7"
+ d="M 11.755265,24.773351"
+ id="path46" />
+<line
+ class="st8"
+ x1="11.05998"
+ y1="24"
+ x2="35.821922"
+ y2="24"
+ id="line48"
+ style="stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1" />
+<polyline
+ class="st8"
+ points="30.5,18.7 34,23 30.5,27.2 "
+ id="polyline50"
+ transform="matrix(1.2889194,0,0,1.2889194,-6.9340656,-5.6451464)"
+ style="stroke:#cc0000;stroke-opacity:1;stroke-width:2.32753111;stroke-miterlimit:10;stroke-dasharray:none" />
+</svg>
diff --git a/app/bin/bitmaps/svg/new-car.svg b/app/bin/bitmaps/svg/new-car.svg
new file mode 100644
index 0000000..6b0d579
--- /dev/null
+++ b/app/bin/bitmaps/svg/new-car.svg
@@ -0,0 +1,136 @@
+<?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="new-car.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/"><path
+ class="st2"
+ d="m 38.526196,43.498826 c 0,1.548439 -1.204339,2.924827 -2.924825,2.924827 -1.720486,0 -2.924824,-1.20434 -2.924824,-2.924827 0,-1.720483 1.204338,-2.924823 2.924824,-2.924823 1.720486,0 2.924825,1.376388 2.924825,2.924823 z"
+ id="path43-6"
+ style="fill:#000401;stroke-width:1.72048" /><metadata
+ id="metadata50"><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="defs48" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1572"
+ inkscape:window-height="965"
+ id="namedview46"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="23.9991"
+ inkscape:cy="26.235289"
+ 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:#808080;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000401;stroke-miterlimit:10;}
+ .st2{fill:#000401;}
+ .st3{fill:url(#SVGID_1_);}
+ .st4{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st5{fill:#006837;}
+ .st6{fill:#FFE53F;}
+ .st7{font-family:'MyriadPro-Regular';}
+ .st8{font-size:6px;}
+</style>
+
+
+
+
+
+
+
+
+<path
+ class="st2"
+ d="m 45.2912,43.597656 c 0,1.548438 -1.204341,2.924826 -2.924824,2.924826 -1.720486,0 -2.924826,-1.20434 -2.924826,-2.924826 0,-1.720484 1.20434,-2.924824 2.924826,-2.924824 1.720483,0 2.924824,1.376389 2.924824,2.924824 z"
+ id="path20"
+ style="stroke-width:1.72048" />
+<path
+ class="st0"
+ d="M 24,38.962932"
+ id="path22" />
+<path
+ class="st0"
+ d="M 25.382386,39.617018"
+ id="path24" />
+<linearGradient
+ id="SVGID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="24.5506"
+ y1="21.5"
+ x2="30.4868"
+ y2="21.5"
+ gradientTransform="matrix(0,1.0571338,-1.0571338,0,51.676842,-1.8693808)">
+ <stop
+ offset="2.455360e-02"
+ style="stop-color:#006837"
+ id="stop26" />
+ <stop
+ offset="0.4355"
+ style="stop-color:#22B573"
+ id="stop28" />
+ <stop
+ offset="1"
+ style="stop-color:#006837"
+ id="stop30" />
+</linearGradient>
+
+
+<rect
+ x="0.73099327"
+ y="22.401167"
+ class="st5"
+ width="46.538013"
+ height="17.518068"
+ id="rect37"
+ style="fill:#682b00;fill-opacity:1;stroke-width:4.12121" />
+<path
+ class="st2"
+ d="m 8.5584483,43.498826 c 0,1.548439 -1.2043403,2.924827 -2.9248258,2.924827 -1.5484359,0 -2.924824,-1.20434 -2.924824,-2.924827 0,-1.720483 1.2043395,-2.924823 2.924824,-2.924823 1.7204855,0.172046 2.9248258,1.376387 2.9248258,2.924823 z"
+ id="path39"
+ style="stroke-width:1.72048" />
+
+<path
+ class="st2"
+ d="m 15.30658,43.498826 c 0,1.548439 -1.204339,2.924827 -2.924825,2.924827 -1.720486,0 -2.9248239,-1.20434 -2.9248239,-2.924827 0,-1.720483 1.2043379,-2.924823 2.9248239,-2.924823 1.720486,0 2.924825,1.376387 2.924825,2.924823 z"
+ id="path43"
+ style="stroke-width:1.72048" />
+<g
+ id="plus"
+ transform="matrix(1.2462413,0,0,1.2160392,-46.375085,-20.168954)"
+ 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"
+ 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"
+ 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"
+ d="M 51.516636,24.897242 H 39.169733"
+ id="path1708" /></g></svg>
diff --git a/app/bin/bitmaps/svg/ok.svg b/app/bin/bitmaps/svg/ok.svg
new file mode 100644
index 0000000..21e0640
--- /dev/null
+++ b/app/bin/bitmaps/svg/ok.svg
@@ -0,0 +1,55 @@
+<?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"
+ xml:space="preserve"
+ sodipodi:docname="ok.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ width="48"
+ height="48"
+ 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="metadata11"><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="defs9" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1401"
+ inkscape:window-height="811"
+ id="namedview7"
+ showgrid="false"
+ inkscape:zoom="9.7408644"
+ inkscape:cx="22.174623"
+ inkscape:cy="23.355217"
+ 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:#097F00;stroke-width:2;stroke-miterlimit:10;}
+</style>
+
+<path
+ style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:1.30233px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 3.0826295,28.723525 10.666902,43.233332 C 22.340221,30.869786 34.794469,17.623547 44.780402,6.3860722 L 42.743187,4.5399005 11.781047,33.436651 5.2533982,26.115272 Z"
+ id="path831"
+ sodipodi:nodetypes="ccccccc" /></svg>
diff --git a/app/bin/bitmaps/svg/pan-zoom.svg b/app/bin/bitmaps/svg/pan-zoom.svg
new file mode 100644
index 0000000..7597072
--- /dev/null
+++ b/app/bin/bitmaps/svg/pan-zoom.svg
@@ -0,0 +1,89 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="pan-zoom.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata21"><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="defs19" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1716"
+ inkscape:window-height="966"
+ id="namedview17"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:none;stroke:#FC0000;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#FC0000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="24.187614"
+ y1="4.7648048"
+ x2="24.333876"
+ y2="43.122051"
+ id="line4"
+ style="stroke-width:3.48405;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1" />
+<polyline
+ class="st1"
+ points="19.1,13.9 24,11 29,13.9 "
+ id="polyline6"
+ style="stroke-width:2.40355;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1"
+ transform="matrix(1.4625985,0,0,1.4497843,-10.91475,-11.182822)" />
+<polyline
+ class="st1"
+ points="29,34.4 24.1,37.7 19.1,34 "
+ id="polyline8"
+ style="stroke-width:2.40355;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1"
+ transform="matrix(1.4625985,0,0,1.4497843,-10.914749,-11.534816)" />
+<line
+ class="st0"
+ x1="43.640171"
+ y1="23.26"
+ x2="4.2990675"
+ y2="23.26"
+ id="line10"
+ style="stroke-width:3.49339;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1" />
+<polyline
+ class="st1"
+ points="33.8,18.9 37.3,24 33.8,28.7 "
+ id="polyline12"
+ style="stroke-width:2.40355;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1"
+ transform="matrix(1.4625985,0,0,1.4497843,-10.914754,-11.534822)" />
+<polyline
+ class="st1"
+ points="13.2,28.7 10,24 13.2,18.9 "
+ id="polyline14"
+ style="stroke-width:2.40355;stroke-miterlimit:10;stroke-dasharray:none;stroke:#cc0000;stroke-opacity:1"
+ transform="matrix(1.4625985,0,0,1.4497843,-10.326917,-11.534822)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/parallel-line.svg b/app/bin/bitmaps/svg/parallel-line.svg
new file mode 100644
index 0000000..ad96c16
--- /dev/null
+++ b/app/bin/bitmaps/svg/parallel-line.svg
@@ -0,0 +1,155 @@
+<?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="svg984"
+ sodipodi:docname="parallel-line.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><defs
+ id="defs988" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1370"
+ inkscape:window-height="912"
+ id="namedview986"
+ showgrid="false"
+ inkscape:zoom="10.067426"
+ inkscape:cx="32"
+ inkscape:cy="32"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg984"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="true" /><metadata
+ id="metadata932"><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><g
+ transform="matrix(1.6925211,0,0,-1.6925211,6.6484707,37.41986)"
+ id="g936"
+ style="stroke:#d98b0d;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path934"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,15.111076,37.41986)"
+ id="g940"
+ style="stroke:#d98b0d;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path938"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,23.573681,37.41986)"
+ id="g944"
+ style="stroke:#d98b0d;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path942"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,32.036287,37.41986)"
+ id="g948"
+ style="stroke:#d98b0d;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path946"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,40.498892,37.41986)"
+ id="g952"
+ style="stroke:#d98b0d;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path950"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,48.961496,37.41986)"
+ id="g956"
+ style="stroke:#d98b0d;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path954"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,57.424102,37.41986)"
+ id="g960"
+ style="stroke:#d98b0d;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path958"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,3.2634283,40.967375)"
+ id="g964"
+ style="stroke-width:1.47709;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 H 34"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path962"
+ style="stroke-width:1.47709;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,3.2634283,52.490076)"
+ id="g968"
+ style="stroke-width:1.47709;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 H 34"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path966"
+ style="stroke-width:1.47709;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="matrix(1.7072491,0,0,-1.6925211,2.9767653,9.2070031)"
+ id="g972"
+ style="stroke-width:1.4707;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 H 34"
+ fill="none"
+ stroke="#666666"
+ stroke-miterlimit="10"
+ id="path970"
+ style="stroke-width:1.4707;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="matrix(1.6925211,0,0,-1.6925211,32.462802,31.754138)"
+ id="g980"
+ style="stroke:#cc0000;stroke-width:1.7725;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"><path
+ d="m -3.748,6.996 3.589,3.031 3.907,-3.031"
+ fill="none"
+ stroke="#666666"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path974"
+ style="stroke:#cc0000;stroke-width:1.7725;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M -0.11709878,-1.600565 -0.159,10.027"
+ fill="none"
+ stroke="#666666"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path978"
+ style="stroke:#cc0000;stroke-width:1.7725;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></svg>
diff --git a/app/bin/bitmaps/svg/parallel.svg b/app/bin/bitmaps/svg/parallel.svg
new file mode 100644
index 0000000..9ff2898
--- /dev/null
+++ b/app/bin/bitmaps/svg/parallel.svg
@@ -0,0 +1,221 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="parallel.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata49"><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="defs47" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1377"
+ inkscape:window-height="908"
+ id="namedview45"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#B3B3B3;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#666666;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#666666;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#666666;stroke-width:2;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+<g
+ id="g3886"
+ inkscape:label="ties"
+ transform="matrix(1.3222423,0,0,1.3222423,-6.4115729,-7.7338152)"><line
+ class="st0"
+ x1="8"
+ y1="30"
+ x2="8"
+ y2="41"
+ id="line4"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="13"
+ y1="30"
+ x2="13"
+ y2="41"
+ id="line6"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="18"
+ y1="30"
+ x2="18"
+ y2="41"
+ id="line8"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="23"
+ y1="30"
+ x2="23"
+ y2="41"
+ id="line10"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="28"
+ y1="30"
+ x2="28"
+ y2="41"
+ id="line12"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="33"
+ y1="30"
+ x2="33"
+ y2="41"
+ id="line14"
+ style="stroke:#d98b0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="38"
+ y1="30"
+ x2="38"
+ y2="41"
+ id="line16"
+ style="stroke:#d98b0d;stroke-opacity:1" /></g>
+
+
+
+
+
+
+<g
+ id="g3877"
+ inkscape:label="newties"
+ transform="matrix(1.3222423,0,0,1.3222423,-6.4115729,-7.7338152)"><line
+ class="st1"
+ x1="8"
+ y1="7"
+ x2="8"
+ y2="18"
+ id="line18" /><line
+ class="st1"
+ x1="13"
+ y1="7"
+ x2="13"
+ y2="18"
+ id="line20" /><line
+ class="st1"
+ x1="18"
+ y1="7"
+ x2="18"
+ y2="18"
+ id="line22" /><line
+ class="st1"
+ x1="23"
+ y1="7"
+ x2="23"
+ y2="18"
+ id="line24" /><line
+ class="st1"
+ x1="28"
+ y1="7"
+ x2="28"
+ y2="18"
+ id="line26" /><line
+ class="st1"
+ x1="33"
+ y1="7"
+ x2="33"
+ y2="18"
+ id="line28" /><line
+ class="st1"
+ x1="38"
+ y1="7"
+ x2="38"
+ y2="18"
+ id="line30" /></g>
+
+<g
+ id="g3868"
+ inkscape:label="rails"
+ style="stroke-width:1.51258207;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(1.3222423,0,0,1.3222423,-6.4115729,-7.7338152)"><line
+ class="st2"
+ x1="6"
+ y1="32.096252"
+ x2="40"
+ y2="32.096252"
+ id="line32"
+ style="stroke-width:1.51258207;stroke-miterlimit:4;stroke-dasharray:none" /><line
+ class="st2"
+ x1="6"
+ y1="38.903748"
+ x2="40"
+ y2="38.903748"
+ id="line34"
+ style="stroke-width:1.51258207;stroke-miterlimit:4;stroke-dasharray:none" /></g>
+
+<g
+ id="g3864"
+ inkscape:label="newrails"
+ style="stroke-width:1.51258207;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(1.3222423,0,0,1.3222423,-6.4115729,-7.7338152)"><line
+ class="st3"
+ x1="6"
+ y1="9.0962601"
+ x2="40"
+ y2="9.0962601"
+ id="line36"
+ style="stroke-width:1.51258207;stroke-miterlimit:4;stroke-dasharray:none" /><line
+ class="st3"
+ x1="6"
+ y1="15.903746"
+ x2="40"
+ y2="15.903746"
+ id="line38"
+ style="stroke-width:1.51258207;stroke-miterlimit:4;stroke-dasharray:none" /></g>
+
+<g
+ id="g3860"
+ inkscape:label="arrow"
+ transform="matrix(1.3222423,0,0,1.2064572,-9.2563108,-4.2091511)"
+ style="stroke-width:2.37525243;stroke-miterlimit:4;stroke-dasharray:none"><polyline
+ class="st4"
+ points="21.5,22 25.1,19 29,22 "
+ id="polyline40"
+ style="stroke:#cc0000;stroke-width:2.37525243;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><line
+ class="st5"
+ x1="25.18976"
+ y1="28.910158"
+ x2="25.210243"
+ y2="19.008156"
+ id="line42"
+ style="stroke:#cc0000;stroke-width:2.37525243;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/parameter.svg b/app/bin/bitmaps/svg/parameter.svg
new file mode 100644
index 0000000..b686804
--- /dev/null
+++ b/app/bin/bitmaps/svg/parameter.svg
@@ -0,0 +1,76 @@
+<?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="parameter.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="1583"
+ inkscape:window-height="943"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="8.1826993"
+ inkscape:cx="26.519366"
+ inkscape:cy="32.446506"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layout"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false"
+ inkscape:pagecheckerboard="0" /><g
+ id="Layout"
+ inkscape:label="#layout"
+ transform="translate(-0.22803691,0.91214765)"
+ style="opacity:1"><path
+ id="path898"
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:transform-center-x="-0.1143859"
+ inkscape:transform-center-y="-4.2708698"
+ d="M 59.32533,61.337659 5.9038154,61.449698 5.7270967,0.60270433 46.825508,0.61736905 59.16559,16.95766 Z"
+ sodipodi:nodetypes="cccccc" /><g
+ id="turnout"
+ transform="matrix(2.1121492,0,0,2.2798074,-12.340801,-30.573867)"
+ style="stroke-width:1.59499;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:1"><path
+ style="fill:none;stroke:#000000;stroke-width:1.59499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 12.81557,34.039644 H 28.091703"
+ id="path845" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.59499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 17.337306,33.917434 10.265561,4.399527"
+ id="path847" /></g><g
+ id="crossing"
+ transform="matrix(2.3270806,0,0,1.9276329,-15.980833,-17.606493)"
+ style="stroke-width:1.6525331;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:1"><path
+ style="fill:none;stroke:#000000;stroke-width:1.6525331;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 13.163424,23.712979 26.60642,30.312268"
+ id="path849" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.6525331;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 13.163424,30.312268 26.60642,23.712979"
+ id="path849-6" /></g><path
+ style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 14.173579,8.3757435 H 46.722598"
+ id="path871" /><path
+ style="fill:none;stroke:#000000;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 14.812247,21.881628 c 4.935235,-0.244284 9.400841,0.209247 16.447704,-1.442779 6.721987,-1.517667 11.358856,-3.77303 15.004917,-6.059679"
+ id="path873"
+ sodipodi:nodetypes="ccc" /></g></svg>
diff --git a/app/bin/bitmaps/svg/paste.svg b/app/bin/bitmaps/svg/paste.svg
new file mode 100644
index 0000000..7d089d6
--- /dev/null
+++ b/app/bin/bitmaps/svg/paste.svg
@@ -0,0 +1,64 @@
+<?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="paste.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="1571"
+ inkscape:window-height="866"
+ id="namedview1661"
+ showgrid="false"
+ inkscape:zoom="9.4049726"
+ inkscape:cx="25.305762"
+ inkscape:cy="32.961287"
+ inkscape:window-x="18"
+ inkscape:window-y="57"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1659"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Export" /><g
+ id="g4827"
+ transform="translate(-2.6581678)"><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="53.616257"
+ height="49.753304"
+ x="6.1005993"
+ y="-54.885616"
+ transform="rotate(90)"
+ ry="4.0444236" /><path
+ style="fill:#f5f5f5;fill-opacity:1;stroke:#666666;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 21.602,5.9844217 4.044423,-4.5066434 10.399946,0.1155549 3.582205,4.3910885 -4.391089,2.4266544 h -9.128841 z"
+ id="path1105"
+ sodipodi:nodetypes="ccccccc" /></g><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-2"
+ width="46.623814"
+ height="43.264656"
+ x="15.452703"
+ y="-61.785542"
+ transform="rotate(90)" /></svg>
diff --git a/app/bin/bitmaps/svg/polygon.svg b/app/bin/bitmaps/svg/polygon.svg
new file mode 100644
index 0000000..f8aa925
--- /dev/null
+++ b/app/bin/bitmaps/svg/polygon.svg
@@ -0,0 +1,57 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="polygon.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata13"><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="defs11" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1240"
+ inkscape:window-height="757"
+ id="namedview9"
+ showgrid="false"
+ inkscape:zoom="10.17006"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+</style>
+<polygon
+ class="st0"
+ points="24.7,39.8 11.8,32.9 7.4,19.8 10.9,10 28.2,7.8 39.7,20.1 40,36.5 "
+ id="polygon4"
+ transform="matrix(1.3091076,0,0,1.3091076,-6.997444,-7.1557037)"
+ style="stroke-width:1.90969787;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st0"
+ d="M3.5,28.2"
+ id="path6" />
+</svg>
diff --git a/app/bin/bitmaps/svg/polyline.svg b/app/bin/bitmaps/svg/polyline.svg
new file mode 100644
index 0000000..695bad9
--- /dev/null
+++ b/app/bin/bitmaps/svg/polyline.svg
@@ -0,0 +1,56 @@
+<?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="svg872"
+ sodipodi:docname="polyline.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1429"
+ inkscape:window-height="896"
+ id="namedview874"
+ showgrid="false"
+ inkscape:zoom="8.7705101"
+ inkscape:cx="32"
+ inkscape:cy="32"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg872" /><metadata
+ id="metadata857"><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="defs862"><clipPath
+ id="clipPath2763"><path
+ d="m0 48h48v-48h-48z"
+ id="path859" /></clipPath></defs><g
+ transform="matrix(1.8687667,0,0,-1.8687667,-15.81141,77.501638)"
+ id="g870"
+ style="stroke-width:1.60533682;stroke-miterlimit:4;stroke-dasharray:none"><g
+ clip-path="url(#clipPath2763)"
+ id="g868"
+ style="stroke-width:1.60533682;stroke-miterlimit:4;stroke-dasharray:none"><g
+ transform="translate(25.224,30.046)"
+ id="g866"
+ style="stroke-width:1.60533682;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="m 0,0 -14.638,5.47 2.619,-14.176 8.783,-10.554 12.481,2.003 c 0,0 6.626,11.402 6.24,12.943 C 15.1,-2.773 12.635,6.24 10.4,8.012"
+ fill="none"
+ stroke="#0c0cf2"
+ stroke-miterlimit="10"
+ id="path864"
+ style="stroke-width:1.60533682;stroke-miterlimit:4;stroke-dasharray:none" /></g></g></g></svg>
diff --git a/app/bin/bitmaps/svg/profile.svg b/app/bin/bitmaps/svg/profile.svg
new file mode 100644
index 0000000..9f76546
--- /dev/null
+++ b/app/bin/bitmaps/svg/profile.svg
@@ -0,0 +1,176 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="profile.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata41"><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="defs39" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1372"
+ inkscape:window-height="907"
+ id="namedview37"
+ showgrid="false"
+ inkscape:zoom="8.8544831"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st1{fill:#0080FA;}
+ .st2{fill:none;stroke:#000402;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="5.0116086"
+ y1="37.121544"
+ x2="42.718517"
+ y2="37.121544"
+ id="line4"
+ style="stroke-width:2.25366;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st0"
+ x1="6.185358"
+ y1="37.208576"
+ x2="6.185358"
+ y2="8.1140652"
+ id="line6"
+ style="stroke-width:2.15515;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st0"
+ x1="41.571243"
+ y1="14.579512"
+ x2="41.571243"
+ y2="37.208576"
+ id="line8"
+ style="stroke-width:2.15515;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st0"
+ x1="46.507366"
+ y1="26.432833"
+ x2="46.507366"
+ y2="26.432833"
+ id="line10"
+ style="stroke-width:1.07757" />
+<polygon
+ class="st1"
+ points="12,10 9,12 9,38 40,38 40,18 30.3,16 20.7,21.2 14.4,10 "
+ id="polygon12"
+ style="fill:#80deff;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ transform="matrix(1.1414801,0,0,1.1160593,-4.0879632,-5.2016771)" />
+<line
+ class="st2"
+ x1="17.673576"
+ y1="38.11208"
+ x2="17.673576"
+ y2="40.771732"
+ id="line14"
+ style="stroke-width:2.15515;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="24.50412"
+ y1="38.11208"
+ x2="24.50412"
+ y2="42.944588"
+ id="line16"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="31.31695"
+ y1="38.11208"
+ x2="31.31695"
+ y2="40.771732"
+ id="line18"
+ style="stroke-width:2.15515;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="37.538998"
+ y1="38.11208"
+ x2="37.538998"
+ y2="42.944588"
+ id="line20"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="10.599646"
+ y1="38.11208"
+ x2="10.599646"
+ y2="42.944588"
+ id="line22"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="5.6115265"
+ y1="23.738895"
+ x2="1.2658093"
+ y2="23.738895"
+ id="line24"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="5.6115265"
+ y1="15.848494"
+ x2="1.2658093"
+ y2="15.848494"
+ id="line26"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="5.6115265"
+ y1="31.281918"
+ x2="1.2658093"
+ y2="31.281918"
+ id="line28"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="41.919395"
+ y1="23.738895"
+ x2="46.734192"
+ y2="23.738895"
+ id="line30"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="41.919395"
+ y1="15.848494"
+ x2="46.734192"
+ y2="15.848494"
+ id="line32"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="41.919395"
+ y1="31.281918"
+ x2="46.734192"
+ y2="31.281918"
+ id="line34"
+ style="stroke-width:2.69394;stroke-miterlimit:10;stroke-dasharray:none" />
+</svg>
diff --git a/app/bin/bitmaps/svg/protractor.svg b/app/bin/bitmaps/svg/protractor.svg
new file mode 100644
index 0000000..6e7d141
--- /dev/null
+++ b/app/bin/bitmaps/svg/protractor.svg
@@ -0,0 +1,68 @@
+<?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="svg23"
+ sodipodi:docname="protractor.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata27"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1435"
+ inkscape:window-height="889"
+ id="namedview25"
+ showgrid="false"
+ inkscape:zoom="10.074671"
+ inkscape:cx="32"
+ inkscape:cy="32"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g21"
+ inkscape:document-rotation="0" /><defs
+ id="defs5"><clipPath
+ id="clipPath3087"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ transform="matrix(1.7785911,0,0,-1.6794204,-11.160353,74.070498)"
+ id="g21"
+ style="stroke-width:1.87505;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="m 23.226933,28.885907 c 3.173396,-4.144399 4.632596,-9.927034 3.505034,-15.812632"
+ fill="none"
+ stroke="#000202"
+ stroke-miterlimit="10"
+ id="path15"
+ style="stroke:#cc0000;stroke-width:1.96532;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><g
+ transform="matrix(1.1322171,0,0,1.1322171,9.0014797,17.025451)"
+ id="g13"
+ style="stroke-width:2.02512;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 24.037,21.417"
+ fill="none"
+ stroke="#000202"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path7"
+ style="stroke-width:2.02512;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ d="M 0,0 26.965,-7.241"
+ fill="none"
+ stroke="#000202"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path11"
+ style="stroke-width:2.02512;stroke-miterlimit:4;stroke-dasharray:none" /></g></g></svg>
diff --git a/app/bin/bitmaps/svg/redo.svg b/app/bin/bitmaps/svg/redo.svg
new file mode 100644
index 0000000..77c8cb8
--- /dev/null
+++ b/app/bin/bitmaps/svg/redo.svg
@@ -0,0 +1,52 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="redo.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata1493"><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="defs1491" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1306"
+ inkscape:window-height="882"
+ id="namedview1489"
+ showgrid="false"
+ inkscape:zoom="10.897825"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" />
+<style
+ type="text/css"
+ id="style1484">
+ .st0{fill:#05FB08;stroke:#05B70D;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="m 8.2406449,43.164807 c -1.2578731,0.107338 -1.1320851,0.107338 -3.522044,0.107338 0,-12.343861 3.8994068,-31.55735 23.8995881,-31.879363 0.251575,-3.0054618 0.125788,-5.9035856 0.125788,-5.9035856 L 42.58058,14.290906 28.240827,24.273333 c 0,0 0.251575,-2.468773 0.251575,-6.010924 C 14.655799,18.155071 8.8695815,34.363097 8.2406449,43.164807 Z"
+ id="path1486"
+ style="stroke:#05610a;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/reflect.svg b/app/bin/bitmaps/svg/reflect.svg
new file mode 100644
index 0000000..837743c
--- /dev/null
+++ b/app/bin/bitmaps/svg/reflect.svg
@@ -0,0 +1,71 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="reflect.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata17"><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="defs15" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1482"
+ inkscape:window-height="919"
+ id="namedview13"
+ showgrid="false"
+ inkscape:zoom="13.407886"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st1{fill:#009DFC;stroke:#00A2FF;stroke-miterlimit:10;}
+ .st2{fill:#000302;stroke:#000301;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="23.787764"
+ y1="4.1941996"
+ x2="23.787764"
+ y2="43.805801"
+ id="line4"
+ style="stroke-width:2.67646;stroke-miterlimit:10;stroke-dasharray:none" />
+<polygon
+ class="st1"
+ points="12.5,14.3 22.4,22.2 12.5,31.2 "
+ id="polygon6"
+ transform="matrix(1.7907987,0,0,1.6722454,-19.336302,-14.284334)"
+ style="fill:#80ddff;fill-opacity:1;stroke:#009ccc;stroke-width:1.23731;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+
+
+<polygon
+ class="st1"
+ points="12.5,31.2 12.5,14.3 22.4,22.2 "
+ id="polygon6-1"
+ transform="matrix(-1.8394632,0,0,1.6722454,67.929658,-14.366529)"
+ style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1.2207342;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></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
new file mode 100644
index 0000000..2c788f2
--- /dev/null
+++ b/app/bin/bitmaps/svg/rotate.svg
@@ -0,0 +1,222 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="rotate.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata2761"><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="defs2759"><marker
+ style="overflow:visible"
+ id="Arrow1Lstart"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lstart"
+ inkscape:isstock="true"><path
+ transform="scale(0.8) translate(12.5,0)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ id="path3324" /></marker></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1233"
+ inkscape:window-height="778"
+ id="namedview2757"
+ showgrid="false"
+ inkscape:zoom="10.149695"
+ inkscape:cx="24"
+ inkscape:cy="24.868298"
+ 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="style2696">
+ .st0{fill:none;stroke:#00FFFF;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#B3B3B3;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#808080;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#FB0000;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#808080;stroke-width:2;stroke-miterlimit:10;}
+ .st5{fill:none;stroke:#FB0000;stroke-miterlimit:10;}
+ .st6{fill:none;stroke:#007CBF;stroke-miterlimit:10;}
+ .st7{fill:none;stroke:#007CBF;stroke-width:2;stroke-miterlimit:10;}
+ .st8{fill:none;stroke:#FF0B00;stroke-miterlimit:10;}
+ .st9{fill:none;stroke:#FF0B00;stroke-miterlimit:10;stroke-dasharray:3.0709,1.0236;}
+</style>
+
+
+<line
+ class="st1"
+ x1="9.1349277"
+ y1="33.106369"
+ x2="9.1349277"
+ y2="45.627636"
+ id="line2702" /><line
+ class="st1"
+ x1="14.82641"
+ y1="33.106369"
+ x2="14.82641"
+ y2="45.627636"
+ id="line2704" /><line
+ class="st0"
+ x1="14.82641"
+ y1="33.106369"
+ x2="2.3051486"
+ y2="33.106369"
+ id="line2698" /><line
+ class="st0"
+ x1="14.82641"
+ y1="38.797855"
+ x2="2.3051486"
+ y2="38.797855"
+ id="line2700" />
+
+<line
+ class="st1"
+ x1="20.517897"
+ y1="33.106369"
+ x2="20.517897"
+ y2="45.627636"
+ id="line2706" />
+<line
+ class="st1"
+ x1="26.209379"
+ y1="33.106369"
+ x2="26.209379"
+ y2="45.627636"
+ id="line2708" />
+<line
+ class="st1"
+ x1="31.90086"
+ y1="33.106369"
+ x2="31.90086"
+ y2="45.627636"
+ id="line2710" />
+<line
+ class="st1"
+ x1="37.592346"
+ y1="33.106369"
+ x2="37.592346"
+ y2="45.627636"
+ id="line2712" />
+<line
+ class="st1"
+ x1="43.283829"
+ y1="33.106369"
+ x2="43.283829"
+ y2="45.627636"
+ id="line2714" />
+<line
+ class="st0"
+ x1="14.82641"
+ y1="4.6489568"
+ x2="2.3051486"
+ y2="4.6489568"
+ id="line2716" />
+<line
+ class="st0"
+ x1="14.82641"
+ y1="10.340441"
+ x2="2.3051486"
+ y2="10.340441"
+ id="line2718" />
+<line
+ class="st0"
+ x1="14.82641"
+ y1="16.031925"
+ x2="2.3051486"
+ y2="16.031925"
+ id="line2720" />
+<line
+ class="st0"
+ x1="14.82641"
+ y1="21.723406"
+ x2="2.3051486"
+ y2="21.723406"
+ id="line2722" />
+<line
+ class="st0"
+ x1="14.82641"
+ y1="27.41489"
+ x2="2.3051486"
+ y2="27.41489"
+ id="line2724" />
+<line
+ class="st2"
+ x1="6.736856"
+ y1="35.694492"
+ x2="45.438927"
+ y2="35.694492"
+ id="line2726"
+ style="stroke-width:2.13106;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="6.736856"
+ y1="43.039513"
+ x2="45.438927"
+ y2="43.039513"
+ id="line2728"
+ style="stroke-width:2.13106;stroke-miterlimit:10;stroke-dasharray:none" />
+
+
+
+<line
+ class="st6"
+ x1="12.336152"
+ y1="2.3723636"
+ x2="12.336152"
+ y2="41.074448"
+ id="line2736"
+ style="stroke-width:2.13106;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st6"
+ x1="4.7954087"
+ y1="2.3723636"
+ x2="4.7954087"
+ y2="41.074448"
+ id="line2738"
+ style="stroke-width:2.13106;stroke-miterlimit:10;stroke-dasharray:none" />
+
+<polyline
+ class="st8"
+ points="41.5,29.4 38.7,32.7 35.5,30.3 "
+ id="polyline2742"
+ transform="matrix(1.8851067,0,0,1.8883999,-33.551788,-29.337542)"
+ style="stroke:#cc0b00;stroke-width:1.41186;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<g
+ id="g2752"
+ transform="matrix(1.1779068,0,0,1.1779068,5.2536547,-23.041577)"
+ style="stroke-width:1.80919;stroke-miterlimit:10;stroke-dasharray:none">
+
+<path
+ style="fill:none;stroke:#cc0b00;stroke-width:1.80919;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:1.80919, 3.61838;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 3.3893843,52.169989 21.828525,33.73085 Z"
+ id="path3594" /></g>
+<path
+ class="st8"
+ d="m 39.448981,32.460276 c 0,-13.400725 -10.544803,-24.1671205 -23.620358,-24.1671205"
+ id="path2754"
+ style="stroke:#cc0b00;stroke-width:2.57224;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/ruler.svg b/app/bin/bitmaps/svg/ruler.svg
new file mode 100644
index 0000000..8cb140b
--- /dev/null
+++ b/app/bin/bitmaps/svg/ruler.svg
@@ -0,0 +1,81 @@
+<?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="svg23"
+ sodipodi:docname="ruler.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata27"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1418"
+ inkscape:window-height="889"
+ id="namedview25"
+ showgrid="false"
+ inkscape:zoom="5.3929307"
+ inkscape:cx="32"
+ inkscape:cy="32"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g21"
+ inkscape:document-rotation="0" /><defs
+ id="defs5"><clipPath
+ id="clipPath3087"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ transform="matrix(1.7785911,0,0,-1.6794204,-11.160353,74.070498)"
+ id="g21"
+ style="stroke-width:1.87505;stroke-miterlimit:10;stroke-dasharray:none"><g
+ transform="matrix(1.0365883,0,0,1.0433909,8.8192947,19.603103)"
+ id="g13"
+ style="stroke:#000000;stroke-width:1.73582;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"><path
+ d="M 0,0 26.965,-7.241"
+ fill="none"
+ stroke="#000202"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path11"
+ style="stroke:#000000;stroke-width:1.73582;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><path
+ style="fill:none;stroke:#000000;stroke-width:2.02245;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 8.8192947,19.603103 11.884169,31.716802"
+ id="path839" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.3483;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 16.074124,18.233402 1.816694,7.180356"
+ id="path843" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.3483;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 23.140586,16.315597 1.816694,7.180357"
+ id="path843-1" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.3483;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 30.106721,14.643225 1.816694,7.180355"
+ id="path843-3" /><path
+ style="fill:none;stroke:#000000;stroke-width:2.02245;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 36.770897,12.047909 3.064874,12.113699"
+ id="path839-0" /><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.3819px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold';stroke-width:1.26406"
+ x="34.666809"
+ y="-27.718275"
+ id="text905"
+ transform="scale(0.97172116,-1.0291018)"><tspan
+ sodipodi:role="line"
+ id="tspan903"
+ x="34.666809"
+ y="-27.718275"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.3819px;font-family:Arial;-inkscape-font-specification:'Arial Bold';stroke-width:1.26406">1</tspan></text></g></svg>
diff --git a/app/bin/bitmaps/svg/select.svg b/app/bin/bitmaps/svg/select.svg
new file mode 100644
index 0000000..bb81e69
--- /dev/null
+++ b/app/bin/bitmaps/svg/select.svg
@@ -0,0 +1,153 @@
+<?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="select.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="metadata33"><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="defs31" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1386"
+ inkscape:window-height="955"
+ id="namedview29"
+ showgrid="false"
+ inkscape:zoom="10.17006"
+ inkscape:cx="24.041157"
+ inkscape:cy="24.82778"
+ 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:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;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="3.8428819"
+ y1="9.4009237"
+ x2="3.8428819"
+ y2="24.094875"
+ id="line4"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="10.521953"
+ y1="9.4009237"
+ x2="10.521953"
+ y2="24.094875"
+ id="line6"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="17.201021"
+ y1="9.4009237"
+ x2="17.201021"
+ y2="24.094875"
+ id="line8"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="23.880093"
+ y1="9.4009237"
+ x2="23.880093"
+ y2="15.831297"
+ id="line10"
+ style="stroke:#d98a0d;stroke-width:2.67163;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="30.55916"
+ y1="9.4009237"
+ x2="30.55916"
+ y2="15.930859"
+ id="line12"
+ style="stroke:#d98a0d;stroke-width:2.67163;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="37.238239"
+ y1="9.4009237"
+ x2="37.238239"
+ y2="24.094875"
+ id="line14"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="43.917309"
+ y1="9.4009237"
+ x2="43.917309"
+ y2="24.094875"
+ id="line16"
+ style="stroke:#d98a0d;stroke-opacity:1" />
+<line
+ class="st1"
+ x1="1.1712544"
+ y1="12.300144"
+ x2="46.588936"
+ y2="12.300144"
+ id="line18"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="1.1712544"
+ y1="21.195667"
+ x2="19.110044"
+ y2="21.195667"
+ id="line20"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+
+<path
+ class="st3"
+ d="M 26.150977,30.3732"
+ id="path24"
+ style="stroke-width:1.33581" />
+<g
+ id="g837"
+ style="stroke-width:3.5;stroke-miterlimit:10;stroke-dasharray:none"><line
+ class="st2"
+ x1="22.168528"
+ y1="19.00256"
+ x2="41.137093"
+ y2="37.436787"
+ id="line22"
+ style="stroke:#cc0000;stroke-width:3.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><polyline
+ class="st4"
+ points="25,27 25,21 31,21 "
+ id="polyline26"
+ transform="matrix(1.6296104,0,0,1.6296104,-18.571732,-15.219259)"
+ style="stroke:#cc0000;stroke-width:2.14775262;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g>
+<line
+ class="st1"
+ x1="34.266258"
+ y1="21.381462"
+ x2="46.828747"
+ y2="21.381462"
+ id="line20-0"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" /></svg>
diff --git a/app/bin/bitmaps/svg/sensor.svg b/app/bin/bitmaps/svg/sensor.svg
new file mode 100644
index 0000000..4188f0e
--- /dev/null
+++ b/app/bin/bitmaps/svg/sensor.svg
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg23"
+ sodipodi:docname="sensor.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="metadata27"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1373"
+ inkscape:window-height="946"
+ id="namedview25"
+ showgrid="false"
+ inkscape:zoom="8.1826993"
+ inkscape:cx="32.018774"
+ inkscape:cy="32.018774"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg23"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs5"><clipPath
+ id="clipPath3145"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ id="g871"
+ transform="matrix(1.8592806,0,0,1.8552804,-25.548253,-31.252843)"
+ style="stroke-width:2.02496;stroke-miterlimit:4;stroke-dasharray:none"><g
+ transform="matrix(1.3333,0,0,-1.3333,46.462838,34.094081)"
+ id="g9"
+ style="stroke:#689b90;stroke-width:1.51876;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"><path
+ d="m 0,0 c 0,6.425 -5.208,11.634 -11.633,11.634 -6.425,0 -11.634,-5.209 -11.634,-11.634 0,-6.425 5.209,-11.633 11.634,-11.633 C -5.208,-11.633 0,-6.425 0,0"
+ fill="#11f2e7"
+ id="path7"
+ style="fill:#0ac1b8;fill-opacity:1;stroke:#527a70;stroke-width:1.51876;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(1.1442058,0,0,-1.4775492,20.568595,23.358673)"
+ id="g13"
+ style="stroke-width:1.55738;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 18.259,-14.407"
+ fill="none"
+ stroke="#ffffff"
+ stroke-miterlimit="10"
+ id="path11"
+ style="stroke-width:1.55738;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.3611188,0,0,-1.2178976,20.89688,45.032578)"
+ id="g17"
+ style="stroke-width:1.57277;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 14.946,17.951"
+ fill="none"
+ stroke="#ffffff"
+ stroke-miterlimit="10"
+ id="path15"
+ style="stroke-width:1.57277;stroke-miterlimit:4;stroke-dasharray:none" /></g></g></svg>
diff --git a/app/bin/bitmaps/svg/signal.svg b/app/bin/bitmaps/svg/signal.svg
new file mode 100644
index 0000000..c0e11be
--- /dev/null
+++ b/app/bin/bitmaps/svg/signal.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg27"
+ 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"
+ 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="metadata31"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1380"
+ inkscape:window-height="872"
+ id="namedview29"
+ showgrid="false"
+ inkscape:zoom="9.3956422"
+ inkscape:cx="31.982912"
+ inkscape:cy="7.8759917"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g874"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs5"><clipPath
+ id="clipPath3381"><path
+ d="m0 48h48v-48h-48z"
+ id="path2" /></clipPath></defs><g
+ id="g874"
+ transform="matrix(1.7022641,0,0,1.5657944,-23.33414,-16.680089)"><g
+ transform="matrix(1.4338911,0,0,-1.6744946,21.752018,49.515943)"
+ id="g9"
+ style="stroke-width:1.50004;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 0,0 H 15"
+ fill="none"
+ stroke="#020000"
+ stroke-miterlimit="10"
+ id="path7"
+ style="stroke-width:1.50004;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ transform="matrix(1.6744946,0,0,-1.486785,32.699606,21.389291)"
+ id="g13"
+ style="stroke-width:1.50004;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M -0.14054799,-2.5566826 -0.09045201,-19.03"
+ fill="none"
+ stroke="#020000"
+ stroke-miterlimit="10"
+ id="path11"
+ style="stroke-width:1.47008;stroke-miterlimit:4;stroke-dasharray:none" /></g><g
+ clip-path="url(#clipPath3381)"
+ 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
new file mode 100644
index 0000000..fa700ce
--- /dev/null
+++ b/app/bin/bitmaps/svg/snap-curs.svg
@@ -0,0 +1,130 @@
+<?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="snap-curs.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="metadata73"><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="defs71" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1525"
+ inkscape:window-height="969"
+ id="namedview69"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="23.969375"
+ inkscape:cy="24.012177"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="true"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:#FFFFFF;stroke:#000000;stroke-miterlimit:10;}
+ .st1{fill:none;}
+ .st2{fill:#231F20;}
+</style>
+<path
+ class="st0"
+ d="m 28.485161,24.116161 c 0,2.446994 -1.922639,4.544418 -4.54442,4.544418 -2.446995,0 -4.544418,-1.922639 -4.544418,-4.544418 0,-2.446995 1.922639,-4.544418 4.544418,-4.544418 2.446995,0.174783 4.54442,2.097423 4.54442,4.544418 z"
+ id="path1012"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+
+
+
+
+
+
+
+
+
+
+
+
+<path
+ class="st0"
+ d="m 11.125143,40.945382 c 0,2.446995 -1.9226384,4.544418 -4.5444195,4.544418 -2.4469957,0 -4.544418,-1.922638 -4.544418,-4.544418 0,-2.446994 1.9226384,-4.544418 4.544418,-4.544418 2.4469944,0.174784 4.5444195,2.097424 4.5444195,4.544418 z"
+ id="path30"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st0"
+ d="m 28.603676,40.945382 c 0,2.446995 -1.922638,4.544418 -4.544419,4.544418 -2.446996,0 -4.544418,-1.922638 -4.544418,-4.544418 0,-2.446994 1.922638,-4.544418 4.544418,-4.544418 2.446994,0.174784 4.544419,2.097424 4.544419,4.544418 z"
+ id="path32"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st0"
+ d="m 46.08221,40.945382 c 0,2.446995 -1.922638,4.544418 -4.544419,4.544418 -2.446996,0 -4.544418,-1.922638 -4.544418,-4.544418 0,-2.446994 1.922638,-4.544418 4.544418,-4.544418 2.446994,0.174784 4.544419,2.097424 4.544419,4.544418 z"
+ id="path34"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+
+
+
+
+
+
+
+
+
+<path
+ class="st0"
+ d="m 11.125143,7.054619 c 0,2.4469958 -1.9226384,4.544419 -4.5444195,4.544419 -2.4469957,0 -4.544418,-1.9226393 -4.544418,-4.544419 0,-2.4469943 1.9226384,-4.5444194 4.544418,-4.5444194 2.4469944,0.1747867 4.5444195,2.0974251 4.5444195,4.5444194 z"
+ id="path54"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st0"
+ d="m 28.603676,7.054619 c 0,2.4469958 -1.922638,4.544419 -4.544419,4.544419 -2.446996,0 -4.544418,-1.9226393 -4.544418,-4.544419 0,-2.4469943 1.922638,-4.5444194 4.544418,-4.5444194 2.446994,0.1747867 4.544419,2.0974251 4.544419,4.5444194 z"
+ id="path56"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<path
+ class="st0"
+ d="m 46.08221,7.054619 c 0,2.4469958 -1.922638,4.544419 -4.544419,4.544419 -2.446996,0 -4.544418,-1.9226393 -4.544418,-4.544419 0,-2.4469943 1.922638,-4.5444194 4.544418,-4.5444194 2.446994,0.1747867 4.544419,2.0974251 4.544419,4.5444194 z"
+ id="path58"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+
+<path
+ class="st0"
+ d="m 11.006627,24.17424 c 0,2.446994 -1.9226382,4.544418 -4.5444192,4.544418 -2.4469957,0 -4.5444181,-1.922639 -4.5444181,-4.544418 0,-2.446995 1.9226384,-4.544418 4.5444181,-4.544418 2.4469943,0.174783 4.5444192,2.097423 4.5444192,4.544418 z"
+ id="path1010"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><path
+ class="st0"
+ d="m 45.963694,24.17424 c 0,2.446994 -1.922638,4.544418 -4.544419,4.544418 -2.446996,0 -4.544418,-1.922639 -4.544418,-4.544418 0,-2.446995 1.922638,-4.544418 4.544418,-4.544418 2.446994,0.174783 4.544419,2.097423 4.544419,4.544418 z"
+ id="path1014"
+ style="fill:none;fill-opacity:1;stroke:#00cc10;stroke-width:2.07667;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><g
+ id="g66"
+ transform="matrix(1.3844491,0,0,1.3844491,-0.84053536,-0.98876425)">
+
+
+<g
+ id="g64"
+ transform="translate(-5.5643192,-5.3931099)">
+ <polygon
+ class="st2"
+ points="25.6,11.7 10.7,10.9 13.2,25.5 18.2,20 34.2,34.2 36.6,31.5 20.6,17.2 "
+ id="polygon62"
+ transform="matrix(0.90211734,0,0,0.90211734,1.0473445,1.066921)" />
+ </g></g></svg>
diff --git a/app/bin/bitmaps/svg/snap-grid.svg b/app/bin/bitmaps/svg/snap-grid.svg
new file mode 100644
index 0000000..f6650a7
--- /dev/null
+++ b/app/bin/bitmaps/svg/snap-grid.svg
@@ -0,0 +1,128 @@
+<?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="snap-grid.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="metadata73"><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="defs71" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1524"
+ inkscape:window-height="969"
+ id="namedview69"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="23.9991"
+ inkscape:cy="23.9991"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g66"
+ inkscape:snap-nodes="false"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style2">
+ .st0{fill:#FFFFFF;stroke:#000000;stroke-miterlimit:10;}
+ .st1{fill:none;}
+ .st2{fill:#231F20;}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<g
+ id="g66"><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 45.964794,34.798093 H 1.7605429"
+ id="path906-0"
+ sodipodi:nodetypes="cc" />
+
+ <g
+ id="g64">
+
+ </g>
+<path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 13.170988,1.9818299 V 45.377465"
+ id="path900"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 23.997436,1.9818299 V 45.826697"
+ id="path904"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 34.823883,1.9818299 V 46.18608"
+ id="path906"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 46.05464,13.279968 H 1.7605429"
+ id="path902-1"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 46.144486,24.039031 H 1.7605429"
+ id="path904-7"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 45.650331,1.9818299 V 46.186079"
+ id="path906-06"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 2.3445413,1.9818299 V 46.18608"
+ id="path906-01"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 46.703533,2.6007706 1.2813595,2.5209067"
+ id="path900-5-5"
+ sodipodi:nodetypes="cc" /><path
+ style="fill:none;stroke:#00cc0d;stroke-width:2.24998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 46.703534,45.557158 H 1.3612234"
+ id="path900-5-8"
+ sodipodi:nodetypes="cc" /></g>
+</svg>
diff --git a/app/bin/bitmaps/svg/split-draw.svg b/app/bin/bitmaps/svg/split-draw.svg
new file mode 100644
index 0000000..d74ee25
--- /dev/null
+++ b/app/bin/bitmaps/svg/split-draw.svg
@@ -0,0 +1,97 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="split-draw.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata41"><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="defs39" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1420"
+ inkscape:window-height="920"
+ id="namedview37"
+ showgrid="false"
+ inkscape:zoom="14.378038"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:none;stroke:#B3B3B3;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#808080;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+
+
+
+
+<path
+ class="st1"
+ d="M 31.116412,30.780019"
+ id="path12" />
+<path
+ class="st1"
+ d="M 20.670772,20.837783"
+ id="path14" />
+
+
+
+
+<line
+ class="st2"
+ x1="25.950863"
+ y1="21.986561"
+ x2="43.444164"
+ y2="3.4864542"
+ id="line24"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="4.5561771"
+ y1="44.513905"
+ x2="21.797777"
+ y2="26.265497"
+ id="line26"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+
+
+<polyline
+ class="st3"
+ points="13.4,23.5 20.2,23.1 20.3,16.4 "
+ id="polyline32"
+ transform="matrix(1.2585109,0,0,1.2585109,-4.4171454,-7.6481128)"
+ style="stroke:#cc0000;stroke-width:2.38377;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st3"
+ points="33.7,28.5 26.8,28.9 26.8,35.6 "
+ id="polyline34"
+ transform="matrix(1.2585109,0,0,1.2585109,-6.955518,-9.5737753)"
+ style="stroke:#cc0000;stroke-width:2.38377;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/split.svg b/app/bin/bitmaps/svg/split.svg
new file mode 100644
index 0000000..2bc28cb
--- /dev/null
+++ b/app/bin/bitmaps/svg/split.svg
@@ -0,0 +1,153 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="split.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata1566"><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="defs1564" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1468"
+ inkscape:window-height="951"
+ id="namedview1562"
+ showgrid="false"
+ inkscape:zoom="14.378038"
+ inkscape:cx="24"
+ inkscape:cy="23.74054"
+ 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="style1527">
+ .st0{fill:none;stroke:#B3B3B3;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#808080;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="3.8516407"
+ y1="35.657555"
+ x2="13.378208"
+ y2="44.725014"
+ id="line1529" />
+<line
+ class="st0"
+ x1="7.6393127"
+ y1="31.640329"
+ x2="17.051104"
+ y2="40.707787"
+ id="line1531" />
+<line
+ class="st0"
+ x1="11.426984"
+ y1="27.623102"
+ x2="20.953552"
+ y2="36.690559"
+ id="line1533" />
+<line
+ class="st0"
+ x1="15.214656"
+ y1="23.605873"
+ x2="24.626448"
+ y2="32.673332"
+ id="line1535" />
+
+
+<line
+ class="st0"
+ x1="22.789999"
+ y1="15.57142"
+ x2="32.20179"
+ y2="24.638878"
+ id="line1541" />
+<line
+ class="st0"
+ x1="26.577673"
+ y1="11.439415"
+ x2="36.10424"
+ y2="20.621649"
+ id="line1543" />
+<line
+ class="st0"
+ x1="30.365345"
+ y1="7.4221864"
+ x2="39.777134"
+ y2="16.604422"
+ id="line1545" />
+<line
+ class="st0"
+ x1="34.153015"
+ y1="3.404959"
+ x2="43.679581"
+ y2="12.587194"
+ id="line1547" />
+<line
+ class="st2"
+ x1="23.084372"
+ y1="19.683172"
+ x2="39.038502"
+ y2="2.8108137"
+ id="line1549"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke:#666666;stroke-opacity:1" />
+<line
+ class="st2"
+ x1="3.7665691"
+ y1="40.163593"
+ x2="19.491148"
+ y2="23.520805"
+ id="line1551"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke:#666666;stroke-opacity:1" />
+<line
+ class="st2"
+ x1="28.054932"
+ y1="24.509245"
+ x2="44.238625"
+ y2="7.6368885"
+ id="line1553"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke:#666666;stroke-opacity:1" />
+<line
+ class="st2"
+ x1="8.5575352"
+ y1="45.184124"
+ x2="24.626448"
+ y2="28.426548"
+ id="line1555"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke:#666666;stroke-opacity:1" />
+<polyline
+ class="st3"
+ points="13.4,23.5 20.2,23.1 20.3,16.4 "
+ id="polyline1557"
+ style="stroke:#cc0000;stroke-width:2.10972;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.3866205,0,0,1.4582594,-8.7657785,-14.110431)" />
+<polyline
+ class="st3"
+ points="33.7,28.5 26.8,28.9 26.8,35.6 "
+ id="polyline1559"
+ style="stroke:#cc0000;stroke-width:2.19817;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.4082952,0,0,1.32259,-9.2134144,-9.5667462)" />
+</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
new file mode 100644
index 0000000..20ea76f
--- /dev/null
+++ b/app/bin/bitmaps/svg/sticky-doc.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg1556"
+ sodipodi:docname="sticky-doc.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="metadata1560"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1680"
+ inkscape:window-height="931"
+ id="namedview1558"
+ showgrid="false"
+ inkscape:zoom="10.803477"
+ inkscape:cx="31.980445"
+ inkscape:cy="33.461449"
+ inkscape:window-x="6"
+ inkscape:window-y="3"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1556"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs1538"><clipPath
+ id="clipPath4490"><path
+ d="m0 48h48v-48h-48z"
+ id="path1535" /></clipPath><clipPath
+ id="clipPath4424"><path
+ d="M 0,48 H 48 V 0 H 0 Z"
+ id="path920" /></clipPath></defs><path
+ style="fill:#a0592c;fill-opacity:1;stroke:#a0592c;stroke-width:1.1707px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 2.7671622,8.6432915 44.7300768,0.04069 13.734325,9.8289935 0.0034,36.843687 -58.5931253,-0.05776 z"
+ id="path2772"
+ sodipodi:nodetypes="cccccc"
+ inkscape:label="outline" /><g
+ transform="matrix(2.2387733,0,0,-2.564431,-15.300851,92.664659)"
+ id="g1554"><path
+ d="M 8.6186891,32.247551 8.6032755,15.12224 33.479571,15.100555 33.473002,28.64877 27.806013,32.19633 Z"
+ fill="#ffce00"
+ id="path1540"
+ sodipodi:nodetypes="cccccc"
+ style="stroke-width:0.987122" /><path
+ d="m 27.904611,32.195585 0.0194,-3.615578 5.713343,0.01661 z"
+ fill="#c19d05"
+ id="path1544"
+ sodipodi:nodetypes="cccc"
+ style="stroke-width:1.12315" /></g><path
+ d="m 36.567695,32.072291 c 0,0 -12.08789,-10.690569 -15.998423,-13.665449 C 16.656547,15.435575 9.6075626,22.76642 14.383329,26.263145 19.159803,29.762777 32.203378,41.2321 37.617602,44.33056 44.866707,49.927132 54.702434,40.109053 49.998452,33.279763 43.565297,28.002312 30.39473,16.563864 30.39473,16.563864"
+ fill="none"
+ stroke="#0679bf"
+ stroke-miterlimit="10"
+ id="path1548"
+ inkscape:label="clippy"
+ style="stroke:#1566b7;stroke-width:4.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cccccc" /></svg>
diff --git a/app/bin/bitmaps/svg/sticky-link.svg b/app/bin/bitmaps/svg/sticky-link.svg
new file mode 100644
index 0000000..f403661
--- /dev/null
+++ b/app/bin/bitmaps/svg/sticky-link.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg1556"
+ sodipodi:docname="sticky-link.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="metadata1560"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1675"
+ inkscape:window-height="931"
+ id="namedview1558"
+ showgrid="false"
+ inkscape:zoom="10.803477"
+ inkscape:cx="32.026726"
+ inkscape:cy="31.980445"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1556"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="true"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs1538"><clipPath
+ id="clipPath4490"><path
+ d="m0 48h48v-48h-48z"
+ id="path1535" /></clipPath><clipPath
+ id="clipPath4424"><path
+ d="M 0,48 H 48 V 0 H 0 Z"
+ id="path920" /></clipPath></defs><path
+ style="fill:#a0592c;fill-opacity:1;stroke:#a0592c;stroke-width:1.1707px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 2.8295204,8.6432918 44.7300766,0.04069 13.734325,9.8289932 0.0034,36.843687 -58.5931251,-0.05776 z"
+ id="path2772"
+ sodipodi:nodetypes="cccccc"
+ inkscape:label="outline" /><g
+ transform="matrix(2.2387733,0,0,-2.564431,-15.238493,92.664659)"
+ id="g1554"><path
+ d="M 8.6186891,32.247551 8.6032755,15.12224 33.479571,15.100555 33.473002,28.64877 27.806013,32.19633 Z"
+ fill="#ffce00"
+ id="path1540"
+ sodipodi:nodetypes="cccccc"
+ style="stroke-width:0.987122" /><path
+ d="m 27.904611,32.195585 0.0194,-3.615578 5.713343,0.01661 z"
+ fill="#c19d05"
+ id="path1544"
+ sodipodi:nodetypes="cccc"
+ style="stroke-width:1.12315" /></g><g
+ clip-path="url(#clipPath4424)"
+ id="g937"
+ transform="matrix(2.1657938,0,0,-2.4808357,-13.543802,95.073373)"
+ style="stroke-width:1.72565;stroke-miterlimit:4;stroke-dasharray:none"><path
+ d="M 13.494482,28.880566 C 9.7704502,28.323132 9.8028707,22.521573 13.526902,21.948 c 4.856167,-0.500202 10.724216,7.551068 14.825918,6.906165 3.753827,-0.544879 4.139651,-6.106432 0.186631,-6.911199 -4.922663,-0.559203 -10.533859,7.730685 -15.044964,6.9376 z"
+ fill="none"
+ stroke="#0679bf"
+ stroke-miterlimit="10"
+ id="path933"
+ sodipodi:nodetypes="cccccc"
+ style="stroke:#1467b8;stroke-width:1.72565;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:label="link" /></g></svg>
diff --git a/app/bin/bitmaps/svg/sticky-note.svg b/app/bin/bitmaps/svg/sticky-note.svg
new file mode 100644
index 0000000..1fe3d30
--- /dev/null
+++ b/app/bin/bitmaps/svg/sticky-note.svg
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg1556"
+ sodipodi:docname="sticky-note.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="metadata1560"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1669"
+ inkscape:window-height="931"
+ id="namedview1558"
+ showgrid="false"
+ inkscape:zoom="10.803477"
+ inkscape:cx="31.887882"
+ inkscape:cy="31.980445"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg1556"
+ inkscape:document-rotation="0"
+ inkscape:snap-nodes="false"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs1538"><clipPath
+ id="clipPath4490"><path
+ d="m0 48h48v-48h-48z"
+ id="path1535" /></clipPath></defs><path
+ style="fill:#a0592c;fill-opacity:1;stroke:#a0592c;stroke-width:1.1707px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 2.8295202,8.6432916 44.7300768,0.04069 13.734325,9.8289934 0.0034,36.843687 -58.5931248,-0.05776 z"
+ id="path2772"
+ sodipodi:nodetypes="cccccc"
+ inkscape:label="outline" /><g
+ transform="matrix(2.2387733,0,0,-2.564431,-15.238493,92.664659)"
+ id="g1554"><path
+ d="M 8.6186891,32.247551 8.6032755,15.12224 33.479571,15.100555 33.473002,28.64877 27.806013,32.19633 Z"
+ fill="#ffce00"
+ id="path1540"
+ sodipodi:nodetypes="cccccc"
+ style="stroke-width:0.987122" /><path
+ d="m 27.904611,32.195585 0.0194,-3.615578 5.713343,0.01661 z"
+ fill="#c19d05"
+ id="path1544"
+ sodipodi:nodetypes="cccc"
+ style="stroke-width:1.12315" /></g><g
+ id="g2121"
+ inkscape:label="note"
+ transform="translate(-1.0226106,2.4522374)"><path
+ d="M 8.5459993,43.73594 H 56.888648"
+ fill="none"
+ stroke="#0679bf"
+ stroke-miterlimit="10"
+ id="path875"
+ style="stroke:#1467b8;stroke-width:4.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 8.4899312,34.31052 H 50.299766"
+ fill="none"
+ stroke="#0679bf"
+ stroke-miterlimit="10"
+ id="path879"
+ style="stroke:#1467b8;stroke-width:4.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 8.638554,24.945673 H 53.463813"
+ fill="none"
+ stroke="#0679bf"
+ stroke-miterlimit="10"
+ id="path1812"
+ style="stroke:#1467b8;stroke-width:4.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 8.582494,15.765913 H 45.4865"
+ fill="none"
+ stroke="#0679bf"
+ stroke-miterlimit="10"
+ id="path871"
+ style="stroke:#1467b8;stroke-width:4.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></svg>
diff --git a/app/bin/bitmaps/svg/stop.svg b/app/bin/bitmaps/svg/stop.svg
new file mode 100644
index 0000000..4bd5fa0
--- /dev/null
+++ b/app/bin/bitmaps/svg/stop.svg
@@ -0,0 +1,106 @@
+<?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"
+ y="0px"
+ viewBox="0 0 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="stop.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata42"><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="defs40"><radialGradient
+ inkscape:collect="always"
+ xlink:href="#SVGID_1_"
+ id="radialGradient867"
+ cx="23.599313"
+ cy="23.299802"
+ fx="23.599313"
+ fy="23.299802"
+ r="18.802058"
+ gradientTransform="matrix(1,0,0,1.1475892,0,-3.4387987)"
+ gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1528"
+ inkscape:window-height="918"
+ id="namedview38"
+ showgrid="false"
+ inkscape:zoom="14.378038"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:url(#SVGID_1_);stroke:#000000;stroke-miterlimit:10;}
+</style>
+<linearGradient
+ id="SVGID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="2.3596"
+ y1="25.2837"
+ x2="44.5404"
+ y2="25.2837"
+ gradientTransform="matrix(5.000000e-03 1 -1 5.000000e-03 48.7725 -0.2285)">
+
+
+
+
+
+
+
+
+ <stop
+ offset="0.08821"
+ style="stop-color:#e4a9a5;stop-opacity:1"
+ id="stop20" />
+ <stop
+ offset="0.3086791"
+ style="stop-color:#db9b94;stop-opacity:1"
+ id="stop22" />
+ <stop
+ offset="0.54394364"
+ style="stop-color:#cb7167;stop-opacity:1"
+ id="stop24" />
+ <stop
+ offset="0.75441277"
+ style="stop-color:#c84337;stop-opacity:1"
+ id="stop26" />
+
+ <stop
+ offset="0.9501"
+ style="stop-color:#b21506;stop-opacity:1"
+ id="stop30" />
+ <stop
+ offset="0.9992"
+ style="stop-color:#a80e00;stop-opacity:1"
+ id="stop32" />
+</linearGradient>
+<polygon
+ class="st0"
+ points="23.5,44.3 5.3,33.7 5.5,12.7 23.7,2.3 41.9,12.9 41.8,33.9 "
+ id="polygon35"
+ style="fill-opacity:1;fill:url(#radialGradient867)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/straight-line.svg b/app/bin/bitmaps/svg/straight-line.svg
new file mode 100644
index 0000000..32a01a3
--- /dev/null
+++ b/app/bin/bitmaps/svg/straight-line.svg
@@ -0,0 +1,126 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="straight-line.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata923"><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="defs921" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1418"
+ inkscape:window-height="1008"
+ id="namedview919"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="24"
+ inkscape:cy="26.258824"
+ 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="style884">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st3{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st4{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="M 6.6931374,34.732799"
+ id="path886" />
+<path
+ class="st0"
+ d="M 9.9931374,31.232799"
+ id="path888" />
+<path
+ class="st0"
+ d="M 13.293137,27.732799"
+ id="path890" />
+<path
+ class="st0"
+ d="M 16.593137,24.232799"
+ id="path892" />
+<path
+ class="st0"
+ d="M 19.893137,20.732799"
+ id="path894" />
+<path
+ class="st0"
+ d="M 23.193137,17.232799"
+ id="path896" />
+<path
+ class="st0"
+ d="M 26.493137,13.632799"
+ id="path898" />
+<path
+ class="st0"
+ d="M 37.993137,18.132799"
+ id="path900" />
+<path
+ class="st0"
+ d="M 29.793137,10.132799"
+ id="path902" />
+<path
+ class="st0"
+ d="M 41.393137,14.632799"
+ id="path904" />
+<path
+ class="st0"
+ d="M 33.093137,6.6327991"
+ id="path906" />
+<path
+ class="st1"
+ d="M 37.293137,5.8327991"
+ id="path908" />
+<path
+ class="st1"
+ d="M 6.3931374,38.432799"
+ id="path910" />
+<line
+ class="st2"
+ x1="4.237493"
+ y1="43.630077"
+ x2="28.515442"
+ y2="19.529856"
+ id="line912"
+ style="stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st3"
+ x1="28.515442"
+ y1="19.529856"
+ x2="43.04525"
+ y2="4.5849099"
+ id="line914"
+ style="stroke:#cc0e00;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st4"
+ points="42.6,12.6 42.1,5.8 35.5,5.8 "
+ id="polyline916"
+ style="stroke:#cc0e00;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="translate(0.79313743,-1.0672009)" />
+</svg>
diff --git a/app/bin/bitmaps/svg/straight.svg b/app/bin/bitmaps/svg/straight.svg
new file mode 100644
index 0000000..6c5f37b
--- /dev/null
+++ b/app/bin/bitmaps/svg/straight.svg
@@ -0,0 +1,160 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="straight.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata926"><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="defs924" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1413"
+ inkscape:window-height="937"
+ id="namedview922"
+ showgrid="false"
+ inkscape:zoom="14.378038"
+ inkscape:cx="19.826969"
+ inkscape:cy="24.347753"
+ 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="style893">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{stroke:#F80E00;stroke-width:2;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#F80E00;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="2.9930582"
+ y1="36.148373"
+ x2="12.837148"
+ y2="45.518051"
+ id="line895"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="6.9069719"
+ y1="31.997252"
+ x2="16.632456"
+ y2="41.366932"
+ id="line897"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="10.820889"
+ y1="27.846128"
+ x2="20.664972"
+ y2="37.215809"
+ id="line899"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="14.734805"
+ y1="23.695007"
+ x2="24.460285"
+ y2="33.064686"
+ id="line901"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="18.648714"
+ y1="19.543886"
+ x2="28.492802"
+ y2="28.913563"
+ id="line903"
+ style="stroke:#d98b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="22.562628"
+ y1="15.392764"
+ x2="32.288116"
+ y2="24.762442"
+ id="line905"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="26.476543"
+ y1="11.123041"
+ x2="36.320637"
+ y2="20.611319"
+ id="line907"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="30.390459"
+ y1="6.9719186"
+ x2="40.115948"
+ y2="16.460197"
+ id="line909"
+ style="stroke:#b2b2b2;stroke-opacity:1" />
+
+<line
+ class="st1"
+ x1="2.9146755"
+ y1="40.860981"
+ x2="22.544384"
+ y2="19.917923"
+ id="line913"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="7.8975964"
+ y1="46.260185"
+ x2="28.092888"
+ y2="24.918444"
+ id="line915"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="25.125404"
+ y1="22.338005"
+ x2="43.922752"
+ y2="2.8828921"
+ id="line917"
+ style="stroke:#cc0000;stroke-width:2.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+<polyline
+ class="st3"
+ points="42.6,12.6 42.1,5.8 35.5,5.8 "
+ id="polyline919"
+ style="stroke:#cc0000;stroke-width:2.21487;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ transform="matrix(1.1287352,0,0,1.1287352,-3.6377413,-3.6244135)" />
+<line
+ class="st1"
+ x1="22.544384"
+ y1="19.917923"
+ x2="35.261513"
+ y2="6.3368797"
+ id="line842"
+ style="stroke:#666666;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><line
+ class="st1"
+ x1="28.092888"
+ y1="24.918444"
+ x2="40.843689"
+ y2="11.432371"
+ id="line844"
+ style="stroke:#666666;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></svg>
diff --git a/app/bin/bitmaps/svg/switch-motor.svg b/app/bin/bitmaps/svg/switch-motor.svg
new file mode 100644
index 0000000..9c842e3
--- /dev/null
+++ b/app/bin/bitmaps/svg/switch-motor.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg1549"
+ sodipodi:docname="switch-ai.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="metadata1553"><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><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1458"
+ inkscape:window-height="878"
+ id="namedview1551"
+ showgrid="false"
+ inkscape:zoom="8.1826993"
+ inkscape:cx="31.95767"
+ inkscape:cy="31.774356"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g1547"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0" /><defs
+ id="defs1519"><clipPath
+ id="clipPath3486"><path
+ d="m0 48h48v-48h-48z"
+ id="path1516" /></clipPath></defs><g
+ transform="matrix(1.8360071,0,0,-1.8360071,-16.771693,72.460272)"
+ id="g1547"><g
+ transform="matrix(1.1130994,0,0,1.1130994,19.813412,26.914954)"
+ id="g1523"><path
+ d="M 0.4671437,0.44608624 17.714856,-18.551086"
+ fill="none"
+ stroke="#000200"
+ stroke-miterlimit="10"
+ id="path1521"
+ style="stroke-width:2.17864;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="matrix(1.1119872,-0.04974395,0.04974395,1.1119872,10.086494,37.386378)"
+ id="g1527"><path
+ d="m 12.853899,-8.0334513 c 0,-2.1766187 -1.763768,-3.9391237 -3.9391231,-3.9391237 -2.1766184,0 -3.9403864,1.762505 -3.9403864,3.9391237 0,2.1753559 1.763768,3.939124 3.9403864,3.939124 2.1753551,0 3.9391231,-1.7637681 3.9391231,-3.939124"
+ fill="#f70f31"
+ id="path1529"
+ style="fill:#c40808;fill-opacity:1;stroke-width:1.26254" /><path
+ d="M 0.95477497,0.17808758 8.273775,-7.2949125"
+ fill="none"
+ stroke="#f70f31"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path1525"
+ style="stroke:#c40808;stroke-width:2.17864;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ clip-path="url(#clipPath3486)"
+ id="g1545"
+ transform="matrix(1.1130994,0,0,1.1130994,-1.6562092,-3.8556612)"><path
+ d="m 27.768603,8.8691045 c 0,5.3601645 4.49539,9.6982505 10.051937,9.6982505"
+ fill="none"
+ stroke="#000700"
+ stroke-miterlimit="10"
+ id="path1533"
+ style="stroke-width:1.92381;stroke-miterlimit:10;stroke-dasharray:none" /><path
+ d="M 36.880028,18.752028 37.003,9.093"
+ fill="none"
+ stroke="#000700"
+ stroke-miterlimit="10"
+ id="path1537"
+ style="stroke-width:1.90631;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /><path
+ d="M 25.664478,9.257914 39.456307,9.238486"
+ fill="none"
+ stroke="#020000"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ id="path1541"
+ style="stroke-width:1.90631;stroke-miterlimit:10;stroke-dasharray:none" /></g></g></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
new file mode 100644
index 0000000..e2663ac
--- /dev/null
+++ b/app/bin/bitmaps/svg/table-edge.svg
@@ -0,0 +1,80 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="table-edge.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata23"><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="defs21" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1349"
+ inkscape:window-height="949"
+ id="namedview19"
+ showgrid="false"
+ inkscape:snap-nodes="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="22.553895"
+ 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="style2">
+ .st0{fill:#FF8200;stroke:#000000;stroke-miterlimit:10;}
+ .st1{fill:#FF8200;}
+ .st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st3{fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<rect
+ x="2.4431601"
+ y="25.12504"
+ class="st0"
+ width="23.912262"
+ height="17.330696"
+ id="rect4"
+ style="fill:#afaeac;fill-opacity:1;stroke:none;stroke-width:1.48566;stroke-miterlimit:10;stroke-dasharray:none" />
+
+
+
+
+
+
+<path
+ style="fill:none;stroke:#000000;stroke-width:1.46954px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 26.464217,25.078666 2.3930621,25.147382"
+ id="path838" /><path
+ id="path842"
+ style="fill:#42b743;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none"
+ d="M 26.210618,24.581025 2.3201056,24.49001 2.4322676,5.1036417 H 45.510328 Z"
+ sodipodi:nodetypes="ccccc" /><path
+ id="path845"
+ style="fill:#898785;fill-opacity:1;stroke:#000000;stroke-width:1.46954;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 44.945132,22.315034 26.491789,42.39923 26.63883,25.321877 44.873396,5.7958747 Z"
+ sodipodi:nodetypes="ccccc" /><path
+ style="fill:none;stroke:#000000;stroke-width:1.46954px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 26.571012,42.088198 2.4998566,42.156916"
+ id="path838-1" /></svg>
diff --git a/app/bin/bitmaps/svg/text.svg b/app/bin/bitmaps/svg/text.svg
new file mode 100644
index 0000000..c5e5c32
--- /dev/null
+++ b/app/bin/bitmaps/svg/text.svg
@@ -0,0 +1,56 @@
+<?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="text.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="metadata3660"><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="defs3658" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1516"
+ inkscape:window-height="799"
+ id="namedview3656"
+ showgrid="false"
+ inkscape:zoom="10.897825"
+ inkscape:cx="23.995614"
+ inkscape:cy="22.986238"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1"
+ inkscape:pagecheckerboard="0" />
+<style
+ type="text/css"
+ id="style3651">
+ .st0{font-family:'MyriadPro-Regular';}
+ .st1{font-size:48px;}
+</style>
+<text
+ class="st0 st1"
+ id="text3653"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:64px;font-family:Arial;-inkscape-font-specification:'Arial Bold';stroke-width:1.12882"
+ x="0.54810065"
+ y="47.383064"
+ transform="scale(1.0198672,0.98051982)">A</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
new file mode 100644
index 0000000..ccf60ad
--- /dev/null
+++ b/app/bin/bitmaps/svg/top.svg
@@ -0,0 +1,62 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="top.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata862"><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="defs860" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1396"
+ inkscape:window-height="976"
+ id="namedview858"
+ showgrid="false"
+ inkscape:zoom="13.417014"
+ inkscape:cx="24"
+ 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="style851">
+ .st0{fill:#808080;}
+ .st1{fill:#FF0603;}
+</style>
+<rect
+ x="17.38179"
+ y="8.2811852"
+ class="st0"
+ width="28.549133"
+ height="31.43763"
+ id="rect853"
+ style="stroke:#000000;stroke-width:1.27743;stroke-opacity:1" />
+<path
+ class="st1"
+ d="m 29.060985,24.251499 c 0,7.29353 -6.099134,13.078054 -13.495954,13.078054 -7.5265895,0 -13.4959548,-5.910275 -13.4959548,-13.078054 0,-7.293529 6.0991333,-13.078052 13.4959548,-13.078052 7.39682,-0.125751 13.495954,5.784523 13.495954,13.078052 z"
+ id="path855"
+ style="stroke:#990000;stroke-width:1.27743;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/train.svg b/app/bin/bitmaps/svg/train.svg
new file mode 100644
index 0000000..e2d2a71
--- /dev/null
+++ b/app/bin/bitmaps/svg/train.svg
@@ -0,0 +1,173 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="train.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata50"><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="defs48" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1575"
+ inkscape:window-height="965"
+ id="namedview46"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="24"
+ inkscape:cy="21.577618"
+ 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="style2">
+ .st0{fill:none;stroke:#808080;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000401;stroke-miterlimit:10;}
+ .st2{fill:#000401;}
+ .st3{fill:url(#SVGID_1_);}
+ .st4{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st5{fill:#006837;}
+ .st6{fill:#FFE53F;}
+ .st7{font-family:'MyriadPro-Regular';}
+ .st8{font-size:6px;}
+</style>
+<path
+ class="st0"
+ d="M 37.515004,20.476714 C 37.180948,16.574746 38.079405,5.8084729 27.166937,4.1938653 18.481504,2.8483593 3.0440743,4.6124338 2.9428781,8.7564972 c 0.099158,3.8779088 8.7130179,6.4619188 15.6168239,6.1754338 7.341985,-1.130253 13.06101,-4.35213 17.552741,-3.288219"
+ id="path4"
+ sodipodi:nodetypes="ccccc"
+ style="fill:#808080;fill-opacity:1;stroke-width:3.14825;stroke-miterlimit:10;stroke-dasharray:none" />
+
+<line
+ class="st1"
+ x1="13.017804"
+ y1="20.804539"
+ x2="13.276731"
+ y2="27.45532"
+ id="line8"
+ style="stroke-width:2.44934;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st1"
+ x1="3.5502384"
+ y1="21.384453"
+ x2="14.173705"
+ y2="21.356592"
+ id="line10"
+ style="stroke-width:1.837;stroke-miterlimit:10;stroke-dasharray:none" />
+<path
+ class="st2"
+ d="m 27.647211,28.620494 h -3.883914 c 0,0 -0.388392,-1.941957 0,-3.883914 0.906246,-2.07142 2.718739,-1.941956 3.883914,0 0.129462,2.977667 0,3.883914 0,3.883914 z"
+ id="path12"
+ style="stroke-width:1.29463" />
+
+
+
+<path
+ class="st2"
+ d="m 41.836717,43.209271 c 0,1.165174 -0.906246,2.200883 -2.200884,2.200883 -1.294638,0 -2.200884,-0.906246 -2.200884,-2.200883 0,-1.294638 0.906246,-2.200884 2.200884,-2.200884 1.294638,0 2.200884,1.03571 2.200884,2.200884 z"
+ id="path20"
+ style="stroke-width:1.29463" />
+<path
+ class="st0"
+ d="M 14.57137,35.223145"
+ id="path22" />
+<path
+ class="st0"
+ d="M 24.022224,35.870465"
+ id="path24" />
+<linearGradient
+ id="SVGID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="24.5506"
+ y1="21.5"
+ x2="30.4868"
+ y2="21.5"
+ gradientTransform="matrix(0,2.0281882,-1.2946377,0,55.481923,-22.363742)">
+ <stop
+ offset="2.455360e-02"
+ style="stop-color:#000000;stop-opacity:1"
+ id="stop26" />
+ <stop
+ offset="0.4355"
+ style="stop-color:#22B573"
+ id="stop28" />
+ <stop
+ offset="1"
+ style="stop-color:#000201;stop-opacity:1"
+ id="stop30" />
+</linearGradient>
+<rect
+ x="13.406194"
+ y="27.325857"
+ class="st3"
+ width="28.482027"
+ height="12.169129"
+ id="rect33"
+ style="fill:url(#SVGID_1_);stroke-width:1.62042" /><path
+ class="st2"
+ d="m 35.3229,41.816826 c 0,2.200884 -1.812492,4.013376 -4.013377,4.013376 -2.200884,0 -4.013376,-1.812492 -4.013376,-4.013376 0,-2.200885 1.812492,-4.013377 4.013376,-4.013377 2.200885,0 4.013377,1.812492 4.013377,4.013377 z"
+ id="path14"
+ style="stroke-width:1.29463" />
+<line
+ class="st4"
+ x1="41.013638"
+ y1="38.614727"
+ x2="46.192184"
+ y2="43.404884"
+ id="line35"
+ style="stroke-width:1.29463" />
+<rect
+ x="3.0490949"
+ y="27.325857"
+ class="st5"
+ width="10.3571"
+ height="12.169129"
+ id="rect37"
+ style="stroke-width:1.62042" /><path
+ class="st2"
+ d="m 26.260436,41.816826 c 0,2.200884 -1.812493,4.013376 -4.013377,4.013376 -2.200883,0 -4.013376,-1.812492 -4.013376,-4.013376 0,-2.200885 1.812493,-4.013377 4.013376,-4.013377 2.200884,0 4.013377,1.812492 4.013377,4.013377 z"
+ id="path16"
+ style="stroke-width:1.29463" />
+<path
+ class="st2"
+ d="m 7.6176546,43.111463 c 0,1.165175 -0.906246,2.200885 -2.2008849,2.200885 -1.165173,0 -2.2008831,-0.906246 -2.2008831,-2.200885 0,-1.294637 0.9062464,-2.200883 2.2008831,-2.200883 1.2946389,0.129463 2.2008849,1.03571 2.2008849,2.200883 z"
+ id="path39"
+ style="stroke-width:1.29463" />
+<path
+ class="st2"
+ d="m 17.197973,41.816826 c 0,2.200884 -1.812492,4.013376 -4.013376,4.013376 -2.200885,0 -4.0133769,-1.812492 -4.0133769,-4.013376 0,-2.200885 1.8124919,-4.013377 4.0133769,-4.013377 2.200884,0 4.013376,1.812492 4.013376,4.013377 z"
+ id="path18"
+ style="stroke-width:1.29463" />
+
+<rect
+ style="opacity:1;fill:#000201;fill-opacity:1;stroke:none;stroke-width:3.3644;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
+ id="rect858"
+ width="4.7189298"
+ height="7.1085119"
+ x="35.176659"
+ y="20.289568" /><path
+ style="fill:none;stroke:#fffd46;stroke-width:2.44934;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 8.4060186,29.235334 v 8.072492"
+ id="path862" /></svg>
diff --git a/app/bin/bitmaps/svg/trim.svg b/app/bin/bitmaps/svg/trim.svg
new file mode 100644
index 0000000..553d08f
--- /dev/null
+++ b/app/bin/bitmaps/svg/trim.svg
@@ -0,0 +1,91 @@
+<?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 48 48"
+ xml:space="preserve"
+ id="svg2766"
+ sodipodi:docname="trim.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"
+ width="48"
+ height="48"><defs
+ id="defs2770" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1416"
+ inkscape:window-height="920"
+ id="namedview2768"
+ showgrid="false"
+ inkscape:zoom="9.3994533"
+ inkscape:cx="26.121774"
+ inkscape:cy="28.182354"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g2764"
+ inkscape:document-rotation="0"
+ units="mm" /><metadata
+ id="metadata2742"><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><g
+ transform="matrix(1.3333,0,0,-1.3333,0,64)"
+ id="g2764"><g
+ transform="matrix(0.96624008,0,0,0.96624008,3.1679953,14.357371)"
+ id="g2746"><path
+ d="M 0.23938161,0.55855709 15.141382,16.484557"
+ fill="none"
+ stroke="#020202"
+ stroke-miterlimit="10"
+ id="path2744"
+ style="stroke-width:2.25006;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="matrix(0.95746776,0,0,0.95746776,19.792787,32.050838)"
+ id="g2750"
+ style="stroke-width:2.25006;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 13.405,13.62"
+ fill="none"
+ stroke="#808080"
+ stroke-miterlimit="10"
+ id="path2748"
+ style="stroke-width:2.25006;stroke-miterlimit:10;stroke-dasharray:none" /></g><g
+ transform="translate(8.3968901,31.726403)"
+ id="g2754"
+ style="stroke-width:2.25006;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="m -0.23938161,0.07979387 6.84200001,0.454 0.008,6.64600003"
+ fill="none"
+ stroke="#f80e00"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path2752"
+ style="stroke:#cc0e00;stroke-width:2.25006;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="translate(26.65689,28.801403)"
+ id="g2758"
+ style="stroke-width:2.25006;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="m -0.15958774,-0.47876322 -6.84199996,-0.453 -0.008,-6.64799998"
+ fill="none"
+ stroke="#f80e00"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path2756"
+ style="stroke:#cc0e00;stroke-width:2.25006;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g><g
+ transform="matrix(0.93151426,0,0,0.93151426,8.2375086,35.706608)"
+ id="g2762"><path
+ d="M -4.9635328,7.7479537 26.126467,-21.199046"
+ fill="none"
+ stroke="#f6130b"
+ stroke-miterlimit="10"
+ id="path2760"
+ style="stroke:#cc0e00;stroke-width:2.25006;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></g></svg>
diff --git a/app/bin/bitmaps/svg/tunnel.svg b/app/bin/bitmaps/svg/tunnel.svg
new file mode 100644
index 0000000..c31fabe
--- /dev/null
+++ b/app/bin/bitmaps/svg/tunnel.svg
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="0 0 64 64"
+ xml:space="preserve"
+ id="svg60"
+ sodipodi:docname="tunnel.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="metadata66"><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="defs64" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1435"
+ inkscape:window-height="846"
+ id="namedview62"
+ showgrid="false"
+ inkscape:zoom="9.96875"
+ inkscape:cx="32"
+ inkscape:cy="32"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g24"
+ inkscape:document-rotation="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:snap-global="false" /><g
+ transform="matrix(1.7658994,0,0,-1.7658994,5.511509,22.161291)"
+ id="g4"
+ style="stroke:#c67206;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path2"
+ style="stroke:#c67206;stroke-opacity:1" /></g><g
+ transform="matrix(1.7658994,0,0,-1.7658994,14.341007,22.161291)"
+ id="g8"
+ style="stroke:#c67206;stroke-opacity:1"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#fbb03b"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path6"
+ style="stroke:#c67206;stroke-opacity:1" /></g><g
+ transform="matrix(1.7658994,0,0,-1.7658994,49.658995,22.161291)"
+ id="g24"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#919090"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path22"
+ style="stroke:#a6a6a6;stroke-opacity:1" /></g><g
+ transform="matrix(1.7658994,0,0,-1.7658994,40.598556,22.287553)"
+ id="g24-9"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#919090"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path22-6"
+ style="stroke:#a6a6a6;stroke-opacity:1" /></g><g
+ transform="matrix(1.7658994,0,0,-1.7658994,31.671763,22.203885)"
+ id="g24-9-8"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#919090"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path22-6-4"
+ style="stroke:#a6a6a6;stroke-opacity:1" /></g><g
+ transform="matrix(1.7658994,0,0,-1.7658994,58.488492,22.161291)"
+ id="g28"><path
+ d="M 0,0 V -11"
+ fill="none"
+ stroke="#8e8e8e"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path26"
+ style="stroke:#a6a6a6;stroke-opacity:1" /></g><g
+ transform="matrix(1.7658994,0,0,-1.7658994,40.829497,26.174233)"
+ id="g32"
+ style="stroke-width:1.41571;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M -9.556208,0 H 12"
+ fill="none"
+ stroke="#706f6e"
+ stroke-miterlimit="10"
+ id="path30"
+ style="stroke-width:1.41571;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /></g><g
+ transform="matrix(1.7658994,0,0,-1.7658994,1.9797102,26.174233)"
+ id="g36"
+ style="stroke-width:1.41571;stroke-miterlimit:10;stroke-dasharray:none" /><g
+ transform="matrix(1.7658994,0,0,-1.7658994,40.829497,37.573244)"
+ id="g40"
+ style="stroke-width:1.41571;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M -9.8331995,0 H 12"
+ fill="none"
+ stroke="#6d6d6d"
+ stroke-miterlimit="10"
+ id="path38"
+ style="stroke-width:1.41571;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /></g><g
+ transform="matrix(1.7658994,0,0,-1.7658994,1.9797102,37.573244)"
+ id="g44"
+ style="stroke-width:1.41571;stroke-miterlimit:10;stroke-dasharray:none"><path
+ d="M 0,0 H 12.236048"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path34"
+ style="stroke-width:1.41571;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /><path
+ d="M 0,6.448039 H 12.1668"
+ fill="none"
+ stroke="#000000"
+ stroke-miterlimit="10"
+ id="path42"
+ style="stroke-width:1.41571;stroke-miterlimit:10;stroke-dasharray:none"
+ sodipodi:nodetypes="cc" /></g><g
+ id="g863"
+ inkscape:label="portal"
+ transform="matrix(1.4321834,0,0,1.429365,-83.006246,-13.241149)"
+ style="stroke:#000000;stroke-width:2.09677;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"><path
+ d="m 74.171174,39.310722 v -15"
+ fill="none"
+ stroke="#f99108"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path46"
+ style="stroke:#000000;stroke-width:2.09677;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="m 69.307174,42.580722 4.864,-3.27"
+ fill="none"
+ stroke="#f99108"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path50"
+ style="stroke:#000000;stroke-width:2.09677;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="m 74.171174,24.310722 -4.465,-3.589"
+ fill="none"
+ stroke="#f99108"
+ stroke-linecap="round"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ id="path54"
+ style="stroke:#000000;stroke-width:2.09677;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /></g></svg>
diff --git a/app/bin/bitmaps/svg/turnout-design.svg b/app/bin/bitmaps/svg/turnout-design.svg
new file mode 100644
index 0000000..0c394e1
--- /dev/null
+++ b/app/bin/bitmaps/svg/turnout-design.svg
@@ -0,0 +1,183 @@
+<?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="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"
+ 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="metadata992"><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="defs990" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1491"
+ inkscape:window-height="1008"
+ id="namedview988"
+ showgrid="false"
+ inkscape:zoom="10.897825"
+ inkscape:cx="24.041495"
+ inkscape:cy="16.70058"
+ 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="style937">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+ .st2{stroke:#FFFFFF;stroke-miterlimit:10;}
+</style>
+
+
+
+
+
+
+
+
+
+<g
+ id="ties"
+ inkscape:label="ties"
+ transform="matrix(1.1169958,0,0,1.1169958,-1.7103261,6.554599)"><line
+ class="st0"
+ x1="5"
+ y1="22"
+ x2="5"
+ y2="33"
+ id="line939"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="10"
+ y1="22"
+ x2="10"
+ y2="33"
+ id="line941"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="15"
+ y1="21"
+ x2="15"
+ y2="33"
+ id="line943"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="20"
+ y1="19"
+ x2="20"
+ y2="33"
+ id="line945"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="25.299999"
+ y1="17.200001"
+ x2="25.5"
+ y2="33"
+ id="line947"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="30"
+ y1="15"
+ x2="30"
+ y2="33"
+ id="line949"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="35.299999"
+ y1="23.5"
+ x2="35.5"
+ y2="33"
+ id="line951"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="40.410748"
+ y1="22"
+ x2="40.410748"
+ y2="33"
+ id="line953"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="36.321495"
+ y1="12.471398"
+ x2="41.321495"
+ y2="21.971401"
+ id="line955"
+ style="stroke:#d98a0d;stroke-opacity:1" /><line
+ class="st0"
+ x1="36.696541"
+ y1="23.907103"
+ x2="31.896542"
+ y2="14.507097"
+ id="line957"
+ style="stroke:#d98a0d;stroke-opacity:1" /></g>
+
+
+
+<g
+ id="rail"
+ inkscape:label="rail"
+ 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"
+ y1="24.234085"
+ x2="43"
+ y2="24.234085"
+ id="line959"
+ style="stroke-width:1.79052;stroke-miterlimit:4;stroke-dasharray:none" /><line
+ class="st1"
+ x1="3"
+ y1="30.765915"
+ x2="43"
+ y2="30.765915"
+ id="line961"
+ style="stroke-width:1.79052;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ class="st1"
+ d="m 39.693798,13.304091 -3.512035,1.835613 c 0,0 -20.452437,9.076091 -24.584243,9.076091"
+ id="path963"
+ style="stroke-width:1.79052;stroke-miterlimit:4;stroke-dasharray:none" /><path
+ class="st1"
+ d="m 42.6,19.265912 -3.6,2 c -5,2.8 -23.1,9.5 -27.4,9.5"
+ id="path965"
+ style="stroke-width:1.79052;stroke-miterlimit:4;stroke-dasharray:none" /></g>
+
+
+
+
+
+
+
+
+
+
+<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
new file mode 100644
index 0000000..35b8260
--- /dev/null
+++ b/app/bin/bitmaps/svg/turnout.svg
@@ -0,0 +1,168 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="turnout.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata55"><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="defs53" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1545"
+ inkscape:window-height="884"
+ id="namedview51"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:none;stroke:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#000000;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="4.0856333"
+ y1="23.468363"
+ x2="4.0856333"
+ y2="35.572159"
+ id="line4"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="9.5873594"
+ y1="23.468363"
+ x2="9.5873594"
+ y2="35.572159"
+ id="line6"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="15.089085"
+ y1="22.368017"
+ x2="15.089085"
+ y2="35.572159"
+ id="line8"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="20.590809"
+ y1="20.167328"
+ x2="20.590809"
+ y2="35.572159"
+ id="line10"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="26.080217"
+ y1="18.186707"
+ x2="26.300287"
+ y2="35.572159"
+ id="line12"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="31.594261"
+ y1="15.765947"
+ x2="31.594261"
+ y2="35.572159"
+ id="line14"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="37.42609"
+ y1="25.118881"
+ x2="37.64616"
+ y2="35.572159"
+ id="line16"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="43.282558"
+ y1="23.468363"
+ x2="43.282558"
+ y2="35.572159"
+ id="line18"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+
+
+<line
+ class="st0"
+ x1="38.844639"
+ y1="12.917164"
+ x2="44.346363"
+ y2="23.370438"
+ id="line24"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+
+
+
+
+
+
+
+<line
+ class="st0"
+ x1="39.406921"
+ y1="25.302202"
+ x2="34.125263"
+ y2="14.958961"
+ id="line40"
+ style="stroke:#db8a0b;stroke-opacity:1" />
+
+
+
+
+<g
+ id="g5462"
+ inkscape:label="rails"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none"
+ transform="translate(0.66936163,-0.63009306)"><line
+ class="st1"
+ x1="0.94624782"
+ y1="26.433819"
+ x2="45.229389"
+ y2="26.433819"
+ id="line42"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" /><line
+ class="st1"
+ x1="0.94624782"
+ y1="33.86689"
+ x2="45.229389"
+ y2="33.86689"
+ id="line44"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" /><path
+ class="st1"
+ d="m 45.229386,20.882821 -3.961242,2.20069 C 35.656383,26.274512 15.630102,33.866893 10.678549,33.866893"
+ id="path46"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" /><path
+ class="st1"
+ d="m 41.048075,14.550085 -3.741174,1.980621 c 0,0 -22.116937,9.903106 -26.628352,9.903106"
+ id="path48"
+ style="stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none" /></g></svg>
diff --git a/app/bin/bitmaps/svg/turntable.svg b/app/bin/bitmaps/svg/turntable.svg
new file mode 100644
index 0000000..8dbb510
--- /dev/null
+++ b/app/bin/bitmaps/svg/turntable.svg
@@ -0,0 +1,175 @@
+<?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="turntable.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="1480"
+ inkscape:window-height="963"
+ id="namedview35"
+ showgrid="false"
+ inkscape:zoom="12.521303"
+ inkscape:cx="23.9991"
+ inkscape:cy="24.398419"
+ 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:#FBB03B;stroke-width:2;stroke-miterlimit:10;}
+ .st1{fill:#E6E6E6;stroke:#000000;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
+</style>
+<line
+ class="st0"
+ x1="6.7533612"
+ y1="38.311905"
+ x2="15.04305"
+ y2="46.830223"
+ id="line4"
+ style="stroke:#d88b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="8.178153"
+ y1="18.746393"
+ x2="8.178153"
+ y2="30.725275"
+ id="line6"
+ style="stroke:#d88b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="2.9970963"
+ y1="18.746393"
+ x2="2.9970963"
+ y2="30.725275"
+ id="line8"
+ style="stroke:#d88b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="19.582573"
+ y1="4.7600694"
+ x2="10.904302"
+ y2="12.745992"
+ id="line10"
+ style="stroke:#d88b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="16.45108"
+ y1="1.2180778"
+ x2="7.7728114"
+ y2="9.2040005"
+ id="line12"
+ style="stroke:#d88b0d;stroke-opacity:1" />
+<line
+ class="st0"
+ x1="10.380101"
+ y1="34.58514"
+ x2="18.669794"
+ y2="43.103458"
+ id="line14"
+ style="stroke:#d88b0d;stroke-opacity:1" />
+<path
+ class="st1"
+ d="m 46.517967,24.203441 c 0,9.982403 -7.90111,18.500721 -18.004169,18.500721 -9.973534,0 -18.00417,-8.252121 -18.00417,-18.500721 0,-10.248599 8.030636,-18.5007199 18.00417,-18.5007199 9.973532,0.1330987 18.004169,8.3852179 18.004169,18.5007199 z"
+ id="path16"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="10.768679"
+ y1="21.344675"
+ x2="0.40656796"
+ y2="21.344675"
+ id="line18"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="10.940621"
+ y1="28.126999"
+ x2="0.5785107"
+ y2="28.126999"
+ id="line20"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="19.363255"
+ y1="8.8333969"
+ x2="12.627881"
+ y2="1.1136714"
+ id="line22"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="14.652196"
+ y1="12.867775"
+ x2="7.9168205"
+ y2="5.1480484"
+ id="line24"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="13.745509"
+ y1="35.100971"
+ x2="6.6215572"
+ y2="42.288296"
+ id="line26"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="18.067993"
+ y1="39.831398"
+ x2="11.203092"
+ y2="46.885635"
+ id="line28"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+<rect
+ style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.703957;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect859"
+ width="9.630374"
+ height="35.045143"
+ x="23.639217"
+ y="6.6410065"
+ ry="0.080878146" /><line
+ class="st2"
+ x1="23.63274"
+ y1="6.7675104"
+ x2="23.63274"
+ y2="41.373177"
+ id="line30"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+<line
+ class="st2"
+ x1="33.276073"
+ y1="6.7675104"
+ x2="33.276073"
+ y2="41.373177"
+ id="line32"
+ style="stroke-width:2.15294;stroke-miterlimit:10;stroke-dasharray:none" />
+</svg>
diff --git a/app/bin/bitmaps/svg/undo.svg b/app/bin/bitmaps/svg/undo.svg
new file mode 100644
index 0000000..290e251
--- /dev/null
+++ b/app/bin/bitmaps/svg/undo.svg
@@ -0,0 +1,53 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="undo.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata11"><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="defs9" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1460"
+ inkscape:window-height="1008"
+ id="namedview7"
+ showgrid="false"
+ inkscape:zoom="11.681573"
+ inkscape:cx="24"
+ 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="style2">
+ .st0{fill:#FFFB08;stroke:#FFB70D;stroke-miterlimit:10;}
+</style>
+<path
+ class="st0"
+ d="m 39.482834,43.517164 c 1.173815,0.108926 1.027088,0.108926 3.374724,0.108926 0,-12.526448 -3.814907,-32.024137 -23.329622,-32.350913 C 19.234483,8.1163325 19.381208,5.2842659 19.381208,5.2842659 L 5.8823095,14.216167 19.821391,24.346253 c 0,0 -0.293455,-2.50529 -0.293455,-6.099836 13.792355,-0.108926 19.367988,16.338846 19.954898,25.270747 z"
+ id="path4"
+ style="fill:#ffd000;fill-opacity:1;stroke:#a5690d;stroke-width:1.963;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/app/bin/bitmaps/svg/zoom-choose.svg b/app/bin/bitmaps/svg/zoom-choose.svg
new file mode 100644
index 0000000..a78a425
--- /dev/null
+++ b/app/bin/bitmaps/svg/zoom-choose.svg
@@ -0,0 +1,318 @@
+<?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="zoom-choose.svg"
+ 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" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1518"
+ inkscape:window-height="932"
+ id="namedview1130"
+ showgrid="false"
+ inkscape:zoom="10.897825"
+ 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:showpageshadow="2"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1" />
+<style
+ type="text/css"
+ id="style986">
+ .st0{fill:#FFFFFF;}
+ .st1{fill:none;stroke:#945F00;stroke-width:5;stroke-miterlimit:10;}
+ .st2{filter:url(#Adobe_OpacityMaskFilter);}
+ .st3{opacity:0.8;mask:url(#SVGID_1_);}
+ .st4{fill:none;stroke:#FFFFFF;stroke-width:5;stroke-miterlimit:10;}
+ .st5{fill:url(#SVGID_2_);stroke:#000000;stroke-miterlimit:10;}
+ .st6{fill:url(#SVGID_3_);stroke:#000000;stroke-miterlimit:10;}
+ .st7{fill:url(#SVGID_4_);stroke:#000000;stroke-miterlimit:10;}
+ .st8{fill:url(#SVGID_5_);stroke:#000000;stroke-miterlimit:10;}
+ .st9{fill:url(#SVGID_6_);stroke:#000000;stroke-miterlimit:10;}
+</style>
+<path
+ style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:2.07382;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 30.469189,26.52856 C 43.087232,41.302187 43.087232,41.302187 43.087232,41.302187 L 39.30182,44.456699 26.788926,29.735647 Z"
+ id="path1710" />
+<linearGradient
+ id="SVGID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="6.6809001"
+ y1="17.7167"
+ x2="30.5739"
+ y2="17.7167"
+ gradientTransform="matrix(1.0390529,-0.51836526,0.51836526,1.0390529,-8.1831443,10.762406)"
+ xlink:href="#SVGID_3_">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#52bdea;stop-opacity:1"
+ id="stop1014" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#51c3f0;stop-opacity:1"
+ id="stop1016" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#75cbf0;stop-opacity:1"
+ id="stop1018" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#9fdbf4;stop-opacity:1"
+ id="stop1020" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop1022" />
+
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1026" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1028" />
+ <stop
+ offset="0.84"
+ style="stop-color:#1fbdff;stop-opacity:1"
+ id="stop1030" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#007dd1;stop-opacity:1"
+ id="stop1032" />
+</linearGradient>
+<path
+ class="st5"
+ d="m 31.915477,11.108565 c 1.92652,3.85304 1.92652,8.308118 0.48163,12.04075 -1.324482,3.130595 -3.612225,5.779559 -6.983635,7.465265 C 18.189022,34.226804 9.5196818,31.337024 6.0278649,24.112575 2.4156399,16.888125 5.3054199,8.218786 12.529871,4.6065612 19.633912,1.1147437 28.423659,4.0045236 31.915477,11.108565 Z"
+ id="path1035"
+ style="fill:#b3edff;fill-opacity:1;stroke-width:2.07382;stroke-miterlimit:10;stroke-dasharray:none" />
+<linearGradient
+ id="SVGID_3_"
+ gradientUnits="userSpaceOnUse"
+ x1="7.7722"
+ y1="22.7895"
+ x2="28.6004"
+ y2="12.3985">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop1037" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop1039" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop1041" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop1043" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop1045" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop1047" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1049" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1051" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1053" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1055" />
+</linearGradient>
+
+<linearGradient
+ id="SVGID_4_"
+ gradientUnits="userSpaceOnUse"
+ x1="13.1204"
+ y1="13.1883"
+ x2="15.8946"
+ y2="11.8043">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop1060" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop1062" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop1064" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop1066" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop1068" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop1070" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1072" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1074" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1076" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1078" />
+</linearGradient>
+
+<linearGradient
+ id="SVGID_5_"
+ gradientUnits="userSpaceOnUse"
+ x1="11.7347"
+ y1="13.8796"
+ x2="17.2953"
+ y2="11.1054"
+ xlink:href="#SVGID_4_">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop1083" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop1085" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop1087" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop1089" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop1091" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop1093" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1095" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1097" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1099" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1101" />
+</linearGradient>
+
+<linearGradient
+ id="SVGID_6_"
+ gradientUnits="userSpaceOnUse"
+ x1="19.6297"
+ y1="23.6825"
+ x2="24.396"
+ y2="21.3047">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop1106" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop1108" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop1110" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop1112" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop1114" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop1116" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1118" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1120" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1122" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1124" />
+</linearGradient>
+
+<path
+ style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 10.600075,13.283643 16.841287,-0.09515 -8.322107,11.700035 -8.51918,-11.604886"
+ id="path2931"
+ sodipodi:nodetypes="cccc" /></svg>
diff --git a/app/bin/bitmaps/svg/zoom-extent.svg b/app/bin/bitmaps/svg/zoom-extent.svg
new file mode 100644
index 0000000..9ee2521
--- /dev/null
+++ b/app/bin/bitmaps/svg/zoom-extent.svg
@@ -0,0 +1,247 @@
+<?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="zoom-extent.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/"><g
+ id="Arrow"
+ transform="translate(1.5215336,-2.0964614)"
+ style="stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none"><path
+ style="fill:none;stroke:#ca0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 33.382137,5.0600292 h 9.979502 v 9.9795018"
+ id="path1844" /><path
+ style="fill:none;stroke:#ca0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 43.361639,5.0600292 32.011712,16.409956"
+ id="path1846" /></g><metadata
+ id="metadata1039"><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="defs1037" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1438"
+ inkscape:window-height="939"
+ id="namedview1035"
+ showgrid="false"
+ inkscape:zoom="10.785861"
+ inkscape:cx="23.966561"
+ inkscape:cy="23.966561"
+ 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="style937">
+ .st0{fill:#FFFFFF;}
+ .st1{fill:none;stroke:#945F00;stroke-width:5;stroke-miterlimit:10;}
+ .st2{filter:url(#Adobe_OpacityMaskFilter);}
+ .st3{opacity:0.8;mask:url(#SVGID_1_);}
+ .st4{fill:none;stroke:#FFFFFF;stroke-width:5;stroke-miterlimit:10;}
+ .st5{fill:url(#SVGID_2_);stroke:#000000;stroke-miterlimit:10;}
+ .st6{fill:url(#SVGID_3_);stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st7{fill:url(#SVGID_4_);stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+</style>
+<path
+ style="fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1.38314;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 26.807491,30.152391 3.639939,9.748731 -2.389668,0.880794 -3.660943,-9.793294 z"
+ id="path2383"
+ inkscape:transform-center-x="0.27963193"
+ inkscape:transform-center-y="0.33444225" />
+<linearGradient
+ id="SVGID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="6.6809"
+ y1="17.7167"
+ x2="30.5739"
+ y2="17.7167"
+ gradientTransform="matrix(0.35443348,-0.50978148,0.50978148,0.35443348,8.5305438,27.058238)">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop965" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop967" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop969" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop971" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop973" />
+
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop977" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop979" />
+ <stop
+ offset="0.84"
+ style="stop-color:#3db3ff;stop-opacity:1"
+ id="stop981" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#006bb2;stop-opacity:1"
+ id="stop983" />
+</linearGradient>
+<path
+ class="st5"
+ d="m 27.200894,16.579117 c 1.875189,1.301268 3.007906,3.372217 3.285275,5.474703 0.180276,1.792015 -0.20968,3.605055 -1.34829,5.245847 -2.43988,3.515982 -7.204566,4.376865 -10.664579,1.906373 -3.515982,-2.43988 -4.376864,-7.204569 -1.936984,-10.720551 2.414522,-3.429398 7.235182,-4.320893 10.664578,-1.906372 z"
+ id="path986"
+ style="fill:#b3edff;fill-opacity:1;stroke-width:1.23298;stroke-miterlimit:10;stroke-dasharray:none" />
+<linearGradient
+ id="SVGID_3_"
+ gradientUnits="userSpaceOnUse"
+ x1="14.8466"
+ y1="18.5732"
+ x2="21.1876"
+ y2="15.4097">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop988" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop990" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop992" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop994" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop996" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop998" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1000" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1002" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1004" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1006" />
+</linearGradient>
+
+<linearGradient
+ id="SVGID_4_"
+ gradientUnits="userSpaceOnUse"
+ x1="11.6793"
+ y1="20.1534"
+ x2="24.3893"
+ y2="13.8124">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop1011" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop1013" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop1015" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop1017" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop1019" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop1021" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1023" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1025" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1027" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1029" />
+</linearGradient>
+
+<g
+ id="Arrow-9"
+ transform="matrix(-1,0,0,1,46.70979,-1.957852)"
+ style="stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none"><path
+ style="fill:none;stroke:#ca0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 33.382137,5.0600292 h 9.979502 v 9.9795018"
+ id="path1844-3" /><path
+ style="fill:none;stroke:#ca0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 43.361639,5.0600292 32.011712,16.409956"
+ id="path1846-2" /></g><g
+ id="Arrow-9-0"
+ transform="rotate(180,23.135813,25.105294)"
+ style="stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none"><path
+ style="fill:none;stroke:#ca0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 33.382137,5.0600292 h 9.979502 v 9.9795018"
+ id="path1844-3-1" /><path
+ style="fill:none;stroke:#ca0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 43.361639,5.0600292 32.011712,16.409956"
+ id="path1846-2-6" /></g><g
+ id="Arrow-9-9"
+ transform="matrix(1,0,0,-1,1.7537799,50.14328)"
+ style="stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none"><path
+ style="fill:none;stroke:#ca0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 33.382137,5.0600292 h 9.979502 v 9.9795018"
+ id="path1844-3-9" /><path
+ style="fill:none;stroke:#ca0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 43.361639,5.0600292 32.011712,16.409956"
+ id="path1846-2-9" /></g></svg>
diff --git a/app/bin/bitmaps/svg/zoom-in.svg b/app/bin/bitmaps/svg/zoom-in.svg
new file mode 100644
index 0000000..8c9a883
--- /dev/null
+++ b/app/bin/bitmaps/svg/zoom-in.svg
@@ -0,0 +1,222 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="zoom-in.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata1039"><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="defs1037" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1440"
+ inkscape:window-height="939"
+ id="namedview1035"
+ showgrid="false"
+ inkscape:zoom="14.229167"
+ inkscape:cx="24"
+ 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="style937">
+ .st0{fill:#FFFFFF;}
+ .st1{fill:none;stroke:#945F00;stroke-width:5;stroke-miterlimit:10;}
+ .st2{filter:url(#Adobe_OpacityMaskFilter);}
+ .st3{opacity:0.8;mask:url(#SVGID_1_);}
+ .st4{fill:none;stroke:#FFFFFF;stroke-width:5;stroke-miterlimit:10;}
+ .st5{fill:url(#SVGID_2_);stroke:#000000;stroke-miterlimit:10;}
+ .st6{fill:url(#SVGID_3_);stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st7{fill:url(#SVGID_4_);stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+</style>
+<path
+ style="fill:#666666;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ d="M 30.073634,26.309814 43.199281,41.81576 39.390804,45.01216 26.197147,29.438204 Z"
+ id="path2383" />
+<linearGradient
+ id="SVGID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="6.6809"
+ y1="17.7167"
+ x2="30.5739"
+ y2="17.7167"
+ gradientTransform="matrix(0.8948 -0.4464 0.4464 0.8948 -6.2541 9.9583)">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop965" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop967" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop969" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop971" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop973" />
+
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop977" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop979" />
+ <stop
+ offset="0.84"
+ style="stop-color:#3db3ff;stop-opacity:1"
+ id="stop981" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#006bb2;stop-opacity:1"
+ id="stop983" />
+</linearGradient>
+<path
+ class="st5"
+ d="m 31.708262,10.530367 c 1.91834,3.836679 1.91834,8.27284 0.479585,11.989623 -1.318858,3.117302 -3.596887,5.755019 -6.953981,7.433566 C 18.040093,33.550442 9.4075646,30.672933 5.9305742,23.47916 2.3336874,16.285386 5.2111968,7.652858 12.40497,4.0559712 19.478848,0.57898069 28.231272,3.4564902 31.708262,10.530367 Z"
+ id="path986"
+ style="fill:#b3edff;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;fill-opacity:1" />
+<linearGradient
+ id="SVGID_3_"
+ gradientUnits="userSpaceOnUse"
+ x1="14.8466"
+ y1="18.5732"
+ x2="21.1876"
+ y2="15.4097">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop988" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop990" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop992" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop994" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop996" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop998" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1000" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1002" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1004" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1006" />
+</linearGradient>
+<line
+ class="st6"
+ x1="19.011627"
+ y1="7.305531"
+ x2="19.011627"
+ y2="26.488928"
+ id="line1009"
+ style="fill:url(#SVGID_3_);stroke-width:4.532;stroke-miterlimit:10;stroke-dasharray:none" />
+<linearGradient
+ id="SVGID_4_"
+ gradientUnits="userSpaceOnUse"
+ x1="11.6793"
+ y1="20.1534"
+ x2="24.3893"
+ y2="13.8124">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop1011" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop1013" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop1015" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop1017" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop1019" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop1021" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1023" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1025" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1027" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1029" />
+</linearGradient>
+<line
+ class="st7"
+ x1="9.4199266"
+ y1="17.192142"
+ x2="28.603325"
+ y2="17.192142"
+ id="line1032"
+ style="fill:url(#SVGID_4_);stroke-width:4.53151;stroke-miterlimit:10;stroke-dasharray:none" />
+</svg>
diff --git a/app/bin/bitmaps/svg/zoom-out.svg b/app/bin/bitmaps/svg/zoom-out.svg
new file mode 100644
index 0000000..a476985
--- /dev/null
+++ b/app/bin/bitmaps/svg/zoom-out.svg
@@ -0,0 +1,215 @@
+<?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 48 48"
+ style="enable-background:new 0 0 48 48;"
+ xml:space="preserve"
+ sodipodi:docname="zoom-out.svg"
+ inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata1039"><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="defs1037" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1443"
+ inkscape:window-height="939"
+ id="namedview1035"
+ showgrid="false"
+ inkscape:zoom="14.229167"
+ inkscape:cx="24"
+ 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="style937">
+ .st0{fill:#FFFFFF;}
+ .st1{fill:none;stroke:#945F00;stroke-width:5;stroke-miterlimit:10;}
+ .st2{filter:url(#Adobe_OpacityMaskFilter);}
+ .st3{opacity:0.8;mask:url(#SVGID_1_);}
+ .st4{fill:none;stroke:#FFFFFF;stroke-width:5;stroke-miterlimit:10;}
+ .st5{fill:url(#SVGID_2_);stroke:#000000;stroke-miterlimit:10;}
+ .st6{fill:url(#SVGID_3_);stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+ .st7{fill:url(#SVGID_4_);stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
+</style>
+<path
+ style="fill:#666666;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ d="M 30.073634,26.309814 43.199281,41.81576 39.390804,45.01216 26.197147,29.438204 Z"
+ id="path2383" />
+<linearGradient
+ id="SVGID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="6.6809"
+ y1="17.7167"
+ x2="30.5739"
+ y2="17.7167"
+ gradientTransform="matrix(0.8948 -0.4464 0.4464 0.8948 -6.2541 9.9583)">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop965" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop967" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop969" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop971" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop973" />
+
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop977" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop979" />
+ <stop
+ offset="0.84"
+ style="stop-color:#3db3ff;stop-opacity:1"
+ id="stop981" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#006bb2;stop-opacity:1"
+ id="stop983" />
+</linearGradient>
+<path
+ class="st5"
+ d="m 31.708262,10.530367 c 1.91834,3.836679 1.91834,8.27284 0.479585,11.989623 -1.318858,3.117302 -3.596887,5.755019 -6.953981,7.433566 C 18.040093,33.550442 9.4075646,30.672933 5.9305742,23.47916 2.3336874,16.285386 5.2111968,7.652858 12.40497,4.0559712 19.478848,0.57898069 28.231272,3.4564902 31.708262,10.530367 Z"
+ id="path986"
+ style="fill:#b3edff;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:none;fill-opacity:1" />
+<linearGradient
+ id="SVGID_3_"
+ gradientUnits="userSpaceOnUse"
+ x1="14.8466"
+ y1="18.5732"
+ x2="21.1876"
+ y2="15.4097">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop988" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop990" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop992" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop994" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop996" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop998" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1000" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1002" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1004" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1006" />
+</linearGradient>
+
+<linearGradient
+ id="SVGID_4_"
+ gradientUnits="userSpaceOnUse"
+ x1="11.6793"
+ y1="20.1534"
+ x2="24.3893"
+ y2="13.8124">
+ <stop
+ offset="1.572120e-02"
+ style="stop-color:#29ABE2"
+ id="stop1011" />
+ <stop
+ offset="4.911487e-02"
+ style="stop-color:#32AFE3"
+ id="stop1013" />
+ <stop
+ offset="0.1047"
+ style="stop-color:#4CB9E7"
+ id="stop1015" />
+ <stop
+ offset="0.1756"
+ style="stop-color:#75C9EC"
+ id="stop1017" />
+ <stop
+ offset="0.259"
+ style="stop-color:#AFE0F4"
+ id="stop1019" />
+ <stop
+ offset="0.352"
+ style="stop-color:#F8FCFE"
+ id="stop1021" />
+ <stop
+ offset="0.3609"
+ style="stop-color:#FFFFFF"
+ id="stop1023" />
+ <stop
+ offset="0.5079"
+ style="stop-color:#FFFFFF"
+ id="stop1025" />
+ <stop
+ offset="0.84"
+ style="stop-color:#0075BE"
+ id="stop1027" />
+ <stop
+ offset="0.9944"
+ style="stop-color:#005B97"
+ id="stop1029" />
+</linearGradient>
+<line
+ class="st7"
+ x1="9.4199266"
+ y1="17.192142"
+ x2="28.603325"
+ y2="17.192142"
+ id="line1032"
+ style="fill:url(#SVGID_4_);stroke-width:4.53151;stroke-miterlimit:10;stroke-dasharray:none" />
+</svg>
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/text.xpm b/app/bin/bitmaps/text.xpm
deleted file mode 100644
index 176621d..0000000
--- a/app/bin/bitmaps/text.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * text_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000000000",
-" .. ",
-" .. ",
-" .... ",
-" .... ",
-" .. .. ",
-" .. .. ",
-" .. .. ",
-" .. .. ",
-" .. .. ",
-" .......... ",
-" ............ ",
-" .. .. ",
-" .. .. ",
-" .. .. ",
-".. ..",
-"... ..."};
diff --git a/app/bin/bitmaps/train.xpm b/app/bin/bitmaps/train.xpm
deleted file mode 100644
index c94593e..0000000
--- a/app/bin/bitmaps/train.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * train_xpm[]={
-"16 16 3 1",
-". c None",
-"# c #800080008000",
-"a c #000000000000",
-".....#..#.#.....",
-"aaaa.......##...",
-"...a........#...",
-"...a...a...#....",
-"...a..aaa..aa...",
-"...a..aaa..aa...",
-"aaaaaaaaaaaaaa..",
-"aaaaaaaaaaaaaa..",
-"aaaaaaaaaaaaaa..",
-"aaaaaaaaaaaaaaaa",
-"aaaaaaaaaaaaaaaa",
-"...aa...aa.....a",
-"..aaaa.aaaa....a",
-"..aaaa.aaaa..aa.",
-"...aa...aa...aa.",
-"................"};
diff --git a/app/bin/bitmaps/tunnel.xpm b/app/bin/bitmaps/tunnel.xpm
deleted file mode 100644
index 449080e..0000000
--- a/app/bin/bitmaps/tunnel.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * tunnel_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #00FFFF",
-"+ c #000000",
-" .. ",
-" .. ",
-" .. ",
-" .. ",
-"+ + .. ",
-"++++++++.. + + ",
-"+ + .. ",
-"+ + .. ",
-"+ + .. ",
-"++++++++.. + + ",
-"+ + .. ",
-" .. ",
-" .. ",
-" .. ",
-" .. ",
-" "};
diff --git a/app/bin/bitmaps/turnout.xpm b/app/bin/bitmaps/turnout.xpm
deleted file mode 100644
index 91d7af5..0000000
--- a/app/bin/bitmaps/turnout.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * turnout_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000000000",
-" ",
-" ",
-" . . ",
-" .. ",
-" . ... ",
-" .. . . ",
-" . ... .. ",
-" . .. . .. . ",
-"............... ",
-" . . .. . ",
-" . ... . . ",
-"............... ",
-" . . . . ",
-" ",
-" ",
-" "};
diff --git a/app/bin/bitmaps/turntbl.xpm b/app/bin/bitmaps/turntbl.xpm
deleted file mode 100644
index ca6f359..0000000
--- a/app/bin/bitmaps/turntbl.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * turntbl_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000000000",
-" . ",
-". .. ",
-" . .. ..... ",
-" . .. . . . ",
-" . . . . . . ",
-" . . . . ",
-" . . . . .",
-".... . . .",
-" . . . . .",
-".... . . .",
-" . . . . .",
-" . . . . ",
-" . . . . . . ",
-" . .. . . . ",
-" . .. ..... ",
-" .. "};
diff --git a/app/bin/bitmaps/zoom.xpm b/app/bin/bitmaps/zoom.xpm
deleted file mode 100644
index 6b845a5..0000000
--- a/app/bin/bitmaps/zoom.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static char * zoom_xpm[] = {
-"16 16 5 1",
-" c None",
-"- c #FFFFFFFFFFFF",
-". c #000000000000",
-"X c #0000FFFFFFFF",
-"o c #FFFF7DF70000",
-" ..... ",
-" ..-XXXX.. ",
-" .----XXX. ",
-".--.---.--. ",
-".-...-.---. ",
-".--.-.----. ",
-".---.-...-. ",
-".XX.------. ",
-" .XXX----. ",
-" ..XXX--... ",
-" ..... .o. ",
-" .o. ",
-" .o. ",
-" .o. ",
-" .. ",
-" "};
diff --git a/app/bin/bitmaps/zoomin.xpm b/app/bin/bitmaps/zoomin.xpm
deleted file mode 100644
index 4b6f8d5..0000000
--- a/app/bin/bitmaps/zoomin.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static char * zoomin_xpm[] = {
-"16 16 5 1",
-" c None",
-"- c #FFFFFFFFFFFF",
-". c #000000000000",
-"X c #0000FFFFFFFF",
-"o c #FFFF7DF70000",
-" ..... ",
-" ..-XXXX.. ",
-" .----XXX. ",
-".-.--.--.-. ",
-"........... . ",
-".-.--.--.-. ....",
-"........... . ",
-".X.--.--.-. ",
-" .XXX----. ",
-" ..XXX--.o. ",
-" ..... .o. ",
-" .o. ",
-" .o. ",
-" .o. ",
-" .. ",
-" "};
diff --git a/app/bin/bitmaps/zoomout.xpm b/app/bin/bitmaps/zoomout.xpm
deleted file mode 100644
index 8d8d442..0000000
--- a/app/bin/bitmaps/zoomout.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static char * zoomout_xpm[] = {
-"16 16 5 1",
-" c None",
-"- c #FFFFFFFFFFFF",
-". c #000000000000",
-"X c #0000FFFFFFFF",
-"o c #FFFF7DF70000",
-" ..... ",
-" ..-XXXX.. ",
-" .----XXX. ",
-".---------. . ",
-".-.--.--.-. ....",
-"........... . ",
-".-.--.--.-. ....",
-".XX-------. . ",
-" .XXX----. ",
-" ..XXX--... ",
-" ..... .o. ",
-" .o. ",
-" .o. ",
-" .o. ",
-" .. ",
-" "};
diff --git a/app/bin/cbezier.c b/app/bin/cbezier.c
index 7f90a27..1e09e5d 100644
--- a/app/bin/cbezier.c
+++ b/app/bin/cbezier.c
@@ -1,48 +1,48 @@
/** \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 "track.h"
+#include "common.h"
#include "draw.h"
#include "ccurve.h"
#include "cbezier.h"
@@ -50,59 +50,56 @@
#include "cstraigh.h"
#include "drawgeom.h"
#include "cjoin.h"
-#include "i18n.h"
#include "common.h"
+#include "track.h"
#include "wcolors.h"
-#include "math.h"
-#include "utility.h"
#include "param.h"
#include "fileio.h"
#include "layout.h"
#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)
@@ -115,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;
@@ -173,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);
}
/*
@@ -222,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);
@@ -234,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;
@@ -242,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;
@@ -275,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 ) {
@@ -288,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) {
@@ -305,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;
}
@@ -313,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;
}
@@ -353,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), TRUE ); //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.
@@ -484,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 );
+ }
}
@@ -507,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;
@@ -567,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;
- dd = 10000.0;
+ 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") );
@@ -636,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;
@@ -655,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;
@@ -697,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;
@@ -713,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"));
@@ -769,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;
@@ -788,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:
@@ -803,10 +849,6 @@ EXPORT STATUS_T AdjustBezCurve(
}
-struct extraData {
- BezierData_t bezierData;
- };
-
/*
* CmdBezModify
*
@@ -823,15 +865,16 @@ struct extraData {
* 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;
- track_p t;
- double width = 1.0;
- long mode = 0;
- long cmd;
+// double width = 1.0;
+// long mode = 0;
+// long cmd;
- struct extraData *xx = GetTrkExtraData(trk);
- cmd = (long)commandContext;
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
+// cmd = VP2L(commandContext);
Da.trackGauge = trackG;
switch (action&0xFF) {
@@ -846,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->bezierData.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->bezierData.segsColor, xx->bezierData.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->bezierData.segsColor, xx->bezierData.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->bezierData.segsColor, xx->bezierData.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->bezierData.segsColor, xx->bezierData.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->bezierData.segsColor, xx->bezierData.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"));
@@ -890,22 +941,18 @@ STATUS_T CmdBezModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG)
return C_CANCEL;
}
UndoStart( _("Modify Bezier"), "newBezier - CR" );
- if (Da.track) t = NewBezierTrack( Da.pos, (trkSeg_p)Da.crvSegs_da.ptr, Da.crvSegs_da.cnt);
- else t = NewBezierLine(Da.pos, (trkSeg_p)Da.crvSegs_da.ptr, Da.crvSegs_da.cnt,xx->bezierData.segsColor,xx->bezierData.segsWidth);
-
- if (Da.track) CopyAttributes( trk, t );
-
- Da.state = NONE; //Must do before Delete for redraw
- DeleteTrack(trk, TRUE);
+ UndoModify( trk );
- if (Da.track) {
- for (int i=0;i<2;i++) { //Attach new track
- if (Da.trk[i] != NULL && Da.ep[i] != -1) { //Like the old track
- ConnectAbuttingTracks(t,i,Da.trk[i],Da.ep[i]);
- }
- }
- }
- DrawNewTrack( t );
+ Da.state = NONE;
+// 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();
InfoMessage(_("Modify Bezier Complete"));
return C_TERMINATE;
@@ -916,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->bezierData.segsColor, xx->bezierData.segsWidth, InfoMessage);
+ return AdjustBezCurve(C_REDRAW, pos, Da.track, xx->segsColor, xx->segsLineWidth,
+ InfoMessage);
}
return C_CONTINUE;
@@ -926,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));
@@ -943,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));
@@ -960,22 +1010,24 @@ DIST_T BezierOffsetLength(dynArr_t segs, double offset) {
}
-DIST_T BezierMinRadius(coOrd pos[4],dynArr_t segs) {
- DIST_T r = 100000.0, rr;
- if (segs.cnt == 0 ) return r;
- for (int i = 0;i<segs.cnt;i++) {
+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++) {
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 = 100000.00;
- 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);
@@ -986,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;
}
/*
@@ -1002,15 +1054,15 @@ static void CreateEndAnchor(coOrd p, wBool_t lock) {
STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
{
track_p t;
- static int segCnt;
- STATUS_T rc = C_CONTINUE;
- long curveMode = 0;
+// static int segCnt;
+ static BOOL_T lock;
+ static coOrd movePos;
+// STATUS_T rc = C_CONTINUE;
+// long curveMode = 0;
long cmd;
if (action>>8) {
cmd = action>>8;
- } else cmd = (long)commandContext;
-
- Da.width = (double)lineWidth/mainD.dpi;
+ } else { cmd = VP2L(commandContext); }
Da.trackGauge = trackGauge;
@@ -1019,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;
@@ -1035,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;
@@ -1043,11 +1095,12 @@ 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) {
- if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == 0) { //Snap Track
+ if (lock) {
+ pos = movePos;
if ((t = OnTrack(&p, FALSE, TRUE)) != NULL) {
ep = PickUnconnectedEndPointSilent(p, t);
if (ep != -1) {
@@ -1060,53 +1113,54 @@ 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 ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == 0) {
- if ((t = OnTrack(&p,FALSE, FALSE)) != NULL) {
- if (GetClosestEndPt(t,&p)) {
- pos = p;
- found = TRUE;
- }
- }
+ if (lock) {
+ pos = movePos;
}
}
- if (!found) SnapPos( &pos );
if (Da.state == POS_1) {
Da.pos[0] = pos;
Da.pos[1] = 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);
- if ( Da.state != POS_1 && Da.state != POS_2) return C_CONTINUE;
+ lock = FALSE;
+ if ( Da.state != POS_1 && Da.state != POS_2) { return C_CONTINUE; } //Don't snap CPs
if (Da.track) {
- if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == 0) {
+ if (((MyGetKeyState() & WKEY_ALT) == 0) == magneticSnap) {
if ((t = OnTrack(&pos, FALSE, TRUE)) != NULL) {
EPINX_T ep = PickUnconnectedEndPointSilent(pos, t);
if (ep != -1) {
+ lock = TRUE;
+ movePos = pos;
if (GetTrkGauge(t) == GetScaleTrackGauge(GetLayoutCurScale())) {
pos = GetTrkEndPos(t, ep);
CreateEndAnchor(pos,FALSE);
@@ -1115,50 +1169,62 @@ STATUS_T CmdBezCurve( wAction_t action, coOrd pos )
}
}
} else {
- if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == 0) {
+ if (((MyGetKeyState() & WKEY_ALT) == 0) == magneticSnap) {
if ((t = OnTrack(&pos,FALSE, FALSE)) != NULL) {
CreateEndAnchor(pos,TRUE);
+ lock = TRUE;
+ movePos = pos;
}
}
}
- if (anchors_da.cnt)
- return C_CONTINUE;
-
+ if (!lock && SnapPos(&pos)) {
+ CreateEndAnchor(pos,TRUE);
+ lock = TRUE;
+ movePos = pos;
+ }
+ 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) {
@@ -1167,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:
@@ -1194,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.xpm"
-#include "bitmaps/dbezier.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 49b818f..2cd72d9 100644
--- a/app/bin/cbezier.h
+++ b/app/bin/cbezier.h
@@ -17,12 +17,10 @@
*
* 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 "wlib.h"
-#include "utility.h"
extern dynArr_t tempEndPts_da;
@@ -34,23 +32,21 @@ extern dynArr_t tempEndPts_da;
#define bezCmdCreateTrack (3)
#define bezCmdCreateLine (4)
-extern wDrawColor lineColor;
-extern long lineWidth;
-
-typedef void (*bezMessageProc)( char *, ... );
+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 GetBezierMiddle( track_p, coOrd * );
-BOOL_T ConvertToArcs (coOrd[4], dynArr_t *, BOOL_T, wDrawColor, DIST_T);
-track_p NewBezierTrack(coOrd[4], trkSeg_t *, int);
+
+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 b395306..bc23e14 100644
--- a/app/bin/cblock.c
+++ b/app/bin/cblock.c
@@ -40,57 +40,55 @@
*
* 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 $
*/
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
+#include "common.h"
#include "compound.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
-#include "utility.h"
+#include "trkendpt.h"
+#include "common-ui.h"
-#ifdef WINDOWS
+#ifdef UTFCONVERT
#include "include/utf8convert.h"
-#endif // WINDOWS
+#endif // UTFCONVERT
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) {}
-static void NoDrawFillPoly( drawCmd_p d, int cnt, coOrd * pts, int * types,
- wDrawColor color, wDrawWidth width, int fill, int open) {}
+ wDrawColor color) {}
+static void NoDrawPoly( drawCmd_p d, int cnt, coOrd * pts, int * types,
+ wDrawColor color, wDrawWidth width, drawFill_e eFillOpt ) {}
static void NoDrawFillCircle( drawCmd_p d, coOrd p, DIST_T r,
- wDrawColor color ) {}
+ wDrawColor color ) {}
+static void NoDrawRectangle( drawCmd_p d, coOrd orig, coOrd size,
+ wDrawColor color, drawFill_e eFill ) {}
static drawFuncs_t noDrawFuncs = {
- 0,
NoDrawLine,
NoDrawArc,
NoDrawString,
NoDrawBitMap,
- NoDrawFillPoly,
- NoDrawFillCircle };
+ NoDrawPoly,
+ NoDrawFillCircle,
+ NoDrawRectangle
+};
static drawCmd_t blockD = {
NULL,
@@ -99,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];
@@ -108,10 +107,10 @@ static track_p first_block;
static track_p last_block;
static paramData_t blockPLs[] = {
-/*0*/ { PD_STRING, blockName, "name", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)200, N_("Name"), 0, 0, sizeof( blockName )},
-/*1*/ { PD_STRING, blockScript, "script", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)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, sizeof blockPLs/sizeof blockPLs[0] };
+static paramGroup_t blockPG = { "block", 0, blockPLs, COUNT( blockPLs ) };
static wWin_p blockW;
static char blockEditName[STR_SHORT_SIZE];
@@ -120,36 +119,38 @@ static char blockEditSegs[STR_LONG_SIZE];
static track_p blockEditTrack;
static paramData_t blockEditPLs[] = {
-/*0*/ { PD_STRING, blockEditName, "name", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)200, N_("Name"), 0, 0, sizeof(blockEditName)},
-/*1*/ { PD_STRING, blockEditScript, "script", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("Script"), 0, 0, sizeof(blockEditScript)},
-/*2*/ { PD_STRING, blockEditSegs, "segments", PDO_NOPREF, (void*)350, N_("Segments"), BO_READONLY },
+ /*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, sizeof blockEditPLs/sizeof blockEditPLs[0] };
+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;
+
#define blockTrk(N) DYNARR_N( btrackinfo_t , blockTrk_da, N )
#define tracklist(N) (&(xx->trackList))[N]
typedef struct blockData_t {
- 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 )
{
- return (blockData_p) GetTrkExtraData(trk);
+ return GET_EXTRA_DATA( trk, T_BLOCK, blockData_t );
}
static void DrawBlock (track_p t, drawCmd_p d, wDrawColor color )
@@ -165,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;
@@ -193,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 );
@@ -205,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;
@@ -233,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;
@@ -248,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) {
@@ -262,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';
@@ -270,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 );
}
@@ -299,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;
@@ -327,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);
@@ -381,8 +390,9 @@ static void DeleteBlock ( track_p t )
}
trk1 = xx1->next_block;
}
- if (t == last_block)
+ if (t == last_block) {
last_block = trk1;
+ }
}
@@ -393,16 +403,16 @@ static BOOL_T WriteBlock ( track_p t, FILE * f )
blockData_p xx = GetblockData(t);
char *blockName = MyStrdup(xx->name);
-#ifdef WINDOWS
+#ifdef UTFCONVERT
blockName = Convert2UTF8(blockName);
-#endif // WINDOWS
+#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);
@@ -426,41 +436,44 @@ static BOOL_T ReadBlock ( char * line )
return FALSE;
}
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(name);
-#endif // WINDOWS
+#endif // UTFCONVERT
- DYNARR_RESET( btrackinfo_p , 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_p *, blockTrk_da, 10 );
- blockTrk(blockTrk_da.cnt-1).i = 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))+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;
@@ -478,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 ) {}
@@ -534,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;
@@ -600,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;
@@ -609,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;
}
@@ -668,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 );
@@ -683,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:
@@ -692,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 )
{
@@ -746,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();
@@ -771,7 +790,7 @@ static STATUS_T CmdBlock (wAction_t action, coOrd pos )
{
LOG( log_block, 1, ("*** CmdBlock(%08x,{%f,%f})\n",action,pos.x,pos.y))
- switch ((long)commandContext) {
+ switch (VP2L(commandContext)) {
case BLOCK_CREATE: return CmdBlockCreate(action,pos);
case BLOCK_EDIT: return CmdBlockEdit(action,pos);
case BLOCK_DELETE: return CmdBlockDelete(action,pos);
@@ -782,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;
@@ -857,149 +876,157 @@ static POS_T blkhiliteBorder;
static wDrawColor blkhiliteColor = 0;
static void DrawBlockTrackHilite( void )
{
- wPos_t x, y, w, h;
- if (blkhiliteColor==0)
+ if (blkhiliteColor==0) {
blkhiliteColor = wDrawColorGray(87);
- w = (wPos_t)((blkhiliteSize.x/mainD.scale)*mainD.dpi+0.5);
- h = (wPos_t)((blkhiliteSize.y/mainD.scale)*mainD.dpi+0.5);
- mainD.CoOrd2Pix(&mainD,blkhiliteOrig,&x,&y);
- wDrawFilledRectangle( mainD.d, x, y, w, h, blkhiliteColor, wDrawOptTemp|wDrawOptTransparent );
+ }
+ // This is incomplete. We should be in temp drawing mode and clearing temp draw on UN_HILIGHT
+ 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 );
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_BLOCK) continue;
- ContMgmLoad( blockI, BlockMgmProc, (void *)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 ), 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 );
}
@@ -1008,6 +1035,8 @@ EXPORT void InitTrkBlock( void )
{
T_BLOCK = InitObject ( &blockCmds );
log_block = LogFindIndex ( "block" );
+ DYNARR_INIT( btrackinfo_t, blockTrk_da );
+ last_block = NULL;
}
diff --git a/app/bin/ccontrol.c b/app/bin/ccontrol.c
index 793acc3..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,31 +38,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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
*
- *
*
****************************************************************************/
-static const char rcsid[] = "@(#) : $Id$";
-
-#include <ctype.h>
-#include <string.h>
+//static const char rcsid[] = "@(#) : $Id$";
#include "compound.h"
+#include "cselect.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
-#ifdef WINDOWS
+#include "common-ui.h"
+#ifdef UTFCONVERT
#include "include/utf8convert.h"
-#endif // WINDOWS
-#include "utility.h"
-#include "messages.h"
+#endif // UTFCONVERT
EXPORT TRKTYP_T T_CONTROL = -1;
@@ -77,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];
@@ -85,16 +81,17 @@ static char controlOffScript[STR_LONG_SIZE];
#endif
typedef struct controlData_t {
- 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 (controlData_p) GetTrkExtraData(trk);
+ return GET_EXTRA_DATA( trk, T_CONTROL, controlData_t );
}
#define RADIUS 6
@@ -102,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 WINDOWS
+#ifdef UTFCONVERT
controlName = Convert2UTF8(controlName);
-#endif // WINDOWS
+#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;
- }
-
-#ifdef WINDOWS
+ 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 // WINDOWS
-
- 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;
+#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;
}
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 )
@@ -373,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;
@@ -422,130 +422,136 @@ 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_STRINGLIMITLENGTH, (void*)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 | PDO_STRINGLIMITLENGTH, (void*)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 | PDO_STRINGLIMITLENGTH, (void*)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, sizeof controlEditPLs/sizeof controlEditPLs[0] };
+static paramGroup_t controlEditPG = { "controlEdit", 0, controlEditPLs, COUNT( controlEditPLs ) };
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"));
- 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;
@@ -553,96 +559,95 @@ static POS_T ctlhiliteBorder;
static wDrawColor ctlhiliteColor = 0;
static void DrawControlTrackHilite( void )
{
- wPos_t x, y, w, h;
- if (ctlhiliteColor==0)
+ if (ctlhiliteColor==0) {
ctlhiliteColor = wDrawColorGray(87);
- w = (wPos_t)((ctlhiliteSize.x/mainD.scale)*mainD.dpi+0.5);
- h = (wPos_t)((ctlhiliteSize.y/mainD.scale)*mainD.dpi+0.5);
- mainD.CoOrd2Pix(&mainD,ctlhiliteOrig,&x,&y);
- wDrawFilledRectangle( mainD.d, x, y, w, h, ctlhiliteColor, wDrawOptTemp|wDrawOptTransparent );
+ }
+ 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 );
- }
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_CONTROL) continue;
- ContMgmLoad (controlI, ControlMgmProc, (void *) 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 ), 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 fd51755..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
*/
@@ -79,22 +79,14 @@
#include "cstraigh.h"
#include "drawgeom.h"
#include "cjoin.h"
-#include "i18n.h"
#include "common.h"
-#include "utility.h"
-#include "math.h"
#include "param.h"
#include "layout.h"
#include "cundo.h"
-#include "messages.h"
#include "cselect.h"
#include "fileio.h"
+#include "common-ui.h"
-#include <stdint.h>
-
-extern drawCmd_t tempD;
-extern TRKTYP_T T_BEZIER;
-extern TRKTYP_T T_CORNU;
typedef struct {
coOrd end_center;
@@ -111,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;
@@ -184,17 +177,17 @@ 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 ) {
case HB_SELECT:
CmdCornu( C_CANCEL, zero );
curCornu = trkseg;
- DoCommandB( (void*)(intptr_t)cornuHotBarCmdInx );
+ DoCommandB( I2VP(cornuHotBarCmdInx) );
return NULL;
case HB_LISTTITLE:
sprintf(message,_("%s FlexTrack"),GetScaleName(GetLayoutCurScale()));
@@ -253,7 +246,7 @@ EXPORT void AddHotBarCornu( void )
hotB.txt.u.t.boxed = TRUE;
hotB.txt.u.t.string = MyStrdup(_(" FLEX "));
hotB.txt.u.t.fontP = NULL;
- hotB.txt.u.t.fontSize = 160.0*ratio;
+ hotB.txt.u.t.fontSize = 160*mainD.dpi/72.0*ratio;
hotB.txt.u.t.angle = 0.0;
char * label = MyMalloc(256);
@@ -264,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;
@@ -287,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;
@@ -300,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 = 20*trackGauge;
- 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);
+ 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;
@@ -389,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);
@@ -402,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;
@@ -447,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);
@@ -476,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;
@@ -485,16 +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;
@@ -504,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;
@@ -553,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];
@@ -568,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);
@@ -583,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];
@@ -596,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]) {
@@ -613,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];
@@ -634,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];
@@ -646,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);
@@ -659,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];
@@ -680,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];
@@ -701,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;
}
@@ -748,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;
@@ -817,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;
@@ -875,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
}
@@ -885,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) {
@@ -914,89 +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;
}
-struct extraData {
- cornuData_t cornuData;
- };
-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
@@ -1017,12 +1081,12 @@ static paramData_t cornuModPLs[] = {
#define cornuModEndAnglePD (cornuModPLs[0])
#define cornuModEndAngle 0
- { PD_FLOAT, &cornuModCmdContext.angle, "End Angle", PDO_NORECORD|BO_ENTER, &r0_360, N_("End Angle") },
+ { PD_FLOAT, &cornuModCmdContext.angle, "endangle", PDO_NORECORD|BO_ENTER, &r0_360, N_("End Angle") },
#define cornuModEndRadiusPD (cornuModPLs[1])
#define cornuModEndRadius 1
- { PD_FLOAT, &cornuModCmdContext.radius, "End Radius", PDO_DIM|PDO_NORECORD|BO_ENTER, &r10000_10000, N_("End Radius") },
+ { PD_FLOAT, &cornuModCmdContext.radius, "endradius", PDO_DIM|PDO_NORECORD|BO_ENTER, &r10000_10000, N_("End Radius") },
};
-static paramGroup_t cornuModPG = { "cornuMod", 0, cornuModPLs, sizeof cornuModPLs/sizeof cornuModPLs[0] };
+static paramGroup_t cornuModPG = { "cornuMod", 0, cornuModPLs, COUNT( cornuModPLs ) };
/*
* AdjustCornuCurve
@@ -1037,9 +1101,9 @@ static paramGroup_t cornuModPG = { "cornuMod", 0, cornuModPLs, sizeof 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;
@@ -1050,10 +1114,11 @@ EXPORT STATUS_T AdjustCornuCurve(
wControl_p controls[5]; //Always needs a NULL last entry
char * labels[4];
- Da.cmdType = (long)commandContext;
+ 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) {
@@ -1067,36 +1132,40 @@ 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;
case wActionMove:
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);
@@ -1107,41 +1176,46 @@ 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);
+ wSetCursor(mainD.d,wCursorNone);
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);
+ wSetCursor(mainD.d,wCursorNone);
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);
+ wSetCursor(mainD.d,wCursorNone);
return C_CONTINUE;
}
}
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); }
}
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;
@@ -1150,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;
@@ -1159,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;
@@ -1169,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;
@@ -1181,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;
@@ -1195,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;
@@ -1222,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;
@@ -1242,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"));
@@ -1269,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) {
@@ -1296,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 {
@@ -1313,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);
@@ -1331,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) {
@@ -1360,35 +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);
- struct extraData *xx = GetTrkExtraData(Da.selectTrack);
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];
@@ -1396,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;
@@ -1419,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)) {
@@ -1441,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
@@ -1450,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];
@@ -1483,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 {
@@ -1491,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 {
@@ -1507,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;
@@ -1517,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
@@ -1549,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:
@@ -1589,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;
@@ -1625,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;
@@ -1649,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;
@@ -1664,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;
@@ -1678,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;
@@ -1706,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;
}
}
}
@@ -1721,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]) {
@@ -1736,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();
@@ -1781,11 +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 );
- }
+ 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:
@@ -1800,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();
}
@@ -1825,8 +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 ) {
- struct extraData *xx = GetTrkExtraData(trk);
+STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos,
+ DIST_T trackG )
+{
Da.trackGauge = trackG;
@@ -1839,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);
@@ -1851,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)) {
@@ -1862,20 +1992,20 @@ 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 extraData *xx0 = GetTrkExtraData(prior);
- Da.pos[0] = xx0->cornuData.pos[ep0]; //Copy parms from FIRST CORNU trk
- Da.radius[0] = xx0->cornuData.r[ep0];
- Da.angle[0] = xx0->cornuData.a[ep0];
- Da.center[0] = xx0->cornuData.c[ep0];
+ struct extraDataCornu_t *xx0 = GET_EXTRA_DATA(prior, T_CORNU, extraDataCornu_t);
+ Da.pos[0] = xx0->pos[ep0]; //Copy parms from FIRST CORNU trk
+ Da.radius[0] = xx0->r[ep0];
+ Da.angle[0] = xx0->a[ep0];
+ Da.center[0] = xx0->c[ep0];
}
//Move to RHS
@@ -1883,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];
@@ -1893,21 +2023,22 @@ 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) {
- struct extraData *xx1 = GetTrkExtraData(next);
- Da.pos[1] = xx1->cornuData.pos[ep1]; //Copy parms from LAST CORNU trk
- Da.radius[1] = xx1->cornuData.r[ep1];
- Da.angle[1] = xx1->cornuData.a[ep1];
- Da.center[1] = xx1->cornuData.c[ep1];
+ struct extraDataCornu_t *xx1 = GET_EXTRA_DATA(next, T_CORNU, extraDataCornu_t);
+ Da.pos[1] = xx1->pos[ep1]; //Copy parms from LAST CORNU trk
+ Da.radius[1] = xx1->r[ep1];
+ Da.angle[1] = xx1->a[ep1];
+ Da.center[1] = xx1->c[ep1];
}
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);
@@ -1916,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
@@ -1940,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 );
@@ -1958,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();
@@ -1987,7 +2123,7 @@ STATUS_T CmdCornuModify (track_p trk, wAction_t action, coOrd pos, DIST_T trackG
Da.state = NONE;
return C_TERMINATE;
}
-
+ CopyAttributes(Da.selectTrack,Da.trk[i]);
}
}
BOOL_T end_point[2];
@@ -1997,18 +2133,19 @@ 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]));
- UndoUndo();
+ 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;
}
@@ -2021,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);
@@ -2031,14 +2168,15 @@ 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]));
- UndoUndo();
+ 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;
}
@@ -2051,29 +2189,32 @@ 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();
+ UndoUndo(NULL);
wBeep();
InfoMessage(_("Connected Track End Adjust for end %d failed"),i);
return C_TERMINATE;
@@ -2106,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));
@@ -2123,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));
@@ -2139,25 +2282,27 @@ DIST_T CornuOffsetLength(dynArr_t segs, double offset) {
return dd;
}
-DIST_T CornuMinRadius(coOrd pos[4],dynArr_t segs) {
- DIST_T r = 100000.0, rr;
- if (segs.cnt == 0 ) return r;
- for (int i = 0;i<segs.cnt;i++) {
+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++) {
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 = 100000.00;
- 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;
@@ -2168,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;
@@ -2186,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;
@@ -2208,9 +2355,11 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
track_p t = NULL;
cornuParm_t cp;
+ static BOOL_T lock;
+
Da.commandType = CORNU_CREATE;
- Da.width = (double)lineWidth/mainD.dpi;
+ Da.lineWidth = (double)lineWidth;
Da.trackGauge = trackGauge;
Da.selectTrack = NULL;
@@ -2218,13 +2367,14 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
switch (action&0xFF) {
case C_START:
- Da.cmdType = (long)commandContext;
+ lock = FALSE;
+ Da.cmdType = VP2L(commandContext);
Da.state = NONE;
Da.selectEndPoint = -1;
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;
@@ -2236,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;
@@ -2260,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"));
@@ -2274,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;
@@ -2296,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
- SnapPos( &pos );
+ 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;
@@ -2307,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;
@@ -2346,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
@@ -2376,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 );
@@ -2385,28 +2546,32 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
return C_CONTINUE;
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) {
@@ -2414,38 +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;
}
@@ -2463,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;
@@ -2484,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;
@@ -2519,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;
@@ -2542,17 +2730,25 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
Da.pos[i] = zero;
Da.endHandle[i].end_valid = FALSE;
}
- }
- return rc;
+ SetAllTrackSelect( FALSE );
+ }
+ 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); }
return C_CONTINUE;
@@ -2561,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;
@@ -2572,42 +2768,46 @@ STATUS_T CmdCornu( wAction_t action, coOrd pos )
}
//DYNARR_FREE(trkSeg_t,Da.crvSegs_da);
}
+ SetAllTrackSelect( FALSE );
Da.state = NONE;
if (infoSubst) {
InfoSubstituteControls( NULL, NULL );
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 extraData * xx = GetTrkExtraData(trk);
- if (!IsTrack(trk)) return FALSE;
- for (int i=0; i<xx->cornuData.arcSegs.cnt;i++) {
+ 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++) {
track_p bezTrack[2];
bezTrack[0] = NULL, bezTrack[1] = NULL;
- trkSeg_p seg = &DYNARR_N(trkSeg_t,xx->cornuData.arcSegs,i);
+ trkSeg_p seg = &DYNARR_N(trkSeg_t,xx->arcSegs,i);
if (seg->type == SEG_BEZTRK) {
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;
}
@@ -2616,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;
}
@@ -2645,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;
@@ -2661,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;
@@ -2675,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();
@@ -2687,10 +2894,10 @@ static STATUS_T cmdCornuCreate(
CmdCornu(C_CANCEL, pos);
createState = 0;
rc = C_TERMINATE;
- /* no break */
+ /* no break */
case C_START:
createState = 0;
- commandContext = (void *)cornuCmdHotBar;
+ commandContext = I2VP(cornuCmdHotBar);
rc = CmdCornu(C_START, pos);
Da.prevSelected = -1;
Da.selectEndHandle = -1;
@@ -2710,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/convertto.xpm"
-#include "bitmaps/convertfr.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(convertto_xpm), LEVEL0_50, IC_STICKY|IC_LCLICK|IC_POPUP3|IC_WANT_MOVE,ACCL_CONVERTTO, NULL );
- AddMenuButton( menu, CmdConvertFrom, "cmdConvertFrom", _("Convert From Cornu"), wIconCreatePixMap(convertfr_xpm), 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 2bd1f49..ff3810f 100644
--- a/app/bin/ccornu.h
+++ b/app/bin/ccornu.h
@@ -7,9 +7,9 @@
#ifndef APP_BIN_CCORNU_H_
#define APP_BIN_CCORNU_H_
+#include "common.h"
-
-typedef void (*cornuMessageProc)( char *, ... );
+typedef void (*cornuMessageProc)( const char *, ... );
#define cornuCmdNone (0)
#define cornuJoinTrack (1)
@@ -20,14 +20,17 @@ typedef void (*cornuMessageProc)( 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 e119610..373a975 100644
--- a/app/bin/ccurve.c
+++ b/app/bin/ccurve.c
@@ -17,30 +17,24 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-#include <string.h>
-
#include "ccurve.h"
-
+
#include "cjoin.h"
#include "cstraigh.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
+#include "cselect.h"
-#include "messages.h"
-#include "param.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
-#include "wlib.h"
#include "cbezier.h"
#include "ccornu.h"
#include "layout.h"
+#include "common-ui.h"
/*
* STATE INFO
@@ -49,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;
@@ -71,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);
@@ -133,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") );
@@ -185,167 +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) {
- if (!IsTrack(t)) {
- pos = p;
- found = TRUE;
- }
- }
- }
- Da.down = TRUE;
- if (!found) 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 && !(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 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) {
@@ -354,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) );
@@ -379,28 +391,30 @@ 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;
}
- message( _("Drag on Red arrows to adjust curve") );
+ //message( _("Drag on Red arrows to adjust curve") );
return C_CONTINUE;
default:
@@ -409,7 +423,16 @@ EXPORT STATUS_T CreateCurve(
}
}
+static DIST_T desired_radius = 0.0;
+static BOOL_T infoSubst = FALSE;
+static paramFloatRange_t r_0_10000 = { 0.0, 100000.0 };
+static paramData_t curvePLs[] = {
+#define curveRadPD (curvePLs[0])
+#define curveRadI 0
+ { PD_FLOAT, &desired_radius, "radius", PDO_DIM, &r_0_10000, N_("Desired Radius") }
+};
+static paramGroup_t curvePG = { "curvefixed", 0, curvePLs, COUNT( curvePLs ) };
static STATUS_T CmdCurve( wAction_t action, coOrd pos )
{
@@ -417,53 +440,55 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
DIST_T d;
static int segCnt;
STATUS_T rc = C_CONTINUE;
+ wControl_p controls[2];
+ char * labels[1];
+ static BOOL_T lock;
+ static coOrd movePos;
+
switch (action) {
case C_START:
- curveMode = (long)commandContext;
+ lock = FALSE;
+ 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);
- return CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da, InfoMessage );
+ if (curvePLs[0].control==NULL) {
+ ParamCreateControls(&curvePG, NULL);
+ }
+ SetAllTrackSelect(FALSE);
+ return CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode,
+ &anchors_da, InfoMessage );
case C_DOWN:
if (Da.state == -1) {
- BOOL_T found = FALSE;
- if (curveMode != crvCmdFromCenter ) {
- if (((MyGetKeyState() & WKEY_ALT)==0) == magneticSnap) {
- if ((t = OnTrack(&pos,FALSE,TRUE))!=NULL) {
- EPINX_T ep = PickUnconnectedEndPointSilent(pos, t);
- if (ep != -1) {
- if (GetTrkGauge(t) != GetScaleTrackGauge(GetLayoutCurScale())) {
- wBeep();
- InfoMessage(_("Track is different gauge"));
- return C_CONTINUE;
- }
- pos = GetTrkEndPos(t, ep);
- found = TRUE;
- }
- }
- }
- }
- if (!found) SnapPos( &pos );
+ 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;
}
+ if (infoSubst) {
+ sprintf(message, "desired_radius-%s", curScaleName);
+ wPrefSetFloat("misc", message, desired_radius);
+ InfoSubstituteControls(NULL, NULL);
+ }
+ 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;
case wActionMove:
+ lock = FALSE;
if ((Da.state<0) && (curveMode != crvCmdFromCenter)) {
DYNARR_RESET(trkSeg_t,anchors_da);
if (((MyGetKeyState() & WKEY_ALT)==0) == magneticSnap) {
@@ -473,92 +498,128 @@ static STATUS_T CmdCurve( wAction_t action, coOrd pos )
if (ep != -1) {
pos = GetTrkEndPos(t, ep);
CreateEndAnchor(pos,&anchors_da,FALSE);
+ lock = TRUE;
+ movePos = pos;
}
}
}
}
+ if (!lock && SnapPos(&pos)) {
+ CreateEndAnchor(pos,&anchors_da,FALSE);
+ lock = TRUE;
+ movePos = 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 );
- else PlotCurve( curveMode, Da.pos0, Da.pos1, pos, &Da.curveData, TRUE );
+ 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;
- mainD.funcs->options = 0;
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) {
- CreateEndAnchor(Da.curveData.pos2,&anchors_da,FALSE);
- DrawArrowHeadsArray(&anchors_da,Da.curveData.pos2,FindAngle(Da.curveData.curvePos,Da.curveData.pos2)+90,TRUE,wDrawColorRed);
+ 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 {
+ CreateEndAnchor(Da.curveData.pos2,&anchors_da,FALSE);
+ }
+ DrawArrowHeadsArray(&anchors_da,Da.curveData.pos2,
+ FindAngle(Da.curveData.curvePos,Da.curveData.pos2)+90,TRUE,wDrawColorRed);
+ }
+ if (Da.curveData.curveRadius == desired_radius) {
+ CreateEndAnchor(Da.curveData.curvePos,&anchors_da,TRUE);
+ } else {
+ CreateEndAnchor(Da.curveData.curvePos,&anchors_da,FALSE);
}
- CreateEndAnchor(Da.curveData.curvePos,&anchors_da,TRUE);
}
}
- mainD.funcs->options = 0;
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))) {
- SnapPos( &pos );
- Da.pos1 = pos;
+ 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) {
ErrorMessage( MSG_TRK_TOO_SHORT, "Curved ", PutDim(fabs(minLength-d)) );
return C_TERMINATE;
}
Da.state = 1;
- CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da, InfoMessage );
- tempSegs_da.cnt = 1;
- mainD.funcs->options = 0;
+ CreateCurve( action, pos, TRUE, wDrawColorBlack, 0, curveMode, &anchors_da,
+ InfoMessage );
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
segCnt = tempSegs_da.cnt;
- InfoMessage( _("Drag on Red arrows to adjust curve") );
+
+ sprintf(message, "desired_radius-%s", curScaleName);
+ wPrefGetFloat("misc", message, &desired_radius, desired_radius);
+ controls[0] = curveRadPD.control;
+ controls[1] = NULL;
+ labels[0] = N_("Desired Radius");
+ InfoSubstituteControls(controls, labels);
+ infoSubst = TRUE;
+ curveRadPD.option |= PDO_NORECORD;
+ ParamLoadControls(&curvePG);
+ ParamGroupRecord(&curvePG);
+ //InfoMessage( _("Drag on Red arrows to adjust curve") );
+
return C_CONTINUE;
} else if ((curveMode == crvCmdFromChord && Da.state == 0 && Da.trk)) {
pos = Da.middle;
@@ -566,10 +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 );
+ PlotCurve( curveMode, Da.pos0, Da.pos1, Da.middle, &Da.curveData, TRUE,
+ desired_radius );
}
- mainD.funcs->options = 0;
- 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
@@ -582,20 +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 {
@@ -606,16 +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 );
- mainD.funcs->options = 0;
+ 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);
@@ -668,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, (void*)200 } };
-static paramGroup_t helixPG = { "helix", PGO_PREFMISCGROUP, helixPLs, sizeof helixPLs/sizeof helixPLs[0] };
+ { 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 } };
-static paramGroup_t circleRadiusPG = { "circle", 0, circleRadiusPLs, sizeof circleRadiusPLs/sizeof circleRadiusPLs[0] };
+ { 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 >= sizeof h_orders/sizeof h_orders[0] )
+ if ( h_inx < 0 || h_inx >= COUNT( h_orders ) ) {
return;
+ }
ParamLoadData( &helixPG );
totTurns = helixTurns + helixAngSep/360.0;
length = totTurns * helixRadius * (2 * M_PI);
@@ -693,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);
@@ -726,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);
@@ -740,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 );
}
@@ -760,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 );
}
@@ -781,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);
@@ -809,12 +878,11 @@ static STATUS_T CmdCircleCommon( wAction_t action, coOrd pos, BOOL_T helix )
break;
}
}
- tempSegs_da.cnt = 0;
+ SetAllTrackSelect( FALSE );
+ 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);
@@ -845,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) {
@@ -868,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:
@@ -905,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:
@@ -932,7 +1004,7 @@ static STATUS_T CmdCircleCommon( wAction_t action, coOrd pos, BOOL_T helix )
static STATUS_T CmdCircle( wAction_t action, coOrd pos )
{
if ( action == C_START ) {
- circleMode = (long)commandContext;
+ circleMode = VP2L(commandContext);
}
return CmdCircleCommon( action, pos, FALSE );
}
@@ -943,32 +1015,50 @@ static STATUS_T CmdHelix( wAction_t action, coOrd pos )
return CmdCircleCommon( action, pos, TRUE );
}
-#include "bitmaps/curve1.xpm"
-#include "bitmaps/curve2.xpm"
-#include "bitmaps/curve3.xpm"
-#include "bitmaps/curve4.xpm"
-#include "bitmaps/bezier.xpm"
-#include "bitmaps/cornu.xpm"
-#include "bitmaps/circle1.xpm"
-#include "bitmaps/circle2.xpm"
-#include "bitmaps/circle3.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 )
{
- AddMenuButton( menu, CmdCornu, "cmdCornu", _("Cornu Curve"), wIconCreatePixMap(cornu_xpm), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CORNU, (void*)cornuCmdCreateTrack);
-
- ButtonGroupBegin( _("Curve Track"), "cmdCircleSetCmd", _("Curve Tracks") );
- AddMenuButton( menu, CmdCurve, "cmdCurveEndPt", _("Curve from End-Pt"), wIconCreatePixMap( curve1_xpm ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE1, (void*)0 );
- AddMenuButton( menu, CmdCurve, "cmdCurveTangent", _("Curve from Tangent"), wIconCreatePixMap( curve2_xpm ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE2, (void*)1 );
- AddMenuButton( menu, CmdCurve, "cmdCurveCenter", _("Curve from Center"), wIconCreatePixMap( curve3_xpm ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE3, (void*)2 );
- AddMenuButton( menu, CmdCurve, "cmdCurveChord", _("Curve from Chord"), wIconCreatePixMap( curve4_xpm ), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_CURVE4, (void*)3 );
- AddMenuButton( menu, CmdBezCurve, "cmdBezier", _("Bezier Curve"), wIconCreatePixMap(bezier_xpm), LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ACCL_BEZIER, (void*)bezCmdCreateTrack );
+ ButtonGroupBegin( _("Curve Track"), "cmdCurveSetCmd", _("Curve Tracks") );
+ 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"), "cmdCurveSetCmd", _("Circle Tracks") );
- AddMenuButton( menu, CmdCircle, "cmdCircleFixedRadius", _("Fixed Radius Circle"), wIconCreatePixMap( circle1_xpm ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_CIRCLE1, (void*)0 );
- AddMenuButton( menu, CmdCircle, "cmdCircleTangent", _("Circle from Tangent"), wIconCreatePixMap( circle2_xpm ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_CIRCLE2, (void*)1 );
- AddMenuButton( menu, CmdCircle, "cmdCircleCenter", _("Circle from Center"), wIconCreatePixMap( circle3_xpm ), LEVEL0_50, IC_STICKY|IC_POPUP2, ACCL_CIRCLE3, (void*)2 );
+ ButtonGroupBegin( _("Circle Track"), "cmdCircleSetCmd", _("Circle Tracks") );
+ 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 );
@@ -986,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 0c00c46..07122f9 100644
--- a/app/bin/ccurve.h
+++ b/app/bin/ccurve.h
@@ -17,26 +17,24 @@
*
* 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
#define HAVE_CCURVE_H
-#include "draw.h"
-#include "track.h"
-#include "wlib.h"
-#include "utility.h"
+#include "common.h"
+#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)
@@ -48,15 +46,18 @@ typedef struct {
#define circleCmdFromTangent (1)
#define circleCmdFromCenter (2)
-typedef void (*curveMessageProc)( char *, ... );
-STATUS_T CreateCurve( wAction_t, coOrd, BOOL_T, wDrawColor, DIST_T, long, dynArr_t *,curveMessageProc );
+typedef void (*curveMessageProc)( const char *, ... );
+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 );
+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 6bb4c4a..4d52408 100644
--- a/app/bin/cdraw.c
+++ b/app/bin/cdraw.c
@@ -2,41 +2,36 @@
* 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.
- */
-
-#include <math.h>
-#include <stdint.h>
-#include <string.h>
-#include "wlib.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
+ */
+#include "common.h"
#include "ccurve.h"
#include "cbezier.h"
#include "drawgeom.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "tbezier.h"
#include "misc.h"
-
-extern TRKTYP_T T_BZRLIN;
+#include "cselect.h"
+#include "cundo.h"
+#include "common-ui.h"
static wMenu_p drawModDelMI;
static wMenu_p drawModLinMI;
@@ -62,37 +57,34 @@ 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 < sizeof fontSizeList / sizeof fontSizeList[0]; 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, (void*)curFontSize);
+ curInx = wListAddValue(list, message, NULL, I2VP(curFontSize));
}
sprintf(message, "%ld", fontSizeList[inx]);
- inx1 = wListAddValue(list, message, NULL, (void*)fontSizeList[inx]);
- if (curFontSize == fontSizeList[inx])
+ inx1 = wListAddValue(list, message, NULL, I2VP(fontSizeList[inx]));
+ if (curFontSize == fontSizeList[inx]) {
curInx = inx1;
+ }
}
- if (curFontSize > fontSizeList[(sizeof fontSizeList / sizeof fontSizeList[0]) - 1])
- {
+ if (curFontSize > fontSizeList[ COUNT( fontSizeList ) - 1]) {
sprintf(message, "%ld", curFontSize);
- curInx = wListAddValue(list, message, NULL, (void*)curFontSize);
+ curInx = wListAddValue(list, message, NULL, I2VP(curFontSize));
}
wListSetIndex(list, curInx);
wFlush();
@@ -106,23 +98,25 @@ long GetFontSize(wIndex_t inx)
long GetFontSizeIndex(long size)
{
int i;
- for (i = 0; i < sizeof fontSizeList / sizeof fontSizeList[0]; 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 = (long)wListGetItemContext( list, listInx );
+ *fontSizeR = VP2L( wListGetItemContext( list, listInx ));
} else {
wListGetValues( list, message, sizeof message, NULL, NULL );
if ( message[0] != '\0' ) {
@@ -132,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);
@@ -154,13 +153,14 @@ EXPORT void UpdateFontSizeList(
*/
-struct extraData {
- coOrd orig;
- ANGLE_T angle;
- drawLineType_e lineType;
- wIndex_t segCnt;
- trkSeg_t segs[1];
- };
+typedef struct 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;
@@ -169,7 +169,7 @@ static track_p ignoredDraw;
static void ComputeDrawBoundingBox( track_p t )
{
- struct extraData * xx = GetTrkExtraData(t);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(t, T_DRAW, extraDataDraw_t);
coOrd lo, hi;
GetSegBounds( xx->orig, xx->angle, xx->segCnt, xx->segs, &lo, &hi );
@@ -180,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 extraData * xx;
+ 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 = GetTrkExtraData( trk );
+ xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
xx->orig = pos;
xx->angle = angle;
xx->segCnt = 1;
@@ -198,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) );
}
@@ -210,101 +219,107 @@ 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 extraData * xx;
+ struct extraDataDraw_t * xx;
track_p trk;
trk = NewTrack( 0, T_DRAW, 0, sizeof *xx );
- xx = GetTrkExtraData( trk );
+ xx = GET_EXTRA_DATA( trk, T_DRAW, extraDataDraw_t );
xx->orig = pos;
xx->angle = angle;
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;
}
@@ -313,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))) {
@@ -332,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;
@@ -376,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;
@@ -387,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;
@@ -410,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;
}
@@ -433,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;
- struct extraData * xx = GetTrkExtraData(trk);
+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);
}
}
@@ -470,80 +503,84 @@ EXPORT void DrawOriginAnchor(track_p trk) {
static DIST_T DistanceDraw( track_p t, coOrd * p )
{
- struct extraData * xx = GetTrkExtraData(t);
- if ( ignoredTableEdge == t && xx->segs[0].type == SEG_TBLEDGE )
- return 100000.0;
- if ( ignoredDraw == t )
- return 100000.0;
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(t, T_DRAW, extraDataDraw_t);
+ if ( ignoredTableEdge == t && xx->segs[0].type == SEG_TBLEDGE ) {
+ return DIST_INF;
+ }
+ 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_LONG_SIZE];
- unsigned int layer;
- wIndex_t lineType;
- } drawData;
-typedef enum { E0, E1, PP, CE, AL, A1, A2, RD, LN, HT, WT, LK, OI, RA, VC, LW, LT, CO, FL, OP, BX, BE, OR, DS, TP, TA, TS, TX, PV, LY } drawDesc_e;
+ 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_("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 },
-/*LK*/ { DESC_BOXED, N_("Keep Origin Relative"), &drawData.lock_origin},
-/*OI*/ { DESC_POS, N_("Rot Origin: X,Y"), &drawData.origin },
-/*RA*/ { DESC_FLOAT, N_("Rotate Angle"), &drawData.angle },
-/*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_("Origin: X,Y"), &drawData.endPt[0] },
-/*TA*/ { DESC_FLOAT, N_("Angle"), &drawData.angle },
-/*TS*/ { DESC_EDITABLELIST, N_("Font Size"), &drawData.fontSizeInx },
-/*TX*/ { DESC_TEXT, N_("Text"), &drawData.text },
-/*PV*/ { DESC_PIVOT, N_("Pivot"), &drawData.pivot },
-/*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 ) { \
@@ -567,30 +604,34 @@ static int drawSegInx;
* so that the object remains at the same place as the user specifies.
* If the edit starts with origin {0,0}, it will be set unlocked, otherwise set locked.
*
- * AL- Angle will be set to 0.0 when the object is modified. The points of the objects will be rotated so that
+ * RA - Rotate By Angle will only be active if the Origin is locked.
+ * It will be set to 0.0 whenever the object is modified.
+ *
+ * At the end of the operations, the points of the objects will be rotated so that
* rotated and adjusted so they don't need rotation to lie where the user left them.
*
*/
static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataDraw_t *xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
trkSeg_p segPtr;
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:
- segPtr->width = drawData.lineWidth/mainD.dpi;
+ segPtr->lineWidth = drawData.lineWidth;
break;
case CO:
segPtr->color = drawData.color;
@@ -601,115 +642,86 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
coOrd off;
off.x = drawData.endPt[0].x - drawData.oldE0.x;
off.y = drawData.endPt[0].y - drawData.oldE0.y;
- if (drawData.lock_origin) {
- xx->orig.x +=off.x;
- xx->orig.y +=off.y;
- drawDesc[OI].mode |= DESC_CHANGE;
- } else {
- 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], xx->angle, 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], xx->angle, xx->orig );
- drawDesc[E1].mode |= DESC_CHANGE;
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- UNREORIGIN( segPtr->u.c.center, drawData.endPt[0], xx->angle, xx->orig );
- break;
- case SEG_TEXT:
- UNREORIGIN( segPtr->u.t.pos, drawData.endPt[0], xx->angle, xx->orig );
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- break; //Note not used by POLYGONS
- default:;
- }
- }
- } else { //E1 - alters length
- off.x = drawData.endPt[1].x - drawData.oldE1.x;
- off.y = drawData.endPt[1].y - drawData.oldE1.y;
- drawDesc[E1].mode |= DESC_CHANGE;
- if (drawData.lock_origin) {
- xx->orig.x +=off.x;
- xx->orig.y +=off.y;
- drawDesc[OI].mode |= DESC_CHANGE;
- } else {
- UNREORIGIN( segPtr->u.l.pos[1], drawData.endPt[1], xx->angle, xx->orig );
+ 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:;
}
+ } else {
+ UNREORIGIN( segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
}
drawData.length = FindDistance( drawData.endPt[0], drawData.endPt[1] );
drawDesc[LN].mode |= DESC_CHANGE;
break;
- case OI:
- off.x = drawData.origin.x - drawData.oldOrigin.x;
- off.y = drawData.origin.y - drawData.oldOrigin.y;
+ case OI: ;
+ off.x = drawData.origin.x-xx->orig.x;
+ off.y = drawData.origin.y-xx->orig.y;
xx->orig = drawData.origin;
- if (!drawData.lock_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++) {
- REORIGIN( pt, segPtr->u.p.pts[i].pt, xx->angle, drawData.oldOrigin);
- UNREORIGIN( segPtr->u.p.pts[i].pt, pt, xx->angle, xx->orig );
- }
+ 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], drawData.endPt[i], xx->angle, xx->orig );
- }
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- UNREORIGIN( segPtr->u.c.center, drawData.center, xx->angle, xx->orig );
- break;
- case SEG_TEXT:
- UNREORIGIN( segPtr->u.t.pos, drawData.endPt[0], 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++) {
+ 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 {
- drawData.endPt[0].x += off.x;
- drawData.endPt[0].y += off.y;
switch(segPtr->type) {
- case SEG_STRLIN:
- case SEG_DIMLIN:
- case SEG_BENCH:
- case SEG_TBLEDGE:
- drawDesc[E0].mode |= DESC_CHANGE;
- UNREORIGIN( segPtr->u.l.pos[0], drawData.endPt[0], xx->angle, 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], xx->angle, xx->orig );
- drawDesc[E1].mode |= DESC_CHANGE;
- break;
- case SEG_CRVLIN:
- case SEG_FILCRCL:
- UNREORIGIN( segPtr->u.c.center, drawData.endPt[0], xx->angle, xx->orig );
- drawDesc[E0].mode |= DESC_CHANGE;
- break;
- case SEG_TEXT:
- UNREORIGIN( segPtr->u.t.pos, drawData.endPt[0], xx->angle, xx->orig );
- drawDesc[E0].mode |= DESC_CHANGE;
- break;
- case SEG_POLY:
- case SEG_FILPOLY:
- for (int i=0;i<segPtr->u.p.cnt;i++) {
- REORIGIN( pt, segPtr->u.p.pts[i].pt, xx->angle, drawData.oldOrigin);
- pt.x += off.x;
- pt.y += off.y;
- UNREORIGIN( segPtr->u.p.pts[i].pt, pt, xx->angle, 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;
@@ -734,124 +746,161 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
}
}
break;
- case RA:;
- ANGLE_T angle = NormalizeAngle(drawData.rotate_angle);
- switch(segPtr->type) {
+ case RA:; //Only applies if "Lock" has been set
+ if (drawData.lock_origin) {
+ ANGLE_T angle = NormalizeAngle(drawData.rotate_angle);
+ switch(segPtr->type) {
case SEG_POLY:
case SEG_FILPOLY:
- for (int i=0;i<segPtr->u.p.cnt;i++) {
- REORIGIN(pt,segPtr->u.p.pts[i].pt, angle, xx->orig);
- if (i == 0) drawData.endPt[0] = pt;
- UNREORIGIN(segPtr->u.p.pts[i].pt, pt, 0.0, xx->orig);
+ 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; }
}
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);
- REORIGIN(end0, end0, angle, xx->orig );
- REORIGIN(end1, end1, angle, xx->orig );
- REORIGIN( drawData.center,segPtr->u.c.center, angle, xx->orig );
- drawData.angle0 = FindAngle( drawData.center, end0);
+ 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);
+ segPtr->u.c.a0 = drawData.angle0 = FindAngle( drawData.center, end0);
drawData.angle1 = FindAngle( drawData.center, end1);
+ UNREORIGIN(segPtr->u.c.center,drawData.center,0.0,drawData.origin);
drawDesc[CE].mode |= DESC_CHANGE;
drawDesc[A1].mode |= DESC_CHANGE;
- drawDesc[A2].mode |= DESC_CHANGE;
- /*no break*/
+ /*no break*/
case SEG_FILCRCL:
- REORIGIN( drawData.center,segPtr->u.c.center, angle, xx->orig );
- UNREORIGIN( segPtr->u.c.center, drawData.center, 0.0, xx->orig); //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;
case SEG_STRLIN:
case SEG_DIMLIN:
case SEG_BENCH:
case SEG_TBLEDGE:
- for (int i=0;i<2;i++) {
- REORIGIN( drawData.endPt[i], segPtr->u.l.pos[i], angle, xx->orig );
- UNREORIGIN(segPtr->u.l.pos[i], drawData.endPt[i], 0.0, xx->orig );
+ 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 );
}
drawDesc[E0].mode |= DESC_CHANGE;
drawDesc[E1].mode |= DESC_CHANGE;
break;
- case SEG_TEXT:
-
+ case SEG_TEXT:;
+ coOrd tp;
+ REORIGIN( tp, segPtr->u.t.pos, angle, drawData.origin );
+ UNREORIGIN( segPtr->u.t.pos, tp, 0.0, drawData.origin );
+ drawData.endPt[0] = tp;
+ drawData.angle = segPtr->u.t.angle += angle;
+ drawDesc[TA].mode |= DESC_CHANGE;
+ drawDesc[TP].mode |= DESC_CHANGE;
break;
default:;
+ }
}
xx->angle = drawData.rotate_angle = 0.0;
+ if (!drawData.lock_origin) { drawDesc[RA].mode = DESC_RO; }
drawDesc[RA].mode |= DESC_CHANGE;
break;
- case AL:;
- angle = NormalizeAngle(drawData.angle);
+ 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:
- 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+xx->angle );
- 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+xx->angle );
- drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
- drawDesc[A1].mode |= DESC_CHANGE;
- drawDesc[A2].mode |= DESC_CHANGE;
- break;
- default:
- break;
- }
+ 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:
+ 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;
+ 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], xx->angle, xx->orig );
+ UNREORIGIN(segPtr->u.l.pos[1], drawData.endPt[1], 0.0, xx->orig );
drawDesc[E1].mode |= DESC_CHANGE;
break;
- case SEG_TEXT:
- break; //Doesnt Use
- default:;
+ 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:
if ( drawData.length <= minLength ) {
ErrorMessage( MSG_OBJECT_TOO_SHORT );
- if ( segPtr->type != SEG_CRVLIN ) {
- drawData.length = FindDistance( drawData.endPt[0], drawData.endPt[1] );
- } else {
- drawData.length = fabs(segPtr->u.c.radius)*2*M_PI*segPtr->u.c.a1/360.0;
- }
+ drawData.length = fabs(segPtr->u.c.radius)*2*M_PI*segPtr->u.c.a1/360.0;
drawDesc[LN].mode |= DESC_CHANGE;
break;
}
if ( segPtr->type != SEG_CRVLIN ) {
switch ( drawData.pivot ) {
case DESC_PIVOT_FIRST:
- Translate( &drawData.endPt[1], drawData.endPt[0], drawData.angle, drawData.length );
- UNREORIGIN( segPtr->u.l.pos[1], drawData.endPt[1], xx->angle, xx->orig );
+ 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 );
- UNREORIGIN( segPtr->u.l.pos[0], drawData.endPt[0], xx->angle, xx->orig );
+ 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;
case DESC_PIVOT_MID:
@@ -859,140 +908,119 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
mid.y = (drawData.endPt[0].y+drawData.endPt[1].y)/2.0;
Translate( &drawData.endPt[0], mid, drawData.angle+180.0, drawData.length/2.0 );
Translate( &drawData.endPt[1], mid, drawData.angle, drawData.length/2.0 );
- UNREORIGIN( segPtr->u.l.pos[0], drawData.endPt[0], xx->angle, xx->orig );
- UNREORIGIN( segPtr->u.l.pos[1], drawData.endPt[1], xx->angle, xx->orig );
+ 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;
default:
break;
}
- } else {
-
- if ( drawData.angle < 0.0 || drawData.angle >= 360.0 ) {
- ErrorMessage( MSG_CURVE_OUT_OF_RANGE );
- drawData.angle = segPtr->u.c.a1;
- drawDesc[AL].mode |= DESC_CHANGE;
- } else {
- 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+xx->angle );
- drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
- drawDesc[A1].mode |= DESC_CHANGE;
- drawDesc[A2].mode |= DESC_CHANGE;
- }
}
break;
case CE:
- UNREORIGIN( segPtr->u.c.center, drawData.center, xx->angle, xx->orig );
+ UNREORIGIN( segPtr->u.c.center, drawData.center, 0.0, xx->orig );
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;
- drawDesc[LN].mode |= DESC_CHANGE;
+ 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:
- 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+xx->angle );
- 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+xx->angle );
- drawData.angle1 = NormalizeAngle( drawData.angle0+segPtr->u.c.a1 );
- drawDesc[A1].mode |= DESC_CHANGE;
- drawDesc[A2].mode |= DESC_CHANGE;
- break;
- default:
- break;
- }
+ case A1: //Angle of first point of curve
+ segPtr->u.c.a0 = NormalizeAngle(drawData.angle0);
+ drawData.angle1 = NormalizeAngle(segPtr->u.c.a0+segPtr->u.c.a1);
+ drawDesc[A2].mode |= DESC_CHANGE;
break;
case A2:
- segPtr->u.c.a0 = NormalizeAngle( drawData.angle1-segPtr->u.c.a1-xx->angle );
- drawData.angle0 = NormalizeAngle( segPtr->u.c.a0+xx->angle );
+ segPtr->u.c.a0 = NormalizeAngle( drawData.angle1-segPtr->u.c.a1);
+ drawData.angle0 = NormalizeAngle( segPtr->u.c.a0 );
drawDesc[A1].mode |= DESC_CHANGE;
break;
case BE:
- BenchUpdateOrientationList( (long)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( (long)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( (long)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;
break;
- case TP:
- UNREORIGIN( segPtr->u.t.pos, drawData.endPt[0], xx->angle, xx->orig );
+ case TP:;
+ UNREORIGIN(segPtr->u.t.pos, drawData.endPt[0], 0.0, xx->orig );
break;
case PP:
off.x = drawData.endPt[0].x - drawData.oldE0.x;
off.y = drawData.endPt[0].y - drawData.oldE0.y;
- if (drawData.lock_origin) {
- xx->orig.x +=off.x;
- xx->orig.y +=off.y;
- drawData.origin = xx->orig;
- drawDesc[OI].mode |= DESC_CHANGE;
- drawDesc[E0].mode |= DESC_CHANGE;
- break;
- } else {
- for (int i=0;i<segPtr->u.p.cnt;i++) {
- REORIGIN( pt, segPtr->u.p.pts[i].pt, xx->angle, xx->orig );
- pt.x += off.x;
- pt.y += off.y;
- if (i<5) drawData.endPt[i] = pt;
- UNREORIGIN( segPtr->u.p.pts[i].pt, pt, 0.0, xx->orig );
+ 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;
+ if (i<5) {
+ drawData.endPt[i] = pt;
}
- xx->angle = 0.0;
- drawDesc[AL].mode |= DESC_CHANGE;
+ UNREORIGIN( segPtr->u.p.pts[i].pt, pt, 0.0, xx->orig );
}
break;
case TA:
- //segPtr->u.t.angle = NormalizeAngle( drawData.angle );
- xx->angle = NormalizeAngle( drawData.angle );
+ segPtr->u.t.angle = NormalizeAngle( drawData.angle );
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:
if (segPtr->type == SEG_POLY && drawData.open) {
+ segPtr->u.p.polyType = POLYLINE;
drawData.filled = FALSE;
- drawDesc[FL].mode |= DESC_CHANGE;
+ drawDesc[FL].mode = DESC_RO|DESC_CHANGE;
break;
}
if(drawData.filled) {
- if (segPtr->type == SEG_POLY) segPtr->type = SEG_FILPOLY;
- if (segPtr->type == SEG_CRVLIN) segPtr->type = SEG_FILCRCL;
+ if (segPtr->type == SEG_POLY) {
+ segPtr->type = SEG_FILPOLY;
+ drawData.open = FALSE;
+ drawDesc[OP].mode = DESC_RO|DESC_CHANGE;
+ }
+ if (segPtr->type == SEG_CRVLIN) {
+ segPtr->type = SEG_FILCRCL;
+ drawData.length = 0.0;
+ drawDesc[LN].mode = DESC_RO|DESC_CHANGE;
+ }
} else {
- if (segPtr->type == SEG_FILPOLY) segPtr->type = SEG_POLY;
+ if (segPtr->type == SEG_FILPOLY) {
+ segPtr->type = SEG_POLY;
+ drawData.open = FALSE;
+ drawDesc[OP].mode = DESC_CHANGE;
+ }
if (segPtr->type == SEG_FILCRCL) {
segPtr->type = SEG_CRVLIN;
segPtr->u.c.a0 = 0.0;
segPtr->u.c.a1 = 360.0;
+ drawData.length = 2*M_PI*segPtr->u.c.radius;
+ drawDesc[LN].mode = DESC_RO|DESC_CHANGE;
}
}
break;
@@ -1003,18 +1031,37 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
break;
}
if (drawData.open) {
- if (segPtr->type == SEG_POLY && segPtr->u.p.polyType == FREEFORM) segPtr->u.p.polyType = POLYLINE;
+ if (segPtr->type == SEG_POLY && segPtr->u.p.polyType == FREEFORM) {
+ segPtr->u.p.polyType = POLYLINE;
+ drawData.filled = FALSE;
+ drawDesc[FL].mode = DESC_RO|DESC_CHANGE;
+ }
} else {
- if (segPtr->type == SEG_POLY && segPtr->u.p.polyType == POLYLINE) segPtr->u.p.polyType = FREEFORM;
+ if (segPtr->type == SEG_POLY && segPtr->u.p.polyType == POLYLINE) {
+ segPtr->u.p.polyType = FREEFORM;
+ drawData.filled = FALSE;
+ drawDesc[FL].mode = DESC_CHANGE;
+ }
}
break;
case BX:
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 );
+ }
segPtr->u.t.string = (char *)MyMalloc(len+1);
wTextGetText((wText_p)drawDesc[TX].control0, segPtr->u.t.string, len+1);
segPtr->u.t.string[len] = '\0'; //Make sure of null term
@@ -1025,58 +1072,65 @@ static void UpdateDraw( track_p trk, int inx, descData_p descUpd, BOOL_T final )
SetTrkLayer( trk, drawData.layer);
break;
case LK:
+ if (drawData.lock_origin) {
+ drawDesc[RA].mode = 0;
+ } else {
+ drawDesc[RA].mode = DESC_RO;
+ }
+ drawData.rotate_angle = 0.0;
+ drawDesc[RA].mode |= DESC_CHANGE;
break;
case LT:
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];
- drawData.oldAngle = drawData.angle;
+ drawData.oldAngle = drawData.rotate_angle;
drawData.oldOrigin = drawData.origin;
ComputeDrawBoundingBox( trk );
DrawNewTrack( trk );
TempRedraw(); // UpdateDraw
}
-extern BOOL_T inDescribeCmd;
static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataDraw_t *xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
coOrd pos = oldMarker;
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<sizeof drawDesc/sizeof drawDesc[0]; inx++ ) {
+ for ( inx=0; inx<COUNT( drawDesc ); inx++ ) {
drawDesc[inx].mode = DESC_IGNORE;
drawDesc[inx].control0 = NULL;
}
drawData.color = segPtr->color;
drawData.layer = GetTrkLayer(trk);
drawDesc[CO].mode = 0;
- drawData.lineWidth = (long)floor(segPtr->width*mainD.dpi+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 = xx->angle;
+ drawData.rotate_angle = 0.0;
drawDesc[LK].mode = 0;
@@ -1090,13 +1144,19 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
drawData.length = FindDistance( drawData.endPt[0], drawData.endPt[1] );
drawData.angle = FindAngle( drawData.endPt[0], drawData.endPt[1] );
drawData.origin = xx->orig;
+ //Remove input Angle (if any)
+ 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);
+ xx->angle = 0.0;
drawDesc[LN].mode =
- drawDesc[AL].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; }
switch (segPtr->type) {
case SEG_STRLIN:
title = _("Straight Line");
@@ -1106,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;
@@ -1136,129 +1196,130 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
break;
case SEG_CRVLIN:
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;
drawData.radius = fabs(segPtr->u.c.radius);
drawData.origin = xx->orig;
drawDesc[OI].mode = 0;
- drawDesc[RA].mode =
drawDesc[CE].mode =
- drawDesc[RD].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 ) {
title = _("Circle");
drawDesc[FL].mode = 0;
drawData.filled = FALSE;
+ drawDesc[LN].mode = DESC_RO;
+ drawData.length = 2*M_PI*segPtr->u.c.radius;
} else {
drawData.angle = segPtr->u.c.a1;
drawData.angle0 = NormalizeAngle( segPtr->u.c.a0+xx->angle );
drawData.angle1 = NormalizeAngle( drawData.angle0+drawData.angle );
+ 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");
}
break;
case SEG_FILCRCL:
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;
drawData.radius = fabs(segPtr->u.c.radius);
drawData.origin = xx->orig;
drawDesc[OI].mode =
- drawDesc[RA].mode =
- drawDesc[FL].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;
title = _("Filled Circle");
break;
case SEG_POLY:
+ case SEG_FILPOLY:;
+ BOOL_T filled = FALSE;
+ 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++) {
+ 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);
+ }
+ xx->angle = 0.0;
drawDesc[PP].mode = 0;
drawData.pointCount = segPtr->u.p.cnt;
drawDesc[VC].mode = DESC_RO;
- drawData.filled = FALSE;
+ drawData.filled = filled;
drawDesc[FL].mode = 0;
drawData.angle = 0.0;
- 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;
- drawDesc[OP].mode = 0;
+ drawData.open= FALSE;
+ drawDesc[OP].mode = filled?DESC_RO:0;
drawDesc[LT].mode = 0;
drawData.lineType = (wIndex_t)xx->lineType;
switch (segPtr->u.p.polyType) {
- case RECTANGLE:
- title = _("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;
- break;
- default:
- title = _("Polygon");
- }
- break;
- case SEG_FILPOLY:
- REORIGIN(drawData.endPt[0],segPtr->u.p.pts[0].pt, xx->angle, xx->orig);
- drawDesc[PP].mode = 0;
- drawData.pointCount = segPtr->u.p.cnt;
- drawDesc[VC].mode = DESC_RO;
- drawData.filled = TRUE;
- drawDesc[FL].mode = 0;
- drawDesc[LW].mode = DESC_IGNORE;
- drawData.angle = xx->angle;
- drawDesc[RA].mode = 0;
- drawData.origin = xx->orig;
- drawDesc[OI].mode = DESC_RO;
- drawData.open = FALSE;
- switch (segPtr->u.p.polyType) {
- case RECTANGLE:
- title =_("Filled Rectangle");
- 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;
- default:
- title = _("Filled 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:
REORIGIN( drawData.endPt[0], segPtr->u.t.pos, xx->angle, xx->orig );
- drawData.angle = NormalizeAngle( xx->angle );
+ UNREORIGIN( segPtr->u.t.pos, drawData.endPt[0], 0.0, xx->orig );
+ xx->angle = 0.0;
+ drawData.angle = segPtr->u.t.angle; //Text Angle
+ drawData.origin = xx->orig;
strncpy( drawData.text, segPtr->u.t.string, sizeof drawData.text );
drawData.text[sizeof drawData.text-1] ='\0';
drawData.boxed = segPtr->u.t.boxed;
- drawData.origin = xx->orig;
- drawDesc[E0].mode =
drawDesc[TP].mode =
- drawDesc[TS].mode =
- drawDesc[TX].mode =
- drawDesc[TA].mode =
- drawDesc[BX].mode =
- drawDesc[RA].mode =
- drawDesc[OI].mode = 0;
- drawDesc[CO].mode = 0; /*Allow Text color setting*/
+ 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[LW].mode = DESC_IGNORE;
title = _("Text");
break;
@@ -1266,41 +1327,46 @@ 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];
- drawData.oldAngle = drawData.angle;
+ drawData.oldAngle = drawData.rotate_angle;
drawData.oldOrigin = drawData.origin;
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( (long)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, (void*)0 );
- wListAddValue( (wList_p)drawDesc[LT].control0, _("Dash"), NULL, (void*)1 );
- wListAddValue( (wList_p)drawDesc[LT].control0, _("Dot"), NULL, (void*)2 );
- wListAddValue( (wList_p)drawDesc[LT].control0, _("DashDot"), NULL, (void*)3 );
- wListAddValue( (wList_p)drawDesc[LT].control0, _("DashDotDot"), NULL, (void*)4 );
- wListAddValue( (wList_p)drawDesc[LT].control0, _("CenterDot"), NULL, (void*)5 );
- wListAddValue( (wList_p)drawDesc[LT].control0, _("PhantomDot"), NULL, (void*)6 );
+ wListAddValue( (wList_p)drawDesc[LT].control0, _("Solid"), NULL, I2VP(0 ));
+ wListAddValue( (wList_p)drawDesc[LT].control0, _("Dash"), NULL, I2VP(1 ));
+ wListAddValue( (wList_p)drawDesc[LT].control0, _("Dot"), NULL, I2VP(2 ));
+ wListAddValue( (wList_p)drawDesc[LT].control0, _("DashDot"), NULL, I2VP(3 ));
+ wListAddValue( (wList_p)drawDesc[LT].control0, _("DashDotDot"), NULL, I2VP(4 ));
+ wListAddValue( (wList_p)drawDesc[LT].control0, _("CenterDot"), NULL, I2VP(5 ));
+ wListAddValue( (wList_p)drawDesc[LT].control0, _("PhantomDot"), NULL, I2VP(6 ));
wListSetIndex( (wList_p)drawDesc[LT].control0, drawData.lineType );
}
if ( segPtr->type==SEG_DIMLIN && drawDesc[DS].control0!=NULL ) {
wListClear( (wList_p)drawDesc[DS].control0 );
- wListAddValue( (wList_p)drawDesc[DS].control0, _("Tiny"), NULL, (void*)0 );
- wListAddValue( (wList_p)drawDesc[DS].control0, _("Small"), NULL, (void*)1 );
- wListAddValue( (wList_p)drawDesc[DS].control0, _("Medium"), NULL, (void*)2 );
- wListAddValue( (wList_p)drawDesc[DS].control0, _("Large"), NULL, (void*)3 );
+ wListAddValue( (wList_p)drawDesc[DS].control0, _("Tiny"), NULL, I2VP(0 ));
+ wListAddValue( (wList_p)drawDesc[DS].control0, _("Small"), NULL, I2VP(1 ));
+ wListAddValue( (wList_p)drawDesc[DS].control0, _("Medium"), NULL, I2VP(2 ));
+ wListAddValue( (wList_p)drawDesc[DS].control0, _("Large"), NULL, I2VP(3 ));
wListSetIndex( (wList_p)drawDesc[DS].control0, drawData.dimenSize );
}
if ( segPtr->type==SEG_TEXT && drawDesc[TS].control0!=NULL ) {
@@ -1311,16 +1377,16 @@ static void DescribeDraw( track_p trk, char * str, CSIZE_T len )
static void DrawDraw( track_p t, drawCmd_p d, wDrawColor color )
{
- struct extraData * xx = GetTrkExtraData(t);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(t, T_DRAW, extraDataDraw_t);
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);
}
@@ -1329,9 +1395,9 @@ static void DrawDraw( track_p t, drawCmd_p d, wDrawColor color )
static void DeleteDraw( track_p t )
{
/* Get rid of points if specified */
- struct extraData * xx = GetTrkExtraData(t);
+ 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;
}
@@ -1340,11 +1406,12 @@ static void DeleteDraw( track_p t )
static BOOL_T WriteDraw( track_p t, FILE * f )
{
- struct extraData * xx = GetTrkExtraData(t);
+ 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;
}
@@ -1359,120 +1426,193 @@ static BOOL_T ReadDraw( char * header )
ANGLE_T angle;
wIndex_t layer;
int lineType;
- struct extraData * xx;
+ 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 = GetTrkExtraData(trk);
+ 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;
}
-static void MoveDraw( track_p trk, coOrd orig )
+static void MoveDraw( track_p trk, coOrd off )
{
- struct extraData * xx = GetTrkExtraData(trk);
- xx->orig.x += orig.x;
- xx->orig.y += orig.y;
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
+
+ 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++) {
+ 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:;
+ }
+
+ } else {
+ xx->orig.x += off.x;
+ xx->orig.y += off.y;
+ }
ComputeDrawBoundingBox( trk );
}
static void RotateDraw( track_p trk, coOrd orig, ANGLE_T angle )
{
- struct extraData * xx = GetTrkExtraData(trk);
- Rotate( &xx->orig, orig, angle );
- xx->angle = NormalizeAngle( xx->angle + angle );
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
+ 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 );
+ }
+ 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:;
+ }
+ } else {
+ Rotate( &xx->orig, orig, angle );
+ xx->angle = NormalizeAngle( xx->angle + angle );
+ }
ComputeDrawBoundingBox( trk );
}
static void RescaleDraw( track_p trk, FLOAT_T ratio )
{
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
xx->orig.x *= ratio;
xx->orig.y *= 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 i0_100 = { 0, 100, 25 };
-static paramFloatRange_t r1_10000 = { 1, 10000 };
+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 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[] = {
#define drawModLengthPD (drawModPLs[0])
- { PD_FLOAT, &drawModCmdContext.length, "Length", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Length") },
+ { PD_FLOAT, &drawModCmdContext.length, "Length", PDO_NOPREF|PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Length") },
#define drawModAnglePD (drawModPLs[1])
- { PD_FLOAT, &drawModCmdContext.abs_angle, "Angle", PDO_NORECORD|BO_ENTER, &r360_360, N_("Angle") },
+ { PD_FLOAT, &drawModCmdContext.abs_angle, "Angle", PDO_NOPREF|PDO_NORECORD|BO_ENTER, &r360_360, N_("Angle") },
#define drawModRelAnglePD (drawModPLs[2])
#define drawModRelAngle 2
- { PD_FLOAT, &drawModCmdContext.rel_angle, "Rel Angle", PDO_NORECORD|BO_ENTER, &r360_360, N_("Relative Angle") },
+ { PD_FLOAT, &drawModCmdContext.rel_angle, "RelAngle", PDO_NOPREF|PDO_NORECORD|BO_ENTER, &r360_360, N_("Relative Angle") },
#define drawModWidthPD (drawModPLs[3])
- { PD_FLOAT, &drawModCmdContext.width, "Width", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Width") },
+ { PD_FLOAT, &drawModCmdContext.width, "Width", PDO_NOPREF|PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Width") },
#define drawModHeightPD (drawModPLs[4])
- { PD_FLOAT, &drawModCmdContext.height, "Height", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Height") },
+ { PD_FLOAT, &drawModCmdContext.height, "Height", PDO_NOPREF|PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Height") },
#define drawModRadiusPD (drawModPLs[5])
#define drawModRadius 5
- { PD_FLOAT, &drawModCmdContext.radius, "Radius", PDO_DIM|PDO_NORECORD|BO_ENTER, &r10000_10000, N_("Radius") },
+ { PD_FLOAT, &drawModCmdContext.radius, "Radius", PDO_NOPREF|PDO_DIM|PDO_NORECORD|BO_ENTER, &r0d001_10000, N_("Radius") },
#define drawModArcAnglePD (drawModPLs[6])
- { PD_FLOAT, &drawModCmdContext.arc_angle, "ArcAngle", PDO_NORECORD|BO_ENTER, &r360_360, N_("Arc Angle") },
+ { PD_FLOAT, &drawModCmdContext.arc_angle, "ArcAngle", PDO_NOPREF|PDO_NORECORD|BO_ENTER, &r360_360, N_("Arc Angle") },
#define drawModRotAnglePD (drawModPLs[7)
- { PD_FLOAT, &drawModCmdContext.rot_angle, "Rot Angle", PDO_NORECORD|BO_ENTER, &r0_360, N_("Rotate Angle") },
+ { PD_FLOAT, &drawModCmdContext.rot_angle, "RotAngle", PDO_NOPREF|PDO_NORECORD|BO_ENTER, &r0_360, N_("Rotate Angle") },
#define drawModRotCenterXPD (drawModPLs[8])
#define drawModRotCenterInx 8
- { PD_FLOAT, &drawModCmdContext.rot_center.x, "Rot Center X,Y", PDO_NORECORD|BO_ENTER, &r0_10000, N_("Rot Center X") },
+ { PD_FLOAT, &drawModCmdContext.rot_center.x, "RotCenterx", PDO_NOPREF|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Rot Center X,Y") },
#define drawModRotCenterYPD (drawModPLs[9])
- { PD_FLOAT, &drawModCmdContext.rot_center.y, " ", PDO_NORECORD|BO_ENTER, &r0_10000, N_("Rot Center Y") },
+ { PD_FLOAT, &drawModCmdContext.rot_center.y, "RotCentery", PDO_NOPREF|PDO_NORECORD|BO_ENTER, &r0_10000, NULL },
};
-static paramGroup_t drawModPG = { "drawMod", 0, drawModPLs, sizeof drawModPLs/sizeof drawModPLs[0] };
+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();
}
static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
{
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
STATUS_T rc = C_CONTINUE;
wControl_p controls[5]; //Always needs a NULL last entry
@@ -1488,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;
@@ -1548,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");
@@ -1560,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");
@@ -1569,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");
@@ -1584,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");
@@ -1598,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 );
@@ -1632,52 +1784,66 @@ 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:
case C_TEXT:
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 );
xx->angle = drawModCmdContext.angle;
xx->orig = drawModCmdContext.orig;
ignoredDraw = NULL;
+ DrawNewTrack( trk );
ComputeDrawBoundingBox( trk );
- DYNARR_RESET(trkSeg_t,tempSegs_da);
if ( infoSubst ) {
InfoSubstituteControls( NULL, NULL );
infoSubst = FALSE;
}
break;
- case C_CANCEL:
case C_CONFIRM:
- case C_TERMINATE:
+ case C_OK:
+ rc = DrawGeomModify( action, pos, &drawModCmdContext );
+ ComputeDrawBoundingBox( trk );
+ if ( infoSubst ) {
+ InfoSubstituteControls( NULL, NULL );
+ infoSubst = FALSE;
+ }
+ break;
+ case C_CANCEL:
rc = DrawGeomModify( action, pos, &drawModCmdContext );
drawModCmdContext.state = MOD_NONE;
- DYNARR_RESET(trkSeg_t,tempSegs_da);
if ( infoSubst ) {
InfoSubstituteControls( NULL, NULL );
infoSubst = FALSE;
@@ -1694,10 +1860,11 @@ static STATUS_T ModifyDraw( track_p trk, wAction_t action, coOrd pos )
static void UngroupDraw( track_p trk )
{
- struct extraData * xx = GetTrkExtraData(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] );
@@ -1710,42 +1877,47 @@ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_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 );
}
static BOOL_T EnumerateDraw(
- track_p trk )
+ track_p trk )
{
- struct extraData * xx;
+ struct extraDataDraw_t * xx;
int inx;
trkSeg_p segPtr;
if ( trk ) {
- xx = GetTrkExtraData(trk);
- if ( xx->segCnt < 1 )
- return TRUE;
+ xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
+ 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;
}
}
+ return content;
} else {
TotalBench();
}
@@ -1754,25 +1926,62 @@ static BOOL_T EnumerateDraw(
static void FlipDraw(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
+
+ trkSeg_p segPtr = &xx->segs[0];
+ BOOL_T reorigin = FALSE;
+ if (xx->orig.x == 0.0 && xx->orig.y == 0.0) {
+ reorigin = TRUE;
+ }
FlipPoint( &xx->orig, orig, angle );
xx->angle = NormalizeAngle( 2*angle - xx->angle + 180.0 );
FlipSegs( xx->segCnt, xx->segs, zero, angle );
+
+
+ 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);
+ }
+ 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:;
+ }
+ xx->orig.x = 0.0, xx->orig.y = 0.0, xx->angle = 0.0;
+ }
+
ComputeDrawBoundingBox( trk );
}
static BOOL_T StoreDraw(
- track_p trk,
- void **data,
- long * len)
+ track_p trk,
+ void **data,
+ long * len)
{
- struct extraData * xx = GetTrkExtraData(trk);
+ 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;
@@ -1781,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 extraData * xx = GetTrkExtraData(trk);
+ 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;
@@ -1797,26 +2006,33 @@ static BOOL_T ReplayDraw(
static BOOL_T QueryDraw( track_p trk, int query )
{
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
switch(query) {
case Q_IS_DRAW:
return TRUE;
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:
- if ((xx->segs[0].type == SEG_STRLIN) || (xx->segs[0].type == SEG_CRVLIN ||
- ((xx->segs[0].type == SEG_POLY) && (xx->segs[0].u.p.polyType == POLYLINE))
- )) return TRUE;
- else return FALSE;
+ 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; }
default:
return FALSE;
}
@@ -1824,8 +2040,8 @@ static BOOL_T QueryDraw( track_p trk, int query )
static wBool_t CompareDraw( track_cp trk1, track_cp trk2 )
{
- struct extraData *xx1 = GetTrkExtraData( trk1 );
- struct extraData *xx2 = GetTrkExtraData( trk2 );
+ struct extraDataDraw_t *xx1 = GET_EXTRA_DATA( trk1, T_DRAW, extraDataDraw_t );
+ struct extraDataDraw_t *xx2 = GET_EXTRA_DATA( trk2, T_DRAW, extraDataDraw_t );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Orig", xx1, xx2, orig )
REGRESS_CHECK_ANGLE( "Angle", xx1, xx2, angle )
@@ -1833,289 +2049,687 @@ 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 extraData * xx = GetTrkExtraData(trk);
- if (inx != PARAMS_NODES ) return FALSE;
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
+ 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);
- 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);
- 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);
- 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 MakeParallelDraw(
- track_p trk,
- coOrd pos,
- DIST_T sep,
- DIST_T factor,
- track_p * newTrkR,
- coOrd * p0R,
- coOrd * p1R,
- BOOL_T track)
+static BOOL_T SplitDraw( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
+ EPINX_T * ep0, EPINX_T * ep1 )
{
- if (track) return FALSE;
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
- ANGLE_T angle;
- DIST_T rad;
coOrd p0,p1;
+ DIST_T d;
+ BOOL_T polyline_trim = FALSE, new_last = ep;
+
+
+ DYNARR_SET(trkSeg_t, tempSegs_da, 1);
+
+ tempSegs(0).type = -1;
switch (xx->segs[0].type) {
- case SEG_STRLIN:
- angle = FindAngle(xx->segs[0].u.l.pos[0],xx->segs[0].u.l.pos[1]);
- if ( NormalizeAngle( FindAngle( xx->segs[0].u.l.pos[0], pos ) - angle ) < 180.0 )
- angle += 90;
- else
- angle -= 90;
- Translate(&p0,xx->segs[0].u.l.pos[0], angle, sep);
- Translate(&p1,xx->segs[0].u.l.pos[1], angle, sep);
+ 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).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 extraData * yy = GetTrkExtraData(*newTrkR);
- yy->lineType = xx->lineType;
+ 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 {
+ 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, 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);
- if ( p0R ) *p0R = p0;
- if ( p1R ) *p1R = p1;
- return TRUE;
+ 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;
- case SEG_CRVLIN:
- rad = FindDistance( pos, xx->segs[0].u.c.center );
- 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;
+ }
+ //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);
+ }
+ }
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
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 = xx->segs[0].u.c.center;
- tempSegs(0).u.c.radius = rad;
- tempSegs(0).u.c.a0 = xx->segs[0].u.c.a0;
- tempSegs(0).u.c.a1 = xx->segs[0].u.c.a1;
- if (newTrkR) {
- *newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
- struct extraData * yy = GetTrkExtraData(*newTrkR);
- 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:
- if (xx->segs[0].u.p.polyType != POLYLINE) return FALSE;
- int inx2;
- coOrd p = pos;
- angle = GetAngleSegs(1,&xx->segs[0],&p,NULL,NULL,NULL,&inx2,NULL);
- if ( NormalizeAngle( FindAngle( p, pos ) - angle ) < 180.0 ) {
- sep = sep*1.0;
- angle += 90;
+ 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);
+ }
} else {
- angle -= 90;
- sep = sep*1.0;
+ 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).width = xx->segs[0].width;
- tempSegs_da.cnt = 1;
- tempSegs(0).type = SEG_POLY;
- tempSegs(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;
- for (int i=0;i<xx->segs[0].u.p.cnt;i++) {
- Translate(&tempSegs(0).u.p.pts[i].pt,tempSegs(0).u.p.pts[i].pt,angle,sep);
- }
- if (newTrkR) {
- *newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
- struct extraData * yy = GetTrkExtraData(*newTrkR);
- 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:
+ 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);
+ }
+ } 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;
+ }
+ 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;
+ }
+ }
+ 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)
+{
+ if (track) { return FALSE; }
+ struct extraDataDraw_t * xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
+
+ ANGLE_T angle;
+ DIST_T rad;
+
+ 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);
+ 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;
+ }
+ 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 {
+ 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;
+ }
+ }
+
+ 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 */
- NULL, /* 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 )
{
track_p trk1;
- struct extraData *xx;
+ struct extraDataDraw_t *xx;
coOrd pos1 = *pos;
ignoredTableEdge = trk;
if ((trk1 = OnTrack( &pos1, FALSE, FALSE )) != NULL &&
- GetTrkType(trk1) == T_DRAW) {
+ GetTrkType(trk1) == T_DRAW) {
ignoredTableEdge = NULL;
- xx = GetTrkExtraData(trk1);
- if (xx->segCnt < 1)
+ xx = GET_EXTRA_DATA(trk1, T_DRAW, extraDataDraw_t);
+ 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];
@@ -2132,13 +2746,14 @@ EXPORT BOOL_T OnTableEdgeEndPt( track_p trk, coOrd * pos )
EXPORT BOOL_T GetClosestEndPt( track_p trk, coOrd * pos)
{
- struct extraData *xx;
+ struct extraDataDraw_t *xx;
if (GetTrkType(trk) == T_DRAW) {
ignoredTableEdge = NULL;
- xx = GetTrkExtraData(trk);
- if (xx->segCnt < 1)
+ xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
+ if (xx->segCnt < 1) {
return FALSE;
+ }
DIST_T dd0,dd1;
coOrd p00,p0,p1;
p00 = *pos;
@@ -2147,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;
@@ -2176,12 +2793,12 @@ EXPORT BOOL_T GetClosestEndPt( track_p trk, coOrd * pos)
Rotate(&p1,xx->orig,xx->angle);
} else if (GetTrkType(trk) == T_BZRLIN) {
coOrd p0,p1;
- xx = GetTrkExtraData(trk);
+ xx = GET_EXTRA_DATA(trk, T_DRAW, extraDataDraw_t);
p0 = xx->segs[0].u.b.pos[0];
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;
@@ -2196,77 +2813,79 @@ 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, &i0_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])
{ PD_COLORLIST, &benchColor, "benchcolor", PDO_NORECORD, NULL, N_("Color") },
#define drawBenchChoicePD (drawPLs[3])
#ifdef WINDOWS
- { PD_DROPLIST, &benchChoice, "benchlist", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, (void*)120, N_("Lumber Type") },
-#else
- { PD_DROPLIST, &benchChoice, "benchlist", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, (void*)145, N_("Lumber Type") },
-#endif
+ { 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
#define drawBenchOrientPD (drawPLs[4])
#ifdef WINDOWS
- { PD_DROPLIST, &benchOrient, "benchorient", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, (void*)45, "", 0 },
+ { PD_DROPLIST, &benchOrient, "benchorient", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, I2VP(45), "", 0 },
#else
- { PD_DROPLIST, &benchOrient, "benchorient", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, (void*)105, "", 0 },
+ { PD_DROPLIST, &benchOrient, "benchorient", PDO_NOPREF|PDO_NORECORD|PDO_LISTINDEX, I2VP(105), "", 0 },
#endif
#define drawDimArrowSizePD (drawPLs[5])
- { PD_DROPLIST, &dimArrowSize, "arrowsize", PDO_NORECORD|PDO_LISTINDEX, (void*)80, N_("Size") },
+ { PD_DROPLIST, &dimArrowSize, "arrowsize", PDO_NORECORD|PDO_LISTINDEX, I2VP(80), N_("Size") },
#define drawLengthPD (drawPLs[6])
- { PD_FLOAT, &drawCmdContext.length, "Length", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Length") },
+ { PD_FLOAT, &drawCmdContext.length, "length", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Length") },
#define drawWidthPD (drawPLs[7])
- { PD_FLOAT, &drawCmdContext.width, "BoxWidth", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Width") },
+ { PD_FLOAT, &drawCmdContext.width, "width", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Width") },
#define drawAnglePD (drawPLs[8])
#define drawAngleInx 8
- { PD_FLOAT, &drawCmdContext.angle, "Angle", PDO_NORECORD|BO_ENTER, &r360_360, N_("Angle") },
+ { PD_FLOAT, &drawCmdContext.angle, "angle", PDO_NORECORD|BO_ENTER, &r360_360, N_("Angle") },
#define drawRadiusPD (drawPLs[9])
- { PD_FLOAT, &drawCmdContext.radius, "Radius", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Radius") },
+ { PD_FLOAT, &drawCmdContext.radius, "radius", PDO_DIM|PDO_NORECORD|BO_ENTER, &r0_10000, N_("Radius") },
#define drawLineTypePD (drawPLs[10])
- { PD_DROPLIST, &drawCmdContext.lineType, "Type", PDO_DIM|PDO_NORECORD|BO_ENTER, (void*)0, N_("Line Type") },
+ { PD_DROPLIST, &drawCmdContext.lineType, "type", PDO_DIM|PDO_NORECORD|BO_ENTER, I2VP(0), N_("Line Type") },
};
-static paramGroup_t drawPG = { "draw", 0, drawPLs, sizeof drawPLs/sizeof drawPLs[0] };
+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 )
@@ -2289,12 +2908,13 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
drawBenchChoicePD.option |= PDO_NORECORD;
drawBenchOrientPD.option |= PDO_NORECORD;
drawDimArrowSizePD.option |= PDO_NORECORD;
- drawCmdContext.Op = (wIndex_t)(long)commandContext;
+ drawCmdContext.Op = (wIndex_t)VP2L(commandContext);
if ( drawCmdContext.Op < 0 || drawCmdContext.Op > OP_LAST ) {
NoticeMessage( "cmdDraw: Op %d", _("Ok"), NULL, drawCmdContext.Op );
drawCmdContext.Op = OP_LINE;
}
- /*DrawGeomOp( (void*)(drawCmdContext.Op>=0?drawCmdContext.Op:OP_LINE) );*/
+ SetAllTrackSelect( FALSE );
+ /*DrawGeomOp( (drawCmdContext.Op>=0?drawCmdContext.Op:OP_LINE) );*/
infoSubst = TRUE;
switch( drawCmdContext.Op ) {
case OP_LINE:
@@ -2348,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( (long)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;
@@ -2382,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;
@@ -2393,42 +3016,38 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
return CmdBezCurve(act2, pos);
}
if ( drawCmdContext.Op == OP_BENCH ) {
- drawCmdContext.benchOption = GetBenchData( (long)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 (!((MyGetKeyState() & WKEY_ALT) != magneticSnap)) {
- SnapPos( &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 (!((MyGetKeyState() & WKEY_SHIFT) != 0)) {
- // SnapPos( &pos ); Remove Snap at end of action - it will have been imposed in Geom if needed
- //}
+ 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
- if (rc == C_CONTINUE) {
+ if (rc == C_CONTINUE && drawCmdContext.show) {
switch( drawCmdContext.Op ) {
case OP_CIRCLE1:
case OP_CIRCLE2:
@@ -2478,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;
@@ -2511,28 +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); }
return DrawGeomMouse( (0x0D<<8|wActionText), pos, &drawCmdContext);
-
- /*DrawOk( NULL );*/
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:
@@ -2540,81 +3162,88 @@ static STATUS_T CmdDraw( wAction_t action, coOrd pos )
}
}
-#include "bitmaps/dline.xpm"
-#include "bitmaps/ddimlin.xpm"
-#include "bitmaps/dbench.xpm"
-#include "bitmaps/dtbledge.xpm"
-#include "bitmaps/dcurve1.xpm"
-#include "bitmaps/dcurve2.xpm"
-#include "bitmaps/dcurve3.xpm"
-#include "bitmaps/dcurve4.xpm"
+#include "bitmaps/straight-line.xpm3"
+#include "bitmaps/dimension.xpm3"
+#include "bitmaps/benchwork.xpm3"
+#include "bitmaps/table-edge.xpm3"
+
+#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/dcircle2.xpm"
-#include "bitmaps/dcircle3.xpm"
+#include "bitmaps/circle-line-center.xpm3"
+#include "bitmaps/circle-line-tangent.xpm3"
/*#include "bitmaps/dflcrcl1.xpm"*/
-#include "bitmaps/dflcrcl2.xpm"
-#include "bitmaps/dflcrcl3.xpm"
-#include "bitmaps/dbox.xpm"
-#include "bitmaps/dfilbox.xpm"
-#include "bitmaps/dpoly.xpm"
-#include "bitmaps/dfilpoly.xpm"
-#include "bitmaps/dbezier.xpm"
-#include "bitmaps/dpolyline.xpm"
+#include "bitmaps/circle-filled-center.xpm3"
+#include "bitmaps/circle-filled-tangent.xpm3"
+
+#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[] = {
- { dline_xpm, OP_LINE, N_("Line"), N_("Draw Line"), "cmdDrawLine", ACCL_DRAWLINE },
- { ddimlin_xpm, OP_DIMLINE, N_("Dimension Line"), N_("Draw Dimension Line"), "cmdDrawDimLine", ACCL_DRAWDIMLINE },
- { dbench_xpm, OP_BENCH, N_("Benchwork"), N_("Draw Benchwork"), "cmdDrawBench", ACCL_DRAWBENCH },
- { dtbledge_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[] = {
- { dcurve1_xpm, OP_CURVE1, N_("Curve End"), N_("Draw Curve from End"), "cmdDrawCurveEndPt", ACCL_DRAWCURVE1 },
- { dcurve2_xpm, OP_CURVE2, N_("Curve Tangent"), N_("Draw Curve from Tangent"), "cmdDrawCurveTangent", ACCL_DRAWCURVE2 },
- { dcurve3_xpm, OP_CURVE3, N_("Curve Center"), N_("Draw Curve from Center"), "cmdDrawCurveCenter", ACCL_DRAWCURVE3 },
- { dcurve4_xpm, OP_CURVE4, N_("Curve Chord"), N_("Draw Curve from Chord"), "cmdDrawCurveChord", ACCL_DRAWCURVE4 },
- { dbezier_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 },*/
- { dcircle3_xpm, OP_CIRCLE3, N_("Circle Tangent"), N_("Draw Circle from Tangent"), "cmdDrawCircleTangent", ACCL_DRAWCIRCLE2 },
- { dcircle2_xpm, OP_CIRCLE2, N_("Circle Center"), N_("Draw Circle from Center"), "cmdDrawCircleCenter", ACCL_DRAWCIRCLE3 },
- /*{ dflcrcl1_xpm, OP_FILLCIRCLE1, "Circle Filled Fixed Radius", "Draw Fixed Radius Filled Circle", "cmdDrawFilledCircleFixedRadius", ACCL_DRAWFILLCIRCLE1 },*/
- { dflcrcl3_xpm, OP_FILLCIRCLE3, N_("Circle Filled Tangent"), N_("Draw Filled Circle from Tangent"), "cmdDrawFilledCircleTangent", ACCL_DRAWFILLCIRCLE2 },
- { dflcrcl2_xpm, OP_FILLCIRCLE2, N_("Circle Filled Center"), N_("Draw Filled Circle from Center"), "cmdDrawFilledCircleCenter", 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[] = {
- { dbox_xpm, OP_BOX, N_("Box"), N_("Draw Box"), "cmdDrawBox", ACCL_DRAWBOX },
- { dfilbox_xpm, OP_FILLBOX, N_("Filled Box"), N_("Draw Filled Box"), "cmdDrawFilledBox", ACCL_DRAWFILLBOX },
- { dpoly_xpm, OP_POLY, N_("Polygon"), N_("Draw Polygon"), "cmdDrawPolygon", ACCL_DRAWPOLY },
- { dfilpoly_xpm, OP_FILLPOLY, N_("Filled Polygon"), N_("Draw Filled Polygon"), "cmdDrawFilledPolygon", ACCL_DRAWFILLPOLYGON },
- { dpolyline_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 )
{
@@ -2623,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 );
}
@@ -2633,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);
}
@@ -2691,8 +3311,11 @@ static void DrawDlgUpdate(
//}
}
- if ( inx >= 0 && pg->paramPtr[inx].valueP == &benchChoice )
- BenchUpdateOrientationList( (long)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 )
@@ -2702,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 );
@@ -2714,8 +3336,9 @@ EXPORT void InitCmdDraw( wMenu_p menu )
ButtonGroupBegin( _(dsp->menuTitle), dsp->helpKey, _(dsp->stickyLabel) );
for ( inx2=0; inx2<dsp->cnt; inx2++ ) {
ddp = &dsp->data[inx2];
- icon = wIconCreatePixMap( ddp->xpm );
- AddMenuButton( menu, CmdDraw, ddp->helpKey, _(ddp->cmdName), icon, LEVEL0_50, IC_STICKY|IC_POPUP2|IC_WANT_MOVE, ddp->acclKey, (void *)(intptr_t)ddp->OP );
+ 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) );
}
ButtonGroupEnd();
}
@@ -2734,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;
@@ -2747,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
@@ -2759,26 +3384,26 @@ 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.u.t.pos = zero;
+ tempSeg.lineWidth = 0;
+ tempSeg.u.t.pos = pos;
tempSeg.u.t.angle = angle;
tempSeg.u.t.fontP = NULL;
tempSeg.u.t.fontSize = textSize;
tempSeg.u.t.string = MyStrdup( text );
tempSeg.u.t.boxed = boxed;
- trk = MakeDrawFromSeg1( index, pos, angle, &tempSeg );
+ trk = MakeDrawFromSeg1( index, zero, 0.0, &tempSeg );
return trk;
}
@@ -2791,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 );
@@ -2809,7 +3440,9 @@ EXPORT BOOL_T ReadText( char * line )
return TRUE;
}
-void MenuMode(int mode) {
+void MenuMode(void * modeVP )
+{
+ int mode = (int)VP2L(modeVP);
if ( infoSubst ) {
InfoSubstituteControls( NULL, NULL );
infoSubst = FALSE;
@@ -2823,19 +3456,26 @@ void MenuMode(int mode) {
}
}
-void MenuEnter(int key) {
+void MenuEnter( void * keyVP )
+{
+ int key = (int)VP2L(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(int key) {
- struct extraData * xx = GetTrkExtraData(drawModCmdContext.trk);
- if ( drawModCmdContext.type==SEG_STRLIN || drawModCmdContext.type==SEG_CRVLIN || drawModCmdContext.type==SEG_POLY ) {
+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 ) {
switch(key) {
case '0':
xx->lineType = DRAWLINESOLID;
@@ -2863,10 +3503,12 @@ void MenuLine(int key) {
}
}
-EXPORT void SetLineType( track_p trk, int width ) {
+EXPORT void SetLineType( track_p trk, int width )
+{
if (QueryTrack(trk, Q_IS_DRAW)) {
- struct extraData * xx = GetTrkExtraData(trk);
- if ( xx->segs[0].type==SEG_STRLIN || xx->segs[0].type==SEG_CRVLIN || xx->segs[0].type==SEG_POLY) {
+ 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) {
switch(width) {
case 0:
xx->lineType = DRAWLINESOLID;
@@ -2901,29 +3543,49 @@ EXPORT void InitTrkDraw( void )
AddParam( "TEXT", ReadText );
drawModDelMI = MenuRegister( "Modify Draw Edit Menu" );
- drawModClose = wMenuPushCreate( drawModDelMI, "", _("Close Polygon - 'g'"), 0, (wMenuCallBack_p)MenuEnter, (void*) 'g');
- drawModOpen = wMenuPushCreate( drawModDelMI, "", _("Make PolyLine - 'l'"), 0, (wMenuCallBack_p)MenuEnter, (void*) 'l');
- drawModFill = wMenuPushCreate( drawModDelMI, "", _("Fill Polygon - 'f'"), 0, (wMenuCallBack_p)MenuEnter, (void*) 'f');
- drawModEmpty = wMenuPushCreate( drawModDelMI, "", _("Empty Polygon - 'u'"), 0, (wMenuCallBack_p)MenuEnter, (void*) '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, (wMenuCallBack_p)MenuMode, (void*) 0 );
- drawModDel = wMenuPushCreate( drawModDelMI, "", _("Delete Selected Point - 'Del'"), 0, (wMenuCallBack_p)MenuEnter, (void*) 127 );
- drawModVertex = wMenuPushCreate( drawModDelMI, "", _("Vertex Point - 'v'"), 0, (wMenuCallBack_p)MenuEnter, (void*) 'v' );
- drawModRound = wMenuPushCreate( drawModDelMI, "", _("Round Corner - 'r'"), 0, (wMenuCallBack_p)MenuEnter, (void*) 'r' );
- drawModSmooth = wMenuPushCreate( drawModDelMI, "", _("Smooth Corner - 's'"), 0, (wMenuCallBack_p)MenuEnter, (void*) '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, (wMenuCallBack_p)MenuLine, (void*) '0' );
- drawModDot = wMenuPushCreate( drawModLinMI, "", _("Dashed Line"), 0, (wMenuCallBack_p)MenuLine, (void*) '1' );
- drawModDash = wMenuPushCreate( drawModLinMI, "", _("Dotted Line"), 0, (wMenuCallBack_p)MenuLine, (void*) '2' );
- drawModDashDot = wMenuPushCreate( drawModLinMI, "", _("Dash-Dot Line"), 0, (wMenuCallBack_p)MenuLine, (void*) '3' );
- drawModDashDotDot = wMenuPushCreate( drawModLinMI, "", _("Dash-Dot-Dot Line"), 0, (wMenuCallBack_p)MenuLine, (void*) '4' );
- drawModCenterDot = wMenuPushCreate( drawModLinMI, "", _("Center-Dot Line"), 0, (wMenuCallBack_p)MenuLine, (void*) '5' );
- drawModPhantom = wMenuPushCreate( drawModLinMI, "", _("Phantom-Dot Line"), 0, (wMenuCallBack_p)MenuLine, (void*) '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, (wMenuCallBack_p)MenuMode, (void*) 1 );
- drawModOrigin = wMenuPushCreate( drawModDelMI, "", _("Reset Origin - '0'"), 0, (wMenuCallBack_p)MenuEnter, (void*) '0' );
- drawModLast = wMenuPushCreate( drawModDelMI, "", _("Origin to Selected - 'l'"), 0, (wMenuCallBack_p)MenuEnter, (void*) 'l' );
- drawModCenter = wMenuPushCreate( drawModDelMI, "", _("Origin to Middle - 'm'"), 0, (wMenuCallBack_p)MenuEnter, (void*) '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 1da4b22..e55a1fe 100644
--- a/app/bin/celev.c
+++ b/app/bin/celev.c
@@ -17,20 +17,16 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-#include <string.h>
#include "cselect.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "param.h"
#include "track.h"
#include "ccurve.h"
-#include "utility.h"
static wWin_p elevW;
@@ -44,7 +40,8 @@ static EPINX_T elevEp;
static BOOL_T elevUndo = FALSE;
static char * elevModeLabels[] = { N_("None"), N_("Defined"), N_("Hidden"),
- N_("Computed"), N_("Grade"), N_("Station"), N_("Ignore"), NULL };
+ N_("Computed"), N_("Grade"), N_("Station"), N_("Ignore"), NULL
+ };
static paramFloatRange_t r_1000_1000 = { -1000, 1000 };
static paramData_t elevationPLs[] = {
@@ -53,41 +50,44 @@ static paramData_t elevationPLs[] = {
#define I_HEIGHT (1)
{ PD_FLOAT, &elevHeightV, "value", PDO_DIM|PDO_DLGNEWCOLUMN, &r_1000_1000 },
#define I_COMPUTED (2)
- { PD_MESSAGE, NULL, "computed", 0, (void*)80 },
+ { PD_MESSAGE, NULL, "computed", 0, I2VP(80) },
#define I_GRADE (3)
- { PD_MESSAGE, NULL, "grade", 0, (void*)80 },
+ { PD_MESSAGE, NULL, "grade", 0, I2VP(80) },
#define I_STATION (4)
- { PD_STRING, elevStationV, "station", PDO_DLGUNDERCMDBUTT|PDO_STRINGLIMITLENGTH, (void*)200, NULL, 0, 0, sizeof(elevStationV)} };
-static paramGroup_t elevationPG = { "elev", 0, elevationPLs, sizeof elevationPLs/sizeof elevationPLs[0] };
+ { PD_STRING, elevStationV, "station", PDO_DLGUNDERCMDBUTT|PDO_STRINGLIMITLENGTH, I2VP(200), NULL, 0, 0, sizeof(elevStationV)}
+};
+static paramGroup_t elevationPG = { "elev", 0, elevationPLs, COUNT( elevationPLs ) };
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
-static void CreateSquareAnchor(coOrd p) {
+static void CreateSquareAnchor(coOrd p)
+{
DIST_T d = tempD.scale*0.25;
int i = anchors_da.cnt;
DYNARR_SET(trkSeg_t,anchors_da,i+4);
- for (int j =0; j<4;j++) {
+ for (int j =0; j<4; j++) {
anchors(i+j).type = SEG_STRLIN;
anchors(i+j).color = wDrawColorBlue;
- anchors(i+j).width = 0;
+ anchors(i+j).lineWidth = 0;
}
anchors(i).u.l.pos[0].x = anchors(i+2).u.l.pos[1].x =
- anchors(i+3).u.l.pos[0].x = anchors(i+3).u.l.pos[1].x = p.x-d/2;
+ anchors(i+3).u.l.pos[0].x = anchors(i+3).u.l.pos[1].x = p.x-d/2;
anchors(i).u.l.pos[0].y = anchors(i).u.l.pos[1].y =
- anchors(i+1).u.l.pos[0].y = anchors(i+3).u.l.pos[1].y = p.y-d/2;
+ anchors(i+1).u.l.pos[0].y = anchors(i+3).u.l.pos[1].y = p.y-d/2;
anchors(i).u.l.pos[1].x =
- anchors(i+1).u.l.pos[0].x = anchors(i+1).u.l.pos[1].x =
- anchors(i+2).u.l.pos[0].x = p.x+d/2;
+ anchors(i+1).u.l.pos[0].x = anchors(i+1).u.l.pos[1].x =
+ anchors(i+2).u.l.pos[0].x = p.x+d/2;
anchors(i+1).u.l.pos[1].y =
- anchors(i+2).u.l.pos[0].y = anchors(i+2).u.l.pos[1].y =
- anchors(i+3).u.l.pos[0].y = p.y+d/2;
+ anchors(i+2).u.l.pos[0].y = anchors(i+2).u.l.pos[1].y =
+ anchors(i+3).u.l.pos[0].y = p.y+d/2;
}
-static void CreateEndAnchor(coOrd p, wBool_t lock) {
+static void CreateEndAnchor(coOrd p, wBool_t lock)
+{
DIST_T d = tempD.scale*0.15;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
@@ -98,11 +98,12 @@ static void CreateEndAnchor(coOrd p, wBool_t lock) {
anchors(i).u.c.radius = d/2;
anchors(i).u.c.a0 = 0.0;
anchors(i).u.c.a1 = 360.0;
- anchors(i).width = 0;
+ anchors(i).lineWidth = 0;
}
-static void CreateSplitAnchor(coOrd pos, track_p t) {
- DIST_T d = tempD.scale*0.1;
+static void CreateSplitAnchor(coOrd pos, track_p t)
+{
+// DIST_T d = tempD.scale*0.1;
DIST_T w = tempD.scale/tempD.dpi*4;
int i;
ANGLE_T a = NormalizeAngle(GetAngleAtPoint(t,pos,NULL,NULL)+90.0);
@@ -112,31 +113,37 @@ static void CreateSplitAnchor(coOrd pos, track_p t) {
anchors(i).color = wDrawColorBlue;
Translate(&anchors(i).u.l.pos[0],pos,a,GetTrkGauge(t));
Translate(&anchors(i).u.l.pos[1],pos,a,-GetTrkGauge(t));
- anchors(i).width = w;
+ anchors(i).lineWidth = w;
}
-void static CreateMoveAnchor(coOrd pos) {
+#if 0
+void static CreateMoveAnchor(coOrd pos)
+{
DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pos,0,TRUE,wDrawColorBlue);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pos,0,TRUE,
+ wDrawColorBlue);
DYNARR_SET(trkSeg_t,anchors_da,anchors_da.cnt+5);
- DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pos,90,TRUE,wDrawColorBlue);
+ DrawArrowHeads(&DYNARR_N(trkSeg_t,anchors_da,anchors_da.cnt-5),pos,90,TRUE,
+ wDrawColorBlue);
DYNARR_APPEND(trkSeg_t,anchors_da,1);
CreateSquareAnchor(pos);
}
+#endif
static void LayoutElevW(
- paramData_t * pd,
- int inx,
- wPos_t colX,
- wPos_t * x,
- wPos_t * y )
+ paramData_t * pd,
+ int inx,
+ wWinPix_t colX,
+ wWinPix_t * x,
+ wWinPix_t * y )
{
- static wPos_t h = 0;
+ static wWinPix_t h = 0;
switch ( inx ) {
case I_HEIGHT:
- h = wControlGetHeight( elevationPLs[I_MODE].control )/((sizeof elevModeLabels/sizeof elevModeLabels[0])-1);
+ h = wControlGetHeight( elevationPLs[I_MODE].control )/(COUNT(
+ elevModeLabels )-1);
#ifndef WINDOWS
h += 3;
#endif
@@ -157,8 +164,9 @@ static int GetElevMode( void )
int newMode;
static int modeMap[7] = { ELEV_NONE, ELEV_DEF|ELEV_VISIBLE, ELEV_DEF, ELEV_COMP|ELEV_VISIBLE, ELEV_GRADE|ELEV_VISIBLE, ELEV_STATION|ELEV_VISIBLE, ELEV_IGNORE };
mode = (int)elevModeV;
- if (mode<0||mode>=7)
+ if (mode<0||mode>=7) {
return -1;
+ }
newMode = modeMap[mode];
return newMode;
}
@@ -172,8 +180,9 @@ static void DoElevUpdate( paramGroup_p pg, int inx, void * valueP )
if ( inx == 0 ) {
long mode = *(long*)valueP;
- if ( mode < 0 || mode >= 7 )
+ if ( mode < 0 || mode >= 7 ) {
return;
+ }
ParamControlActive( &elevationPG, I_HEIGHT, FALSE );
ParamControlActive( &elevationPG, I_STATION, FALSE );
switch ( mode ) {
@@ -194,23 +203,28 @@ static void DoElevUpdate( paramGroup_p pg, int inx, void * valueP )
}
ParamLoadData( &elevationPG );
newMode = GetElevMode();
- if (newMode == -1)
+ if (newMode == -1) {
return;
- if (elevTrk == NULL)
+ }
+ if (elevTrk == NULL) {
return;
+ }
oldMode = GetTrkEndElevUnmaskedMode( elevTrk, elevEp );
elevNewValue = 0.0;
- if ((newMode&ELEV_MASK) == ELEV_DEF)
+ if ((newMode&ELEV_MASK) == ELEV_DEF) {
elevNewValue = elevHeightV;
+ }
if (oldMode == newMode) {
if ((newMode&ELEV_MASK) == ELEV_DEF) {
elevOldValue = GetTrkEndElevHeight( elevTrk, elevEp );
diff = fabs( elevOldValue-elevNewValue );
- if ( diff < 0.02 )
+ if ( diff < 0.02 ) {
return;
+ }
} else if ((newMode&ELEV_MASK) == ELEV_STATION) {
- if ( strcmp(elevStationV, GetTrkEndElevStation( elevTrk, elevEp ) ) == 0)
+ if ( strcmp(elevStationV, GetTrkEndElevStation( elevTrk, elevEp ) ) == 0) {
return;
+ }
} else {
return;
}
@@ -243,7 +257,6 @@ static void ElevSelect( track_p trk, EPINX_T ep )
int mode;
DIST_T elevX, grade, elev, dist;
long radio;
- BOOL_T computedOk;
BOOL_T gradeOk = TRUE;
track_p trk1;
EPINX_T ep1;
@@ -266,10 +279,11 @@ static void ElevSelect( track_p trk, EPINX_T ep )
radio = 0;
break;
case ELEV_DEF:
- if ( mode & ELEV_VISIBLE )
+ if ( mode & ELEV_VISIBLE ) {
radio = 1;
- else
+ } else {
radio = 2;
+ }
elevHeightV = GetTrkEndElevHeight(trk,ep);
elevOldValue = elevHeightV;
ParamLoadControl( &elevationPG, I_HEIGHT );
@@ -296,69 +310,61 @@ static void ElevSelect( track_p trk, EPINX_T ep )
elevModeV = radio;
ParamLoadControl( &elevationPG, I_MODE );
gradeOk = ComputeElev( trk, ep, FALSE, &elevX, &grade, TRUE );
- computedOk = TRUE;
- if (oldElevationEvaluation || computedOk) {
- sprintf( message, "%0.2f%s", round(PutDim( elevX )*100.0)/100.0, (units==UNITS_METRIC?"cm":"\"") );
- ParamLoadMessage( &elevationPG, I_COMPUTED, message );
- if (gradeOk) {
- sprintf( message, "%0.1f%%", fabs(round(grade*1000.0)/10.0) );
- } else {
- if ( EndPtIsDefinedElev(trk,ep) ) {
- elev = GetElevation(trk);
- dist = GetTrkLength(trk,ep,-1);
- if (dist>0.1)
- sprintf( message, "%0.1f%%", fabs(round((elev-elevX)/dist)*1000.0)/10.0 );
- else
- sprintf( message, _("Undefined") );
- if ( (trk1=GetTrkEndTrk(trk,ep)) && (ep1=GetEndPtConnectedToMe(trk1,trk))>=0 ) {
- elev = GetElevation(trk1);
- dist = GetTrkLength(trk1,ep1,-1);
- if (dist>0.1)
- sprintf( message+strlen(message), " - %0.1f%%", fabs(round((elev-elevX)/dist)*1000.0)/10.0 );
- else
- sprintf( message+strlen(message), " - %s", _("Undefined") );
- }
+ sprintf( message, "%0.2f%s", round(PutDim( elevX )*100.0)/100.0,
+ (units==UNITS_METRIC?"cm":"\"") );
+ ParamLoadMessage( &elevationPG, I_COMPUTED, message );
+ if (gradeOk) {
+ sprintf( message, "%0.1f%%", fabs(round(grade*1000.0)/10.0) );
+ } else {
+ if ( EndPtIsDefinedElev(trk,ep) ) {
+ elev = GetElevation(trk);
+ dist = GetTrkLength(trk,ep,-1);
+ if (dist>0.1) {
+ sprintf( message, "%0.1f%%", fabs(round(((elev-elevX)/dist)*1000.0))/10.0 );
} else {
- strcpy( message, _("Undefined") );
+ sprintf( message, _("Undefined") );
}
+ if ( (trk1=GetTrkEndTrk(trk,ep)) && (ep1=GetEndPtConnectedToMe(trk1,trk))>=0 ) {
+ elev = GetElevation(trk1);
+ dist = GetTrkLength(trk1,ep1,-1);
+ if (dist>0.1) {
+ sprintf( message+strlen(message), " - %0.1f%%",
+ fabs(round(((elev-elevX)/dist)*1000.0))/10.0 );
+ } else {
+ sprintf( message+strlen(message), " - %s", _("Undefined") );
+ }
+ }
+ } else {
+ strcpy( message, _("Undefined") );
}
- ParamLoadMessage( &elevationPG, I_GRADE, message );
- if ( (mode&ELEV_MASK)!=ELEV_DEF ) {
- elevHeightV = elevX;
- ParamLoadControl( &elevationPG, I_HEIGHT );
- }
+ }
+ ParamLoadMessage( &elevationPG, I_GRADE, message );
+ if ( (mode&ELEV_MASK)!=ELEV_DEF ) {
+ elevHeightV = elevX;
+ ParamLoadControl( &elevationPG, I_HEIGHT );
}
wShow(elevW);
}
-static BOOL_T GetPointElev(track_p trk, coOrd pos, DIST_T * height) {
- DIST_T len, len1, elev0, elev1, dist0, dist1;
+static BOOL_T GetPointElev(track_p trk, coOrd pos, DIST_T * height)
+{
+ DIST_T elev0, elev1, dist0, dist1;
if ( IsTrack( trk ) && GetTrkEndPtCnt(trk) == 2 ) {
+ if ( GetTrkLength( trk, 0, 1 ) < 0.1 ) {
+ return FALSE;
+ }
dist0 = FindDistance(pos,GetTrkEndPos(trk,0));
dist1 = FindDistance(pos,GetTrkEndPos(trk,1));
- if (EndPtIsDefinedElev(trk,0))
- elev0 = GetTrkEndElevHeight(trk,0);
- else {
- if (!GetTrkEndElevCachedHeight(trk,0,&elev0,&len)) {
- if (GetTrkLength( trk, 0, 1 )<0.1) return FALSE;
- ComputeElev( trk, 0, FALSE, &elev0, NULL, TRUE );
- }
- }
- if (EndPtIsDefinedElev(trk,1))
- elev1 = GetTrkEndElevHeight(trk,1);
- else {
- if (!GetTrkEndElevCachedHeight(trk,1,&elev1,&len1)) {
- if (GetTrkLength( trk, 0, 1 )<0.1) return FALSE;
- ComputeElev( trk, 0, FALSE, &elev0, NULL, TRUE );
- }
- }
- if (dist1+dist0 < 0.1) {
+ ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE );
+ ComputeElev( trk, 1, FALSE, &elev1, NULL, FALSE );
+ if (dist1+dist0 <= 0.1) {
*height = elev0;
return TRUE;
}
*height = ((elev1-elev0)*(dist0/(dist0+dist1)))+elev0;
return TRUE;
- } else if (GetTrkEndPtCnt(trk) == 1 && GetTrkEndElevCachedHeight(trk,0,&elev0,&len)) {
+ } else if (GetTrkEndPtCnt(trk) == 1 &&
+ ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE ) ) {
*height = elev0;
return TRUE;
}
@@ -370,12 +376,14 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
{
track_p trk0, trk1;
EPINX_T ep0;
- int oldTrackCount;
+// int oldTrackCount;
switch (action) {
case C_START:
- if ( elevW == NULL )
- elevW = ParamCreateDialog( &elevationPG, MakeWindowTitle(_("Elevation")), _("Done"), DoElevDone, wHide, TRUE, LayoutElevW, 0, DoElevUpdate );
+ if ( elevW == NULL ) {
+ elevW = ParamCreateDialog( &elevationPG, MakeWindowTitle(_("Elevation")),
+ _("Done"), DoElevDone, wHide, TRUE, LayoutElevW, 0, DoElevUpdate );
+ }
elevModeV = 0;
elevHeightV = 0.0;
elevStationV[0] = 0;
@@ -387,7 +395,8 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
ParamControlActive( &elevationPG, I_STATION, FALSE );
ParamLoadMessage( &elevationPG, I_COMPUTED, "" );
ParamLoadMessage( &elevationPG, I_GRADE, "" );
- InfoMessage( _("Click on end, +Shift to split, +Ctrl to move description") );
+ InfoMessage(
+ _("Click on end, +Shift to split, +Ctrl to move description, +Alt to show elevation") );
elevTrk = NULL;
elevUndo = FALSE;
CmdMoveDescription( action, pos );
@@ -396,14 +405,15 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
case wActionMove:
DYNARR_RESET(trkSeg_t,anchors_da);
if (MyGetKeyState()&WKEY_CTRL) {
- commandContext = (void*) 1; //Just end points
+ commandContext = I2VP(1); //Just end points
CmdMoveDescription( action, pos );
return C_CONTINUE;
}
- BOOL_T xing = FALSE;
+// BOOL_T xing = FALSE;
coOrd p0 = pos, p2=pos;
if ((trk0 = OnTrack2(&p0,FALSE, TRUE, FALSE, NULL)) != NULL) {
- EPINX_T ep0 = 0, ep1 = 1;
+ EPINX_T ep0 = 0;
+// EPINX_T ep1 = 1;
DIST_T elev0, elev1;
if (GetTrkEndPtCnt(trk0) == 2) {
if (!GetPointElev(trk0,p0,&elev0)) {
@@ -414,49 +424,59 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
InfoMessage( _("Move to end or track crossing") );
return C_CONTINUE;
}
- if ((trk1 = OnTrack2(&p2,FALSE, TRUE, FALSE, trk0)) != NULL) {
- if (IsClose(FindDistance(p0,p2))) {
- if (GetEndPtConnectedToMe(trk0,trk1) == -1) { //Not simply connected to each other!!!
- if (GetTrkEndPtCnt(trk1) == 2) {
- if (GetPointElev(trk1,p2,&elev1)) {
- if (MyGetKeyState()&WKEY_SHIFT) {
- InfoMessage (_("Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"), PutDim(elev0), PutDim(elev1), PutDim(fabs(elev0-elev1)));
- } else
- InfoMessage (_("Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"), PutDim(elev0), PutDim(elev1), PutDim(fabs(elev0-elev1)));
+ if (((MyGetKeyState()&WKEY_ALT))) { //Add square with Alt
+ if ((trk1 = OnTrack2(&p2,FALSE, TRUE, FALSE, trk0)) != NULL) {
+ if (IsClose(FindDistance(p0,p2))) {
+ if (GetEndPtConnectedToMe(trk0,
+ trk1) == -1) { //Not simply connected to each other!!!
+ if (GetTrkEndPtCnt(trk1) == 2) {
+ if (GetPointElev(trk1,p2,&elev1)) {
+ if (MyGetKeyState()&WKEY_SHIFT) {
+ InfoMessage (
+ _("Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"),
+ PutDim(elev0), PutDim(elev1), PutDim(fabs(elev0-elev1)));
+ } else {
+ InfoMessage (_("Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"),
+ PutDim(elev0), PutDim(elev1), PutDim(fabs(elev0-elev1)));
+ }
+ }
+ CreateSquareAnchor(p2);
+ return C_CONTINUE;
}
- CreateSquareAnchor(p2);
- return C_CONTINUE;
}
}
}
}
if ((ep0 = PickEndPoint( p0, trk0 )) != -1) {
- if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos))) {
- CreateEndAnchor(GetTrkEndPos(trk0,ep0),FALSE);
- InfoMessage (_("Track End elevation %0.3f"), PutDim(elev0));
- } else if ((MyGetKeyState()&WKEY_SHIFT) && QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)
- && !(QueryTrack(trk0,Q_IS_TURNOUT))) {
+ if ((MyGetKeyState()&WKEY_SHIFT) && QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)
+ && !(QueryTrack(trk0,Q_IS_TURNOUT))) {
InfoMessage( _("Click to split here - elevation %0.3f"), PutDim(elev0));
CreateSplitAnchor(p0,trk0);
- } else {
- InfoMessage( _("Track Point elevation %0.3f"), PutDim(elev0));
+ } else if ((IsClose(FindDistance(GetTrkEndPos(trk0,ep0),p0))
+ || (FindDistance(GetTrkEndPos(trk0,ep0),p0)<minLength))) {
+ CreateEndAnchor(GetTrkEndPos(trk0,ep0),FALSE);
+ InfoMessage (_("Track End elevation %0.3f - snap End Pt"), PutDim(elev0));
+ } else if (MyGetKeyState()&WKEY_ALT) {
CreateEndAnchor(p0,TRUE);
+ InfoMessage (_("Track End elevation %0.3f"), PutDim(elev0));
}
- } else InfoMessage( _("Click on end, +Shift to split, +Ctrl to move description") );
- } else
- InfoMessage( _("Click on end, +Shift to split, +Ctrl to move description") );
+ } else { InfoMessage( _("Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show Elevation") ); }
+ } else {
+ InfoMessage(
+ _("Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show Elevation") );
+ }
return C_CONTINUE;
case C_DOWN:
case C_MOVE:
case C_UP:
if (MyGetKeyState()&WKEY_CTRL) {
- commandContext = (void*) 1; //Just end points
+ commandContext = I2VP(1); //Just end points
CmdMoveDescription( action, pos );
DYNARR_RESET(trkSeg_t,anchors_da);
elevTrk = NULL;
return C_CONTINUE;
}
- /*no break*/
+ /*no break*/
case C_LCLICK:
;
p0= pos;
@@ -466,19 +486,22 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
InfoMessage( _("Click on end, +Shift to split, +Ctrl to move description") );
} else {
ep0 = PickEndPoint( p0, trk0 );
- if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos))) {
- InfoMessage( _("Point selected!") );
- ElevSelect( trk0, ep0 );
- } else if ( (MyGetKeyState()&WKEY_SHIFT) ) {
+ if ( (MyGetKeyState()&WKEY_SHIFT) ) {
UndoStart( _("Split track"), "SplitTrack( T%d[%d] )", GetTrkIndex(trk0), ep0 );
- oldTrackCount = trackCount;
+// oldTrackCount = trackCount;
if (!QueryTrack(trk0,Q_IS_TURNOUT) &&
- !SplitTrack( trk0, p0, ep0, &trk1, FALSE ))
+ !SplitTrack( trk0, p0, ep0, &trk1, FALSE )) {
return C_CONTINUE;
+ }
InfoMessage( _("Track split!") );
ElevSelect( trk0, ep0 );
UndoEnd();
elevUndo = FALSE;
+ } else if (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),p0)) ||
+ (FindDistance(GetTrkEndPos(trk0,ep0),
+ p0)<minLength)) { //Snap if close visually or track
+ InfoMessage( _("Point selected!") );
+ ElevSelect( trk0, ep0 );
}
}
DYNARR_RESET(trkSeg_t,anchors_da);
@@ -493,10 +516,14 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
InfoMessage( "" );
return C_TERMINATE;
case C_REDRAW:
+ wSetCursor(mainD.d,defaultCursor);
DoElevHilight( NULL );
HilightSelectedEndPt( TRUE, elevTrk, elevEp );
- if (anchors_da.cnt)
- DrawSegs( &tempD, zero, 0.0, &anchors(0), anchors_da.cnt, trackGauge, wDrawColorBlack );
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ if (anchors_da.cnt) {
+ wSetCursor(mainD.d,wCursorNone);
+ }
CmdMoveDescription( action, pos );
return C_CONTINUE;
}
@@ -506,11 +533,13 @@ static STATUS_T CmdElevation( wAction_t action, coOrd pos )
-#include "bitmaps/elev.xpm"
+#include "bitmaps/elevation.xpm3"
EXPORT void InitCmdElevation( wMenu_p menu )
{
ParamRegister( &elevationPG );
- AddMenuButton( menu, CmdElevation, "cmdElevation", _("Elevation"), wIconCreatePixMap(elev_xpm), LEVEL0_50, IC_POPUP|IC_LCLICK|IC_RCLICK|IC_WANT_MOVE, ACCL_ELEVATION, NULL );
+ AddMenuButton( menu, CmdElevation, "cmdElevation", _("Elevation"),
+ wIconCreatePixMap(elevation_xpm3[iconSize]), LEVEL0_50,
+ IC_POPUP|IC_LCLICK|IC_RCLICK|IC_WANT_MOVE, ACCL_ELEVATION, NULL );
}
diff --git a/app/bin/cgroup.c b/app/bin/cgroup.c
index 1183e76..6940ea0 100644
--- a/app/bin/cgroup.c
+++ b/app/bin/cgroup.c
@@ -18,27 +18,32 @@
*
* 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 <ctype.h>
-#include <math.h>
-#include <string.h>
-
+#include "cselect.h"
#include "compound.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "tbezier.h"
#include "tcornu.h"
#include "common.h"
-#include "messages.h"
#include "param.h"
#include "shrtpath.h"
#include "track.h"
-#include "utility.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.
+ */
/*****************************************************************************
*
@@ -54,87 +59,96 @@ static dynArr_t pathPtr_da;
static char groupManuf[STR_SIZE];
static char groupDesc[STR_SIZE];
static char groupPartno[STR_SIZE];
-static char groupTitle[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;
+
+/*****************************************************************************
+ *
+ * Ungroup
+ *
+ */
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;
@@ -153,23 +167,32 @@ 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 extraData *xx = GetTrkExtraData(trk);
- struct extraData *xx1;
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
+ struct extraDataCompound_t *xx1;
trkSeg_p sp;
track_p trk0, trk1;
int segCnt, segInx, segInx1;
@@ -187,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;
@@ -217,87 +240,114 @@ 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);
- for ( segCnt=0; segCnt<xx->segCnt&&IsSegTrack(&xx->segs[segCnt]); segCnt++ );
- ASSERT( (epCnt==0) == (segCnt==0) );
+ segCnt = xx->segCnt;
+ int trackCount = 0;
+ for ( sp=xx->segs; sp<&xx->segs[xx->segCnt]; sp++ ) {
+ if (IsSegTrack(sp)) { trackCount++; }
+ }
+ //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 );
- cp = (char *)xx->paths;
+ 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 );
+ return;
+ }
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 );
@@ -306,22 +356,21 @@ 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 );
- cp = (char *)xx->paths;
+ memset( &refCount(0), -1, segCnt * sizeof *(int*)0 );
+ cp = (char *)GetPaths( trk );
while ( cp[0] ) {
cp += strlen(cp)+1;
while ( cp[0] ) {
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;
}
@@ -346,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++ ) {
@@ -365,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;
@@ -383,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 );
}
}
}
@@ -418,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 );
@@ -437,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];
@@ -461,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;
@@ -472,9 +524,13 @@ 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), NULL, pathPtr_da.cnt, &pathPtr(0), tempSegs_da.cnt, &tempSegs(0) );
- xx1 = GetTrkExtraData(trk1);
+ 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;
+ xx1->pathNoCombine = xx->pathNoCombine;
SetTrkVisible( trk1, TRUE );
SetTrkNoTies( trk1, FALSE );
@@ -490,7 +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 ( 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 );
@@ -503,20 +562,23 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
/* 9: reconnect tracks
*/
- cp = (char *)xx->paths;
+ cp = (char *)GetPaths( trk );
while ( cp[0] ) {
cp += strlen(cp)+1;
while ( cp[0] ) {
/* 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;
@@ -525,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++;
@@ -566,7 +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 {
- DrawNewTrack( segTrack(segInx).trk );
+ if ( segTrack(segInx).trk ) {
+ DrawNewTrack( segTrack(segInx).trk );
+ }
}
}
wDrawDelayUpdate( mainD.d, FALSE );
@@ -575,15 +646,16 @@ LOG( log_group, 1, ( " EP%d = [%0.3f %0.3f] A%0.3f T%d.%d\n", ep, epp->pos.x, ep
-EXPORT void DoUngroup( void )
+EXPORT void DoUngroup( void * unused )
{
track_p trk = NULL;
int ungroupCnt;
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;
@@ -596,62 +668,71 @@ EXPORT void DoUngroup( void )
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_STRINGLIMITLENGTH, (void*)350, N_("Manufacturer"), 0, 0, sizeof(groupManuf)},
-/*1*/ { PD_STRING, groupDesc, "desc", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)230, N_("Description"), 0, 0, sizeof(groupDesc)},
-/*2*/ { PD_STRING, groupPartno, "partno", PDO_NOPREF|PDO_DLGHORZ|PDO_DLGIGNORELABELWIDTH|PDO_STRINGLIMITLENGTH, (void*)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 } };
-static paramGroup_t groupPG = { "group", 0, groupPLs, sizeof groupPLs/sizeof groupPLs[0] };
+ /*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;
- } 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;
@@ -662,35 +743,37 @@ 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 )
{
- struct extraData * xx = GetTrkExtraData( trk );
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;
}
- cp = (char *)xx->paths;
+ 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 );
trkPos[0].x -= xx->orig.x;
@@ -718,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
@@ -728,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;
@@ -742,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;
@@ -766,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:
@@ -781,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;
@@ -791,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);
@@ -803,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;
}
}
@@ -839,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:
@@ -862,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;
@@ -873,68 +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 extraData *xx = GetTrkExtraData(trk);
+ 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 )
{
- struct extraData *xx = GetTrkExtraData(trk);
char * cp;
- cp = (char *)xx->paths;
+ 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++;
@@ -942,41 +1052,15 @@ static BOOL_T CheckForBumper(
return TRUE;
}
-typedef struct {
- int inx;
- wBool_t track;
-} segInMap_t;
-static dynArr_t segInMap_da;
-#define segInMap(N) DYNARR_N( segInMap_t, segInMap_da, N)
-
-void AddToSegMap(int inx,wBool_t track) {
- DYNARR_APPEND(segInMap_t,segInMap_da,10);
- DYNARR_LAST(segInMap_t,segInMap_da).inx = inx;
- DYNARR_LAST(segInMap_t,segInMap_da).track = track;
-}
-
-void AddSegsToSegMap(int start, int end, wBool_t track) {
- for (int i = start; i<= end; i++) {
- AddToSegMap(i,track);
- }
-}
-
static dynArr_t trackSegs_da;
#define trackSegs(N) DYNARR_N( trkSeg_t, trackSegs_da, N )
-trkSeg_p GetSegFromSegMap(int index) {
- if (DYNARR_N( segInMap_t, segInMap_da, index).track) {
- return &DYNARR_N(trkSeg_t,trackSegs_da,DYNARR_N( segInMap_t, segInMap_da, index).inx);
- } else
- return &DYNARR_N(trkSeg_t,tempSegs_da,DYNARR_N( segInMap_t, segInMap_da, index).inx);
-}
-
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" );
@@ -990,24 +1074,26 @@ 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 );
}
}
+
+
/*
* GroupOk: create a TURNOUT or STRUCTURE from the selected objects
* 1 - Add selected tracks to groupTrk[]
- * - Add each group trk's segments to trackSeg[] or tempSegs[]
+ * - Add each group trk's segments to trackSeg[]
* - Add all segs to segInMap[]
* - if no track segments goto step 9
* 2 - Collect boundary endPts and sort them in tempEndPts[]
@@ -1017,16 +1103,16 @@ static void LogSeg(
* 4 - Flip tracks so sub-path elements match up
* 5 - Create conflict map
* 6 - Flip paths to minimize the number of flipped segments
- * 7 - Build the path ('P') string
+ * 7 - Build the path ('P') string (new-P)
* 8 - Build segment list, adjust endPts in tempEndPts[]
- * 9 - create new TURNOUT/STRUCTURE definition
+ * 9 - create new TURNOUT/STRUCTURE definition
* 10 - write defn to xtrkcad.cus
* 11 - optionally replace grouped tracks with new defn
*/
-static void GroupOk( void * junk )
+static void GroupOk( void * unused )
{
- struct extraData *xx = NULL;
+ struct extraDataCompound_t *xx = NULL;
turnoutInfo_t * to;
int inx;
EPINX_T ep, epCnt, epN;
@@ -1055,21 +1141,16 @@ static void GroupOk( void * junk )
int groupCnt;
int pinx, pinx2, ginx, ginx2, gpinx2;
trkEndPt_p endPtP;
- PATHPTR_T path;
- int pathLen;
signed char pathChar;
- char *oldLocale = NULL;
DYNARR_RESET( trkSeg_t, trackSegs_da );
DYNARR_RESET( trkSeg_t, tempSegs_da );
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 );
- DYNARR_RESET( segInMap_t, segInMap_da);
-
ParamUpdate( &groupPG );
if ( groupManuf[0]==0 || groupDesc[0]==0 || groupPartno[0]==0 ) {
NoticeMessage2( 0, MSG_GROUP_NONBLANK, _("Ok"), NULL );
@@ -1078,8 +1159,9 @@ static void GroupOk( void * junk )
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 );
}
@@ -1088,106 +1170,107 @@ static void GroupOk( void * junk )
* 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 ) ) {
- if ( IsTrack(trk) ) {
- DYNARR_APPEND( groupTrk_t, groupTrk_da, 10 );
- groupP = &groupTrk(groupTrk_da.cnt-1);
- groupP->trk = trk;
- groupP->segStart = trackSegs_da.cnt;
- if ( GetTrkType(trk) == T_TURNOUT ) {
- xx = GetTrkExtraData(trk);
- for ( pinx=0; pinx<xx->segCnt; pinx++ ) {
- segPtr = &xx->segs[pinx];
- if ( IsSegTrack(segPtr) ) {
- DYNARR_APPEND( trkSeg_t, trackSegs_da, 10 );
- trackSegs(trackSegs_da.cnt-1) = *segPtr;
-
- AddToSegMap(trackSegs_da.cnt-1,TRUE); /* Single Track Seg - Note no Cornu*/
-
- RotateSegs( 1, &trackSegs(trackSegs_da.cnt-1), zero, xx->angle );
- MoveSegs( 1, &trackSegs(trackSegs_da.cnt-1), xx->orig );
-
- } else {
- int start = tempSegs_da.cnt;
- DrawSegs( &groupD, xx->orig, xx->angle, segPtr, 1, trackGauge, wDrawColorBlack );
-
- AddSegsToSegMap(start,tempSegs_da.cnt-1,FALSE); /* Multiple Non-Track Segs */
- }
- }
- } else if (GetTrkType(trk) == T_BEZIER || GetTrkType(trk) == T_BZRLIN ) {
- DYNARR_APPEND(trkSeg_t, trackSegs_da, 10);
- segPtr = &trackSegs(trackSegs_da.cnt-1);
-
- GetBezierSegmentFromTrack(trk,segPtr);
+ DYNARR_APPEND( groupTrk_t, groupTrk_da, 10 );
+ groupP = &groupTrk(groupTrk_da.cnt-1);
+ groupP->trk = trk;
+ groupP->segStart = trackSegs_da.cnt;
+ groupP->totalSegStart = tempSegs_da.cnt+trackSegs_da.cnt;
+ 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++ ) {
+ segPtr = &xx->segs[pinx];
+ if ( IsSegTrack(segPtr) ) {
+ DYNARR_APPEND( trkSeg_t, trackSegs_da, 10 );
+ trackSegs(trackSegs_da.cnt-1) = *segPtr;
+ hasTracks = TRUE;
+ RotateSegs( 1, &trackSegs(trackSegs_da.cnt-1), zero, xx->angle );
+ MoveSegs( 1, &trackSegs(trackSegs_da.cnt-1), xx->orig );
+
+ } else {
+ DYNARR_APPEND( trkSeg_t, trackSegs_da, 10 );
+ trackSegs(trackSegs_da.cnt-1) = *segPtr;
+
+ RotateSegs( 1, &trackSegs(trackSegs_da.cnt-1), zero, xx->angle );
+ MoveSegs( 1, &trackSegs(trackSegs_da.cnt-1), xx->orig );
- AddToSegMap(trackSegs_da.cnt-1,TRUE); // Add Single Bezier Track
+ }
+ }
+ } else if (GetTrkType(trk) == T_BEZIER || GetTrkType(trk) == T_BZRLIN ) {
+ DYNARR_APPEND(trkSeg_t, trackSegs_da, 10);
+ segPtr = &trackSegs(trackSegs_da.cnt-1);
- } else if (GetTrkType(trk) == T_CORNU) {
+ GetBezierSegmentFromTrack(trk,segPtr);
- int start = trackSegs_da.cnt;
+ } else if (GetTrkType(trk) == T_CORNU) {
- GetBezierSegmentsFromCornu(trk,&trackSegs_da,TRUE); //Only give back Bezier - cant be undone
+// int start = trackSegs_da.cnt;
- AddSegsToSegMap(start,trackSegs_da.cnt-1,TRUE); /* Add Multiple Track Segs */
+ GetBezierSegmentsFromCornu(trk,&trackSegs_da,
+ TRUE); //Only give back Bezier - cant be undone
- } else {
- segCnt = tempSegs_da.cnt;
- DrawTrack( trk, &groupD, wDrawColorBlack );
+ } else {
+ if (IsTrack(trk)) { hasTracks=TRUE; }
+ segCnt = tempSegs_da.cnt;
+ DrawTrack( trk, &groupD, wDrawColorBlack );
+ 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 );
-
- AddToSegMap(trackSegs_da.cnt-1,TRUE); // Add One Track
-
- if ( tempSegs_da.cnt != segCnt+1 ||
- !IsSegTrack(segPtr) ) {
- NoticeMessage2( 0, MSG_CANNOT_GROUP_TRACK, _("Ok"), NULL );
- wHide( groupW );
- return;
- }
-
- tempSegs_da.cnt = segCnt;
}
- groupP->segEnd = trackSegs_da.cnt-1;
- } else {
- int start = tempSegs_da.cnt;
-
- DrawTrack( trk, &groupD, wDrawColorBlack );
+ }
- AddSegsToSegMap(start,tempSegs_da.cnt-1,FALSE); /* Multiple Non-Track Segs */
+ // 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++ ) {
- 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 < tempSegs_da.cnt; inx++ ) {
- LogPrintf( " %d: ", inx+1 );
- LogSeg( &tempSegs(inx) );
+
+ if ( nTrkSeg > MAX_PATH_SEGS ) {
+ // Too many track segs
+ NoticeMessage( MSG_TOOMANYSEGSINGROUP, _("Ok"), NULL );
+ wDrawDelayUpdate( mainD.d, FALSE );
+ wHide( groupW );
+ return;
}
-}
-if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
- LogPrintf( "Combined Segs:\n" );
- for ( int inx = 0; inx<segInMap_da.cnt; inx++ ) {
- LogPrintf( "%d: %s X%d - ", inx+1, segInMap(inx).track?"Track":"Other", segInMap(inx).inx );
- LogSeg( GetSegFromSegMap( inx ) );
+ 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 ) {
- if ( groupTrk_da.cnt > 128 ) {
- NoticeMessage( MSG_TOOMANYSEGSINGROUP, _("Ok"), NULL );
- wDrawDelayUpdate( mainD.d, FALSE );
- wHide( groupW );
- return;
- }
+ if ( groupTrk_da.cnt>0 && hasTracks) {
/*
* Collect EndPts and find paths
*/
@@ -1200,51 +1283,49 @@ if ( log_group >= 1 && logTable(log_group).level >= 3 ) {
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 );
return;
}
- if ( groupTrk_da.cnt == 1 && GetTrkType( groupTrk(0).trk ) == T_TURNOUT ) {
- path = xx->paths;
- pathLen = xx->pathLen;
- goto groupSimpleTurnout;
- }
/* 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 ) {
@@ -1272,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
@@ -1319,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;
@@ -1359,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;
@@ -1394,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) ) ) {
@@ -1435,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;
}
@@ -1469,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
@@ -1493,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 ( path=ppp->path; *path; path++ ) {
- inx = *path;
- if ( inx<0 )
+ for ( PATHPTR_T pPaths=ppp->path; pPaths && *pPaths; pPaths++ ) {
+ inx = *pPaths;
+ if ( inx<0 ) {
inx = - inx;
- if ( inx > trackSegs_da.cnt )
- AbortProg( "inx > trackSegs_da.cnt" );
- flip = *path<0;
- if ( ppp->flip )
+ }
+ CHECK( inx <= trackSegs_da.cnt );
+ flip = *pPaths<0;
+ 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
@@ -1532,30 +1627,39 @@ 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 );
- path = ppp->path;
+ PATHPTR_T pPaths = ppp->path;
flip = ppp->flip;
- if ( path == NULL )
- AbortProg( "Missing Path T%d:%d.%d", GetTrkIndex(groupP->trk), ppp->ep2, ppp->ep1 );
- if ( flip ) path += strlen((char *)path)-1;
- while ( *path && (path >= ppp->path) ) { //Add Guard for flip backwards
+ 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 = *path;
+ pathChar = *pPaths;
flip1 = flip;
if ( pathChar < 0 ) {
flip1 = !flip;
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;
- path += (flip?-1:1);
+ pPaths += (flip?-1:1);
LOG( log_group, 3, (" %d", pathChar ) );
}
LOG( log_group, 3, ("\n") );
@@ -1568,49 +1672,58 @@ LOG( log_group, 3, ( "\n" ) );
}
DYNARR_APPEND( char, pathPtr_da, 10 );
pathPtr(pathPtr_da.cnt-1) = 0;
- path = (PATHPTR_T)&pathPtr(0);
- pathLen = pathPtr_da.cnt;
-groupSimpleTurnout:
/*
* 8: Copy and Reorigin Segments - Start by putting them out in the original order
*/
DYNARR_RESET(trkSeg_t, outputSegs_da);
- for (int i=0; i<segInMap_da.cnt;i++) {
+ for (int i=0; i<trackSegs_da.cnt; i++) {
DYNARR_APPEND(trkSeg_t,outputSegs_da,10);
- trkSeg_p from_p = GetSegFromSegMap(i);
+ trkSeg_p from_p = &trackSegs(i);
trkSeg_p to_p = &DYNARR_LAST(trkSeg_t, outputSegs_da);
- memcpy((void *)to_p,(void *)from_p,sizeof( trkSeg_t));
+ 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) );
}
/*
* 9: Final: create new definition
*/
- CheckPaths( outputSegs_da.cnt, &outputSegs(0), path );
+ PATHPTR_T pPaths = (PATHPTR_T)&pathPtr(0);
+ CheckPaths( outputSegs_da.cnt, &outputSegs(0), pPaths, groupTitle );
- to = CreateNewTurnout( curScaleName, groupTitle, outputSegs_da.cnt, &outputSegs(0), pathLen, path, tempEndPts_da.cnt, &tempEndPts(0), NULL, TRUE );
+ long options = 0;
+ if ( groupNoCombine != 0 ) {
+ options |= COMPOUND_OPTION_PATH_NOCOMBINE;
+ }
+ to = CreateNewTurnout( curScaleName, groupTitle, outputSegs_da.cnt,
+ &outputSegs(0), pPaths, TempEndPtsCount(), TempEndPt(0), TRUE, options );
/*
* 10: Write defn to xtrkcad.cus
*/
f = OpenCustom("a");
if (f && to) {
- oldLocale = SaveLocale("C");
- rc &= fprintf( f, "TURNOUT %s \"%s\"\n", curScaleName, PutTitle(to->title) )>0;
- rc &= WriteCompoundPathsEndPtsSegs( f, path, outputSegs_da.cnt, &outputSegs(0), tempEndPts_da.cnt, &tempEndPts(0) );
+ SetCLocale();
+ 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 ) {
/*
@@ -1619,17 +1732,21 @@ groupSimpleTurnout:
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 ) ) {
@@ -1639,31 +1756,43 @@ groupSimpleTurnout:
trackCount--;
}
}
- trk = NewCompound( T_TURNOUT, 0, orig, 0.0, to->title, tempEndPts_da.cnt, &tempEndPts(0), NULL, pathLen, (char *)path, outputSegs_da.cnt, &outputSegs(0) );
+ SelectRecount();
+ 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 );
EnableCommands();
}
} else {
- CloneFilledDraw( tempSegs_da.cnt, &tempSegs(0), TRUE );
- GetSegBounds( zero, 0, tempSegs_da.cnt, &tempSegs(0), &orig, &size );
+ CloneFilledDraw( trackSegs_da.cnt, &trackSegs(0), TRUE );
+ GetSegBounds( zero, 0, trackSegs_da.cnt, &trackSegs(0), &orig, &size );
orig.x = - orig.x-groupOriginX; //Include orig offset
orig.y = - orig.y-groupOriginY;
- MoveSegs( tempSegs_da.cnt, &tempSegs(0), orig );
- to = CreateNewStructure( curScaleName, groupTitle, tempSegs_da.cnt, &tempSegs(0), TRUE );
+ MoveSegs( trackSegs_da.cnt, &trackSegs(0), orig );
+ to = CreateNewStructure( curScaleName, groupTitle, trackSegs_da.cnt,
+ &trackSegs(0), TRUE );
f = OpenCustom("a");
if (f && to) {
- oldLocale = SaveLocale("C");
- rc &= fprintf( f, "STRUCTURE %s \"%s\"\n", curScaleName, PutTitle(groupTitle) )>0;
- rc &= WriteSegs( f, tempSegs_da.cnt, &tempSegs(0) );
+ SetCLocale();
+ rc &= fprintf( f, "STRUCTURE %s \"%s\"\n", curScaleName,
+ PutTitle(groupTitle) )>0;
+ rc &= WriteSegs( f, trackSegs_da.cnt, &trackSegs(0) );
+ SetUserLocale();
}
if ( groupReplace ) {
UndoStart( _("Group Tracks"), "group" );
@@ -1675,16 +1804,17 @@ groupSimpleTurnout:
trackCount--;
}
}
+ SelectRecount();
orig.x = - orig.x;
orig.y = - orig.y;
- trk = NewCompound( T_STRUCTURE, 0, orig, 0.0, groupTitle, 0, NULL, NULL, 0, "", tempSegs_da.cnt, &tempSegs(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);
- RestoreLocale(oldLocale);
+ if (f) { fclose(f); }
DoChangeNotification( CHANGE_PARAMS );
wHide( groupW );
wDrawDelayUpdate( mainD.d, FALSE );
@@ -1693,10 +1823,10 @@ groupSimpleTurnout:
}
-EXPORT void DoGroup( void )
+EXPORT void DoGroup( void * unused )
{
track_p trk = NULL;
- struct extraData *xx;
+ struct extraDataCompound_t *xx;
TRKTYP_T trkType;
xx = NULL;
groupSegCnt = 0;
@@ -1705,16 +1835,22 @@ EXPORT void DoGroup( void )
groupOriginY = 0.0;
BOOL_T isTurnout = FALSE;
+ groupNoCombine = FALSE;
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 = GetTrkExtraData(trk);
+ xx = GET_EXTRA_DATA(trk, trkType, extraDataCompound_t);
groupSegCnt += xx->segCnt;
GroupCopyTitle( xtitle(xx) );
- } else
+ if ( trkType == T_TURNOUT && GetTrkEndPtCnt(trk) > 2
+ && xx->pathNoCombine != 0 ) {
+ groupNoCombine = TRUE;
+ }
+ } else {
groupSegCnt += 1;
+ }
}
}
if ( groupSegCnt <= 0 ) {
@@ -1722,11 +1858,13 @@ EXPORT void DoGroup( void )
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 a0f2d6b..fb7c05f 100644
--- a/app/bin/chndldto.c
+++ b/app/bin/chndldto.c
@@ -18,20 +18,17 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-
#include "ccurve.h"
#include "cjoin.h"
#include "compound.h"
#include "cstraigh.h"
#include "cundo.h"
-#include "i18n.h"
-#include "messages.h"
#include "track.h"
-#include "utility.h"
+#include "draw.h"
+#include "common-ui.h"
#define PTRACE(X)
@@ -39,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 )
@@ -58,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;
@@ -71,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;
@@ -92,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;
@@ -121,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 );
@@ -136,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;
@@ -152,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;
}
@@ -166,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;
@@ -178,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;
@@ -203,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;
@@ -228,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);
@@ -243,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;
@@ -263,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;
@@ -294,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) {
@@ -308,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 );
@@ -327,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:
@@ -351,9 +373,11 @@ PTRACE(( " a2=%0.1f rA1=%0.1f\n", angle2, reverseA1 ))
}
-#include "bitmaps/hndldto.xpm"
+#include "bitmaps/turnout-design.xpm3"
EXPORT void InitCmdHandLaidTurnout( wMenu_p menu )
{
- AddMenuButton( menu, CmdHandLaidTurnout, "cmdHandLaidTurnout", _("HandLaidTurnout"), wIconCreatePixMap(hndldto_xpm), 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 0b9a327..a0e6332 100644
--- a/app/bin/chotbar.c
+++ b/app/bin/chotbar.c
@@ -17,52 +17,52 @@
*
* 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 <ctype.h>
-#include <stdint.h>
-#include <string.h>
-
#include "compound.h"
#include "fileio.h"
-#include "messages.h"
#include "ccornu.h"
#include "track.h"
+#include "draw.h"
EXPORT DIST_T curBarScale = -1;
EXPORT long hotBarLabels = 0;
+EXPORT wWinPix_t hotBarHeight = 32;
#include "bitmaps/hotbarl.xbm"
#include "bitmaps/hotbarr.xbm"
+#define HOTBAR_LEFT 2
+
static wButton_p hotBarLeftB = NULL;
static wButton_p hotBarRightB = NULL;
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 };
-static wPos_t hotBarDrawHeight = 28;
-static wPos_t hotBarHeight = 28;
+ 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, 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 };
@@ -75,53 +75,79 @@ static DIST_T hotBarWidth = 0.0;
static void HotBarHighlight( int inx, DIST_T fixed_x )
{
- wPos_t x0;
+ if ( inx > 0 && ( inx < hotBarCurrStart || inx >= hotBarCurrEnd ) ) {
+ return;
+ }
+ coOrd orig, size;
+ hotBarD.scale = 1;
if ( inx == 0 && hotBarMap_da.cnt>0 && hotBarMap(0).isFixed) {
- x0 = (wPos_t)0;
- wDrawFilledRectangle( hotBarD.d, x0, 0, (wPos_t)(hotBarMap(0).w*hotBarD.dpi-2), hotBarHeight, wDrawColorBlack, wDrawOptTransparent );
- } else if ( inx >= hotBarCurrStart && inx < hotBarCurrEnd ) {
- x0 = (wPos_t)((hotBarMap(inx).x-hotBarMap((int)hotBarCurrStart).x + (inx>0?fixed_x:0))*hotBarD.dpi);
- wDrawFilledRectangle( hotBarD.d, x0, 0, (wPos_t)(hotBarMap(inx).w*hotBarD.dpi-2), hotBarHeight, wDrawColorBlack, wDrawOptTransparent );
+ orig.x = 0;
+ } 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 );
+#endif
+ DrawRectangle( &hotBarD, orig, size, wDrawColorBlack, DRAW_TRANSPARENT );
}
static wFont_p hotBarFp = NULL;
static wFontSize_t hotBarFs = 8;
+static wWinPix_t hotBarTextHeight = 11;
-static void RedrawHotBar( wDraw_p dd, void * data, wPos_t w, wPos_t h )
+static void RedrawHotBar( wDraw_p dd, void * data, wWinPix_t w, wWinPix_t h )
{
- DIST_T hh = (double)hotBarDrawHeight/hotBarD.dpi;
+ DIST_T hh = (double)(hotBarHeight + 1)/hotBarD.dpi;
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 );
- wControlActive( (wControl_p)hotBarLeftB, hotBarCurrStart > 0 );
+ if (hotBarCurrStart >0) {
+ wControlActive( (wControl_p)hotBarLeftB, TRUE );
+ } else {
+ wButtonSetBusy(hotBarLeftB, FALSE);
+ wControlActive( (wControl_p)hotBarLeftB, FALSE );
+ }
+
if (hotBarCurrStart < 0) {
+ wButtonSetBusy(hotBarRightB, FALSE);
wControlActive( (wControl_p)hotBarRightB, FALSE );
return;
}
- if ( hotBarLabels && !hotBarFp )
+ if ( hotBarLabels && !hotBarFp ) {
hotBarFp = wStandardFont( F_HELV, FALSE, FALSE );
- wPos_t textSize = wMessageGetHeight(0L);
+ }
+
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;
- orig.y = hh/2.0*barScale - tbm->size.y/2.0 - tbm->orig.y;
+ orig.y = barScale/hotBarD.dpi + hh/2.0*barScale - tbm->size.y/2.0 - tbm->orig.y;
if ( hotBarLabels ) {
- orig.y += textSize/hotBarD.dpi*barScale;
+ orig.y += hotBarTextHeight/hotBarD.dpi*barScale;
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;
@@ -132,20 +158,21 @@ static void RedrawHotBar( wDraw_p dd, void * data, wPos_t w, wPos_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 );
}
}
for ( inx=hotBarCurrStart; inx < hotBarMap_da.cnt; inx++ ) {
tbm = &hotBarMap(inx);
barScale = tbm->barScale;
- x = tbm->x - hotBarMap(hotBarCurrStart).x + fixed_x; //Add space for fixed at start
- if ( x + tbm->w + fixed_x > barWidth ) {
+ x = tbm->x - hotBarMap(hotBarCurrStart).x + fixed_x;
+ if ( x + tbm->w > barWidth ) {
break;
}
- orig.y = hh/2.0*barScale - tbm->size.y/2.0 - tbm->orig.y;
+ orig.y = barScale/hotBarD.dpi + hh/2.0*barScale - tbm->size.y/2.0 - tbm->orig.y;
if ( hotBarLabels ) {
- orig.y += textSize/hotBarD.dpi*barScale;
+ orig.y += hotBarTextHeight/hotBarD.dpi*barScale;
if ( tbm->labelW > tbm->objectW ) {
x += (tbm->labelW-tbm->objectW)/2;
}
@@ -161,34 +188,50 @@ static void RedrawHotBar( wDraw_p dd, void * data, wPos_t w, wPos_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;*/
- wControlActive( (wControl_p)hotBarRightB, hotBarCurrEnd < hotBarMap_da.cnt );
+ }
+ /* else
+ hotBarCurrSelect = -1;*/
+ if (hotBarCurrEnd < hotBarMap_da.cnt) {
+ wControlActive( (wControl_p)hotBarRightB, TRUE );
+ } else {
+ wButtonSetBusy(hotBarRightB, FALSE);
+ wControlActive( (wControl_p)hotBarRightB, FALSE );
+ }
wPrefSetInteger( "misc", "hotbar-start", hotBarCurrStart );
}
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;
- while ( inx > 1 && lastX - hotBarMap(inx-1).x <= barWidth )
- inx--;
+ }
+ 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--;
+ }
if ( inx != hotBarCurrStart ) {
hotBarCurrStart = inx;
RedrawHotBar( hotBarD.d, NULL, 0, 0 );
@@ -204,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 );
@@ -218,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;
@@ -237,21 +284,35 @@ static void DoHotBarJump( int inx )
}
-static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wPos_t w, wPos_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;
- wPos_t px;
+ 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;
@@ -263,34 +324,35 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wPos_t w,
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 = (wPos_t)((tbm->x-hotBarMap(0).x)*hotBarD.dpi);
+ px = (wWinPix_t)((tbm->x-hotBarMap(0).x)*hotBarD.dpi);
} else {
- px = (wPos_t)(((tbm->x-hotBarMap(hotBarCurrStart).x)+fixed_x)*hotBarD.dpi);
+ px = (wWinPix_t)(((tbm->x-hotBarMap(hotBarCurrStart).x)+fixed_x)*hotBarD.dpi);
}
- px += (wPos_t)(tbm->w*hotBarD.dpi/2);
+ px += (wWinPix_t)(tbm->w*hotBarD.dpi/2);
titleP = tbm->proc( HB_LISTTITLE, tbm->context, NULL, NULL );
px -= wLabelWidth( titleP ) / 2;
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;
@@ -301,7 +363,8 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wPos_t w,
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;
@@ -321,25 +384,6 @@ static void SelectHotBar( wDraw_p d, void * context, wAction_t action, wPos_t w,
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;
}
}
@@ -348,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;
}
@@ -386,7 +428,7 @@ static BOOL_T HotBarSelectPlayback( char * line )
static void HotbarJump( int inx, const char * name, void * arg )
{
- hotBarCurrStart = (int)(long)arg;
+ hotBarCurrStart = (int)VP2L(arg);
RedrawHotBar( hotBarD.d, NULL, 0, 0 );
}
@@ -400,55 +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 ) {
- wMenuListAdd( hotBarML, hotBarMLcnt++, contentsLabel, (void*)(intptr_t)hotBarMap_da.cnt );
- strncpy( curContentsLabel, contentsLabel, sizeof curContentsLabel );
- }
-
- if (barScale <= 0) {
- if (!isTrack)
- barScale = size.y/((double)hotBarDrawHeight/hotBarD.dpi);
- else if (isTrack) {
- barScale = (trackGauge>0.1)?trackGauge*24:10;
- if (size.y >= size.x)
- barScale = size.y/((double)hotBarDrawHeight/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);
}
}
- 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;
}
@@ -460,32 +511,37 @@ 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;
- wMenuListClear( hotBarML );
- DYNARR_RESET( hotBarMap_t, hotBarMap_da );
- curContentsLabel[0] = '\0';
- if ( programMode == MODE_DESIGN ) {
- if (showFlexTrack)
- AddHotBarCornu();
- AddHotBarTurnouts();
- AddHotBarStructures();
- } else {
- AddHotBarCarDesc();
}
+ if (hotBarLeftB != NULL && curScaleName) {
+ hotBarWidth = 0.0;
+ hotBarMLcnt = 0;
+ wMenuListClear( hotBarML );
+ DYNARR_RESET( hotBarMap_t, hotBarMap_da );
+ curContentsLabel[0] = '\0';
+ if ( programMode == MODE_DESIGN ) {
+ if (showFlexTrack) {
+ AddHotBarCornu();
+ }
+ AddHotBarTurnouts();
+ AddHotBarStructures();
+ } else {
+ AddHotBarCarDesc();
+ }
- if ( programModeOld != programMode ) {
- hotBarCurrSelects[0] = hotBarCurrSelects[1] = -1;
- programModeOld = programMode;
- }
- if (hotBarMap_da.cnt > 0 && (hotBarCurrStart >= hotBarMap_da.cnt||hotBarCurrStart < 0))
- hotBarCurrStart = 0;
- RedrawHotBar( NULL, NULL, 0, 0 );
+ if ( programModeOld != programMode ) {
+ hotBarCurrSelects[0] = hotBarCurrSelects[1] = -1;
+ programModeOld = programMode;
+ }
+ if (hotBarMap_da.cnt > 0 && (hotBarCurrStart >= hotBarMap_da.cnt
+ ||hotBarCurrStart < 0)) {
+ hotBarCurrStart = 0;
+ }
+ RedrawHotBar( NULL, NULL, 0, 0 );
}
}
@@ -501,53 +557,63 @@ EXPORT void InitHotBar( void )
hotBarCurrStart = (int)v;
hotbarPopupM = MenuRegister( "Hotbar Select" );
hotBarML = wMenuListCreate( hotbarPopupM, "", -1, HotbarJump );
+ hotBarHeight = hotBarDrawHeight[iconSize];
+ hotBarFs = hotBarFontSize[iconSize];
}
EXPORT void LayoutHotBar( void * redraw )
{
- wPos_t buttonWidth, winWidth, winHeight;
+ wWinPix_t buttonHeight, buttonWidth, winWidth, winHeight;
+ wWinPix_t hbHeight = hotBarHeight;
BOOL_T initialize = FALSE;
wWinGetSize( mainW, &winWidth, &winHeight );
- hotBarHeight = hotBarDrawHeight;
- 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 = hotBarHeight*scaleicon;
- }
+ hotBarTextHeight = (wWinPix_t)round(wMessageGetHeight(0L) * (0.6 + 0.4 *
+ (double)iconSize));
+
if ( hotBarLabels) {
- hotBarHeight += wMessageGetHeight(0L);
+ 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, 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, 0, DoHotBarRight, NULL );
- hotBarD.d = wDrawCreate( mainW, 0, 0, NULL, BD_NOCAPTURE|BD_NOFOCUS, 100, hotBarHeight, 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);
initialize = TRUE;
}
buttonWidth = wControlGetWidth((wControl_p)hotBarLeftB);
- wControlSetPos( (wControl_p)hotBarLeftB, 0, toolbarHeight );
- wControlSetPos( (wControl_p)hotBarRightB, winWidth-20-buttonWidth, toolbarHeight );
- wControlSetPos( (wControl_p)hotBarD.d, buttonWidth, toolbarHeight );
- wDrawSetSize( hotBarD.d, winWidth-20-buttonWidth*2, hotBarHeight+2, redraw );
- hotBarD.size.x = ((double)(winWidth-20-buttonWidth*2))/hotBarD.dpi*hotBarD.scale;
- hotBarD.size.y = (double)hotBarDrawHeight/hotBarD.dpi*hotBarD.scale; //Exclude Label from calc
+ 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 );
+ 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
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 += hotBarHeight+3;
+ }
+ toolbarHeight += hbHeight+3;
}
void HideHotBar( void )
diff --git a/app/bin/cjoin.c b/app/bin/cjoin.c
index 71f4dae..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
*/
@@ -30,42 +30,40 @@
#include "cstraigh.h"
#include "cjoin.h"
#include "ccornu.h"
-#include "i18n.h"
-#include "utility.h"
-#include "math.h"
-#include "messages.h"
#include "param.h"
#include "cundo.h"
#include "cselect.h"
#include "fileio.h"
+#include "common-ui.h"
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;
/*****************************************************************************
@@ -76,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)
@@ -94,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 */
- FindPos( &off, NULL, pos1, pos0, a0, 10000.0 );
+ /* 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) {
@@ -114,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? */
- FindPos( &off, &beyond, pos0, pos1, a0, 100000.0 );
-LOG( log_join, 3, ("JwL: colinear? off.y=%0.3f\n", off.y ) )
+ /* 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 ) )
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;
@@ -129,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 );
@@ -138,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 );
@@ -155,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;
@@ -245,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;
@@ -264,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.
@@ -287,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;
@@ -330,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;
}
@@ -345,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;
}
}
@@ -362,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;
}
@@ -383,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 (!CheckTrackLayer( 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;
@@ -462,8 +487,8 @@ void AddAnchorEnd(coOrd p) {
static STATUS_T CmdJoinLine(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
/*
* Join 2 lines.
*/
@@ -474,16 +499,17 @@ 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 );
return C_CONTINUE;
case wActionMove:
DYNARR_RESET(trkSeg_t,Dl.anchors_da);
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;
@@ -497,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);
@@ -513,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;
@@ -523,14 +549,25 @@ 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;
- //Copy in reverse as we want this point to be 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,Dl.params.nodes.cnt-1-i);
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[i].pt_type = wPolyLineStraight;
+ 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);
+ 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);
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[i].pt_type = wPolyLineStraight;
+ }
}
InfoMessage( _("Left click - Select second object end") );
} else {
@@ -539,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;
}
@@ -555,17 +592,31 @@ 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));
- //Copy forwards as this point is first
- for (int i=join_near;i<Dl.params.nodes.cnt;i++) {
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[i-join_near+old_cnt].pt = DYNARR_N(coOrd,Dl.params.nodes,i);
- DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[i-join_near+old_cnt].pt_type = wPolyLineStraight;
+ }
+ 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);
+ 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);
+ DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.pts[j].pt_type = wPolyLineStraight;
+ }
}
DYNARR_LAST(trkSeg_t,Dl.newLine).u.p.cnt += Dl.params.nodes.cnt-join_near;
}
@@ -576,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);
@@ -595,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:
@@ -611,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;
@@ -653,104 +713,130 @@ static paramData_t joinPLs[] = {
#define joinRadI 0
{ PD_FLOAT, &desired_radius, "radius", PDO_DIM, &r_0_10000, N_("Desired Radius") }
};
-static paramGroup_t joinPG = { "join-fixed", 0, joinPLs, sizeof joinPLs/sizeof joinPLs[0] };
+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) {
@@ -763,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);
}
@@ -793,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.
*/
@@ -812,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;
@@ -830,68 +922,96 @@ 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 (!(easementVal<0 && Dj.cornuMode)) {
+ ErrorMessage( MSG_JOIN_NOTBEZIERORCORNU);
+ return C_CONTINUE;
+ }
+ }
Dj.inp[0].realType = GetTrkType(Dj.inp[0].trk);
InfoMessage( _("Select 2nd track") );
Dj.state = 1;
- wPrefGetFloat("misc", "desired_radius", &desired_radius, desired_radius);
+ sprintf(message, "desired_radius-%s", curScaleName);
+ wPrefGetFloat("misc", message, &desired_radius, desired_radius);
controls[0] = joinRadPD.control;
controls[1] = NULL;
labels[0] = N_("Desired Radius");
@@ -902,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") );
@@ -937,34 +1065,43 @@ 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 (!(easementVal<0 && Dj.cornuMode)) {
+ ErrorMessage( MSG_JOIN_NOTBEZIERORCORNU);
+ return C_CONTINUE;
+ }
+ }
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;
}
@@ -972,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 {
@@ -997,42 +1138,51 @@ 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)) {
+ // Make sure this is initialized
+ 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;
}
}
@@ -1040,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;
@@ -1053,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;
+ }
}
@@ -1071,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,
- 100000 );
+ 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:
@@ -1091,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;
@@ -1115,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, 100000.0 );
+ Dj.inp[0].params.angle, DIST_INF );
if (beyond < 0.0) {
InfoMessage(_("Beyond end of 1st track"));
goto errorReturn;
@@ -1153,13 +1308,14 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
break;
case curveTypeCurve:
if (IsCurveCircle(Dj.inp[0].trk)) {
- d = 10000.0;
+ 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;
@@ -1169,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 ) {
@@ -1185,13 +1342,14 @@ LOG( log_join, 3, (" -E POS0=[%0.3f %0.3f] POS1=[%0.3f %0.3f]\n",
break;
case curveTypeCurve:
if (IsCurveCircle(Dj.inp[1].trk)) {
- d = 10000.0;
+ 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;
@@ -1201,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 ) {
@@ -1226,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:
@@ -1264,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") );
@@ -1317,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:
@@ -1332,45 +1499,59 @@ errorReturn:
Dj.state = 0;
DYNARR_RESET(trkSeg_t,Dj.anchors);
rc = C_TERMINATE;
- if (easementVal == 0.0)
- wPrefSetFloat("misc", "desired_radius", desired_radius);
+ if (easementVal == 0.0) {
+ sprintf(message, "desired_radius-%s", curScaleName);
+ 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:
- if (infoSubst)
+ SetAllTrackSelect( FALSE );
+ if (infoSubst) {
InfoSubstituteControls(NULL, NULL);
+ }
infoSubst = FALSE;
break;
case C_REDRAW:
+ DrawHighlightBoxes(FALSE,FALSE,NULL);
+ 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:
- if (easementVal<0 && Dj.cornuMode)
+ SetAllTrackSelect( FALSE );
+ if (easementVal<0 && Dj.cornuMode) {
return CmdCornu(action,pos);
- if (infoSubst)
+ }
+ if (infoSubst) {
InfoSubstituteControls(NULL, NULL);
+ }
infoSubst = FALSE;
}
@@ -1386,15 +1567,20 @@ errorReturn:
*
*/
-#include "bitmaps/join.xpm"
-#include "bitmaps/joinline.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), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_JOIN, NULL );
- AddMenuButton( menu, CmdJoinLine, "cmdJoinLine", _("Join Lines"), wIconCreatePixMap(joinline_xpm), 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 8d9c7e3..710cb72 100644
--- a/app/bin/cjoin.h
+++ b/app/bin/cjoin.h
@@ -16,38 +16,42 @@
*
* 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
#define HAVE_CJOIN_H
#include "common.h"
-#include "wlib.h"
-#include "track.h"
#define E_NOTREQ (0)
#define E_REQ (1)
#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 * );
+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 b41ae42..580c681 100644
--- a/app/bin/cmisc.c
+++ b/app/bin/cmisc.c
@@ -17,40 +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
*/
-#include <stdint.h>
-
#include "common.h"
-#include "utility.h"
#include "cundo.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
+#include "fileio.h"
+#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 wPos_t describeW_posy;
-static wPos_t describeCmdButtonEnd;
+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 };
@@ -60,99 +56,99 @@ 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", 0, &rdata },
- { PD_FLOAT, NULL, "F2", 0, &rdata },
- { PD_FLOAT, NULL, "F3", 0, &rdata },
- { PD_FLOAT, NULL, "F4", 0, &rdata },
- { PD_FLOAT, NULL, "F5", 0, &rdata },
- { PD_FLOAT, NULL, "F6", 0, &rdata },
- { PD_FLOAT, NULL, "F7", 0, &rdata },
- { PD_FLOAT, NULL, "F8", 0, &rdata },
- { PD_FLOAT, NULL, "F9", 0, &rdata },
- { PD_FLOAT, NULL, "F10", 0, &rdata },
- { PD_FLOAT, NULL, "F11", 0, &rdata },
- { PD_FLOAT, NULL, "F12", 0, &rdata },
- { PD_FLOAT, NULL, "F13", 0, &rdata },
- { PD_FLOAT, NULL, "F14", 0, &rdata },
- { PD_FLOAT, NULL, "F15", 0, &rdata },
- { PD_FLOAT, NULL, "F16", 0, &rdata },
- { PD_FLOAT, NULL, "F17", 0, &rdata },
- { PD_FLOAT, NULL, "F18", 0, &rdata },
- { PD_FLOAT, NULL, "F19", 0, &rdata },
- { PD_FLOAT, NULL, "F20", 0, &rdata },
- { PD_FLOAT, NULL, "F21", 0, &rdata },
- { PD_FLOAT, NULL, "F22", 0, &rdata },
- { PD_FLOAT, NULL, "F23", 0, &rdata },
- { PD_FLOAT, NULL, "F24", 0, &rdata },
- { PD_FLOAT, NULL, "F25", 0, &rdata },
- { PD_FLOAT, NULL, "F26", 0, &rdata },
- { PD_FLOAT, NULL, "F27", 0, &rdata },
- { PD_FLOAT, NULL, "F28", 0, &rdata },
- { PD_FLOAT, NULL, "F29", 0, &rdata },
- { PD_FLOAT, NULL, "F30", 0, &rdata },
- { PD_FLOAT, NULL, "F31", 0, &rdata },
- { PD_FLOAT, NULL, "F32", 0, &rdata },
- { PD_FLOAT, NULL, "F33", 0, &rdata },
- { PD_FLOAT, NULL, "F34", 0, &rdata },
- { PD_FLOAT, NULL, "F35", 0, &rdata },
- { PD_FLOAT, NULL, "F36", 0, &rdata },
- { PD_FLOAT, NULL, "F37", 0, &rdata },
- { PD_FLOAT, NULL, "F38", 0, &rdata },
- { PD_FLOAT, NULL, "F39", 0, &rdata },
- { PD_FLOAT, NULL, "F40", 0, &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, "F23", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F24", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F25", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F26", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F27", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F28", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F29", PDO_NOPREF, &rdata },
+ { 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, "F34", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F35", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F36", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F37", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F38", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F39", PDO_NOPREF, &rdata },
+ { PD_FLOAT, NULL, "F40", PDO_NOPREF, &rdata },
#define I_FLOAT_N I_FLOAT_0+40
#define I_LONG_0 I_FLOAT_N
- { PD_LONG, NULL, "I1", 0, &idata },
- { PD_LONG, NULL, "I2", 0, &idata },
- { PD_LONG, NULL, "I3", 0, &idata },
- { PD_LONG, NULL, "I4", 0, &idata },
- { PD_LONG, NULL, "I5", 0, &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", 0, (void*)300 },
- { PD_STRING, NULL, "S2", 0, (void*)300 },
- { PD_STRING, NULL, "S3", 0, (void*)300 },
- { PD_STRING, NULL, "S4", 0, (void*)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", 0, (void*)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", 0, (void*)150, NULL, 0 },
- { PD_DROPLIST, NULL, "L2", 0, (void*)150, NULL, 0 },
- { PD_DROPLIST, NULL, "L3", 0, (void*)150, NULL, 0 },
- { PD_DROPLIST, NULL, "L4", 0, (void*)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", 0, (void*)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", 0, &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", 0, pivotLabels, N_("Pivot"), 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 },
#define I_TOGGLE_N I_TOGGLE_0+4
};
-static paramGroup_t describePG = { "describe", 0, describePLs, sizeof describePLs/sizeof describePLs[0] };
+static paramGroup_t describePG = { "describe", 0, describePLs, COUNT( describePLs ) };
/**
* A mapping table is used to map the index in the dropdown list to the layer
@@ -163,16 +159,16 @@ static paramGroup_t describePG = { "describe", 0, describePLs, sizeof 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++;
+ }
}
/**
@@ -185,242 +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)
{
- wPos_t x, y, w, h;
-
- if (descNeedDrawHilite == FALSE) {
- return;
- }
-
- if (descColor==0) {
- descColor = wDrawColorGray(87);
- }
-
- w = (wPos_t)((descSize.x/mainD.scale)*mainD.dpi+0.5);
- h = (wPos_t)((descSize.y/mainD.scale)*mainD.dpi+0.5);
- mainD.CoOrd2Pix(&mainD,descOrig,&x,&y);
- wDrawFilledRectangle(tempD.d, x, y, w, h, selected?descColor:wDrawColorBlue, wDrawOptTemp|wDrawOptTransparent);
+ 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, ddp-descData, descData, FALSE);
-
- if (descTrk) {
- GetBoundingBox(descTrk, &hi, &lo);
-
- if (OFF_D(mapD.orig, mapD.size, descOrig, descSize)) {
- ErrorMessage(MSG_MOVE_OUT_OF_BOUNDS);
- }
- }
-
- 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;
- }
-
- for (inx = 0; inx < sizeof describePLs/sizeof describePLs[0]; 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;
- }
-
- 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,
- wPos_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,
- wPos_t colX,
- wPos_t * x,
- wPos_t * y)
+ paramData_t * pd,
+ int inx,
+ wWinPix_t colX,
+ wWinPix_t * x,
+ wWinPix_t * y)
{
- descData_p ddp;
- wPos_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,101 +444,114 @@ 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<sizeof describePLs/sizeof describePLs[0]; 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 |= ro_mode;
- }
-
- 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));
- wControlActive(ddp->control0, ((ddp->mode|ro_mode)&DESC_RO)==0);
-
- switch (ddp->type) {
- case DESC_POS:
- ddp->control1 = AssignParamToDescribeDialog(ddp,
- &((coOrd*)(ddp->valueP))->y,
- NULL,
- 0);
- wControlActive(ddp->control1, ((ddp->mode|ro_mode)&DESC_RO)==0);
- break;
-
- case DESC_LAYER:
- wListClear((wList_p)ddp->control0); // Rebuild list on each invovation
-
- for (inx = 0; inx<NUM_LAYERS; inx++) {
- char *layerFormattedName;
- layerFormattedName = FormatLayerName(editableLayerList[inx]);
- wListAddValue((wList_p)ddp->control0, layerFormattedName, NULL, (void*)(long)inx);
- free(layerFormattedName);
- }
-
- *(int *)(ddp->valueP) = SearchEditableLayerList(*(int *)(ddp->valueP));
- layerValue = (int *)(ddp->valueP);
- break;
-
- default:
- break;
- }
- }
-
- ParamLayoutDialog(&describePG);
- ParamLoadControls(&describePG);
- sprintf(message, "%s (T%d)", title, GetTrkIndex(trk));
- wWinSetTitle(describePG.win, message);
- wShow(describePG.win);
+ 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]);
+ wListAddValue((wList_p)ddp->control0, layerFormattedName, NULL, I2VP(inx));
+ free(layerFormattedName);
+ }
+
+ *(int *)(ddp->valueP) = SearchEditableLayerList(*(int *)(ddp->valueP));
+ layerValue = (int *)(ddp->valueP);
+ wControlActive(ddp->control0, TRUE);
+ }
+
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ 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);
- }
+ if ((changes&CHANGE_UNITS) && describePG.win && wWinIsVisible(describePG.win)) {
+ ParamLoadControls(&describePG);
+ }
}
/*****************************************************************************
@@ -542,124 +563,144 @@ static void DescChange(long changes)
EXPORT void DescribeCancel(void)
{
- if (describePG.win && wWinIsVisible(describePG.win)) {
- if (descTrk) {
- if (!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"));
- wSetCursor(mainD.d,wCursorQuestion);
- descUndoStarted = FALSE;
- trk = NULL;
- return C_CONTINUE;
-
- case wActionMove:
- trk = OnTrack(&pos, FALSE, FALSE);
- return C_CONTINUE;
-
-
- case C_DOWN:
- if ((trk = OnTrack(&pos, FALSE, FALSE)) != NULL) {
- 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) {
- DrawDescHilite(TRUE);
- if (descTrk && QueryTrack(descTrk, Q_IS_DRAW)) {
+ 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);
+ descOrig = lo;
+ descSize = hi;
+ descOrig.x -= descBorder;
+ descOrig.y -= descBorder;
+ descSize.x -= descOrig.x-descBorder;
+ descSize.y -= descOrig.y-descBorder;
+
+ DrawDescHilite(TRUE);
+
+ 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),
- 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, (void*) (intptr_t) selectCmdInx);
- wMenuPushCreate(descPopupM, "cmdModifyMode", GetBalloonHelpStr("cmdModifyMode"), 0, DoCommandB, (void*) (intptr_t) modifyCmdInx);
- wMenuPushCreate(descPopupM, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0, DoCommandB, (void*) (intptr_t) 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 8f82012..491aae3 100644
--- a/app/bin/cmodify.c
+++ b/app/bin/cmodify.c
@@ -17,11 +17,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 <math.h>
-
#include "cjoin.h"
#include "ccurve.h"
#include "cbezier.h"
@@ -29,33 +27,31 @@
#include "cstraigh.h"
#include "cundo.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
#include "drawgeom.h"
#include "common.h"
#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)
@@ -64,10 +60,12 @@ static BOOL_T modifyBezierMode;
static BOOL_T modifyCornuMode;
static BOOL_T modifyDrawMode;
static BOOL_T modifyRulerMode;
+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);
@@ -78,10 +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);
@@ -92,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;
@@ -101,41 +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,90 +148,97 @@ 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;
}
/*
- * Picking a DRAW will allow point modifications until terminated with "Enter"
+ * 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))
- return ModifyTrack( Dex.Trk, action, pos );
- //Enter/Space does not
- if ((action>>8 !=32) && (action>>8 != 13)) return C_CONTINUE;
- /*no break*/
- case C_OK:
- UndoStart( _("Modify Track"), "Modify( T%d[%d] )", GetTrkIndex(Dex.Trk), Dex.params.ep );
- UndoModify( Dex.Trk );
- rc = ModifyTrack( Dex.Trk, C_TEXT | (13<<8), pos );
- if (rc != C_CONTINUE) modifyDrawMode = FALSE;
- UndoEnd();
- break;
- case C_CANCEL:
- case C_FINISH:
- case C_CONFIRM:
- 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;
- 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.
@@ -249,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;
@@ -269,35 +283,50 @@ STATUS_T CmdModify(
modifyCornuMode = FALSE;
modifyDrawMode = FALSE;
modifyExtendMode = FALSE;
+ modifyRulerMode = FALSE;
+ modifyProtractorMode = FALSE;
+ SetAllTrackSelect( FALSE );
return C_CONTINUE;
case C_DOWN:
+ case C_LDOUBLE:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (modifyBezierMode)
+ if (modifyProtractorMode) {
+ return ModifyProtractor(C_DOWN, pos);
+ }
+ 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);
- /*no break*/
- case C_LDOUBLE:
+ }
+
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;
- Dex.Trk = OnTrack( &pos, TRUE, FALSE );
+ tempSegs(1).lineWidth = 0;
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ Dex.Trk = OnTrack( &pos, FALSE, FALSE );
//Dex.Trk = trk;
if (Dex.Trk == NULL) {
- if ( ModifyRuler( C_DOWN, pos ) == C_CONTINUE )
+ if ( ModifyRuler( C_DOWN, pos ) == C_CONTINUE ) {
modifyRulerMode = TRUE;
+ } else if (ModifyProtractor( C_DOWN, pos ) == C_CONTINUE ) {
+ modifyProtractorMode = TRUE;
+ } else {
+ InfoMessage("Not on object, or Ruler, or Protractor");
+ wBeep();
+ }
return C_CONTINUE;
}
if (!CheckTrackLayer( Dex.Trk ) ) {
Dex.Trk = NULL;
- return C_CONTINUE;
+ return C_ERROR;
}
trackGauge = (IsTrack(Dex.Trk)?GetTrkGauge(Dex.Trk):0.0);
if (QueryTrack( Dex.Trk, Q_CAN_MODIFY_CONTROL_POINTS )) { //Bezier
@@ -305,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
}
@@ -314,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
@@ -325,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 );
@@ -370,23 +401,26 @@ 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 )) {
EPINX_T ep = PickUnconnectedEndPointSilent(pos, t);
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);
+ wSetCursor(mainD.d,wCursorNone);
} else if (QueryTrack(t,Q_CAN_EXTEND)) {
if (ep != -1) {
if (MyGetKeyState()&WKEY_CTRL) {
@@ -397,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)) {
@@ -418,28 +454,38 @@ 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);
}
return C_CONTINUE;
case C_MOVE:
- if ( modifyRulerMode )
+ if ( modifyRulerMode ) {
return ModifyRuler( C_MOVE, pos );
- if (Dex.Trk == NULL)
+ }
+ if ( modifyProtractorMode ) {
+ return ModifyProtractor( C_MOVE, pos );
+ }
+ 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;
+ }
- SnapPos( &pos );
+ if ((MyGetKeyState() & WKEY_ALT) == 0) { SnapPos( &pos ); }
rc = ModifyTrack( Dex.Trk, C_MOVE, pos );
if ( rc != C_CONTINUE ) {
rc = C_CONTINUE;
@@ -449,26 +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 ( modifyBezierMode )
+ }
+ if ( modifyProtractorMode) {
+ return ModifyProtractor( C_UP, pos);
+ }
+ 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;
- 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....
@@ -477,6 +532,7 @@ extendTrack:
changeTrackMode = TRUE;
modifyExtendMode = TRUE;
modifyRulerMode = FALSE;
+ modifyProtractorMode = FALSE;
modifyBezierMode = FALSE;
modifyCornuMode = FALSE;
modifyDrawMode = FALSE;
@@ -486,11 +542,11 @@ extendTrack:
if (Dex.Trk) {
if (!CheckTrackLayer( Dex.Trk ) ) {
Dex.Trk = NULL;
- return C_CONTINUE;
+ return C_ERROR;
}
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;
@@ -503,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;
@@ -518,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;
- 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 );
- } else
- PlotCurve( crvCmdFromEP1, Dex.pos00, Dex.pos00x, pos, &Dex.curveData, TRUE );
+ } 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)) );
@@ -560,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 );
@@ -570,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)) );
@@ -624,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;
@@ -659,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;
@@ -702,45 +778,54 @@ 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 ) );
- PanHere((void*)0);
+ LOG( log_pan, 2, ( "PanCenter:Mod-%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere(I2VP(0));
return C_CONTINUE;
}
if ((action>>8) == 'e') {
- DoZoomExtents(0);
+ DoZoomExtents(I2VP(0));
+ }
+ if ((action>>8) == 's') {
+ DoZoomExtents(I2VP(1));
}
if ((action>>8) == '0' || (action>>8 == 'o')) {
- PanMenuEnter('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:
@@ -749,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;
@@ -784,22 +875,24 @@ 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), 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, (void*) (intptr_t) selectCmdInx);
- wMenuPushCreate(modPopupM, "cmdDescribeMode", GetBalloonHelpStr("cmdDescribeMode"), 0, DoCommandB, (void*) (intptr_t) describeCmdInx);
- wMenuPushCreate(modPopupM, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0, DoCommandB, (void*) (intptr_t) 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,(wMenuCallBack_p) DoZoomUp, (void*) 1);
- wMenuPushCreate(modPopupM, "", _("Zoom Out"), 0, (wMenuCallBack_p) DoZoomDown, (void*) 1);
- wMenuPushCreate(modPopupM, "", _("Pan center - 'c'"), 0, (wMenuCallBack_p) PanHere, (void*) 3);
+ wMenuPushCreate(modPopupM, "", _("Zoom In"), 0, DoZoomUp, I2VP(1));
+ wMenuPushCreate(modPopupM, "", _("Zoom Out"), 0, DoZoomDown, I2VP(1));
+ wMenuPushCreate(modPopupM, "", _("Pan center - 'c'"), 0, PanHere, I2VP(3));
}
diff --git a/app/bin/cnote.c b/app/bin/cnote.c
index 0a015f1..04d63f1 100644
--- a/app/bin/cnote.c
+++ b/app/bin/cnote.c
@@ -17,14 +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
*/
-#include <string.h>
#include "custom.h"
#include "dynstring.h"
#include "fileio.h"
-#include "i18n.h"
#include "misc.h"
#include "param.h"
#include "include/utf8convert.h"
@@ -36,76 +34,83 @@ 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, sizeof notePLs/sizeof notePLs[0] };
+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 * junk)
+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)
+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) {
-#ifdef WINDOWS
+#ifdef UTFCONVERT
char *out = NULL;
if (RequiresConvToUTF8(mainText)) {
- unsigned cnt = strlen(mainText) * 2 + 1;
+ size_t cnt = strlen(mainText) * 2 + 1;
out = MyMalloc(cnt);
- wSystemToUTF8(mainText, out, cnt);
+ wSystemToUTF8(mainText, out, (unsigned int)cnt);
noteText = out;
}
-#endif // WINDOWS
-
+#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 WINDOWS
+#ifdef UTFCONVERT
if (out) {
MyFree(out);
}
-#endif // WINDOWS
- }
- return rc;
+#endif // UTFCONVERT
+ }
+ return rc;
}
/**
@@ -116,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 < 12 ? "0000l":
- "0000lq", &size, &sNote)) {
- return FALSE;
- }
-
- if (mainText) {
- MyFree(mainText);
- }
-
- if ( paramVersion < 12 )
- 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 6f75b11..91a31e5 100644
--- a/app/bin/cnvdsgn.c
+++ b/app/bin/cnvdsgn.c
@@ -1,12 +1,3 @@
-#include <stdio.h>
-#include <math.h>
-#include "common.h"
-#include "utility.h"
-
-#include <string.h>
-#include <stdlib.h>
-
-
/* XTrkCad - Model Railroad CAD
* Copyright (C) 2005 Dave Bullis
*
@@ -22,9 +13,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 "utility.h"
+
#define GETMAXY \
if (lp->y0 > maxY) maxY = lp->y0; \
if (lp->y1 > maxY) maxY = lp->y1
@@ -32,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;
}
@@ -63,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);
}
@@ -99,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
new file mode 100644
index 0000000..e34c4a9
--- /dev/null
+++ b/app/bin/common-ui.h
@@ -0,0 +1,31 @@
+/** \file common-ui.h
+ * Defnitions of message and other UI types
+ */
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2021 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
+ */
+
+/* Do not include this file in header (.h) files */
+
+#ifndef COMMON_UI_H
+#define COMMON_UI_H
+
+#include "messages.h"
+
+#endif
+
diff --git a/app/bin/common.h b/app/bin/common.h
index 2db961f..f03a04c 100644
--- a/app/bin/common.h
+++ b/app/bin/common.h
@@ -1,5 +1,5 @@
/** \file common.h
- * Defnitions of basic types
+ * Defnitions of basic types
*/
/* XTrkCad - Model Railroad CAD
@@ -17,26 +17,105 @@
*
* 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
-#include <stdlib.h>
+// INCLUDES
+#include <ctype.h>
+#include <errno.h>
+#include <locale.h>
+#include <math.h>
+#include <stdarg.h>
#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <time.h>
+
+#include "wlib.h"
+
+#ifndef WINDOWS
+// Unix/Mac
+#include <dirent.h>
+#include <unistd.h>
+
+#define PATH_SEPARATOR "/"
+
+#else
+// Windows
+#include <io.h>
+#include <process.h>
+#include "include/dirent.h"
+#include "direct.h"
+#include "getopt.h"
+
+// DEFINES
+#define UTFCONVERT
+#define M_PI 3.14159265358979323846
+
+#define F_OK (00)
+#define W_OK (02)
+#define R_OK (04)
+#define PATH_SEPARATOR "\\"
+
+// ALIASES for WINDOWS
+#define access _access
+#define unlink(a) _unlink((a))
+#define rmdir(a) _rmdir((a))
+#define open(name, flag, mode) _open((name), (flag), (mode))
+#define close(file) _close((file))
+#define getpid() _getpid()
+#define strcasecmp _stricmp
+#define strncasecmp _strnicmp
+#define mkdir( DIR, MODE ) _mkdir( (DIR) )
+#if _MSC_VER >1300
+#define strnicmp _strnicmp
+#define stricmp _stricmp
+#define strdup _strdup
+#endif
+// starting from Visual Studio 2015 round is in the runtime library, fake otherwise
+#if ( _MSC_VER < 1900 )
+#define round(x) floor((x)+0.5)
+#endif
+
+/* suppress warning from *.bmp about conversion of int to char */
+#pragma warning( disable : 4305 )
+/* suppress warning about array references */
+#pragma warning( disable : 6385 )
+#endif
+
+// We need to pass integer values via void* objects
+// typically context vars (declared as void*) which sometimes pass pointers and some times integers
+// For example see paramData_t.context.
+// Also some wlib calls take a generic parameter, declared as void* but somethings used to pass integers
+// These are used in logical pairs; VP=I2VP(INTEGER); ...a lot of code...; INTEGER=VP2L(VP);
+// Note: we never use VP2L to manipulate integer-ized values of a pointer and all integer values we use fit in a long
+#define I2VP(VAL) ((void*)(intptr_t)(VAL))
+#define VP2L(VAL) ((long)(intptr_t)(VAL))
+
#ifndef TRUE
#define TRUE (1)
#define FALSE (0)
#endif
+#define DIST_INF 2.0E9
+
#define NUM_LAYERS (99)
+// TYPEDEFS
+
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;
@@ -44,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;
@@ -66,52 +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)
+// DYNARRAY
typedef struct {
- int cnt;
- int max;
- void * ptr;
- } dynArr_t;
-
-#if defined(WINDOWS) && ! defined(WIN32)
-#define CHECK_SIZE(T,DA) \
- if ( (long)((DA).max) * (long)(sizeof *(T*)NULL) > 65500L ) \
- AbortProg( "Dynamic array too large at %s:%d", __FILE__, __LINE__ );
-#else
+ int cnt;
+ int max;
+ void * ptr;
+} dynArr_t;
+
#define CHECK_SIZE(T,DA)
-#endif
+/**
+ * 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); \
@@ -119,27 +226,93 @@ 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
+#define BASE_DPI (75.0)
-#ifdef WINDOWS
-#define M_PI 3.14159
-#define strcasecmp _stricmp
-#define strncasecmp _strnicmp
-#endif
+// FILE VERSIONS - non-backward file format changes
+// Descriptions added for Bezier, Cornu, Joint
+#define VERSION_DESCRIPTION2 (12)
+// Inline quoted text replaces multiline text in Notes and Cars
+#define VERSION_INLINENOTE (12)
+// END is replaced by END$SEGS, END$TRK, ...
+#define VERSION_NONAKEDENDS (12)
-#if _MSC_VER >1300
- #define strdup _strdup
-#endif
+
+// 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;
+// 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.
+#define GET_EXTRA_DATA(TRK,TRKTYP,TYPE) \
+ ((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 627d2ef..dea754d 100644
--- a/app/bin/compound.c
+++ b/app/bin/compound.c
@@ -18,14 +18,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 <ctype.h>
-#include <math.h>
-#include <string.h>
-
-
#include "tbezier.h"
#include "cjoin.h"
#include "common.h"
@@ -33,75 +28,224 @@
#include "cundo.h"
#include "dynstring.h"
#include "fileio.h"
-#include "i18n.h"
#include "shrtpath.h"
#include "track.h"
-#include "utility.h"
-#include "messages.h"
+#include "trkendpt.h"
+#include "draw.h"
#include "include/paramfile.h"
+#include "common-ui.h"
/*****************************************************************************
*
- * Misc
+ * Paths
*
*/
-//Convert the internal path segment into the external one - which is based on the index count of only the track segments
-char ConvertPathSegToExternal(char signed pp, int segCnt,trkSeg_p segs) {
+#ifndef NEWPATH
+/* GetPaths()
+ *
+ * Return the paths for 'trk'.
+ *
+ * \param trk IN Get paths for track 'trk'
+ */
+EXPORT PATHPTR_T GetPaths( track_p trk )
+{
+ 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" );
+ }
+ if ( GetTrkType(trk) == T_TURNOUT && xx->paths == NULL ) {
+ LogPrintf( "GetPaths( TURNOUT, paths==NULL )\n" );
+ }
+ return xx->paths;
+}
+#endif
- char signed new_pp;
- int old_inx;
- EPINX_T old_EP;
- GetSegInxEP(pp,&old_inx,&old_EP);
- int j = old_inx;
- for (int i=0;i<old_inx;i++) {
- if ( !IsSegTrack(&segs[i]) ) {
- j--;
- }
+/* GetPathsLength()
+ *
+ * Return the length of the paths object
+ *
+ * \param paths IN paths object
+ */
+EXPORT wIndex_t GetPathsLength( PATHPTR_T paths )
+{
+ PATHPTR_T pp;
+ 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);
+}
+
+
+#ifndef NEWPATH
+/* SetPaths()
+ *
+ * Set the paths for 'trk'.
+ * Called when paths are read from a layout file, copied from a param def'n or
+ * from a Spilt turnout.
+ *
+ * \param trk IN
+ * \param paths IN
+ */
+EXPORT void SetPaths( track_p trk, PATHPTR_T paths )
+{
+ if ( GetTrkType(trk) == T_STRUCTURE && paths != NULL ) {
+ LogPrintf( "SetPaths( STRUCTURE, paths!=NULL )\n" );
+ }
+ if ( GetTrkType(trk) == T_TURNOUT && paths == NULL ) {
+ LogPrintf( "SetPaths( TURNOUT, paths==NULL )\n" );
+ }
+
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_NOTRACK,
+ extraDataCompound_t );
+ if ( xx->paths ) {
+ MyFree( xx->paths );
}
- SetSegInxEP(&new_pp,j,old_EP);
- return new_pp;
+ if ( paths == NULL ) {
+ xx->paths = NULL;
+ } else {
+ wIndex_t pathLen = GetPathsLength( paths );
+ xx->paths = memdup( paths, pathLen * sizeof *xx->paths );
+ }
+ xx->currPath = NULL;
+ xx->currPathIndex = 0;
+}
+#endif
+
+
+/* GetCurrPath()
+ *
+ * Return the current path for 'trk'.
+ * Current path is the .currPathIndex'th path
+ * If the .currPathIndex is greater then the number of paths, return the first
+ *
+ * \param trk IN
+ */
+EXPORT PATHPTR_T GetCurrPath( track_p trk )
+{
+ 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-- ) {
+ for ( path += strlen( (char*)path ); path[0] || path[1]; path++ );
+ }
+ if ( !path[0] ) {
+ xx->currPathIndex = 0;
+ path = GetPaths( trk );
+ }
+ xx->currPath = path;
+ return xx->currPath;
+}
+
+EXPORT long GetCurrPathIndex( track_p trk )
+{
+ if ( GetTrkType( trk ) != T_TURNOUT ) {
+ return 0;
+ }
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT,
+ extraDataCompound_t );
+ return xx->currPathIndex;
}
-BOOL_T WriteCompoundPathsEndPtsSegs(
- FILE * f,
- PATHPTR_T paths,
- wIndex_t segCnt,
- trkSeg_p segs,
- EPINX_T endPtCnt,
- trkEndPt_t * endPts )
+
+EXPORT void SetCurrPathIndex( track_p trk, long position )
+{
+ if ( GetTrkType( trk ) != T_TURNOUT ) {
+ return;
+ }
+ struct extraDataCompound_t * xx = GET_EXTRA_DATA( trk, T_TURNOUT,
+ extraDataCompound_t );
+ xx->currPathIndex = position;
+ xx->currPath = NULL;
+}
+
+#ifndef NEWPATH
+/* GetParamPaths()
+ *
+ * Return the paths for turnout parameter 'to'.
+ *
+ * \param to IN
+ */
+PATHPTR_T GetParamPaths( turnoutInfo_t * to )
+{
+ return to->paths;
+}
+
+/* SetParamPaths()
+ *
+ * Set paths for a Turnout Parameter 'to'
+ * Used when creating a new turnout def'n
+ *
+ * \param to IN
+ * \param paths IN
+ */
+void SetParamPaths( turnoutInfo_t * to, PATHPTR_T paths )
+{
+ if ( paths ) {
+ wIndex_t len = GetPathsLength(paths);
+ to->paths = (PATHPTR_T)memdup( paths, len * ( sizeof * to->paths ) );
+ } else {
+ to->paths = NULL;
+ }
+}
+#endif
+
+/*****************************************************************************
+ *
+ *
+ *
+ */
+
+EXPORT BOOL_T WriteCompoundPathsEndPtsSegs(
+ 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\"", pp )>0;
- for ( pp+=strlen((char *)pp)+1; pp[0]!=0 || pp[1]!=0; pp++ )
- rc &= fprintf( f, " %d", ConvertPathSegToExternal(pp[0],segCnt,segs) )>0;
- rc &= fprintf( f, "\n" )>0;
+ 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++ ) {
+ 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;
- int len;
+ size_t len;
*manufP = *nameP = *partnoP = NULL;
*manufL = *nameL = *partnoL = 0;
len = strlen( title );
@@ -111,27 +255,29 @@ EXPORT void ParseCompoundTitle(
if ( cp2 ) {
cp2++;
*partnoP = cp2;
- *partnoL = title+len-cp2;
+ *partnoL = (int)(title+len-cp2);
len = cp2-title-1;
}
cp1++;
*nameP = cp1;
- *nameL = title+len-cp1;
+ *nameL = (int)(title+len-cp1);
*manufP = title;
- *manufL = cp1-title-1;
+ *manufL = (int)(cp1-title-1);
} else {
*nameP = title;
- *nameL = len;
+ *nameL = (int)len;
}
}
+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;
- int len;
+ size_t len;
FLOAT_T price;
BOOL_T needSep;
cq = message;
@@ -146,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';
@@ -208,12 +355,12 @@ void FormatCompoundTitle(
void ComputeCompoundBoundingBox(
- track_p trk )
+ track_p trk )
{
- struct extraData *xx;
+ struct extraDataCompound_t *xx;
coOrd hi, lo;
- xx = GetTrkExtraData(trk);
+ xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
GetSegBounds( xx->orig, xx->angle, xx->segCnt, xx->segs, &lo, &hi );
hi.x += lo.x;
@@ -228,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;
}
@@ -271,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;
+ }
}
}
@@ -288,13 +440,14 @@ EXPORT void CompoundClearDemoDefns( void )
*/
void SetDescriptionOrig(
- track_p trk )
+ track_p trk )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ 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;
@@ -307,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) );
@@ -322,74 +475,97 @@ 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 extraData *xx = GetTrkExtraData(trk);
+ 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) )
+ }
+ if ( (d->options&(DC_SIMPLE|DC_SEGTRACK)) ) {
return;
- if ( xx->special == TOpier ) {
- desc = xx->u.pier.name;
- } else {
- if ( xx->flipped )
- layoutLabelsOption |= LABEL_FLIPPED;
- if ( xx->ungrouped )
- layoutLabelsOption |= LABEL_UNGROUPED;
- if ( xx->split )
- layoutLabelsOption |= LABEL_SPLIT;
- FormatCompoundTitle( layoutLabelsOption, xtitle(xx) );
- desc = message;
+ }
+ if ( xx->special == TOpier ) {
+ desc = xx->u.pier.name;
+ } else {
+ if ( xx->flipped ) {
+ layoutLabelsOption |= LABEL_FLIPPED;
}
- p1 = xx->descriptionOrig;
- Rotate( &p1, zero, xx->angle );
- p1.x += xx->orig.x + xx->descriptionOff.x;
- p1.y += xx->orig.y + xx->descriptionOff.y;
+ if ( xx->ungrouped ) {
+ layoutLabelsOption |= LABEL_UNGROUPED;
+ }
+ if ( xx->split ) {
+ layoutLabelsOption |= LABEL_SPLIT;
+ }
+ FormatCompoundTitle( layoutLabelsOption, xtitle(xx) );
+ desc = message;
+ }
+ p1 = xx->descriptionOrig;
+ Rotate( &p1, zero, xx->angle );
+ coOrd p0;
+ p0.x = p1.x+xx->orig.x;
+ p0.y = p1.y+xx->orig.y;
+ p1.x += xx->orig.x + xx->descriptionOff.x;
+ p1.y += xx->orig.y + xx->descriptionOff.y;
+ if (color == drawColorPreviewSelected) {
+ 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)
{
- struct extraData *xx = GetTrkExtraData(trk);
coOrd p1;
- if (GetTrkType(trk) != T_TURNOUT && GetTrkType(trk) != T_STRUCTURE)
- return 100000;
- if ( ((GetTrkBits( trk ) & TB_HIDEDESC) != 0 ) && !show_hidden)
- return 100000;
+ 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) {
+ 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 )) {
+ 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 extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
static coOrd p0, p1;
static BOOL_T editMode;
wDrawColor color;
@@ -437,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);
@@ -450,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;
@@ -467,12 +643,14 @@ EXPORT void GetSegInxEP(
DIST_T DistanceCompound(
- track_p t,
- coOrd * p )
+ track_p t,
+ coOrd * p )
{
- struct extraData *xx = GetTrkExtraData(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;
@@ -483,7 +661,7 @@ DIST_T DistanceCompound(
d0 = DistanceSegs( xx->orig, xx->angle, xx->segCnt, xx->segs, p, NULL );
} else if ( programMode != MODE_TRAIN || GetTrkEndPtCnt(t) <= 0 ) {
d0 = DistanceSegs( xx->orig, xx->angle, xx->segCnt, xx->segs, p, NULL );
- if (programMode != MODE_TRAIN && GetTrkEndPtCnt(t) > 0 && d0 < 10000.0) {
+ if (programMode != MODE_TRAIN && GetTrkEndPtCnt(t) > 0 && d0 < DIST_INF) {
ep = PickEndPoint( *p, t );
*p = GetTrkEndPos(t,ep);
}
@@ -492,11 +670,11 @@ DIST_T DistanceCompound(
Rotate( &p0, xx->orig, -xx->angle );
p0.x -= xx->orig.x;
p0.y -= xx->orig.y;
- d0 = 1000000.0;
- path = xx->pathCurr;
- for ( path=xx->pathCurr+strlen((char *)xx->pathCurr)+1; path[0] || path[1]; path++ ) {
+ d0 = DIST_INF;
+ path = GetCurrPath( t );
+ for ( path += strlen((char *)path)+1; path[0] || path[1]; path++ ) {
if ( path[0] != 0 ) {
- d1 = 1000000.0;
+// d1 = DIST_INF;
GetSegInxEP( *path, &segInx, &segEP );
segProcData.distance.pos1 = p0;
SegProc( SEGPROC_DISTANCE, &xx->segs[segInx], &segProcData );
@@ -506,7 +684,7 @@ DIST_T DistanceCompound(
}
}
}
- if ( d0 < 1000000.0 ) {
+ if ( d0 < DIST_INF ) {
p2.x += xx->orig.x;
p2.y += xx->orig.y;
Rotate( &p2, xx->orig, xx->angle );
@@ -518,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 extraData *xx = GetTrkExtraData(trk);
+ 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;
@@ -592,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;
}
@@ -612,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);
}
@@ -636,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);
}
@@ -660,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;
@@ -694,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 );
@@ -725,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;
@@ -740,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;
@@ -760,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;
@@ -780,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 );
@@ -802,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 extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
int fix;
EPINX_T ep, epCnt;
char * mP, *nP, *pP, *cnP;
@@ -814,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, "...");
@@ -899,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;
@@ -907,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;
@@ -933,33 +1128,42 @@ 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);
if ( compoundDesc[LT].control0!=NULL) {
wListClear( (wList_p)compoundDesc[LT].control0 );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("Solid"), NULL, (void*)0 );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("Dash"), NULL, (void*)1 );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("Dot"), NULL, (void*)2 );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("DashDot"), NULL, (void*)3 );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("DashDotDot"), NULL, (void*)4 );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("CenterDot"), NULL, (void*)5 );
- wListAddValue( (wList_p)compoundDesc[LT].control0, _("PhantomDot"), NULL, (void*)6 );
+ 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) );
wListSetIndex( (wList_p)compoundDesc[LT].control0, compoundData.linetype );
}
@@ -967,74 +1171,82 @@ void DescribeCompound(
void DeleteCompound(
- track_p t )
+ track_p t )
{
- struct extraData *xx = GetTrkExtraData(t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_NOTRACK,
+ extraDataCompound_t);
FreeFilledDraw( xx->segCnt, xx->segs );
- 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 extraData *xx = GetTrkExtraData(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;
- PATHPTR_T path;
BOOL_T rc = TRUE;
options = (long)GetTrkWidth(t);
- if (xx->handlaid)
- options |= 0x08;
- if (xx->flipped)
- options |= 0x10;
- if (xx->ungrouped)
- options |= 0x20;
- if (xx->split)
- options |= 0x40;
- if ( ( GetTrkBits( t ) & TB_HIDEDESC ) != 0 )
- options |= 0x80;
- epCnt = GetTrkEndPtCnt(t);
- if ( epCnt > -0 ) {
- path = xx->paths;
- while ( path != xx->pathCurr ) {
- path += strlen((char*)path)+1;
- while ( path[0] || path[1] )
- path++;
- path += 2;
- if ( *path == 0 )
- break;
- position++;
- }
+ if (xx->handlaid) {
+ options |= COMPOUND_OPTION_HANDLAID;
+ }
+ if (xx->flipped) {
+ options |= COMPOUND_OPTION_FLIPPED;
+ }
+ if (xx->ungrouped) {
+ options |= COMPOUND_OPTION_UNGROUPED;
}
+ if (xx->split) {
+ options |= COMPOUND_OPTION_SPLIT;
+ }
+ if (xx->pathOverRide) {
+ options |= COMPOUND_OPTION_PATH_OVERRIDE;
+ }
+ if (xx->pathNoCombine) {
+ options |= COMPOUND_OPTION_PATH_NOCOMBINE;
+ }
+ 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, position, 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, xpaths(xx), 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;
}
@@ -1047,8 +1259,10 @@ BOOL_T WriteCompound(
*
*/
-EXPORT void SetCompoundLineType( track_p trk, int width ) {
- struct extraData * xx = GetTrkExtraData(trk);
+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;
@@ -1077,25 +1291,23 @@ 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,
- DIST_T * radii,
- int pathLen,
- char * 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 extraData * xx;
+ struct extraDataCompound_t * xx;
EPINX_T ep;
trk = NewTrack( index, trkType, epCnt, sizeof (*xx) + 1 );
- xx = GetTrkExtraData(trk);
+ xx = GET_EXTRA_DATA(trk, trkType, extraDataCompound_t);
xx->orig = pos;
xx->angle = angle;
xx->handlaid = FALSE;
@@ -1107,41 +1319,28 @@ EXPORT track_p NewCompound(
xx->title = MyStrdup( title );
xx->customInfo = NULL;
xx->special = TOnormal;
- if ( pathLen > 0 )
- xx->paths = memdup( paths, pathLen );
- else
- xx->paths = (PATHPTR_T)"";
- xx->pathLen = pathLen;
- xx->pathCurr = xx->paths;
+ 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 );
-// if (radii) {
-// xx->special = TOcurved;
-// xx->u.curved.radii.max = 0;
-// xx->u.curved.radii.cnt = 0;
-// DYNARR_SET(DIST_T,xx->u.curved.radii,epCnt);
-// }
for ( ep=0; ep<epCnt; ep++ ) {
- SetTrkEndPoint( trk, ep, epp[ep].pos, epp[ep].angle );
-// if (radii) {
-// DYNARR_N(DIST_T,xx->u.curved.radii,ep) = radii[ep];
-// }
+ 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 extraData *xx;
+ struct extraDataCompound_t *xx;
TRKINX_T index;
BOOL_T visible;
coOrd orig;
@@ -1154,31 +1353,41 @@ BOOL_T ReadCompound(
long options = 0;
long position = 0;
long lineType = 0;
- PATHPTR_T path=NULL;
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;
- path = pathPtr;
- if ( tempEndPts_da.cnt > 0 && pathCnt <= 1 ) {
- pathCnt = 10;
- path = (PATHPTR_T)"Normal\01\0\0";
+ }
+ if ( trkType == T_TURNOUT ) {
+ if ( TempEndPtsCount() <= 0 ) {
+ InputError( "Turnout defn without EndPoints", TRUE );
+ return FALSE;
+ }
+ if ( pathCnt <= 1 ) {
+ InputError( "Turnout defn without a Path", TRUE );
+ return FALSE;
+ }
}
if (paramVersion<6 && strlen( title ) > 2) {
cp = strchr( title, '\t' );
@@ -1189,68 +1398,67 @@ BOOL_T ReadCompound(
UpdateTitleMark( title, LookupScale(scale) );
}
}
- trk = NewCompound( trkType, index, orig, angle, title, 0, NULL, NULL, pathCnt, (char *)path, tempSegs_da.cnt, &tempSegs(0) );
+ trk = NewCompound( trkType, index, orig, angle, title, 0, NULL,
+ 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);
SetTrkWidth(trk, (int)(options&3));
- xx = GetTrkExtraData(trk);
- xx->handlaid = (int)((options&0x08)!=0);
- xx->flipped = (int)((options&0x10)!=0);
- xx->ungrouped = (int)((options&0x20)!=0);
- xx->split = (int)((options&0x40)!=0);
+ xx = GET_EXTRA_DATA(trk, trkType, extraDataCompound_t);
+ xx->handlaid = (int)((options&COMPOUND_OPTION_HANDLAID)!=0);
+ xx->flipped = (int)((options&COMPOUND_OPTION_FLIPPED)!=0);
+ xx->ungrouped = (int)((options&COMPOUND_OPTION_UNGROUPED)!=0);
+ xx->split = (int)((options&COMPOUND_OPTION_SPLIT)!=0);
+ xx->pathOverRide = (int)((options&COMPOUND_OPTION_PATH_OVERRIDE)!=0);
+ xx->pathNoCombine = (int)((options&COMPOUND_OPTION_PATH_NOCOMBINE)!=0);
xx->lineType = lineType;
xx->descriptionOff = descriptionOff;
- if ( ( options & 0x80 ) != 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);
return FALSE;
}
}
- if (pathCnt > 0) {
- path = xx->pathCurr;
- while ( position-- ) {
- path += strlen((char *)path)+1;
- while ( path[0] || path[1] )
- path++;
- path += 2;
- if ( *path == 0 )
- path = xx->paths;
- }
- }
- xx->pathCurr = path;
+ SetCurrPathIndex( trk, position );
return TRUE;
}
void MoveCompound(
- track_p trk,
- coOrd orig )
+ track_p trk,
+ coOrd orig )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
xx->orig.x += orig.x;
xx->orig.y += orig.y;
ComputeCompoundBoundingBox( trk );
@@ -1258,11 +1466,12 @@ void MoveCompound(
void RotateCompound(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ 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 );
@@ -1271,10 +1480,11 @@ void RotateCompound(
void RescaleCompound(
- track_p trk,
- FLOAT_T ratio )
+ track_p trk,
+ FLOAT_T ratio )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
xx->orig.x *= ratio;
xx->orig.y *= ratio;
xx->descriptionOff.x *= ratio;
@@ -1286,11 +1496,12 @@ void RescaleCompound(
void FlipCompound(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataCompound_t);
EPINX_T ep, epCnt;
char * mP, *nP, *pP;
int mL, nL, pL;
@@ -1310,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 );
@@ -1331,7 +1544,7 @@ void FlipCompound(
return;
}
}
- }
+ }
}
}
if ( epCnt == 3 || epCnt == 4 ) {
@@ -1345,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;
}
}
@@ -1401,51 +1626,64 @@ void FlipCompound(
typedef struct {
- long count;
- char * type;
- char * name;
- FLOAT_T price;
- } 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)
BOOL_T EnumerateCompound( track_p trk )
{
- struct extraData *xx;
+ struct extraDataCompound_t *xx;
INT_T inx, inx2;
int cmp;
long listLabelsOption = listLabels;
+ char * index = MyMalloc(10);
if ( trk != NULL ) {
- xx = GetTrkExtraData(trk);
- if ( xx->flipped )
+ xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataCompound_t);
+ 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 TRUE;
+ 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 ) {
EnumCompound(inx).count++;
+ sprintf(index,",%d",GetTrkIndex(trk));
+ DynStringCatCStr(&(EnumCompound(inx).indexes),index);
+ MyFree(index);
return TRUE;
} else if ( cmp > 0 ) {
break;
}
}
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)
- enumerateMaxDescLen = strlen(message);
+ if (strlen(message) > (size_t)enumerateMaxDescLen) {
+ enumerateMaxDescLen = (int)strlen(message);
+ }
EnumCompound(inx).type = GetTrkTypeName( trk );
EnumCompound(inx).count = 1;
+ DynStringMalloc(&(EnumCompound(inx).indexes),100);
+ DynStringPrintf(&(EnumCompound(inx).indexes),"%d",GetTrkIndex(trk));
FormatCompoundTitle( LABEL_MANUF|LABEL_DESCR|LABEL_PARTNO, xtitle(xx) );
wPrefGetFloat( "price list", message, &(EnumCompound(inx).price), 0.0 );
} else {
@@ -1454,13 +1692,17 @@ 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 );
+ EnumCompound(inx).price,
+ EnumCompound(inx).name,
+ DynStringSize(&(EnumCompound(inx).indexes))?DynStringToCStr(&(EnumCompound(
+ inx).indexes)):NULL);
}
+ DynStringFree(&(EnumCompound(inx).indexes));
}
}
DYNARR_RESET( enumCompound_t, enumCompound_da );
}
+ MyFree(index);
return TRUE;
}
diff --git a/app/bin/compound.h b/app/bin/compound.h
index b4c63ca..0a4a0ae 100644
--- a/app/bin/compound.h
+++ b/app/bin/compound.h
@@ -17,93 +17,84 @@
*
* 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
#define COMPOUND_H
#include "common.h"
-#include "track.h"
+#include "track.h" //- PATHPTR_T drawLineType_e
-typedef enum { TOnormal, TOadjustable, TOpierInfo, TOpier, TOcarDesc, TOlast, TOcurved } TOspecial_e;
+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;
- struct {
- dynArr_t radii;
- } curved;
- } turnoutInfo_u;
-
-typedef struct turnoutInfo_t{
- SCALEINX_T scaleInx;
- char * title;
- coOrd orig;
- coOrd size;
- wIndex_t segCnt;
- trkSeg_p segs;
- wIndex_t endCnt;
- trkEndPt_t * endPt;
- wIndex_t pathLen;
- PATHPTR_T paths;
- int paramFileIndex;
- char * customInfo;
- DIST_T barScale;
- TOspecial_e special;
- turnoutInfo_u u;
- char * contentsLabel;
- } turnoutInfo_t;
-
-
-#define xpaths(X) \
- (X->paths)
+ 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)
-#ifndef PRIVATE_EXTRADATA
-struct extraData {
- coOrd orig;
- ANGLE_T angle;
- BOOL_T handlaid;
- BOOL_T flipped;
- BOOL_T ungrouped;
- BOOL_T split;
- coOrd descriptionOrig;
- coOrd descriptionOff;
- coOrd descriptionSize;
- char * title;
- char * customInfo;
- TOspecial_e special;
- turnoutInfo_u u;
- PATHPTR_T paths;
- wIndex_t pathLen;
- PATHPTR_T pathCurr;
- wIndex_t segCnt;
- trkSeg_t * segs;
- DIST_T * radii;
- drawLineType_e lineType;
- };
-#endif
+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;
extern DIST_T curBarScale;
extern dynArr_t turnoutInfo_da;
extern dynArr_t structureInfo_da;
@@ -118,12 +109,32 @@ extern turnoutInfo_t * curStructure;
#define PIER "pier"
#define CURVED "curvedends"
+#define COMPOUND_OPTION_HANDLAID (0x0008)
+#define COMPOUND_OPTION_FLIPPED (0x0010)
+#define COMPOUND_OPTION_UNGROUPED (0x0020)
+#define COMPOUND_OPTION_SPLIT (0x0040)
+#define COMPOUND_OPTION_HIDEDESC (0x0080)
+#define COMPOUND_OPTION_PATH_OVERRIDE (0x0100)
+#define COMPOUND_OPTION_PATH_NOCOMBINE (0x0200)
+
+
/* compound.c */
+PATHPTR_T GetPaths( track_p trk );
+wIndex_t GetPathsLength( PATHPTR_T paths );
+void SetPaths( track_p trk, PATHPTR_T paths );
+PATHPTR_T GetCurrPath( track_p trk );
+long GetCurrPathIndex( track_p trk );
+void SetCurrPathIndex( track_p trk, long position );
+PATHPTR_T GetParamPaths( turnoutInfo_t * to );
+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_t *);
-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 * );
@@ -135,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_t *, DIST_T *, int, char *, 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 );
@@ -147,8 +159,8 @@ void SetCompoundLineType( track_p trk, int width );
/* cgroup.c */
void UngroupCompound( track_p );
-void DoUngroup( void );
-void DoGroup( void );
+void DoUngroup( void * unused );
+void DoGroup( void * unused );
/* dcmpnd.c */
void UpdateTitleMark( char *, SCALEINX_T );
@@ -158,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, wIndex_t, PATHPTR_T, EPINX_T, trkEndPt_t *, DIST_T *, wBool_t );
+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 27276b1..533b9d5 100644
--- a/app/bin/cparalle.c
+++ b/app/bin/cparalle.c
@@ -17,26 +17,23 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-
#include "ccurve.h"
#include "cstraigh.h"
+#include "cselect.h"
#include "cundo.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
#include "layout.h"
+#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;
@@ -54,154 +51,159 @@ static paramData_t parSepPLs[] = {
#define parFactorI 1
{ PD_FLOAT, &parSepFactor, "factor", 0, &r_0_10, N_("Radius Factor") }
};
-static paramGroup_t parSepPG = { "parallel", 0, parSepPLs, sizeof parSepPLs/sizeof parSepPLs[0] };
+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 = (long)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;
- 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 (GetTrkEndTrk(t0,ep0) != NULL) {
+ if (ep0 < 0 || GetTrkEndTrk(t0,ep0) != NULL) {
t0 = NULL;
} else {
p = GetTrkEndPos(t0, ep0);
@@ -214,7 +216,7 @@ static STATUS_T CmdParallel(wAction_t action, coOrd pos)
p = p1;
if ((t1=OnTrack(&p, FALSE, TRUE)) != NULL) {
ep1 = PickEndPoint(p, t1);
- if (GetTrkEndTrk(t1,ep1) != NULL) {
+ if (ep1 < 0 || GetTrkEndTrk(t1,ep1) != NULL) {
t1 = NULL;
} else {
p = GetTrkEndPos(t1, ep1);
@@ -224,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);
@@ -249,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), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_PARALLEL, (void*)0 );
- AddMenuButton( menu, CmdParallel, "cmdParallelLine", _("Parallel Line"), wIconCreatePixMap(parallel_line_xpm), LEVEL0_50, IC_STICKY|IC_POPUP|IC_WANT_MOVE, ACCL_PARALLEL, (void*)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 066e649..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,25 +17,16 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <sys/types.h>
-#include <time.h>
-#include <string.h>
-#include <ctype.h>
-#include <math.h>
-#include <stdbool.h>
-
#include "custom.h"
#include "dynstring.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "common-ui.h"
#define PRINT_GAUDY (0)
#define PRINT_PLAIN (1)
@@ -46,24 +37,33 @@
#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) ]
-struct {
- coOrd size;
- coOrd orig;
- ANGLE_T angle;
- } currPrintGrid, newPrintGrid;
+static struct {
+ coOrd size;
+ coOrd orig;
+ ANGLE_T angle;
+} currPrintGrid, newPrintGrid;
+EXPORT coOrd GetPrintOrig()
+{
+ return currPrintGrid.orig;
+}
+
+EXPORT ANGLE_T GetPrintAngle()
+{
+ return currPrintGrid.angle;
+}
/*
* GUI VARS
*/
@@ -72,7 +72,7 @@ struct {
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;
@@ -89,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;
@@ -104,7 +104,7 @@ static void PrintClear( void );
static void PrintMaxPageSize( void );
static void SelectAllPages(void);
static void DoPrintMargin(void);
-static bool PrintPageNumber( wPos_t x, wPos_t y, DIST_T width, DIST_T height );
+static bool PrintPageNumber( int x, int y, DIST_T width, DIST_T height );
static bool PrintNextPageNumbers(int x, int y, DIST_T pageW, DIST_T pageH);
static char * printFormatLabels[] = { N_("Portrait"), N_("Landscape"), NULL };
@@ -112,60 +112,63 @@ 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_("Rulers"), NULL };
+static char * printRulerLabels[] = { N_("Layout Edge"), N_("Every Page"), N_("None"), NULL };
static char * printRoadbedLabels[] = { N_("Roadbed Outline"), NULL };
static char * printCenterLineLabels[] = { N_("Centerline below Scale 1:1"), NULL };
static paramIntegerRange_t rminScale_999 = { 1, 999, 0, PDO_NORANGECHECK_HIGH };
static paramFloatRange_t r0_ = { 0, 0, 0, PDO_NORANGECHECK_HIGH };
-static paramFloatRange_t r1_ = { 1, 0, 0, PDO_NORANGECHECK_HIGH };
-static paramFloatRange_t r_10_99999 = { -10, 99999, 0, PDO_NORANGECHECK_HIGH };
+static paramFloatRange_t r1_pgsz_x = { 1, 0, 0, 0 };
+static paramFloatRange_t r1_pgsz_y = { 1, 0, 0, 0 };
+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, (void*)1 },
-/*1*/ { PD_FLOAT, &newPrintGrid.size.x, "pagew", PDO_DIM|PDO_SMALLDIM|PDO_NORECORD|PDO_NOPREF, &r1_, N_("Page Width"), 0, (void*)2 },
-/*2*/ { PD_BUTTON, (void*)PrintMaxPageSize, "max", PDO_DLGHORZ, NULL, N_("Max") },
-/*3*/ { PD_FLOAT, &newPrintGrid.size.y, "pageh", PDO_DIM|PDO_SMALLDIM|PDO_NORECORD|PDO_NOPREF, &r1_, N_("Height"), 0, (void*)2 },
-/*4*/ { PD_BUTTON, (void*)PrintSnapShot, "snapshot", PDO_DLGHORZ, NULL, N_("Snap Shot") },
-/*5*/ { PD_RADIO, &printFormat, "format", 0, printFormatLabels, N_("Page Format"), BC_HORZ|BC_NOBORDER, (void*)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, (void*)0 },
-/*8*/ { PD_TOGGLE, &printGaudy, "style", PDO_DLGNOLABELALIGN, printGaudyLabels, NULL, BC_HORZ|BC_NOBORDER, (void*)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_TOGGLE, &printRuler, "ruler", PDO_DLGNOLABELALIGN, printRulerLabels, NULL, 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, (void*)1 },
-/*17*/ { PD_BUTTON, (void*)DoPrintMargin, "margin", PDO_DLGHORZ|PDO_DLGBOXEND, NULL, N_("Margins") },
-/*18*/{ PD_FLOAT, &newPrintGrid.orig.x, "origx", PDO_DIM|PDO_DLGRESETMARGIN, &r_10_99999, N_("Origin: X"), 0, (void*)2 },
-/*19*/ { PD_FLOAT, &newPrintGrid.orig.y, "origy", PDO_DIM, &r_10_99999, N_("Y"), 0, (void*)2 },
-/*20*/ { PD_BUTTON, (void*)DoResetGrid, "reset", PDO_DLGHORZ, NULL, N_("Reset") },
-/*21*/ { PD_FLOAT, &newPrintGrid.angle, "origa", PDO_ANGLE|PDO_DLGBOXEND, &r0_360, N_("Angle"), 0, (void*)2 },
-/*22*/ { PD_BUTTON, (void*)DoPrintSetup, "setup", PDO_DLGCMDBUTTON, NULL, N_("Setup") },
-/*23*/ { PD_BUTTON, (void*)SelectAllPages, "selall", 0, NULL, N_("Select All") },
-/*24*/ { PD_BUTTON, (void*)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, (void*)80 },
-/*26*/ { PD_MESSAGE, N_("selected"), NULL, 0, (void*)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, sizeof printPLs/sizeof printPLs[0] };
+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 };
/*****************************************************************************
*
@@ -175,10 +178,10 @@ static struct {
/**
* Update the dialog with the current number of selected pages.
- *
+ *
*/
-static void
+static void
UpdatePageCount()
{
DynString msg;
@@ -187,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);
}
@@ -199,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 );
@@ -246,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;
@@ -267,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 );
}
@@ -282,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;
@@ -300,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++)
@@ -317,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;
@@ -360,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 */
@@ -406,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(
- wPos_t x,
- wPos_t y,
- coOrd *corners )
+ int x,
+ int y,
+ coOrd *corners )
{
coOrd p00, p01, p10, p11;
char tmp[30];
@@ -427,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;
@@ -482,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 );
@@ -507,11 +519,6 @@ static void PrintUpdate( int inx0 )
ParamLoadData( &printPG );
- if (newPrintGrid.size.x > maxPageSize.x+0.01 ||
- newPrintGrid.size.y > maxPageSize.y+0.01) {
- NoticeMessage( MSG_PRINT_MAX_SIZE, _("Ok"), NULL,
- FormatSmallDistance(maxPageSize.x), FormatSmallDistance(maxPageSize.y) );
- }
if (newPrintGrid.size.x > maxPageSize.x) {
newPrintGrid.size.x = maxPageSize.x;
ParamLoadControl( &printPG, 1 );
@@ -521,21 +528,22 @@ static void PrintUpdate( int inx0 )
ParamLoadControl( &printPG, 3 );
}
currPrintGrid = newPrintGrid;
- for ( inx = 0; inx < sizeof printPLs/sizeof printPLs[0]; inx++ ) {
- if ( inx != inx0 && printPLs[inx].context == (void*)2 )
+ for ( inx = 0; inx < COUNT( printPLs ); inx++ ) {
+ 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;
@@ -549,16 +557,19 @@ static void SetPageSize( BOOL_T doScale )
printRotate = FALSE;
}
if (doScale) {
- if (printGaudy)
+ if (printGaudy) {
maxPageSize.y -= 1.0;
+ }
maxPageSize.x *= printScale;
maxPageSize.y *= printScale;
}
+ r1_pgsz_x.high = maxPageSize.x+0.0001;
+ r1_pgsz_y.high = maxPageSize.y+0.0001;
}
/**
* Select all pages for printing.
- *
+ *
*/
static void SelectAllPages(void)
@@ -580,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 );
@@ -595,7 +606,7 @@ static void DoPrintScale( void )
* Called whenever print scale or orientation changes.
*/
{
- printScale = iPrintScale;
+ print_d.scale = printScale = iPrintScale;
PrintMaxPageSize();
PrintEnableControls();
}
@@ -607,48 +618,49 @@ 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, (void*) PrintMarginReset, "marginReset", PDO_DLGCMDBUTTON, NULL, N_("Reset") } };
-static paramGroup_t printMarginPG = { "printMargin", PGO_PREFMISCGROUP|PGO_NODEFAULTPROC, printMarginPLs, sizeof printMarginPLs/sizeof printMarginPLs[0] };
+ { 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,
- wPos_t colX,
- wPos_t * w,
- wPos_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;
}
- wPos_t x0, y0;
+ wWinPix_t x0, y0;
x0 = (aPmLines[index-I_PM_FIRST].x0+aPmLines[index-I_PM_FIRST].x1)/2;
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;
}
@@ -656,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 );
- for ( int inx = 0; inx < sizeof printPLs/sizeof printPLs[0]; inx++ ) {
- if ( printPLs[inx].context == (void*)2 )
+ wPrefSetFloat( "printer", message, customMargin.left );
+ SetMaxPageSize( TRUE );
+ for ( int inx = 0; inx < COUNT( printPLs ); inx++ ) {
+ 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 )
+ if ( customMarginWin == NULL ) {
+ int x=10, y=10;
+ customMarginWin = ParamCreateDialog( &customMarginPG,
+ MakeWindowTitle(_("Print Margins")), _("Ok"), DoPrintMarginOk, NULL, TRUE,
+ PrintMarginLayout, F_BLOCK, PrintMarginDlgUpdate );
+ if ( customMarginWin == NULL ) {
return;
- DoPrintSetup();
- }
- if ( printMarginWin == NULL ) {
- wPos_t x=10, y=10;
- printMarginWin = ParamCreateDialog( &printMarginPG, MakeWindowTitle(_("Print Margins")), _("Ok"), DoPrintMarginOk, NULL, TRUE, PrintMarginLayout, F_BLOCK, PrintMarginDlgUpdate );
- if ( printMarginWin == NULL )
- return;
- for ( int i=0; i<sizeof aPmLines / sizeof aPmLines[0]; i++ ) {
+ }
+ 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, sizeof aPmLines / sizeof aPmLines[0], 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 );
}
@@ -745,7 +770,8 @@ static void DoPrintSetup( void )
{
wPrintSetup( (wPrintSetupCallBack_p)DoPrintScale );
sPrinterName = wPrintGetName();
- SetPageSize( TRUE );
+ GetMargins();
+ SetMaxPageSize( TRUE );
}
@@ -782,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;
@@ -792,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 += 0.75*scaleH;
- size.y += 0.75*scaleH;
- if (printGaudy)
+ size.x += 2*0.5*scaleH;
+ size.y += 2*0.5*scaleH;
+ 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 += 0.75*scaleV;
- size.y += 0.75*scaleV;
- if (printGaudy)
+ size.x += 2*0.5*scaleV;
+ size.y += 2*0.5*scaleV;
+ if (printGaudy) {
size.y += 1.0*scaleV;
+ }
scaleX = size.x/pageSize.y;
scaleY = size.y/pageSize.x;
scaleV = (long)ceil(max( scaleX, scaleY ));
@@ -823,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;
- currPrintGrid.orig.y = -0.5*printScale;
- 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;
@@ -854,7 +882,7 @@ static void DrawRegistrationMarks( drawCmd_p d )
long x, y, delta, divisor;
coOrd p0, p1, qq, q0, q1;
POS_T len;
- char msg[10];
+ char msg[STR_SIZE];
wFont_p fp;
wFontSize_t fs;
fp = wStandardFont( F_TIMES, FALSE, FALSE );
@@ -869,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 ) {
@@ -890,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 );
}
}
@@ -917,20 +949,22 @@ static void DrawRegistrationMarks( drawCmd_p d )
static char *
FormatPageNumber(int x, int y)
{
- DynString formatted;
- char *result;
-
- DynStringMalloc(&formatted, 16);
- if (x > 0 && x <= bm.x1 && y > 0 && y <= bm.y1) {
- DynStringPrintf(&formatted, "(%d/%d)", x, y);
- } else {
- DynStringCatCStr(&formatted, "(-/-)");
- }
+ 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);
+ result = strdup(DynStringToCStr(&formatted));
+ DynStringFree(&formatted);
- return (result);
+ return (result);
}
/**
@@ -944,36 +978,39 @@ FormatPageNumber(int x, int y)
*/
static bool
-PrintPageNumber(wPos_t x, wPos_t y, DIST_T width, DIST_T height)
+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 + 1, y + 1);
+ positionText = FormatPageNumber(x, y);
- // even though we're printing into page_d, mainD must be used here
- DrawTextSize(&mainD, positionText, fp, fs, TRUE, &textSize);
+ if (strcmp(positionText,"(-/-)") != 0) {
+ // even though we're printing into page_d, mainD must be used here
+ DrawTextSize(&mainD, positionText, fp, fs, TRUE, &textSize);
- if (printFormat == PORTRAIT) {
- printPosition.x = (width - textSize.x) / 2;
- printPosition.y = (height - textSize.y) / 2;
- } else {
- printPosition.x = (height - textSize.x) / 2;
- printPosition.y = (width - textSize.y) / 2;
- }
+ if (printFormat == PORTRAIT) {
+ printPosition.x = (width - textSize.x) / 2;
+ printPosition.y = (height - textSize.y) / 2;
+ } else {
+ printPosition.x = (height - textSize.x) / 2;
+ printPosition.y = (width - textSize.y) / 2;
+ }
- page_d.funcs->options |= wDrawOutlineFont;
- DrawString(&page_d, printPosition, 0.0, positionText, fp, fs,
- wDrawColorGray(70));
- page_d.funcs->options &= ~wDrawOutlineFont;
+ unsigned long options = page_d.options;
+ page_d.options |= DC_OUTLINE;
+ DrawString(&page_d, printPosition, 0.0, positionText, fp, fs,
+ wDrawColorGray(70));
+ page_d.options = options;
+ }
- free(positionText);
+ free(positionText);
- return (TRUE);
+ return (TRUE);
}
/**
@@ -987,32 +1024,35 @@ PrintPageNumber(wPos_t x, wPos_t 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);
- 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;
@@ -1020,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 + 1, y + 2, 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 + 1, y, 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;
@@ -1038,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 + 2, y + 1, p00);
+ PrintNextPageNumberAt(x+1, y, p00);
// left
if (printFormat == PORTRAIT) {
@@ -1046,187 +1086,212 @@ PrintNextPageNumbers(int x, int y, DIST_T pageW, DIST_T pageH)
} else {
p00.x = 10.0 / 72.0;
}
- PrintNextPageNumberAt(x, y + 1, p00);
- return (TRUE);
+ PrintNextPageNumberAt(x-1, y, p00);
+ 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( (wPos_t)(clipOrig.y*print_d.dpi), (wPos_t)(clipOrig.x*print_d.dpi),
- (wPos_t)(clipSize.y*print_d.dpi), (wPos_t)(clipSize.x*print_d.dpi) );
- } else {
- wPrintClip( (wPos_t)(clipOrig.x*print_d.dpi), (wPos_t)(clipOrig.y*print_d.dpi),
- (wPos_t)(clipSize.x*print_d.dpi), (wPos_t)(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;
-
- DrawRuler( &print_d, p[0], p[1], 0.0, TRUE, FALSE, wDrawColorBlack );
- DrawRuler( &print_d, p[0], p[3], 0.0, TRUE, TRUE, wDrawColorBlack );
- DrawRuler( &print_d, p[1], p[2], 0.0, FALSE, FALSE, wDrawColorBlack );
- DrawRuler( &print_d, p[3], p[2], 0.0, FALSE, TRUE, wDrawColorBlack );
- if ( printRuler && currPrintGrid.angle == 0 ) {
- 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.4 * print_d.scale;
- else
- minP.x = 0.0;
- if ( p[3].x < roomSize.x )
- maxP.x = p[3].x - 0.2 * print_d.scale;
- else
- maxP.x = roomSize.x;
- if ( p[2].y > 0 )
- minP.y = p[2].y + 0.4 * print_d.scale;
- else
- minP.y = 0.0;
- if ( p[3].y < roomSize.y )
- maxP.y = p[3].y - 0.2 * 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 ) {
- p[0].x = p[1].x = p[2].x + 0.4 * print_d.scale;
- DrawRuler( &print_d, p[0], p[1], minP.y, TRUE, TRUE, wDrawColorBlack );
- }
- if ( p[3].x < roomSize.x ) {
- p[0].x = p[1].x = p[3].x - 0.2 * print_d.scale;
- DrawRuler( &print_d, p[0], p[1], minP.y, FALSE, FALSE, wDrawColorBlack );
- }
- p[0].x = 0;
- p[1].x = maxP.x - minP.x;
- if ( p[2].y > 0 ) {
- p[0].y = p[1].y = p[2].y + 0.4 * print_d.scale;
- DrawRuler( &print_d, p[0], p[1], minP.x, TRUE, FALSE, wDrawColorBlack );
- }
- if ( p[3].y < roomSize.y ) {
- p[0].y = p[1].y = p[3].y - 0.2 * print_d.scale;
- DrawRuler( &print_d, p[0], p[1], minP.x, FALSE, 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;
- printCenterLines = printCenterLine;
- 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;
}
@@ -1256,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;
+ }
}
}
@@ -1296,7 +1363,7 @@ static void DoResetGrid( void )
static void PrintGridRotate( void * pangle )
{
- ANGLE_T angle = (ANGLE_T)(long)pangle;
+ ANGLE_T angle = (ANGLE_T)VP2L(pangle);
currPrintGrid.orig = cmdMenuPos;
currPrintGrid.angle += angle/1000;
newPrintGrid = currPrintGrid;
@@ -1313,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();
@@ -1325,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 == (void*)1 )
+ if ( inx < 0 ) { return; }
+ if ( pg->paramPtr[inx].context == I2VP(1) ) {
DoPrintScale();
- else if ( pg->paramPtr[inx].context == (void*)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:
*
@@ -1356,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") );
@@ -1454,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;
@@ -1474,6 +1559,9 @@ LOG( log_print, 2, ( "Page size = %0.3f %0.3f\n", currPrintGrid.size.x, currPrin
}
}
+
+#include "bitmaps/doc-print.xpm3"
+
EXPORT wIndex_t InitCmdPrint( wMenu_p menu )
{
ParamRegister( &printPG );
@@ -1482,8 +1570,10 @@ EXPORT wIndex_t InitCmdPrint( wMenu_p menu )
RegisterChangeNotification( PrintChange );
printGridPopupM = MenuRegister( "Print Grid Rotate" );
AddRotateMenu( printGridPopupM, PrintGridRotate );
- ParamRegister( &printMarginPG );
- return InitCommand( menu, CmdPrint, N_("Print..."), NULL, LEVEL0, IC_LCLICK|IC_POPUP3|IC_CMDMENU, ACCL_PRINT );
+ ParamRegister( &customMarginPG );
+ return AddMenuButton( menu, CmdPrint, "cmdPrint", N_("Print..."),
+ wIconCreatePixMap(doc_print_xpm3[iconSize]), LEVEL0,
+ IC_LCLICK|IC_POPUP3|IC_CMDMENU, ACCL_PRINT, NULL );
}
/*****************************************************************************
@@ -1495,11 +1585,7 @@ EXPORT wIndex_t InitCmdPrint( wMenu_p menu )
wDrawable_t printD, mainD;
-void wDrawHilight( void * d, coOrd orig, coOrd size )
-{
- lprintf( "wDrawHilight (%0.3f %0.3f) (%0.3f %0.3f)\n", orig.x, orig.y, size.x, size.y );
-}
-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 );
}
@@ -1526,7 +1612,7 @@ void DumpMap( char * f, ANGLE_T a, ANGLE_T b )
} else {
lprintf( " ");
}
- lprintf( "\n");
+ lprintf( "\n");
}
}
@@ -1538,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[] )
{
@@ -1563,7 +1649,7 @@ main( INT_T argc, char * argv[] )
mapD.size.x = 4*12;
mapD.size.y = 3*12;
printD.scale = 1.0;
- for (i=0; i<(sizeof cmds)/(sizeof cmds[0]); i++) {
+ for (i=0; i<COUNT( cmds ); i++) {
switch (cmds[i].cmd) {
case C_START:
CmdPrint( cmds[i].cmd );
diff --git a/app/bin/cprofile.c b/app/bin/cprofile.c
index 4f375ed..ba51383 100644
--- a/app/bin/cprofile.c
+++ b/app/bin/cprofile.c
@@ -17,21 +17,17 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-#include <stdbool.h>
-
#include "custom.h"
#include "cselect.h"
#include "cundo.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "shrtpath.h"
#include "track.h"
+#include "common-ui.h"
/*
@@ -106,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)
@@ -117,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;
@@ -129,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;
/**
@@ -165,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);
+ }
}
/**
@@ -185,10 +178,10 @@ CreateCopyProfileElements()
static void
DestroyCopyOfProfileElements()
{
- if (copyOfprofElem) {
- MyFree(copyOfprofElem);
- copyOfprofElem = NULL;
- }
+ if (copyOfprofElem) {
+ MyFree(copyOfprofElem);
+ copyOfprofElem = NULL;
+ }
}
@@ -202,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, 1, 0);
- }
-
- 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) {
@@ -326,269 +319,270 @@ 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;
+ }
}
-static void ProfilePix2CoOrd(drawCmd_p, wPos_t, wPos_t, coOrd *);
-static void ProfileCoOrd2Pix(drawCmd_p, coOrd, wPos_t*, wPos_t*);
+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,
- wPos_t xx,
- wPos_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,
- wPos_t *xx,
- wPos_t *yy)
+ drawCmd_p d,
+ coOrd pos,
+ wDrawPix_t *xx,
+ wDrawPix_t *yy)
{
- wPos_t x, y;
- x = (wPos_t)((((pos.x*prof.scaleX)/d->scale-d->orig.x)*d->dpi+0.5));
- y = (wPos_t)(((((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(void)
+static void RedrawProfileW( wDraw_p d, void * context, wWinPix_t x,
+ wWinPix_t y )
{
- wPos_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
};
/**
@@ -604,86 +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));
- DrawLine(&printProfileD, p[0], p[1], 0, drawColorBlack);
- DrawLine(&printProfileD, p[1], p[2], 0, drawColorBlack);
- DrawLine(&printProfileD, p[2], p[3], 0, drawColorBlack);
- DrawLine(&printProfileD, p[3], p[0], 0, drawColorBlack);
-
- 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();
}
/**************************************************************************
@@ -697,28 +688,28 @@ static wWin_p profileW;
static BOOL_T profileUndo = FALSE;
static void DoProfileChange(void *junk);
static void DoProfileReset(void *junk);
-static void DoProfileDone(void *);
-static void DoProfileClear(void *);
-static void DoProfilePrint(void *);
-static void DoProfileChangeMode(void *);
+static void DoProfileDone(void * junk);
+static void DoProfileClear(void * junk);
+static void DoProfilePrint(void * junk);
+static void DoProfileChangeMode(void * junk);
static void SelProfileW(wIndex_t, coOrd);
static void CloseProfileWindow(paramGroup_p pg, int event, void *data);
-static paramDrawData_t profileDrawData = { 300, 150, (wDrawRedrawCallBack_p)RedrawProfileW, SelProfileW, &screenProfileD };
+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, (void*)300 },
+ { PD_MESSAGE, NULL, NULL, PDO_DLGIGNOREX, I2VP(300) },
#define I_CHANGEBUTTON 2
- { PD_BUTTON, (void*)DoProfileChange, "change", PDO_DLGCMDBUTTON, NULL, N_("Change") },
+ { PD_BUTTON, DoProfileChange, "change", PDO_DLGCMDBUTTON, NULL, N_("Change") },
#define I_RESETBUTTON 3
- { PD_BUTTON, (void*)DoProfileReset, "reset", PDO_DLGCMDBUTTON, NULL, N_("Reset") },
+ { PD_BUTTON, DoProfileReset, "reset", PDO_DLGCMDBUTTON, NULL, N_("Reset") },
#define I_CLEARBUTTON 4
- { PD_BUTTON, (void*)DoProfileClear, "clear", PDO_DLGCMDBUTTON, NULL, N_("Clear") },
+ { PD_BUTTON, DoProfileClear, "clear", PDO_DLGCMDBUTTON, NULL, N_("Clear") },
#define I_PRINTBUTTON 5
- { PD_BUTTON, (void*)DoProfilePrint, "print", 0, NULL, N_("Print") }
+ { PD_BUTTON, DoProfilePrint, "print", 0, NULL, N_("Print") }
};
-static paramGroup_t profilePG = { "profile", 0, profilePLs, sizeof profilePLs/sizeof profilePLs[0] };
+static paramGroup_t profilePG = { "profile", 0, profilePLs, COUNT( profilePLs ) };
#define CHANGEBUTTON ((wButton_p)profilePLs[I_CHANGEBUTTON].control)
#define RESETBUTTON ((wButton_p)profilePLs[I_RESETBUTTON].control)
@@ -726,94 +717,97 @@ static paramGroup_t profilePG = { "profile", 0, profilePLs, sizeof profilePLs/si
#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_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();
- 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();
+ 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();
- 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 {
+ }*/
}
/**
@@ -826,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()
{
@@ -843,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);
}
}
}
@@ -864,8 +858,8 @@ DoProfileReset(void *junk)
UndoStart(_("Profile Command"), "Profile");
}
ResetChanges();
- RedrawProfileW();
- TempRedraw();
+ RedrawProfileW( screenProfileD.d, NULL, 0, 0 );
+ TempRedraw();
}
/**
@@ -878,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();
+ 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"));
+ }
}
/**************************************************************************
@@ -916,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));
}
@@ -932,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);
}
@@ -1048,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();
- 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(wBool_t set, void* pcmd)
+static void ProfileSubCommand(void* pcmd)
{
- long cmd = (long)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();
- 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();
- 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();
- }
+ 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), LEVEL0_50, IC_LCLICK|IC_CMDMENU|IC_POPUP3,
- ACCL_PROFILE, NULL);
- profilePopupM = MenuRegister("Profile Mode");
- profilePopupToggles[0] = wMenuToggleCreate(profilePopupM, "", _("Define"), 0,
- FALSE, ProfileSubCommand, (void*)0);
- profilePopupToggles[1] = wMenuToggleCreate(profilePopupM, "", _("Ignore"), 0,
- FALSE, ProfileSubCommand, (void*)1);
- profilePopupToggles[2] = wMenuToggleCreate(profilePopupM, "", _("None"), 0,
- FALSE, ProfileSubCommand, (void*)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 7f27864..af6642e 100644
--- a/app/bin/cpull.c
+++ b/app/bin/cpull.c
@@ -17,19 +17,16 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-
#include "cselect.h"
#include "compound.h"
#include "cundo.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "track.h"
-#include "utility.h"
+#include "draw.h"
+#include "common-ui.h"
int debugPull = 0;
@@ -40,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;
@@ -70,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;
@@ -84,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 );
@@ -102,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;
}
@@ -122,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;
@@ -143,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;
@@ -159,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;
@@ -203,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 );
@@ -229,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;
}
@@ -245,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;
@@ -264,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;
@@ -295,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;
}
@@ -325,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;
@@ -371,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 );
}
@@ -390,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;
}
@@ -425,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 );
@@ -441,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;
@@ -452,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)) {
@@ -463,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 );
@@ -482,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 ) {
@@ -548,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;
@@ -562,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) {
@@ -574,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 );
@@ -587,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;
@@ -609,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;
@@ -617,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;
@@ -627,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;
@@ -636,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 ) ) {
@@ -661,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;
@@ -706,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;
@@ -731,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;
@@ -772,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") );
}
@@ -790,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);
@@ -803,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;
@@ -816,12 +856,16 @@ static STATUS_T CmdPull(
return C_CONTINUE;
case C_REDRAW:
- 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);
+ DrawHighlightBoxes(FALSE,FALSE,NULL);
+ HighlightSelectedTracks(NULL, TRUE, TRUE);
+ 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:
@@ -856,11 +900,13 @@ static STATUS_T CmdPull(
-#include "bitmaps/pull.xpm"
+#include "bitmaps/connect.xpm3"
wMenuPush_p pullConnectMultiple;
-void pullMenuEnter(int key) {
+void pullMenuEnter( void * keyVP )
+{
+ int key = (int)VP2L(keyVP);
int action;
action = C_TEXT;
action |= key<<8;
@@ -869,7 +915,11 @@ void pullMenuEnter(int key) {
void InitCmdPull( wMenu_p menu )
{
- AddMenuButton( menu, CmdPull, "cmdConnect", _("Connect Two Tracks"), wIconCreatePixMap(pull_xpm), 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, (wMenuCallBack_p)pullMenuEnter, (void*) '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 d3f2926..1ab65b2 100644
--- a/app/bin/cruler.c
+++ b/app/bin/cruler.c
@@ -17,15 +17,231 @@
*
* 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"
+#include "cselect.h"
#include "fileio.h"
-#include "i18n.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "misc.h"
+
+#define AN_OFF (0)
+#define AN_FIRST (1)
+#define AN_SECOND (2)
+#define AN_ON (3)
+
+
+static struct {
+ 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)
+{
+ char msg[512];
+ trkSeg_t seg;
+ if ((An.state != AN_OFF) && !IsClose(FindDistance(p0,p1))) {
+ seg.type = SEG_STRLIN;
+ seg.lineWidth = 0;
+ seg.color = wDrawColorBlack;
+ seg.u.l.pos[0] = p0;
+ seg.u.l.pos[1] = p1;
+ DrawSegs(d,zero,0.0,&seg,1,trackGauge,color);
+
+ if (!(IsClose(FindDistance(p0,p2)))) {
+ seg.type = SEG_STRLIN;
+ seg.lineWidth = 0;
+ seg.color = wDrawColorBlack;
+ seg.u.l.pos[0] = p0;
+ seg.u.l.pos[1] = p2;
+ DrawSegs(d,zero,0.0,&seg,1,trackGauge,color);
+
+ DIST_T r = min(FindDistance(p0,p2),FindDistance(p0,p1))/2;
+ ANGLE_T a = DifferenceBetweenAngles(FindAngle(p0,p1),FindAngle(p0,p2));
+ ANGLE_T a0;
+
+ if (a>=0) {
+ a0 = FindAngle(p0,p1);
+ } 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;
+ seg.u.c.radius = r;
+ seg.u.c.a0 = a0;
+ seg.u.c.a1 = a1;
+ DrawSegs(d,zero,0.0,&seg,1,trackGauge,color);
+
+ coOrd p;
+ Translate(&p, p0, a1/2+a0, r );
+ seg.type = SEG_TEXT;
+ seg.u.t.angle = 0.0;
+ sprintf(msg,"RA: %0.3f",a1);
+ seg.u.t.string = msg;
+ seg.u.t.pos = p;
+ seg.u.t.fontSize = 10.0*d->scale;
+ seg.u.t.fontP = NULL;
+ seg.u.t.boxed = FALSE;
+ DrawSegs(d,zero,0.0,&seg,1,trackGauge,color);
+ }
+ }
+
+}
+
+
+static STATUS_T CmdAngle( wAction_t action, coOrd pos )
+{
+ switch (action) {
+
+ case C_START:
+ switch (An.state) {
+ case AN_OFF:
+ An.state = AN_ON;
+ break;
+ case AN_ON:
+ An.state = AN_OFF;
+ case AN_FIRST:
+ case AN_SECOND:
+ An.state = AN_OFF;
+ break;
+ }
+ return C_CONTINUE;
+
+ case C_DOWN:
+ switch (An.state) {
+ case AN_OFF:
+ case AN_ON:
+ An.pos0 = An.pos1 = An.pos2 = pos;
+ An.state = AN_FIRST;
+ InfoMessage( "Drag out base line" );
+ break;
+ case AN_FIRST:
+ An.pos2 = pos;
+ An.state = AN_SECOND;
+ InfoMessage( "Drag Angle" );
+ break;
+ }
+ return C_CONTINUE;
+
+ case C_MOVE:
+ //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); }
+ DIST_T l = FindDistance(An.pos0, pos);
+ if (!IsClose(l)) {
+ ANGLE_T angle2 = NormalizeAngle(FindAngle(An.pos0, pos)-line_angle);
+ int oct = (int)((angle2 + 22.5) / 45.0);
+ l = fabs(l*cos(D2R(angle2-oct*45)));
+ Translate( &pos, An.pos0, oct*45.0+line_angle, l );
+ }
+ }
+ switch (An.state) {
+ case AN_FIRST:
+ An.pos1 = An.pos2 = pos;
+ break;
+ case AN_SECOND:
+ An.pos2 = pos;
+ break;
+ default:;
+ }
+ 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))));
+ return C_CONTINUE;
+
+ case C_UP:
+ if (An.state == AN_SECOND) { return C_TERMINATE; }
+ return C_CONTINUE;
+
+ case C_REDRAW:
+ DrawHighlightBoxes(FALSE,FALSE,NULL);
+ HighlightSelectedTracks(NULL, TRUE, TRUE);
+ if (An.state != AN_OFF) {
+ if (!IsClose(FindDistance(An.pos1,An.pos2))) {
+ DrawAngle( &tempD, An.pos0, An.pos1, An.pos2, wDrawColorBlack );
+ }
+ }
+ return C_CONTINUE;
+
+ case C_CANCEL:
+ return C_TERMINATE;
+
+ }
+ return C_CONTINUE;
+
+}
+
+STATUS_T ModifyProtractor(
+ wAction_t action,
+ coOrd pos )
+{
+ switch (action&0xFF) {
+ case C_DOWN:
+ An.modifyingEnd = -1;
+ An.isClose = FALSE;
+ 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 {
+ return C_ERROR;
+ }
+ break;
+ case C_MOVE:
+ if ( An.modifyingEnd == 0 ) {
+ An.pos0 = pos;
+ } else if (An.modifyingEnd == 1) {
+ An.pos1 = pos;
+ } 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))));
+ return C_CONTINUE;
+ case C_UP:
+ return C_CONTINUE;
+ case C_REDRAW:
+ 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 )) ) {
+ An.isClose = TRUE;
+ } else {
+ An.isClose = FALSE;
+ }
+ break;
+ default:
+ return C_ERROR;
+ }
+ return C_CONTINUE;
+}
+
+
/*****************************************************************************
@@ -41,18 +257,30 @@
#define DR_ON (1)
static struct {
- STATE_T state;
- coOrd pos0;
- coOrd pos1;
- 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 (Dr.state == DR_ON)
- DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE, wDrawColorBlack );
- if (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 (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);
+ }
+
}
static STATUS_T CmdRuler( wAction_t action, coOrd pos )
@@ -60,6 +288,7 @@ static STATUS_T CmdRuler( wAction_t action, coOrd pos )
switch (action) {
case C_START:
+ Dr.isClose = FALSE;
switch (Dr.state) {
case DR_OFF:
Dr.state = DR_ON;
@@ -87,47 +316,64 @@ static STATUS_T CmdRuler( wAction_t action, coOrd pos )
return C_TERMINATE;
case C_REDRAW:
+ DrawHighlightBoxes(FALSE,FALSE,NULL);
+ HighlightSelectedTracks(NULL, TRUE, TRUE);
if (Dr.state == DR_ON) {
- DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE, wDrawColorBlack );
+ DrawRuler( &tempD, Dr.pos0, Dr.pos1, 0.0, TRUE, TRUE,
+ Dr.isClose?wDrawColorBlue:wDrawColorBlack );
}
return C_CONTINUE;
case C_CANCEL:
return C_TERMINATE;
-
}
+
return C_CONTINUE;
}
+
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 ( FindDistance( pos, Dr.pos0 ) < mainD.scale*0.25 ) {
+ }
+ if ( IsClose(FindDistance( pos, Dr.pos0 ))) {
Dr.modifyingEnd = 0;
- } else if ( FindDistance( pos, Dr.pos1 ) < mainD.scale*0.25 ) {
+ } else if ( IsClose(FindDistance( pos, Dr.pos1 ))) {
Dr.modifyingEnd = 1;
} else {
return C_ERROR;
}
+ break;
case C_MOVE:
if ( Dr.modifyingEnd == 0 ) {
Dr.pos0 = pos;
- } else {
+ } else if ( Dr.modifyingEnd == 1) {
Dr.pos1 = pos;
- }
+ } 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, 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 ))) {
+ Dr.isClose = TRUE;
+ An.isClose = FALSE;
+ } else {
+ Dr.isClose = FALSE;
+ ModifyProtractor(wActionMove,pos);
+ }
break;
default:
return C_ERROR;
@@ -136,9 +382,17 @@ STATUS_T ModifyRuler(
}
-#include "bitmaps/ruler.xpm"
+#include "bitmaps/ruler.xpm3"
+#include "bitmaps/protractor.xpm3"
void InitCmdRuler( wMenu_p menu )
{
- AddMenuButton( menu, CmdRuler, "cmdRuler", _("Ruler"), wIconCreatePixMap(ruler_xpm), LEVEL0, IC_STICKY|IC_NORESTART, ACCL_RULER, NULL );
+ ButtonGroupBegin( _("Measurement"), "cmdMeasureSetCmd", _("Measurement") );
+ 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 4e4e8eb..a1158bc 100644
--- a/app/bin/cselect.c
+++ b/app/bin/cselect.c
@@ -17,32 +17,28 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-#include <string.h>
-
+#include "common.h"
#include "draw.h"
#include "ccurve.h"
#include "tcornu.h"
#include "tbezier.h"
#include "track.h"
-#define PRIVATE_EXTRADATA
#include "compound.h"
#include "cselect.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "cjoin.h"
#include "draw.h"
#include "misc.h"
-#include "trackx.h"
+#include "common-ui.h"
+#include "ctrain.h"
#include "bitmaps/bmendpt.xbm"
@@ -56,12 +52,15 @@
EXPORT wIndex_t selectCmdInx;
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;
static BOOL_T move0B;
-struct extraData { char junk[2000]; };
static wDrawBitMap_p endpt_bm;
static wDrawBitMap_p angle_bm[4];
@@ -70,8 +69,8 @@ track_p IsInsideABox(coOrd pos);
static track_p moveDescTrk;
static coOrd moveDescPos;
-int incrementalDrawLimit = 20;
- static int microCount = 0;
+int incrementalDrawLimit = 0;
+static int microCount = 0;
static dynArr_t tlist_da;
@@ -80,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;
@@ -106,54 +107,68 @@ 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;
+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).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/16;
+ anchors(i).color = wDrawColorAqua;
+ 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;
@@ -162,24 +177,26 @@ 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;
anchors(i).u.c.radius = d;
anchors(i).color = wDrawColorPowderedBlue;
+ wSetCursor(mainD.d,wCursorNone);
}
-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;
@@ -188,20 +205,22 @@ 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;
}
+ 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;
@@ -212,22 +231,28 @@ 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;
anchors(i).u.c.radius = d;
anchors(i).color = wDrawColorPowderedBlue;
+ 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);
@@ -238,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;
}
@@ -249,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 )
{
@@ -268,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 );
}
}
}
@@ -290,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;
@@ -306,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;
@@ -324,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 );
@@ -382,17 +412,21 @@ EXPORT void SetAllTrackSelect( BOOL_T select )
selectedTrackCount = 0;
trk = NULL;
while ( TrackIterate( &trk ) ) {
- if ((!select) || GetLayerVisible( 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 );
+ }
+ DrawTrackAndEndPts( trk, wDrawColorBlack );
}
}
}
@@ -405,56 +439,58 @@ EXPORT void SetAllTrackSelect( BOOL_T select )
}
}
-/* Invert selected state of all visible non-module objects.
+/* Invert selected state of all visible non-module, non-frozen objects.
*
* \param none
* \return none
*/
-
-EXPORT void InvertTrackSelect( void *ptr )
+
+EXPORT void InvertTrackSelect( void * unused )
{
track_p trk;
trk = NULL;
while ( TrackIterate( &trk ) ) {
if (GetLayerVisible( GetTrkLayer( trk )) &&
- !GetLayerModule(GetTrkLayer( trk ))) {
+ !GetLayerModule(GetTrkLayer( trk )) && !GetLayerFrozen(GetTrkLayer( trk )) ) {
SelectOneTrack( trk, GetTrkSelected(trk)==0 );
}
}
-
+
RedrawSelectedTracksBoundary();
SelectedTrackCountChange();
MainRedraw(); // InvertTrackSelect
}
-/* Select orphaned (ie single) track pieces.
+/* Select orphaned (ie single) track pieces (ignore frozen and module)
*
* \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)))) {
+ 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();
@@ -463,82 +499,97 @@ 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();
- DrawTrackAndEndPts( trk, wDrawColorBlack );
+ 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();
}
-static void HighlightSelectedTracks(
- track_p trk_ignore, BOOL_T box, BOOL_T invert )
+EXPORT void HighlightSelectedTracks(
+ 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 (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 );
+ }
+ }
}
}
+/*
+ * Select all tracks connected walking the tree until hitting ends or already selected tracks
+ *
+ * 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 (inx!=0 &&
- GetTrkSelected(trk)) {
- if (display_only)
- DrawTrack(trk,&tempD,wDrawColorPreviewSelected );
- continue;
- } else if (GetTrkSelected(trk)) {
- if (display_only)
- DrawTrack(trk,&tempD,wDrawColorPreviewUnselected);
- continue;
+ if (!GetLayerFrozen(GetTrkLayer(trk))) {
+ if (inx!=0 &&
+ GetTrkSelected(trk)) {
+ if (display_only) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewSelected );
+ }
+ continue;
+ } else if (GetTrkSelected(trk)) {
+ if (display_only) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewUnselected);
+ }
+ continue;
+ }
}
for (ep=0; ep<GetTrkEndPtCnt(trk); ep++) {
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) DrawTrack(trk,&tempD,wDrawColorPreviewSelected );
+ if (display_only && !GetLayerFrozen(GetTrkLayer(trk))) { DrawTrack(trk,&tempD,wDrawColorPreviewSelected ); }
else if (!GetTrkSelected(trk)) {
if (GetLayerModule(GetTrkLayer(trk))) {
continue;
+ } else if (GetLayerFrozen(GetTrkLayer(trk))) {
+ continue;
} else {
SelectOneTrack( trk, TRUE );
InfoCount( inx+1 );
@@ -554,26 +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)
+{
+ track_p trk;
+ 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;
@@ -606,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;
@@ -619,7 +692,7 @@ EXPORT void SelectTrackWidth( void* width )
if (GetTrkSelected(trk)) {
DrawTrackAndEndPts( trk, wDrawColorWhite );
UndoModify( trk );
- SetTrkWidth( trk, (int)(long)width );
+ SetTrkWidth( trk, (int)VP2L(width) );
DrawTrackAndEndPts( trk, wDrawColorBlack );
}
}
@@ -627,11 +700,13 @@ EXPORT void SelectTrackWidth( void* width )
UndoEnd();
}
-EXPORT void SelectLineType( void* width )
+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;
@@ -642,12 +717,12 @@ EXPORT void SelectLineType( void* width )
while ( TrackIterate( &trk ) ) {
if (GetTrkSelected(trk)) {
UndoModify( trk );
- if (QueryTrack(trk, Q_CAN_MODIFY_CONTROL_POINTS))
- SetBezierLineType(trk, (int) (long) width);
- else if (QueryTrack(trk, Q_IS_DRAW))
- SetLineType( trk, (int)(long)width );
- else if (QueryTrack(trk, Q_IS_STRUCTURE)) {
- SetCompoundLineType(trk, (int)(long)width);
+ if (QueryTrack(trk, Q_CAN_MODIFY_CONTROL_POINTS)) {
+ SetBezierLineType(trk, width);
+ } else if (QueryTrack(trk, Q_IS_DRAW)) {
+ SetLineType( trk, width );
+ } else if (QueryTrack(trk, Q_IS_STRUCTURE)) {
+ SetCompoundLineType(trk, width);
}
}
}
@@ -657,15 +732,28 @@ EXPORT void SelectLineType( void* width )
static BOOL_T doingDouble;
-EXPORT void SelectDelete( void )
+EXPORT int SelectDelete( void )
{
- if (GetCurrentCommand() != selectCmdInx) return;
- if (doingDouble) return;
+ if (GetCurrentCommand() != selectCmdInx ) {
+ if (GetCurrentCommand() != modifyCmdInx ) {
+ InfoMessage(_("Delete only works in Select Mode"));
+ wBeep();
+ return -1;
+ }
+ }
- if (SelectedTracksAreFrozen())
- return;
+ if (doingDouble || (GetCurrentCommand() == modifyCmdInx)) { return 1; }
+
+ if (SelectedTracksAreFrozen()) {
+ return 0;
+ }
if (selectedTrackCount>0) {
- UndoStart( _("Delete Tracks"), "delete" );
+ 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
+ UndoStarted = TRUE;
+ UndoStart( _("Delete Tracks"), "delete" );
+ }
wDrawDelayUpdate( mainD.d, TRUE );
wDrawDelayUpdate( mapD.d, TRUE );
DoSelectedTracks( DeleteTrack );
@@ -674,15 +762,28 @@ EXPORT void SelectDelete( void )
wDrawDelayUpdate( mapD.d, FALSE );
selectedTrackCount = 0;
SelectedTrackCountChange();
- UndoEnd();
+ if (UndoStarted) {
+ UndoEnd();
+ }
} else {
ErrorMessage( MSG_NO_SELECTED_TRK );
}
+ return 0;
+}
+
+/*
+ * 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 )
+{
+ if(SelectDelete() == 1) {
+ CmdModify((C_TEXT+(int)(127<<8)),zero);
+ }
}
BOOL_T flipHiddenDoSelectRecount;
-static BOOL_T FlipHidden( track_p trk, BOOL_T junk )
+static BOOL_T FlipHidden( track_p trk, BOOL_T unused )
{
EPINX_T i;
track_p trk2;
@@ -694,13 +795,15 @@ static BOOL_T FlipHidden( track_p trk, BOOL_T junk )
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 );*/
@@ -713,7 +816,7 @@ static BOOL_T FlipHidden( track_p trk, BOOL_T junk )
return TRUE;
}
-static BOOL_T FlipBridge( track_p trk, BOOL_T junk )
+static BOOL_T FlipBridge( track_p trk, BOOL_T unused )
{
UndoModify( trk );
if (GetTrkBridge(trk)) {
@@ -725,7 +828,19 @@ static BOOL_T FlipBridge( track_p trk, BOOL_T junk )
return TRUE;
}
-static BOOL_T FlipTies( track_p trk, BOOL_T junk )
+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 );
if (GetTrkNoTies(trk)) {
@@ -737,10 +852,11 @@ static BOOL_T FlipTies( track_p trk, BOOL_T junk )
return TRUE;
}
-EXPORT void SelectTunnel( void )
+EXPORT void SelectTunnel( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
flipHiddenDoSelectRecount = FALSE;
UndoStart( _("Hide Tracks (Tunnel)"), "tunnel" );
@@ -751,14 +867,16 @@ EXPORT void SelectTunnel( void )
} else {
ErrorMessage( MSG_NO_SELECTED_TRK );
}
- if ( flipHiddenDoSelectRecount )
+ if ( flipHiddenDoSelectRecount ) {
SelectRecount();
+ }
}
-EXPORT void SelectBridge( void )
+EXPORT void SelectBridge( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
flipHiddenDoSelectRecount = FALSE;
UndoStart( _("Bridge Tracks "), "bridge" );
@@ -772,10 +890,29 @@ EXPORT void SelectBridge( void )
MainRedraw(); // SelectBridge
}
-EXPORT void SelectTies( void )
+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" );
@@ -803,40 +940,54 @@ void SelectRecount( void )
}
-static BOOL_T SetLayer( track_p trk, BOOL_T junk )
+static BOOL_T SetLayer( track_p trk, BOOL_T unused )
{
UndoModify( trk );
SetTrkLayer( trk, curLayer );
return TRUE;
}
-EXPORT void MoveSelectedTracksToCurrentLayer( void )
+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 )
+EXPORT void SelectCurrentLayer( void * unused )
{
track_p trk;
trk = NULL;
+ if (GetLayerFrozen(curLayer)) { return; }
while ( TrackIterate( &trk ) ) {
- if ((!GetTrkSelected(trk)) && GetTrkLayer(trk) == curLayer ) {
+ if ((!GetTrkSelected(trk)) && GetTrkLayer(trk) == curLayer) {
SelectOneTrack( trk, TRUE );
}
}
RedrawSelectedTracksBoundary();
}
+EXPORT void DeselectLayer( unsigned int layer )
+{
+ track_p trk;
+ trk = NULL;
+ while ( TrackIterate( &trk ) ) {
+ if ((GetTrkSelected(trk)) && GetTrkLayer(trk) == layer) {
+ SelectOneTrack( trk, FALSE );
+ }
+ }
+ RedrawSelectedTracksBoundary();
+}
+
-static BOOL_T ClearElevation( track_p trk, BOOL_T junk )
+static BOOL_T ClearElevation( track_p trk, BOOL_T unused )
{
EPINX_T ep;
for ( ep=0; ep<GetTrkEndPtCnt(trk); ep++ ) {
@@ -850,10 +1001,11 @@ static BOOL_T ClearElevation( track_p trk, BOOL_T junk )
return TRUE;
}
-EXPORT void ClearElevations( void )
+EXPORT void ClearElevations( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
UndoStart( _("Clear Elevations"), "clear elevations" );
DoSelectedTracks( ClearElevation );
@@ -866,7 +1018,7 @@ EXPORT void ClearElevations( void )
static DIST_T elevDelta;
-static BOOL_T AddElevation( track_p trk, BOOL_T junk )
+static BOOL_T AddElevation( track_p trk, BOOL_T unused )
{
track_p trk1;
EPINX_T ep, ep1;
@@ -877,8 +1029,9 @@ static BOOL_T AddElevation( track_p trk, BOOL_T junk )
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)) {
@@ -895,8 +1048,9 @@ static BOOL_T AddElevation( track_p trk, BOOL_T junk )
EXPORT void AddElevations( DIST_T delta )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
elevDelta = delta;
UndoStart( _("Add Elevations"), "add elevations" );
@@ -909,10 +1063,11 @@ EXPORT void AddElevations( DIST_T delta )
}
-EXPORT void DoRefreshCompound( void )
+EXPORT void DoRefreshCompound( void * unused )
{
- if (SelectedTracksAreFrozen())
+ if (SelectedTracksAreFrozen()) {
return;
+ }
if (selectedTrackCount>0) {
UndoStart( _("Refresh Compound"), "refresh compound" );
DoSelectedTracks( RefreshCompound );
@@ -926,7 +1081,8 @@ EXPORT void DoRefreshCompound( void )
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;
@@ -934,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 );
@@ -943,247 +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, (void*)100, N_("From:"),0, 0, sizeof(rescaleFromScale)},
-#define I_RESCALE_FROM_GAUGE (2)
- { PD_STRING, rescaleFromGauge, "fromG", PDO_NOPREF|PDO_DLGHORZ | PDO_STRINGLIMITLENGTH, (void*)100, " / ", 0, 0, sizeof(rescaleFromGauge)},
-#define I_RESCALE_TO_SCALE (3)
- { PD_DROPLIST, &rescaleToScaleInx, "toS", PDO_NOPREF|PDO_LISTINDEX, (void *)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, sizeof rescalePLs/sizeof rescalePLs[0] };
-
-
-static long getboundsCount;
-static coOrd getboundsLo, getboundsHi;
-
-static BOOL_T GetboundsDoIt( track_p trk, BOOL_T junk )
-{
- 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 junk )
-{
- 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 * junk )
-{
- 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 );
- 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 junk
- * \return TRUE;
- */
-
-static BOOL_T SelectedScaleGauge( track_p trk, BOOL_T junk )
-{
- 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 )
-{
- 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 )
{
@@ -1195,33 +1111,81 @@ 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);
- DrawTrack( trk, d, color );
- 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 junk )
+ 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)
+{
+
+ 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++) {
+ DYNARR_N(track_p,tlist_da,j) = DYNARR_N(track_p,tlist_da,j+1);
+ }
+ tlist_da.cnt--;
+ return TRUE;
+ }
+ }
+ 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
+};
@@ -1246,32 +1210,50 @@ 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 );*/
}
-static void AddEndCornus() {
- for (int i=0;i<tlist_da.cnt;i++) {
+static dynArr_t auto_select_da;
+
+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;
+ DYNARR_APPEND(track_p,auto_select_da,1);
+ DYNARR_LAST(track_p,auto_select_da) = tc;
}
}
}
}
+static void RemoveEndCornus()
+{
+ track_p tc;
+ for (int i=0; i<auto_select_da.cnt; i++) {
+ tc = DYNARR_N(track_p,auto_select_da,i);
+ SelectOneTrack( tc, FALSE );
+ RemoveSelectedTrack(tc);
+ }
+ DYNARR_RESET(track_p,auto_select_da);
+}
+
static void GetMovedTracks( BOOL_T undraw )
{
@@ -1320,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();
@@ -1341,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, wDrawColorBlack );
+ DrawSegsDA( &tempD, NULL, moveOrig, moveAngle, &tempSegs_da, 0.0, selectedColor,
+ 0 );
for ( inx=0; inx<tlist_da.cnt; inx++ ) {
trk = Tlist(inx);
@@ -1355,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 );
@@ -1374,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), wDrawColorBlack, DTS_LEFT|DTS_RIGHT );
+ DrawSegsDA(&tempD, trk, zero, 0.0, &cornu_segs,
+ GetTrkGauge(trk), selectedColor, DTS_LEFT|DTS_RIGHT );
}
}
@@ -1389,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;
@@ -1413,141 +1398,173 @@ static void MoveTracks(
DrawSelectedTracksD( &mapD, wDrawColorWhite );
}
}
+ //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 );
+ }
+ }
+ }
+ //Now do the just Cornus - to reset to where the fixed parts ended up
for ( inx=0; inx<tlist_da.cnt; inx++ ) {
trk = Tlist(inx);
UndoModify( trk );
BOOL_T fixed_end;
fixed_end = FALSE;
- if (QueryTrack(trk, Q_IS_CORNU)) {
- for (int i=0;i<2;i++) {
- track_p te;
- if ((te = GetTrkEndTrk(trk,i)) && !GetTrkSelected(te)) {
- fixed_end = TRUE;
- }
+ 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 {
- if (QueryTrack(trk, Q_IS_CORNU)) { //Cornu will be at the end of selected set
- for (int i=0;i<2;i++) {
- if ((trk1 = GetTrkEndTrk(trk,i)) && GetTrkSelected(trk1)) {
- ep1 = GetEndPtConnectedToMe( trk1, trk );
- DisconnectTracks(trk,i,trk1,ep1);
- GetTrackParams(PARAMS_CORNU,trk1,GetTrkEndPos(trk1,ep1),&trackParms);
- if (trackParms.type == curveTypeStraight) {
- endRadius = 0;
- endCenter = zero;
- } else {
- endRadius = trackParms.arcR;
- endCenter = trackParms.arcP;
- }
- DrawTrack(trk,&mainD,wDrawColorWhite);
- DrawTrack(trk,&mapD,wDrawColorWhite);
- endAngle = NormalizeAngle(GetTrkEndAngle(trk1,ep1)+180);
- if (SetCornuEndPt(trk,i,GetTrkEndPos(trk1,ep1),endCenter,endAngle,endRadius)) {
- ConnectTracks(trk,i,trk1,ep1);
- DrawTrack(trk,&mainD,wDrawColorBlack);
- DrawTrack(trk,&mapD,wDrawColorBlack);
- } else {
- DeleteTrack(trk,TRUE);
- ErrorMessage(_("Cornu too tight - it was deleted"));
- DoRedraw(); // MoveTracks: Cornu/delete
- return;
- }
- } else if (!trk1) { //No end track
- DrawTrack(trk,&mainD,wDrawColorWhite);
- DrawTrack(trk,&mapD,wDrawColorWhite);
- GetTrackParams(PARAMS_CORNU,trk,GetTrkEndPos(trk,i),&trackParms);
- if (move) {
- coOrd end_pos, end_center;
- end_pos = trackParms.cornuEnd[i];
- end_pos.x += base.x;
- end_pos.y += base.y;
- 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]);
- }
- if (rotate) {
- coOrd end_pos, end_center;
- ANGLE_T end_angle;
- end_pos = trackParms.cornuEnd[i];
- end_center = trackParms.cornuCenter[i];
- Rotate(&end_pos, orig, angle);
- Rotate(&end_center, orig, angle);
- end_angle = NormalizeAngle( trackParms.cornuAngle[i] + angle );
- SetCornuEndPt(trk,i,end_pos,end_center,end_angle,trackParms.cornuRadius[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);
+ GetTrackParams(PARAMS_CORNU,trk1,GetTrkEndPos(trk1,ep1),&trackParms);
+ if (trackParms.type == curveTypeStraight) {
+ endRadius = 0;
+ endCenter = zero;
+ } else {
+ endRadius = trackParms.arcR;
+ endCenter = trackParms.arcP;
+ }
+ DrawTrack(trk,&mainD,wDrawColorWhite);
+ DrawTrack(trk,&mapD,wDrawColorWhite);
+ endAngle = NormalizeAngle(GetTrkEndAngle(trk1,ep1)+180);
+ if (SetCornuEndPt(trk,i,GetTrkEndPos(trk1,ep1),endCenter,endAngle,endRadius)) {
+ ConnectTracks(trk,i,trk1,ep1);
DrawTrack(trk,&mainD,wDrawColorBlack);
DrawTrack(trk,&mapD,wDrawColorBlack);
+ } else {
+ DeleteTrack(trk,TRUE);
+ ErrorMessage(_("Cornu too tight - it was deleted"));
+ DoRedraw(); // MoveTracks: Cornu/delete
+ continue;
+ }
+ } else if (!trk1) { //No end track
+ DrawTrack(trk,&mainD,wDrawColorWhite);
+ DrawTrack(trk,&mapD,wDrawColorWhite);
+ GetTrackParams(PARAMS_CORNU,trk,GetTrkEndPos(trk,i),&trackParms);
+ if (move) {
+ coOrd end_pos, end_center;
+ end_pos = trackParms.cornuEnd[i];
+ end_pos.x += base.x;
+ end_pos.y += base.y;
+ 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]);
}
+ if (rotate) {
+ coOrd end_pos, end_center;
+ ANGLE_T end_angle;
+ end_pos = trackParms.cornuEnd[i];
+ end_center = trackParms.cornuCenter[i];
+ Rotate(&end_pos, orig, angle);
+ Rotate(&end_center, orig, angle);
+ end_angle = NormalizeAngle( trackParms.cornuAngle[i] + angle );
+ SetCornuEndPt(trk,i,end_pos,end_center,end_angle,trackParms.cornuRadius[i]);
+ }
+ DrawTrack(trk,&mainD,wDrawColorBlack);
+ DrawTrack(trk,&mapD,wDrawColorBlack);
}
}
- }
+ }
InfoCount( inx );
}
+ RemoveEndCornus();
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 );
-}
-
-void FreeTempStrings() {
+ 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()
+{
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;
@@ -1557,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;
}
@@ -1571,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) {
@@ -1587,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;
@@ -1606,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) {
@@ -1621,32 +1640,32 @@ 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; }
}
}
- wPos_t margin = (wPos_t)(10.5*mainD.scale/mainD.dpi);
+ wDrawPix_t margin = (10.5*mainD.scale/mainD.dpi);
layer_hi.x +=margin;
layer_hi.y +=margin;
layer_lo.x -=margin;
layer_lo.y -=margin;
- wPos_t rect[4][2];
int type[4];
- coOrd top_left, bot_right;
- top_left.x = layer_lo.x; top_left.y = layer_hi.y;
- bot_right.x = layer_hi.x; bot_right.y = layer_lo.y;
type[0] = type[1] = type[2] = type[3] = 0;
- mainD.CoOrd2Pix(&mainD,layer_lo,&rect[0][0],&rect[0][1]);
- mainD.CoOrd2Pix(&mainD,top_left,&rect[1][0],&rect[1][1]);
- mainD.CoOrd2Pix(&mainD,layer_hi,&rect[2][0],&rect[2][1]);
- mainD.CoOrd2Pix(&mainD,bot_right,&rect[3][0],&rect[3][1]);
- wDrawPolygon(tempD.d,rect,(wPolyLine_e *)type,4,wDrawColorPowderedBlue,0,wDrawLineDash,wDrawOptTemp,0,0);
+ coOrd rect[4];
+ // r3 r2
+ // r0 r1
+ rect[0].x = rect[3].x = layer_lo.x;
+ rect[1].x = rect[2].x = layer_hi.x;
+ rect[0].y = rect[1].y = layer_lo.y;
+ rect[2].y = rect[3].y = layer_hi.y;
+ 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 );
@@ -1654,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;
}
}
}
@@ -1670,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;
@@ -1701,157 +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 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 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;
- if (SelectedTracksAreFrozen()) {
- return C_TERMINATE;
- }
- UndoStart( _("Move Tracks"), "move" );
- base = zero;
- orig = pos;
+ 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();
+ }
- 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;
- 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;
- 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((void*)0);
- }
- if ((action>>8) == 'e') {
- DoZoomExtents(0);
- }
- if ((action>>8) == '0' || (action>>8 == 'o')) {
- PanMenuEnter('o');
- }
+ 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 */
- 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 );
@@ -1860,27 +1896,30 @@ static STATUS_T CmdMove(
microCount = 0;
MainRedraw(); // Micro step move
}
+ RemoveEndCornus();
return C_CONTINUE;
- }
- break;
+ }
+ break;
- case C_FINISH:
- if (doingMove) {
- doingMove = FALSE;
- UndoEnd();
- }
- tlist_da.cnt = 0;
- break;
- case C_CONFIRM:
- case C_CANCEL:
- if (doingMove) {
- doingMove = FALSE;
- UndoUndo();
- }
- 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;
}
@@ -1889,8 +1928,9 @@ static STATUS_T CmdMove(
static int rotateAlignState = 0;
-static void RotateAlign( BOOL_T align )
+static void RotateAlign( void * alignVP )
{
+ BOOL_T align = (BOOL_T)VP2L(alignVP);
rotateAlignState = 0;
if (align) {
rotateAlignState = 1;
@@ -1901,8 +1941,8 @@ static void RotateAlign( BOOL_T align )
}
static STATUS_T CmdRotate(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static coOrd base;
static coOrd orig_base;
@@ -1924,295 +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" );
- 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/75.0)*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/75.00*mainD.scale)?FindDistance(orig,pos):60.0/75.00*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();
- 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((void*)0);
- }
- if ((action>>8) == 'e') {
- DoZoomExtents(0);
- }
- if ((action>>8) == '0' || (action>>8 == 'o')) {
- PanMenuEnter('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:
- 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 = mainD.scale*0.5;
- DrawLine( &tempD, base, orig, 0, wDrawColorBlue );
- if (drawnAngle) {
- DrawLine( &tempD, orig_base, orig, (wDrawWidth)width, wDrawColorBlue );
- ANGLE_T a = DifferenceBetweenAngles(FindAngle(orig, orig_base),FindAngle(orig, base));
-
- DIST_T dist = FindDistance(orig,base);
- if (dist>(60.0/75.0)*mainD.scale) dist = (60.0/75.0)*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;
- if ( SelectedTracksAreFrozen() )
+ DYNARR_RESET(track_p,auto_select_da);
+ if ( SelectedTracksAreFrozen() ) {
return;
+ }
wDrawDelayUpdate( mainD.d, TRUE );
GetMovedTracks(FALSE);
UndoStart( _("Move Tracks"), "Move Tracks" );
@@ -2220,11 +2297,73 @@ static void QuickMove( void* pos) {
wDrawDelayUpdate( mainD.d, FALSE );
}
+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);
+ } else {
+ if (!GetLayerVisible(GetTrkLayer(trk))) { FlipLayer(I2VP(GetTrkLayer(trk))); }
+ if (!GetTrkVisible(trk) && drawTunnel==0 ) { drawTunnel = 1; } //Force DRAW_TUNNEL_DASH
+ SelectOneTrack(trk,TRUE);
+ }
+ } else {
+ snprintf(message, STR_LONG_SIZE, "%s %d",_("Frozen Layer:"),GetTrkLayer(trk)+1);
+ trk = NULL;
+ }
+ } else {
+ snprintf(message, STR_LONG_SIZE, "%s",_("Not found"));
+ }
+ return trk;
+}
+
+EXPORT void SelectByIndex( void* string)
+{
+ char result[STR_LONG_SIZE] = "";
+ char * message;
+ SetAllTrackSelect(FALSE);
+ char * cp = (char *)string;
+ cp = strtok(cp,",");
+ BOOL_T single = TRUE;
+ track_p trk = NULL;
+ while (cp) {
+ long ti = strtol(cp,&cp,0);
+ if (ti>0) {
+ message = MyMalloc(STR_LONG_SIZE);
+ trk = SelectTrackByIndex(ti, message);
+ if (!trk || message[0]) {
+ size_t len = strlen(result);
+ snprintf(result+len,(sizeof(result) - len),"I:%ld %s", ti, message);
+ MyFree(message);
+ }
+ }
+ cp = strtok(NULL,",");
+ if (cp) { single = FALSE; }
+ }
+
+ DoZoomExtents(I2VP(1));
+ if (strlen(result)) {
+ InfoMessage(result);
+ } else if (single && trk) {
+ char msg[STR_SIZE];
+ DescribeTrack( trk, msg, sizeof msg );
+ InfoMessage( msg );
+ } else if (!single) {
+ InfoMessage(_("Multiple Selected"));
+ }
+}
+
static void QuickRotate( void* pangle )
{
- ANGLE_T angle = (ANGLE_T)(long)pangle;
- if ( SelectedTracksAreFrozen() )
+ ANGLE_T angle = (ANGLE_T)VP2L(pangle);
+ DYNARR_RESET(track_p,auto_select_da);
+ if ( SelectedTracksAreFrozen() ) {
return;
+ }
wDrawDelayUpdate( mainD.d, TRUE );
GetMovedTracks(FALSE);
//DrawSelectedTracksD( &mainD, wDrawColorWhite );
@@ -2236,242 +2375,353 @@ static void QuickRotate( void* pangle )
static wMenu_p moveDescM;
static wMenuToggle_p moveDescMI;
+static wMenuToggle_p moveDetailDescMI;
-static void ChangeDescFlag( wBool_t set, void * mode )
+static void ChangeDetailedFlag( void * mode )
+{
+ wDrawDelayUpdate( mainD.d, TRUE );
+ UndoStart( _("Toggle Detail"), "Modedetail( T%d )", GetTrkIndex(moveDescTrk) );
+ UndoModify( moveDescTrk );
+ UndrawNewTrack( moveDescTrk );
+ if ( ( GetTrkBits( moveDescTrk ) & TB_DETAILDESC ) == 0 ) {
+ ClrTrkBits( moveDescTrk, TB_HIDEDESC );
+ SetTrkBits( moveDescTrk, TB_DETAILDESC );
+ } else {
+ ClrTrkBits( moveDescTrk, TB_DETAILDESC );
+ }
+ DrawNewTrack( moveDescTrk );
+ wDrawDelayUpdate( mainD.d, FALSE );
+}
+
+static void ChangeDescFlag( void * mode )
{
wDrawDelayUpdate( mainD.d, TRUE );
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 );
}
-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 = 10000;
- 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 ( (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;
- }
+/*
+ * 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;
}
}
- if ( !QueryTrack( trk1, Q_HAS_DESC ) && (mode <0 || mode > 0) )
- 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;
- }
- }
- if ((trk != NULL && (trk == OnTrack(&pos, FALSE, FALSE))) ||
- IsClose(d) || IsClose(FindDistance( pos, cpos) )) { //Only when close to a label or the track - not anywhere on layout!
- if (ep_o) *ep_o = ep;
- if (mode_o) *mode_o = mode;
- if (hidden_o) *hidden_o = hidden;
- return trk;
- }
- else 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 track_p trk;
static EPINX_T ep;
static BOOL_T hidden;
static int mode;
BOOL_T bChanged;
- moveDescMode = (long)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) {
case C_START:
moveDescTrk = NULL;
moveDescPos = zero;
- trk = NULL;
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_TERMINATE;
- }
- InfoMessage( _("Select and drag a description") );
- break;
- case C_TEXT:
- if (!moveDescTrk) return C_CONTINUE;
- bChanged = FALSE;
- if (action>>8 == 's') {
- if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC) != 0 )
- bChanged = TRUE;
- ClrTrkBits( moveDescTrk, TB_HIDEDESC );
- } else if (action>>8 == 'h') {
- if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC) == 0 )
- bChanged = TRUE;
- SetTrkBits( moveDescTrk, TB_HIDEDESC );
- }
- if ( bChanged ) {
- // We should push the draw/undraw of the description down
- // but there is no clear way to do that
- MainRedraw(); // CmdMoveDescription
+ return C_ERROR;
}
- /*no break*/
+ SetAllTrackSelect( FALSE );
+ /* 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 ((trk=FindTrackDescription(pos,&ep,&mode,TRUE,&hidden))!=NULL) {
+ 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"));
- moveDescTrk = trk;
+ InfoMessage(_("Hidden description - 's' to Show, 'd' Details"));
moveDescPos = pos;
} else {
InfoMessage(_("Shown description - 'h' to Hide"));
- moveDescTrk = trk;
moveDescPos = pos;
}
}
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; }
+ bChanged = FALSE;
+ if (action>>8 == 's') {
+ if ( ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC) != 0 ) {
+ bChanged = TRUE;
+ }
+ ClrTrkBits( moveDescTrk, TB_HIDEDESC );
+ } else if (action>>8 == 'h') {
+ 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) {
+ ClrTrkBits( moveDescTrk, TB_DETAILDESC);
+ } else {
+ ClrTrkBits( moveDescTrk, TB_HIDEDESC );
+ SetTrkBits( moveDescTrk, TB_DETAILDESC );
+ }
+ }
+ if ( bChanged ) {
+ return C_TERMINATE;
+ }
+ break;
case C_DOWN:
if (( labelWhen < 2 || mainD.scale > labelScale ) ||
- (labelEnable&(LABELENABLE_TRKDESC|LABELENABLE_ENDPT_ELEV))==0 ) {
- ErrorMessage( MSG_DESC_NOT_VISIBLE );
- return C_TERMINATE;
- }
+ (labelEnable&(LABELENABLE_TRKDESC|LABELENABLE_ENDPT_ELEV))==0 ) {
+ ErrorMessage( MSG_DESC_NOT_VISIBLE );
+ return C_ERROR;
+ }
mode = moveDescMode-1;
- trk = FindTrackDescription(pos,&ep,&mode,TRUE,&hidden);
- if (trk == NULL )
+ moveDescTrk = FindTrackDescription(pos,&ep,&mode,TRUE,&hidden);
+ if (moveDescTrk == NULL ) {
return C_CONTINUE;
+ }
if (hidden) {
- ClrTrkBits( trk, TB_HIDEDESC );
InfoMessage(_("Hidden Label - Drag to reveal"));
} else {
InfoMessage(_("Drag label"));
}
- UndoStart( _("Move Label"), "Modedesc( T%d )", GetTrkIndex(trk) );
- UndoModify( trk );
- /* no break */
+ if (ep == -1 ) {
+ DrawTrack( moveDescTrk, &mainD, wDrawColorWhite );
+ }
+ /* no break */
case C_MOVE:
+ if (moveDescTrk == NULL ) {
+ return C_CONTINUE;
+ }
+ UndoStart( _("Move Label"), "Modedesc( T%d )", GetTrkIndex(moveDescTrk) );
+ UndoModify( moveDescTrk );
+ ClrTrkBits( moveDescTrk, TB_HIDEDESC );
+ hidden = FALSE;
+ /* no break */
case C_UP:
- case C_REDRAW:
- if ( labelWhen < 2 || mainD.scale > labelScale )
- return C_TERMINATE;
- if ( trk == NULL )
+ if ( labelWhen < 2 || mainD.scale > labelScale ) {
return C_CONTINUE;
- STATUS_T status = C_ERROR;
- if ( action == C_REDRAW ) {
- if (mode==0) {
- DrawEndPt2( &tempD, trk, ep, wDrawColorBlue );
- } else {
- if (hidden) {
- DrawTrack( trk,&tempD,wDrawColorAqua);
- } else {
- DrawTrack( trk,&tempD,wDrawColorBlue);
- }
- }
}
+ if ( moveDescTrk == NULL ) {
+ return C_CONTINUE;
+ }
+// int rc = C_CONTINUE;
switch (mode) {
case 0:
- return EndPtDescriptionMove( trk, ep, action, pos );
+ EndPtDescriptionMove( moveDescTrk, ep, action, pos );
+ break;
case 1:
- return CompoundDescriptionMove( trk, action, pos );
+ CompoundDescriptionMove( moveDescTrk, action, pos );
+ break;
case 2:
- return CurveDescriptionMove( trk, action, pos );
+ CurveDescriptionMove( moveDescTrk, action, pos );
+ break;
case 3:
- return CornuDescriptionMove( trk, action, pos );
+ CornuDescriptionMove( moveDescTrk, action, pos );
+ break;
case 4:
- return BezierDescriptionMove( trk, action, pos );
+ BezierDescriptionMove( moveDescTrk, action, pos );
+ break;
+ case 5:
+ StraightDescriptionMove( moveDescTrk, action, pos);
+ break;
+ case 6:
+ JointDescriptionMove( moveDescTrk, action, pos);
+ break;
}
hidden = FALSE;
if ( action == C_UP ) {
- trk = NULL;
+ moveDescTrk = NULL;
InfoMessage(_("To Hide, use Context Menu"));
+ return C_TERMINATE;
+ }
+ break;
+ case C_REDRAW:
+ if ( labelWhen < 2 || mainD.scale > labelScale ) {
+ return C_CONTINUE;
+ }
+ if ( moveDescTrk ) {
+ if (mode==0) {
+ DrawEndPt2( &tempD, moveDescTrk, ep, drawColorPreviewSelected );
+ } else {
+ if (hidden) {
+ DrawTrack( moveDescTrk,&tempD,wDrawColorAqua);
+ } else {
+ DrawTrack( moveDescTrk,&tempD,drawColorPreviewSelected);
+ }
+ }
}
break;
-
case C_CMDMENU:
- if (trk == NULL) {
- moveDescTrk = OnTrack( &pos, TRUE, FALSE );
+ if (moveDescTrk != NULL && mode !=0) {
+ if ( GetLayerFrozen( GetTrkLayer( moveDescTrk ) ) ) {
+ moveDescTrk = NULL;
+ break;
+ }
moveDescPos = pos;
} else {
- moveDescTrk = trk;
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 );
- }
- wMenuToggleSet( moveDescMI, ( GetTrkBits( moveDescTrk ) & TB_HIDEDESC ) == 0 );
+ 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 ) );
menuPos = pos;
wMenuPopupShow( moveDescM );
break;
@@ -2479,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;
@@ -2498,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 );
@@ -2515,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) {
@@ -2532,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;
@@ -2541,51 +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:
- 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;
@@ -2637,34 +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 (GetLayerModule(GetTrkLayer(trk))) {
- if (add)
+ if (GetLayerFrozen(GetTrkLayer(trk))) {
+ continue;
+ } else if (GetLayerModule(GetTrkLayer(trk))) {
+ 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 );
}
@@ -2689,31 +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 == 0 && 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) {
+ 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);
+ }
}
}
}
@@ -2728,31 +2995,36 @@ 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;
+ InfoMessage(_("Track is in Frozen Layer"));
+ return C_CONTINUE;
+ }
+ }
inDescribeCmd = FALSE;
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();
@@ -2773,87 +3045,95 @@ 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) {
coOrd size;
size.x = max.x-origin.x;
size.y = max.y-origin.y;
- wPos_t w,h;
- w = (wPos_t)((size.x/mainD.scale)*mainD.dpi+0.5+10);
- h = (wPos_t)((size.y/mainD.scale)*mainD.dpi+0.5+10);
- wPos_t x, y;
- tempD.CoOrd2Pix(&tempD,origin,&x,&y);
- wDrawFilledRectangle(tempD.d, x-5, y-5, w, h, wDrawColorPowderedBlue, wDrawOptTemp|wDrawOptTransparent);
+ origin.x -= 5*tempD.scale/tempD.dpi;
+ origin.y -= 5*tempD.scale/tempD.dpi;
+ size.x += 10*tempD.scale/tempD.dpi;
+ size.y += 10*tempD.scale/tempD.dpi;
+ DrawRectangle( &tempD, origin, size, wDrawColorPowderedBlue, DRAW_TRANSPARENT );
}
}
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 * func) {
+static void CallPushDescribe(void * unused)
+{
if (moveDescTrk) {
CallDescribe(C_START, moveDescPos);
CallDescribe(C_DOWN, moveDescPos);
@@ -2864,7 +3144,8 @@ static void CallPushDescribe(void * func) {
static STATUS_T CmdSelect(wAction_t,coOrd);
-static void CallPushModify(void * func) {
+static void CallPushModify(void * unused)
+{
if (moveDescTrk) {
CmdSelect(C_LDOUBLE, moveDescPos);
}
@@ -2872,8 +3153,8 @@ static void CallPushModify(void * func) {
}
static STATUS_T CmdSelect(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
static BOOL_T doingMove;
@@ -2884,23 +3165,24 @@ 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;
}
}
}
-
switch (action&0xFF) {
case C_START:
InfoMessage( _("Select track") );
@@ -2908,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);
@@ -2921,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;
@@ -2938,24 +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))
+ if (QueryTrack(ht,Q_IS_ACTIVATEABLE)) {
CreateActivateAnchor(pos);
- showMode = SHOWACTIVATE;
+// showMode = SHOWACTIVATE;
+ } else { wSetCursor(mainD.d,defaultCursor); }
}
- }
- }
- }
+ } else { wSetCursor(mainD.d,defaultCursor); }
+ } else { wSetCursor(mainD.d,defaultCursor); }
+ } else { wSetCursor(mainD.d,defaultCursor); }
break;
case C_DOWN:
@@ -2965,7 +3248,6 @@ static STATUS_T CmdSelect(
}
DYNARR_RESET(trkSeg_t,anchors_da);
switch (mode) {
- rc = C_CONTINUE;
case MOVE:
if (SelectedTracksAreFrozen() || (selectedTrackCount==0)) {
rc = C_TERMINATE;
@@ -2973,7 +3255,7 @@ static STATUS_T CmdSelect(
} else if ((MyGetKeyState()&(WKEY_CTRL|WKEY_SHIFT))==WKEY_CTRL) {
doingRotate = TRUE;
doingMove = FALSE;
- RotateAlign( FALSE );
+ RotateAlign( I2VP(FALSE) );
rc = CmdRotate( action, pos );
} else if ((MyGetKeyState()&(WKEY_SHIFT|WKEY_CTRL))==WKEY_SHIFT) {
doingMove = TRUE;
@@ -2992,12 +3274,19 @@ static STATUS_T CmdSelect(
return rc;
break;
case wActionExtKey:
+ if ((action>>8)==wAccelKey_Del) {
+ SelectDelete();
+ 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;
}
@@ -3006,11 +3295,11 @@ 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) {
- RotateAlign( FALSE );
+ RotateAlign( I2VP(FALSE) );
rc = CmdRotate( action, pos );
} else if (doingMove == TRUE) {
rc = CmdMove( action, pos );
@@ -3023,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:
@@ -3040,7 +3332,7 @@ static STATUS_T CmdSelect(
doingMove = FALSE;
doingRotate = FALSE;
} else if (doingRotate == TRUE) {
- RotateAlign( FALSE );
+ RotateAlign( I2VP(FALSE) );
rc = CmdRotate( action, pos );
} else if (doingMove == TRUE) {
rc = CmdMove( action, pos );
@@ -3061,6 +3353,11 @@ static STATUS_T CmdSelect(
break;
case C_REDRAW:
+ if ( trk != NULL && IsTrackDeleted(trk) ) {
+ // If the track is deleted, then trk should be cleared
+ // TODO: This should be done at the point trk is deleted
+ trk = NULL;
+ }
if (doingDouble) {
return CallModify(action,pos);
}
@@ -3072,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));
}
@@ -3097,67 +3396,85 @@ static STATUS_T CmdSelect(
DrawHighlightBoxes(FALSE, FALSE, trk);
// If not on a track, show all tracks as going to be de-selected if selectZero on
- if (!trk && selectZero ) {
- HighlightSelectedTracks(NULL, TRUE, TRUE);
- //Handle the SHIFT+ which means SelectAllConnected case
- } else if ( trk && !IsTrackDeleted(trk)) {
- if ((MyGetKeyState() & WKEY_SHIFT) )
- SelectConnectedTracks(trk, TRUE); //Highlight all connected
+ if (!trk) {
+ if ( selectZero ) {
+ HighlightSelectedTracks(NULL, FALSE, TRUE);
+ } else {
+ HighlightSelectedTracks(trk, TRUE, FALSE);
+ }
+ } else {
+ //Handle the SHIFT+ which means SelectAllConnected case
+ if ((MyGetKeyState() & WKEY_SHIFT) ) {
+ SelectConnectedTracks(trk, TRUE); //Highlight all connected
+ }
//Normal case - handle track we are hovering over
- else {
+ else {
//Select=Add
if (selectMode == 1) {
if ((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) == WKEY_CTRL) {
- //Only Highlight if adding
- if (!GetTrkSelected(trk))
+ //Only Highlight if adding otherwise show already selected
+ if (!GetTrkSelected(trk)) {
DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
+ } 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 {
+ 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));
- } else {
- //Select=Add
- if (selectMode == 1) {
- if (((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) == WKEY_CTRL))
- HighlightSelectedTracks(trk, TRUE, TRUE);
- //else
- // HighlightSelectedTracks(trk, TRUE, FALSE); Highlight all selected
+ }
+ //Select=Add
+ if (selectMode == 1) {
+ if (((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) == WKEY_CTRL)) {
+ HighlightSelectedTracks(trk, FALSE, TRUE);
+ } else {
+ HighlightSelectedTracks(trk, TRUE,
+ FALSE); // Highlight all others selected
+ }
//Select=Only
+ } else {
+ if (((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) != WKEY_CTRL)) {
+ HighlightSelectedTracks(trk, FALSE, TRUE);
} else {
- if (((MyGetKeyState() & (WKEY_CTRL|WKEY_SHIFT)) != WKEY_CTRL))
- HighlightSelectedTracks(trk, TRUE, TRUE);
- //else
- // HighlightSelectedTracks(trk, TRUE, TRUE); Highlight all selected
+ 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;
@@ -3171,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;
@@ -3185,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;
@@ -3213,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 );
}
@@ -3222,152 +3540,215 @@ static STATUS_T CmdSelect(
if (doingDouble) {
return CallModify(action,pos);
}
+ if ((action>>8) == 127 || (action>>8) == 8) { //Backspace or Delete key
+ SelectDelete();
+ break;
+ }
if ((action>>8) == 'c') {
panCenter = pos;
- LOG( log_pan, 2, ( "PanCenter:Sel-%d %0.3f %0.3f\n", __LINE__, panCenter.x, panCenter.y ) );
- PanHere((void*)0);
+ 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(0);
}
if ((action>>8) == '0' || (action>>8 == 'o')) {
- PanMenuEnter('o');
+ PanMenuEnter(I2VP('o'));
}
if ((action>>8) == '?') {
- if((moveDescTrk = OnTrack(&pos,FALSE,FALSE)) != NULL)
+ if((moveDescTrk = OnTrack(&pos,FALSE,FALSE)) != NULL) {
moveDescPos = pos;
- CallPushDescribe((void*)0);
+ }
+ CallPushDescribe(I2VP(0));
wSetCursor(mainD.d,defaultCursor);
moveDescTrk = NULL;
}
break;
+ case C_CONFIRM:
+ if (doingDouble) {
+ return CallModify(action,pos);
+ }
+ return C_CONTINUE;
case C_FINISH:
- if (doingMove) UndoEnd();
+ if (doingDouble) {
+ CallModify(C_OK,pos);
+ CallModify(C_FINISH,pos);
+ }
+ 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/flip.xpm"
-#include "bitmaps/movedesc.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 ) {
- 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),
- 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,(wMenuCallBack_p) UndoUndo, (void *) 0);
- wMenuPushCreate(selectPopup1M, "", _("Redo"), 0,(wMenuCallBack_p) UndoRedo, (void *) 0);
+ wMenuPushCreate(selectPopup1M, "", _("Undo"), 0, UndoUndo, NULL);
+ wMenuPushCreate(selectPopup1M, "", _("Redo"), 0, UndoRedo, NULL);
wMenuSeparatorCreate( selectPopup1M );
- wMenuPushCreate(selectPopup1M, "cmdDescribeMode", GetBalloonHelpStr("cmdModifyMode"), 0, DoCommandB, (void*) (intptr_t) modifyCmdInx);
- wMenuPushCreate(selectPopup1M, "cmdPanMode", GetBalloonHelpStr("cmdPanMode"), 0, DoCommandB, (void*) (intptr_t) panCmdInx);
- wMenuPushCreate(selectPopup1M, "cmdTrainMode", GetBalloonHelpStr("cmdTrainMode"), 0, DoCommandB, (void*) (intptr_t) 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,(wMenuCallBack_p) DoZoomUp, (void*) 1);
- wMenuPushCreate( selectPopup1M, "", _("Zoom to extents - 'e'"), 0, (wMenuCallBack_p)DoZoomExtents, (void*) 0);
+ wMenuPushCreate(selectPopup1M, "", _("Zoom In"), 0, DoZoomUp, I2VP(1));
+ 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, (wMenuCallBack_p) DoZoomDown, (void*) 1);
- wMenuPushCreate(selectPopup1M, "", _("Pan to Origin - 'o'/'0'"), 0, (wMenuCallBack_p) PanMenuEnter, (void*) 'o');
- wMenuPushCreate(selectPopup1M, "", _("Pan Center Here - 'c'"), 0, (wMenuCallBack_p) PanHere, (void*) 3);
+ 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));
wMenuSeparatorCreate( selectPopup1M );
- wMenuPushCreate(selectPopup1M, "", _("Select All"), 0,(wMenuCallBack_p) SetAllTrackSelect, (void *) 1);
- wMenuPushCreate(selectPopup1M, "",_("Select Current Layer"), 0,(wMenuCallBack_p) SelectCurrentLayer, (void *) 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,(wMenuCallBack_p) UndoUndo, (void *) 0);
- wMenuPushCreate(selectPopup2M, "", _("Redo"), 0,(wMenuCallBack_p) UndoRedo, (void *) 0);
+ wMenuPushCreate(selectPopup2M, "", _("Undo"), 0, UndoUndo, NULL);
+ wMenuPushCreate(selectPopup2M, "", _("Redo"), 0, UndoRedo, NULL);
wMenuSeparatorCreate( selectPopup2M );
- wMenuPushCreate(selectPopup2M, "", _("Zoom In"), 0,(wMenuCallBack_p) DoZoomUp, (void*) 1);
- wMenuPushCreate(selectPopup2M, "", _("Zoom Out"), 0, (wMenuCallBack_p) DoZoomDown, (void*) 1);
- wMenuPushCreate(selectPopup2M, "", _("Pan Center Here - 'c'"), 0, (wMenuCallBack_p) PanHere, (void*) 3);
+ 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));
wMenuSeparatorCreate( selectPopup2M );
- wMenuPushCreate(selectPopup2M, "", _("Deselect All"), 0, (wMenuCallBack_p) SetAllTrackSelect, (void *) 0);
+ AddIndexMenu( selectPopup2M, SelectByIndex);
+ wMenuPushCreate(selectPopup2M, "", _("Deselect All"), 0,
+ (wMenuCallBack_p) SetAllTrackSelect, I2VP( 0));
wMenuSeparatorCreate( selectPopup2M );
- wMenuPushCreate(selectPopup2M, "", _("Properties -'?'"), 0,(wMenuCallBack_p) CallPushDescribe, (void*)0);
- menuPushModify = wMenuPushCreate(selectPopup2M, "", _("Modify/Activate Track"), 0,(wMenuCallBack_p) CallPushModify, (void*)0);
+ wMenuPushCreate(selectPopup2M, "", _("Properties -'?'"), 0, CallPushDescribe,
+ I2VP(0));
+ menuPushModify = wMenuPushCreate(selectPopup2M, "", _("Modify/Activate Track"),
+ 0, CallPushModify, I2VP(0));
wMenuSeparatorCreate( selectPopup2M );
- wMenuPushCreate(selectPopup2M, "", _("Cut"), 0,(wMenuCallBack_p) EditCut, (void *) 0);
- wMenuPushCreate(selectPopup2M, "", _("Copy"), 0,(wMenuCallBack_p) EditCopy, (void *) 0);
- wMenuPushCreate(selectPopup2M, "", _("Paste"), 0, (wMenuCallBack_p) EditPaste, (void *) 0);
- wMenuPushCreate(selectPopup2M, "", _("Clone"), 0, (wMenuCallBack_p) EditClone, (void *) 0);
+ wMenuPushCreate(selectPopup2M, "", _("Cut"), 0, EditCut, I2VP( 0));
+ wMenuPushCreate(selectPopup2M, "", _("Copy"), 0, EditCopy, I2VP( 0));
+ wMenuPushCreate(selectPopup2M, "", _("Paste"), 0, EditPaste, I2VP( 0));
+ wMenuPushCreate(selectPopup2M, "", _("Clone"), 0, EditClone, I2VP( 0));
AddMoveMenu( selectPopup2M, QuickMove);
selectPopup2RM = wMenuMenuCreate(selectPopup2M, "", _("Rotate..."));
AddRotateMenu( selectPopup2RM, QuickRotate );
- rotateAlignMI = wMenuPushCreate( selectPopup2RM, "", _("Align"), 0, (wMenuCallBack_p)RotateAlign, (void* ) 1 );
+ rotateAlignMI = wMenuPushCreate( selectPopup2RM, "", _("Align"), 0, RotateAlign,
+ I2VP(1) );
wMenuSeparatorCreate( selectPopup2M );
- descriptionMI = wMenuPushCreate(selectPopup2M, "cmdMoveLabel", _("Show/Hide Description"), 0, (wMenuCallBack_p)moveDescription, (void*) 0);
+ descriptionMI = wMenuPushCreate(selectPopup2M, "cmdMoveLabel",
+ _("Show/Hide Description"), 0, moveDescription, I2VP(0));
wMenuSeparatorCreate( selectPopup2M );
- hideMI = wMenuPushCreate(selectPopup2M, "", _("Hide/NoHide"), 0,(wMenuCallBack_p) SelectTunnel, (void *) 0);
- bridgeMI = wMenuPushCreate(selectPopup2M, "", _("Bridge/NoBridge"), 0,(wMenuCallBack_p) SelectBridge, (void *) 0);
- tiesMI = wMenuPushCreate(selectPopup2M, "", _("NoTies/Ties"), 0,(wMenuCallBack_p) SelectTies, (void *) 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, (void*)(wMenuCallBack_p)SelectTrackWidth, (void *)0 );
- wMenuPushCreate( selectPopup2TM, "", _("Medium Tracks"), 0, (void*)(wMenuCallBack_p)SelectTrackWidth, (void *)2 );
- wMenuPushCreate( selectPopup2TM, "", _("Thick Tracks"), 0, (void*)(wMenuCallBack_p)SelectTrackWidth, (void *)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, (wMenuCallBack_p)SelectLineType, (void*)0 );
- wMenuPushCreate( selectPopup2TYM, "", _("Dashed Line"), 0, (wMenuCallBack_p)SelectLineType, (void*)1 );
- wMenuPushCreate( selectPopup2TYM, "", _("Dotted Line"), 0, (wMenuCallBack_p)SelectLineType, (void*)2 );
- wMenuPushCreate( selectPopup2TYM, "", _("Dash-Dotted Line"), 0, (wMenuCallBack_p)SelectLineType, (void*)3 );
- wMenuPushCreate( selectPopup2TYM, "", _("Dash-Dot-Dotted Line"), 0, (wMenuCallBack_p)SelectLineType, (void*)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,(wMenuCallBack_p) SelectAbove,(void *) 0);
- wMenuPushCreate(selectPopup2M, "", _("Move To Back"), 0,(wMenuCallBack_p) SelectBelow, (void *) 0);
+ wMenuPushCreate(selectPopup2M, "", _("Move To Front"), 0, SelectAbove,I2VP( 0));
+ wMenuPushCreate(selectPopup2M, "", _("Move To Back"), 0, SelectBelow, I2VP( 0));
wMenuSeparatorCreate( selectPopup2M );
- wMenuPushCreate(selectPopup2M, "", _("Group"), 0,(wMenuCallBack_p) DoGroup, (void *) 0);
- wMenuPushCreate(selectPopup2M, "", _("UnGroup"), 0,(wMenuCallBack_p) DoUngroup, (void *) 0);
+ wMenuPushCreate(selectPopup2M, "", _("Group"), 0, DoGroup, I2VP( 0));
+ wMenuPushCreate(selectPopup2M, "", _("UnGroup"), 0, DoUngroup, I2VP( 0));
wMenuSeparatorCreate( selectPopup2M );
-
- ParamRegister( &rescalePG );
}
@@ -3375,41 +3756,58 @@ EXPORT void InitCmdSelect2( wMenu_p menu ) {
EXPORT void InitCmdDelete( void )
{
wIcon_p icon;
- icon = wIconCreatePixMap( delete_xpm );
- AddToolbarButton( "cmdDelete", icon, IC_SELECTED, (wButtonCallBack_p)SelectDelete, 0 );
-#ifdef WINDOWS
- wAttachAccelKey( wAccelKey_Del, 0, (wAccelKeyCallBack_p)SelectDelete, NULL );
-#endif
+ 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 );
- AddToolbarButton( "cmdTunnel", icon, IC_SELECTED|IC_POPUP, (addButtonCallBack_t)SelectTunnel, NULL );
+ 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 );
- AddToolbarButton( "cmdBridge", icon, IC_SELECTED|IC_POPUP, (addButtonCallBack_t)SelectBridge, NULL );
+ 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(movedesc_xpm),
- LEVEL0, IC_STICKY|IC_POPUP3|IC_CMDMENU|IC_WANT_MOVE, ACCL_MOVEDESC, (void*) 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),
- LEVEL0, IC_STICKY|IC_SELECTED|IC_CMDMENU|IC_WANT_MOVE, ACCL_MOVE, NULL );
- rotateCmdInx = AddMenuButton( menu, CmdRotate, "cmdRotate", _("Rotate"), wIconCreatePixMap(rotate_xpm),
- LEVEL0, IC_STICKY|IC_SELECTED|IC_CMDMENU|IC_WANT_MOVE, ACCL_ROTATE, NULL );
- /*flipCmdInx =*/ AddMenuButton( menu, CmdFlip, "cmdFlip", _("Flip"), wIconCreatePixMap(flip_xpm),
- 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 a9913bf..9227032 100644
--- a/app/bin/cselect.h
+++ b/app/bin/cselect.h
@@ -16,39 +16,51 @@
*
* 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
#define CSELECT_H
#include "common.h"
-#include "track.h"
+
+#define defaultCursor wCursorCross
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;
-void InvertTrackSelect( void * );
-void OrphanedTrackSelect( void * );
+void InvertTrackSelect( void * unused );
+void OrphanedTrackSelect( void * unused );
void SetAllTrackSelect( BOOL_T );
-void SelectTunnel( void );
-void SelectBridge( void );
-void SelectTies( void );
+void SelectTunnel( void * unused );
+void SelectBridge( void * unused );
+void SelectRoadbed( void * unused );
+void SelectTies( void * unused );
void SelectRecount( void );
void SelectTrackWidth( void* );
-void SelectDelete( void );
+int SelectDelete( void );
+void TrySelectDelete( void );
void MoveToJoin( track_p, EPINX_T, track_p, EPINX_T );
-void MoveSelectedTracksToCurrentLayer( void );
-void SelectCurrentLayer( void );
-void ClearElevations( void );
+void MoveSelectedTracksToCurrentLayer( void * unused );
+void SelectCurrentLayer( void * unused );
+void DeselectLayer( unsigned int );
+void SelectByIndex( void* string);
+void ClearElevations( void * unused );
void AddElevations( DIST_T );
-void DoRefreshCompound( void );
+void DoRefreshCompound( void * unused );
void WriteSelectedTracksToTempSegs( void );
-void DoRescale( void );
+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 4f395c2..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,31 +38,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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
*
- *
*
****************************************************************************/
-static const char rcsid[] = "@(#) : $Id$";
-
-#include <ctype.h>
-#include <string.h>
+//static const char rcsid[] = "@(#) : $Id$";
#include "compound.h"
+#include "cselect.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
-#ifdef WINDOWS
+#include "common-ui.h"
+#ifdef UTFCONVERT
#include "include/utf8convert.h"
-#endif // WINDOWS
-#include "utility.h"
-#include "messages.h"
+#endif // UTFCONVERT
EXPORT TRKTYP_T T_SENSOR = -1;
@@ -77,256 +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 {
- 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 (sensorData_p) GetTrkExtraData(trk);
+ 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 WINDOWS
+#ifdef UTFCONVERT
sensorName = Convert2UTF8(sensorName);
-#endif // WINDOWS
+#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;
- }
-
-#ifdef WINDOWS
+ 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 // WINDOWS
-
- 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;
+#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;
}
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 )
@@ -337,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;
@@ -386,122 +386,127 @@ 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_STRINGLIMITLENGTH, (void*)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_("Orgin 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|PDO_STRINGLIMITLENGTH, (void*)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, sizeof sensorEditPLs/sizeof sensorEditPLs[0] };
+static paramGroup_t sensorEditPG = { "sensorEdit", 0, sensorEditPLs, COUNT( sensorEditPLs ) };
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"));
- 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;
@@ -509,96 +514,95 @@ static POS_T ctlhiliteBorder;
static wDrawColor ctlhiliteColor = 0;
static void DrawSensorTrackHilite( void )
{
- wPos_t x, y, w, h;
- if (ctlhiliteColor==0)
+ if (ctlhiliteColor==0) {
ctlhiliteColor = wDrawColorGray(87);
- w = (wPos_t)((ctlhiliteSize.x/mainD.scale)*mainD.dpi+0.5);
- h = (wPos_t)((ctlhiliteSize.y/mainD.scale)*mainD.dpi+0.5);
- mainD.CoOrd2Pix(&mainD,ctlhiliteOrig,&x,&y);
- wDrawFilledRectangle( tempD.d, x, y, w, h, ctlhiliteColor, wDrawOptTemp|wDrawOptTransparent );
+ }
+ 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 );
- }
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_SENSOR) continue;
- ContMgmLoad (sensorI, SensorMgmProc, (void *) 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 ), 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 0fc09e6..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,32 +38,27 @@
*
* 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 <ctype.h>
-#include <string.h>
#include "compound.h"
+#include "cselect.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
-#ifdef WINDOWS
+#include "common-ui.h"
+#ifdef UTFCONVERT
#include "include/utf8convert.h"
-#endif // WINDOWS
-#include "utility.h"
-#include "messages.h"
+#endif // UTFCONVERT
EXPORT TRKTYP_T T_SIGNAL = -1;
@@ -78,33 +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 {
- 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 (signalData_p) GetTrkExtraData(trk);
+ return GET_EXTRA_DATA( trk, T_SIGNAL, signalData_t );
}
#define BASEX 6
@@ -118,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 WINDOWS
+#ifdef UTFCONVERT
signalName = Convert2UTF8(signalName);
-#endif // WINDOWS
-
- 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;
+#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;
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;
- }
-
-#ifdef WINDOWS
+ /*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 // WINDOWS
-
- 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;
+#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;
}
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;
@@ -494,7 +495,7 @@ static char signalAspectEditScript[STR_LONG_SIZE];
static long signalAspectEditIndex;
static paramIntegerRange_t r1_3 = {1, 3};
-static wPos_t aspectListWidths[] = { STR_SHORT_SIZE, 150 };
+static wWinPix_t aspectListWidths[] = { STR_SHORT_SIZE, 150 };
static const char * aspectListTitles[] = { N_("Name"), N_("Script") };
static paramListData_t aspectListData = {10, 400, 2, aspectListWidths, aspectListTitles};
@@ -506,263 +507,278 @@ 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_STRINGLIMITLENGTH, (void*)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_("Orgin 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, (void*)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, (void*)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, (void*)AspectDelete, "delete", 0, NULL, N_("Delete Aspect") },
+ /*8*/ { PD_BUTTON, AspectDelete, "delete", 0, NULL, N_("Delete Aspect") },
};
-static paramGroup_t signalEditPG = { "signalEdit", 0, signalEditPLs, sizeof signalEditPLs/sizeof signalEditPLs[0] };
+static paramGroup_t signalEditPG = { "signalEdit", 0, signalEditPLs, COUNT( signalEditPLs ) };
static wWin_p signalEditW;
static paramIntegerRange_t rm1_999999 = { -1, 999999 };
static paramData_t aspectEditPLs[] = {
#define I_ASPECTNAME (0)
- /*0*/ { PD_STRING, signalAspectEditName, "name", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)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|PDO_STRINGLIMITLENGTH, (void*)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, sizeof aspectEditPLs/sizeof aspectEditPLs[0] };
+static paramGroup_t aspectEditPG = { "aspectEdit", 0, aspectEditPLs, COUNT( aspectEditPLs ) };
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 );
}
@@ -770,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;
@@ -788,38 +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;
- 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;
@@ -827,96 +846,95 @@ static POS_T sighiliteBorder;
static wDrawColor sighiliteColor = 0;
static void DrawSignalTrackHilite( void )
{
- wPos_t x, y, w, h;
- if (sighiliteColor==0)
+ if (sighiliteColor==0) {
sighiliteColor = wDrawColorGray(87);
- w = (wPos_t)((sighiliteSize.x/mainD.scale)*mainD.dpi+0.5);
- h = (wPos_t)((sighiliteSize.y/mainD.scale)*mainD.dpi+0.5);
- mainD.CoOrd2Pix(&mainD,sighiliteOrig,&x,&y);
- wDrawFilledRectangle( tempD.d, x, y, w, h, sighiliteColor, wDrawOptTemp|wDrawOptTransparent );
+ }
+ 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 );
- }
-
- TRK_ITERATE(trk) {
- if (GetTrkType(trk) != T_SIGNAL) continue;
- ContMgmLoad (signalI, SignalMgmProc, (void *) 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 ), 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 eb58bc4..baf6998 100644
--- a/app/bin/csnap.c
+++ b/app/bin/csnap.c
@@ -17,28 +17,25 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "common-ui.h"
-#define bigdot_width 3
+#define bigdot_width 2
+int log_timedrawgrid = 0;
/*****************************************************************************
*
-
+
*
*/
-EXPORT long minGridSpacing = 3;
+EXPORT long minGridSpacing = 5;
#define CROSSTICK
#ifdef CROSSTICK
@@ -49,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;
@@ -79,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 );
@@ -97,54 +98,53 @@ EXPORT void MapGrid(
static DIST_T Gdx, Gdy, Ddx, Ddy;
static coOrd GDorig;
-static wPos_t lborder, bborder;
+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 )
{
- wPos_t x0, y0;
+ // Map Grid index to Layout pos
POS_T x;
x = (p0.x*Gdx + p0.y*Gdy) + orig.x;
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 ) )
- return;
- p0.x -= D->orig.x;
- p0.y -= D->orig.y;
- x = (p0.x*Ddx + p0.y*Ddy);
- p0.y = (p0.y*Ddx - p0.x*Ddy);
- p0.x = x;
- if ( p0.x < 0.0 || p0.x > D->size.x ||
- p0.y < 0.0 || p0.y > D->size.y )
+ ( p0.x < 0.0 || p0.x > size->x ||
+ p0.y < 0.0 || p0.y > size->y ) ) {
return;
- x0 = (wPos_t)(p0.x*dpi+0.5) + lborder;
- y0 = (wPos_t)(p0.y*dpi+0.5) + bborder;
- if ( bigdot )
- wDrawFilledCircle(D->d, x0, y0, (wPos_t)(bigdot_width+0.5)/2, Color, (wDrawOpts)D->funcs->options );
- else
- wDrawPoint( D->d, x0, y0, Color, (wDrawOpts)D->funcs->options );
+ }
+ DIST_T r;
+ nDrawGridPoints++;
+ if ( bigdot ) {
+ r = (bigdot_width+0.5)/2 - 0.5;
+ } else {
+ r = 0.75;
+ }
+ 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 )
{
- wPos_t x0, y0, x1, y1;
POS_T x;
x = (p0.x*Gdx + p0.y*Gdy) + orig.x;
p0.y = (p0.y*Gdx - p0.x*Gdy) + orig.y;
@@ -152,45 +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 ))
- return;
- p0.x -= D->orig.x;
- p0.y -= D->orig.y;
- p1.x -= D->orig.x;
- p1.y -= D->orig.y;
- x = (p0.x*Ddx + p0.y*Ddy);
- p0.y = (p0.y*Ddx - p0.x*Ddy);
- p0.x = x;
- x = (p1.x*Ddx + p1.y*Ddy);
- p1.y = (p1.y*Ddx - p1.x*Ddy);
- p1.x = x;
- if (clip && !ClipLine( &p0, &p1, zero, 0.0, D->size ))
+ if (size && clip && !ClipLine( &p0, &p1, zero, 0.0, *size )) {
return;
- x0 = (wPos_t)(p0.x*dpi+0.5) + lborder;
- y0 = (wPos_t)(p0.y*dpi+0.5) + bborder;
- x1 = (wPos_t)(p1.x*dpi+0.5) + lborder;
- y1 = (wPos_t)(p1.y*dpi+0.5) + bborder;
- wDrawLine( D->d, x0, y0, x1, y1, 0, wDrawLineSolid, Color, (wDrawOpts)D->funcs->options );
+ }
+ DrawLine( D, p0, p1, 0, Color );
}
-#ifdef WINDOWS
-#define WONE (1)
-#else
-#define WONE (0)
-#endif
-
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;
@@ -201,14 +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));
@@ -227,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;
@@ -244,8 +230,9 @@ EXPORT void DrawGrid(
}
if ( Hdivision > 0 ) {
hMinSpacing = hMajSpacing/Hdivision;
- if (hMinSpacing*dpi > minGridSpacing)
+ if (hMinSpacing*dpi > minGridSpacing) {
hMinCnt1 = (int)Hdivision;
+ }
}
}
@@ -260,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;
@@ -313,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++ ) {
@@ -326,10 +315,13 @@ EXPORT void DrawGrid(
}
}
}
-
+
done:
+ D->options = drawOptions;
wSetCursor( mainD.d, defaultCursor );
+ LOG( log_timedrawgrid, 1, ( "DrawGrid BD = %d, n = %d, time = %lu mS\n", bigdot,
+ nDrawGridPoints, wGetTimer()-time0 ) );
}
@@ -338,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 );
@@ -356,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;
@@ -387,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;
}
@@ -416,64 +410,86 @@ 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 void SnapPos( coOrd * pos )
+EXPORT BOOL_T SnapPos( coOrd * pos )
{
coOrd p;
DIST_T spacing;
- if ( grid.Vert.Enable == FALSE && grid.Horz.Enable == FALSE )
- return;
+ if ((MyGetKeyState() & WKEY_ALT) != 0) {
+ return 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;
InfoPos( p );
+ 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 );
}
@@ -498,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;
@@ -513,7 +527,7 @@ static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
static paramFloatRange_t r0_360 = { 0.0, 360.0, 80 };
static char *gridLabels[] = { "", NULL };
static paramData_t gridPLs[] = {
- { PD_MESSAGE, N_("Horz"), NULL, 0, (void*)60 },
+ { PD_MESSAGE, N_("Horz"), NULL, 0, I2VP(60) },
#define I_HORZSPACING (1)
{ PD_FLOAT, &grid.Horz.Spacing, "horzspacing", PDO_DIM, &r0_999999, N_("Spacing") },
#define I_HORZDIVISION (2)
@@ -521,7 +535,7 @@ static paramData_t gridPLs[] = {
#define I_HORZENABLE (3)
#define gridHorzEnableT ((wChoice_p)gridPLs[I_HORZENABLE].control)
{ PD_TOGGLE, &grid.Horz.Enable, "horzenable", 0, gridLabels, N_("Enable"), BC_HORZ|BC_NOBORDER },
- { PD_MESSAGE, N_("Vert"), NULL, PDO_DLGNEWCOLUMN|PDO_DLGWIDE, (void*)60},
+ { PD_MESSAGE, N_("Vert"), NULL, PDO_DLGNEWCOLUMN|PDO_DLGWIDE, I2VP(60) },
#define I_VERTSPACING (5)
{ PD_FLOAT, &grid.Vert.Spacing, "vertspacing", PDO_DIM, &r0_999999, NULL },
#define I_VERTDIVISION (6)
@@ -537,28 +551,29 @@ 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, sizeof gridPLs/sizeof gridPLs[0] };
+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 );
@@ -566,25 +581,28 @@ static void RedrawGrid( void )
}
-static void GridOk( void * junk )
+static void GridOk( void * unused )
{
long changes;
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();
@@ -596,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();
@@ -644,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:
@@ -678,7 +709,7 @@ static void GridDlgUpdate(
static void SnapGridRotate( void * pangle )
{
- ANGLE_T angle = (ANGLE_T)(long)pangle;
+ ANGLE_T angle = (ANGLE_T)VP2L(pangle);
wDrawDelayUpdate( tempD.d, TRUE );
grid.Orig = cmdMenuPos;
grid.Angle += angle/1000;
@@ -690,19 +721,17 @@ static void SnapGridRotate( void * pangle )
EXPORT STATUS_T CmdGrid(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
STATUS_T rc;
-#ifdef TIMEDRAWGRID
- unsigned long time0, time1, time2;
-#endif
switch (action) {
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 );
@@ -724,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:
@@ -741,20 +771,10 @@ EXPORT STATUS_T CmdGrid(
return rc;
case C_UP:
case C_RUP:
-#ifdef TIMEDRAWGRID
- time0 = wGetTimer();
-#endif
-#ifdef TIMEDRAWGRID
- time1 = wGetTimer();
-#endif
rc = GridAction( action, pos, &grid.Orig, &grid.Angle );
ParamLoadControls( &gridPG );
RedrawGrid();
oldGrid = grid;
-#ifdef TIMEDRAWGRID
- time2 = wGetTimer();
- InfoMessage( "undraw %ld, draw %ld", (long)(time1-time0), (long)(time2-time1) );
-#endif
return rc;
case C_CMDMENU:
@@ -768,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
@@ -778,38 +798,46 @@ 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 );
- return InitCommand( menu, CmdGrid, N_("Change Grid..."), NULL, LEVEL0, IC_CMDMENU, ACCL_GRIDW );
+ log_timedrawgrid = LogFindIndex( "timedrawgrid" );
+ return AddMenuButton( menu, CmdGrid, "cmdChange Grid...", N_("Change Grid..."),
+ NULL, LEVEL0, IC_CMDMENU, ACCL_GRIDW, NULL );
}
-EXPORT void SnapGridEnable( void )
+EXPORT void SnapGridEnable( void * unused )
{
grid.Vert.Enable = grid.Horz.Enable = !( grid.Vert.Enable || grid.Horz.Enable );
GridButtonUpdate( (CHK_HENABLE|CHK_VENABLE) );
}
-EXPORT void SnapGridShow( void )
+EXPORT void SnapGridShow( void * unused )
{
grid.Show = !grid.Show;
GridButtonUpdate( CHK_SHOW );
}
-#include "bitmaps/snapcurs.xbm"
-#include "bitmaps/snapvis.xbm"
+#include "bitmaps/snap-curs.xpm3"
+#include "bitmaps/snap-grid.xpm3"
EXPORT void InitSnapGridButtons( void )
{
- snapGridEnable_b = AddToolbarButton( "cmdGridEnable", wIconCreateBitMap(snapcurs_width, snapcurs_height, snapcurs_bits, wDrawColorBlack), 0, (addButtonCallBack_t)SnapGridEnable, NULL );
- snapGridShow_b = AddToolbarButton( "cmdGridShow", wIconCreateBitMap(snapvis_width, snapvis_height, snapvis_bits, wDrawColorBlack), IC_MODETRAIN_TOO, (addButtonCallBack_t)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 c2b516a..154b837 100644
--- a/app/bin/csplit.c
+++ b/app/bin/csplit.c
@@ -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
*/
#include "cundo.h"
#include "compound.h"
-#include "i18n.h"
-#include "messages.h"
+#include "cselect.h"
#include "track.h"
-#include "utility.h"
+#include "draw.h"
#include "fileio.h"
+#include "common-ui.h"
static wMenu_p splitPopupM[2];
static wMenuToggle_p splitPopupMI[2][4];
@@ -36,9 +36,9 @@ static BOOL_T splitTrkFlip;
static dynArr_t anchors_da;
#define anchors(N) DYNARR_N(trkSeg_t,anchors_da,N)
-static void ChangeSplitEPMode( wBool_t set, void * mode )
+static void ChangeSplitEPMode( void * mode )
{
- long imode = (long)mode;
+ long imode = VP2L(mode);
long option;
int inx0, inx;
@@ -50,8 +50,9 @@ static void ChangeSplitEPMode( wBool_t set, 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( wBool_t set, void * mode )
DrawEndPt( &mainD, splitTrkTrk[1], splitTrkEP[1], wDrawColorBlack );
}
-static void CreateSplitAnchorAngle(coOrd pos, track_p t, BOOL_T end, ANGLE_T a) {
+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;
@@ -68,9 +71,9 @@ static void CreateSplitAnchorAngle(coOrd pos, track_p t, BOOL_T end, ANGLE_T a)
i = anchors_da.cnt-1;
anchors(i).type = SEG_STRLIN;
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;
+ 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).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,47 +92,73 @@ 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);
+ CreateSplitAnchorAngle(pos,t,end,a,FALSE);
+}
+
+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;
+ anchors(i).type = SEG_STRLIN;
+ 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).lineWidth = w;
+
+}
+
+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);
+ ANGLE_T d = DifferenceBetweenAngles(a,aa);
+ CreateTrimAnchorLeg(pos,a+(d>0?90:-90),t);
}
static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
{
track_p trk0, trk1;
- EPINX_T ep0;
- int oldTrackCount;
+ EPINX_T ep0 = 0;
+// 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);
- /* no break */
+ SetAllTrackSelect( FALSE );
+ /* no break */
case C_DOWN:
case C_MOVE:
return C_CONTINUE;
break;
case C_UP:
onTrackInSplit = TRUE;
- trk0 = OnTrack( &pos, TRUE, TRUE );
+ trk0 = OnTrack( &pos, FALSE, TRUE );
if ( trk0 != NULL) {
if (!CheckTrackLayer( trk0 ) ) {
onTrackInSplit = FALSE;
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 (!QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
+ if (!IsTrack(trk0) ||
+ !QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
onTrackInSplit = FALSE;
- InfoMessage(_("Can't Split that Track"));
+ InfoMessage(_("Can't Split that Track Object"));
return C_CONTINUE;
}
}
@@ -138,70 +167,107 @@ 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 )) {
+ if (!QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
+ onTrackInSplit = FALSE;
+ InfoMessage(_("Can't Split that Draw Object"));
+ return C_CONTINUE;
+ }
+ onTrackInSplit = FALSE;
+ UndoStart( _("Split Track"), "SplitTrack( T%d[%d] )", GetTrkIndex(trk0), ep0 );
+// oldTrackCount = trackCount;
SplitTrack( trk0, pos, ep0, &trk1, FALSE );
UndoEnd();
return C_TERMINATE;
+ } else {
+ InfoMessage(_("No Track to Split"));
+ wBeep();
}
onTrackInSplit = FALSE;
return C_TERMINATE;
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, (void*)0 );
- splitPopupMI[0][1] = wMenuToggleCreate( splitPopupM[0], "", _("Left"), 0, FALSE, ChangeSplitEPMode, (void*)1 );
- splitPopupMI[0][2] = wMenuToggleCreate( splitPopupM[0], "", _("Right"), 0, FALSE, ChangeSplitEPMode, (void*)2 );
- splitPopupMI[0][3] = wMenuToggleCreate( splitPopupM[0], "", _("Both"), 0, FALSE, ChangeSplitEPMode, (void*)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, (void*)0 );
- splitPopupMI[1][1] = wMenuToggleCreate( splitPopupM[1], "", _("Top"), 0, FALSE, ChangeSplitEPMode, (void*)1 );
- splitPopupMI[1][2] = wMenuToggleCreate( splitPopupM[1], "", _("Bottom"), 0, FALSE, ChangeSplitEPMode, (void*)2 );
- splitPopupMI[1][3] = wMenuToggleCreate( splitPopupM[1], "", _("Both"), 0, FALSE, ChangeSplitEPMode, (void*)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 (IsClose(FindDistance(GetTrkEndPos(trk0,ep0),pos)) && (GetTrkEndTrk(trk0,ep0)!=NULL)) {
+ if ( ep0 < 0 ) {
+ break;
+ }
+ 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 ) {
if (SplitTurnoutCheck(trk0,pos,ep0,NULL,NULL,NULL,TRUE,&pos,&angle)) {
angle = NormalizeAngle(angle+90);
- CreateSplitAnchorAngle(pos,trk0,FALSE,angle);
+ CreateSplitAnchorAngle(pos,trk0,FALSE,angle,FALSE);
}
} else {
CreateSplitAnchor(GetTrkEndPos(trk0,ep0),trk0,TRUE);
@@ -210,25 +276,241 @@ static STATUS_T CmdSplitTrack( wAction_t action, coOrd pos )
} else if (QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
CreateSplitAnchor(pos,trk0,FALSE);
}
+ } else {
+ if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
+ if (QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
+ CreateSplitAnchor(pos,trk0, FALSE);
+ }
+ }
}
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;
}
return C_CONTINUE;
}
+static STATUS_T CmdSplitDraw( wAction_t action, coOrd pos )
+{
+ track_p trk0, trk1;
+ EPINX_T ep0 = 0;
+// int oldTrackCount;
+ switch (action) {
+ case C_START:
+ InfoMessage( _("Select draw to split") );
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ SetAllTrackSelect( FALSE );
+ /* 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 (!QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
+ onTrackInSplit = FALSE;
+ InfoMessage(_("Can't Split that Draw Object"));
+ return C_CONTINUE;
+ }
+ onTrackInSplit = FALSE;
+ UndoStart( _("Split Draw"), "SplitDraw( T%d[%d] )", GetTrkIndex(trk0), ep0 );
+// oldTrackCount = trackCount;
+ SplitTrack( trk0, pos, ep0, &trk1, FALSE );
+ UndoEnd();
+ return C_TERMINATE;
+ } else {
+ InfoMessage(_("No Draw to Split"));
+ wBeep();
+ }
+ onTrackInSplit = FALSE;
+ return C_TERMINATE;
+ break;
+ case wActionMove:
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ onTrackInSplit = TRUE;
+ if ((trk0 = OnTrack( &pos, FALSE, FALSE))!=NULL
+ && CheckTrackLayerSilent( trk0 )) {
+ if (IsTrack(trk0)) { break; }
+ if (QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
+ CreateSplitAnchor(pos,trk0, FALSE);
+ }
+ }
+ onTrackInSplit = FALSE;
+ break;
+ case C_REDRAW:
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ break;
+ }
+
+ return C_CONTINUE;
+}
+
+typedef enum {TRIM_NONE, TRIM_LINE} TrimState_e;
+
+static STATUS_T CmdTrimDraw( wAction_t action, coOrd pos )
+{
+ track_p trk0, trk1, trk2;
+ EPINX_T ep0 = 0;
+ static TrimState_e trimState;
+ static track_p trimLine;
+ static track_p trk;
+
+ switch (action&0xFF) {
+ case C_START:
+ InfoMessage( _("Select the draw object to Trim to") );
+ DYNARR_RESET(trkSeg_t,anchors_da);
+ trimState = TRIM_NONE;
+ trimLine = NULL;
+ trk = NULL;
+ SetAllTrackSelect( FALSE );
+ /* 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 (IsTrack(trk0)) {
+ InfoMessage(_("Can't Trim with a Track"));
+ return C_CONTINUE;
+ }
+ trimState = TRIM_LINE;
+ trimLine = trk0;
+ InfoMessage( _("Select an intersecting draw object to Trim") );
+ return C_CONTINUE;
+ } else { return C_CONTINUE; }
+ }
+ if (!trimLine) {
+ InfoMessage(_("No Draw to Trim with"));
+ wBeep();
+ return C_TERMINATE;
+ }
+ coOrd pos1 = pos;
+ if ((trk1 = OnTrackIgnore(&pos1,FALSE,FALSE,trimLine))!=NULL) {
+ if (IsTrack(trk1)) {
+ InfoMessage(_("Can't Split a track object"));
+ wBeep();
+ return C_CONTINUE;
+ }
+ if (!QueryTrack(trk1,Q_MODIFY_CAN_SPLIT)) {
+ onTrackInSplit = FALSE;
+ InfoMessage(_("Can't Split that Draw Object"));
+ return C_CONTINUE;
+ }
+ pos1 = pos;
+ if (IsClose(GetTrkDistance(trimLine,&pos1)*4)) {
+ if ( IsClose(GetTrkDistance(trk1,&pos1)*4)) {
+ //Iterate twice
+ 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; }
+
+ 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; }
+
+ UndoStart( _("Trim Draw"), "TrimDraw( T%d[%d] )", GetTrkIndex(trimLine), ep0 );
+ SplitTrack( trk1, pos1, ep0, &trk2, FALSE );
+ if (trk2 ) { DeleteTrack(trk2, FALSE); }
+ UndoEnd();
+ MainRedraw();
+ InfoMessage( _("Select another draw object to Trim, or Space to Deselect") );
+ return C_CONTINUE;
+ break;
+ case wActionMove:
+ 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 (QueryTrack(trk0,Q_MODIFY_CAN_SPLIT)) {
+ trk = trk0;
+ }
+ }
+ }
+ if (trimState == TRIM_LINE) {
+ coOrd pos1=pos;
+ if ((trk1 = OnTrackIgnore(&pos1,FALSE,FALSE,trimLine))!=NULL) {
+ if (IsTrack(trk1)) {
+ return C_CONTINUE;
+ }
+ pos1 = pos;
+ if (IsClose(GetTrkDistance(trimLine,&pos1)*4)) {
+ if (IsClose(GetTrkDistance(trk1,&pos1)*4)) {
+ //Iterate Twice
+ for (int i=0; i<2; i++) {
+ GetTrkDistance(trimLine,&pos1);
+ GetTrkDistance(trk1,&pos1);
+ }
+ CreateTrimAnchor(pos1, trk1, trimLine, pos);
+ }
+ }
+ }
+ }
+ break;
+ case C_REDRAW:
+ if (trk) {
+ DrawTrack(trk,&tempD,wDrawColorPreviewSelected);
+ }
+ if (trimLine) {
+ DrawTrack(trimLine,&tempD,selectedColor);
+ }
+ DrawSegsDA( &tempD, NULL, zero, 0.0, &anchors_da, trackGauge, wDrawColorBlack,
+ 0 );
+ break;
+ case C_TEXT:
+ if (action>>8 != ' ' && action>>8 != 13 ) {
+ return C_CONTINUE;
+ }
+ trimLine = NULL;
+ trk = NULL;
+ trimState = TRIM_NONE;
+ InfoMessage("");
+ return C_TERMINATE;
+ default: ;
+ }
+
+ return C_CONTINUE;
+}
-#include "bitmaps/splittrk.xpm"
+#include "bitmaps/split.xpm3"
+#include "bitmaps/split-draw.xpm3"
+#include "bitmaps/trim.xpm3"
void InitCmdSplit( wMenu_p menu )
{
- AddMenuButton( menu, CmdSplitTrack, "cmdSplitTrack", _("Split Track"), wIconCreatePixMap(splittrk_xpm), LEVEL0_50, IC_STICKY|IC_POPUP|IC_CMDMENU|IC_WANT_MOVE, ACCL_SPLIT, NULL );
+ ButtonGroupBegin( _("Split"), "cmdSplitSetCmd", _("Split") );
+ 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 464f16e..b61d9b8 100644
--- a/app/bin/cstraigh.c
+++ b/app/bin/cstraigh.c
@@ -17,34 +17,33 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
#include "cstraigh.h"
+#include "cselect.h"
#include "cundo.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
#include "layout.h"
+#include "common-ui.h"
/*
* 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);
@@ -55,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;
}
@@ -74,7 +73,9 @@ 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;
case C_DOWN:
@@ -84,80 +85,90 @@ 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:
case wActionMove:
DYNARR_RESET(trkSeg_t,anchors_da);
+ found = FALSE;
if (!Dl.down) {
if (((MyGetKeyState() & WKEY_ALT) == 0) == magneticSnap) {
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);
- }
+ EPINX_T ep = PickUnconnectedEndPointSilent(pos, t);
+ if (ep != -1) {
+ if (GetTrkGauge(t) == GetScaleTrackGauge(GetLayoutCurScale())) {
+ CreateEndAnchor(GetTrkEndPos(t,ep),FALSE);
+ found = TRUE;
+ }
+ }
}
}
}
+ if (!found && SnapPos( &pos )) {
+ CreateEndAnchor(pos,FALSE);
+ found = TRUE;
+ }
return C_CONTINUE;
}
ANGLE_T angle, angle2;
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 if (SnapPos( &pos )) {
+ 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 );
@@ -169,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;
@@ -184,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), 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 30d1539..bff288a 100644
--- a/app/bin/cstraigh.h
+++ b/app/bin/cstraigh.h
@@ -17,17 +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"
-#include "track.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 6907e2c..9006ebd 100644
--- a/app/bin/cstruct.c
+++ b/app/bin/cstruct.c
@@ -17,33 +17,27 @@
*
* 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 <ctype.h>
-#include <math.h>
-#include <stdint.h>
-#include <string.h>
-
#include "compound.h"
+#include "cselect.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
+#include "cselect.h"
#include "include/paramfile.h"
#include "track.h"
-#include "utility.h"
+#include "tbezier.h"
#include "ccurve.h"
+#include "common-ui.h"
EXPORT TRKTYP_T T_STRUCTURE = -1;
EXPORT dynArr_t structureInfo_da;
-typedef struct compoundData extraData;
-
static wIndex_t pierListInx;
EXPORT turnoutInfo_t * curStructure = NULL;
@@ -52,24 +46,26 @@ 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(void);
+static void RedrawStructure( wDraw_p d, void * context, wWinPix_t x,
+ wWinPix_t y );
-static wPos_t structureListWidths[] = { 80, 80, 220 };
+static wWinPix_t structureListWidths[] = { 80, 80, 220 };
static const char * structureListTitles[] = { N_("Manufacturer"), N_("Part No"), N_("Description") };
static paramListData_t listData = { 13, 400, 3, structureListWidths, structureListTitles };
static const char * hideLabels[] = { N_("Hide"), NULL };
-static paramDrawData_t structureDrawData = { 490, 200, (wDrawRedrawCallBack_p)RedrawStructure, NULL, &structureD };
+static paramDrawData_t structureDrawData = { 490, 200, RedrawStructure, NULL, &structureD };
static paramData_t structurePLs[] = {
#define I_LIST (0)
#define structureListL ((wList_p)structurePLs[I_LIST].control)
@@ -77,14 +73,15 @@ static paramData_t structurePLs[] = {
#define I_DRAW (1)
{ PD_DRAW, NULL, "canvas", PDO_NOPSHUPD|PDO_DLGUNDERCMDBUTT|PDO_DLGRESIZE, &structureDrawData, NULL, 0 },
#define I_HIDE (2)
- { PD_TOGGLE, &hideStructureWindow, "hide", PDO_DLGCMDBUTTON, /*CAST_AWAY_CONST*/(void*)hideLabels, NULL, BC_NOBORDER },
+ { PD_TOGGLE, &hideStructureWindow, "hide", PDO_DLGCMDBUTTON, hideLabels, NULL, BC_NOBORDER },
#define I_MSGSCALE (3)
- { PD_MESSAGE, NULL, NULL, 0, (void*)80 },
+ { PD_MESSAGE, NULL, NULL, 0, I2VP(80) },
#define I_MSGWIDTH (4)
- { PD_MESSAGE, NULL, NULL, 0, (void*)80 },
+ { PD_MESSAGE, NULL, NULL, 0, I2VP(80) },
#define I_MSGHEIGHT (5)
- { PD_MESSAGE, NULL, NULL, 0, (void*)80 } };
-static paramGroup_t structurePG = { "structure", 0, structurePLs, sizeof structurePLs/sizeof structurePLs[0] };
+ { PD_MESSAGE, NULL, NULL, 0, I2VP(80) }
+};
+static paramGroup_t structurePG = { "structure", 0, structurePLs, COUNT( structurePLs ) };
@@ -98,19 +95,20 @@ static paramGroup_t structurePG = { "structure", 0, structurePLs, sizeof 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 );
@@ -122,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 );
@@ -131,17 +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;
- to->pathLen = 0;
- to->paths = (PATHPTR_T)"";
+ 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;
@@ -149,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
@@ -162,6 +163,26 @@ StructureDelete(void *structure)
MyFree(to->title);
MyFree(to->segs);
+ if (to->special) {
+ switch(to->special) {
+ case TOpier:
+ MyFree(to->u.pier.name);
+ 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) {
+ MyFree(to->u.pierInfo.info[pierInx].name);
+ }
+ to->u.pierInfo.info[pierInx].name = NULL;
+ }
+ MyFree(to->u.pierInfo.info);
+ to->u.pierInfo.cnt = 0;
+ break;
+ default:;
+ }
+ }
+
MyFree(to);
return(TRUE);
}
@@ -177,76 +198,98 @@ 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;
}
+/**
+ * Check to find out to what extent the contents of the parameter file can be used with
+ * the current layout scale / gauge.
+ *
+ * If parameter scale == layout we have an exact fit.
+ * If parameter scale == layout scale +/15% we have compatible track.
+ *
+ * \param paramFileIndex
+ * \param scaleIndex
+ * \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);
}
- for (i = 0; i < structureInfo_da.cnt; i++) {
+ //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++)
+ {
turnoutInfo_t *to = structureInfo(i);
if (to->paramFileIndex == paramFileIndex) {
- if (GetScaleRatio(to->scaleInx) == ratio || to->scaleInx == SCALE_ANY) {
+ SCALE_FIT_T fit = CompatibleScale(FIT_STRUCTURE,to->scaleInx,scaleIndex);
+ if (fit == FIT_EXACT) {
ret = PARAMFILE_FIT;
break;
- }
+ }
+ //Within 15% of scale
+ if (fit == FIT_COMPATIBLE) {
+ ret = PARAMFILE_COMPATIBLE;
+ }
}
+
}
return(ret);
}
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 );
@@ -254,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') {
@@ -272,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;
@@ -280,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 &&
- CompatibleScale( FALSE, 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 );
@@ -293,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;
+ }
}
}
}
@@ -312,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 extraData *xx = GetTrkExtraData(t);
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(t, T_STRUCTURE,
+ extraDataCompound_t);
d->options &= ~DC_NOTSOLIDLINE;
switch(xx->lineType) {
@@ -344,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 extraData * xx = GetTrkExtraData(trk);
+ 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 );
}
@@ -393,8 +446,10 @@ static BOOL_T QueryStructure( track_p trk, int query )
static wBool_t CompareStruct( track_cp trk1, track_cp trk2 )
{
- struct extraData *xx1 = GetTrkExtraData( trk1 );
- struct extraData *xx2 = GetTrkExtraData( 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 );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Orig", xx1, xx2, orig )
REGRESS_CHECK_ANGLE( "Angle", xx1, xx2, angle )
@@ -409,45 +464,47 @@ 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, (void*)50, N_("Pier Number") } };
-static paramGroup_t pierPG = { "structure-pier", 0, pierPLs, sizeof pierPLs/sizeof pierPLs[0] };
+ { 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)
static void ShowPierL( void )
@@ -463,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;
@@ -495,7 +554,7 @@ static wWin_p structureW;
static void RescaleStructure( void )
{
DIST_T xscale, yscale;
- wPos_t ww, hh;
+ wWinPix_t ww, hh;
DIST_T w, h;
wDrawGetSize( structureD.d, &ww, &hh );
w = ww/structureD.dpi - 0.2;
@@ -516,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) {
@@ -540,24 +603,27 @@ static void structureChange( long changes )
maxStructureDim.x += 2*trackGauge;
maxStructureDim.y += 2*trackGauge;
/*RescaleStructure();*/
- RedrawStructure();
+ RedrawStructure( structureD.d, NULL, 0, 0 );
return;
}
-static void RedrawStructure()
+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) );
@@ -568,18 +634,19 @@ 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();
- RedrawStructure();
- ParamDialogOkActive( &structurePG, FALSE );
+ RedrawStructure( structureD.d, NULL, 0, 0 );
+ /* ParamDialogOkActive( &structurePG, FALSE ); */
}
@@ -601,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;
@@ -612,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;
}
@@ -689,71 +764,50 @@ static ANGLE_T PlaceStructure(
static void NewStructure( void )
{
track_p trk;
- struct extraData *xx;
- wIndex_t titleLen;
+ 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" );
- titleLen = strlen( curStructure->title );
- trk = NewCompound( T_STRUCTURE, 0, Dst.pos, Dst.angle, curStructure->title, 0, NULL, NULL, 0, "", curStructure->segCnt, curStructure->segs );
- xx = GetTrkExtraData(trk);
-#ifdef LATER
- trk = NewTrack( 0, T_STRUCTURE, 0, sizeof (*xx) + 1 );
- xx->orig = Dst.pos;
- xx->angle = Dst.angle;
- xx->segs = MyMalloc( (curStructure->segCnt)*sizeof curStructure->segs[0] );
-
- /*
- * copy data */
- xx->segCnt = curStructure->segCnt;
- memcpy( xx->segs, curStructure->segs, xx->segCnt * sizeof *(trkSeg_p)0 );
- xx->title = curStructure->title;
- xx->pathLen = 0;
- xx->paths = "";
-#endif
+ 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);
-#ifdef LATER
- ComputeCompoundBoundingBox( trk );
-
- SetDescriptionOrig( trk );
- xx->descriptionOff = zero;
- xx->descriptionSize = zero;
-#endif
+ SetTrkRoadbed( trk, FALSE);
DrawNewTrack( trk );
/*DrawStructure( trk, &mainD, wDrawColorBlack, 0 );*/
@@ -766,9 +820,10 @@ static void NewStructure( void )
static void StructRotate( void * pangle )
{
- if (Dst.state == 0)
+ if (Dst.state == 0) {
return;
- ANGLE_T angle = (ANGLE_T)(long)pangle;
+ }
+ ANGLE_T angle = (ANGLE_T)VP2L(pangle);
angle /= 1000.0;
Dst.pos = cmdMenuPos;
Rotate( &Dst.pos, cmdMenuPos, angle );
@@ -778,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;
@@ -792,11 +847,17 @@ 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();
- InfoMessage(_("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel"));
+ SetAllTrackSelect( FALSE );
return C_CONTINUE;
case wActionMove:
@@ -811,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;
@@ -824,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
}
@@ -847,9 +925,9 @@ 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/75.0)*mainD.scale ) {
+ if ( FindDistance( rot0, rot1 ) > (6.0/BASE_DPI)*mainD.scale ) {
angle = FindAngle( rot0, rot1 );
if (!validAngle) {
baseAngle = angle;
@@ -860,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:
@@ -880,14 +959,26 @@ EXPORT STATUS_T CmdStructureAction(
return C_CONTINUE;
case C_REDRAW:
- if (Dst.state)
+ wSetCursor(mainD.d,defaultCursor);
+ if (Dst.state) {
DrawSegs( &tempD, Dst.pos, Dst.angle,
- curStructure->segs, curStructure->segCnt, 0.0, wDrawColorBlue );
+ 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 );
- }
- 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; }
+ CmdStructureAction( C_DOWN, pos );
+ CmdStructureAction( C_UP, pos );
return C_CONTINUE;
case C_CANCEL:
@@ -899,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();
@@ -910,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:
@@ -923,8 +1016,8 @@ EXPORT STATUS_T CmdStructureAction(
static STATUS_T CmdStructure(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos )
{
wIndex_t structureIndex;
@@ -934,7 +1027,9 @@ static STATUS_T CmdStructure(
case C_START:
if (structureW == NULL) {
- structureW = ParamCreateDialog( &structurePG, MakeWindowTitle(_("Structure")), _("Ok"), (paramActionOkProc)DoStructOk, (paramActionCancelProc)Reset, TRUE, NULL, F_RESIZE, StructureDlgUpdate );
+ structureW = ParamCreateDialog( &structurePG, MakeWindowTitle(_("Structure")),
+ _("Close"), (paramActionOkProc)DoStructOk, wHide, TRUE, NULL, F_RESIZE,
+ StructureDlgUpdate );
RegisterChangeNotification( structureChange );
}
ParamDialogOkActive( &structurePG, FALSE );
@@ -949,11 +1044,12 @@ static STATUS_T CmdStructure(
if (structureIndex > 0 && structurePtr) {
curStructure = structurePtr;
wListSetIndex( structureListL, structureIndex );
- RedrawStructure();
+ RedrawStructure( structureD.d, NULL, 0, 0 );
}
InfoMessage( _("Select Structure and then drag to place"));
ParamLoadControls( &structurePG );
ParamGroupRecord( &structurePG );
+ SetAllTrackSelect( FALSE );
return CmdStructureAction( action, pos );
case wActionMove:
@@ -969,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:
@@ -987,15 +1084,22 @@ 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;
+ case C_LCLICK:
+ CmdStructureAction( action, pos );
+ return C_CONTINUE;
+
case C_CANCEL:
wHide( structureW );
- /*no break*/
+ return C_CANCEL;
+
case C_REDRAW:
case C_TEXT:
case C_OK:
@@ -1011,22 +1115,23 @@ 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 ) {
case HB_SELECT:
CmdStructureAction( C_FINISH, zero );
curStructure = to;
- DoCommandB( (void*)(intptr_t)structureHotBarCmdInx );
+ DoCommandB( I2VP(structureHotBarCmdInx) );
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 );
@@ -1034,8 +1139,8 @@ static char * CmdStructureHotBarProc(
case HB_FULLTITLE:
return to->title;
case HB_DRAW:
- origP->x -= to->orig.x;
- origP->y -= to->orig.y;
+ //origP->x -= to->orig.x;
+ //origP->y -= to->orig.y;
DrawSegs( d, *origP, 0.0, to->segs, to->segCnt, trackGauge, wDrawColorBlack );
return NULL;
}
@@ -1050,34 +1155,39 @@ EXPORT void AddHotBarStructures( void )
for ( inx=0; inx < structureInfo_da.cnt; inx ++ ) {
to = structureInfo(inx);
if ( !( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- CompatibleScale( FALSE, 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) {
case C_START:
- structureChange( CHANGE_PARAMS );
+ //structureChange( CHANGE_PARAMS );
if (curStructure == NULL) {
NoticeMessage( MSG_STRUCT_NO_STRUCTS, _("Ok"), NULL );
return C_TERMINATE;
}
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;
- //ParamLoadControls( &structurePG );
- //ParamGroupRecord( &structurePG );
+ wIndex_t listIndex = FindListItemByContext( structureListL, curStructure );
+ if ( listIndex >= 0 ) {
+ structureInx = listIndex;
+ }
+ ParamLoadControls( &structurePG );
+ ParamGroupRecord( &structurePG );
return CmdStructureAction( action, pos );
case wActionMove:
@@ -1088,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:
@@ -1095,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:
@@ -1102,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/struct.xpm"
+#include "bitmaps/building.xpm3"
EXPORT void InitCmdStruct( wMenu_p menu )
{
- AddMenuButton( menu, CmdStructure, "cmdStructure", _("Structure"), wIconCreatePixMap(struct_xpm), 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 a8e1c54..7bdbbcf 100644
--- a/app/bin/cswitchmotor.c
+++ b/app/bin/cswitchmotor.c
@@ -44,27 +44,22 @@
*
* 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
*
*
*/
-#include <ctype.h>
-#include <string.h>
-
#include "compound.h"
+#include "cselect.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
-#ifdef WINDOWS
+#include "common-ui.h"
+#ifdef UTFCONVERT
#include "include/utf8convert.h"
-#endif // WINDOWS
-#include "utility.h"
-#include "messages.h"
+#endif // UTFCONVERT
EXPORT TRKTYP_T T_SWITCHMOTOR = -1;
@@ -78,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];
@@ -90,13 +86,13 @@ static track_p last_motor;
static track_p first_motor;
static paramData_t switchmotorPLs[] = {
-/*0*/ { PD_STRING, switchmotorName, "name", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)200, N_("Name"), 0, 0, sizeof(switchmotorName)},
-/*1*/ { PD_STRING, switchmotorNormal, "normal", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)350, N_("Normal"), 0, 0, sizeof(switchmotorNormal)},
-/*2*/ { PD_STRING, switchmotorReverse, "reverse", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("Reverse"), 0, 0, sizeof(switchmotorReverse)},
-/*3*/ { PD_STRING, switchmotorPointSense, "pointSense", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)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, sizeof switchmotorPLs/sizeof switchmotorPLs[0] };
+static paramGroup_t switchmotorPG = { "switchmotor", 0, switchmotorPLs, COUNT( switchmotorPLs ) };
static wWin_p switchmotorW;
static char switchmotorEditName[STR_SHORT_SIZE];
@@ -109,14 +105,14 @@ static track_p switchmotorEditTrack;
static paramIntegerRange_t r0_999999 = { 0, 999999 };
static paramData_t switchmotorEditPLs[] = {
- /*0*/ { PD_STRING, switchmotorEditName, "name", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)200, N_("Name"), 0, 0, sizeof(switchmotorEditName)},
-/*1*/ { PD_STRING, switchmotorEditNormal, "normal", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("Normal"), 0, 0, sizeof(switchmotorEditNormal)},
-/*2*/ { PD_STRING, switchmotorEditReverse, "reverse", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("Reverse"), 0, 0, sizeof(switchmotorEditReverse)},
-/*3*/ { PD_STRING, switchmotorEditPointSense, "pointSense", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)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, sizeof switchmotorEditPLs/sizeof switchmotorEditPLs[0] };
+static paramGroup_t switchmotorEditPG = { "switchmotorEdit", 0, switchmotorEditPLs, COUNT( switchmotorEditPLs ) };
static wWin_p switchmotorEditW;
/*
@@ -125,19 +121,20 @@ static dynArr_t switchmotorTrk_da;
*/
typedef struct switchmotorData_t {
- 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 )
{
- return (switchmotorData_p) GetTrkExtraData(trk);
+ return GET_EXTRA_DATA( trk, T_SWITCHMOTOR, switchmotorData_t );
}
#if 0
@@ -146,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} };
-#define switchmotorPoly_CNT (sizeof(switchmotorPoly_Pix)/sizeof(switchmotorPoly_Pix[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 extraData *xx = GetTrkExtraData(data_p->turnout);
- 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 extraData *xx = GetTrkExtraData(data_p->turnout);
- 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, 1, 0);
+ 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 {
@@ -221,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;
@@ -236,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 );
@@ -248,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 );
@@ -260,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 );
@@ -272,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 );
@@ -284,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);
@@ -314,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;
}
@@ -329,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) {
@@ -340,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);
@@ -349,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 );
}
@@ -363,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);
@@ -401,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 )
@@ -410,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 WINDOWS
+
+#ifdef UTFCONVERT
switchMotorName = Convert2UTF8(switchMotorName);
-#endif // WINDOWS
+#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;
@@ -434,49 +454,55 @@ 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 WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(name);
-#endif // WINDOWS
+#endif // UTFCONVERT
trk = NewTrack(index, T_SWITCHMOTOR, 0, sizeof(switchmotorData_t)+1);
xx = GetswitchmotorData( trk );
xx->name = name;
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 ) {}
@@ -526,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;
}
@@ -558,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 );
@@ -574,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 );
@@ -588,10 +617,12 @@ 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") );
+ SetAllTrackSelect( FALSE );
return C_CONTINUE;
case C_DOWN:
if ((trk = OnTrack(&pos, TRUE, TRUE )) == NULL) {
@@ -613,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 )
{
@@ -667,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();
@@ -692,9 +723,10 @@ 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 ((long)commandContext) {
+ switch (VP2L(commandContext)) {
case SWITCHMOTOR_CREATE: return CmdSwitchMotorCreate(action,pos);
case SWITCHMOTOR_EDIT: return CmdSwitchMotorEdit(action,pos);
case SWITCHMOTOR_DELETE: return CmdSwitchMotorDelete(action,pos);
@@ -705,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;
@@ -757,74 +789,72 @@ static POS_T swmhiliteBorder;
static wDrawColor swmhiliteColor = 0;
static void DrawSWMotorTrackHilite( void )
{
- wPos_t x, y, w, h;
- if (swmhiliteColor==0)
+ if (swmhiliteColor==0) {
swmhiliteColor = wDrawColorGray(87);
- w = (wPos_t)((swmhiliteSize.x/mainD.scale)*mainD.dpi+0.5);
- h = (wPos_t)((swmhiliteSize.y/mainD.scale)*mainD.dpi+0.5);
- mainD.CoOrd2Pix(&mainD,swmhiliteOrig,&x,&y);
- wDrawFilledRectangle( mainD.d, x, y, w, h, swmhiliteColor, wDrawOptTemp|wDrawOptTransparent );
+ }
+ 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"
@@ -832,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, (void *)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 )
@@ -853,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 c292d1c..673e4f7 100644
--- a/app/bin/ctext.c
+++ b/app/bin/ctext.c
@@ -17,20 +17,19 @@
*
* 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"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "wlib.h"
#include "draw.h"
#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 );
@@ -44,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_LONG_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 }
- };
-static paramGroup_t textPG = { "text", 0, textPLs, sizeof textPLs/sizeof textPLs[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;
@@ -102,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;
}
}
@@ -117,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;
@@ -125,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);
@@ -142,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;
@@ -156,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:
@@ -174,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':
@@ -194,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;
@@ -206,21 +205,29 @@ static STATUS_T CmdText( wAction_t action, coOrd pos )
Dt.text[Dt.len] = '\000';
}
}
- DrawMultiLineTextSize( &mainD, Dt.text, NULL, Dt.size, TRUE, &size, &lastline);
+ if (Dt.len>sizeof(Dt.text)-8) {
+ Dt.len=sizeof(Dt.text)-8;
+ Dt.text[Dt.len] = '\0';
+ InfoMessage("Text too long - truncated");
+ wBeep();
+ }
+ 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) {
@@ -233,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);
}
@@ -242,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:
@@ -257,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), 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, (wMenuCallBack_p)SelectFont, NULL );
+ 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/cmisc2.c b/app/bin/ctie.c
index c9daad2..6881bc4 100644
--- a/app/bin/cmisc2.c
+++ b/app/bin/ctie.c
@@ -1,5 +1,5 @@
-/*
- * $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/bin/cmisc2.c,v 1.4 2008-03-10 18:59:53 m_fischer Exp $
+/** \file ctie.c
+ * TIE
*/
/* XTrkCad - Model Railroad CAD
@@ -17,38 +17,37 @@
*
* 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"
+//#include "custom.h"
+//#include "fileio.h"
+#include "layout.h"
+//#include "param.h"
+//#include "paths.h"
#include "track.h"
-#include "i18n.h"
+//#include "include/paramfile.h"
+#include "common-ui.h"
-/*****************************************************************************
- *
- * MISC2
- *
- */
+static int log_tieList;
+/****************************************************************************
+*
+* TIE DATA
+*
+*/
-static STATUS_T CmdBridge( wAction_t action, coOrd pos )
+/**
+* @brief Default tie data for a scale in tieLength, tieWidth, tieSpacing
+*/
+EXPORT void GetDefaultTieData( SCALEINX_T inx, tieData_p tieData )
{
- switch (action) {
- case C_DOWN:
- return C_INFO;
- break;
- }
- return C_INFO;
-}
-
+ SCALEDESCINX_T scaleInx;
+ GAUGEINX_T gaugeInx;
+ GetScaleGauge( inx, &scaleInx, &gaugeInx );
-
-
-
-#include "bitmaps/bridge.xbm"
-
-void InitCmdMisc2( wMenu_p menu )
-{
- if (extraButtons) {
- InitCommand( menu, CmdBridge, N_("Bridge"), bridge_bits, LEVEL2, IC_STICKY, ACCL_BRIDGE );
- }
+ 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 dc118a1..1b50d91 100644
--- a/app/bin/ctodesgn.c
+++ b/app/bin/ctodesgn.c
@@ -18,41 +18,34 @@
*
* 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
*/
-#ifdef WINDOWS
-#include <stdlib.h>
-#endif
-
-#include <stdint.h>
-#include <ctype.h>
-#include <math.h>
-#include <string.h>
-#include "messages.h"
-
#include "ccurve.h"
#include "compound.h"
#include "cstraigh.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "param.h"
#include "track.h"
-#include "utility.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"
dynArr_t tempSegs_da;
+// Minimum Track Segment length
+#define MIN_TRACK_LENGTH (0.20)
/*****************************************
*
@@ -83,35 +76,37 @@ dynArr_t tempSegs_da;
typedef struct {
- struct {
- wPos_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;
@@ -144,84 +139,90 @@ 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 r0_10000 = { 0, 10000, 80 };
-static paramFloatRange_t r_10000_10000 = {-10000, 10000, 80 };
-static paramFloatRange_t r0_360 = { 0, 360, 80 };
+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 r_10000_10000 = { -1000, 10000, 80 };
+static paramFloatRange_t r0d001_90 = { 0.001, 90, 80 };
static paramFloatRange_t r0_100 = { 0, 100, 80 };
static paramIntegerRange_t i0_100 = { 0, 100, 40 };
-static void NewTurnOk( void * );
-static void ShowTurnoutDesigner( void * );
+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];
-#define POSX(X) ((wPos_t)((X)*newTurnout_d.dpi))
-#define POSY(Y) ((wPos_t)((Y)*newTurnout_d.dpi))
+#define POSX(X) ((wWinPix_t)((X)*newTurnout_d.dpi))
+#define POSY(Y) ((wWinPix_t)((Y)*newTurnout_d.dpi))
static paramData_t turnDesignPLs[] = {
#define I_TOLENGTH (0)
#define I_TO_FIRST_FLOAT (0)
- { PD_FLOAT, &newTurnLen0, "len0", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0_10000, N_("Length") },
- { PD_FLOAT, &newTurnLen1, "len1", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0_10000, N_("Length") },
- { PD_FLOAT, &newTurnLen2, "len2", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0_10000, N_("Length") },
- { PD_FLOAT, &newTurnLen3, "len3", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0_10000, N_("Length") },
+ { PD_FLOAT, &newTurnLen0, "len0", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d001_10000, N_("Length") },
+ { PD_FLOAT, &newTurnLen1, "len1", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d001_10000, N_("Length") },
+ { PD_FLOAT, &newTurnLen2, "len2", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d001_10000, N_("Length") },
+ { PD_FLOAT, &newTurnLen3, "len3", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d001_10000, N_("Length") },
#define I_TOOFFSET (4)
- { PD_FLOAT, &newTurnOff0, "off0", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Offset") },
- { PD_FLOAT, &newTurnOff1, "off1", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Offset") },
- { PD_FLOAT, &newTurnOff2, "off2", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Offset") },
- { PD_FLOAT, &newTurnOff3, "off3", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Offset") },
+ { PD_FLOAT, &newTurnOff0, "off0", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d001_10000, N_("Offset") },
+ { PD_FLOAT, &newTurnOff1, "off1", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d001_10000, N_("Offset") },
+ { PD_FLOAT, &newTurnOff2, "off2", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d001_10000, N_("Offset") },
+ { PD_FLOAT, &newTurnOff3, "off3", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d001_10000, N_("Offset") },
#define I_TORAD (8)
{ PD_FLOAT, &newTurnRad0, "rad0", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Radius") },
{ PD_FLOAT, &newTurnRad1, "rad1", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Radius") },
- { PD_FLOAT, &newTurnRad2, "rad2", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Radius") },
+ { PD_FLOAT, &newTurnRad2, "rad2", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Radius") },
{ PD_FLOAT, &newTurnRad3, "rad3", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r_10000_10000, N_("Radius") },
#define I_TOTOELENGTH (12)
- { PD_FLOAT, &newTurnToeL, "toeL", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0_10000, N_("Length") },
- { PD_FLOAT, &newTurnToeR, "toeR", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0_10000, N_("Length") },
+ { PD_FLOAT, &newTurnToeL, "toeL", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d300_10000, N_("Length") },
+ { PD_FLOAT, &newTurnToeR, "toeR", PDO_DIM|PDO_DLGIGNORELABELWIDTH, &r0d300_10000, N_("Length") },
#define I_TOANGLE (14)
- { PD_FLOAT, &newTurnAngle0, "angle0", PDO_DLGIGNORELABELWIDTH, &r0_360, N_("Angle") },
- { PD_FLOAT, &newTurnAngle1, "angle1", PDO_DLGIGNORELABELWIDTH, &r0_360, N_("Angle") },
- { PD_FLOAT, &newTurnAngle2, "angle2", PDO_DLGIGNORELABELWIDTH, &r0_360, N_("Angle") },
+ { PD_FLOAT, &newTurnAngle0, "angle0", PDO_DLGIGNORELABELWIDTH, &r0d001_90, N_("Angle") },
+ { PD_FLOAT, &newTurnAngle1, "angle1", PDO_DLGIGNORELABELWIDTH, &r0d001_90, N_("Angle") },
+ { PD_FLOAT, &newTurnAngle2, "angle2", PDO_DLGIGNORELABELWIDTH, &r0d001_90, N_("Angle") },
#define I_TO_LAST_FLOAT (17)
- { PD_FLOAT, &newTurnAngle3, "angle3", PDO_DLGIGNORELABELWIDTH, &r0_360, N_("Angle") },
+ { PD_FLOAT, &newTurnAngle3, "angle3", PDO_DLGIGNORELABELWIDTH, &r0d001_90, N_("Angle") },
#define I_TOMANUF (18)
- { PD_STRING, &newTurnManufacturer, "manuf", PDO_STRINGLIMITLENGTH, NULL, N_("Manufacturer"), 0, 0, sizeof(newTurnManufacturer)},
+ { PD_STRING, &newTurnManufacturer, "manuf", PDO_NOTBLANK, NULL, N_("Manufacturer"), 0, 0, sizeof(newTurnManufacturer)},
#define I_TOLDESC (19)
- { PD_STRING, &newTurnLeftDesc, "desc1", PDO_STRINGLIMITLENGTH, NULL, N_("Left Description"), 0, 0, sizeof(newTurnLeftDesc)},
- { PD_STRING, &newTurnLeftPartno, "partno1", PDO_DLGHORZ | PDO_STRINGLIMITLENGTH, NULL, N_(" #"), 0, 0, sizeof(newTurnLeftPartno)},
+ { PD_STRING, &newTurnLeftDesc, "desc1", PDO_NOTBLANK, NULL, N_("Left Description"), 0, 0, sizeof(newTurnLeftDesc)},
+ { PD_STRING, &newTurnLeftPartno, "partno1", PDO_DLGHORZ | PDO_NOTBLANK, NULL, N_(" #"), 0, 0, sizeof(newTurnLeftPartno)},
#define I_TORDESC (21)
- { PD_STRING, &newTurnRightDesc, "desc2", PDO_STRINGLIMITLENGTH, NULL, N_("Right Description"),0, 0, sizeof(newTurnRightDesc)},
- { PD_STRING, &newTurnRightPartno, "partno2", PDO_DLGHORZ | PDO_STRINGLIMITLENGTH, NULL, N_(" #"),0, 0, sizeof(newTurnRightPartno)},
+ { PD_STRING, &newTurnRightDesc, "desc2", PDO_NOTBLANK, NULL, N_("Right Description"),0, 0, sizeof(newTurnRightDesc)},
+ { 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_BUTTON, (void*)NewTurnOk, "done", PDO_DLGCMDBUTTON, NULL, N_("Ok") },
- { PD_BUTTON, (void*)wPrintSetup, "printsetup", 0, NULL, N_("Print Setup") },
+ { 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, sizeof turnDesignPLs/sizeof turnDesignPLs[0] };
+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];
@@ -236,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,
- sizeof RegLines/sizeof RegLines[0], RegLines,
- sizeof RegFloats/sizeof RegFloats[0], 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,
- sizeof CrvLines/sizeof CrvLines[0], CrvLines,
- sizeof CrvFloats/sizeof CrvFloats[0], 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,
- sizeof CornuLines/sizeof CornuLines[0], CornuLines,
- sizeof CornuFloats/sizeof CornuFloats[0], 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,
- sizeof WyeLines/sizeof WyeLines[0], WyeLines,
- sizeof WyeFloats/sizeof WyeFloats[0], 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,
- sizeof CornuWyeLines/sizeof CornuWyeLines[0], CornuWyeLines,
- sizeof CornuWyeFloats/sizeof CornuWyeFloats[0], 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,
- sizeof ThreewayLines/sizeof ThreewayLines[0], ThreewayLines,
- sizeof ThreewayFloats/sizeof ThreewayFloats[0], 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,
- sizeof CornuThreewayLines/sizeof CornuThreewayLines[0], CornuThreewayLines,
- sizeof CornuThreewayFloats/sizeof CornuThreewayFloats[0], 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,
- sizeof CrossingLines/sizeof CrossingLines[0], CrossingLines,
- sizeof CrossingFloats/sizeof CrossingFloats[0], 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,
- sizeof SingleSlipLines/sizeof SingleSlipLines[0], SingleSlipLines,
- sizeof SingleSlipFloats/sizeof SingleSlipFloats[0], 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,
- sizeof DoubleSlipLines/sizeof DoubleSlipLines[0], DoubleSlipLines,
- sizeof DoubleSlipFloats/sizeof DoubleSlipFloats[0], 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,
- sizeof RightCrossoverLines/sizeof RightCrossoverLines[0], RightCrossoverLines,
- sizeof RightCrossoverFloats/sizeof RightCrossoverFloats[0], 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,
- sizeof LeftCrossoverLines/sizeof LeftCrossoverLines[0], LeftCrossoverLines,
- sizeof LeftCrossoverFloats/sizeof LeftCrossoverFloats[0], 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,
- sizeof DoubleCrossoverLines/sizeof DoubleCrossoverLines[0], DoubleCrossoverLines,
- sizeof DoubleCrossoverFloats/sizeof DoubleCrossoverFloats[0], 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,
- sizeof StrSectionLines/sizeof StrSectionLines[0], StrSectionLines,
- sizeof StrSectionFloats/sizeof StrSectionFloats[0], 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,
- sizeof CrvSectionLines/sizeof CrvSectionLines[0], CrvSectionLines,
- sizeof CrvSectionFloats/sizeof CrvSectionFloats[0], 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,
- sizeof StrSectionLines/sizeof StrSectionLines[0], StrSectionLines,
- sizeof BumperFloats/sizeof BumperFloats[0], 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,
- sizeof StrSectionLines/sizeof StrSectionLines[0], StrSectionLines,
- sizeof TurntableFloats/sizeof TurntableFloats[0], 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
/**************************************************************************
@@ -772,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
@@ -857,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;
@@ -894,13 +985,14 @@ 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 = 100000.0;
+ dd = DIST_INF;
closest = -1;
for (inx=0; inx<segCnt; inx++) {
sp = &segPtr[inx];
@@ -910,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;
@@ -946,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[sizeof searchTable/sizeof searchTable[0]]; p++) {
- if ( (p->width < rbw && res==0xFFFFFFFF) || res==0 )
+ for ( p=searchTable; p<&searchTable[COUNT( searchTable )]; p++) {
+ 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;
@@ -991,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;
@@ -1031,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;
@@ -1042,8 +1147,8 @@ 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 );
- return res;
+ if ( debugComputeRoadbed>=2 ) { printf( "S%d %c res=%lx\n", segInx, side>0?'+':'-', res ); }
+ return (0xFFFFFFFF)&res;
}
@@ -1056,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] );
@@ -1090,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;
}
}
}
@@ -1113,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;
@@ -1128,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;
@@ -1142,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 ) {
@@ -1167,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 );
}
@@ -1187,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;
@@ -1204,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) );
@@ -1217,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);
@@ -1272,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;
}
}
@@ -1285,23 +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,
- wIndex_t * pathLenP )
+ toDesignDesc_t * dp,
+ wBool_t loadPoints )
{
wIndex_t s;
- int i, p, p0, p1;
+ 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];
@@ -1319,98 +1425,107 @@ 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 );
- for ( i=0; i<dp->floatCnt; i++ )
- if ( *(FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP) == 0.0 )
- if (dp->type != NTO_CORNU &&
- dp->type != NTO_CORNUWYE &&
- dp->type != NTO_CORNU3WAY
- ) {
- NoticeMessage( MSG_TODSGN_VALUES_GTR_0, _("Ok"), NULL );
- return NULL;
- }
+ TempEndPtsReset();
+// for ( i=0; i<dp->floatCnt; i++ )
+// if ( *(FLOAT_T*)(turnDesignPLs[dp->floats[i].index].valueP) == 0.0 )
+// if (dp->type != NTO_CORNU &&
+// dp->type != NTO_CORNUWYE &&
+// dp->type != NTO_CORNU3WAY
+// ) {
+// NoticeMessage( MSG_TODSGN_VALUES_GTR_0, _("Ok"), NULL );
+// return NULL;
+// }
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 < -0.10 )
+ if ( d < -MIN_TRACK_LENGTH ) {
pp = &Crv3Schema;
- else if ( d > 0.10 )
+ } 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,24 +1537,24 @@ static toDesignSchema_t * LoadSegs(
points[7].y = 0;
points[7].x = (newTurnLen2);
d = points[3].x - points[5].x;
- if ( d < -0.10 ) {
+ if ( d < -MIN_TRACK_LENGTH ) {
pp = (dp->type==NTO_3WAY ? &Tri3Schema : &Wye3Schema );
- } else if ( d > 0.10 ) {
+ } else if ( d > MIN_TRACK_LENGTH ) {
pp = (dp->type==NTO_3WAY ? &Tri2Schema : &Wye2Schema );
} 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
@@ -1464,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);
@@ -1479,52 +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 = minLength/2;
+ 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) {
- Translate(&end_points[i], points[i], 90-angles[i]+(i==0?0:180), 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==0) && radii[0]>0.0) || ((i==1 || i==3) && radii[i]>0.0)|| ((i==2) && radii[i]<0.0))
- Translate(&end_centers[i], points[i], -angles[i], fabs(radii[i]));
- 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]));
+ if (i!=2) {
+ 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 {
+ 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) {
+ Translate(&end_centers[i], points[i], angles[i]+180, fabs(radii[i]));
+ } 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],((i==0||i==3)?-1:1)*end_arcs[i]);
- end_angles[i] = angles[i]-((i==0||i==3)?-1:1)*end_arcs[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) {
@@ -1542,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) {
@@ -1610,35 +1753,31 @@ 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;
wBool_t back, neg;
- CallCornu0(&cornuData.pos[0],&cornuData.center[0],&cornuData.angle[0],&cornuData.radius[0],&tempSegs_da, FALSE);
-
/* Override if a "Y" has zero radius at base to be a straight until the Toe
* We set the start of the curve to be at the Toe position */
if (cornuData.radius[0] == 0.0) {
- pos.x = end_points[0].x+(LH_first?newTurnToeL:newTurnToeR);
- pos.y = 0.0;
+ pos.x = end_points[0].x+(LH_first?newTurnToeL:newTurnToeR)-MIN_TRACK_LENGTH;
+ pos.y = end_points[0].y;
angle = 90.0;
radius = 0.0;
center = zero;
} else {
-
/*Find Toe 1 from curve */
+ 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) {
@@ -1690,23 +1829,32 @@ 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 */
- 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);
- 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) {
+ 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 if (segPtr->type == SEG_CRVTRK) {
- center = segPtr->u.c.center;
- radius = fabs(segPtr->u.c.radius);
+ } 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,&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);
+ }
+
+ 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[3] = pos;
cornuData.center[3] = center;
@@ -1752,52 +1900,82 @@ 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);
+ 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] = 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);
}
- 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);
Toe1Seg = tempSegs_da.cnt;
if (dp->type == NTO_CORNU3WAY) {
if (newTurnToeR!=newTurnToeL) {
/* Toe1 to Toe2 in tempSegs array */
- 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);
+ if (cornuData.radius[0] == 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[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);
+ }
Toe2Seg = cornuSegs_da.cnt+Toe1Seg;
/* Add to second cornu to tempSegs array */
@@ -1808,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] = end_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 );
+ temp_p->u.l.pos[1] = points[3];
+ 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->u.c.radius = fabs(radii[3]);
- if (radii[3]>0)
+ temp_p->lineWidth = 0.0;
+ temp_p->u.c.radius = -radii[3]; //Assumed Left
+ 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;
@@ -1852,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] = end_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 );
+ temp_p->u.l.pos[1] = points[1];
+ 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->u.c.radius = fabs(radii[1]);
- if (radii[1]>0)
+ temp_p->lineWidth = 0.0;
+ temp_p->u.c.radius = -radii[1]; //Negative relative to left
+ 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;
@@ -1894,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] = 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 );
+ temp_p->u.l.pos[1] = 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);
- 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->u.c.radius = fabs(radii[2]);
- if (radii[2]<0)
- temp_p->u.c.a0 = FindAngle(end_centers[2],points[2]);
- else
+ 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],cornuData.pos[9]);
+ } 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;
@@ -1945,8 +2144,8 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
static char pathChar[512];
if (dp->type == NTO_CORNU3WAY) {
strcpy(pathChar,"Normal"); /* Also resets array */
- pathLen = strlen(pathChar)+1;
- for (uint8_t i=0;i<CenterEndSeg;i++) {
+ pathLen = (wIndex_t)strlen(pathChar)+1;
+ for (uint8_t i=0; i<CenterEndSeg; i++) {
pathChar[pathLen] = i+1;
pathLen++;
}
@@ -1955,23 +2154,23 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
pathChar[pathLen] = 0;
pathLen++;
sprintf(&pathChar[pathLen],"%s","Left");
- pathLen += strlen(&pathChar[pathLen])+1;
+ pathLen += (wIndex_t)strlen(&pathChar[pathLen])+1;
} else {
strcpy(pathChar,"Left");
- pathLen = strlen(pathChar)+1;
+ 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++;
}
@@ -1982,19 +2181,19 @@ LogPrintf( "ctoDes2: R(%f) A0(%f) A1(%f) C(%f,%f) P(%f,%f) EP(%f,%f) RP0(%f,%f)
pathLen++;
sprintf(&pathChar[pathLen],"%s","Right");
- pathLen += strlen(&pathChar[pathLen])+1;
+ 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++;
}
@@ -2015,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;
@@ -2031,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 );
@@ -2060,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;
@@ -2069,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:
@@ -2107,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 < -0.10 )
+ if ( d < -MIN_TRACK_LENGTH ) {
pp = &Crv3Schema;
- else if ( d > 0.10 )
+ } 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 = minLength/2;
-
- // 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);
-
- /*Map out the full outer curve */
-
- CallCornu0(&cornuData.pos[0],&cornuData.center[0],&cornuData.angle[0],&cornuData.radius[0],&tempSegs_da, FALSE);
+ 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) );
+ }
- /*Get ToeAngle/Radius/Center */
- int inx,subSeg;
- wBool_t back, neg;
- DIST_T radius;
- coOrd center;
- pos.x = end_points[0].x+newTurnToeL;
- 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);
- }
+ 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*/
- 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 = fabs(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 = fabs(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 = fabs(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 = 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 += 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 = strlen( segOrder );
- if (segCnt%3 != 0)
- AbortProg( dp->label );
+ segCnt = (wIndex_t)strlen( segOrder );
+ 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 */
@@ -2429,21 +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 ( (pathLen=CheckPaths( segCnt, &tempSegs(0), pp->paths )) < 0 )
+ if ( CheckPaths( segCnt, &tempSegs(0), pp->paths, dp->label ) < 0 ) {
return NULL;
-
- if (pathLenP)
- *pathLenP = pathLen;
+ }
#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;
}
@@ -2451,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;
@@ -2472,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 )) == 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;
@@ -2495,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;
+ }
}
}
@@ -2521,89 +2753,83 @@ 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;
#endif
orig.x = - ( size.y + orig.x + newTurnTrackGauge/2.0 + 0.5 );
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;
sprintf( message, "%s", sProdName );
- wDrawString( newTurnout_d.d, POSX(3.0),
- POSY(6.75), 0.0, message, fp, 40,
- wDrawColorBlack, 0 );
+ strPos.y = newTurnout_d.orig.y + 6.75;
+ DrawString( &newTurnout_d, strPos, 0.0, message, fp, 40, wDrawColorBlack );
sprintf( message, _("%s Designer"), _(curDesign->label) );
- wDrawString( newTurnout_d.d, POSX(3.0),
- POSY(6.25), 0.0, message, fp, 30,
- wDrawColorBlack, 0 );
+ strPos.y -= 0.5;
+ DrawString( &newTurnout_d, strPos, 0.0, message, fp, 20, wDrawColorBlack );
sprintf( message, _("%s %d x %d (of %d x %d)"), _("Page"), i+1, j+1, ii, jj );
- wDrawString( newTurnout_d.d, POSX(3.0),
- POSY(5.75), 0.0, message, fp, 20,
- wDrawColorBlack, 0 );
-
+ strPos.y -= 0.5;
+ DrawString( &newTurnout_d, strPos, 0.0, message, fp, 20, wDrawColorBlack );
+ strPos.y -= 0.10;
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) );
- wDrawString( newTurnout_d.d, POSX(3.0),
- POSY(5.50-p*0.25), 0.0,
- message, fp, 20, wDrawColorBlack, 0 );
+ (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 );
- wDrawString( newTurnout_d.d, POSX(3.0),
- POSY(5.50-curDesign->floatCnt*0.25), 0.0,
- message, fp, 20, wDrawColorBlack, 0 );
+ 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 );
- wDrawString( newTurnout_d.d, POSX(3.0),
- POSY(5.50-curDesign->floatCnt*0.25-0.25), 0.0,
- message, fp, 20, wDrawColorBlack, 0 );
- }
-
- wDrawLine( newTurnout_d.d, POSX(0), POSY(0),
- POSX(newTurnout_d.size.x), POSY(0), 0, wDrawLineSolid,
- wDrawColorBlack, 0 );
- wDrawLine( newTurnout_d.d, POSX(newTurnout_d.size.x), POSY(0.0),
- POSX(newTurnout_d.size.x), POSY(newTurnout_d.size.y), 0,
- wDrawLineSolid, wDrawColorBlack, 0 );
- wDrawLine( newTurnout_d.d, POSX(newTurnout_d.size.x), POSY(newTurnout_d.size.y),
- POSX(0.0), POSY(newTurnout_d.size.y), 0, wDrawLineSolid,
- wDrawColorBlack, 0 );
- wDrawLine( newTurnout_d.d, POSX(0.0), POSY(newTurnout_d.size.y),
- POSX(0.0), POSX(0.0), 0, wDrawLineSolid, wDrawColorBlack, 0 );
-
- DrawSegs( &newTurnout_d, zero, 270.0, &tempSegs(0), tempSegs_da.cnt, newTurnTrackGauge, wDrawColorBlack );
-
- 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 );
+ 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 );
+
+ DrawSegsDA( &newTurnout_d, NULL, zero, 270.0, &tempSegs_da, newTurnTrackGauge,
+ wDrawColorBlack, 0 );
+
+ 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:
@@ -2611,45 +2837,68 @@ 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;
- wIndex_t pathLen;
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;
- char *oldLocale = NULL;
- if ((pp=LoadSegs( curDesign, TRUE, &pathLen )) == NULL)
+ coOrd pos;
+ ANGLE_T angle;
+
+#ifndef MKTURNOUT
+ if ( ! ParamCheckInputs( &turnDesignPG, (wControl_p)turnDesignPG.okB ) ) {
return;
+ }
+#endif
- if ( (curDesign->strCnt >= 1 && newTurnLeftDesc[0] == 0) ||
- (curDesign->strCnt >= 2 && newTurnRightDesc[0] == 0) ) {
- NoticeMessage( MSG_TODSGN_DESC_NONBLANK, _("Ok"), NULL );
+ if ((pp=LoadSegs( curDesign, TRUE )) == NULL) {
return;
}
- BuildTrimedTitle( message, "\t", newTurnManufacturer, newTurnLeftDesc, newTurnLeftPartno );
+// if ( (curDesign->strCnt >= 1 && newTurnLeftDesc[0] == 0) ||
+// (curDesign->strCnt >= 2 && newTurnRightDesc[0] == 0) ) {
+// NoticeMessage( MSG_TODSGN_DESC_NONBLANK, _("Ok"), NULL );
+// return;
+// }
+
+ 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;
+ }
}
- oldLocale = SaveLocale("C");
+ SetCLocale();
#endif
f = OpenCustom("a");
sprintf( tempCustom, "\"%s\" \"%s\" \"",
- curDesign->label, "" );
+ curDesign->label, "" );
cp = tempCustom + strlen(tempCustom);
cp = Strcpytrimed( cp, newTurnManufacturer, TRUE );
strcpy( cp, "\" \"" );
@@ -2660,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 );
@@ -2670,57 +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) {
+ 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;
-
- if ((curDesign->type == NTO_CORNU) ||
- (curDesign->type == NTO_CORNUWYE) ||
- (curDesign->type == NTO_CORNU3WAY)) {
- radii_ends = &radii[0];
- }
+// DIST_T * radii_ends = NULL;
- to = CreateNewTurnout( newTurnScaleName, tempCustom, tempSegs_da.cnt, &tempSegs(0),
- pathLen, pp->paths, tempEndPts_da.cnt, &tempEndPts(0), radii, FALSE );
+ 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\"\n", newTurnScaleName, PutTitle(tempCustom) );
+ 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) {
@@ -2729,27 +2986,35 @@ static void NewTurnOk( void * context )
points[3].y = - points[3].y;
points[4].y = - points[4].y;
radii[0] = - radii[0];
- LoadSegs( curDesign, FALSE, &pathLen );
- 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;
+ LoadSegs( curDesign, FALSE );
+ 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),
- pathLen, pp->paths, tempEndPts_da.cnt, &tempEndPts(0), NULL, FALSE );
+ }
+ 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\"\n", newTurnScaleName, PutTitle(tempCustom) );
+ 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:
@@ -2774,29 +3039,40 @@ static void NewTurnOk( void * context )
angles[4] = -angles[4];
angles[5] = -angles[5];
angles[6] = -angles[6];
- LoadSegs( curDesign, FALSE, &pathLen );
- 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;
+ LoadSegs( curDesign, FALSE );
+ 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),
- pathLen, pp->paths, tempEndPts_da.cnt, &tempEndPts(0), NULL, FALSE );
+ }
+ 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\"\n", newTurnScaleName, PutTitle(tempCustom) );
+ 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:
@@ -2805,9 +3081,10 @@ static void NewTurnOk( void * context )
tempCustom[0] = '\0';
#ifndef MKTURNOUT
- if (f)
+ if (f) {
fclose(f);
- RestoreLocale(oldLocale);
+ }
+ SetUserLocale();
includeNontrackSegments = TRUE;
wHide( newTurnW );
DoChangeNotification( CHANGE_PARAMS );
@@ -2826,19 +3103,20 @@ static void NewTurnCancel( wWin_p win )
-static wPos_t turnDesignWidth;
-static wPos_t turnDesignHeight;
+static wWinPix_t turnDesignWidth;
+static wWinPix_t turnDesignHeight;
static void TurnDesignLayout(
- paramData_t * pd,
- int index,
- wPos_t colX,
- wPos_t * w,
- wPos_t * h )
+ paramData_t * pd,
+ int index,
+ wWinPix_t colX,
+ wWinPix_t * w,
+ wWinPix_t * h )
{
- wPos_t inx;
- if ( curDesign == NULL )
+ wIndex_t inx;
+ 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 ) {
@@ -2847,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;
}
@@ -2856,25 +3134,28 @@ static void TurnDesignLayout(
static void SetupTurnoutDesignerW( toDesignDesc_t * newDesign )
{
- static wPos_t partnoWidth;
+ static wWinPix_t partnoWidth;
int inx;
- wPos_t w, h, ctlH;
+ wWinPix_t w, h, ctlH;
if ( newTurnW == NULL ) {
partnoWidth = wLabelWidth( "999-99999-9999" );
turnDesignPLs[I_TOLDESC+1].winData =
- turnDesignPLs[I_TORDESC+1].winData =
- (void*)(intptr_t)partnoWidth;
+ turnDesignPLs[I_TORDESC+1].winData =
+ I2VP(partnoWidth);
partnoWidth += wLabelWidth( " # " );
- newTurnW = ParamCreateDialog( &turnDesignPG, _("Turnout Designer"), _("Print"), NewTurnPrint, NewTurnCancel, TRUE, TurnDesignLayout, F_BLOCK, NULL );
- for ( inx=0; inx<(sizeof designDescs/sizeof designDescs[0]); inx++ ) {
- designDescs[inx]->lineC = wLineCreate( turnDesignPG.win, NULL, designDescs[inx]->lineCnt, designDescs[inx]->lines );
+ 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 );
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 );
@@ -2884,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 );
@@ -2892,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") );
@@ -2944,6 +3232,27 @@ static void SetupTurnoutDesignerW( toDesignDesc_t * newDesign )
w -= partnoWidth;
wStringSetWidth( (wString_p)turnDesignPLs[I_TOLDESC].control, w );
wStringSetWidth( (wString_p)turnDesignPLs[I_TORDESC].control, w );
+ if ( curDesign->type == NTO_CORNU ||
+ 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_TOANGLE+0].winData =
+ 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_TOANGLE+0].winData =
+ turnDesignPLs[I_TOANGLE+1].winData =
+ turnDesignPLs[I_TOANGLE+2].winData =
+ turnDesignPLs[I_TOANGLE+3].winData = &r0d001_90;
+ }
ParamLayoutDialog( &turnDesignPG );
}
}
@@ -2952,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';
@@ -2965,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 );
@@ -2989,22 +3301,24 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
int i;
toDesignDesc_t * dp;
char * type, * name, *cp, *mfg, *descL, *partL, *descR, *partR;
- wIndex_t pathLen;
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<(sizeof designDescs/sizeof designDescs[0]); i++ ) {
+ }
+ for ( i=0; i<COUNT( designDescs ); i++ ) {
dp = designDescs[i];
if ( strcmp( type, dp->label ) == 0 ) {
break;
}
}
- if ( i >= (sizeof designDescs/sizeof designDescs[0]) )
+ if ( i >= COUNT( designDescs ) ) {
return;
+ }
SetupTurnoutDesignerW(dp);
newTurnTrackGauge = GetScaleTrackGauge( to->scaleInx );
@@ -3012,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:
@@ -3040,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;
@@ -3054,31 +3373,34 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
segsDiff = FALSE;
if ( to ) {
- LoadSegs( dp, TRUE, &pathLen );
+ 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:
@@ -3090,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];
@@ -3112,7 +3437,7 @@ EXPORT void EditCustomTurnout( turnoutInfo_t * to, turnoutInfo_t * to1 )
radii[0] = - radii[0];
radii[1] = - radii[1];
}
- LoadSegs( dp, FALSE, &pathLen );
+ LoadSegs( dp, FALSE );
if ( dp->type==NTO_REGULAR ) {
points[2].y = - points[2].y;
radii[0] = - radii[0];
@@ -3131,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:
@@ -3164,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;
+ }
}
}
}
@@ -3190,46 +3520,54 @@ EXPORT void InitNewTurn( wMenu_p m )
{
int i;
ParamRegister( &turnDesignPG );
- for ( i=0; i<(sizeof designDescs/sizeof designDescs[0]); i++ ) {
+ for ( i=0; i<COUNT( designDescs ); i++ ) {
wMenuPushCreate( m, NULL, _(designDescs[i]->label), 0,
- ShowTurnoutDesigner, (void*)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
#ifdef MKTURNOUT
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-
char message[STR_HUGE_SIZE];
char * curScaleName;
double trackGauge;
long units = 0;
wDrawColor drawColorBlack;
-long roadbedColorRGB = 0;
+long newTurnRoadbedColorRGB = 0;
-EXPORT void AbortProg(
- 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();
}
-void * MyRealloc( void * ptr, long size )
+void * MyRealloc( void * ptr, size_t size )
{
return realloc( ptr, size );
}
@@ -3242,8 +3580,13 @@ EXPORT char * MyStrdup( const char * str )
return ret;
}
+EXPORT void LogPrintf(
+ const char * format,
+ ... )
+{
+}
-int NoticeMessage( char * msg, char * yes, char * no, ... )
+int NoticeMessage( const char * msg, const char * yes, const char * no, ... )
{
/*fprintf( stderr, "%s\n", msg );*/
return 0;
@@ -3259,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;
@@ -3284,17 +3627,19 @@ EXPORT void ComputeCurvedSeg(
}
}
-EXPORT char * Strcpytrimed( char * dst, char * src, BOOL_T double_quotes )
+EXPORT char * Strcpytrimed( char * dst, const char * src, BOOL_T double_quotes )
{
- char * cp;
- while (*src && isspace((unsigned char)*src) ) src++;
- if (!*src)
+ const char * cp;
+ 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';
@@ -3302,17 +3647,6 @@ EXPORT char * Strcpytrimed( char * dst, char * src, BOOL_T double_quotes )
}
-EXPORT char * BuildTrimedTitle( char * cp, char * sep, char * mfg, char * desc, 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 )
@@ -3334,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;
@@ -3351,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;
}
}
@@ -3385,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;
@@ -3416,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 }
+};
@@ -3480,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]);
@@ -3502,7 +3844,7 @@ int main ( int argc, char * argv[] )
newTurnScaleName = curScaleName = *argv++;
trackGauge = 0.0;
- for ( inx=0; inx<sizeof scaleMap/sizeof scaleMap[0]; inx++ ) {
+ for ( inx=0; inx<COUNT( scaleMap ); inx++ ) {
if (strcmp( curScaleName, scaleMap[inx].scale ) == 0 ) {
newTurnTrackGauge = trackGauge = scaleMap[inx].trackGauge;
break;
@@ -3516,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++ ));
@@ -3524,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++ ));
@@ -3532,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++ ));
@@ -3542,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++ ));
@@ -3551,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++ );
@@ -3564,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++ );
@@ -3578,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++ );
@@ -3593,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++ );
@@ -3610,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++ );
@@ -3625,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++ ));
@@ -3639,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++ ));
@@ -3649,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++ ));
@@ -3661,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++ ));
@@ -3671,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;
@@ -3680,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;
@@ -3709,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 b15cb91..015f9e8 100644
--- a/app/bin/ctrain.c
+++ b/app/bin/ctrain.c
@@ -17,55 +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
*/
-#ifndef WINDOWS
-#include <errno.h>
-#endif
-#include <ctype.h>
-#include <math.h>
-#include <string.h>
-
-#define PRIVATE_EXTRADATA
-
#include "compound.h"
+#include "cselect.h"
#include "ctrain.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "trackx.h"
-#include "utility.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;
-struct extraData {
- 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;
-};
+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;
+} extraDataCar_t;
#define NOTALAYER (127)
#define CAR_STATE_IGNORED (1L<<17)
@@ -88,32 +77,44 @@ struct extraData {
#define SetProcessed( XX ) (XX)->state |= CAR_STATE_PROCESSED
#define ClrProcessed( XX ) (XX)->state &= ~CAR_STATE_PROCESSED
+// Scroll the window before the train hits the edge
+#define OFF_F( ORIG, SIZE, LO, HI ) \
+ ( ( (HI).x < (ORIG).x+((SIZE).x)*0.2 && (ORIG).x > 0.0 ) || \
+ ( (LO).x > (ORIG).x+((SIZE).x)*0.8 && (ORIG).x+(SIZE).x < mapD.size.x ) || \
+ ( (HI).y < (ORIG).y+((SIZE).y)*0.2 && (ORIG).y > 0.0 ) || \
+ ( (LO).y > (ORIG).y+((SIZE).y)*0.8 && (ORIG).y+(SIZE).y < mapD.size.y ) )
+#define OFF_FOLLOW( LO, HI ) \
+ OFF_F( mainD.orig, mainD.size, LO, HI )
+
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;
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);
#define WALK_CARS_START( CAR, XX, DIR ) \
while (1) { \
- (XX) = GetTrkExtraData(CAR);\
+ (XX) = GET_EXTRA_DATA(CAR, T_CAR, extraDataCar_t);\
{ \
#define WALK_CARS_END( CAR, XX, DIR ) \
@@ -132,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 extraData * xx = GetTrkExtraData(car);
+ 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 extraData * 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 extraData *xx = GetTrkExtraData(trk);
- 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;
@@ -262,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 extraData * xx = GetTrkExtraData(car);
+ 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;
}
- }
+ }
}
}
@@ -336,225 +338,296 @@ 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 extraData * xx = GetTrkExtraData(car);
- int dir;
- vector_t coupler[2];
- struct extraData * 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 = GetTrkExtraData(car1);
- 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 extraData * xx = GetTrkExtraData(trk);
- 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 10000.0;
+ }
+
+ 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 extraData * xx = GetTrkExtraData(car);
- 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 extraData * xx;
- trk = NewTrack(index, T_CAR, 2, sizeof(*xx));
- /*SetEndPts( trk, 0 );*/
- xx = GetTrkExtraData(trk);
- /*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 extraData * xx = GetTrkExtraData(trk);
- 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 extraData *xx = GetTrkExtraData(car);
- 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 extraData *xx = GetTrkExtraData(car);
- 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;
-
- 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 extraData *xx = GetTrkExtraData(car);
+ 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 extraData *xx = GetTrkExtraData(car);
+ struct extraDataCar_t *xx = GET_EXTRA_DATA(car, T_CAR, extraDataCar_t);
return ReplayCarItem(xx->item,data,len);
}
@@ -567,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
};
/*
@@ -618,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 *, wPos_t, wPos_t);
+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 *);
+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
@@ -658,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, (void*)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, (void*)120 },
+ { PD_MESSAGE, NULL, NULL, 0, I2VP(120) },
#define I_POS (2)
- { PD_MESSAGE, NULL, NULL, 0, (void*)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, (void*)(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, (void *)120 }
+ { PD_MESSAGE, NULL, NULL, PDO_DLGIGNOREX, I2VP(120) }
};
-static paramGroup_t trainPG = { "train", 0, trainPLs, sizeof trainPLs/sizeof trainPLs[0] };
+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;
}
/**
@@ -721,589 +793,593 @@ static wIndex_t FindLoco(
*/
static void SpeedRedraw(
- wDraw_p d,
- void * context,
- wPos_t w,
- wPos_t h)
-{
- wPos_t y, pts[4][2];
- trainControlDlg_p dlg = (trainControlDlg_p)context;
- struct extraData * xx;
- wDrawColor drawColor;
- wDrawClear(d);
-
- if (dlg == NULL || dlg->train == NULL) {
- return;
- }
-
- xx = GetTrkExtraData(dlg->train);
-
- if (xx->speed > MAX_SPEED) {
- xx->speed = MAX_SPEED;
- }
-
- if (xx->speed < 0) {
- xx->speed = 0;
- }
-
- y = (wPos_t)(xx->speed/MAX_SPEED*((SLIDER_HEIGHT-SLIDER_THICKNESS))
- +SLIDER_THICKNESS/2);
- drawColor = wDrawFindColor(wRGB(160, 160, 160));
- pts[0][1] = pts[1][1] = y-SLIDER_THICKNESS/2;
- pts[2][1] = pts[3][1] = y+SLIDER_THICKNESS/2;
- pts[0][0] = pts[3][0] = 0;
- pts[1][0] = pts[2][0] = SLIDER_WIDTH;
- wDrawPolygon(d, pts, NULL, 4, drawColor, 0, 0, 0, 1, 0);
- drawColor = wDrawFindColor(wRGB(220, 220, 220));
- pts[0][1] = pts[1][1] = y+SLIDER_THICKNESS/2;
- pts[2][1] = pts[3][1] = y;
- pts[0][0] = pts[3][0] = 0;
- pts[1][0] = pts[2][0] = SLIDER_WIDTH;
- wDrawPolygon(d, pts, NULL, 4, drawColor, 0, 0, 0, 1, 0);
- wDrawLine(d, 0, y, SLIDER_WIDTH, y, 1, wDrawLineSolid, drawColorRed, 0);
- wDrawLine(d, 0, y+SLIDER_THICKNESS/2, SLIDER_WIDTH, y+SLIDER_THICKNESS/2, 1,
- wDrawLineSolid, drawColorBlack, 0);
- wDrawLine(d, 0, y-SLIDER_THICKNESS/2, SLIDER_WIDTH, y-SLIDER_THICKNESS/2, 1,
- wDrawLineSolid, drawColorBlack, 0);
- 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));
+ 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;
+ siz.y = SLIDER_THICKNESS/speedD.dpi;
+ pos0.x = 0.0;
+ pos0.y = y - siz.y/2.0;
+ DrawRectangle( &speedD, pos0, siz, drawColor, DRAW_FILL );
+ pos1.x = siz.x;
+ pos1.y = pos0.y;
+ DrawLine( &speedD, pos0, pos1, 1, drawColorBlack );
+ pos0.y = pos1.y = y;
+ 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));
}
static void SpeedAction(
- wAction_t action,
- coOrd pos)
+ wAction_t action,
+ coOrd pos)
{
- trainControlDlg_p dlg = curTrainDlg;
- struct extraData * 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 = GetTrkExtraData(dlg->train);
+ 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 extraData * 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 = GetTrkExtraData(dlg->train);
- 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 extraData * xx;
-
- if (curTrainDlg == NULL) {
- return;
- }
+ wIndex_t inx = -1;
+ struct extraDataCar_t * xx;
- if (oldLoco && (inx=FindLoco(oldLoco))>=0) {
- if (newLoco) {
- locoList(inx).loco = newLoco;
- xx = GetTrkExtraData(newLoco);
- 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 = GetTrkExtraData(newLoco);
- 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 extraData * 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 = GetTrkExtraData(train);
+ 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 extraData * xx;
+ struct extraDataCar_t * xx;
- if (train == NULL) {
- return;
- }
+ if (train == NULL) {
+ return;
+ }
- xx = GetTrkExtraData(train);
- 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 extraData *xx, *xx0=GetTrkExtraData(train);
- 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 extraData * 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 = GetTrkExtraData(dlg->train);
- 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 = GetTrkExtraData(dlg->train);
- 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 = GetTrkExtraData(dlg->train);
-
- 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 = GetTrkExtraData(dlg->train);
- xx->autoReverse = *(long*)valueP!=0;
- break;
-
- case I_DIR:
- if (dlg->train == NULL) {
- return;
- }
-
- xx = GetTrkExtraData(dlg->train);
- 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);
- 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;
}
@@ -1313,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 extraData * 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 = GetTrkExtraData(car);
- 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 extraData * 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 extraData *xx = GetTrkExtraData(car);
- 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 = 100000, dist;
- struct extraData * 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;
+ }
+
+ pos0 = *pos;
+
+ coOrd hi,lo;
- for (trk=NULL; TrackIterate(&trk);) {
- if (GetTrkType(trk) == T_CAR) {
- xx = GetTrkExtraData(trk);
+ GetBoundingBox(trk,&hi,&lo);
- if (IsIgnored(xx)) {
- continue;
- }
+ if (hi.x < pos0.x ||
+ lo.x > pos0.x ||
+ hi.y < pos0.y ||
+ lo.y > pos0.y ) {
+ continue;
+ }
- pos0 = *pos;
- dist = DistanceCar(trk, &pos0);
+ dist = DistanceCar(trk, &pos0);
- if (dist < dist1) {
- dist1 = dist;
- trk1 = trk;
- pos1 = 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 extraData *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 extraData *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 = GetTrkExtraData(loco);
- 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 extraData * xx1, * xx2;
- track_p loco1, loco2;
- track_p car;
- int dir;
- xx1 = GetTrkExtraData(car1);
- xx2 = GetTrkExtraData(car2);
-
- 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 = GetTrkExtraData(loco1);
- xx2 = GetTrkExtraData(loco2);
+ 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 extraData *xx0 = GetTrkExtraData(car0), *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 extraData *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 = GetTrkExtraData(car);
- 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);
}
/*
@@ -1746,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 extraData *xx0, *xx1;
- coOrd pos1;
- DIST_T dist0, distc, dist=100000.0;
- int dir0, dir1, dirl;
- ANGLE_T angle;
- traverseTrack_t trvTrk0, trvTrk1;
- xx0 = xx1 = GetTrkExtraData(car0);
- /* 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 = GetTrkExtraData(car1);
-
- 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;
@@ -1853,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 = GetTrkExtraData(loco1);
- 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 extraData *xx0;
- int dir0;
- xx0 = GetTrkExtraData(car0);
- 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 extraData *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 extraData * xx = GetTrkExtraData(car0);
- 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 extraData * 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 = GetTrkExtraData(train);
- 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 extraData *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 = GetTrkExtraData(train);
-
- 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_MAIND(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 extraData * 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 = GetTrkExtraData(train);
+ 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 extraData * 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 = GetTrkExtraData(car);
- ClrProcessed(xx);
- }
-
- for (car=NULL; TrackIterate(&car);) {
- if (GetTrkType(car) != T_CAR) {
- continue;
- }
-
- xx = GetTrkExtraData(car);
-
- if (IsProcessed(xx)) {
- continue;
- }
-
- loco = FindMasterLoco(car, NULL);
-
- if (loco != NULL) {
- xx = GetTrkExtraData(loco);
- } 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 = GetTrkExtraData(car);
- 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 extraData * 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 = GetTrkExtraData(trk);
+ 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 extraData * 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 = GetTrkExtraData(train);
+ 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;
}
/*
@@ -2480,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 extraData * xx=NULL;
- wPos_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();
- DoChangeNotification(CHANGE_PARAMS);
- }
- }
-
- 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*)goI);
- 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_HOTBAR)) == 0);
- 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 = GetTrkExtraData(currCar);
- 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 = GetTrkExtraData(currCar);
- LogPrintf("selected %s\n", CarItemNumber(xx->item));
-
- for (dir=0; dir<2; dir++) {
- int dir1 = dir;
- track_p car1 = currCar;
- struct extraData * xx1 = GetTrkExtraData(car1);
- 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 = GetTrkExtraData(currCar);
- 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 = GetTrkExtraData(trk0);
-
- 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 = GetTrkExtraData(trk1);
- 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 = GetTrkExtraData(trainFuncCar);
- 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 = GetTrkExtraData(trk0);
- }
-
- 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;
}
@@ -2844,293 +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/newcar.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/ballgreen.xpm"
-#include "bitmaps/ballred.xpm"
+#include "bitmaps/greendot.xpm"
+#include "bitmaps/reddot.xpm"
-static void CmdTrainStopGo(void * junk)
+static void CmdTrainStopGo(void * unused)
{
- wIcon_p icon;
-
- if (trainsState == TRAINS_STOP) {
- icon = goI;
- RestartTrains();
- } else {
- trainsState = TRAINS_STOP;
- icon = stopI;
- 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 * junk)
+static void CmdTrainExit(void * unused)
{
- Reset();
- InfoSubstituteControls(NULL, NULL);
+ Reset();
+ InfoSubstituteControls(NULL, NULL);
}
static void TrainFunc(
- void * action)
-{
- struct extraData * 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 = GetTrkExtraData(trainFuncCar);
- angle = FindAngle(xx->trvTrk.pos, trainFuncPos);
- angle = NormalizeAngle(angle-xx->trvTrk.angle);
- dir = (angle>90&&angle<270);
-
- switch ((int)(long)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 = GetTrkExtraData(temp0);
- temp0->deleted = TRUE;
- /*DeleteTrack( temp0, FALSE );*/
- CarItemUpdate(xx1->item);
- }
-
- temp0 = trainFuncCar;
- WALK_CARS_END(trainFuncCar, xx, dir)
-
- if (temp0) {
- xx1 = GetTrkExtraData(temp0);
- 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 = GetTrkExtraData(loco);
- 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 = GetTrkExtraData(loco);
- 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", _("Train"),
- wIconCreatePixMap(train_xpm), LEVEL0_50, IC_POPUP3|IC_LCLICK|IC_RCLICK, 0,
- NULL);
- stopI = wIconCreatePixMap(ballred);
- goI = wIconCreatePixMap(ballgreen);
- trainPauseB = AddToolbarButton("cmdTrainPause", stopI, IC_MODETRAIN_ONLY,
- CmdTrainStopGo, NULL);
- AddToolbarButton("cmdTrainExit", wIconCreatePixMap(exit_xpm), IC_MODETRAIN_ONLY,
- CmdTrainExit, NULL);
- newcarB = AddToolbarButton("cmdTrainNewCar", wIconCreatePixMap(newcar_xpm),
- IC_MODETRAIN_ONLY, CarItemLoadList, NULL);
- T_CAR = InitObject(&carCmds);
- trainPopupM = MenuRegister("Train Commands");
- trainPopupMI[DO_UNCOUPLE] = wMenuPushCreate(trainPopupM, "", _("Uncouple"), 0,
- TrainFunc, (void*)DO_UNCOUPLE);
- trainPopupMI[DO_FLIPCAR] = wMenuPushCreate(trainPopupM, "", _("Flip Car"), 0,
- TrainFunc, (void*)DO_FLIPCAR);
- trainPopupMI[DO_PENCILS_ON] = wMenuPushCreate(trainPopupM, "", _("Clearance Lines On"), 0,
- TrainFunc, (void*)DO_PENCILS_ON);
- trainPopupMI[DO_PENCILS_OFF] = wMenuPushCreate(trainPopupM, "", _("Clearance Lines Off"), 0,
- TrainFunc, (void*)DO_PENCILS_OFF);
- trainPopupMI[DO_FLIPTRAIN] = wMenuPushCreate(trainPopupM, "", _("Flip Train"),
- 0, TrainFunc, (void*)DO_FLIPTRAIN);
- trainPopupMI[DO_MUMASTER] = wMenuPushCreate(trainPopupM, "", _("MU Master"),
- 0, TrainFunc, (void*)DO_MUMASTER);
- trainPopupMI[DO_CHANGEDIR] = wMenuPushCreate(trainPopupM, "",
- _("Change Direction"), 0, TrainFunc, (void*)DO_CHANGEDIR);
- trainPopupMI[DO_STOP] = wMenuPushCreate(trainPopupM, "", _("Stop"), 0,
- TrainFunc, (void*)DO_STOP);
- wMenuSeparatorCreate(trainPopupM);
- trainPopupMI[DO_DELCAR] = wMenuPushCreate(trainPopupM, "", _("Remove Car"),
- 0, TrainFunc, (void*)DO_DELCAR);
- trainPopupMI[DO_DELTRAIN] = wMenuPushCreate(trainPopupM, "",
- _("Remove Train"), 0, TrainFunc, (void*)DO_DELTRAIN);
- AddPlaybackProc("TRAINSTOPGO", (playbackProc_p)TrainStopGoPlayback, NULL);
- AddPlaybackProc("TRAINPAUSE", (playbackProc_p)TrainTimeDoPause, NULL);
- AddPlaybackProc("TRAINMOVIE", (playbackProc_p)TrainDoMovie, NULL);
+ 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_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_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 858860b..0e06332 100644
--- a/app/bin/ctrain.h
+++ b/app/bin/ctrain.h
@@ -17,55 +17,72 @@
*
* 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
#define HAVE_CTRAIN_H
#include "common.h"
-#include "include/paramfile.h"
-#include "track.h"
+#include "track.h" //- traverseTrack
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 );
+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 150f381..9bae6ae 100644
--- a/app/bin/cturnout.c
+++ b/app/bin/cturnout.c
@@ -1,5 +1,5 @@
/** \file cturnout.c
- * T_TURNOUT
+ * Turnout object handling
*/
/* XTrkCad - Model Railroad CAD
@@ -17,14 +17,10 @@
*
* 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 <ctype.h>
-#include <math.h>
-#include <stdint.h>
-#include <string.h>
-
+#include "common.h"
#include "ccurve.h"
#include "tbezier.h"
#include "tcornu.h"
@@ -34,14 +30,13 @@
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
+#include "cselect.h"
#include "include/paramfile.h"
#include "track.h"
-#include "trackx.h"
-#include "utility.h"
+#include "trkendpt.h"
+#include "common-ui.h"
EXPORT TRKTYP_T T_TURNOUT = -1;
@@ -51,57 +46,63 @@ EXPORT TRKTYP_T T_TURNOUT = -1;
EXPORT dynArr_t turnoutInfo_da;
-EXPORT turnoutInfo_t * curTurnout = NULL;
+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;
+/** @logcmd @showrefby traverseTurnout=n cturnout.c */
static int log_traverseTurnout = 0;
+/** @logcmd @showrefby suppresscheckpaths=n cturnout.c */
static int log_suppressCheckPaths = 0;
+/** @logcmd @showrefby splitturnout=n cturnout.c */
static int log_splitturnout = 0;
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(void);
-static void SelTurnoutEndPt( wIndex_t, coOrd );
-static void HilightEndPt( void );
+static void RedrawTurnout( wDraw_p d, void * context, wWinPix_t x,
+ wWinPix_t y );
+static void SelTurnoutEndPt(wIndex_t, coOrd);
+static void HilightEndPt(void);
-static wPos_t turnoutListWidths[] = { 80, 80, 220 };
-static const char * turnoutListTitles[] = { N_("Manufacturer"), N_("Part No"), N_("Description") };
+static wWinPix_t turnoutListWidths[] = { 80, 80, 220 };
+static const char* turnoutListTitles[] = { N_("Manufacturer"), N_("Part No"), N_("Description") };
static paramListData_t listData = { 13, 400, 3, turnoutListWidths, turnoutListTitles };
-static const char * hideLabels[] = { N_("Hide"), NULL };
-static paramDrawData_t turnoutDrawData = { 490, 200, (wDrawRedrawCallBack_p)RedrawTurnout, SelTurnoutEndPt, &turnoutD };
+static const char* hideLabels[] = { N_("Hide"), NULL };
+static paramDrawData_t turnoutDrawData = { 490, 200, RedrawTurnout, SelTurnoutEndPt, &turnoutD };
static paramData_t turnoutPLs[] = {
#define I_LIST (0)
#define turnoutListL ((wList_p)turnoutPLs[I_LIST].control)
- { PD_LIST, &turnoutInx, "list", PDO_NOPREF|PDO_DLGRESIZEW, &listData, NULL, BL_DUP },
+ { PD_LIST, &turnoutInx, "list", PDO_NOPREF | PDO_DLGRESIZEW, &listData, NULL, BL_DUP },
#define I_DRAW (1)
#define turnoutDrawD ((wDraw_p)turnoutPLs[I_DRAW].control)
- { PD_DRAW, NULL, "canvas", PDO_NOPSHUPD|PDO_DLGUNDERCMDBUTT|PDO_DLGRESIZE, &turnoutDrawData, NULL, 0 },
+ { PD_DRAW, NULL, "canvas", PDO_NOPSHUPD | PDO_DLGUNDERCMDBUTT | PDO_DLGRESIZE, &turnoutDrawData, NULL, 0 },
#define I_NEW (2)
#define turnoutNewM ((wMenu_p)turnoutPLs[I_NEW].control)
{ 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, /*CAST_AWAY_CONST*/(void*)hideLabels, NULL, BC_NOBORDER } };
-static paramGroup_t turnoutPG = { "turnout", 0, turnoutPLs, sizeof turnoutPLs/sizeof turnoutPLs[0] };
+ { PD_TOGGLE, &hideTurnoutWindow, "hide", PDO_DLGCMDBUTTON, hideLabels, NULL, BC_NOBORDER }
+};
+static paramGroup_t turnoutPG = { "newFixedTrack", 0, turnoutPLs, COUNT( turnoutPLs ) };
#endif
-
/****************************************
*
* TURNOUT LIST MANAGEMENT
@@ -109,90 +110,94 @@ static paramGroup_t turnoutPG = { "turnout", 0, turnoutPLs, sizeof turnoutPLs/si
*/
-EXPORT turnoutInfo_t * CreateNewTurnout(
- char * scale,
- char * title,
- wIndex_t segCnt,
- trkSeg_p segData,
- wIndex_t pathLen,
- PATHPTR_T paths,
- EPINX_T endPtCnt,
- trkEndPt_t * endPts,
- DIST_T * radii,
- wBool_t updateList )
+EXPORT turnoutInfo_t* CreateNewTurnout(
+ 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;
+ turnoutInfo_t* to;
+ long changes = 0;
- to = FindCompound( FIND_TURNOUT, scale, title );
+ to = FindCompound(FIND_TURNOUT, scale, title);
if (to == NULL) {
- DYNARR_APPEND( turnoutInfo_t *, turnoutInfo_da, 10 );
- to = (turnoutInfo_t*)MyMalloc( sizeof *to );
- turnoutInfo(turnoutInfo_da.cnt-1) = to;
- to->title = MyStrdup( title );
- to->scaleInx = LookupScale( scale );
+ DYNARR_APPEND(turnoutInfo_t*, turnoutInfo_da, 10);
+ to = (turnoutInfo_t*)MyMalloc(sizeof * to);
+ turnoutInfo(turnoutInfo_da.cnt - 1) = to;
+ to->title = MyStrdup(title);
+ to->scaleInx = LookupScale(scale);
changes = CHANGE_PARAMS;
}
to->segCnt = segCnt;
trkSeg_p seg_p;
- to->segs = (trkSeg_p)memdup( segData, (sizeof (*segData) * segCnt ));
+ 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;
- }
- CopyPoly(to->segs,segCnt);
- FixUpBezierSegs(to->segs,to->segCnt);
- GetSegBounds( zero, 0.0, segCnt, to->segs, &to->orig, &to->size );
+ for (int i = 0; i < segCnt; i++) {
+ 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));
- to->pathLen = pathLen;
- to->paths = (PATHPTR_T)memdup( paths, (sizeof *to->paths) * to->pathLen );
+ if (options & COMPOUND_OPTION_PATH_OVERRIDE) {
+ to->pathOverRide = TRUE;
+ }
+ 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')
- wListAddValue( turnoutListL, message, NULL, to );
+ 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->barScale = curBarScale > 0 ? curBarScale : -1;
to->special = TOnormal;
- if (radii) {
- to->special = TOcurved;
- DYNARR_SET(DIST_T,to->u.curved.radii,to->endCnt);
- for (int i=0;i<to->endCnt;i++) {
- DYNARR_N(DIST_T,to->u.curved.radii,i) = radii[i];
- }
+ if (updateList && changes) {
+ DoChangeNotification(changes);
}
- if (updateList && changes)
- DoChangeNotification( changes );
return to;
}
/**
* Delete a turnout parameter from the list and free the related memory
*
- * \param [IN] to turnout definition to be deleted
+ * \param [IN] toInfo turnout definition to be deleted
+ *
+ * \returns True if it succeeds
*/
BOOL_T
-DeleteTurnout(void *toInfo)
+DeleteTurnout(void* toInfo)
{
- turnoutInfo_t * to = (turnoutInfo_t *)toInfo;
+ turnoutInfo_t* to = (turnoutInfo_t*)toInfo;
MyFree(to->title);
MyFree(to->segs);
MyFree(to->endPt);
MyFree(to->paths);
if (to->special) {
- DYNARR_FREE(DIST_T, to->u.curved.radii);
+ switch (to->special) {
+ case TOadjustable:
+ default:;
+ }
}
MyFree(to);
@@ -200,299 +205,283 @@ DeleteTurnout(void *toInfo)
}
/**
- * Delete all turnout definitions that came from a specific parameter file.
- * Due to the way the definitions are loaded from file it is safe to
+ * Delete all turnout definitions that came from a specific parameter file.
+ * Due to the way the definitions are loaded from file it is safe to
* assume that they form a contiguous block in the array.
- *
+ *
* \param [IN] fileIndex parameter file
*/
void
DeleteTurnoutParams(int fileIndex)
{
- int inx=0;
- int startInx = -1;
- int cnt = 0;
-
- // go to the start of the block
- while (inx < turnoutInfo_da.cnt &&
- turnoutInfo(inx)->paramFileIndex != fileIndex) {
- startInx = inx++;
- }
-
- // delete them
- for (; inx < turnoutInfo_da.cnt &&
- turnoutInfo(inx)->paramFileIndex == fileIndex; inx++) {
- turnoutInfo_t * to = turnoutInfo(inx);
- if (to->paramFileIndex == fileIndex) {
- DeleteTurnout(to);
- cnt++;
- }
- }
-
- // copy down the rest of the list to fill the gap
- startInx++;
- while (inx < turnoutInfo_da.cnt) {
- turnoutInfo(startInx++) = turnoutInfo(inx++);
- }
-
- // and reduce the actual number
- turnoutInfo_da.cnt -= cnt;
+ int inx = 0;
+ int startInx = -1;
+ int cnt = 0;
+
+ // go to the start of the block
+ while (inx < turnoutInfo_da.cnt &&
+ turnoutInfo(inx)->paramFileIndex != fileIndex) {
+ startInx = inx++;
+ }
+
+ // delete them
+ for (; inx < turnoutInfo_da.cnt &&
+ turnoutInfo(inx)->paramFileIndex == fileIndex; inx++) {
+ turnoutInfo_t* to = turnoutInfo(inx);
+ if (to->paramFileIndex == fileIndex) {
+ DeleteTurnout(to);
+ cnt++;
+ if ( to == curTurnout ) {
+ curTurnout = NULL;
+ }
+ }
+ }
+
+ // copy down the rest of the list to fill the gap
+ startInx++;
+ while (inx < turnoutInfo_da.cnt) {
+ turnoutInfo(startInx++) = turnoutInfo(inx++);
+ }
+
+ // and reduce the actual number
+ turnoutInfo_da.cnt -= cnt;
}
-/**
- * Check to find out to what extent the contents of the parameter file can be used with
- * the current layout scale / gauge.
- *
+/**
+ * Check to find out to what extent the contents of the parameter file can be used with
+ * the current layout scale / gauge.
+ *
* If parameter scale == layout and parameter gauge == layout we have an exact fit.
- * If parameter gauge == layout we have compatible track.
- * OO scale is special cased. If the layout is in OO scale track in HO is considered
+ * If parameter gauge == layout we have compatible track.
+ * OO, O and N scales are special cased. If the layout is in OO scale track in HO is considered
* an exact fit in spite of scale differences.
- *
+ *
* \param paramFileIndex
* \param scaleIndex
- * \return
+ * \return enum paraFileState
*/
-enum paramFileState
-GetTrackCompatibility(int paramFileIndex, SCALEINX_T scaleIndex)
-{
+enum paramFileState
+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++) {
- turnoutInfo_t *to = turnoutInfo( i );
- if (to->paramFileIndex == paramFileIndex ) {
- if (to->scaleInx == scaleIndex ) {
+ 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 (GetScaleTrackGauge(to->scaleInx) == gauge &&
- ret < PARAMFILE_COMPATIBLE) {
- ret = PARAMFILE_COMPATIBLE;
- // handle special cases
- // if layout is OO scale, HO scale track is considered exact
- char *layoutScaleName = GetScaleName(scaleIndex);
- char *paramScaleName = GetScaleName(to->scaleInx);
- if (!strcmp(layoutScaleName, "OO") &&
- !strcmp(paramScaleName, "HO")) {
- ret = PARAMFILE_FIT;
- }
- //if layout is in Japanese or British N scale, N scale is exact
- if ((!strcmp(layoutScaleName, "N(UK)") ||
- !strcmp(layoutScaleName, "N(JP)")) &&
- !strcmp(paramScaleName, "N")) {
- ret = PARAMFILE_FIT;
- }
- }
+ } else if (fit == FIT_COMPATIBLE) {
+ ret = PARAMFILE_COMPATIBLE;
}
}
}
return(ret);
}
-
+/**
+ * Check Paths verifies that each track segment is on at least one path.
+ * It will assume new-P or old-P order is possible and does not change it.
+ *
+ * \param segCnt
+ * \param segs
+ * \param paths
+ *
+ * \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 ((segCnt == 0) || !segs) { return -1; }
+ if (!paths) { return -1; }
int pc, ps;
PATHPTR_T pp = 0;
- int inx;
- static dynArr_t segMap_da;
+
int segInx[2], segEp[2];
- int segTrkLast = -1;
-
+// int segTrkLast = -1;
+
// Check that each track segment is on at least one path
- int suppressCheckPaths = log_suppressCheckPaths > 0 ? logTable(log_suppressCheckPaths).level : 0;
- if ( suppressCheckPaths == 0 ) {
- char trkSegInx = 0;
- for ( int inx = 0; inx<segCnt; inx++ ) {
- if ( IsSegTrack( &segs[inx] ) ) {
- trkSegInx++;
+ // 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;
+ 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 ) {
- // path is: 'N' 'A' 'M' 'E' 0 1 2 0 3 4 0 0
- // skip name
- for ( ; *cp; cp++ );
+ while (*cp) {
+ // 0-9 are x00 to x09 or the negative equivalent (backwards)
+ // Pathlist is: Path00Path000
+ // 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!
+ }
+ if (*cp) { // we broke early
+ break; // get out - we found it
+ }
cp++;
- // check each path component
- for ( ; cp[0] || cp[1]; cp++ )
- if ( abs(*cp) == trkSegInx )
- break;
- if ( *cp ) // we broke early
- break;
- cp += 2;; // Skip 2nd 0
+ cp++; // Go to next path - past two 0s
}
- if ( !*cp ) { // we looked and didn't find
- InputError( "Track segment %d not on Path", FALSE, inx+1 );
+ if (!*cp) { // we looked through all the paths and didn't find it
+// InputError("Track segment %d not on Path", FALSE, inx + 1);
+ NoticeMessage(MSG_SEGMENT_NOT_ON_PATH, _("OK"), NULL, inx + 1,
+ PutTitle(sTitle));
return -1;;
}
}
}
}
-typedef struct {
- trkSeg_p seg;
- int indx;
-} segMap_t, * segMap_p;
-
-#define segMap(N) DYNARR_N( segMap_t, segMap_da, N )
- segMap_p sg;
- DYNARR_RESET( segMap_t, segMap_da );
- // Don't reshuffle segs, but build an offset map instead just of the tracks
- // Use the map to set up the paths to point at the correct segs in the Turnout
- for ( inx=0; inx<segCnt; inx++ ) {
- if ( IsSegTrack(&segs[inx]) ) {
- DYNARR_APPEND( segMap_t, segMap_da, 10 );
- sg = &DYNARR_LAST(segMap_t,segMap_da);
- sg->seg = &segs[inx];
- sg->indx = inx;
- }
- }
-
- 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++ ) {
-#ifdef LATER
- if (*pp >= '0' && *pp <= '9')
- *pp -= '0';
- else if (*pp >= 'A' && *pp <= 'Z')
- *pp -= 'A' - 10;
- if (*pp < 0 || *pp > segCnt) {
- InputError( _("Turnout path[%d:%d] out of bounds: %d"),
- FALSE, pc, ps, *pp);
- return -1;
- }
-#endif
- //Rewrite the Path to point to the nth Track seg using the Map
- int old_inx;
- EPINX_T old_EP;
- if (pp[0]!=0 && ps==0) { // First or only one
- GetSegInxEP( pp[0], &old_inx, &old_EP );
- if (old_inx<0 || old_inx>= segMap_da.cnt) {
- InputError( _("Turnout path[%d] %d is not a valid track segment"),
- FALSE, pc, ps );
- return -1;
- }
- SetSegInxEP( &pp[0], DYNARR_N(segMap_t,segMap_da,old_inx).indx, old_EP);
+ 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++) {
+ if (pp[0] != 0 && ps == 0) { // First or only one
}
- if (pp[0]!=0 && pp[1]!=0 ) {
- //Rewrite the Path to point to the nth Track seg using the Map
- GetSegInxEP( pp[1], &old_inx, &old_EP );
- if (old_inx<0 || old_inx>= segMap_da.cnt) {
- InputError( _("Turnout path[%d] %d is not a valid track segment"),
- FALSE, pc, ps );
- return -1;
- }
- SetSegInxEP( &pp[1], DYNARR_N(segMap_t,segMap_da,old_inx).indx, old_EP);
+ if (pp[0] != 0 && pp[1] != 0) {
/* check connectivity */
DIST_T d;
- GetSegInxEP( pp[0], &segInx[0], &segEp[0] );
- GetSegInxEP( pp[1], &segInx[1], &segEp[1] );
- if ( !IsSegTrack( &segs[segInx[0]] ) ) {
- InputError( _("Turnout path[%d] %d is not a track segment"),
- FALSE, pc, pp[0] );
+ GetSegInxEP(pp[0], &segInx[0], &segEp[0]);
+ 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]);
return -1;
}
- if ( !IsSegTrack( &segs[segInx[1]] ) ) {
- InputError( _("Turnout path[%d] %d is not a track segment"),
- FALSE, pc, pp[1] );
+ if (!IsSegTrack(&segs[segInx[1]])) {
+ InputError(_("CheckPath: Turnout path[%d] %d is not a track segment"),
+ 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);
+ 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( _("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;
}
}
}
}
- return pp-paths+1;
+ return (wIndex_t)(pp - paths + 1);
}
static BOOL_T ReadTurnoutParam(
- char * firstLine )
+ char* firstLine)
{
char scale[10];
- char *title;
- turnoutInfo_t * to;
+ char* title;
+ turnoutInfo_t* to;
+ PATHPTR_T cp;
+ long options = 0;
- if ( !GetArgs( firstLine+8, "sq", scale, &title ) )
+ if (!GetArgs(firstLine + 8, "sqc", scale, &title, &cp)) {
return FALSE;
- DYNARR_RESET( trkEndPt_t, tempEndPts_da );
+ }
+ if (cp != NULL)
+ if (!GetArgs((char*)cp, "l", &options)) {
+ return FALSE;
+ }
+ TempEndPtsReset();
pathCnt = 0;
- if ( !ReadSegs() )
+ if (!ReadSegs()) {
return FALSE;
- CheckPaths( tempSegs_da.cnt, &tempSegs(0), pathPtr );
- to = CreateNewTurnout( scale, title, tempSegs_da.cnt, &tempSegs(0),
- pathCnt, pathPtr, tempEndPts_da.cnt, &tempEndPts(0), NULL, FALSE );
- MyFree( title );
- if (to == NULL)
+ }
+ PATHPTR_T pPaths = NULL;
+ if ( pathPtr && pathPtr[0] && pathCnt > 0 ) {
+ pPaths = pathPtr;
+ }
+ CheckPaths( tempSegs_da.cnt, &tempSegs(0), pPaths, title );
+ to = CreateNewTurnout(scale, title, tempSegs_da.cnt, &tempSegs(0),
+ pPaths, TempEndPtsCount(), TempEndPt(0), FALSE, options );
+ MyFree(title);
+ if (to == NULL) {
return FALSE;
+ }
if (tempSpecial[0] != '\0') {
- if (strncmp( tempSpecial, ADJUSTABLE, strlen(ADJUSTABLE) ) == 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 ) )
+ if (!GetArgs(tempSpecial + strlen(ADJUSTABLE), "ff",
+ &to->u.adjustable.minD, &to->u.adjustable.maxD)) {
return FALSE;
+ }
} else {
InputError(_("Unknown special case"), TRUE);
return FALSE;
}
}
if (tempCustom[0] != '\0') {
- to->customInfo = MyStrdup( tempCustom );
+ to->customInfo = MyStrdup(tempCustom);
}
return TRUE;
}
-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;
+ turnoutInfo_t* to, * to1 = NULL;
turnoutInx = 0;
- for ( inx = 0; inx < turnoutInfo_da.cnt; inx++ ) {
+ for (inx = 0; inx < turnoutInfo_da.cnt; inx++) {
to = turnoutInfo(inx);
- if ( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- CompatibleScale( TRUE, to->scaleInx, scale ) &&
- /*strcasecmp( to->scale, scaleName ) == 0 && */
- ( epCnt <= 0 || epCnt == to->endCnt ) ) {
- if (to1==NULL)
+ 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) {
to1 = to;
- if ( to == curTurnout ) {
+ }
+ if (to == curTurnout) {
to1 = to;
- turnoutInx = wListGetCount( list );
+ turnoutInx = wListGetCount(list);
}
- FormatCompoundTitle( mode, to->title );
+ FormatCompoundTitle(mode, to->title);
if (message[0] != '\0') {
- wListAddValue( list, message, NULL, to );
+ 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;
+ }
}
}
}
}
return to1;
}
-
+
/****************************************
*
* Adjustable Track Support
@@ -501,20 +490,22 @@ EXPORT turnoutInfo_t * TurnoutAdd( long mode, SCALEINX_T scale, wList_p list, co
static void ChangeAdjustableEndPt(
- track_p trk,
- EPINX_T ep,
- DIST_T d )
+ track_p trk,
+ EPINX_T ep,
+ DIST_T d)
{
- struct extraData * xx = GetTrkExtraData(trk);
+ 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 );
+ ANGLE_T angle = GetTrkEndAngle(trk, ep);
+ Translate(&pos, GetTrkEndPos(trk, 1 - ep), angle, d);
UndoModify(trk);
- SetTrkEndPoint( trk, ep, pos, angle );
- if ( ep == 0 )
+ SetTrkEndPoint(trk, ep, pos, angle);
+ if (ep == 0) {
xx->orig = pos;
- for ( segPtr=xx->segs; segPtr<&xx->segs[xx->segCnt]; segPtr++ ) {
+ }
+ for (segPtr = xx->segs; segPtr < &xx->segs[xx->segCnt]; segPtr++) {
switch (segPtr->type) {
case SEG_STRLIN:
case SEG_STRTRK:
@@ -524,19 +515,19 @@ static void ChangeAdjustableEndPt(
;
}
}
- ComputeBoundingBox( trk );
- DrawNewTrack( trk );
+ ComputeBoundingBox(trk);
+ DrawNewTrack(trk);
}
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 extraData * xx1;
- struct extraData * xx2;
+ struct extraDataCompound_t* xx1;
+ struct extraDataCompound_t* xx2;
BOOL_T adj1, adj2;
coOrd p1, p2;
ANGLE_T a, a1, a2;
@@ -545,149 +536,79 @@ EXPORT BOOL_T ConnectAdjustableTracks(
coOrd off;
DIST_T beyond;
- xx1 = GetTrkExtraData(trk1);
- xx2 = GetTrkExtraData(trk2);
+ if ((GetTrkType(trk1) != T_TURNOUT) && (GetTrkType(trk2) != T_TURNOUT)) { return FALSE; }
+
adj1 = adj2 = FALSE;
- if (GetTrkType(trk1) == T_TURNOUT && xx1->special == TOadjustable)
- adj1 = TRUE;
- if (GetTrkType(trk2) == T_TURNOUT && xx2->special == TOadjustable)
- adj2 = TRUE;
- if (adj1 == FALSE && adj2 == FALSE)
+
+ if (GetTrkType(trk1) == T_TURNOUT) {
+ xx1 = GET_EXTRA_DATA(trk1, T_TURNOUT, extraDataCompound_t);
+ if (xx1->special == TOadjustable) {
+ adj1 = TRUE;
+ }
+ }
+ if (GetTrkType(trk2) == T_TURNOUT) {
+ xx2 = GET_EXTRA_DATA(trk2, T_TURNOUT, extraDataCompound_t);
+ if (xx2->special == TOadjustable) {
+ adj2 = TRUE;
+ }
+ }
+ 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)
+ }
+ a1 = GetTrkEndAngle(trk1, ep1);
+ a2 = GetTrkEndAngle(trk2, ep2);
+ a = NormalizeAngle(a1 - a2 + 180.0 + connectAngle / 2.0);
+ if (a > connectAngle) {
return FALSE;
- UndoStart( _("Connect Adjustable Tracks"), "changeAdjustableEndPt" );
+ }
+ 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;
+ p1 = GetTrkEndPos(trk1, 1 - ep1);
+ Translate(&p1, p1, a1, xx1->u.adjustable.minD);
+ maxD += xx1->u.adjustable.maxD - xx1->u.adjustable.minD;
} else {
- p1 = GetTrkEndPos( trk1, ep1 );
+ 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;
+ p2 = GetTrkEndPos(trk2, 1 - ep2);
+ Translate(&p2, p2, a2, xx2->u.adjustable.minD);
+ maxD += xx2->u.adjustable.maxD - xx2->u.adjustable.minD;
} else {
- p2 = GetTrkEndPos( trk2, ep2 );
+ p2 = GetTrkEndPos(trk2, ep2);
}
- d = FindDistance( p1, p2 );
+ d = FindDistance(p1, p2);
rc = TRUE;
if (d > maxD) {
d = maxD;
rc = FALSE;
}
- FindPos( &off, &beyond, p1, p2, a1, 10000.0 );
- if (fabs(off.y) > connectDistance)
+ FindPos(&off, &beyond, p1, p2, a1, DIST_INF);
+ 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;
- ChangeAdjustableEndPt( trk1, ep1, d1 );
+ UndrawNewTrack(trk1);
+ 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;
- ChangeAdjustableEndPt( trk2, ep2, d2 );
+ UndrawNewTrack(trk2);
+ d2 = d * (xx2->u.adjustable.maxD - xx2->u.adjustable.minD) / maxD +
+ xx2->u.adjustable.minD;
+ ChangeAdjustableEndPt(trk2, ep2, d2);
}
if (rc) {
- DrawEndPt( &mainD, trk1, ep1, wDrawColorWhite );
- DrawEndPt( &mainD, trk2, ep2, wDrawColorWhite );
- ConnectTracks( trk1, ep1, trk2, ep2 );
- DrawEndPt( &mainD, trk1, ep1, wDrawColorBlack );
- DrawEndPt( &mainD, trk2, ep2, wDrawColorBlack );
+ DrawEndPt(&mainD, trk1, ep1, wDrawColorWhite);
+ DrawEndPt(&mainD, trk2, ep2, wDrawColorWhite);
+ ConnectTracks(trk1, ep1, trk2, ep2);
+ DrawEndPt(&mainD, trk1, ep1, wDrawColorBlack);
+ DrawEndPt(&mainD, trk2, ep2, wDrawColorBlack);
}
return rc;
}
-
-/****************************************
- *
- * 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
@@ -695,47 +616,44 @@ static void DrawTurnoutRoadbed(
*/
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 extraData * xx;
+ 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;
- Rotate( &p1, p0, -a0 );
+ sprintf(message, "\tHand Laid Turnout, Angle=%0.1f\t", frogA);
+ 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;
segs[0].type = SEG_STRTRK;
segs[0].color = wDrawColorBlack;
segs[0].u.l.pos[0] = zero;
segs[0].u.l.pos[1] = p1;
- Rotate( &p2, p0, -a0 );
+ Rotate(&p2, p0, -a0);
p2.x -= p0.x;
p2.y -= p0.y;
segs[1].type = SEG_STRTRK;
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), NULL, 22, "Normal\0\1\0\0Reverse\0\2\0\0\0", 2, segs );
- xx = GetTrkExtraData(trk);
+ 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;
return trk;
}
-
+
/****************************************
*
* GENERIC FUNCTIONS
@@ -743,137 +661,120 @@ track_p NewHandLaidTurnout(
*/
static coOrd MapPathPos(
- struct extraData * xx,
- signed char segInx,
- EPINX_T ep )
+ struct extraDataCompound_t* xx,
+ signed char segInx,
+ EPINX_T ep)
{
trkSeg_p segPtr;
coOrd pos;
- if ( segInx < 0 ) {
- segInx = - segInx;
- ep = 1-ep;
+ if (segInx < 0) {
+ segInx = -segInx;
+ ep = 1 - ep;
}
- segPtr=xx->segs+(segInx-1);
+ segPtr = xx->segs + (segInx - 1);
if (!IsSegTrack(segPtr)) {
- fprintf( stderr, "mapPathPos: bad segInx: %d\n", segInx );
+ fprintf(stderr, "mapPathPos: bad segInx: %d\n", segInx);
return zero;
}
- pos = GetSegEndPt( segPtr, ep, FALSE, NULL );
- REORIGIN1( pos, xx->angle, xx->orig );
+ pos = GetSegEndPt(segPtr, ep, FALSE, NULL);
+ REORIGIN1(pos, xx->angle, xx->orig);
return pos;
}
-
-static void DrawTurnout(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+static trkSeg_p MapPathSeg(
+ struct extraDataCompound_t* xx,
+ signed char segInx)
{
- struct extraData *xx = GetTrkExtraData(trk);
- wIndex_t i;
- long widthOptions = 0;
- DIST_T scale2rail;
-
- widthOptions = DTS_LEFT|DTS_RIGHT;
-
- scale2rail = (d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale;
- 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 (segInx < 0) {
+ segInx = -segInx;
}
- 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 );
-
+ return xx->segs + (segInx - 1);
}
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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
wIndex_t segCnt, segInx;
ANGLE_T angle;
- if ( ep0 && ep1 )
- *ep0 = *ep1 = PickEndPoint( pos, trk );
- coOrd pos0=pos;
- double dd = 10000.0;
+ if (ep0 && ep1) {
+ *ep0 = *ep1 = PickEndPoint(pos, trk);
+ }
+ coOrd pos0 = pos;
+ double dd = DIST_INF;
int found = -1;
//Cope with tracks not being first
- for (segCnt =0; segCnt<xx->segCnt ; segCnt++ ) {
+ for (segCnt = 0; segCnt < xx->segCnt; segCnt++) {
if (IsSegTrack(&xx->segs[segCnt])) {
- double d = DistanceSegs( xx->orig, xx->angle, 1, &xx->segs[segCnt], &pos0, NULL );
- if (d<dd) {
+ double d = DistanceSegs(xx->orig, xx->angle, 1, &xx->segs[segCnt], &pos0, NULL);
+ if (d < dd) {
dd = d;
found = segCnt;
}
}
pos0 = pos;
}
- if (found>=0) {
+ if (found >= 0) {
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 );
- return NormalizeAngle( angle+xx->angle );
- } else return 0.0;
+ Rotate(&pos, zero, -xx->angle);
+ angle = GetAngleSegs(1, &xx->segs[found], &pos, &segInx, NULL, NULL, NULL,
+ NULL);
+ return NormalizeAngle(angle + xx->angle);
+ } 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;
coOrd pos;
DIST_T dist;
- GetSegInxEP( pp2[0], &segInx2, &segEP );
- if ( dir2 < 0 ) segEP = 1-segEP;
- pos = GetSegEndPt( &segs[segInx2], segEP, FALSE, NULL );
- dist = FindDistance( pos, epPos );
- if ( dist>connectDistance )
+ GetSegInxEP(pp2[0], &segInx2, &segEP);
+ if (dir2 < 0) { segEP = 1 - segEP; }
+ pos = GetSegEndPt(&segs[segInx2], segEP, FALSE, NULL);
+ dist = FindDistance(pos, epPos);
+ if (dist > connectDistance) {
return TRUE;
- while ( pp2[0] ) {
- GetSegInxEP( pp1[0], &segInx1, &segEP );
- GetSegInxEP( pp2[0], &segInx2, &segEP );
- if ( segInx1 != segInx2 )
+ }
+ while (pp2[0]) {
+ GetSegInxEP(pp1[0], &segInx1, &segEP);
+ GetSegInxEP(pp2[0], &segInx2, &segEP);
+ if (segInx1 != segInx2) {
break;
- if ( segInxEnd == segInx2 )
+ }
+ if (segInxEnd == segInx2) {
return TRUE;
+ }
pp1 += dir1;
pp2 += dir2;
}
@@ -882,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 ))
+ while (pp[0]) {
+ pp += strlen((char*)pp) + 1;
+ while (pp[0]) {
+ 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++;
@@ -907,11 +811,12 @@ static BOOL_T SplitTurnoutCheckEP(
EXPORT EPINX_T TurnoutPickEndPt(
- coOrd epPos,
- track_p trk )
+ coOrd epPos,
+ track_p trk)
{
- struct extraData * xx = GetTrkExtraData(trk);
- wIndex_t segCnt, segInx, segInx0;
+ 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];
coOrd pos;
@@ -920,39 +825,40 @@ EXPORT EPINX_T TurnoutPickEndPt(
EPINX_T ep, epCnt, eps[2];
BOOL_T unique_eps[2];
- for ( segCnt=0; segCnt<xx->segCnt && IsSegTrack(&xx->segs[segCnt]); segCnt++ );
- DistanceSegs( xx->orig, xx->angle, segCnt, xx->segs, &epPos, &segInx0 );
- Rotate( &epPos, xx->orig, xx->angle );
+ DistanceSegs(xx->orig, xx->angle, xx->segCnt, xx->segs, &epPos, &segInx0);
+ Rotate(&epPos, xx->orig, xx->angle);
epPos.x -= xx->orig.x;
epPos.y -= xx->orig.y;
epCnt = GetTrkEndPtCnt(trk);
- cp = xx->paths;
+ cp = GetPaths(trk);
eps[0] = eps[1] = -1;
unique_eps[0] = unique_eps[1] = TRUE;
- while ( cp[0] ) {
- cp += strlen((char *)cp)+1;
- while ( cp[0] ) {
- while ( cp[0] ) {
- GetSegInxEP( cp[0], &segInx, &segEP );
- if ( segInx == segInx0 ) {
- 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;
- pos = GetSegEndPt( &xx->segs[segInx], segEP, FALSE, NULL );
- dist = FindDistance( pos, epPos );
- if ( eps[dir] < 0 || dist < dists[dir] ) {
+ while (cp[0]) {
+ cp += strlen((char*)cp) + 1;
+ while (cp[0]) {
+ while (cp[0]) {
+ GetSegInxEP(cp[0], &segInx, &segEP);
+ if (segInx == segInx0) {
+ 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; }
+ pos = GetSegEndPt(&xx->segs[segInx], segEP, FALSE, NULL);
+ dist = FindDistance(pos, epPos);
+ if (eps[dir] < 0 || dist < dists[dir]) {
dists[dir] = dist;
pos.x += xx->orig.x;
pos.y += xx->orig.y;
- Rotate( &pos, xx->orig, xx->angle );
- for ( ep=0; ep<epCnt; ep++ ) {
- if ( FindDistance( pos, GetTrkEndPos(trk,ep) ) < connectDistance )
+ Rotate(&pos, xx->orig, xx->angle);
+ for (ep = 0; ep < epCnt; ep++) {
+ if (FindDistance(pos, GetTrkEndPos(trk, ep)) < connectDistance) {
break;
+ }
}
- if ( ep<epCnt ) {
- if ( eps[dir] >= 0 && eps[dir] != ep )
+ if (ep < epCnt) {
+ if (eps[dir] >= 0 && eps[dir] != ep) {
unique_eps[dir] = FALSE;
+ }
eps[dir] = ep;
dists[dir] = dist;
pps[dir] = cq;
@@ -967,27 +873,33 @@ EXPORT EPINX_T TurnoutPickEndPt(
cp++;
}
- 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;
- epPos = GetSegEndPt( &xx->segs[segInx], segEP, FALSE, NULL );
- if ( ! SplitTurnoutCheckEP( segInx0, epPos, pps[dir], dir?1:-1, xx->paths, xx->segs ) )
- unique_eps[dir] = FALSE;
+ 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; }
+ epPos = GetSegEndPt(&xx->segs[segInx], segEP, FALSE, NULL);
+ 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 )
- return ( dists[0] < dists[1] ) ? eps[0] : eps[1] ;
+ if (unique_eps[0] == unique_eps[1]) {
+ 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 )
- return ( dists[0] < dists[1] ) ? eps[0] : eps[1] ;
- return eps[0] >= 0 ? eps[0] : eps[1] ;
+ }
+ if (eps[0] >= 0 && eps[1] >= 0) {
+ return (dists[0] < dists[1]) ? eps[0] : eps[1];
+ }
+ return eps[0] >= 0 ? eps[0] : eps[1];
}
@@ -996,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;
@@ -1009,21 +921,25 @@ static void SplitTurnoutCheckEndPt(
DIST_T dist, minDist;
path0 = path;
- GetSegInxEP( path[0], &segInx, &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 )
+ GetSegInxEP(path[0], &segInx, &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) {
return;
+ }
minDist = trackGauge;
- while ( path[0] ) {
- GetSegInxEP( path[0], &segInx, &segEP );
- if ( dir < 0 ) segEP = 1-segEP;
+ while (path[0]) {
+ GetSegInxEP(path[0], &segInx, &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 ) );
- if ( dist < minDist ) {
+ 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));
+ if (dist < minDist) {
minDist = dist;
splitTurnoutPath = path;
splitTurnoutDir = -dir;
@@ -1034,26 +950,29 @@ 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 extraData * xx = GetTrkExtraData( trk );
+ 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;
+ char* cp;
+ int negCnt, posCnt, dir;
+// int pathCnt;
segProcData_t segProcDataSplit;
segProcData_t segProcDataNewTrack;
- track_p trk2=NULL;
+ track_p trk2 = NULL;
static dynArr_t segIndexMap_da;
#define segIndexMap(N) DYNARR_N( int, segIndexMap_da, N )
static dynArr_t newPath_da;
@@ -1064,72 +983,83 @@ EXPORT BOOL_T SplitTurnoutCheck(
int s0, s1;
trkSeg_t newSeg;
- if ( (MyGetKeyState()&WKEY_SHIFT) == 0 ) {
- if (!check)
- ErrorMessage( MSG_CANT_SPLIT_TRK, _("Turnout") );
+ if ((MyGetKeyState() & WKEY_SHIFT) == 0) {
+ if (!check) {
+ ErrorMessage(MSG_CANT_SPLIT_TRK, _("Turnout"));
+ }
return FALSE;
}
/*
* 1. Find segment on path that ends at 'ep'
*/
- epCnt = GetTrkEndPtCnt(trk);
- epPos = GetTrkEndPos( trk, ep );
- for ( segCnt=0; segCnt<xx->segCnt && IsSegTrack(&xx->segs[segCnt]); segCnt++ );
- Rotate( &pos, xx->orig, -xx->angle );
+// epCnt = GetTrkEndPtCnt(trk);
+ epPos = GetTrkEndPos(trk, ep);
+ 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;
- Rotate( &epPos, xx->orig, -xx->angle );
+ Rotate(&epPos, xx->orig, -xx->angle);
epPos.x -= xx->orig.x;
epPos.y -= xx->orig.y;
splitTurnoutPath = NULL;
- pp = xx->paths;
- 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 ) );
- while ( pp[0] ) {
- pp += strlen((char *)pp)+1;
- while ( pp[0] ) {
- SplitTurnoutCheckEndPt( pp, 1, xx->segs, epPos, pos );
- if ( 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 ? 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) {
goto foundSeg;
- while ( pp[0] )
+ }
+ while (pp[0]) {
pp++;
- SplitTurnoutCheckEndPt( pp-1, -1, xx->segs, epPos, pos );
- if ( splitTurnoutPath != NULL )
+ }
+ SplitTurnoutCheckEndPt(pp - 1, -1, xx->segs, epPos, pos);
+ if (splitTurnoutPath != NULL) {
goto foundSeg;
+ }
pp++;
}
pp++;
}
- if (!check)
- ErrorMessage( _("splitTurnout: can't find segment") );
+ if (!check) {
+ ErrorMessage(_("splitTurnout: can't find segment"));
+ }
return FALSE;
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 ) );
- pp = xx->paths;
- pathCnt = 0;
- while ( pp[0] ) {
- pp += strlen((char *)pp)+1;
- while ( pp[0] ) {
- while ( pp[0] ) {
- GetSegInxEP( pp[0], &segInx, &segEP );
- if ( segInx == segInx0 ) {
+ GetSegInxEP(splitTurnoutPath[0], &segInx0, &segEP);
+ LOG(log_splitturnout, 1, (" Found Seg: %d SEG:%d EP:%d\n", *splitTurnoutPath,
+ segInx0, segEP));
+ pp = GetPaths(trk);
+// pathCnt = 0;
+ while (pp[0]) {
+ pp += strlen((char*)pp) + 1;
+ while (pp[0]) {
+ while (pp[0]) {
+ GetSegInxEP(pp[0], &segInx, &segEP);
+ if (segInx == segInx0) {
pp1 = splitTurnoutPath;
pp2 = pp;
- dir = (pp2[0]>0?1:-1) * splitTurnoutDir;
- while ( pp1[0] && pp2[0] ) {
- if ( splitTurnoutDir * pp1[0] != dir * pp2[0] )
+ dir = (pp2[0] > 0 ? 1 : -1) * splitTurnoutDir;
+ while (pp1[0] && pp2[0]) {
+ if (splitTurnoutDir * pp1[0] != dir * pp2[0]) {
break;
+ }
pp1 += splitTurnoutDir;
pp2 += dir;
}
- if ( pp1[0]!='\0' || pp2[0]!='\0' ) {
- if (!check)
- ErrorMessage( MSG_SPLIT_POS_BTW_MERGEPTS );
+ if (pp1[0] != '\0' || pp2[0] != '\0') {
+ if (!check) {
+ ErrorMessage(MSG_SPLIT_POS_BTW_MERGEPTS);
+ }
return FALSE;
}
}
@@ -1143,20 +1073,22 @@ foundSeg:
/*
* 2b. Check that all paths from ep pass thru segInx0
*/
- if ( !SplitTurnoutCheckEP( segInx0, epPos, splitTurnoutRoot, -splitTurnoutDir, xx->paths, xx->segs ) ) {
- if (!check)
- ErrorMessage( MSG_SPLIT_PATH_NOT_UNIQUE );
+ if (!SplitTurnoutCheckEP(segInx0, epPos, splitTurnoutRoot, -splitTurnoutDir,
+ GetPaths(trk), xx->segs)) {
+ if (!check) {
+ ErrorMessage(MSG_SPLIT_PATH_NOT_UNIQUE);
+ }
return FALSE;
}
if (check) {
segProcDataSplit.getAngle.pos = pos;
- SegProc( SEGPROC_GETANGLE, xx->segs+segInx0, &segProcDataSplit );
- *outAngle = NormalizeAngle(segProcDataSplit.getAngle.angle+xx->angle);
+ SegProc(SEGPROC_GETANGLE, xx->segs + segInx0, &segProcDataSplit);
+ *outAngle = NormalizeAngle(segProcDataSplit.getAngle.angle + xx->angle);
*outPos = segProcDataSplit.getAngle.pos;
(*outPos).x += xx->orig.x;
(*outPos).y += xx->orig.y;
- Rotate( outPos, xx->orig, xx->angle );
+ Rotate(outPos, xx->orig, xx->angle);
return TRUE;
}
@@ -1165,53 +1097,57 @@ foundSeg:
*/
segProcDataSplit.split.pos = pos;
s0 = (splitTurnoutPath[0] > 0) != (splitTurnoutDir > 0);
- s1 = 1-s0;
- SegProc( SEGPROC_SPLIT, xx->segs+segInx0, &segProcDataSplit );
- if ( segProcDataSplit.split.length[s1] <= minLength ) {
- if ( splitTurnoutPath[splitTurnoutDir] == '\0' )
+ s1 = 1 - s0;
+ SegProc(SEGPROC_SPLIT, xx->segs + segInx0, &segProcDataSplit);
+ if (segProcDataSplit.split.length[s1] <= minLength) {
+ 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 ) {
+ epPos = GetSegEndPt(&segProcDataSplit.split.newSeg[s0], s1, FALSE, &epAngle);
+ } 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 );
+ epPos = GetSegEndPt(&segProcDataSplit.split.newSeg[s1], s0, FALSE, &epAngle);
epAngle += 180.0;
} else {
- epPos = GetSegEndPt( &segProcDataSplit.split.newSeg[s1], s0, FALSE, &epAngle );
+ epPos = GetSegEndPt(&segProcDataSplit.split.newSeg[s1], s0, FALSE, &epAngle);
epAngle += 180.0;
}
/*
* 4. Map the old segments to new
*/
- DYNARR_SET( int, segIndexMap_da, xx->segCnt );
- for ( segInx=0; segInx<xx->segCnt; segInx++ )
- segIndexMap(segInx) = segInx+1;
+ DYNARR_SET(int, segIndexMap_da, xx->segCnt);
+ 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 );
- segIndexMap(segInx) = - segIndexMap(segInx);
+ while (*pp) {
+ GetSegInxEP(*pp, &segInx, &segEP);
+ segIndexMap(segInx) = -segIndexMap(segInx);
negCnt++;
pp += splitTurnoutDir;
}
- for ( segInx=posCnt=0; segInx<xx->segCnt; segInx++ ) {
- if ( segIndexMap(segInx) > 0 )
+ for (segInx = posCnt = 0; segInx < xx->segCnt; segInx++) {
+ 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];
+ 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 {
- tempSegs(segIndexMap(segInx)-1) = xx->segs[segInx];
+ tempSegs(segIndexMap(segInx) - 1) = xx->segs[segInx];
}
posCnt++;
}
@@ -1220,20 +1156,21 @@ foundSeg:
/*
* 5. Remap paths by removing trailing segments
*/
- DYNARR_SET( char, newPath_da, xx->pathLen );
- pp = xx->paths;
+ pp = GetPaths(trk);
+ DYNARR_SET(char, newPath_da, GetPathsLength(pp));
pp1 = (PATHPTR_T)&newPath(0);
- while ( *pp ) {
- strcpy( (char *)pp1, (char *)pp );
- pp += strlen( (char *)pp )+1;
- pp1 += strlen( (char *)pp1 )+1;
- while ( *pp ) {
- while ( *pp ) {
- GetSegInxEP( *pp, &segInx, &segEP );
- if ( segIndexMap(segInx) > 0 ) {
+ while (*pp) {
+ strcpy((char*)pp1, (char*)pp);
+ pp += strlen((char*)pp) + 1;
+ pp1 += strlen((char*)pp1) + 1;
+ while (*pp) {
+ while (*pp) {
+ GetSegInxEP(*pp, &segInx, &segEP);
+ if (segIndexMap(segInx) > 0) {
c = segIndexMap(segInx);
- if ( *pp<0 )
+ if (*pp < 0) {
c = -c;
+ }
*pp1++ = c;
}
pp++;
@@ -1249,23 +1186,23 @@ foundSeg:
/*
* 6. Reorigin segments
*/
- GetSegBounds( zero, 0, tempSegs_da.cnt, &tempSegs(0), &orig, &size );
+ GetSegBounds(zero, 0, tempSegs_da.cnt, &tempSegs(0), &orig, &size);
orig.x = -orig.x;
orig.y = -orig.y;
- MoveSegs( tempSegs_da.cnt, &tempSegs(0), orig );
+ MoveSegs(tempSegs_da.cnt, &tempSegs(0), orig);
epPos.x += orig.x;
epPos.y += orig.y;
- cp = strchr( xx->title, '\t' );
- if ( cp ) {
- if ( strncmp( cp+1, "Split ", 6 ) != 0 ) {
- memcpy( message, xx->title, cp-xx->title+1 );
- strcpy( message+(cp-xx->title+1), "Split " );
- strcat( message, cp+1 );
+ cp = strchr(xx->title, '\t');
+ if (cp) {
+ if (strncmp(cp + 1, "Split ", 6) != 0) {
+ memcpy(message, xx->title, cp - xx->title + 1);
+ strcpy(message + (cp - xx->title + 1), "Split ");
+ strcat(message, cp + 1);
} else {
- strcpy( message, xx->title );
+ strcpy(message, xx->title);
}
} else {
- sprintf( message, "Split %s", xx->title );
+ sprintf(message, "Split %s", xx->title);
}
/*
@@ -1273,28 +1210,29 @@ 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 );
+ }
+ while (path[0]) {
+ GetSegInxEP(path[0], &segInx, &segEP);
s0 = (path[0] > 0) != (splitTurnoutDir > 0);
- if ( segInx0 != segInx ) {
+ if (segInx0 != segInx) {
newSeg = xx->segs[segInx];
} else {
newSeg = segProcDataSplit.split.newSeg[s1];
}
- MoveSegs( 1, &newSeg, xx->orig );
- RotateSegs( 1, &newSeg, xx->orig, xx->angle );
- SegProc( SEGPROC_NEWTRACK, &newSeg, &segProcDataNewTrack );
- if ( *leftover == NULL ) {
+ MoveSegs(1, &newSeg, xx->orig);
+ RotateSegs(1, &newSeg, xx->orig, xx->angle);
+ SegProc(SEGPROC_NEWTRACK, &newSeg, &segProcDataNewTrack);
+ if (*leftover == NULL) {
*ep0 = segProcDataNewTrack.newTrack.ep[s0];
*leftover = trk2 = segProcDataNewTrack.newTrack.trk;
- ep2 = 1-*ep0;
+ ep2 = 1 - *ep0;
} else {
epN = segProcDataNewTrack.newTrack.ep[s0];
- ConnectTracks( trk2, ep2, segProcDataNewTrack.newTrack.trk, epN );
+ ConnectTracks(trk2, ep2, segProcDataNewTrack.newTrack.trk, epN);
trk2 = segProcDataNewTrack.newTrack.trk;
- ep2 = 1-epN;
+ ep2 = 1 - epN;
}
++trks;
path += splitTurnoutDir;
@@ -1304,40 +1242,40 @@ foundSeg:
* 8. Replace segments, paths, and endPt in original turnout
*/
xx->split = TRUE;
- Rotate( &orig, zero, xx->angle );
+ Rotate(&orig, zero, xx->angle);
xx->orig.x -= orig.x;
xx->orig.y -= orig.y;
xx->segCnt = tempSegs_da.cnt;
- xx->segs = (trkSeg_p)memdup( &tempSegs(0), tempSegs_da.cnt * sizeof tempSegs(0) );
- CloneFilledDraw( xx->segCnt, xx->segs, TRUE );
- xx->pathLen = pp1-(PATHPTR_T)&newPath(0);
- xx->pathCurr = xx->paths = memdup( &newPath(0), xx->pathLen );
- epAngle = NormalizeAngle( xx->angle+epAngle );
+ xx->segs = (trkSeg_p)memdup(&tempSegs(0), tempSegs_da.cnt * sizeof tempSegs(0));
+ CloneFilledDraw(xx->segCnt, xx->segs, TRUE);
+ SetPaths(trk, (PATHPTR_T)&newPath(0));
+ epAngle = NormalizeAngle(xx->angle + epAngle);
epPos.x += xx->orig.x;
epPos.y += xx->orig.y;
- Rotate( &epPos, xx->orig, xx->angle );
- SetTrkEndPoint( trk, ep, epPos, epAngle );
- ComputeCompoundBoundingBox( trk );
+ Rotate(&epPos, xx->orig, xx->angle);
+ SetTrkEndPoint(trk, ep, epPos, epAngle);
+ ComputeCompoundBoundingBox(trk);
return TRUE;
}
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);
+ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
coOrd pos1;
#ifdef LATER
int inx, foundInx = 0;
@@ -1348,65 +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 ) )
-
+ 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 ) {
+ 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;
+ 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);
+ 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
- for ( pathCurr = xx->pathCurr+strlen((char*)xx->pathCurr)+1; pathCurr[0] || pathCurr[1]; pathCurr++ ) {
-LOG( log_traverseTurnout, 1, ( "P[%d] = %d ", pathCurr-xx->paths, 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 )
+ 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;
+ }
}
- 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 )
+ 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;
+ }
}
}
-LOG( log_traverseTurnout, 1, ( " not found\n" ) )
+ LOG(log_traverseTurnout, 1, (" not found\n"))
return FALSE;
}
static BOOL_T TraverseTurnout(
- traverseTrack_p trvTrk,
- DIST_T * distR )
+ traverseTrack_p trvTrk,
+ DIST_T* distR)
{
track_p trk = trvTrk->trk;
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
coOrd pos0, pos1, pos2;
DIST_T d, dist;
PATHPTR_T path, pathCurr;
@@ -1416,37 +1362,42 @@ static BOOL_T TraverseTurnout(
EPINX_T segEP;
segProcData_t segProcData;
- d = 10000;
+ d = DIST_INF;
pos0 = trvTrk->pos;
- Rotate( &pos0, xx->orig, -xx->angle );
+ Rotate(&pos0, xx->orig, -xx->angle);
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 ) )
+ 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;
- for ( path = xx->pathCurr+strlen((char*)xx->pathCurr)+1; path[0] || path[1]; path++ ) {
- if ( path[0] == 0 )
+ path = GetCurrPath(trk);
+ for (path += strlen((char*)path) + 1; path[0] || path[1]; path++) {
+ if (path[0] == 0) {
continue;
- GetSegInxEP( path[0], &segInx, &segEP );
- segPtr = xx->segs+segInx;
+ }
+ GetSegInxEP(path[0], &segInx, &segEP);
+ segPtr = xx->segs + segInx;
segProcData.distance.pos1 = pos0;
- SegProc( SEGPROC_DISTANCE, segPtr, &segProcData );
- if ( segProcData.distance.dd < d ) {
+ SegProc(SEGPROC_DISTANCE, segPtr, &segProcData);
+ if (segProcData.distance.dd < d) {
d = segProcData.distance.dd;
pos2 = segProcData.distance.pos1;
pathCurr = path;
}
}
- if ( d > 10 || pathCurr == 0 ) {
- ErrorMessage( "traverseTurnout: Not near: %0.3f", d );
+ if (d > 10 || pathCurr == 0) {
+ ErrorMessage("traverseTurnout: Not near: %0.3f", d);
return FALSE;
}
-LOG( log_traverseTurnout, 1, ( " PC=%d ", pathCurr[0] ) )
- GetSegInxEP( pathCurr[0], &segInx, &segEP );
- segPtr = xx->segs+segInx;
+ LOG(log_traverseTurnout, 1, (" PC=%d ", pathCurr[0]))
+ GetSegInxEP(pathCurr[0], &segInx, &segEP);
+ segPtr = xx->segs + segInx;
segProcData.traverse1.pos = pos2;
- segProcData.traverse1.angle = -xx->angle+trvTrk->angle;
- SegProc( SEGPROC_TRAVERSE1, segPtr, &segProcData );
+ segProcData.traverse1.angle = -xx->angle + trvTrk->angle;
+ SegProc(SEGPROC_TRAVERSE1, segPtr, &segProcData);
dist += segProcData.traverse1.dist;
//Get ready for Traverse2 - copy all Traverse1 first
BOOL_T backwards = segProcData.traverse1.backwards;
@@ -1459,113 +1410,123 @@ LOG( log_traverseTurnout, 1, ( " PC=%d ", pathCurr[0] ) )
// 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 ) {
+ 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;
+ 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 ) {
+ 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 ))
+ 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
+ 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; //
+ if (pathCurr[0] == '\0') { continue; } //
//Set up Traverse1 - copy all of Traverse2 values first
- GetSegInxEP( pathCurr[0], &segInx, &segEP );
- segPtr = xx->segs+segInx;
+ 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 ) )
+ 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 );
+ 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, 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) );
+ pathCurr += (turnout_backwards ? 1 : -1);
+ pos1 = MapPathPos(xx, pathCurr[0], (turnout_backwards ? 0 : 1));
*distR = dist;
epCnt = GetTrkEndPtCnt(trk);
ep = 0;
- dist = FindDistance( pos1, GetTrkEndPos(trk,0) );
- for ( ep2=1; ep2<epCnt; ep2++ ) {
- d = FindDistance( pos1, GetTrkEndPos(trk,ep2) );
- if ( d < dist ) {
+ dist = FindDistance(pos1, GetTrkEndPos(trk, 0));
+ for (ep2 = 1; ep2 < epCnt; ep2++) {
+ d = FindDistance(pos1, GetTrkEndPos(trk, ep2));
+ if (d < dist) {
dist = d;
ep = ep2;
}
}
- if ( dist > connectDistance ) {
+ if (dist > connectDistance) {
trk = NULL;
trvTrk->pos = pos1;
} else {
- trvTrk->pos = GetTrkEndPos( trk, ep );
- trvTrk->angle = GetTrkEndAngle( trk, ep );
- trk = GetTrkEndTrk( trk, ep );
+ 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 ) )
+ 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;
return TRUE;
}
-static STATUS_T ModifyTurnout( track_p trk, wAction_t action, coOrd pos )
+static STATUS_T ModifyTurnout(track_p trk, wAction_t action, coOrd pos)
{
- struct extraData *xx;
+ struct extraDataCompound_t* xx;
static EPINX_T ep;
- static wBool_t curved;
+// static wBool_t curved;
DIST_T d;
- xx = GetTrkExtraData(trk);
- if ( xx->special == TOadjustable ) {
- switch ( action ) {
+ xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
+ if (xx->special == TOadjustable) {
+ switch (action) {
case C_START:
ep = -1;
- curved = FALSE;
+// curved = FALSE;
return C_CONTINUE;
case C_DOWN:
- ep = PickUnconnectedEndPoint( pos, trk );
- if (ep == -1)
+ ep = PickUnconnectedEndPoint(pos, trk);
+ if (ep == -1) {
return C_ERROR;
- UndrawNewTrack( trk );
+ }
+ UndrawNewTrack(trk);
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).type = SEG_STRTRK;
- tempSegs(0).width = 0;
- tempSegs(0).u.l.pos[0] = GetTrkEndPos( trk, 1-ep );
- tempSegs_da.cnt = 1;
- InfoMessage( _("Drag to change track length") );
+ tempSegs(0).lineWidth = 0;
+ tempSegs(0).u.l.pos[0] = GetTrkEndPos(trk, 1 - ep);
+ 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 )
+ d = FindDistance(tempSegs(0).u.l.pos[0], pos);
+ 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)
- InfoMessage( _("Length=%s"), FormatDistance( d ) );
+ }
+ 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] );
- ChangeAdjustableEndPt( trk, ep, d );
+ d = FindDistance(tempSegs(0).u.l.pos[0], tempSegs(0).u.l.pos[1]);
+ ChangeAdjustableEndPt(trk, ep, d);
return C_TERMINATE;
default:
return C_CONTINUE;
@@ -1576,191 +1537,185 @@ 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 extraData *xx;
- xx = GetTrkExtraData(trk);
+ struct extraDataCompound_t* xx;
+ xx = GET_EXTRA_DATA(trk, T_TURNOUT, extraDataCompound_t);
params->type = curveTypeStraight;
- if (inx == PARAMS_TURNOUT) {
- params->len = 0.0;
- int epCnt = GetTrkEndPtCnt(trk);
- if (epCnt < 3) {
- double d = 10000.0;
- params->centroid = zero;
- //calculate path length from endPt (either to end or to other end)
- segProcData_t segProcData;
- trkSeg_p seg;
- int segInx;
- int segEP;
- trkSeg_p segPtr;
- PATHPTR_T path,pathCurr;
- //Find starting seg on path (nearest to end Pt)
- for ( path = xx->pathCurr+strlen((char*)xx->pathCurr)+1; path[0] || path[1]; path++ ) {
- if ( path[0] == 0 )
- continue;
- GetSegInxEP( path[0], &segInx, &segEP );
- segPtr = xx->segs+segInx;
- segProcData.distance.pos1 = pos;
- SegProc( SEGPROC_DISTANCE, segPtr, &segProcData );
- if ( segProcData.distance.dd < d ) {
- d = segProcData.distance.dd;
- pathCurr = path;
- }
- }
- GetSegInxEP( pathCurr[0], &segInx, &segEP );
- seg = xx->segs+segInx;
- d = 0.0;
- //Loop through segs on path from endPt adding
- while (pathCurr[0]) {
- GetSegInxEP( pathCurr[0], &segInx, &segEP );
- seg = xx->segs+segInx;
- SegProc(SEGPROC_LENGTH, seg, &segProcData );
- d += segProcData.length.length;
- pathCurr += segEP?1:-1;
- }
- params->len = d;
- } else {
- double x, y;
- x = 0; y = 0;
- for (int i=0;i<epCnt; i++) {
- coOrd cpos = GetTrkEndPos(trk,i);
- x += cpos.x;
- y += cpos.y;
- }
- params->centroid.x = x/epCnt;
- params->centroid.y = y/epCnt;
- params->len = FindDistance(params->centroid,pos)*2; //Times two because it will be halved by track.c
- }
- return TRUE;
- }
- if ((inx == PARAMS_CORNU) || (inx == PARAMS_EXTEND)) {
+ if (inx == PARAMS_TURNOUT) {
+ params->len = 0.0;
+ int epCnt = GetTrkEndPtCnt(trk);
+ if (epCnt < 3) {
+ double d = DIST_INF;
+ params->centroid = zero;
+ //calculate path length from endPt (either to end or to other end)
+ segProcData_t segProcData;
+ trkSeg_p seg;
+ int segInx;
+ int segEP;
+ trkSeg_p segPtr;
+ PATHPTR_T path, pathCurr;
+ //Find starting seg on path (nearest to end Pt)
+ path = GetCurrPath(trk);
+ pathCurr = path;
+ for (path += strlen((char*)path) + 1; path[0] || path[1]; path++) {
+ if (path[0] == 0) {
+ continue;
+ }
+ GetSegInxEP(path[0], &segInx, &segEP);
+ segPtr = xx->segs + segInx;
+ segProcData.distance.pos1 = pos;
+ SegProc(SEGPROC_DISTANCE, segPtr, &segProcData);
+ if (segProcData.distance.dd < d) {
+ d = segProcData.distance.dd;
+ pathCurr = path;
+ }
+ }
+ GetSegInxEP(pathCurr[0], &segInx, &segEP);
+ seg = xx->segs + segInx;
+ d = 0.0;
+ //Loop through segs on path from endPt adding
+ while (pathCurr[0]) {
+ GetSegInxEP(pathCurr[0], &segInx, &segEP);
+ seg = xx->segs + segInx;
+ SegProc(SEGPROC_LENGTH, seg, &segProcData);
+ d += segProcData.length.length;
+ pathCurr += segEP ? 1 : -1;
+ }
+ params->len = d;
+ } else {
+ // Centroid is middle of bounding box
+ 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;
+ }
+ if ((inx == PARAMS_CORNU) || (inx == PARAMS_EXTEND)) {
params->type = curveTypeStraight;
params->arcR = 0.0;
params->arcP = zero;
- params->ep = PickEndPoint(pos, trk);
+ params->ep = PickEndPoint(pos, trk);
params->circleOrHelix = FALSE;
- if (params->ep>=0) {
- params->angle = GetTrkEndAngle(trk,params->ep);
- params->track_angle = params->angle + params->ep?0:180;
+ if (params->ep >= 0) {
+ params->angle = GetTrkEndAngle(trk, params->ep);
+ params->track_angle = params->angle + params->ep ? 0 : 180;
} else {
- params->angle = params-> track_angle = 0;
+ params->angle = params->track_angle = 0;
return FALSE;
}
- /* Use end radii if we have them */
- //if (xx->special == TOcurved) {
- // params->type = curveTypeCurve;
- // params->arcR = fabs(DYNARR_N(DIST_T,xx->u.curved.radii,params->ep));
- // if (params->arcR != 0.0)
- // Translate(&params->arcP,pos,params->track_angle-90.0,params->arcR);
- // else
- // params->type = curveTypeStraight;
- // return TRUE;
- //}
/* Find the path we are closest to */
- PATHPTR_T pathCurr = 0;
+// PATHPTR_T pathCurr = 0;
int segInx, subSegInx;
trkSeg_p segPtr;
- double d = 10000;
- struct extraData * xx = GetTrkExtraData(trk);
+ DIST_T d = DIST_INF;
+ struct extraDataCompound_t* xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
/* Get parms from that seg */
- wBool_t back,negative;
+ wBool_t back, negative;
coOrd segPos = pos;
- Rotate(&segPos,xx->orig,-xx->angle);
+ Rotate(&segPos, xx->orig, -xx->angle);
segPos.x -= xx->orig.x;
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;
- segPtr = xx->segs+segInx;
+ 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
- segPtr = xx->segs + segInx;
- trkSeg_p subSegPtr = (trkSeg_p)segPtr->bezSegs.ptr+subSegInx;
- if (subSegPtr->type == SEG_CRVTRK) {
- params->type = curveTypeCurve;
- params->arcR = fabs(subSegPtr->u.c.radius);
- params->arcP = subSegPtr->u.c.center;
- params->arcP.x += xx->orig.x;
- params->arcP.y += xx->orig.y;
- Rotate(&params->arcP,xx->orig,xx->angle);
- params->arcA0 = subSegPtr->u.c.a0;
- params->arcA1 = subSegPtr->u.c.a1;
- }
- return TRUE;
- break;
- case SEG_CRVTRK:
+ case SEG_BEZTRK:
+ if (negative != back) { params->track_angle = NormalizeAngle(params->track_angle + 180); } //Bezier is in reverse
+ segPtr = xx->segs + segInx;
+ trkSeg_p subSegPtr = &DYNARR_N(trkSeg_t,segPtr->bezSegs,subSegInx);
+ if (subSegPtr->type == SEG_CRVTRK) {
params->type = curveTypeCurve;
- params->arcR = fabs(segPtr->u.c.radius);
- params->arcP = segPtr->u.c.center;
+ params->arcR = fabs(subSegPtr->u.c.radius);
+ params->arcP = subSegPtr->u.c.center;
params->arcP.x += xx->orig.x;
params->arcP.y += xx->orig.y;
- Rotate(&params->arcP,xx->orig,xx->angle);
- params->arcA0 = segPtr->u.c.a0;
- params->arcA1 = segPtr->u.c.a1;
- return TRUE;
- break;
- }
- params->arcR = 0.0;
+ Rotate(&params->arcP, xx->orig, xx->angle);
+ params->arcA0 = subSegPtr->u.c.a0;
+ params->arcA1 = subSegPtr->u.c.a1;
+ }
+ return TRUE;
+ break;
+ case SEG_CRVTRK:
+ params->type = curveTypeCurve;
+ params->arcR = fabs(segPtr->u.c.radius);
+ params->arcP = segPtr->u.c.center;
+ params->arcP.x += xx->orig.x;
+ params->arcP.y += xx->orig.y;
+ Rotate(&params->arcP, xx->orig, xx->angle);
+ params->arcA0 = segPtr->u.c.a0;
+ params->arcA1 = segPtr->u.c.a1;
+ return TRUE;
+ break;
+ }
+ params->arcR = 0.0;
params->arcP = zero;
- params->ep = PickEndPoint(pos,trk); //Nearest
- if (params->ep>=0) {
- params->angle = GetTrkEndAngle(trk,params->ep);
- params->track_angle = params->angle + params->ep?0:180;
+ params->ep = PickEndPoint(pos, trk); //Nearest
+ if (params->ep >= 0) {
+ params->angle = GetTrkEndAngle(trk, params->ep);
+ params->track_angle = params->angle + params->ep ? 0 : 180;
} else {
- params->angle = params-> track_angle = 0;
+ 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
- params->ep = PickUnconnectedEndPointSilent( pos, trk );
- if (params->ep == -1)
- return FALSE;
- params->lineOrig = GetTrkEndPos(trk,params->ep);
+ } else {
+ params->ep = PickUnconnectedEndPointSilent(pos, trk);
+ }
+ if (params->ep == -1) {
+ return FALSE;
+ }
+ params->lineOrig = GetTrkEndPos(trk, params->ep);
params->lineEnd = params->lineOrig;
params->len = 0.0;
- params->angle = GetTrkEndAngle(trk,params->ep);
+ params->angle = GetTrkEndAngle(trk, params->ep);
params->arcR = 0.0;
return TRUE;
}
-static BOOL_T MoveEndPtTurnout( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 )
+static BOOL_T MoveEndPtTurnout(track_p* trk, EPINX_T* ep, coOrd pos, DIST_T d0)
{
ANGLE_T angle0;
DIST_T d;
track_p trk1;
- angle0 = GetTrkEndAngle(*trk,*ep);
- d = FindDistance( GetTrkEndPos(*trk,*ep), pos);
+ angle0 = GetTrkEndAngle(*trk, *ep);
+ d = FindDistance(GetTrkEndPos(*trk, *ep), pos);
if (d0 > 0.0) {
d -= d0;
if (d < 0.0) {
- ErrorMessage( MSG_MOVED_BEFORE_END_TURNOUT );
+ ErrorMessage(MSG_MOVED_BEFORE_END_TURNOUT);
return FALSE;
}
- Translate( &pos, pos, angle0+180, d0 );
+ Translate(&pos, pos, angle0 + 180, d0);
}
if (d > minLength) {
- trk1 = NewStraightTrack( GetTrkEndPos(*trk,*ep), pos );
- CopyAttributes( *trk, trk1 );
- ConnectTracks( *trk, *ep, trk1, 0 );
+ trk1 = NewStraightTrack(GetTrkEndPos(*trk, *ep), pos);
+ CopyAttributes(*trk, trk1);
+ ConnectTracks(*trk, *ep, trk1, 0);
*trk = trk1;
*ep = 1;
- DrawNewTrack( *trk );
+ DrawNewTrack(*trk);
}
return TRUE;
}
-static BOOL_T QueryTurnout( track_p trk, int query )
+static BOOL_T QueryTurnout(track_p trk, int query)
{
- switch ( query ) {
+ switch (query) {
case Q_IGNORE_EASEMENT_ON_EXTEND:
case Q_DRAWENDPTV_1:
case Q_CAN_GROUP:
@@ -1774,12 +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:
- return ( GetTrkEndPtCnt(trk) > 2 );
+ }
+ 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:
@@ -1788,73 +1748,93 @@ static BOOL_T QueryTurnout( track_p trk, int query )
}
-EXPORT int doDrawTurnoutPosition = 1;
-static wIndex_t drawTurnoutPositionWidth=3;
+static wIndex_t drawTurnoutPositionWidth = 3;
static void DrawTurnoutPositionIndicator(
- track_p trk,
- wDrawColor color )
+ track_p trk,
+ wDrawColor color)
{
- struct extraData * xx = GetTrkExtraData(trk);
- PATHPTR_T path = xx->pathCurr;
- coOrd pos0, pos1;
+ 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;
- if ( xx->pathCurr == xx->paths ) {
- for ( path=xx->pathCurr+strlen((char *)xx->pathCurr); path[0] || path[1]; path++ );
- if ( path[2] == 0 )
- return;
+ // Only 1 path? Don't draw
+ if ( ! QueryTurnout( trk, Q_CAN_NEXT_POSITION ) ) {
+ return;
}
- for ( path=xx->pathCurr+strlen((char *)xx->pathCurr); path[0] || path[1]; path++ ) {
- if ( path[0] == 0 ) {
- pos0 = MapPathPos( xx, path[1], 0 );
- } else if ( path[1] == 0 ) {
- pos1 = MapPathPos( xx, path[0], 1 );
- DrawLine( &tempD, pos0, pos1, drawTurnoutPositionWidth, color );
+
+ 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; }
+
+
+ for (path += strlen((char*)path); path[0] || path[1]; path++) {
+
+ if (path[0] == 0) {
+ 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);
+ }
+ } else if (path[1] == 0) {
+ pos1 = MapPathPos(xx, path[0], 1);
+ if ((tempD.scale > 10) && multiPart) {
+ DrawLine(&tempD, pos0, pos1, drawTurnoutPositionWidth, color);
+ } else {
+ seg = MapPathSeg(xx, path[0]);
+ DrawSegsO(&tempD, trk, xx->orig, xx->angle, seg, 1, GetTrkGauge(trk), color,
+ DTS_CENTERONLY);
+ }
+ } 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);
}
}
}
EXPORT void AdvanceTurnoutPositionIndicator(
- track_p trk,
- coOrd pos,
- coOrd *posR,
- ANGLE_T *angleR )
+ track_p trk,
+ coOrd pos,
+ coOrd* posR,
+ ANGLE_T* angleR)
{
- struct extraData * xx = GetTrkExtraData(trk);
- PATHPTR_T path;
traverseTrack_t trvtrk;
DIST_T dist;
- if ( GetTrkType(trk) != T_TURNOUT )
- AbortProg( "nextTurnoutPosition" );
-
- path = xx->pathCurr;
- path += strlen((char *)path)+1;
- while ( path[0] || path[1] )
- path++;
- path += 2;
- if ( *path == 0 )
- path = xx->paths;
- xx->pathCurr = path;
- if ( angleR == NULL || posR == NULL )
+ CHECK( GetTrkType(trk) == T_TURNOUT );
+
+ SetCurrPathIndex(trk, GetCurrPathIndex(trk) + 1);
+ InfoMessage(_("Turnout %d Path: %s"), GetTrkIndex(trk), GetCurrPath(trk));
+ 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 )
- trvtrk.angle = NormalizeAngle( trvtrk.angle+180.0 );
+ }
+ if (NormalizeAngle(trvtrk.angle - *angleR + 90.0) > 180) {
+ trvtrk.angle = NormalizeAngle(trvtrk.angle + 180.0);
+ }
*posR = trvtrk.pos;
*angleR = trvtrk.angle;
}
/**
* Create a parallel track for a turnout.
- *
+ *
*
* \param trk IN existing track
* \param pos IN ??
@@ -1866,60 +1846,56 @@ 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 extraData *xx, *yy;
- coOrd *endPts;
- trkEndPt_p endPt;
+ ANGLE_T angle = GetTrkEndAngle(trk, 1);
+ struct extraDataCompound_t* xx, * yy;
+ coOrd* endPts;
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
- angle -= 90;
+ } else {
+ angle -= 90;
+ }
/*
* get all endpoints of current piece and translate them for the new piece
*/
- endPts = MyMalloc( GetTrkEndPtCnt( trk ) * sizeof( coOrd ));
- for( i = 0; i < GetTrkEndPtCnt( trk ); i++) {
- Translate( &(endPts[ i ]), GetTrkEndPos( trk, i ), angle, sep );
+ endPts = MyMalloc(GetTrkEndPtCnt(trk) * sizeof(coOrd));
+ for (i = 0; i < GetTrkEndPtCnt(trk); i++) {
+ Translate(&(endPts[i]), GetTrkEndPos(trk, i), angle, sep);
}
/*
- * get information about the current piece and copy data
+ * get information about the current piece and copy data
*/
- if( newTrk ) {
+ 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 );
-
- yy = GetTrkExtraData(trk);
-
- DIST_T * radii = NULL;
- if (yy->special == TOcurved) {
- radii = MyMalloc(GetTrkEndPtCnt(trk) * sizeof(DIST_T));
- for (int i=0;i<GetTrkEndPtCnt( trk );i++) {
- radii[i] = DYNARR_N(DIST_T,yy->u.curved.radii,i);
- }
- }
+ 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);
+
- *newTrk = NewCompound( T_TURNOUT, 0, endPt[ 0 ].pos, endPt[ 0 ].angle + 90.0, yy->title, 2, endPt, radii, yy->pathLen, (char *)yy->paths, yy->segCnt, yy->segs );
- xx = GetTrkExtraData(*newTrk);
+ PATHPTR_T paths = GetPaths(trk); // MakeParallelTurnout
+ *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;
/* if (connection((int)curTurnoutEp).trk) {
@@ -1927,102 +1903,105 @@ static BOOL_T MakeParallelTurnout(
SetTrkScale( newTrk, curScaleInx );
} */
xx->special = yy->special;
+ xx->pathOverRide = yy->pathOverRide;
+ xx->pathNoCombine = yy->pathNoCombine;
xx->u = yy->u;
- SetDescriptionOrig( *newTrk );
+ SetDescriptionOrig(*newTrk);
xx->descriptionOff = zero;
xx->descriptionSize = zero;
SetTrkElev(*newTrk, GetTrkElevMode(trk), GetTrkElev(trk));
- GetTrkEndElev( trk, 0, &option, &d );
- SetTrkEndElev( *newTrk, 0, option, d, NULL );
- GetTrkEndElev( trk, 1, &option, &d );
- SetTrkEndElev( *newTrk, 1, option, d, NULL );
-
- MyFree( endPt );
+ GetTrkEndElev(trk, 0, &option, &d);
+ SetTrkEndElev(*newTrk, 0, option, d, NULL);
+ GetTrkEndElev(trk, 1, &option, &d);
+ SetTrkEndElev(*newTrk, 1, option, d, NULL);
} else {
+ DYNARR_SET( trkSeg_t, tempSegs_da, 1 );
tempSegs(0).color = wDrawColorBlack;
- tempSegs(0).width = 0;
- tempSegs_da.cnt = 1;
- 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 {
+ 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 {
/* 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).type = track?SEG_STRTRK:SEG_STRLIN;
- tempSegs(0).u.l.pos[0] = endPts[ 0 ];
- tempSegs(0).u.l.pos[1] = endPts[ 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 );
+ MyFree(endPts);
return TRUE;
}
-static wBool_t CompareTurnout( track_cp trk1, track_cp trk2 )
+static wBool_t CompareTurnout(track_cp trk1, track_cp trk2)
{
- struct extraData *xx1 = GetTrkExtraData( trk1 );
- struct extraData *xx2 = GetTrkExtraData( trk2 );
- 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 )
+ 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_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
/*****************************************
*
@@ -2032,84 +2011,94 @@ static trackCmd_t turnoutCmds = {
static coOrd maxTurnoutDim;
-static void AddTurnout( void );
+static void AddTurnout(void);
static wWin_p turnoutW;
-static void RescaleTurnout( void )
+static void RescaleTurnout(void)
{
DIST_T xscale, yscale;
- wPos_t ww, hh;
+ wWinPix_t ww, hh;
DIST_T w, h;
- wDrawGetSize( turnoutD.d, &ww, &hh );
- w = ww/turnoutD.dpi;
- h = hh/turnoutD.dpi;
- xscale = maxTurnoutDim.x/w;
- yscale = maxTurnoutDim.y/h;
- turnoutD.scale = max(xscale,yscale);
- if (turnoutD.scale == 0.0)
+ if ( curTurnout == NULL ) {
+ return;
+ }
+ wDrawGetSize(turnoutD.d, &ww, &hh);
+ w = ww / turnoutD.dpi;
+ h = hh / turnoutD.dpi;
+ xscale = (curTurnout->size.x + trackGauge*2) / w;
+ yscale = (curTurnout->size.y + trackGauge*2) / h;
+ turnoutD.scale = max(xscale, yscale);
+ if (turnoutD.scale == 0.0) {
turnoutD.scale = 1.0;
- turnoutD.size.x = w*turnoutD.scale;
- turnoutD.size.y = h*turnoutD.scale;
+ }
+ turnoutD.size.x = w * turnoutD.scale;
+ turnoutD.size.y = h * turnoutD.scale;
return;
}
-static void TurnoutChange( long changes )
+static void TurnoutChange(long changes)
{
- static char * lastScaleName = NULL;
- if (turnoutW == NULL)
+ static char* lastScaleName = NULL;
+ if (turnoutW == NULL) {
return;
- wListSetIndex( turnoutListL, 0 );
- if ( (!wWinIsVisible(turnoutW)) ||
- ( ((changes&CHANGE_SCALE) == 0 || lastScaleName == curScaleName) &&
- (changes&CHANGE_PARAMS) == 0 ) )
+ }
+ wListSetIndex(turnoutListL, 0);
+ if ((!wWinIsVisible(turnoutW)) ||
+ (((changes & CHANGE_SCALE) == 0 || lastScaleName == curScaleName) &&
+ (changes & CHANGE_PARAMS) == 0)) {
return;
+ }
lastScaleName = curScaleName;
//curTurnout = NULL;
curTurnoutEp = 0;
- wControlShow( (wControl_p)turnoutListL, FALSE );
- wListClear( turnoutListL );
+ 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 );
- wListSetIndex( turnoutListL, turnoutInx );
- wControlShow( (wControl_p)turnoutListL, TRUE );
+ }
+ 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) {
- wDrawClear( turnoutD.d );
+ wDrawClear(turnoutD.d);
return;
}
turnoutD.orig.x = -trackGauge;
turnoutD.orig.y = -trackGauge;
- maxTurnoutDim.x += 2*trackGauge;
- maxTurnoutDim.y += 2*trackGauge;
+ maxTurnoutDim.x += 2 * trackGauge;
+ maxTurnoutDim.y += 2 * trackGauge;
/*RescaleTurnout();*/
- RedrawTurnout();
+ RedrawTurnout( turnoutD.d, NULL, 0, 0 );
return;
}
-static void RedrawTurnout()
+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;
- DrawSegs( &turnoutD, zero, 0.0, curTurnout->segs, curTurnout->segCnt,
- trackGauge, wDrawColorBlack );
+ turnoutD.orig.y = (curTurnout->size.y + curTurnout->orig.y) - turnoutD.size.y +
+ trackGauge;
+ DrawSegs(&turnoutD, zero, 0.0, curTurnout->segs, curTurnout->segCnt,
+ trackGauge, wDrawColorBlack);
curTurnoutEp = 0;
HilightEndPt();
}
-static void TurnoutOk( void )
+static void TurnoutOk(void)
{
AddTurnout();
Reset();
@@ -2117,33 +2106,35 @@ 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 );
+ turnoutInfo_t* to;
+ if (inx != I_LIST) { return; }
+ to = (turnoutInfo_t*)wListGetItemContext((wList_p)pg->paramPtr[inx].control,
+ (wIndex_t) * (long*)valueP);
AddTurnout();
curTurnout = to;
- RedrawTurnout();
-/* ParamDialogOkActive( &turnoutPG, FALSE ); */
+ RedrawTurnout( turnoutD.d, NULL, 0, 0 );
+ /* ParamDialogOkActive( &turnoutPG, FALSE ); */
}
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;
- if ((dd=FindDistance(p, posI)) < d) {
+ for (i = 1; i < to->endCnt; i++) {
+ posI = GetEndPtPos(EndPtIndex(to->endPt, i));
+ if ((dd = FindDistance(p, posI)) < d) {
d = dd;
inx = i;
}
@@ -2152,30 +2143,30 @@ static wIndex_t TOpickEndPoint(
}
-static void HilightEndPt( void )
+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;
- s.x = s.y = trackGauge*2.0 /*+ turnoutD.minSize*/;
- wDrawSetTempMode( turnoutD.d, TRUE );
- DrawHilight( &turnoutD, p, s, FALSE );
- wDrawSetTempMode( turnoutD.d, FALSE );
+ 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 );
+ curTurnoutEp = TOpickEndPoint(pos, curTurnout);
HilightEndPt();
-LOG( log_turnout, 3, (" selected (action=%d) %ld\n", action, curTurnoutEp ) )
+ LOG(log_turnout, 3, (" selected (action=%d) %ld\n", action, curTurnoutEp))
}
#endif
-
+
/****************************************
*
* GRAPHICS COMMANDS
@@ -2186,23 +2177,23 @@ LOG( log_turnout, 3, (" selected (action=%d) %ld\n", action, curTurnoutEp ) )
* STATE INFO
*/
static struct {
- int state;
- coOrd pos;
- coOrd place;
- track_p trk;
- ANGLE_T angle;
- coOrd rot0, rot1;
- } Dto;
+ int state;
+ coOrd pos;
+ coOrd place;
+ track_p trk;
+ ANGLE_T angle;
+ coOrd rot0, rot1;
+} Dto;
static dynArr_t vector_da;
#define vector(N) DYNARR_N( vector_t, vector_da, N )
typedef struct {
- DIST_T off;
- ANGLE_T angle;
- EPINX_T ep;
- track_p trk;
- } vector_t;
+ DIST_T off;
+ ANGLE_T angle;
+ EPINX_T ep;
+ track_p trk;
+} vector_t;
/*
* PlaceTurnoutTrial
@@ -2216,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;
@@ -2235,84 +2226,92 @@ 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 );
- 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))) {
- epPos = GetTrkEndPos( trk, ep0 );
- d = FindDistance( pos, epPos );
- if (d <= minLength)
+ } 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))) {
+ epPos = GetTrkEndPos(trk, ep0);
+ d = FindDistance(pos, epPos);
+ if (d <= minLength) {
pos = epPos;
- if ( GetTrkType(trk) == T_TURNOUT ) { //Only on the end
- ep0 = ep1 = PickEndPoint( pos, trk );
- angle = GetTrkEndAngle( trk, ep0 );
+ }
+ if (GetTrkType(trk) == T_TURNOUT) { //Only on the end
+ ep0 = ep1 = PickEndPoint(pos, trk);
+ angle = GetTrkEndAngle(trk, ep0);
} else {
- angle = GetAngleAtPoint( trk, pos, &ep0, &ep1 );
- if (ep0==1) angle = NormalizeAngle(angle+180); //Reverse if curve backwards
+ angle = GetAngleAtPoint(trk, pos, &ep0, &ep1);
+ 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) {
+ angle = NormalizeAngle(angle + 180);
}
- angle = NormalizeAngle( angle + 180.0 );
- 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 );
- Rotate( &epPos, zero, 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 ) )
+ 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 = 100000;
- for (i=0;i<curTurnout->endCnt;i++) {
- posI = curTurnout->endPt[i].pos;
- epPos = AddCoOrd( pos, posI, angle );
- epAngle = NormalizeAngle( curTurnout->endPt[i].angle + angle );
+// track_p ctrk = NULL;
+// int ccnt = 0;
+// DIST_T clarge = DIST_INF;
+ for (i = 0; i < curTurnout->endCnt; i++) {
+ posI = GetEndPtPos(EndPtIndex(curTurnout->endPt,(EPINX_T)i));
+ epPos = AddCoOrd(pos, posI, 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))) {
- v->off = FindDistance( epPos, conPos );
- v->angle = FindAngle( epPos, conPos );
- if ( GetTrkType(trk) == T_TURNOUT ) {
- ep0 = ep1 = PickEndPoint( conPos, trk );
- aa = GetTrkEndAngle( trk, ep0 );
+ !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 {
- aa = GetAngleAtPoint( trk, conPos, &ep0, &ep1 );
- if (ep0) //Backwards - so reverse
- aa = NormalizeAngle(aa+180);
+ aa = GetAngleAtPoint(trk, conPos, &ep0, &ep1);
+ if (ep0) { //Backwards - so reverse
+ aa = NormalizeAngle(aa + 180);
+ }
}
v->ep = i;
- aa = fabs(DifferenceBetweenAngles( aa, epAngle ));
- if (QueryTrack(trk,Q_IS_CORNU) ) { //Make sure only two conns to each Cornu
- int k=0;
+ aa = fabs(DifferenceBetweenAngles(aa, epAngle));
+ if (QueryTrack(trk, Q_IS_CORNU)) { //Make sure only two conns to each Cornu
+ int k = 0;
v->trk = trk;
- for (int j=0; j<i;j++) {
- if (vector(j).trk == trk) k++;
+ for (int j = 0; j < i; j++) {
+ if (vector(j).trk == trk) { k++; }
}
- if (k<2) { //Already two conns to this track
+ 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++;
}
@@ -2328,51 +2327,55 @@ LOG( log_turnout, 3, ( "placeTurnout T%d (%0.3f %0.3f) A%0.3f\n",
static void PlaceTurnout(
- coOrd pos, track_p trk )
+ coOrd pos, track_p trk)
{
coOrd p, pos1, pos2;
track_p trk1, trk2;
ANGLE_T a, a1, a2, a3;
int i, connCnt1, connCnt2;
DIST_T d, maxD1, maxD2, sina;
- vector_t *V, * maxV;
+ vector_t* V, * maxV;
+
-
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)
+ LOG(log_turnout, 1, ("Place Turnout @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
+ if (curTurnoutEp >= (long)curTurnout->endCnt) {
curTurnoutEp = 0;
- DYNARR_SET( vector_t, vector_da, curTurnout->endCnt );
- if (trk) trk1 = trk;
- else trk1 = NULL;
- PlaceTurnoutTrial( &trk1, &pos1, &a1, &a2, &connCnt1, &maxD1, &vector(0) );
+ }
+ DYNARR_SET(vector_t, vector_da, curTurnout->endCnt);
+ 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 ) );
+ 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
+ for (i = 1; i < connCnt1; i++) { //Ignore first point
V = &vector(i);
- if ( V->off > maxV->off ) {
+ if (V->off > maxV->off) {
maxV = V;
}
}
- a3 = NormalizeAngle( Dto.angle + curTurnout->endPt[maxV->ep].angle );
- a = NormalizeAngle( a2 - a3 );
+ 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)
+ d = maxV->off / sina;
+ if (NormalizeAngle(maxV->angle - a3) > 180) {
d = -d;
- Translate( &pos2, pos, a2, d );
+ }
+ Translate(&pos2, pos, a2, d);
trk2 = trk1;
- PlaceTurnoutTrial( &trk2, &pos2, &a2, &a, &connCnt2, &maxD2, &vector(0) );
- if ( connCnt2 >= connCnt1 && maxD2 < maxD1 ) {
+ PlaceTurnoutTrial(&trk2, &pos2, &a2, &a, &connCnt2, &maxD2, &vector(0));
+ if (connCnt2 >= connCnt1 && maxD2 < maxD1) {
Dto.pos = pos2;
-LOG( log_turnout, 1, ( " trial 2 @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y ) );
+ LOG(log_turnout, 1, (" trial 2 @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
Dto.trk = trk2;
Dto.angle = a2;
maxD1 = maxD2;
@@ -2381,37 +2384,36 @@ LOG( log_turnout, 1, ( " trial 2 @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y ) );
}
}
}
- if ( connCnt1 > 0 ) {
- FormatCompoundTitle( listLabels, curTurnout->title );
- InfoMessage( _("%d connections, max distance %0.3f (%s)"),
- connCnt1, PutDim(maxD1), message );
+ if (connCnt1 > 0) {
+ FormatCompoundTitle(listLabels, curTurnout->title);
+ InfoMessage(_("%d connections, max distance %0.3f (%s)"),
+ connCnt1, PutDim(maxD1), message);
} else {
Dto.trk = NULL;
- FormatCompoundTitle( listLabels, curTurnout->title );
- InfoMessage( _("0 connections (%s)"), message );
- p = curTurnout->endPt[(int)curTurnoutEp].pos;
- Rotate( &p, zero, Dto.angle );
+ FormatCompoundTitle(listLabels, curTurnout->title);
+ InfoMessage(_("0 connections (%s)"), message);
+ 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;
-LOG( log_turnout, 1, ( " final @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y ) );
+ LOG(log_turnout, 1, (" final @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
}
}
-static void AddTurnout( void )
+static void AddTurnout(void)
{
track_p newTrk;
track_p trk, trk1;
- struct extraData *xx;
+ struct extraDataCompound_t* xx;
coOrd epPos;
DIST_T d;
ANGLE_T a, aa;
EPINX_T ep0, ep1, epx, epy;
- wIndex_t i,j;
- wIndex_t titleLen;
+ wIndex_t i, j;
typedef struct {
track_p trk;
EPINX_T ep;
- } junk_t;
+ } junk_t;
static dynArr_t connection_da;
static dynArr_t leftover_da;
#define connection(N) DYNARR_N( junk_t, connection_da, N )
@@ -2421,102 +2423,101 @@ 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" );
}
- UndoStart( _("Place New Turnout"), "addTurnout" );
- titleLen = strlen( curTurnout->title );
+ CHECK( curTurnout->segCnt >= 1 );
+ CHECK( curTurnout->endCnt >= 1 );
+
+ UndoStart(_("Place New Turnout"), "addTurnout");
- DYNARR_SET( trkEndPt_t, tempEndPts_da, curTurnout->endCnt );
- DYNARR_SET( junk_t, connection_da, curTurnout->endCnt );
- DYNARR_SET( junk_t, leftover_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++ ) {
+ 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" );
+ AuditTracks("addTurnout begin");
- for (i=0;i<curTurnout->endCnt;i++) {
- AuditTracks( "addTurnout [%d]", i );
+ for (i = 0; i < curTurnout->endCnt; i++) {
+ AuditTracks("addTurnout [%d]", i);
connection(i).trk = leftover(i).trk = NULL;
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)) ) {
-LOG( log_turnout, 1, ( "ep[%d] on T%d @(%0.3f %0.3f)\n",
- i, GetTrkIndex(trk), epPos.x, epPos.y ) )
- DIST_T dd = 10000.0;
+ 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;
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);
+ for (int j = 0; j < curTurnout->endCnt; j++) {
+ 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 ( GetTrkType(trk) == T_TURNOUT ) {
- ep0 = ep1 = PickEndPoint( epPos, trk );
- a = GetTrkEndAngle( trk, ep0 );
+ 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 {
- a = GetAngleAtPoint( trk, epPos, &ep0, &ep1 );
+ a = GetAngleAtPoint(trk, epPos, &ep0, &ep1);
}
- aa = fabs(DifferenceBetweenAngles( a , tempEndPts(i).angle));
- 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 )) ) ) {
+ 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)))) {
/* ... if they are close enough to a track and line up */
- if (aa<90) {
- epx = ep1;
- epy = ep0;
+ if (aa < 90) {
+ epx = ep1;
+ epy = ep0;
} else {
- epx = ep0;
- epy = ep1;
+ 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 );
+ 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;
}
/* split the track at the intersection point */
- AuditTracks( "addTurnout [%d] before splitTrack", i );
- if (SplitTrack( trk, epPos, epx, &leftover(i).trk, TRUE )) {
- AuditTracks( "addTurnout [%d], after splitTrack", i );
+ AuditTracks("addTurnout [%d] before splitTrack", i);
+ if (SplitTrack(trk, epPos, epx, &leftover(i).trk, TRUE)) {
+ AuditTracks("addTurnout [%d], after splitTrack", i);
/* remember so we can fix up connection later */
connection(i).trk = trk;
connection(i).ep = epx;
if (leftover(i).trk != NULL) {
- leftover(i).ep = 1-epx;
+ leftover(i).ep = 1 - epx;
/* did we already split this track? */
- for (j=0;j<i;j++) {
- if ( connection(i).trk == leftover(j).trk ) {
+ for (j = 0; j < i; j++) {
+ 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 );
- UndrawNewTrack( leftover(i).trk );
- DeleteTrack( leftover(i).trk, FALSE );
- AuditTracks( "addTurnout [%d] before delete", i );
+ LOG(log_turnout, 1, (" deleting leftover T%d\n",
+ 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);
leftover(i).trk = NULL;
leftover(i).ep = -1;
leftover(j).trk = NULL; //Forget this leftover
@@ -2528,112 +2529,115 @@ LOG( log_turnout, 1, ( " deleting leftover T%d\n",
}
}
}
-nextEnd:;
}
- AuditTracks( "addTurnout after loop" );
+ AuditTracks("addTurnout after loop");
/*
* copy data */
- newTrk = NewCompound( T_TURNOUT, 0, Dto.pos, Dto.angle, curTurnout->title, tempEndPts_da.cnt, &tempEndPts(0), NULL, curTurnout->pathLen, (char *)curTurnout->paths, curTurnout->segCnt, curTurnout->segs );
- xx = GetTrkExtraData(newTrk);
+ 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) {
- CopyAttributes( connection((int)curTurnoutEp).trk, newTrk );
- SetTrkScale( newTrk, GetLayoutCurScale());
+ CopyAttributes(connection((int)curTurnoutEp).trk, newTrk);
+ SetTrkScale(newTrk, GetLayoutCurScale());
}
xx->special = curTurnout->special;
- if (xx->special == TOcurved) {
- DYNARR_SET(DIST_T,xx->u.curved.radii,curTurnout->endCnt);
- for (int i=0;i<curTurnout->endCnt;i++) {
- DYNARR_N(DIST_T,xx->u.curved.radii,i) = DYNARR_N(DIST_T,curTurnout->u.curved.radii,i);
- }
- }
xx->u = curTurnout->u;
+ xx->pathOverRide = curTurnout->pathOverRide;
+ xx->pathNoCombine = curTurnout->pathNoCombine;
/* Make the connections */
visible = FALSE;
no_ties = FALSE;
noConnections = TRUE;
- 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;
- p0 = GetTrkEndPos( newTrk, i );
- p1 = GetTrkEndPos( connection(i).trk, connection(i).ep );
- ANGLE_T a0 = GetTrkEndAngle( newTrk, i);
- ANGLE_T a1 = GetTrkEndAngle( connection(i).trk, connection(i).ep );
- ANGLE_T a = fabs(DifferenceBetweenAngles(a0+180,a1));
- d = FindDistance( p0, p1 );
- if (QueryTrack(connection(i).trk,Q_IS_CORNU)) {
- ANGLE_T a = DifferenceBetweenAngles(FindAngle(p0,p1),a0);
- if (IsClose(d) || fabs(a)<=90.0) {
+ 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; }
+ p0 = GetTrkEndPos(newTrk, i);
+ p1 = GetTrkEndPos(connection(i).trk, connection(i).ep);
+ ANGLE_T a0 = GetTrkEndAngle(newTrk, i);
+ ANGLE_T a1 = GetTrkEndAngle(connection(i).trk, connection(i).ep);
+ ANGLE_T a = fabs(DifferenceBetweenAngles(a0 + 180, a1));
+ d = FindDistance(p0, p1);
+ if (QueryTrack(connection(i).trk, Q_IS_CORNU)) {
+ ANGLE_T a = DifferenceBetweenAngles(FindAngle(p0, p1), a0);
+ if (IsClose(d) || fabs(a) <= 90.0) {
trk1 = connection(i).trk;
ep0 = connection(i).ep;
- if (GetTrkEndTrk(trk1,ep0)) continue;
- DrawEndPt( &mainD, trk1, ep0, wDrawColorWhite );
+ 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);
- ConnectTracks(newTrk,i,trk1,ep0);
- DrawEndPt( &mainD, trk1, ep0, wDrawColorBlack );
+ GetTrackParams(PARAMS_EXTEND, newTrk, GetTrkEndPos(newTrk, i), &params);
+ 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;
- DrawEndPt( &mainD, trk1, ep0, wDrawColorWhite );
- ConnectTracks( newTrk, i, trk1, ep0 );
+ DrawEndPt(&mainD, trk1, ep0, wDrawColorWhite);
+ ConnectTracks(newTrk, i, trk1, ep0);
visible |= GetTrkVisible(trk1);
no_ties |= GetTrkNoTies(trk1);
- DrawEndPt( &mainD, trk1, ep0, wDrawColorBlack );
+ DrawEndPt(&mainD, trk1, ep0, wDrawColorBlack);
}
}
}
- if (noConnections)
+ if (noConnections) {
visible = TRUE;
- SetTrkVisible( newTrk, visible);
+ }
+ 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 && !IsTrackDeleted(trk) ) {
+ for (i = 0; i < curTurnout->endCnt; i++) {
+ if ((trk = leftover(i).trk) != NULL) {
+ CHECK( !IsTrackDeleted(trk) );
/* move endPt beyond the turnout */
/* it it is short then delete it */
coOrd off;
DIST_T maxX;
track_p lt = leftover(i).trk;
- if (QueryTrack(lt,Q_IS_CORNU)) {
+ if (QueryTrack(lt, Q_IS_CORNU)) {
UndrawNewTrack(lt);
- DeleteTrack(lt,TRUE);
+ DeleteTrack(lt, TRUE);
leftover(i).trk = NULL;
continue;
}
- EPINX_T ep, le = leftover(i).ep, nearest_ep =-1;
+ EPINX_T ep, le = leftover(i).ep, nearest_ep = -1;
coOrd pos, nearest_pos = zero;
ANGLE_T nearest_angle = 0.0;
DIST_T nearest_radius = 0.0;
coOrd nearest_center = zero;
trackParams_t params;
maxX = 0.0;
- DIST_T dd = 10000.0;
- a = NormalizeAngle( GetTrkEndAngle(lt,le) + 180.0 );
- for (ep=0; ep<curTurnout->endCnt; ep++) {
- FindPos( &off, NULL, GetTrkEndPos(newTrk,ep), GetTrkEndPos(lt,le), a, 100000.0 );
- pos = GetTrkEndPos(newTrk,ep);
+ 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);
+ pos = GetTrkEndPos(newTrk, ep);
DIST_T d = GetTrkDistance(lt, &pos);
- if ((d<dd) && ( d<trackGauge/2)) {
- ANGLE_T a = GetTrkEndAngle( lt, le );
- ANGLE_T a2 = fabs(DifferenceBetweenAngles(GetTrkEndAngle(newTrk,ep),a+180));
- if (GetTrkEndTrk(newTrk,ep)==NULL) { //Not if joined already
- if (a2<90 && QueryTrack(lt,Q_IS_CORNU)) { //And Cornu in the right direction
- GetTrackParams( PARAMS_EXTEND, newTrk, GetTrkEndPos(newTrk,ep), &params);
- nearest_pos = GetTrkEndPos(newTrk,ep);
- nearest_angle = NormalizeAngle(params.angle+180.0);
+ if ((d < dd) && (d < trackGauge / 2)) {
+ ANGLE_T a = GetTrkEndAngle(lt, le);
+ ANGLE_T a2 = fabs(DifferenceBetweenAngles(GetTrkEndAngle(newTrk, ep), a + 180));
+ if (GetTrkEndTrk(newTrk, ep) == NULL) { //Not if joined already
+ if (a2 < 90 && QueryTrack(lt, Q_IS_CORNU)) { //And Cornu in the right direction
+ GetTrackParams(PARAMS_EXTEND, newTrk, GetTrkEndPos(newTrk, ep), &params);
+ nearest_pos = GetTrkEndPos(newTrk, ep);
+ nearest_angle = NormalizeAngle(params.angle + 180.0);
nearest_radius = params.arcR;
nearest_center = params.arcP;
nearest_ep = ep;
@@ -2641,35 +2645,41 @@ nextEnd:;
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);
- ConnectTracks(newTrk,nearest_ep,lt,le);
+ if (QueryTrack(lt, Q_IS_CORNU)) {
+ if (nearest_ep >= 0) {
+ SetCornuEndPt(lt, le, nearest_pos, nearest_center, nearest_angle,
+ nearest_radius);
+ ConnectTracks(newTrk, nearest_ep, lt, le);
} else {
UndrawNewTrack(lt);
- DeleteTrack(lt,TRUE);
+ 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 );
+ 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);
}
}
}
- SetDescriptionOrig( newTrk );
+ SetDescriptionOrig(newTrk);
xx->descriptionOff = zero;
xx->descriptionSize = zero;
- DrawNewTrack( newTrk );
+ DrawNewTrack(newTrk);
- AuditTracks( "addTurnout T%d returns", GetTrkIndex(newTrk) );
+ AuditTracks("addTurnout T%d returns", GetTrkIndex(newTrk));
UndoEnd();
Dto.state = 0;
Dto.trk = NULL;
@@ -2677,14 +2687,15 @@ nextEnd:;
}
-static void TurnoutRotate( void * pangle )
+static void TurnoutRotate(void* pangle)
{
- if (Dto.state == 0)
+ if (Dto.state == 0) {
return;
- ANGLE_T angle = (ANGLE_T)(long)pangle;
+ }
+ ANGLE_T angle = (ANGLE_T)VP2L(pangle);
angle /= 1000.0;
Dto.pos = cmdMenuPos;
- Rotate( &Dto.pos, cmdMenuPos, angle );
+ Rotate(&Dto.pos, cmdMenuPos, angle);
Dto.angle += angle;
TempRedraw(); // TurnoutRotate
}
@@ -2692,65 +2703,70 @@ 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) {
- DYNARR_APPEND(trkSeg_t,anchors_da,1);
- int i = anchors_da.cnt-1;
+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);
+ 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;
+ 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);
+ Translate(&anchors(i).u.l.pos[1], pos, NormalizeAngle(a - 135), len);
anchors(i).color = wDrawColorBlue;
}
-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;
+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).u.c.radius = d * 2;
anchors(i).color = wDrawColorAqua;
coOrd head; //Arrows
- for (int j=0;j<3;j++) {
- Translate(&head,pos,j*120,d*2);
- CreateArrowAnchor(head,NormalizeAngle((j*120)+90),d);
+ 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) {
- 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);
- 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);
+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);
+ 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);
}
-
+
/**
* Process the mouse events for laying track.
*
* \param action IN event type
- * \param pos IN mouse position
+ * \param pos IN mouse position
* \return next state
*/
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
@@ -2760,12 +2776,13 @@ EXPORT STATUS_T CmdTurnoutAction(
Dto.state = 0;
Dto.trk = NULL;
Dto.angle = 0.0;
- DYNARR_RESET(trkSeg_t,anchors_da);
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ SetAllTrackSelect(FALSE);
return C_CONTINUE;
case wActionMove:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if (Dto.state && (MyGetKeyState()&WKEY_CTRL)) {
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ if (Dto.state && (MyGetKeyState() & WKEY_CTRL)) {
CreateRotateAnchor(pos);
} else {
CreateMoveAnchor(pos);
@@ -2773,142 +2790,154 @@ EXPORT STATUS_T CmdTurnoutAction(
return C_CONTINUE;
break;
case C_DOWN:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curTurnout == NULL ) return C_CONTINUE;
- PlaceTurnout( pos, NULL );
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ if (curTurnout == NULL) { return C_CONTINUE; }
+ PlaceTurnout(pos, NULL);
Dto.state = 1;
- CreateMoveAnchor(pos);
return C_CONTINUE;
case C_MOVE:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curTurnout == NULL ) return C_CONTINUE;
- if ( curTurnoutEp >= (long)curTurnout->endCnt )
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ if (curTurnout == NULL) { return C_CONTINUE; }
+ if (curTurnoutEp >= (long)curTurnout->endCnt) {
curTurnoutEp = 0;
+ }
Dto.state = 1;
- PlaceTurnout( pos, Dto.trk );
- CreateMoveAnchor(pos);
+ PlaceTurnout(pos, Dto.trk);
return C_CONTINUE;
case C_UP:
- DYNARR_RESET(trkSeg_t,anchors_da);
- CreateMoveAnchor(pos);
- InfoMessage( _("Left-Drag to place, Ctrl+Left-Drag or Right-Drag to Rotate, Space or Enter to accept, Esc to Cancel") );
+ 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"));
return C_CONTINUE;
case C_RDOWN:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curTurnout == NULL ) return C_CONTINUE;
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ 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 ) );
+ LOG(log_turnout, 1, ("RDOWN @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
}
Dto.rot0 = Dto.rot1 = pos;
- CreateRotateAnchor(pos);
Dto.state = 2;
origPos = Dto.pos;
#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;
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ 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 (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;
-LOG( log_turnout, 1, ( "RMOVE pre @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y ) );
+ LOG(log_turnout, 1, ("RMOVE pre @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y));
#ifdef NEWROTATE
angle -= baseAngle;
- Dto.angle = NormalizeAngle( origAngle + angle );
+ 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 ) );
+ 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 );
+ FormatCompoundTitle(listLabels, curTurnout->title);
+ InfoMessage(_("Angle = %0.3f (%s)"), PutAngle(NormalizeAngle(Dto.angle + 90.0)),
+ message);
Dto.state = 2;
- CreateRotateAnchor(Dto.rot0);
return C_CONTINUE;
case C_RUP:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curTurnout == NULL ) return C_CONTINUE;
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ if (curTurnout == NULL) { return C_CONTINUE; }
Dto.state = 1;
- CreateMoveAnchor(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 C_CONTINUE;
case C_LCLICK:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if ( curTurnout == NULL ) return C_CONTINUE;
- if ( MyGetKeyState() & WKEY_SHIFT ) {
- angle = curTurnout->endPt[(int)curTurnoutEp].angle;
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ if (curTurnout == NULL) { return C_CONTINUE; }
+ if (MyGetKeyState() & WKEY_SHIFT) {
+ 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 ) );
- PlaceTurnout( Dto.place, Dto.trk );
+ }
+ if (Dto.trk == NULL) {
+ Dto.angle = NormalizeAngle(Dto.angle + (angle - GetEndPtAngle( EndPtIndex(
+ curTurnout->endPt, (EPINX_T)curTurnoutEp))));
+ }
+ PlaceTurnout(Dto.place, Dto.trk);
} else {
- CmdTurnoutAction( C_DOWN, pos );
- CmdTurnoutAction( C_UP, pos );
+ CmdTurnoutAction(C_DOWN, pos);
+ CmdTurnoutAction(C_UP, pos);
}
return C_CONTINUE;
case C_REDRAW:
+ wSetCursor(mainD.d, defaultCursor);
if (Dto.state) {
- DrawSegs( &tempD, Dto.pos, Dto.angle,
- curTurnout->segs, curTurnout->segCnt, trackGauge, wDrawColorBlue );
+ DrawSegs(&tempD, Dto.pos, Dto.angle,
+ curTurnout->segs, curTurnout->segCnt, trackGauge, selectedColor);
}
- 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 );
+ if (anchors_da.cnt > 0) {
+ wSetCursor(mainD.d, wCursorNone);
+ }
+ if (Dto.state == 2) {
+ DrawLine(&tempD, Dto.rot0, Dto.rot1, 0, wDrawColorBlue);
}
- if (Dto.state == 2)
- DrawLine( &tempD, Dto.rot0, Dto.rot1, 0, wDrawColorBlack );
return C_CONTINUE;
case C_CANCEL:
- DYNARR_RESET(trkSeg_t,anchors_da);
+ DYNARR_RESET(trkSeg_t, anchors_da);
Dto.state = 0;
Dto.trk = NULL;
/*wHide( newTurn.reg.win );*/
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);
+ DYNARR_RESET(trkSeg_t, anchors_da);
AddTurnout();
- Dto.state=0;
+ Dto.state = 0;
Dto.trk = NULL;
return C_TERMINATE;
case C_FINISH:
- DYNARR_RESET(trkSeg_t,anchors_da);
- if (Dto.state != 0 && Dto.trk != NULL)
- CmdTurnoutAction( C_OK, pos );
- else
- CmdTurnoutAction( C_CANCEL, pos );
+ DYNARR_RESET(trkSeg_t, anchors_da);
+ if (Dto.state != 0 && Dto.trk != NULL) {
+ CmdTurnoutAction(C_OK, pos);
+ } else {
+ CmdTurnoutAction(C_CANCEL, pos);
+ }
return C_TERMINATE;
case C_CMDMENU:
menuPos = pos;
- wMenuPopupShow( turnoutPopupM );
+ wMenuPopupShow(turnoutPopupM);
return C_CONTINUE;
default:
@@ -2919,83 +2948,92 @@ LOG( log_turnout, 1, ( "RMOVE post @ %0.3fx%0.3f\n", Dto.pos.x, Dto.pos.y ) );
#ifdef TURNOUTCMD
static STATUS_T CmdTurnout(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos)
{
wIndex_t turnoutIndex;
- turnoutInfo_t * turnoutPtr;
+ turnoutInfo_t* turnoutPtr;
switch (action & 0xFF) {
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 );
- InitNewTurn( turnoutNewM );
+ /* 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 ); */
- turnoutIndex = wListGetIndex( turnoutListL );
+ /* ParamDialogOkActive( &turnoutPG, FALSE ); */
+ turnoutIndex = wListGetIndex(turnoutListL);
turnoutPtr = curTurnout;
- wShow( turnoutW );
- TurnoutChange( CHANGE_PARAMS|CHANGE_SCALE );
+ wShow(turnoutW);
+ TurnoutChange(CHANGE_PARAMS | CHANGE_SCALE);
if (curTurnout == NULL) {
- NoticeMessage2( 0, MSG_TURNOUT_NO_TURNOUT, _("Ok"), NULL );
+ NoticeMessage2(0, MSG_TURNOUT_NO_TURNOUT, _("Ok"), NULL);
return C_TERMINATE;
}
if (turnoutIndex > 0 && turnoutPtr) {
curTurnout = turnoutPtr;
- wListSetIndex( turnoutListL, turnoutIndex );
- RedrawTurnout();
+ wListSetIndex(turnoutListL, turnoutIndex);
+ RedrawTurnout( turnoutD.d, NULL, 0, 0 );
}
- InfoMessage( _("Pick turnout and active End Point, then place on the layout"));
- ParamLoadControls( &turnoutPG );
- ParamGroupRecord( &turnoutPG );
- return CmdTurnoutAction( action, pos );
+ InfoMessage(_("Pick turnout and active End Point, then place on the layout"));
+ ParamLoadControls(&turnoutPG);
+ ParamGroupRecord(&turnoutPG);
+ SetAllTrackSelect(FALSE);
+ return CmdTurnoutAction(action, pos);
case wActionMove:
- return CmdTurnoutAction( action, pos );
+ return CmdTurnoutAction(action, pos);
case C_DOWN:
case C_RDOWN:
- ParamDialogOkActive( &turnoutPG, TRUE );
- if (hideTurnoutWindow)
- wHide( turnoutW );
- if (((action&0xFF) == C_DOWN) && (MyGetKeyState()&WKEY_CTRL))
- return CmdTurnoutAction(C_RDOWN, pos); //Convert CTRL into Right
- /*no break*/
+ ParamDialogOkActive(&turnoutPG, TRUE);
+ if (hideTurnoutWindow) {
+ wHide(turnoutW);
+ }
+ 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)
- return CmdTurnoutAction (C_RMOVE, pos);
- /*no break*/
+ if (MyGetKeyState() & WKEY_CTRL) {
+ return CmdTurnoutAction(C_RMOVE, pos);
+ }
+ /*no break*/
case C_RMOVE:
- return CmdTurnoutAction( action, pos );
+ return CmdTurnoutAction(action, pos);
case C_UP:
case C_RUP:
- if (hideTurnoutWindow)
- wShow( turnoutW );
+ 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))
- return CmdTurnoutAction (C_RUP, pos);
- return CmdTurnoutAction( action, pos );
+ 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:
- CmdTurnoutAction( action, pos );
+ CmdTurnoutAction(action, pos);
HilightEndPt();
return C_CONTINUE;
case C_CANCEL:
- wHide( turnoutW );
- return CmdTurnoutAction( action, pos );
+ wHide(turnoutW);
+ return CmdTurnoutAction(action, pos);
case C_TEXT:
- CmdTurnoutAction( action, pos );
+ CmdTurnoutAction(action, pos);
return C_CONTINUE;
case C_OK:
case C_FINISH:
case C_CMDMENU:
case C_REDRAW:
- return CmdTurnoutAction( action, pos );
+ return CmdTurnoutAction(action, pos);
default:
return C_CONTINUE;
@@ -3003,59 +3041,64 @@ static STATUS_T CmdTurnout(
}
#endif
-
+
/**
* Event procedure for the hotbar.
*
* \param op IN requested function
- * \param data IN pointer to info on selected element
+ * \param data IN pointer to info on selected element
* \param d IN
* \param origP IN
- * \return
+ * \return
*/
-static char * CmdTurnoutHotBarProc(
- hotBarProc_e op,
- void * data,
- drawCmd_p d,
- coOrd * origP )
+static char* CmdTurnoutHotBarProc(
+ hotBarProc_e op,
+ void* data,
+ drawCmd_p d,
+ coOrd* origP)
{
- turnoutInfo_t * to = (turnoutInfo_t*)data;
- switch ( op ) {
+ turnoutInfo_t* to = (turnoutInfo_t*)data;
+ switch (op) {
case HB_SELECT: /* new element is selected */
- CmdTurnoutAction( C_FINISH, zero ); /* finish current operation */
+ CmdTurnoutAction(C_FINISH, zero); /* finish current operation */
curTurnout = to;
- DoCommandB( (void*)(intptr_t)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')
- FormatCompoundTitle( listLabels|LABEL_DESCR, to->title );
+ FormatCompoundTitle(listLabels, to->title);
+ if (message[0] == '\0') {
+ FormatCompoundTitle(listLabels | LABEL_DESCR, to->title);
+ }
return message;
case HB_BARTITLE:
- FormatCompoundTitle( hotBarLabels<<1, to->title );
+ FormatCompoundTitle(hotBarLabels << 1, to->title);
return message;
case HB_FULLTITLE:
return to->title;
case HB_DRAW:
- DrawSegs( d, *origP, 0.0, to->segs, to->segCnt, trackGauge, wDrawColorBlack );
+ DrawSegs(d, *origP, 0.0, to->segs, to->segCnt, trackGauge, wDrawColorBlack);
return NULL;
}
return NULL;
}
-EXPORT void AddHotBarTurnouts( void )
+EXPORT void AddHotBarTurnouts(void)
{
wIndex_t inx;
- turnoutInfo_t * to;
- for ( inx=0; inx < turnoutInfo_da.cnt; inx ++ ) {
+ turnoutInfo_t* to;
+ for (inx = 0; inx < turnoutInfo_da.cnt; inx++) {
to = turnoutInfo(inx);
- if ( !( IsParamValid(to->paramFileIndex) &&
- to->segCnt > 0 &&
- CompatibleScale( TRUE, to->scaleInx, GetLayoutCurScale()) ) )
- continue;
- AddHotBarElement( to->contentsLabel, to->size, to->orig, TRUE, FALSE, to->barScale, to, CmdTurnoutHotBarProc );
+ if (!(IsParamValid(to->paramFileIndex) &&
+ 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);
}
}
@@ -3068,8 +3111,8 @@ EXPORT void AddHotBarTurnouts( void )
*/
static STATUS_T CmdTurnoutHotBar(
- wAction_t action,
- coOrd pos )
+ wAction_t action,
+ coOrd pos)
{
switch (action & 0xFF) {
@@ -3077,158 +3120,168 @@ static STATUS_T CmdTurnoutHotBar(
case C_START:
//TurnoutChange( CHANGE_PARAMS|CHANGE_SCALE );
if (curTurnout == NULL) {
- NoticeMessage2( 0, MSG_TURNOUT_NO_TURNOUT, _("Ok"), NULL );
+ NoticeMessage2(0, MSG_TURNOUT_NO_TURNOUT, _("Ok"), NULL);
return C_TERMINATE;
}
- FormatCompoundTitle( listLabels|LABEL_DESCR, curTurnout->title );
- InfoMessage( _("Place %s and draw into position"), message );
- wIndex_t listIndex = FindListItemByContext( turnoutListL, curTurnout );
- if ( listIndex > 0 )
- turnoutInx = listIndex;
- ParamLoadControls( &turnoutPG );
- ParamGroupRecord( &turnoutPG );
- return CmdTurnoutAction( action, pos );
+ FormatCompoundTitle(listLabels | LABEL_DESCR, curTurnout->title);
+ InfoMessage(_("Place %s and draw into position"), message);
+ wIndex_t listIndex = FindListItemByContext(turnoutListL, curTurnout);
+ if (listIndex >= 0) {
+ turnoutInx = listIndex;
+ }
+ ParamLoadControls(&turnoutPG);
+ ParamGroupRecord(&turnoutPG);
+ return CmdTurnoutAction(action, pos);
case wActionMove:
- return CmdTurnoutAction( action, pos );
+ return CmdTurnoutAction(action, pos);
case C_DOWN:
- if (MyGetKeyState()&WKEY_CTRL) {
- return CmdTurnoutAction( C_RDOWN, pos );
+ if (MyGetKeyState() & WKEY_CTRL) {
+ return CmdTurnoutAction(C_RDOWN, pos);
}
- /*no break*/
+ /*no break*/
case C_RDOWN:
- return CmdTurnoutAction( action, pos );
+ return CmdTurnoutAction(action, pos);
case C_MOVE:
- if (MyGetKeyState()&WKEY_CTRL) {
- return CmdTurnoutAction( C_RMOVE, pos );
+ if (MyGetKeyState() & WKEY_CTRL) {
+ return CmdTurnoutAction(C_RMOVE, pos);
}
- /*no break*/
+ /*no break*/
case C_RMOVE:
- return CmdTurnoutAction( action, pos );
+ return CmdTurnoutAction(action, pos);
case C_UP:
- if (MyGetKeyState()&WKEY_CTRL) {
- return CmdTurnoutAction( C_RUP, pos );
+ 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") );
- return CmdTurnoutAction( action, pos );
+ 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 );
+ 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 );
+ CmdTurnoutAction(action, pos);
return C_CONTINUE;
case C_CANCEL:
HotBarCancel();
- /*no break*/
+ /*no break*/
default:
- return CmdTurnoutAction( action, pos );
+ return CmdTurnoutAction(action, pos);
}
}
#ifdef TURNOUTCMD
-#include "bitmaps/turnout.xpm"
+#include "bitmaps/turnout.xpm3"
-EXPORT void InitCmdTurnout( wMenu_p menu )
+EXPORT void InitCmdTurnout(wMenu_p menu)
{
- AddMenuButton( menu, CmdTurnout, "cmdTurnout", _("Predefined Track"), wIconCreatePixMap(turnout_xpm), 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" );
- log_traverseTurnout = LogFindIndex( "traverseTurnout" );
- log_suppressCheckPaths = LogFindIndex( "suppresscheckpaths" );
- log_splitturnout = LogFindIndex( "splitturnout" );
- if ( turnoutPopupM == NULL ) {
- turnoutPopupM = MenuRegister( "Turnout Rotate" );
- AddRotateMenu( turnoutPopupM, TurnoutRotate );
+ 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");
+ log_traverseTurnout = LogFindIndex("traverseTurnout");
+ log_suppressCheckPaths = LogFindIndex("suppresscheckpaths");
+ log_splitturnout = LogFindIndex("splitturnout");
+ if (turnoutPopupM == NULL) {
+ turnoutPopupM = MenuRegister("Turnout Rotate");
+ AddRotateMenu(turnoutPopupM, TurnoutRotate);
}
}
#endif
-EXPORT void InitTrkTurnout( void )
+EXPORT void InitTrkTurnout(void)
{
- T_TURNOUT = InitObject( &turnoutCmds );
+ T_TURNOUT = InitObject(&turnoutCmds);
/*InitDebug( "Turnout", &debugTurnout );*/
- AddParam( "TURNOUT ", ReadTurnoutParam);
+ AddParam("TURNOUT ", ReadTurnoutParam);
}
-
+
#ifdef TEST
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)
{
}
-void wListClear( wList_p bl )
+void wListClear(wList_p bl)
{
}
-void wDrawSetScale( wDrawable_p d )
+void wDrawSetScale(wDrawable_p d)
{
d->scale = 1.0;
}
-void wDrawClear( wDrawable_p d )
+void wDrawClear(wDrawable_p d)
{
}
-void GetTrkCurveCenter( track_p t, coOrd *pos, DIST_T *radius )
+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;
}
-track_p OnTrack( coOrd *pos )
+track_p OnTrack(coOrd* pos)
{
return NULL;
}
-void ErrorMessage( char * msg, ... )
+void ErrorMessage(char* msg, ...)
{
- lprintf( "ERROR : %s\n", msg );
+ lprintf("ERROR : %s\n", msg);
}
-void DeleteTrack( track_p t )
+void DeleteTrack(track_p t)
{
}
-void ConnectTracks( track_p t0, EPINX_T ep0, track_p t1, EPINX_T ep1 )
+void ConnectTracks(track_p t0, EPINX_T ep0, track_p t1, EPINX_T ep1)
{
}
#endif
-main( INT_T argc, char * argv[] )
+main(INT_T argc, char* argv[])
{
- FILE * f;
+ FILE* f;
char line[STR_SIZE];
wIndex_t lineCnt = 0;
/*debugTurnout = 3;*/
- if ((f = fopen("turnout.params", "r" )) == NULL ) {
- Perror( "turnout.params" );
+ if ((f = fopen("turnout.params", "r")) == NULL) {
+ Perror("turnout.params");
Exit(1);
}
- while ( fgets( line, sizeof line, f ) != NULL ) {
+ while (fgets(line, sizeof line, f) != NULL) {
lineCnt++;
- ReadTurnoutParam( &lineCnt );
+ ReadTurnoutParam(&lineCnt);
}
}
#endif
diff --git a/app/bin/cturntbl.c b/app/bin/cturntbl.c
index f15aeff..bab9850 100644
--- a/app/bin/cturntbl.c
+++ b/app/bin/cturntbl.c
@@ -17,30 +17,27 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-#include <string.h>
-
#include "cstraigh.h"
#include "cundo.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "cselect.h"
+#include "common-ui.h"
static TRKTYP_T T_TURNTABLE = -1;
-struct extraData {
- coOrd pos;
- DIST_T radius;
- EPINX_T currEp;
- BOOL_T reverse;
- };
+typedef struct extraDataTurntable_t {
+ extraDataBase_t base;
+ coOrd pos;
+ DIST_T radius;
+ EPINX_T currEp;
+ BOOL_T reverse;
+} extraDataTurntable_t;
static DIST_T turntableDiameter = 1.0;
@@ -49,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") } };
-static paramGroup_t turntablePG = { "turntable", 0, turntablePLs, sizeof turntablePLs/sizeof turntablePLs[0] };
+ { 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 )
{
- struct extraData * xx = GetTrkExtraData(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);
ep = xx->currEp;
do {
if ( GetTrkEndTrk(trk,ep) ) {
@@ -68,8 +68,9 @@ static BOOL_T ValidateTurntablePosition(
return TRUE;
}
ep++;
- if ( ep >= epCnt )
+ if ( ep >= epCnt ) {
ep = 0;
+ }
} while ( ep != xx->currEp );
return FALSE;
}
@@ -77,8 +78,9 @@ static BOOL_T ValidateTurntablePosition(
static void ComputeTurntableBoundingBox( track_p trk )
{
- struct extraData *xx = GetTrkExtraData(trk);
coOrd hi, lo;
+ 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;
@@ -89,9 +91,9 @@ static void ComputeTurntableBoundingBox( track_p trk )
static track_p NewTurntable( coOrd p, DIST_T r )
{
track_p t;
- struct extraData *xx;
+ struct extraDataTurntable_t *xx;
t = NewTrack( 0, T_TURNTABLE, 0, sizeof *xx );
- xx = GetTrkExtraData(t);
+ xx = GET_EXTRA_DATA(t, T_TURNTABLE, extraDataTurntable_t);
xx->pos = p;
xx->radius = r;
xx->currEp = 0;
@@ -102,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 extraData *xx = GetTrkExtraData(trk);
+ 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
@@ -161,10 +176,11 @@ static ANGLE_T ConstrainTurntableAngle( track_p trk, coOrd pos )
static EPINX_T NewTurntableEndPt( track_p trk, ANGLE_T angle )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ 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;
@@ -182,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 extraData *xx = GetTrkExtraData(trk);
+ 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 extraData *xx = GetTrkExtraData(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;
@@ -203,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 extraData *xx = GetTrkExtraData(trk);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
DIST_T d;
ANGLE_T a;
coOrd pos0, pos1;
@@ -230,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) )
- return 100000.0;
+ 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 );
@@ -240,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 extraData *xx = GetTrkExtraData(trk);
+ 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 );
@@ -282,20 +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 extraData *xx = GetTrkExtraData(trk);
+ 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;
- trntblData.epCnt = GetTrkEndPtCnt(trk);
+ int j=0;
+ 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 );
@@ -307,14 +341,21 @@ static void DeleteTurntable( track_p t )
static BOOL_T WriteTurntable( track_p t, FILE * f )
{
- struct extraData *xx = GetTrkExtraData(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
+ }
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, xx->currEp )>0;
- for (ep=0; ep<GetTrkEndPtCnt(t); ep++)
- rc &= WriteEndPt( f, t, ep );
+ 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
+ }
rc &= fprintf(f, "\t%s\n", END_SEGS)>0;
return rc;
}
@@ -322,7 +363,7 @@ static BOOL_T WriteTurntable( track_p t, FILE * f )
static BOOL_T ReadTurntable( char * line )
{
track_p trk;
- struct extraData *xx;
+ struct extraDataTurntable_t *xx;
TRKINX_T index;
BOOL_T visible;
DIST_T r;
@@ -333,17 +374,19 @@ 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 = GetTrkExtraData(trk);
+ xx = GET_EXTRA_DATA(trk, T_TURNTABLE, extraDataTurntable_t);
if ( paramVersion < 3 ) {
SetTrkVisible(trk, visible!=0);
} else {
@@ -354,6 +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; }
xx->reverse = 0;
ComputeTurntableBoundingBox( trk );
return TRUE;
@@ -361,7 +405,8 @@ static BOOL_T ReadTurntable( char * line )
static void MoveTurntable( track_p trk, coOrd orig )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataTurntable_t *xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
xx->pos.x += orig.x;
xx->pos.y += orig.y;
ComputeTurntableBoundingBox( trk );
@@ -369,56 +414,65 @@ static void MoveTurntable( track_p trk, coOrd orig )
static void RotateTurntable( track_p trk, coOrd orig, ANGLE_T angle )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ 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 extraData *xx = GetTrkExtraData(trk);
+ 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 extraData *xx = GetTrkExtraData(trk);
+ 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;
@@ -444,38 +498,82 @@ 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;
+ }
+ }
+ return epfound;
+}
+
+
static BOOL_T CheckTraverseTurntable(
- track_p trk,
- coOrd pos )
+ track_p trk,
+ coOrd pos )
{
- struct extraData * xx = GetTrkExtraData(trk);
+ 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 extraData * xx = GetTrkExtraData(trk);
+ 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 );
@@ -487,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 );
@@ -510,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;
@@ -522,27 +622,32 @@ static BOOL_T TraverseTurntable(
static BOOL_T EnumerateTurntable( track_p trk )
{
- struct extraData *xx;
+ struct extraDataTurntable_t *xx;
static dynArr_t turntables_da;
#define turntables(N) DYNARR_N( FLOAT_T, turntables_da, N )
- int inx;
+ size_t inx;
char tmp[40];
+ BOOL_T content = FALSE;
if ( trk != NULL ) {
- xx = GetTrkExtraData(trk);
+ content = TRUE;
+ 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 > (int)enumerateMaxDescLen )
- enumerateMaxDescLen = inx;
+ if ( inx > enumerateMaxDescLen ) {
+ enumerateMaxDescLen = (int)inx;
+ }
} else {
for (inx=0; inx<turntables_da.cnt; inx++) {
+ content = TRUE;
sprintf( tmp, "Turntable, diameter %s", FormatDistance(turntables(inx)) );
- EnumerateList( 1, 0.0, tmp );
+ EnumerateList( 1, 0.0, tmp, NULL );
}
DYNARR_RESET( FLOAT_T, turntables_da );
}
- return TRUE;
+ return content;
}
@@ -561,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:
@@ -571,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 );
@@ -601,26 +709,29 @@ 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 )) {
- UndoUndo();
+ UndoUndo(NULL);
return FALSE;
}
return TRUE;
@@ -631,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;
@@ -643,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;
@@ -656,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;
@@ -680,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 extraData *xx = GetTrkExtraData(*trk);
+ } 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
@@ -714,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:
@@ -726,34 +842,50 @@ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
FlipPoint( &xx->pos, orig, angle );
ComputeBoundingBox( trk );
}
+BOOL_T debug = 0;
static void DrawTurntablePositionIndicator( track_p trk, wDrawColor color )
{
- struct extraData * xx = GetTrkExtraData(trk);
+ 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 );
DrawLine( &tempD, pos0, pos1, 3, color );
+ if (debug) {
+ if (xx->reverse) {
+
+ Rotate(&pos1,xx->pos, 15);
+ DrawFillCircle( &tempD, pos1, 0.5, color);
+ } else {
+ Rotate(&pos0,xx->pos, 10);
+ DrawFillCircle( &tempD, pos0, 0.5, color);
+ }
+ }
}
static wBool_t CompareTurntable( track_cp trk1, track_cp trk2 )
{
- struct extraData *xx1 = GetTrkExtraData( trk1 );
- struct extraData *xx2 = GetTrkExtraData( 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 );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Pos", xx1, xx2, pos )
REGRESS_CHECK_DIST( "Radius", xx1, xx2, radius )
@@ -763,75 +895,114 @@ 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 extraData * xx = GetTrkExtraData(trk);
+
+ struct extraDataTurntable_t * xx = GET_EXTRA_DATA(trk, T_TURNTABLE,
+ extraDataTurntable_t);
EPINX_T ep;
ANGLE_T angle0, angle1;
- BOOL_T reverse;
-
- angle1 = FindAngle( xx->pos, pos );
- if ( !FindTurntableEndPt( trk, &angle1, &ep, &reverse ) )
- return;
+ BOOL_T reverse=FALSE, train_reversed = FALSE;
+ EPINX_T epCnt=GetTrkEndPtCnt(trk);
+ EPINX_T epbest = -1, epfound = -1;
+ coOrd inpos = *posR;
+ ANGLE_T inangle = *angleR;
angle0 = GetTrkEndAngle(trk,xx->currEp);
- if ( ep == xx->currEp ) {
- Rotate( posR, xx->pos, 180.0 );
- if ( xx->reverse ) {
- angle1 = angle0;
- xx->reverse = FALSE;
+ 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 ) {
+ continue;
+ }
+ coOrd end = GetTrkEndPos(trk,ep);
+ DIST_T d = FindDistance(end,pos);
+ if (d<dd) {
+ dd = d;
+ epbest = ep;
+ }
+ }
+ if (epbest>=0 && IsClose(dd)) {
+ epfound = epbest;
+ }
+ // Else find next track in given direction beyond current
+ if (epfound<0) {
+ epfound = FindTurntableNextEndPt( trk, pos );
+ }
+ if (epfound>=0) {
+ if (xx->currEp == epfound ) {
+ reverse = TRUE;
+ xx->reverse = !xx->reverse;
+ train_reversed = !train_reversed;
} else {
- angle1 = NormalizeAngle( angle0+180.0 );
- xx->reverse = TRUE;
+ //If back end moving, flip result
+ if (fabs(DifferenceBetweenAngles(FindAngle(xx->pos,pos),GetTrkEndAngle(trk,
+ xx->currEp)))>90) {
+ if (epfound>=0 && epfound != xx->currEp) {
+ reverse = TRUE;
+ xx->reverse = !xx->reverse;
+ train_reversed = !train_reversed;
+ }
+ }
+ }
+ xx->currEp = epfound;
+ angle1 = GetTrkEndAngle(trk,xx->currEp);
+ if (!reverse) {
+ *angleR = NormalizeAngle(angle1+(train_reversed?180:0));
+ Translate( posR, xx->pos, *angleR, FindDistance(*posR,xx->pos) );
+ } else {
+ *angleR = NormalizeAngle(angle1+(train_reversed?180:0));
+ 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);
}
- } else {
- angle1 = GetTrkEndAngle(trk,ep);
- Rotate( posR, xx->pos, angle1-angle0 );
- xx->reverse = FALSE;
}
- *angleR = angle1;
- xx->currEp = ep;
}
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 )
@@ -845,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 );
@@ -856,6 +1028,7 @@ static STATUS_T CmdTurntable( wAction_t action, coOrd pos )
controls[1] = NULL;
labels[0] = N_("Diameter");
InfoSubstituteControls( controls, labels );
+ SetAllTrackSelect( FALSE );
/*InfoMessage( "Place Turntable");*/
state = 0;
return C_CONTINUE;
@@ -894,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;
@@ -908,12 +1082,14 @@ static STATUS_T CmdTurntable( wAction_t action, coOrd pos )
}
-#include "bitmaps/turntbl.xpm"
+#include "bitmaps/turntable.xpm3"
EXPORT void InitCmdTurntable( wMenu_p menu )
{
- AddMenuButton( menu, CmdTurntable, "cmdTurntable", _("Custom Turntable"), wIconCreatePixMap(turntbl_xpm), 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 1ed5588..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,25 +17,116 @@
*
* 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 <time.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <string.h>
+/*
+ * Implements Undo/Redo
+ *
+ * Each action/change (New/Modify/Delete) is recorded by UndoNew(), UndoModify(), UndoDelete() within an undo transaction (initiated by UndoStart().
+ *
+ * New tracks are added to the end of the tracklist (headed by to_first).
+ *
+ * Modify/Delete generate an undo record (WriteObject) in undoStream.
+ * Each record contains:
+ * - op (ModifyOp or DeleteOp)
+ * - address for the existing track
+ * - copy of the track
+ * - endpts, extradata, extra-extradata
+ *
+ * Undo pulls records from the undoStream (ReadObject) for the current transation
+ * to recreate modified and deleted tracks.
+ * New tracks are snipped from the tracklist
+ *
+ * Undone records can be copied to redoStream for susequent redo ops
+ *
+ * The undo transactions are stored in a circular buffer (undoStack).
+ * When this buffer wraps around, the old transaction is recycled,
+ * 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.
+ * When the transaction buffer wraps, the unreferenced start of the undoStreams is trimmed.
+ * THe redoStream is purged for every transaction.
+ *
+ *
+ * Note on Delete
+ *
+ * UndoDelete does 2 things:
+ * 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 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)
+ */
#include "cselect.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.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>
+
+#include <stdint.h>
+
+#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;
+ }
+ }
+}
/*****************************************************************************
*
@@ -48,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;
- long undoStart;
- long undoEnd;
- long redoStart;
- long 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;
@@ -76,6 +167,8 @@ static BOOL_T recordUndo = 1;
#define UASSERT( ARG, VAL ) \
if (!(ARG)) return UndoFail( #ARG, VAL, __FILE__, __LINE__ )
+#define UASSERT2( ARG, VAL ) \
+ if (!(ARG)) { UndoFail( #ARG, VAL, __FILE__, __LINE__ ); return; }
#define INC_UNDO_INX( INX ) {\
if (++INX >= UNDO_STACK_SIZE) \
@@ -90,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;
- long end;
- long 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;
@@ -118,7 +211,7 @@ static void DumpStream( FILE * outf, stream_p stream, char * name )
{
long binx;
long i, j;
- long off;
+ uintptr_t off;
streamBlocks_p blk;
int zeroCnt;
static char zeros[16] = { 0 };
@@ -131,62 +224,78 @@ 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", 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 ) {
- fprintf( outf, "%6.6lx ", off );
+ fprintf( outf, SLOG_FMT" ", off );
for ( j=0; j<16; j++ ) {
fprintf( outf, "%2.2x ", (unsigned char)((*blk)[i+j]) );
}
fprintf( outf, "\n" );
} else if ( zeroCnt == 3 ) {
- fprintf( outf, "%6.6lx .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..\n", off );
+ fprintf( outf, SLOG_FMT" .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..\n",
+ off );
}
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", 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, long 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, "Val = %ld(%lx)\n", val, val );
- fprintf(outf, "to_first=%lx, to_last=%lx\n", (long)to_first, (long)to_last );
- fprintf(outf, "undoHead=%d, doCount=%d, undoCount=%d\n", undoHead, doCount, undoCount );
- if (undoHead >= 0 && undoHead < UNDO_STACK_SIZE)
+
+ 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) {
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:%lx OT:%lx NT:%lx US:%lx UE:%lx RS:%lx RE:%lx NR:%d\n",
- inx, us->modCnt, us->newCnt, us->delCnt, us->trackCount,
- (long)us->newTrks, (long)us->oldTail, (long)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:%lx C:%lx SC:%d SM:%d\n",
- undoStream.startBInx, undoStream.end, undoStream.curr, undoStream.stream_da.cnt, undoStream.stream_da.max );
- fprintf( outf, "Redo: SBI:%ld E:%lx C:%lx SC:%d SM:%d\n",
- redoStream.startBInx, redoStream.end, redoStream.curr, redoStream.stream_da.cnt, redoStream.stream_da.max );
+ 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 );
+ 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 );
DumpStream( outf, &undoStream, "undoStream" );
DumpStream( outf, &redoStream, "redoStream" );
Rdump(outf);
@@ -199,13 +308,15 @@ static BOOL_T UndoFail( char * cause, long val, char * fileName, int lineNumber
BOOL_T ReadStream( stream_t * stream, void * ptr, int size )
{
- long binx, boff, brem;
+ size_t binx, boff, brem;
streamBlocks_p blk;
if ( stream->curr+size > stream->end ) {
- UndoFail( "Overrun on stream", (long)(stream->curr+size), __FILE__, __LINE__ );
+ UndoFail( "Overrun on stream", (uintptr_t)(stream->curr+size), __FILE__,
+ __LINE__ );
return FALSE;
}
-LOG( log_undo, 5, ( "ReadStream( , %lx, %d ) %ld %ld %ld\n", (long)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;
@@ -231,11 +342,14 @@ LOG( log_undo, 5, ( "ReadStream( , %lx, %d ) %ld %ld %ld\n", (long)ptr, size, st
BOOL_T WriteStream( stream_p stream, void * ptr, int size )
{
- long binx, boff, brem;
+ size_t binx, boff, brem;
streamBlocks_p blk;
-LOG( log_undo, 5, ( "WriteStream( , %lx, %d ) %ld %ld %ld\n", (long)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;
@@ -254,7 +368,7 @@ LOG( log_undo, 5, ( "WriteStream( , %lx, %d ) %ld %ld %ld\n", (long)ptr, size, s
if (size > brem) {
memcpy( &(*blk)[boff], ptr, (size_t)brem );
ptr = (char*)ptr + brem;
- size -= (size_t)brem;
+ size -= (int)brem;
binx++;
boff = 0;
brem = BSTREAM_SIZE;
@@ -266,26 +380,30 @@ LOG( log_undo, 5, ( "WriteStream( , %lx, %d ) %ld %ld %ld\n", (long)ptr, size, s
return TRUE;
}
-BOOL_T TrimStream( stream_p stream, long off )
+BOOL_T TrimStream( stream_p stream, uintptr_t off )
{
- long binx, cnt, inx;
+ 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(%ld) %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 = binx;
+ stream->startBInx =(long)binx;
stream->stream_da.cnt -= (wIndex_t)cnt;
UASSERT( stream->stream_da.cnt >= 0, stream->stream_da.cnt );
return TRUE;
@@ -300,32 +418,37 @@ void ClearStream( stream_p stream )
blk = DYNARR_N( streamBlocks_p, stream->stream_da, inx );
MyFree( blk );
}
- stream->stream_da.cnt = 0;
- stream->startBInx = stream->end = stream->curr = 0;
+ DYNARR_RESET( streamBlocks_p, stream->stream_da );
+ stream->startBInx = 0;
+ stream->end = stream->curr = 0;
}
-BOOL_T TruncateStream( stream_p stream, long off )
+BOOL_T TruncateStream( stream_p stream, uintptr_t off )
{
- long binx, boff, cnt, inx;
+ 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(%ld) %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;
@@ -337,76 +460,115 @@ 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 */
- StoreTrackData(trk,&buff,&len);
- if (!WriteStream( stream, &len, sizeof len ))
+ if ( !IsTrackDeleted(trk) ) {
+ StoreTrackData(trk,&buff,&len);
+ } else {
+ len = 0;
+ buff = NULL;
+ }
+ if (!WriteStream( stream, &len, sizeof len )) {
return FALSE;
+ }
if (len)
- if (!WriteStream( stream, buff, len ))
+ if (!WriteStream( stream, buff, len )) {
return FALSE;
+ }
return TRUE;
}
+/**
+ * Read an object from a stream
+ *
+ * \param stream
+ * \param needRedo copy current object to redoStream
+ *
+ */
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" ) );
if (needRedo) {
- if (!WriteObject( &redoStream, op, trk ))
+ if (!WriteObject( &redoStream, op, trk )) {
return FALSE;
+ }
}
- if (!ReadStream( stream, &tempTrk, sizeof tempTrk ))
+ if (!ReadStream( stream, &tempTrk, sizeof tempTrk )) {
return FALSE;
- if (tempTrk.endCnt != trk->endCnt)
- tempTrk.endPt = MyRealloc( trk->endPt, tempTrk.endCnt * sizeof tempTrk.endPt[0] );
- else
+ }
+ 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, 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 = 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;
- ReplayTrackData(&tempTrk, tempBuff, Addsize);
+ }
+ if ( ! IsTrackDeleted(&tempTrk) ) {
+ ReplayTrackData(&tempTrk, tempBuff, Addsize);
+ }
MyFree(tempBuff);
}
- RebuildTrackSegs(&tempTrk); //If we had an array of Segs - recreate it
- if (recordUndo) Rprintf( "Restore T%D(%d) @ %lx\n", trk->index, tempTrk.index, (long)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 (!trk->deleted)
+ if (!IsTrackDeleted(trk)) {
ClrTrkElev( trk );
+ }
return TRUE;
}
-static BOOL_T RedrawInStream( stream_p stream, long start, long 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;
@@ -414,49 +576,70 @@ static BOOL_T RedrawInStream( stream_p stream, long start, long end, BOOL_T draw
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 (!trk->deleted) {
- if (draw)
+ if (!IsTrackDeleted(trk)) {
+ if (draw) {
DrawNewTrack( trk );
- else
+ } else {
UndrawNewTrack( trk );
+ }
}
}
return TRUE;
}
-static BOOL_T DeleteInStream( stream_p stream, long start, long end )
+/**
+ * Delete unreferenced objects from stream
+ *
+ * \param stream
+ * \param start
+ * \param end
+ *
+ * The current transaction is being recycled:
+ * unlink and free any deleted objects from the old transaction
+ */
+static BOOL_T DeleteInStream( stream_p stream, uintptr_t start, uintptr_t end )
{
char op;
track_p trk;
track_p *ptrk;
track_t tempTrk;
int delCount = 0;
-LOG( log_undo, 3, ( "DeleteInSteam( , %ld, %ld )\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" ) );
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) @ %lx\n", trk->index, tempTrk.index, (long)trk );
- UASSERT( IsTrackDeleted(trk), (long)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++;
}
@@ -465,8 +648,9 @@ LOG( log_undo, 3, ( "DeleteInSteam( , %ld, %ld )\n", start, end ) )
if (delCount) {
for (ptrk=&to_first; *ptrk; ) {
if ((*ptrk)->index == -1) {
+ // old track to be discarded: Unlink and Free it
trk = *ptrk;
- UASSERT( IsTrackDeleted(trk), (long)trk );
+ UASSERT( IsTrackDeleted(trk), (uintptr_t)trk );
*ptrk = trk->next;
FreeTrack(trk);
} else {
@@ -479,36 +663,57 @@ LOG( log_undo, 3, ( "DeleteInSteam( , %ld, %ld )\n", start, end ) )
}
-static BOOL_T SetDeleteOpInStream( stream_p stream, long start, long end, track_p trk0 )
+/**
+ * Find undo record for 'trk' and change op from Modify to Delete
+ *
+ * \param stream
+ * \param start
+ * \param end
+ * \param trk
+ *
+ * Note: does not set trk->delete flag
+ */
+static BOOL_T SetDeleteOpInStream( stream_p stream, uintptr_t start,
+ uintptr_t end, track_p trk0 )
{
char op;
track_p trk;
track_t tempTrk;
- long binx, boff;
+ size_t binx, boff;
streamBlocks_p blk;
+ 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 );
- 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 )) {
return FALSE;
+ }
if (trk == trk0) {
UASSERT( op == ModifyOp, (long)op );
blk = DYNARR_N( streamBlocks_p, stream->stream_da, binx );
memcpy( &(*blk)[boff], &DeleteOp, sizeof DeleteOp );
+ // Should set .delete flag in stream
+ LOG( log_undo, 3, ( " -> Delete\n") );
return TRUE;
}
- if (!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;
}
UASSERT( "Cannot find undo record to convert to DeleteOp", 0 );
@@ -553,23 +758,34 @@ 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", (long)trk, "cundo.c", lineNum );
+ UndoFail( "Cannot find trk on list", (uintptr_t)trk, "cundo.c", lineNum );
return NULL;
}
static int undoIgnoreEmpty = 0;
+
+/**
+ * Start an Undo transcation
+ *
+ * \param label help text for balloon help
+ * \param format logging info
+ *
+ *
+ */
void UndoStart(
- char * label,
- char * format,
- ... )
+ char * label,
+ char * format,
+ ... )
{
static char buff[STR_SIZE];
va_list ap;
@@ -578,22 +794,21 @@ void UndoStart(
int inx;
int usp;
-LOG( log_undo, 1, ( "UndoStart(%s) [%d] d:%d u:%d us:%ld\n", 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:%ld\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 ) {
-#ifndef WINDOWS
-#ifdef DEBUG
- printf( "undoStart noop: %s - %s\n", us->label?us->label:"<>", label?label:"<>" );
-#endif
-#endif
+ LOG( log_undo, 1, ( " noop: %s - %s\n", us->label?us->label:"<>",
+ label?label:"<>" ) );
if ( undoIgnoreEmpty ) {
us->label = label;
return;
@@ -603,36 +818,41 @@ LOG( log_undo, 1, ( "UndoStart(%s) [%d] d:%d u:%d us:%ld\n", label, undoHead, do
INC_UNDO_INX(undoHead);
us = &undoStack[undoHead];
- changed++;
- SetWindowTitle();
+
+ 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 @ %lx\n", trk->index, (long)trk );
- /*ASSERT( IsTrackDeleted(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 ) );
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;
@@ -653,31 +873,44 @@ LOG( log_undo, 1, ( "UndoStart(%s) [%d] d:%d u:%d us:%ld\n", label, undoHead, do
trk->modified = FALSE;
trk->new = FALSE;
}
- if (doCount < UNDO_STACK_SIZE)
+ if (doCount < UNDO_STACK_SIZE) {
doCount++;
+ }
SetButtons( TRUE, FALSE );
}
+/**
+ * Record Modify'd track for Undo
+ * \param trk
+ *
+ * If track has not been previously recorded in these Undo transaction
+ * or is not 'new' write the track to the undoStream which a ModifyOp flag
+ */
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), (long)trk);
- if (trk->modified || trk->new)
+ UASSERT(!IsTrackDeleted(trk), GetTrkIndex(trk));
+ if (trk->modified || trk->new) {
return TRUE;
-LOG( log_undo, 2, ( " UndoModify( T%d, E%d, X%ld )\n", trk->index, trk->endCnt, trk->extraSize ) )
- 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)
- Rprintf( " MOD T%d @ %lx\n", trk->index, (long)trk );
- if (!WriteObject( &undoStream, ModifyOp, trk ))
+ if (recordUndo) {
+ Rprintf( " MOD T%d @ "SLOG_FMT"\n", trk->index, (uintptr_t)trk );
+ }
+ if (!WriteObject( &undoStream, ModifyOp, trk )) {
return FALSE;
+ }
us->undoEnd = undoStream.end;
trk->modified = TRUE;
us->modCnt++;
@@ -685,32 +918,52 @@ LOG( log_undo, 2, ( " UndoModify( T%d, E%d, X%ld )\n", trk->index, trk->endCn
}
+/**
+ * Record that the track has been deleted
+ *
+ * \param trk
+ *
+ * If the track has been Modified, then update undoStream to change op to DeleteOp
+ * If the track is not New, then write the record to the undoSteam with a DeleteOp
+ * When this undo transaction is recycled, DeleteOp records will unlinked and freed.
+ *
+ * Otherwise, we're deleting a New track: remove it from track list and discard it
+ */
BOOL_T UndoDelete( track_p trk )
{
undoStack_p us;
- if ( !undoActive ) return TRUE;
-LOG( log_undo, 2, ( " UndoDelete( T%d, E%d, X%ld )\n", trk->index, trk->endCnt, trk->extraSize ) )
- 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)
- Rprintf( " DEL T%d @ %lx\n", trk->index, (long)trk );
- UASSERT( !IsTrackDeleted(trk), (long)trk );
+ 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 ) {
- if (!WriteObject( &undoStream, DeleteOp, trk ))
- return FALSE;
+ LOG( log_undo, 3, ( " Write DeleteOp object\n" ) );
+ 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, (long)&(*ptrk)->next );
+ UASSERT( to_last == &(*ptrk)->next, (uintptr_t)&(*ptrk)->next );
to_last = ptrk;
}
*ptrk = trk->next;
@@ -718,37 +971,52 @@ LOG( log_undo, 2, ( " UndoDelete( T%d, E%d, X%ld )\n", trk->index, trk->endCn
us->newCnt--;
return TRUE;
}
+ ClrTrkBits( trk, TB_SELECTED );
trk->deleted = TRUE;
us->delCnt++;
return TRUE;
}
-
+/**
+ * Record a New track for Undo
+ *
+ * \param trk
+ *
+ * New tracks are added to the end of the Track list
+ * Save the begining of New tracks in this Undo transaction in us->newTrks
+ */
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 ) )
-LOG( log_undo, 2, ( " UndoNew( T%d )\n", trk->index ) )
-
- if (recordUndo)
- Rprintf( " NEW T%d @%lx\n", trk->index, (long)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;
}
+/**
+ * End of a Undo transaction
+ */
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();
@@ -758,10 +1026,13 @@ void UndoEnd( void )
}
+/**
+ * Reset the Undo state
+ */
void UndoClear( void )
{
int inx;
-LOG( log_undo, 2, ( " UndoClear()\n" ) )
+ LOG( log_undo, 2, ( " UndoClear()\n" ) )
undoActive = FALSE;
undoHead = -1;
undoCount = 0;
@@ -775,8 +1046,19 @@ LOG( log_undo, 2, ( " UndoClear()\n" ) )
}
-BOOL_T UndoUndo( void )
+EXPORT wBool_t undoStatus = TRUE;
+
+/**
+ * Undo the last transaction
+ *
+ * Move any New tracks from the end of the Track list
+ * Cut the Track list at us->newTrks
+ * Read Modified/Deleted tracks from undoSteam
+ * Cleanup: redraw, update elevs, cars, counts, ...
+ */
+void UndoUndo( void * unused )
{
+ undoStatus = FALSE;
undoStack_p us;
track_p trk;
wIndex_t oldCount;
@@ -784,44 +1066,45 @@ BOOL_T UndoUndo( void )
if (doCount <= 0) {
ErrorMessage( MSG_NO_UNDO );
- return FALSE;
+ return;
}
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\n", undoHead, doCount, undoCount, us->newCnt, us->modCnt, us->delCnt ) )
- 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;
- for (trk=us->newTrks; trk; trk=trk->next ) {
- if (recordUndo) Rprintf(" Deleting New Track T%d @ %lx\n", trk->index, (long)trk );
- UASSERT( !IsTrackDeleted(trk), (long)trk );
- trk->deleted = TRUE;
}
- if (!(us->oldTail=FindParent(us->newTrks,__LINE__)))
- return FALSE;
+ 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 ))
- return FALSE;
+ if (!ReadObject( &undoStream, us->needRedo )) {
+ return;
+ }
}
- if (us->needRedo)
+ if (us->needRedo) {
us->redoEnd = redoStream.end;
+ }
us->needRedo = FALSE;
if ( needAttachTrains ) {
@@ -829,10 +1112,11 @@ LOG( log_undo, 1, ( " undoUndo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doC
needAttachTrains = FALSE;
}
UpdateAllElevations();
- if (!redrawAll)
+ if (!redrawAll) {
RedrawInStream( &undoStream, us->undoStart, us->undoEnd, TRUE );
- else
+ } else {
DoRedraw();
+ }
oldCount = trackCount;
trackCount = us->trackCount;
@@ -847,12 +1131,21 @@ LOG( log_undo, 1, ( " undoUndo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doC
SetButtons( doCount>0, TRUE );
wBalloonHelpUpdate();
wDrawDelayUpdate( mainD.d, FALSE );
- return TRUE;
+ undoStatus = TRUE;
+ return;
}
-BOOL_T UndoRedo( void )
+/**
+ * Undo and last Undo op
+ *
+ * Attach the New tracks to the end of the Track list
+ * Read Modified/Deleted object from redoStream
+ * Cleanup: redraw, update elevs, cars, counts, ...
+ */
+void UndoRedo( void * unused )
{
+ undoStatus = FALSE;
undoStack_p us;
wIndex_t oldCount;
BOOL_T redrawAll;
@@ -860,38 +1153,35 @@ BOOL_T UndoRedo( void )
if (undoCount <= 0) {
ErrorMessage( MSG_NO_REDO );
- return FALSE;
+ return;
}
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 );
}
- for (trk=us->newTrks; trk; trk=trk->next ) {
- if (recordUndo) Rprintf(" Undeleting New Track T%d @ %lx\n", trk->index, (long)trk );
- UASSERT( IsTrackDeleted(trk), (long)trk );
- trk->deleted = FALSE;
- }
- UASSERT( us->newTail != NULL, (long)us->newTail );
+ UASSERT2( us->newTail != NULL, (uintptr_t)us->newTail );
*to_last = us->newTrks;
to_last = us->newTail;
- UASSERT( (*to_last) == NULL, (long)*to_last );
+ UASSERT2( (*to_last) == NULL, (uintptr_t)*to_last );
RenumberTracks();
needAttachTrains = FALSE;
redoStream.curr = us->redoStart;
while ( redoStream.curr < us->redoEnd ) {
- if (!ReadObject( &redoStream, FALSE ))
- return FALSE;
+ if (!ReadObject( &redoStream, FALSE )) {
+ return;
+ }
}
if ( needAttachTrains ) {
@@ -900,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;
@@ -919,7 +1211,8 @@ LOG( log_undo, 1, ( " undoRedo[%d] d:%d u:%d N:%d M:%d D:%d\n", undoHead, doC
SetButtons( TRUE, undoCount>0 );
wBalloonHelpUpdate();
wDrawDelayUpdate( mainD.d, FALSE );
- return TRUE;
+ undoStatus = TRUE;
+ return;
}
diff --git a/app/bin/cundo.h b/app/bin/cundo.h
index 89beab3..2282835 100644
--- a/app/bin/cundo.h
+++ b/app/bin/cundo.h
@@ -17,17 +17,18 @@
*
* 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"
-#include "track.h"
-int UndoUndo( void );
-int UndoRedo( void );
+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 );
void UndoSuspend( void );
void UndoStart( char *, char *, ... );
diff --git a/app/bin/custom.c b/app/bin/custom.c
index 68a996b..e53372f 100644
--- a/app/bin/custom.c
+++ b/app/bin/custom.c
@@ -1,6 +1,6 @@
#define RENAME_H
/** \file custom.c
- *
+ *
*/
/* XTrkCad - Model Railroad CAD
@@ -18,33 +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
*/
-#include <stdlib.h>
-#include <stdio.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#include <dirent.h>
-#endif
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <time.h>
-#ifdef WINDOWS
-#include <io.h>
-#include <windows.h>
-#else
-#include <sys/stat.h>
-#endif
-#include <stdarg.h>
-#include <errno.h>
-
#include "cjoin.h"
#include "common.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "misc.h"
#include "track.h"
#include "version.h"
@@ -81,6 +61,7 @@ char * sSaveFilePattern = NULL;
char * sImageFilePattern = NULL;
char * sImportFilePattern = NULL;
char * sDXFFilePattern = NULL;
+char * sSVGFilePattern = NULL;
char * sRecordFilePattern = NULL;
char * sNoteFilePattern = NULL;
char * sLogFilePattern = NULL;
@@ -91,7 +72,6 @@ int iParamVersion = PARAMVERSION;
int iMinParamVersion = MINPARAMVERSION;
long lParamKey = PARAMKEY;
-extern char *userLocale;
EXPORT char * MakeWindowTitle( char * name )
{
@@ -106,18 +86,20 @@ void InitCmdEasement( void )
{
easementP = EasementInit();
}
-void DoEasementRedir( 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
@@ -139,22 +121,22 @@ BOOL_T Initialize( void )
InitTrkStruct();
InitTrkText();
InitTrkDraw();
-
+
InitTrkBlock();
- InitTrkSwitchMotor();
- InitTrkSignal();
- InitTrkControl();
- InitTrkSensor();
+ InitTrkSwitchMotor();
+ InitTrkSignal();
+ InitTrkControl();
+ InitTrkSensor();
InitCarDlg();
InitCmdNote();
memset( message, 0, sizeof message );
-
+
return TRUE;
}
/**
- * Initialize siome localized strings for filename patterns etc.
+ * Initialize siome localized strings for filename patterns etc.
*/
void InitCustom( void )
@@ -162,67 +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 (sRecordFilePattern == NULL)
- {
+ if (sSVGFilePattern == NULL) {
+ sSVGFilePattern = strdup(
+ _("Scalable Vector Graphics Format Files (*.svg)|*.svg" ));
+ }
+
+ 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);
}
@@ -234,54 +210,44 @@ 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;
}
- if (sRecordFilePattern)
- {
+ if (sSVGFilePattern) {
+ free(sSVGFilePattern);
+ sSVGFilePattern = NULL;
+ }
+ 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;
}
- if (userLocale)
- {
- free(userLocale);
- userLocale = NULL;
- }
}
diff --git a/app/bin/custom.h b/app/bin/custom.h
index 1c4f7b6..d14bff7 100644
--- a/app/bin/custom.h
+++ b/app/bin/custom.h
@@ -1,5 +1,5 @@
/** \file custom.h
- *
+ *
*/
/* XTrkCad - Model Railroad CAD
@@ -17,37 +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 CUSTOM_H
#define CUSTOM_H
-#include "wlib.h"
-#include "misc.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_BIGGAP (1<<8)
-extern int cmdGroup;
+#include "common.h"
extern char * sProdName;
extern char * sProdNameLower;
@@ -66,12 +42,14 @@ extern char * sClipboardF;
extern char * sParamQF;
extern char * sUndoF;
extern char * sAuditF;
+extern char * sTipF;
extern char * sSourceFilePattern;
extern char * sSaveFilePattern;
extern char * sImageFilePattern;
extern char * sImportFilePattern;
extern char * sDXFFilePattern;
+extern char * sSVGFilePattern;
extern char * sRecordFilePattern;
extern char * sNoteFilePattern;
extern char * sLogFilePattern;
@@ -125,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 );
@@ -140,8 +120,7 @@ void InitCmdNote();
void InitCmdUndo( void );
void InitCmdStruct( wMenu_p menu );
void InitCmdAboveBelow( void );
-void InitCmdEnumerate( void );
-void InitCmdExport( void );
+//void InitCmdEnumerate( void );
void InitCmdEasement( void );
char * MakeWindowTitle( char * );
@@ -151,7 +130,7 @@ void InitLayers( void );
void InitHotBar( void );
void InitCarDlg( void );
BOOL_T Initialize( void );
-void DoEasementRedir( void );
+void DoEasementRedir( void * unused );
void DoStructDesignerRedir( void );
void InitNewTurnRedir( wMenu_p );
diff --git a/app/bin/dbench.c b/app/bin/dbench.c
index c8d944f..a6284ea 100644
--- a/app/bin/dbench.c
+++ b/app/bin/dbench.c
@@ -17,17 +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
*/
-#include <math.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "i18n.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "common.h"
/*****************************************************************************
*
@@ -58,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;
@@ -104,33 +102,35 @@ 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,
- char * key,
- char * defvalue )
+ long type,
+ const char * key,
+ const char * defvalue )
{
benchType_p bt;
- char *value, *cp, *cq;
- value = CAST_AWAY_CONST wPrefGetString( "misc", key );
+ const char *value, *cp;
+ char *cq;
+ value = wPrefGetString( "misc", key );
if ( value == NULL ) {
value = defvalue;
wPrefSetString( "misc", key, value );
@@ -140,14 +140,16 @@ static void AddBenchTypes(
DYNARR_APPEND( benchType_t, benchType_da, 10 );
bt = &benchType(benchType_da.cnt-1);
bt->type = type;
- bt->width = strtol( cq=cp, &cp, 10 );
- bt->height0 = strtol( cq=cp, &cp, 10 );
- bt->height1 = strtol( cq=cp, &cp, 10 );
+ bt->width = strtol( cp, &cq, 10 );
+ 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;
}
+ cp = cq;
}
}
@@ -170,13 +172,15 @@ 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, (void*)benchData );
+ }
+ wListAddValue( choiceL, message, NULL, I2VP(benchData) );
}
}
BenchUpdateOrientationList( benchType(0).type<<24, orientL );
@@ -185,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;
@@ -207,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;
}
@@ -227,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,22 +262,20 @@ EXPORT void DrawBench(
Translate( &pp[1], p0, a-90, width );
Translate( &pp[2], p1, a-90, width );
Translate( &pp[3], p1, a+90, width );
- DrawPoly( d, 4, pp, NULL, color1, 0, 1, 0);
+ 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 ) ) ) { /* DrawFillPoly didn't draw */
- DrawLine( d, pp[0], pp[1], 0, color2 );
- DrawLine( d, pp[1], pp[2], 0, color2 );
- DrawLine( d, pp[2], pp[3], 0, color2 );
- DrawLine( d, pp[3], pp[0], 0, color2 );
+ 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 {
@@ -281,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;
}
@@ -307,8 +311,8 @@ EXPORT addButtonCallBack_t InitBenchDialog( void )
EXPORT void BenchGetDesc(
- long benchData,
- char * desc )
+ long benchData,
+ char * desc )
{
long orient;
long type;
@@ -320,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;
@@ -370,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;
}
@@ -384,21 +391,22 @@ EXPORT void CountBench(
bp->length = length;
foundBenchEnum:
PrintBenchLine( message, bp );
- iwidth = strlen(message);
- if ( iwidth > enumerateMaxDescLen)
- enumerateMaxDescLen = (int)iwidth;
+ size_t width = strlen(message);
+ 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;
}
@@ -408,12 +416,12 @@ 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 ) {
PrintBenchLine( title, bp );
- EnumerateList( 1, 0, title );
+ EnumerateList( 1, 0, title, NULL );
bp->length = 0;
}
}
diff --git a/app/bin/dbitmap.c b/app/bin/dbitmap.c
index c45c7d0..0732065 100644
--- a/app/bin/dbitmap.c
+++ b/app/bin/dbitmap.c
@@ -17,122 +17,230 @@
*
* 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 "custom.h"
+#include "dynstring.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "paths.h"
#include "track.h"
+#include "common-ui.h"
+
+#ifdef WIN32
+#ifdef _WIN64
+#define BITMAPDIM 50000
+#define BITMAPSIZE 500e6
+#else
+#define BITMAPDIM 32000
+#define BITMAPSIZE 150e6
+#endif
+#else // Not WIN
+#define BITMAPDIM 50000
+#define BITMAPSIZE 500e6
+#endif // WIN32
+
+/** Option flags for bitmap export */
+#define BITMAPDRAWTITLE 1
+#define BITMAPDRAWFRAMEONLY (1<<1)
+#define BITMAPDRAWCENTERLINE (1<<2)
+#define BITMAPDRAWBACKGROUND (1<<3)
+
+#define POINTSTOINCH 72.0
+#define BITMAPEXPORTFONTSIZE 18
+// line height is 20 percent larger than fontsize and converted to inches
+#define LINEHEIGHT (BITMAPEXPORTFONTSIZE * 1.2 / POINTSTOINCH)
+#define DEFAULTMARGIN 0.2
+#define LEFTMARGIN (DEFAULTMARGIN + 0.3)
+#define BOTTOMMARGIN (DEFAULTMARGIN + LINEHEIGHT)
static long outputBitMapTogglesV = 3;
static double outputBitMapDensity = 10;
static struct wFilSel_t * bitmap_fs;
-static long bitmap_w, bitmap_h;
+static wWinPix_t bitmap_w, bitmap_h;
static drawCmd_t bitmap_d = {
- NULL,
- &screenDrawFuncs,
- 0,
- 16.0,
- 0.0,
- {0.0, 0.0}, {1.0,1.0},
- Pix2CoOrd, CoOrd2Pix };
-
-
-static int SaveBitmapFile(
- int files,
- char **fileName,
- void * data )
+ NULL,
+ &screenDrawFuncs,
+ 0,
+ 16.0,
+ 0.0,
+ {0.0, 0.0}, {1.0, 1.0},
+ Pix2CoOrd, CoOrd2Pix
+};
+
+/**
+ * Show string at given y position centered in x direction
+ *
+ * \param [in] string If non-null, the string.
+ * \param font The font.
+ * \param fontSize Size of the font.
+ * \param yPos The position.
+ */
+
+static void DrawTextCenterXPosY( char *string, wFont_p font,
+ wFontSize_t fontSize,
+ POS_T yPos )
+{
+ coOrd textSize;
+ coOrd p;
+
+ DrawTextSize( &mainD, string, font, fontSize * bitmap_d.scale, FALSE,
+ &textSize );
+ p.x = ( bitmap_d.size.x - textSize.x ) / 2.0 + bitmap_d.orig.x;
+ p.y = mapD.size.y + yPos*bitmap_d.scale;
+ DrawString( &bitmap_d, p, 0.0, string, font, fontSize*bitmap_d.scale,
+ wDrawColorBlack );
+}
+
+/**
+* Draw the product info to the bitmap
+*
+* \param [in] preFix preFix to add to product name
+* \param fontSize Size of the font.
+* \param yPos The position.
+*/
+
+static void
+DrawProductInfo( char *preFix, wFontSize_t fontSize, POS_T yPos )
{
- coOrd p[4];
- FLOAT_T y0, y1;
wFont_p fp, fp_bi;
- wFontSize_t fs;
coOrd textsize, textsize1;
+ coOrd textPos;
- assert( fileName != NULL );
- assert( files == 1 );
+ fp = wStandardFont( F_TIMES, FALSE, FALSE );
+ fp_bi = wStandardFont( F_TIMES, TRUE, TRUE );
+ DrawTextSize( &mainD, preFix, fp, fontSize * bitmap_d.scale, FALSE, &textsize );
+ DrawTextSize( &mainD, sProdName, fp_bi, fontSize * bitmap_d.scale, FALSE,
+ &textsize1 );
+ textPos.x = ( bitmap_d.size.x - ( textsize.x + textsize1.x ) ) /
+ 2.0 + bitmap_d.orig.x;
+ textPos.y = -LINEHEIGHT*bitmap_d.scale;
+ DrawString( &bitmap_d, textPos, 0.0, preFix, fp,
+ fontSize * bitmap_d.scale, wDrawColorBlack );
+ textPos.x += textsize.x;
+ DrawString( &bitmap_d, textPos, 0.0, sProdName, fp_bi,
+ fontSize * bitmap_d.scale, wDrawColorBlack );
+}
- SetCurrentPath( BITMAPPATHKEY, fileName[ 0 ] );
+/**
+ * Saves a bitmap file
+ *
+ * \param files number of files, must be 1
+ * \param [in] fileName name of the file
+ * \param [in,out] data unused
+ *
+ * \returns true on success, false otherwise
+ */
- bitmap_d.d = wBitMapCreate( (wPos_t)bitmap_w, (wPos_t)bitmap_h, 8 );
- if (bitmap_d.d == (wDraw_p)0) {
- NoticeMessage( MSG_WBITMAP_FAILED, _("Ok"), NULL );
- return FALSE;
- }
- y0 = y1 = 0.0;
- p[0].x = p[3].x = 0.0;
- p[1].x = p[2].x = mapD.size.x;
- p[0].y = p[1].y = 0.0;
- p[2].y = p[3].y = mapD.size.y;
- if ( (outputBitMapTogglesV&2) ) {
- DrawRuler( &bitmap_d, p[0], p[1], 0.0, TRUE, FALSE, wDrawColorBlack );
- DrawRuler( &bitmap_d, p[0], p[3], 0.0, TRUE, TRUE, wDrawColorBlack );
- DrawRuler( &bitmap_d, p[1], p[2], 0.0, FALSE, FALSE, wDrawColorBlack );
- DrawRuler( &bitmap_d, p[3], p[2], 0.0, FALSE, TRUE, wDrawColorBlack );
- y0 = 0.37;
- y1 = 0.2;
- }
- if ( (outputBitMapTogglesV&3) == 1) {
- DrawLine( &bitmap_d, p[0], p[1], 2, wDrawColorBlack );
- DrawLine( &bitmap_d, p[0], p[3], 2, wDrawColorBlack );
- DrawLine( &bitmap_d, p[1], p[2], 2, wDrawColorBlack );
- DrawLine( &bitmap_d, p[3], p[2], 2, wDrawColorBlack );
+static int SaveBitmapFile(
+ int files,
+ char **fileName,
+ void * data )
+{
+ bool result;
+
+ CHECK( fileName != NULL );
+ CHECK( files == 1 );
+
+ wSetCursor( mainD.d, wCursorWait );
+ InfoMessage( _( "Drawing tracks to bitmap" ) );
+
+ SetCurrentPath( BITMAPPATHKEY, fileName[ 0 ] );
+
+ bitmap_d.d = wBitMapCreate( bitmap_w, bitmap_h, 8 );
+
+ if( !bitmap_d.d ) {
+ NoticeMessage( MSG_WBITMAP_FAILED, _( "Ok" ), NULL );
+ return false;
}
- if (outputBitMapTogglesV&1) {
- fp = wStandardFont( F_TIMES, FALSE, FALSE );
- fs = 18;
- DrawTextSize( &mainD, GetLayoutTitle(), fp, fs, FALSE, &textsize );
- p[0].x = (bitmap_d.size.x - (textsize.x*bitmap_d.scale))/2.0 + bitmap_d.orig.x;
- p[0].y = mapD.size.y + (y1+0.30)*bitmap_d.scale;
- DrawString( &bitmap_d, p[0], 0.0, GetLayoutTitle(), fp, fs*bitmap_d.scale, wDrawColorBlack );
- DrawTextSize( &mainD, GetLayoutSubtitle(), fp, fs, FALSE, &textsize );
- p[0].x = (bitmap_d.size.x - (textsize.x*bitmap_d.scale))/2.0 + bitmap_d.orig.x;
- p[0].y = mapD.size.y + (y1+0.05)*bitmap_d.scale;
- DrawString( &bitmap_d, p[0], 0.0, GetLayoutSubtitle(), fp, fs*bitmap_d.scale, wDrawColorBlack );
- fp_bi = wStandardFont( F_TIMES, TRUE, TRUE );
- DrawTextSize( &mainD, _("Drawn with "), fp, fs, FALSE, &textsize );
- DrawTextSize( &mainD, sProdName, fp_bi, fs, FALSE, &textsize1 );
- p[0].x = (bitmap_d.size.x - ((textsize.x+textsize1.x)*bitmap_d.scale))/2.0 + bitmap_d.orig.x;
- p[0].y = -(y0+0.23)*bitmap_d.scale;
- DrawString( &bitmap_d, p[0], 0.0, _("Drawn with "), fp, fs*bitmap_d.scale, wDrawColorBlack );
- p[0].x += (textsize.x*bitmap_d.scale);
- DrawString( &bitmap_d, p[0], 0.0, sProdName, fp_bi, fs*bitmap_d.scale, wDrawColorBlack );
+
+ if( outputBitMapTogglesV & ( BITMAPDRAWFRAMEONLY | BITMAPDRAWTITLE ) ) {
+ coOrd p[4];
+
+ p[0].x = p[3].x = 0.0;
+ p[1].x = p[2].x = mapD.size.x;
+ p[0].y = p[1].y = 0.0;
+ p[2].y = p[3].y = mapD.size.y;
+ DrawPoly( &bitmap_d, 4, p, NULL, wDrawColorBlack, 2, DRAW_CLOSED );
+
+ if( ( outputBitMapTogglesV & BITMAPDRAWFRAMEONLY ) ) {
+ DrawRuler( &bitmap_d, p[0], p[1], 0.0, TRUE, FALSE, wDrawColorBlack );
+ DrawRuler( &bitmap_d, p[0], p[3], 0.0, TRUE, TRUE, wDrawColorBlack );
+ DrawRuler( &bitmap_d, p[1], p[2], 0.0, FALSE, FALSE, wDrawColorBlack );
+ DrawRuler( &bitmap_d, p[3], p[2], 0.0, FALSE, TRUE, wDrawColorBlack );
+ //y0 = 0.37;
+ //y1 = 0.2;
+ }
+
+ if( outputBitMapTogglesV & BITMAPDRAWTITLE ) {
+ wFont_p fp;
+
+ fp = wStandardFont( F_TIMES, FALSE, FALSE );
+ DrawTextCenterXPosY( GetLayoutTitle(), fp, BITMAPEXPORTFONTSIZE,
+ 1.4 * LINEHEIGHT );
+ DrawTextCenterXPosY( GetLayoutSubtitle(), fp, BITMAPEXPORTFONTSIZE,
+ 0.4 * LINEHEIGHT );
+ DrawProductInfo( N_( "Drawn with " ), BITMAPEXPORTFONTSIZE, -LINEHEIGHT );
+ }
}
+
wDrawClip( bitmap_d.d,
- (wPos_t)(-bitmap_d.orig.x/bitmap_d.scale*bitmap_d.dpi),
- (wPos_t)(-bitmap_d.orig.y/bitmap_d.scale*bitmap_d.dpi),
- (wPos_t)(mapD.size.x/bitmap_d.scale*bitmap_d.dpi),
- (wPos_t)(mapD.size.y/bitmap_d.scale*bitmap_d.dpi) );
- wSetCursor( mainD.d, wCursorWait );
- InfoMessage( _("Drawing tracks to BitMap") );
+ ( wWinPix_t )( -bitmap_d.orig.x/bitmap_d.scale*bitmap_d.dpi ),
+ ( wWinPix_t )( -bitmap_d.orig.y/bitmap_d.scale*bitmap_d.dpi ),
+ ( wWinPix_t )( mapD.size.x/bitmap_d.scale*bitmap_d.dpi ),
+ ( wWinPix_t )( mapD.size.y/bitmap_d.scale*bitmap_d.dpi ) );
+
DrawSnapGrid( &bitmap_d, mapD.size, TRUE );
- if ( (outputBitMapTogglesV&4) )
+
+ if( outputBitMapTogglesV & BITMAPDRAWBACKGROUND &&
+ GetLayoutBackGroundScreen() < 100.0 ) {
+ wWinPix_t bitmapPosX;
+ wWinPix_t bitmapPosY;
+ wWinPix_t bitmapWidth;
+
+ TranslateBackground( &bitmap_d,
+ bitmap_d.orig.x,
+ bitmap_d.orig.y,
+ &bitmapPosX,
+ &bitmapPosY,
+ &bitmapWidth );
+ wDrawCloneBackground( mainD.d, bitmap_d.d );
+
+ wDrawShowBackground( bitmap_d.d,
+ bitmapPosX,
+ bitmapPosY,
+ bitmapWidth,
+ GetLayoutBackGroundAngle(),
+ GetLayoutBackGroundScreen() );
+ }
+
+ if( outputBitMapTogglesV & BITMAPDRAWCENTERLINE ) {
bitmap_d.options |= DC_CENTERLINE;
- else
+ } else {
bitmap_d.options &= ~DC_CENTERLINE;
+ }
+
DrawTracks( &bitmap_d, bitmap_d.scale, bitmap_d.orig, bitmap_d.size );
- InfoMessage( _("Writing BitMap to file") );
- if ( wBitMapWriteFile( bitmap_d.d, fileName[0] ) == FALSE ) {
- NoticeMessage( MSG_WBITMAP_FAILED, _("Ok"), NULL );
- return FALSE;
+
+ InfoMessage( _( "Writing bitmap to file" ) );
+
+ if( !wBitMapWriteFile( bitmap_d.d, fileName[0] ) ) {
+ NoticeMessage( MSG_WBITMAP_FAILED, _( "Ok" ), NULL );
+ result = false;
+ } else {
+ InfoMessage( "" );
+ result = true;
}
- InfoMessage( "" );
+
wSetCursor( mainD.d, defaultCursor );
wBitMapDelete( bitmap_d.d );
- return TRUE;
+ return result;
}
-
-
/*******************************************************************************
*
* Output BitMap Dialog
@@ -141,112 +249,258 @@ static int SaveBitmapFile(
static wWin_p outputBitMapW;
-static char *bitmapTogglesLabels[] = { N_("Print Titles"), N_("Print Borders"),
- N_("Print Centerline"), NULL };
-static paramFloatRange_t r0o1_100 = { 0.1, 100.0, 60 };
+static char *bitmapTogglesLabels[] = { N_( "Layout Titles" ),
+ N_( "Borders" ),
+ N_( "Centerline of Track" ),
+ N_( "Background Image" ),
+ NULL
+ };
+static paramFloatRange_t dpiRange = { 0.1, 100.0, 60 };
static paramData_t outputBitMapPLs[] = {
#define I_TOGGLES (0)
- { PD_TOGGLE, &outputBitMapTogglesV, "toggles", 0, bitmapTogglesLabels },
+ { PD_TOGGLE, &outputBitMapTogglesV, "toggles", PDO_NOPSHUPD, bitmapTogglesLabels, N_( "Include " ) },
#define I_DENSITY (1)
- { PD_FLOAT, &outputBitMapDensity, "density", PDO_DLGRESETMARGIN, &r0o1_100, N_(" dpi") },
-#define I_MSG1 (2)
- { PD_MESSAGE, N_("Bitmap : 99999 by 99999 pixels"), NULL, PDO_DLGRESETMARGIN|PDO_DLGUNDERCMDBUTT|PDO_DLGWIDE, (void*)180 },
-#define I_MSG2 (3)
- { PD_MESSAGE, N_("Approximate file size: 999.9Mb"), NULL, PDO_DLGUNDERCMDBUTT, (void*)180 } };
+ { PD_FLOAT, &outputBitMapDensity, "density", PDO_NOPSHUPD, &dpiRange, N_( "Resolution " ) },
+ { PD_MESSAGE, N_( "dpi" ), NULL, PDO_DLGHORZ },
+ { PD_MESSAGE, N_( "Bitmap Size " ), NULL, PDO_NOPSHUPD | PDO_DLGRESETMARGIN, 0 },
+#define I_MSG1 (4)
+ { PD_MESSAGE, N_( "99999 by 99999 pixels" ), NULL, PDO_DLGHORZ | PDO_DLGUNDERCMDBUTT /* | PDO_DLGWIDE */, I2VP( 180 )},
+ { PD_MESSAGE, N_( "Approximate File Size " ), NULL, PDO_NOPSHUPD, 0 },
+#define I_MSG2 (6)
+ { PD_MESSAGE, N_( "999.9Mb" ), NULL, PDO_DLGHORZ | PDO_DLGUNDERCMDBUTT | PDO_DLGBOXEND, I2VP( 180 ) },
+};
-static paramGroup_t outputBitMapPG = { "outputbitmap", 0, outputBitMapPLs, sizeof outputBitMapPLs/sizeof outputBitMapPLs[0] };
+static paramGroup_t outputBitMapPG = { "outputbitmap", 0, outputBitMapPLs, COUNT( outputBitMapPLs ) };
+/**
+ * The upper limit for the dpi setting is calculated. The limit is set
+ * to make sute that the number of pixels in any direction is below the
+ * maximum value.
+ *
+ * \param [in] size The size of the layout
+ * \param [in] marginX The total size of margins in X direction
+ * \param [in] marginY The total size of margins in Y direction
+ *
+ * \returns the maximum allowed dpi value
+ */
-static void OutputBitMapComputeSize( void )
+static double CalculateMaxDPI( coOrd size, POS_T marginX, POS_T marginY )
{
- FLOAT_T Lborder=0.0, Rborder=0.0, Tborder=0.0, Bborder=0.0;
- FLOAT_T size;
+ POS_T maxSize;
+ POS_T maxMargin;
+ double maxDpi;
+
+ if( size.x > size.y ) {
+ maxMargin = marginX;
+ maxSize = size.x;
+ } else {
+ maxMargin = marginY;
+ maxSize = size.y;
+ }
+
+ maxDpi = ( BITMAPDIM - maxMargin * mainD.dpi ) / maxSize;
+ return( floor( maxDpi ) );
+}
+
+/**
+ * Display the pixel size of the bitmap
+ */
+
+static void
+OutputBitmapPixelSize( void )
+{
+ DynString message;
+ DynStringMalloc( &message, 16 );
+ ParamLoadData( &outputBitMapPG );
+
+ DynStringPrintf( &message, _( "%ld by %ld pixels" ), bitmap_w, bitmap_h );
+ ParamLoadMessage( &outputBitMapPG, I_MSG1, DynStringToCStr( &message ) );
+ DynStringFree( &message );
+}
+/**
+* Display and return the file size of the bitmap
+*
+* \returns the estimated file size
+*/
+
+static FLOAT_T
+OutputBitmapFileSize( void )
+{
+ DynString message;
+ DynStringMalloc( &message, 16 );
ParamLoadData( &outputBitMapPG );
+ FLOAT_T size;
+
+ size = ( FLOAT_T )bitmap_w * bitmap_h;
+
+ if( size < 1e4 ) {
+ DynStringPrintf( &message, _( "%0.0f" ), size );
+ } else if( size < 1e6 ) {
+ DynStringPrintf( &message, _( "%0.1fKb" ), ( size + 50.0 ) / 1e3 );
+ } else if( size < 1e9 ) {
+ DynStringPrintf( &message, _( "%0.1fMb" ), ( size + 5e4 ) / 1e6 );
+ } else {
+ DynStringPrintf( &message, _( "%0.1fGb" ), ( size + 5e7 ) / 1e9 );
+ }
+
+ ParamLoadMessage( &outputBitMapPG, I_MSG2, DynStringToCStr( &message ) );
+
+ DynStringFree( &message );
+
+ return( size );
+}
+
+/**
+ * Compute pixel size of bitmap
+ */
+
+static void ComputeBitmapSize( void )
+{
+ FLOAT_T Lborder=0.0, Rborder=0.0, Tborder=0.0, Bborder=0.0;
+
bitmap_d.dpi = mainD.dpi;
- bitmap_d.scale = mainD.dpi/outputBitMapDensity;
+ bitmap_d.scale = mainD.dpi / outputBitMapDensity;
- if (outputBitMapTogglesV&2) {
- Lborder = 0.37;
- Rborder = 0.2;
- Tborder = 0.2;
- Bborder = 0.37;
+ if( outputBitMapTogglesV & ( BITMAPDRAWFRAMEONLY | BITMAPDRAWTITLE ) ) {
+ Lborder = LEFTMARGIN;
+ Rborder = DEFAULTMARGIN;
+ Tborder = DEFAULTMARGIN;
+ Bborder = BOTTOMMARGIN;
}
- if (outputBitMapTogglesV&1) {
- Tborder += 0.60;
- Bborder += 0.28;
+
+ if( outputBitMapTogglesV & BITMAPDRAWTITLE ) {
+ Tborder += 2 * LINEHEIGHT;
+ Bborder += LINEHEIGHT;
}
- bitmap_d.orig.x = 0.0-Lborder*bitmap_d.scale;
- bitmap_d.size.x = mapD.size.x + (Lborder+Rborder)*bitmap_d.scale;
- bitmap_d.orig.y = 0.0-Bborder*bitmap_d.scale;
- bitmap_d.size.y = mapD.size.y + (Bborder+Tborder)*bitmap_d.scale;
- bitmap_w = (long)(bitmap_d.size.x/bitmap_d.scale*bitmap_d.dpi)/*+1*/;
- bitmap_h = (long)(bitmap_d.size.y/bitmap_d.scale*bitmap_d.dpi)/*+1*/;
- sprintf( message, _("Bitmap : %ld by %ld pixels"), bitmap_w, bitmap_h );
- ParamLoadMessage( &outputBitMapPG, I_MSG1, message );
- size = bitmap_w * bitmap_h;
- if ( size < 1e4 )
- sprintf( message, _("Approximate file size : %0.0f"), size );
- else if ( size < 1e6 )
- sprintf( message, _("Approximate file size : %0.1fKb"), (size+50.0)/1e3 );
- else
- sprintf( message, _("Approximate file size : %0.1fMb"), (size+5e4)/1e6 );
- ParamLoadMessage( &outputBitMapPG, I_MSG2, message );
+
+ dpiRange.high = CalculateMaxDPI( mapD.size, Lborder + Rborder,
+ Bborder + Tborder );
+
+ bitmap_d.orig.x = -Lborder*bitmap_d.scale;
+ bitmap_d.size.x = mapD.size.x + ( Lborder + Rborder )*bitmap_d.scale;
+ bitmap_d.orig.y = -Bborder*bitmap_d.scale;
+ bitmap_d.size.y = mapD.size.y + ( Bborder + Tborder )*bitmap_d.scale;
+
+ bitmap_w = ( wWinPix_t )( bitmap_d.size.x / bitmap_d.scale*bitmap_d.dpi );
+ bitmap_h = ( wWinPix_t )( bitmap_d.size.y / bitmap_d.scale*bitmap_d.dpi );
}
+/**
+ * Update the dialog for changed bitmap settings. Based on the new dimensions
+ * selected options the bitmap size and and maximum density is calculated and
+ * displayed.
+ */
-static void OutputBitMapOk( void * junk )
+void
+UpdateBitmapDialog( void )
{
- FLOAT_T size;
- if (bitmap_w>32000 || bitmap_h>32000) {
- NoticeMessage( MSG_BITMAP_TOO_LARGE, _("Ok"), NULL );
- return;
+ ParamLoadData( &outputBitMapPG );
+
+ ComputeBitmapSize();
+ ParamLoadControl( &outputBitMapPG, I_DENSITY ); // trigger range check
+
+ if( outputBitMapDensity > dpiRange.high ) {
+ ParamDialogOkActive( &outputBitMapPG, false );
+ } else {
+ ParamDialogOkActive( &outputBitMapPG, true );
}
- size = bitmap_w * bitmap_h;
- if (size >= 1000000) {
- if (NoticeMessage(MSG_BITMAP_SIZE_WARNING, _("Yes"), _("Cancel") )==0)
+
+ OutputBitmapPixelSize();
+ OutputBitmapFileSize();
+}
+
+/**
+ * Check input from bitmap options dialog and trigger file name selection
+ *
+ * \param [in,out] junk If non-null, the junk.
+ */
+
+static void OutputBitMapOk( void * unused )
+{
+ FLOAT_T size;
+
+ size = OutputBitmapFileSize();
+
+ if( size > BITMAPSIZE ) {
+ if( NoticeMessage( MSG_BITMAP_SIZE_WARNING, _( "Continue" ),
+ _( "Cancel" ) )==0 ) {
return;
+ }
}
+
wHide( outputBitMapW );
- if (bitmap_fs == NULL)
- bitmap_fs = wFilSelCreate( mainW, FS_SAVE, 0, _("Save Bitmap"),
-//#ifdef WINDOWS
-// _("Bitmap files (*.bmp)|*.bmp"),
-//#else
- _("Bitmap files (*.png)|*.png"),
-//#endif
- SaveBitmapFile, NULL );
- wFilSelect( bitmap_fs, GetCurrentPath( BITMAPPATHKEY ));
-}
+ if( !bitmap_fs ) {
+ bitmap_fs = wFilSelCreate( mainW, FS_SAVE, 0, _( "Save Bitmap" ),
+ _( "Portable Network Graphics format (*.png)|*.png|" \
+ "JPEG format (*.jpg)|*.jpg" ),
+ SaveBitmapFile, NULL );
+ }
+ wFilSelect( bitmap_fs, GetCurrentPath( BITMAPPATHKEY ) );
+}
+
+/**
+ * Handle changes for bitmap export. Only changes relevant here are
+ * changes to the map.
+ *
+ * \param changes The changes.
+ */
static void OutputBitMapChange( long changes )
{
- if ((changes&(CHANGE_UNITS|CHANGE_MAP))==0 || outputBitMapW==NULL)
- return;
- wControlSetLabel( outputBitMapPLs[I_DENSITY].control, units==UNITS_METRIC?"dpcm":"dpi" );
- ParamLoadControls( &outputBitMapPG );
- OutputBitMapComputeSize();
+ if( ( changes & CHANGE_MAP ) && outputBitMapW ) {
+ ParamLoadControls( &outputBitMapPG );
+ ComputeBitmapSize();
+ }
+
+ return;
}
+/**
+ * Executes the output bit map operation
+ *
+ * \param [in,out] unused.
+ */
-static void DoOutputBitMap( void * junk )
+static void DoOutputBitMap( void* unused )
{
- if (outputBitMapW == NULL) {
- outputBitMapW = ParamCreateDialog( &outputBitMapPG, MakeWindowTitle(_("BitMap")), _("Ok"), OutputBitMapOk, wHide, TRUE, NULL, 0, (paramChangeProc)OutputBitMapComputeSize );
+ if( outputBitMapW == NULL ) {
+ outputBitMapW = ParamCreateDialog( &outputBitMapPG,
+ MakeWindowTitle( _( "Export to bitmap" ) ),
+ _( "Ok" ),
+ OutputBitMapOk,
+ wHide,
+ TRUE,
+ NULL,
+ 0,
+ ( paramChangeProc )UpdateBitmapDialog );
}
+
ParamLoadControls( &outputBitMapPG );
ParamGroupRecord( &outputBitMapPG );
- OutputBitMapComputeSize();
+
+ UpdateBitmapDialog();
+
+ if( dpiRange.high < outputBitMapDensity ) {
+ outputBitMapDensity = dpiRange.high;
+ ParamLoadControl( &outputBitMapPG, I_DENSITY );
+ }
+
wShow( outputBitMapW );
}
+/**
+ * Initialize bitmap output
+ *
+ * \returns entry point for bitmap export
+ */
EXPORT addButtonCallBack_t OutputBitMapInit( void )
{
ParamRegister( &outputBitMapPG );
- RegisterChangeNotification(OutputBitMapChange);
+ RegisterChangeNotification( OutputBitMapChange );
return &DoOutputBitMap;
}
diff --git a/app/bin/dcar.c b/app/bin/dcar.c
index e067e2b..11a5a1e 100644
--- a/app/bin/dcar.c
+++ b/app/bin/dcar.c
@@ -17,36 +17,27 @@
*
* 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 WINDOWS
-#include <errno.h>
-#endif
-#include <assert.h>
-#include <ctype.h>
-#include <math.h>
-#include <stdint.h>
-#include <string.h>
-
#include "cselect.h"
#include "ctrain.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "paths.h"
#include "track.h"
-#include "utility.h"
+#include "include/paramfile.h"
+#include "common-ui.h"
static int log_carList;
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 };
static paramIntegerRange_t i1_9999 = { 1, 9999, 50 };
@@ -65,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)
@@ -83,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;
+};
/*
@@ -126,28 +117,29 @@ 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 ) {
- tabs[inx].len = next-string;
+ next = strchr( string, '\t' );
+ }
+ if ( next ) {
+ tabs[inx].len = (int)(next-string);
string = next+1;
} else {
- tabs[inx].len = strlen( string );
+ tabs[inx].len = (int)strlen( string );
string += tabs[inx].len;
}
}
@@ -159,7 +151,7 @@ static void TabStringExtract(
static char * TabStringDup(
- tabString_t * tab )
+ tabString_t * tab )
{
char * ret;
ret = MyMalloc( tab->len+1 );
@@ -170,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';
@@ -180,31 +172,34 @@ static char * TabStringCpy(
static int TabStringCmp(
- char * src,
- tabString_t * tab )
+ char * src,
+ tabString_t * tab )
{
- int srclen = strlen(src);
- int len = srclen;
+ 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 );
@@ -214,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 );
@@ -229,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++ ) {
@@ -242,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++ ) {
@@ -257,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;
@@ -272,36 +268,39 @@ 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) = (void*)MyMalloc(elem_size);
+ }
+ DYNARR_N(void*,*da,lo) = MyMalloc(elem_size);
memset( DYNARR_N(void*,*da,lo), 0, elem_size );
lookupListIndex = lo;
return DYNARR_N(void*,*da,lo);
}
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--;
}
@@ -315,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++ ) {
@@ -372,79 +373,81 @@ 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;
memcpy( p, truckOutline, sizeof truckOutline );
- RescalePts( sizeof truckOutline/sizeof truckOutline[0], p, 1.0, width/56.5 );
- RescalePts( sizeof truckOutline/sizeof truckOutline[0], p, ratio, ratio );
- RotatePts( sizeof truckOutline/sizeof truckOutline[0], p, zero, angle );
- MovePts( sizeof truckOutline/sizeof truckOutline[0], p, pos );
- DrawPoly( d, sizeof truckOutline/sizeof truckOutline[0], p, NULL, color, 0, 1, 0);
+ RescalePts( COUNT( truckOutline ), p, 1.0, width/56.5 );
+ RescalePts( COUNT( truckOutline ), p, ratio, ratio );
+ RotatePts( COUNT( truckOutline ), p, zero, angle );
+ MovePts( COUNT( truckOutline ), p, pos );
+ DrawPoly( d, COUNT( truckOutline ), p, NULL, color, 0, DRAW_FILL);
pp.x = -70/2;
pp.y = 0;
memcpy( p, wheelOutline, sizeof wheelOutline );
- RescalePts( sizeof wheelOutline/sizeof wheelOutline[0], p, 1.0, width/56.5 );
- MovePts( sizeof wheelOutline/sizeof wheelOutline[0], p, pp );
- RescalePts( sizeof wheelOutline/sizeof wheelOutline[0], p, ratio, ratio );
- RotatePts( sizeof wheelOutline/sizeof wheelOutline[0], p, zero, angle );
- MovePts( sizeof wheelOutline/sizeof wheelOutline[0], p, pos );
- DrawPoly( d, sizeof wheelOutline/sizeof wheelOutline[0], p, NULL, color, 0, 1, 0);
+ RescalePts( COUNT( wheelOutline ), p, 1.0, width/56.5 );
+ MovePts( COUNT( wheelOutline ), p, pp );
+ RescalePts( COUNT( wheelOutline ), p, ratio, ratio );
+ RotatePts( COUNT( wheelOutline ), p, zero, angle );
+ MovePts( COUNT( wheelOutline ), p, pos );
+ DrawPoly( d, COUNT( wheelOutline ), p, NULL, color, 0, DRAW_FILL);
pp.x = 70/2;
memcpy( p, wheelOutline, sizeof wheelOutline );
- RescalePts( sizeof wheelOutline/sizeof wheelOutline[0], p, 1.0, width/56.5 );
- MovePts( sizeof wheelOutline/sizeof wheelOutline[0], p, pp );
- RescalePts( sizeof wheelOutline/sizeof wheelOutline[0], p, ratio, ratio );
- RotatePts( sizeof wheelOutline/sizeof wheelOutline[0], p, zero, angle );
- MovePts( sizeof wheelOutline/sizeof wheelOutline[0], p, pos );
- DrawPoly( d, sizeof wheelOutline/sizeof wheelOutline[0], p, NULL, color, 0, 1, 0 );
+ RescalePts( COUNT( wheelOutline ), p, 1.0, width/56.5 );
+ MovePts( COUNT( wheelOutline ), p, pp );
+ RescalePts( COUNT( wheelOutline ), p, ratio, ratio );
+ RotatePts( COUNT( wheelOutline ), p, zero, angle );
+ MovePts( COUNT( wheelOutline ), p, pos );
+ DrawPoly( d, COUNT( wheelOutline ), p, NULL, color, 0, DRAW_FILL );
}
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 */
- MovePts( sizeof couplerOutline/sizeof couplerOutline[0], p, pp );
- RescalePts( sizeof couplerOutline/sizeof couplerOutline[0], p, ratio, ratio );
- RotatePts( sizeof couplerOutline/sizeof couplerOutline[0], p, zero, angle-90.0 );
- MovePts( sizeof couplerOutline/sizeof couplerOutline[0], p, pos );
- DrawPoly( d, sizeof couplerOutline/sizeof couplerOutline[0], p, NULL, color, 0, 1 ,0 );
+ /* 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 );
+ MovePts( COUNT( couplerOutline ), p, pos );
+ DrawPoly( d, COUNT( couplerOutline ), p, NULL, color, 0, DRAW_FILL );
}
@@ -458,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;
@@ -490,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;
@@ -506,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;
@@ -539,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;
@@ -555,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;
@@ -565,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";
@@ -592,27 +599,32 @@ 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;
}
return proto;
}
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;
@@ -623,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 ) {
@@ -652,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 );
}
@@ -693,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);
@@ -712,7 +730,7 @@ DeleteCarProto(int fileIndex)
}
static BOOL_T CarProtoRead(
- char * line )
+ char * line )
{
char * desc;
long options;
@@ -721,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;
@@ -734,21 +756,22 @@ static BOOL_T CarProtoRead(
static BOOL_T CarProtoWrite(
- FILE * f,
- carProto_t * proto )
+ FILE * f,
+ carProto_t * proto )
{
BOOL_T rc = TRUE;
- char *oldLocale = NULL;
- oldLocale = SaveLocale("C");
+ SetCLocale();
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 );
- RestoreLocale(oldLocale);
+ SetUserLocale();
return rc;
}
@@ -756,7 +779,7 @@ static BOOL_T CarProtoWrite(
static BOOL_T CarProtoCustomSave(
- FILE * f )
+ FILE * f )
{
int inx;
carProto_t * proto;
@@ -764,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;
}
@@ -783,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)
@@ -816,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;
@@ -837,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 roadnameMapP );
+ 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;
}
@@ -924,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;
@@ -936,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;
@@ -954,7 +991,7 @@ static carPart_p CarPartFind(
static void CarPartParentDelete(
- carPartParent_p parentP )
+ carPartParent_p parentP )
{
RemoveListElem( &carPartParent_da, parentP );
MyFree( parentP->manuf );
@@ -964,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 );
@@ -975,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;
@@ -988,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 );
@@ -1003,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;
@@ -1018,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;
@@ -1048,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);
@@ -1061,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 );
}
@@ -1099,7 +1148,7 @@ DeleteCarPart(int fileIndex)
}
static BOOL_T CarPartRead(
- char * line )
+ char * line )
{
char scale[10];
long options;
@@ -1110,39 +1159,43 @@ 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;
- char *oldLocale = NULL;
carPartParent_p parentP=partP->parent;
tabString_t tabs[7];
- oldLocale = SaveLocale("C");
+ SetCLocale();
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;
- RestoreLocale(oldLocale);
+ SetUserLocale();
return rc;
}
@@ -1150,7 +1203,7 @@ static BOOL_T CarPartWrite(
static BOOL_T CarDescCustomSave(
- FILE * f )
+ FILE * f )
{
int parentX;
carPartParent_p parentP;
@@ -1162,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;
@@ -1180,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 );
}
@@ -1238,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;
@@ -1251,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 );
}
@@ -1269,44 +1328,47 @@ static carItem_p CarItemNew(
}
/**
- * Check the whether the parameter file has CARPARTS that are compatible
- * with the current state. For CARPARTS only the exactly identical scale
- * is accepted as compatible
- *
+ * 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 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 );
-
- if(GetScaleRatio(carPartParent->scale) == ratio ){
- for(int j = 0; j < carPartParent->parts_da.cnt; j++ ){
+ SCALE_FIT_T fit = CompatibleScale(FIT_CAR,carPartParent->scale,scaleIndex);
+ if(fit == FIT_EXACT) {
+ for(int j = 0; j < carPartParent->parts_da.cnt; j++ ) {
carPart_t *carPart = carPart( carPartParent, j );
-
if (carPart->paramFileIndex == paramFileIndex) {
ret = PARAMFILE_FIT;
break;
}
}
}
+ if (fit == FIT_COMPATIBLE) {
+ ret = PARAMFILE_COMPATIBLE;
+ }
}
return(ret);
}
EXPORT BOOL_T CarItemRead(
- char * line )
+ char * line )
{
long itemIndex;
char scale[10];
@@ -1330,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 < 12 ) {
+ 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 );
@@ -1365,28 +1434,32 @@ 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;
ANGLE_T angle;
BOOL_T rc = TRUE;
- char *oldLocale = NULL;
long longCenterOffset = (long)(item->dim.truckCenterOffset*1000);
- oldLocale = SaveLocale("C");
+ 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;
@@ -1397,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;
@@ -1405,7 +1478,7 @@ static BOOL_T CarItemWrite(
rc &= fprintf( f, "\n" )>0;
}
- RestoreLocale(oldLocale);
+ SetUserLocale();
return rc;
}
@@ -1413,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;
@@ -1451,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) );
@@ -1461,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 );
@@ -1498,8 +1577,9 @@ 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, (void*)400, N_("Item") } };
-static paramGroup_t newCarPG = { "train-newcar", 0, newCarPLs, sizeof newCarPLs/sizeof newCarPLs[0] };
+ { 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];
static char * newCarLabels[2] = { newCarLabel1, NULL };
@@ -1509,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;
@@ -1526,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;
}
}
@@ -1546,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)(long)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;
@@ -1614,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++ = ' ';
}
@@ -1644,28 +1734,31 @@ EXPORT char * CarItemDescribe(
}
}
*--cp = '\0';
- if ( index != NULL )
+ if ( index != NULL ) {
*index = item->index;
+ }
return desc;
}
-EXPORT void CarItemLoadList( void * junk )
+EXPORT void CarItemLoadList( void * unused )
{
wIndex_t inx;
carItem_p item;
char * cp;
- wPos_t w, h;
+ 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, (void*)(intptr_t)inx );
+ wListAddValue( (wList_p)newCarPLs[0].control, cp, NULL, I2VP(inx) );
}
/*wListSetValue( (wList_p)newCarPLs[0].control, "Select a car" );*/
wListSetIndex( (wList_p)newCarPLs[0].control, 0 );
@@ -1674,27 +1767,30 @@ EXPORT void CarItemLoadList( void * junk )
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)(long)data;
+ wIndex_t carItemInx = (wIndex_t)VP2L(data);
carItem_p item;
wIndex_t inx;
long mode;
char * cp;
- wPos_t w, h;
+ wWinPix_t w, h;
item = carItemHotbar(carItemInx);
- if ( item == NULL )
+ if ( item == NULL ) {
return NULL;
+ }
switch ( op ) {
case HB_SELECT:
currCarItemPtr = item;
@@ -1702,17 +1798,19 @@ 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, (void*)(intptr_t)inx );
+ wListAddValue( (wList_p)newCarPLs[0].control, cp, NULL, I2VP(inx) );
}
/*wListSetValue( (wList_p)newCarPLs[0].control, "Select a car" );*/
wListSetIndex( (wList_p)newCarPLs[0].control, 0 );
- cp = CarItemHotbarProc( HB_BARTITLE, (void*)(intptr_t)carItemInx, NULL, NULL );
+ cp = CarItemHotbarProc( HB_BARTITLE, I2VP(carItemInx), NULL, NULL );
strncpy( newCarLabel1, cp, sizeof newCarLabel1 );
ParamLoadControls( &newCarPG );
ParamGroupRecord( &newCarPG );
@@ -1720,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 );
@@ -1734,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;
@@ -1750,8 +1852,10 @@ EXPORT int CarAvailableCount( void )
carItem_t * item;
for ( inx=0; inx < carItemHotbar_da.cnt; inx ++ ) {
item = carItemHotbar(inx);
- if ( item->scaleInx != GetLayoutCurScale())
+ if (FIT_NONE == CompatibleScale( FIT_CAR, item->scaleInx,
+ GetLayoutCurScale())) {
continue;
+ }
cnt++;
}
return cnt;
@@ -1766,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 ( 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;
@@ -1782,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), (void*)(intptr_t)inx, CarItemHotbarProc );
+ AddHotBarElement( FormatCarTitle( item1, carHotbarContents[carHotbarModeInx] ),
+ size, orig, FALSE, FALSE, (60.0*12.0/curScaleRatio), I2VP(inx),
+ CarItemHotbarProc );
}
item0 = item1;
}
@@ -1790,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];
@@ -1827,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);
@@ -1939,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;
@@ -1949,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;
@@ -2005,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;
@@ -2021,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 ) {
@@ -2075,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 );
@@ -2114,7 +2222,7 @@ EXPORT void CarItemDraw(
EXPORT void CarItemUpdate(
- carItem_p item )
+ carItem_p item )
{
DoChangeNotification( CHANGE_SCALE );
}
@@ -2138,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;
@@ -2172,16 +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 };
-static void CarDlgRedraw(void);
-static paramDrawData_t carDlgDrawData = { 455, 100, (wDrawRedrawCallBack_p)CarDlgRedraw, NULL, &carDlgD };
-static paramTextData_t notesData = { 440, 100 };
+ 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 = { 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 * );
@@ -2191,23 +2302,23 @@ static void CarDlgNewProto( void );
static paramData_t carDlgPLs[] = {
#define A (0)
#define I_CD_MANUF_LIST (A+0)
- { PD_DROPLIST, &carDlgManufInx, "manuf", PDO_NOPREF, (void*)350, N_("Manufacturer"), BL_EDITABLE },
+ { PD_DROPLIST, &carDlgManufInx, "manuf", PDO_NOPREF, I2VP(350), N_("Manufacturer"), BL_EDITABLE },
#define I_CD_PROTOTYPE_STR (A+1)
- { PD_STRING, &carDlgProtoStr, "prototype", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)350, N_("Prototype"), 0, 0, sizeof(carDlgProtoStr)},
+ { PD_STRING, &carDlgProtoStr, "prototype", PDO_NOPREF|PDO_NOTBLANK, I2VP(350), N_("Prototype"), 0, 0, sizeof(carDlgProtoStr)},
#define I_CD_PROTOKIND_LIST (A+2)
- { PD_DROPLIST, &carDlgKindInx, "protokind-list", PDO_NOPREF, (void*)125, N_("Prototype"), 0 },
+ { PD_DROPLIST, &carDlgKindInx, "protokind-list", PDO_NOPREF, I2VP(125), N_("Prototype"), 0 },
#define I_CD_PROTOTYPE_LIST (A+3)
- { PD_DROPLIST, &carDlgProtoInx, "prototype-list", PDO_NOPREF|PDO_DLGHORZ, (void*)(225-3), NULL, 0 },
+ { PD_DROPLIST, &carDlgProtoInx, "prototype-list", PDO_NOPREF|PDO_DLGHORZ, I2VP(225-3), NULL, 0 },
#define I_CD_TYPE_LIST (A+4)
- { PD_DROPLIST, &carDlgTypeInx, "type", PDO_NOPREF, (void*)350, N_("Type"), 0 },
+ { PD_DROPLIST, &carDlgTypeInx, "type", PDO_NOPREF, I2VP(350), N_("Type"), 0 },
#define I_CD_PARTNO_LIST (A+5)
- { PD_DROPLIST, &carDlgPartnoInx, "partno-list", PDO_NOPREF, (void*)350, N_("Part"), BL_EDITABLE },
+ { PD_DROPLIST, &carDlgPartnoInx, "partno-list", PDO_NOPREF, I2VP(350), N_("Part"), BL_EDITABLE },
#define I_CD_PARTNO_STR (A+6)
- { PD_STRING, &carDlgPartnoStr, "partno", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)350, N_("Part Number"), 0, 0, sizeof(carDlgPartnoStr)},
+ { PD_STRING, &carDlgPartnoStr, "partno", PDO_NOPREF|PDO_NOTBLANK, I2VP(350), N_("Part Number"), 0, 0, sizeof(carDlgPartnoStr)},
#define I_CD_ISLOCO (A+7)
{ PD_TOGGLE, &carDlgIsLoco, "isLoco", PDO_NOPREF|PDO_DLGWIDE, isLocoLabels, N_("Loco?"), BC_HORZ|BC_NOBORDER },
#define I_CD_DESC_STR (A+8)
- { PD_STRING, &carDlgDescStr, "desc", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)350, N_("Description"), 0, 0, sizeof(carDlgDescStr)},
+ { PD_STRING, &carDlgDescStr, "desc", PDO_NOPREF|PDO_STRINGLIMITLENGTH, I2VP(350), N_("Description"), 0, 0, sizeof(carDlgDescStr)},
#define I_CD_IMPORT (A+9)
{ PD_BUTTON, NULL, "import", 0, 0, N_("Import") },
#define I_CD_RESET (A+10)
@@ -2220,27 +2331,27 @@ static paramData_t carDlgPLs[] = {
#define B (A+13)
#define I_CD_ROADNAME_LIST (B+0)
- { PD_DROPLIST, &carDlgRoadnameInx, "road", PDO_NOPREF|PDO_DLGWIDE, (void*)350, N_("Road"), BL_EDITABLE },
+ { PD_DROPLIST, &carDlgRoadnameInx, "road", PDO_NOPREF|PDO_DLGWIDE, I2VP(350), N_("Road"), BL_EDITABLE },
#define I_CD_REPMARK (B+1)
- { PD_STRING, carDlgRepmarkStr, "repmark", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)60, N_("Reporting Mark"), 0, 0, sizeof(carDlgRepmarkStr)},
+ { PD_STRING, carDlgRepmarkStr, "repmark", PDO_NOPREF|PDO_STRINGLIMITLENGTH, I2VP(60), N_("Reporting Mark"), 0, 0, sizeof(carDlgRepmarkStr)},
#define I_CD_NUMBER (B+2)
- { PD_STRING, carDlgNumberStr, "number", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ|PDO_STRINGLIMITLENGTH, (void*)80, N_("Number"), 0, 0, sizeof(carDlgNumberStr)},
+ { PD_STRING, carDlgNumberStr, "number", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ|PDO_STRINGLIMITLENGTH, I2VP(80), N_("Number"), 0, 0, sizeof(carDlgNumberStr)},
#define I_CD_BODYCOLOR (B+3)
{ PD_COLORLIST, &carDlgBodyColor, "bodyColor", PDO_DLGWIDE|PDO_DLGHORZ, NULL, N_("Color") },
#define I_CD_CARLENGTH (B+4)
- { PD_FLOAT, &carDlgDim.carLength, "carLength", PDO_DIM|PDO_NOPREF|PDO_DLGWIDE, &r0_99999, N_("Car Length") },
+ { PD_FLOAT, &carDlgDim.carLength, "carLength", PDO_DIM|PDO_NOPREF|PDO_DLGWIDE, &r0d001_99999, N_("Car Length") },
#define I_CD_CARWIDTH (B+5)
- { PD_FLOAT, &carDlgDim.carWidth, "carWidth", PDO_DIM|PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ, &r0_99999, N_("Width") },
+ { PD_FLOAT, &carDlgDim.carWidth, "carWidth", PDO_DIM|PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ, &r0d001_99999, N_("Width") },
#define I_CD_TRKCENTER (B+6)
- { PD_FLOAT, &carDlgDim.truckCenter, "trkCenter", PDO_DIM|PDO_NOPREF, &r0_99999, N_("Truck Centers") },
+ { PD_FLOAT, &carDlgDim.truckCenter, "trkCenter", PDO_DIM|PDO_NOPREF, &r0d001_99999, N_("Truck Centers") },
#define I_CD_TRKOFFSET (B+7)
{ PD_FLOAT, &carDlgDim.truckCenterOffset, "trkCenterOffset", PDO_DIM|PDO_NOPREF|PDO_DLGHORZ|PDO_DLGWIDE, &r9999_9999, N_("Center Offset") },
#define I_CD_CPLRMNT (B+8)
{ PD_RADIO, &carDlgCouplerMount, "cplrMount", PDO_NOPREF, cplrModeLabels, N_("Coupler Mount"), BC_HORZ|BC_NOBORDER },
#define I_CD_CPLDLEN (B+9)
- { PD_FLOAT, &carDlgDim.coupledLength, "cpldLen", PDO_DIM|PDO_NOPREF, &r0_99999, N_("Coupled Length") },
+ { PD_FLOAT, &carDlgDim.coupledLength, "cpldLen", PDO_DIM|PDO_NOPREF, &r0d001_99999, N_("Coupled Length") },
#define I_CD_CPLRLEN (B+10)
- { PD_FLOAT, &carDlgCouplerLength, "cplrLen", PDO_DIM|PDO_NOPREF|PDO_DLGHORZ, &r0_99999, N_("Coupler Length") },
+ { PD_FLOAT, &carDlgCouplerLength, "cplrLen", PDO_DIM|PDO_NOPREF|PDO_DLGHORZ, &r0d001_99999, N_("Coupler Length") },
#define I_CD_CANVAS (B+11)
{ PD_DRAW, NULL, "canvas", PDO_NOPSHUPD|PDO_DLGWIDE|PDO_DLGNOLABELALIGN|PDO_DLGRESETMARGIN|PDO_DLGBOXEND|PDO_DLGRESIZE, &carDlgDrawData, NULL, 0 },
@@ -2248,33 +2359,34 @@ static paramData_t carDlgPLs[] = {
#define I_CD_ITEMINDEX (C+0)
{ PD_LONG, &carDlgItemIndex, "index", PDO_NOPREF|PDO_DLGWIDE, &i1_999999999, N_("Index"), 0 },
#define I_CD_PURPRC (C+1)
- { PD_STRING, &carDlgPurchPriceStr, "purchPrice", PDO_NOPREF|PDO_DLGWIDE, (void*)50, N_("Purchase Price"), 0, &carDlgPurchPrice },
+ { PD_STRING, &carDlgPurchPriceStr, "purchPrice", PDO_NOPREF|PDO_DLGWIDE|PDO_STRINGLIMITLENGTH, I2VP(50), N_("Purchase Price"), 0, &carDlgPurchPrice, sizeof(carDlgPurchPriceStr) },
#define I_CD_CURPRC (C+2)
- { PD_STRING, &carDlgCurrPriceStr, "currPrice", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ, (void*)50, N_("Current Price"), 0, &carDlgCurrPrice },
+ { PD_STRING, &carDlgCurrPriceStr, "currPrice", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ|PDO_STRINGLIMITLENGTH, I2VP(50), N_("Current Price"), 0, &carDlgCurrPrice, sizeof(carDlgCurrPriceStr) },
#define I_CD_COND (C+3)
- { PD_DROPLIST, &carDlgConditionInx, "condition", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ, (void*)90, N_("Condition") },
+ { PD_DROPLIST, &carDlgConditionInx, "condition", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ, I2VP(90), N_("Condition") },
#define I_CD_PURDAT (C+4)
- { PD_STRING, &carDlgPurchDateStr, "purchDate", PDO_NOPREF|PDO_DLGWIDE, (void*)80, N_("Purchase Date"), 0, &carDlgPurchDate },
+ { PD_STRING, &carDlgPurchDateStr, "purchDate", PDO_NOPREF|PDO_DLGWIDE|PDO_STRINGLIMITLENGTH, I2VP(80), N_("Purchase Date"), 0, &carDlgPurchDate, sizeof(carDlgPurchDateStr) },
#define I_CD_SRVDAT (C+5)
- { PD_STRING, &carDlgServiceDateStr, "serviceDate", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ, (void*)80, N_("Service Date"), 0, &carDlgServiceDate },
+ { PD_STRING, &carDlgServiceDateStr, "serviceDate", PDO_NOPREF|PDO_DLGWIDE|PDO_DLGHORZ|PDO_STRINGLIMITLENGTH, I2VP(80), N_("Service Date"), 0, &carDlgServiceDate, sizeof(carDlgServiceDateStr) },
#define I_CD_QTY (C+6)
{ PD_LONG, &carDlgQuantity, "quantity", PDO_NOPREF|PDO_DLGWIDE, &i1_9999, N_("Quantity") },
#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)
- { PD_MESSAGE, NULL, NULL, PDO_DLGNOLABELALIGN|PDO_DLGRESETMARGIN|PDO_DLGBOXEND, (void*)450 },
+ { PD_MESSAGE, NULL, NULL, PDO_DLGNOLABELALIGN|PDO_DLGRESETMARGIN|PDO_DLGBOXEND, I2VP(450) },
#define I_CD_NEW (D+1)
- { PD_MENU, NULL, "new-menu", PDO_DLGCMDBUTTON, NULL, N_("New"), 0, (void*)0 },
- { PD_MENUITEM, (void*)CarDlgNewDesc, "new-part-mi", 0, NULL, N_("Car Part"), 0, (void*)0 },
- { PD_MENUITEM, (void*)CarDlgNewProto, "new-proto-mi", 0, NULL, N_("Car Prototype"), 0, (void*)0 },
+ { PD_MENU, NULL, "new-menu", PDO_DLGCMDBUTTON, NULL, N_("New"), 0, I2VP(0) },
+ { 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, (void*)CarDlgNewProto, "new", PDO_DLGCMDBUTTON, NULL, N_("New"), 0, (void*)0 } };
+ { PD_BUTTON, CarDlgNewProto, "new", PDO_DLGCMDBUTTON, NULL, N_("New"), 0, I2VP(0) }
+};
-static paramGroup_t carDlgPG = { "carpart", 0, carDlgPLs, sizeof carDlgPLs/sizeof carDlgPLs[0] };
+static paramGroup_t carDlgPG = { "carpart", 0, carDlgPLs, COUNT( carDlgPLs ) };
static dynArr_t carDlgSegs_da;
@@ -2282,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 };
@@ -2435,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)
@@ -2505,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;
@@ -2516,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 );
}
@@ -2538,9 +2668,10 @@ static void CarDlgLoadDimsFromProto( carProto_p protoP )
}
-static void CarDlgRedraw( void )
+static void CarDlgRedraw(
+ wDraw_p d, void * context, wWinPix_t x, wWinPix_t y )
{
- wPos_t w, h;
+ wWinPix_t w, h;
DIST_T ww, hh;
DIST_T scale_w, scale_h;
coOrd orig, pos, size;
@@ -2549,33 +2680,37 @@ static void CarDlgRedraw( void )
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;
@@ -2596,26 +2731,32 @@ static void CarDlgRedraw( void )
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 );
}
}
@@ -2630,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, (void*)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, (void*)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, (void*)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;
@@ -2737,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, (void*)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, (void*)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;
+ }
}
}
@@ -2813,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, (void*)(intptr_t)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';
}
@@ -2901,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, (void*)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;
}
}
@@ -2918,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] );
@@ -2930,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;
@@ -2958,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;
@@ -2968,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, (void*)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;
}
@@ -2994,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 );
@@ -3009,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 ) {
@@ -3041,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 );
@@ -3073,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 );
@@ -3093,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 );
@@ -3116,7 +3331,7 @@ static void CarDlgShowControls( void )
static void CarDlgDoActions(
- carDlgAction_e * actions )
+ carDlgAction_e * actions )
{
carPart_p partP;
carPartParent_p parentP;
@@ -3126,7 +3341,7 @@ static void CarDlgDoActions(
DIST_T ratio;
tabString_t tabs[7];
char * cp;
- BOOL_T reload[sizeof carDlgPLs/sizeof carDlgPLs[0]];
+ BOOL_T reload[COUNT( carDlgPLs )];
#define RELOAD_DIMS \
reload[I_CD_CARLENGTH] = reload[I_CD_CARWIDTH] = reload[I_CD_CPLDLEN] = \
reload[I_CD_TRKCENTER] = reload[I_CD_TRKOFFSET] = reload[I_CD_CPLRLEN] = TRUE
@@ -3143,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<sizeof carDlgPLs/sizeof carDlgPLs[0]; inx++ )
- if ( reload[inx] )
+ for ( inx=0; inx<COUNT( carDlgPLs ); inx++ )
+ if ( reload[inx] ) {
ParamLoadControl( &carDlgPG, inx );
+ }
return;
case A_SError:
currState = S_Error;
@@ -3174,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++;
@@ -3197,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;
@@ -3220,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;
@@ -3231,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 );
@@ -3271,7 +3493,7 @@ LOG( log_carDlgState, 2, ( "Action = %s\n", carDlgAction_s[*actions] ) )
RELOAD_DIMS;
break;
case A_Redraw:
- CarDlgRedraw();
+ CarDlgRedraw( carDlgD.d, NULL, 0, 0 );
break;
case A_ClrManuf:
carDlgManufStr[0] = '\0';
@@ -3288,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;
@@ -3310,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:
@@ -3355,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 );
@@ -3366,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] );
@@ -3388,18 +3618,19 @@ 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;
TabStringExtract( carDlgUpdatePartPtr->title, 7, tabs );
tabs[T_MANUF].ptr = carDlgUpdatePartPtr->parent->manuf;
- tabs[T_MANUF].len = strlen(carDlgUpdatePartPtr->parent->manuf);
+ tabs[T_MANUF].len = (int)strlen(carDlgUpdatePartPtr->parent->manuf);
tabs[T_PROTO].ptr = carDlgUpdatePartPtr->parent->proto;
- tabs[T_PROTO].len = strlen(carDlgUpdatePartPtr->parent->proto);
+ tabs[T_PROTO].len = (int)strlen(carDlgUpdatePartPtr->parent->proto);
CarDlgLoadLists( FALSE, tabs, carDlgScaleInx );
CarDlgLoadPart( carDlgUpdatePartPtr );
RELOAD_LISTS;
@@ -3417,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;
@@ -3429,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;
}
}
@@ -3442,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] );
}
@@ -3479,17 +3713,29 @@ static BOOL_T CheckCarDlgItemIndex( long * index )
}
+void CarDlgError(
+ wBool_t ok,
+ paramData_p p,
+ char * msg )
+{
+ p->bInvalid = !ok;
+ ParamHilite( p->group->win, p->control, !ok );
+ wWinPix_t h = wControlGetHeight(p->control);
+ wControlSetBalloon( p->control, 0, -h*3/4, ok?NULL:msg );
+}
+
+
static void CarDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
BOOL_T redraw = FALSE;
roadnameMap_p roadnameMapP;
char * cp, *cq;
long valL, d, m;
FLOAT_T ratio;
- BOOL_T ok;
+ BOOL_T ok = TRUE;
DIST_T len;
BOOL_T checkTruckCenter = FALSE;
cmp_key_t cmp_key;
@@ -3505,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)(long)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 );
@@ -3555,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 {
@@ -3571,10 +3830,18 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
break;
case I_CD_DISPMODE:
- for ( inx=B; inx<C; inx++ )
+
+ if ( !ParamCheckInputs( &carDlgPG, carDlgPLs[I_CD_DISPMODE].control ) ) {
+ carDlgDispMode = 1-carDlgDispMode;
+ ParamLoadControl( &carDlgPG, I_CD_DISPMODE );
+ break;
+ }
+ 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 );
@@ -3586,15 +3853,17 @@ 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 = strlen(carDlgRoadnameStr);
+ cmp_key.len = (int)strlen(carDlgRoadnameStr);
roadnameMapP = LookupListElem( &roadnameMap_da, &cmp_key, Cmp_roadnameMap, 0 );
}
if ( roadnameMapP ) {
@@ -3608,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 );
}
}
@@ -3640,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;
@@ -3671,32 +3946,35 @@ 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 = carDlgDim.carLength+carDlgCouplerLength*2.0;
+ carDlgDim.coupledLength = len;
ParamLoadControl( &carDlgPG, I_CD_CPLDLEN );
}
carDlgCouplerLengthClock = ++carDlgClock;
- } else if ( carDlgDim.coupledLength != 0 && ( carDlgDim.carLength == 0 || carDlgCoupledLengthClock > carDlgCarLengthClock ) ) {
- len = carDlgCouplerLength-carDlgDim.coupledLength*2.0;
+ } else if ( carDlgDim.coupledLength != 0 && ( carDlgDim.carLength == 0
+ || carDlgCoupledLengthClock > carDlgCarLengthClock ) ) {
+ len = carDlgDim.coupledLength-carDlgCouplerLength*2.0;
if ( len > 0 ) {
- carDlgDim.carLength = carDlgCouplerLength-carDlgDim.coupledLength*2.0;
+ carDlgDim.carLength = len;
ParamLoadControl( &carDlgPG, I_CD_CARLENGTH );
checkTruckCenter = TRUE;
}
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;
@@ -3716,13 +3994,20 @@ 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) {
+ ok = FALSE;
+ CarDlgError( ok, &carDlgPLs[I_CD_TRKOFFSET],
+ _("Truck Center Offset plus Truck Centers must be less than Car Length") );
+ }
redraw = TRUE;
break;
@@ -3731,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 {
@@ -3752,55 +4039,70 @@ 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 );
- if ( cp==NULL || *cp!='\0' )
+ *(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;
+ sprintf( message, "%s not valid", pg->paramPtr[inx].winLabel );
+ }
+ CarDlgError( ok, &pg->paramPtr[inx], message );
break;
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++;
- cp = (char*)pg->paramPtr[inx].valueP;
+ 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' ) {
- cp = N_("Enter a 8 digit numeric date");
- } else if ( valL != 0 ) {
- if ( strlen(cp) != 8 ) {
- cp = N_("Enter a 8 digit date");
+ if ( cq==NULL || *cq !='\0' ) {
+ cp = N_("Enter a 8 digit numeric date (yyyymmdd)");
+ ok = FALSE;
+ } else {
+ if ( strlen(cp) != 8 || valL == 0) {
+ cp = N_("Enter a 8 digit numeric date (yyyymmdd)");
+ ok = FALSE;
} else if ( valL < 19000101 || valL > 21991231 ) {
cp = N_("Enter a date between 19000101 and 21991231");
+ ok = FALSE;
} else {
d = valL % 100;
m = (valL / 100) % 100;
if ( m < 1 || m > 12 ) {
cp = N_("Invalid month");
+ ok = FALSE;
} else if ( d < 1 || d > 31 ) {
cp = N_("Invalid day");
+ ok = FALSE;
} else {
cp = NULL;
}
}
}
- if ( cp ) {
- valL = 0;
+ if ( !ok ) {
+ valL = -1;
}
} else {
cp = NULL;
valL = 0;
}
- wControlSetBalloon( pg->paramPtr[inx].control, 0, -5, _(cp) );
- *(long*)(pg->paramPtr[inx].context) = valL;
+ CarDlgError( ok, &pg->paramPtr[inx], cp );
+ if (inx == I_CD_PURDAT) {
+ carDlgPurchDate = valL;
+ } else {
+ carDlgServiceDate = valL;
+ }
break;
case I_CD_TYPE_LIST:
@@ -3814,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;
}
@@ -3828,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;
@@ -3866,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;
@@ -3876,42 +4180,12 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
ParamLoadControl( &carDlgPG, I_CD_TRKOFFSET );
}
- ok = FALSE;
- if ( S_PROTO && carDlgProtoStr[0] == '\0' )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Enter a Prototype name") );
- else 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_PART && carDlgPartnoStr[0] == '\0' )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Enter a Part Number") );
- else if ( carDlgDim.carLength <= 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Enter the Car Length") );
- else if ( carDlgDim.carWidth <= 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Enter the Car Width") );
- else if ( carDlgDim.truckCenter <= 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Enter the Truck Centers") );
- else if ( carDlgDim.truckCenterOffset < 0)
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Truck Center Offset must be greater than 0 or 0") );
- else if ( carDlgDim.truckCenter >= carDlgDim.carLength )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Truck Centers must be less than Car Length") );
- else if ( 2*carDlgDim.truckCenterOffset > carDlgDim.carLength - carDlgDim.truckCenter)
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Truck Center Offset plus Truck Centers must be less than Car Length") );
- else if ( (!S_PROTO) && ( carDlgDim.coupledLength <= 0 || carDlgCouplerLength <= 0 ) )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Enter the Coupled Length or Coupler Length") );
- else if ( S_PROTO && carDlgDim.coupledLength <= 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Enter the Coupled Length") );
- else if ( S_ITEM && carDlgItemIndex <= 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Enter a item Index") );
- else if ( S_ITEM && carDlgPurchPrice < 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Purchase Price is not valid") );
- else if ( S_ITEM && carDlgCurrPrice < 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Current Price is not valid") );
- else if ( S_ITEM && carDlgPurchDate < 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Purchase Date is not valid") );
- else if ( S_ITEM && carDlgServiceDate < 0 )
- ParamLoadMessage( &carDlgPG, I_CD_MSG, _("Service Date is not valid") );
- 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;
@@ -3920,8 +4194,9 @@ LOG( log_carDlgState, 3, ( "CarDlgUpdate( %d )\n", inx ) )
ok = TRUE;
}
- if ( redraw )
- CarDlgRedraw();
+ if ( redraw ) {
+ CarDlgRedraw( carDlgD.d, NULL, 0, 0 );
+ }
ParamDialogOkActive( pg, ok );
}
@@ -3952,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;
}
@@ -3966,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" );
}
@@ -3978,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 );
@@ -3991,7 +4269,7 @@ static void CarDlgClose( wWin_p win )
}
-static void CarDlgOk( void * junk )
+static void CarDlgOk( void * unused )
{
long options = 0;
int len;
@@ -4000,25 +4278,27 @@ static void CarDlgOk( void * junk )
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;
- char *oldLocale = NULL;
-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 ) {
+ if ( carDlgDim.carLength <= carDlgDim.carWidth ||
+ carDlgDim.truckCenter >= carDlgDim.carLength ) {
NoticeMessage( MSG_CARDESC_BAD_DIM_VALUE, _("Ok"), NULL );
return;
}
@@ -4027,33 +4307,50 @@ 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_PROTO) && carDlgCouplerMount != 0 )
+ if ( S_ITEM && (carDlgPurchDate<0 || carDlgServiceDate<0 || carDlgPurchPrice <0
+ || carDlgCurrPrice<0)) { return; }
+
+ if ( S_PROTO && carDlgProtoStr[0] == '\0' ) { return; }
+
+ if ( S_PART && (carDlgManufStr[0] == '\0' || carDlgPartnoStr[0] == '\0')) { return; }
+
+ if ( S_ITEM && carDlgItemIndex <= 0 ) { return; }
+
+ 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, strlen(carDlgManufStr), carDlgPartnoStr, 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") ) ) {
- oldLocale = SaveLocale("C");
+ SetCLocale();
CarPartWrite( f, partP );
fclose(f);
- RestoreLocale(oldLocale);
+ SetUserLocale();
}
}
}
@@ -4062,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++;
@@ -4076,16 +4373,19 @@ 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 )
- itemP->data.notes = MyRealloc( itemP->data.notes, len+2 );
- else
- itemP->data.notes = MyMalloc( len+2 );
- itemP->data.notes = (char*)MyMalloc( len+2 );
+ if ( itemP->data.notes ) {
+ itemP->data.notes = MyRealloc( itemP->data.notes, (len+2) * sizeof(wchar_t) );
+ } 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' ) {
itemP->data.notes[len] = '\n';
@@ -4098,12 +4398,12 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
itemP->data.notes = NULL;
}
}
- if ( carDlgUpdateItemPtr==NULL )
+ if ( carDlgUpdateItemPtr==NULL ) {
CarInvListAdd( itemP );
- else
+ } else {
CarInvListUpdate( itemP );
- changed++;
- SetWindowTitle();
+ }
+ SetFileChanged();
reloadRoadnameList = TRUE;
if ( carDlgUpdateItemPtr==NULL ) {
if ( carDlgQuantity > 1 ) {
@@ -4115,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 );
@@ -4127,47 +4427,58 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
carDlgRepmarkStr[0] = '\0';
}
if ( carDlgUpdatePartPtr==NULL ) {
- partP = CarPartFind( carDlgManufStr, strlen(carDlgManufStr), carDlgPartnoStr, 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") ) ) {
- oldLocale = SaveLocale("C");
- CarPartWrite( f, carDlgNewPartPtr );
- fclose(f);
- RestoreLocale(oldLocale);
+ SetCLocale();
+ CarPartWrite( f, carDlgNewPartPtr );
+ fclose(f);
+ 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") ) ) {
- oldLocale = SaveLocale("C");
+ SetCLocale();
CarProtoWrite( f, carDlgNewProtoPtr );
fclose(f);
- RestoreLocale(oldLocale);
+ 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 ) {
tabs[0].ptr = carDlgRoadnameStr;
- tabs[0].len = strlen(carDlgRoadnameStr);
+ tabs[0].len = (int)strlen(carDlgRoadnameStr);
tabs[1].ptr = carDlgRepmarkStr;
- tabs[1].len = strlen(carDlgRepmarkStr);
+ tabs[1].len = (int)strlen(carDlgRepmarkStr);
LoadRoadnameList( &tabs[0], &tabs[1] );
CarDlgLoadRoadnameList();
ParamLoadControl( &carDlgPG, I_CD_ROADNAME_LIST );
@@ -4182,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 );
@@ -4203,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 );
@@ -4225,14 +4538,14 @@ LOG( log_carDlgState, 3, ( "CarDlgOk()\n" ) )
static void CarDlgLayout(
- paramData_t * pd,
- int inx,
- wPos_t currX,
- wPos_t *xx,
- wPos_t *yy )
+ paramData_t * pd,
+ int inx,
+ wWinPix_t currX,
+ wWinPix_t *xx,
+ wWinPix_t *yy )
{
- static wPos_t col2pos = 0;
- wPos_t y0, y1;
+ static wWinPix_t col2pos = 0;
+ wWinPix_t y0, y1;
switch (inx) {
case I_CD_PROTOTYPE_STR:
@@ -4247,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:
@@ -4281,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, (void*)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, (void*)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, (void*)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 );
}
@@ -4314,6 +4638,9 @@ static void DoCarPartDlg( carDlgAction_e *actions )
carDlgScaleInx = GetLayoutCurScale();
carDlgFlipToggle = FALSE;
carDlgChanged = 0;
+ for ( paramData_p p=carDlgPLs; p < carDlgPLs + COUNT( carDlgPLs ); p++ ) {
+ p->bInvalid = FALSE;
+ }
CarDlgDoStateActions( actions );
@@ -4349,28 +4676,31 @@ EXPORT void CarDlgAddDesc( void )
static wIndex_t carInvInx;
static wIndex_t carInvSort[] = { 0, 1, 2, 3 };
-#define N_SORT (sizeof carInvSort/sizeof carInvSort[0])
+#define N_SORT (COUNT( carInvSort ))
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 wPos_t carInvColumnWidths[] = {
- -40, 30, 100, -50, 50, 130, 120, 100,
- -50, -50, 60, 55, 55, 40, 200 };
+static wWinPix_t carInvColumnWidths[] = {
+ -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)
@@ -4384,56 +4714,61 @@ static char * sortOrders[] = {
#define S_CONDITION (10)
#define S_PURCHDATE (11)
#define S_SRVDATE (12)
-static paramListData_t carInvListData = { 30, 600, sizeof carInvColumnTitles/sizeof carInvColumnTitles[0], carInvColumnWidths, carInvColumnTitles };
+static paramListData_t carInvListData = { 30, 600, COUNT( carInvColumnTitles ), carInvColumnWidths, carInvColumnTitles };
static paramData_t carInvPLs[] = {
#define I_CI_SORT (0)
- { PD_DROPLIST, &carInvSort[0], "sort1", PDO_LISTINDEX|0, (void*)110, N_("Sort By") },
- { PD_DROPLIST, &carInvSort[1], "sort2", PDO_LISTINDEX|PDO_DLGHORZ, (void*)110, "" },
- { PD_DROPLIST, &carInvSort[2], "sort3", PDO_LISTINDEX|PDO_DLGHORZ, (void*)110, "" },
- { PD_DROPLIST, &carInvSort[3], "sort4", PDO_LISTINDEX|PDO_DLGHORZ, (void*)110, "" },
+ { PD_DROPLIST, &carInvSort[0], "sort1", PDO_LISTINDEX|0, I2VP(110), N_("Sort By") },
+ { PD_DROPLIST, &carInvSort[1], "sort2", PDO_LISTINDEX|PDO_DLGHORZ, I2VP(110), "" },
+ { PD_DROPLIST, &carInvSort[2], "sort3", PDO_LISTINDEX|PDO_DLGHORZ, I2VP(110), "" },
+ { PD_DROPLIST, &carInvSort[3], "sort4", PDO_LISTINDEX|PDO_DLGHORZ, I2VP(110), "" },
#define S (4)
#define I_CI_LIST (S+0)
{ PD_LIST, &carInvInx, "list", PDO_LISTINDEX|PDO_DLGRESIZE|PDO_DLGNOLABELALIGN|PDO_DLGRESETMARGIN, &carInvListData, NULL, BO_READONLY|BL_MANY },
#define I_CI_EDIT (S+1)
- { PD_BUTTON, (void*)CarInvDlgEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit") },
+ { PD_BUTTON, CarInvDlgEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit") },
#define I_CI_ADD (S+2)
- { PD_BUTTON, (void*)CarInvDlgAdd, "add", 0, NULL, N_("Add"), 0, 0 },
+ { PD_BUTTON, CarInvDlgAdd, "add", 0, NULL, N_("Add"), 0, 0 },
#define I_CI_DELETE (S+3)
- { PD_BUTTON, (void*)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, (void*)CarInvDlgImportCsv, "import", PDO_DLGWIDE, NULL, N_("Import") },
+ { PD_BUTTON, CarInvDlgImportCsv, "import", PDO_DLGWIDE, NULL, N_("Import") },
#define I_CI_EXPORT_CSV (S+5)
- { PD_BUTTON, (void*)CarInvDlgExportCsv, "export", 0, NULL, N_("Export") },
+ { PD_BUTTON, CarInvDlgExportCsv, "export", 0, NULL, N_("Export") },
#define I_CI_PRINT (S+6)
- { PD_BUTTON, (void*)CarInvDlgSaveText, "savetext", 0, NULL, N_("List") } };
-static paramGroup_t carInvPG = { "carinv", 0, carInvPLs, sizeof carInvPLs/sizeof carInvPLs[0] };
+ { 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 );
}
-static void CarInvDlgFind( void * junk )
+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 ) );
- PanHere( (void*)0 ); // CarInvDlgFind
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere( I2VP(0) ); // CarInvDlgFind
}
@@ -4451,56 +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--;
- }
- changed++;
- SetWindowTitle();
+ }
+ 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;
@@ -4510,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;
}
@@ -4525,36 +4901,41 @@ static int CarInvSaveText(
item = carItemInfo(inx);
TabStringExtract( item->title, 7, tabs );
sprintf( message, "%ld", item->index );
- width = strlen( message );
- if ( width > widths[0] ) widths[0] = width;
- width = 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 = (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; }
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 = strlen(message);
- if ( width > widths[5] ) widths[5] = width;
+ width = (int)strlen(message);
+ 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 = strlen(message);
- if ( width > widths[7] ) widths[7] = width;
+ width = (int)strlen(message);
+ 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++ ) {
@@ -4563,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 ) {
@@ -4587,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], " " );
}
@@ -4614,15 +4999,17 @@ static int CarInvSaveText(
while ( 1 ) {
cp1 = strchr( cp0, '\n' );
if ( cp1 ) {
- len = cp1-cp0;
+ len = (int)(cp1-cp0);
} else {
- len = strlen( cp0 );
- if ( len == 0 )
+ len = (int)strlen( cp0 );
+ 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;
}
}
@@ -4637,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)
@@ -4674,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;
@@ -4692,7 +5080,7 @@ static int ParseCsvLine(
}
elem = 0;
while ( *cp && elem < max_elem ) {
- while ( *cp == ' ' ) cp++;
+ while ( *cp == ' ' ) { cp++; }
if ( *cp == ',' ) {
ptr = "";
len = 0;
@@ -4708,24 +5096,24 @@ static int ParseCsvLine(
*cq++ = *cp++;
}
cp++;
- if ( *cp!='"' ) break;
+ if ( *cp!='"' ) { break; }
*cq++ = *cp++;
}
if ( *cp && *cp != ',' ) {
rc = NoticeMessage( MSG_CARIMP_MISSING_COMMA, _("Continue"), _("Stop"), ptr );
return (rc<1)?-1:elem;
}
- len = cq-ptr;
+ len = (int)(cq-ptr);
} else {
ptr = cp;
while ( *cp && *cp != ',' ) { cp++; }
- len = cp-ptr;
+ 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;
@@ -4733,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;
@@ -4752,48 +5140,50 @@ static int CarInvImportCsv(
SCALEINX_T scale;
carPart_p partP;
int requiredCols;
- char *oldLocale = NULL;
- 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;
}
- oldLocale = SaveLocale("C");
+ SetCLocale();
if ( fgets( message, sizeof message, f ) == NULL ) {
NoticeMessage( MSG_CARIMP_NO_DATA, _("Continue"), NULL );
fclose( f );
- RestoreLocale(oldLocale);
+ 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 );
- RestoreLocale(oldLocale);
+ 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<sizeof carCsvColumnTitles/sizeof carCsvColumnTitles[0]; j++ ) {
+ 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 );
- RestoreLocale(oldLocale);
+ SetUserLocale();
return FALSE;
}
map[i] = j;
- /*j = sizeof carCsvColumnTitles/sizeof carCsvColumnTitles[0];*/
- if ( j == M_SCALE || j == M_PROTO || j == M_MANUF || j == M_PARTNO )
+ /*j = COUNT( carCsvColumnTitles );*/
+ if ( j == M_SCALE || j == M_PROTO || j == M_MANUF || j == M_PARTNO ) {
requiredCols++;
+ }
}
}
if ( map[i] == -1 ) {
@@ -4805,12 +5195,12 @@ static int CarInvImportCsv(
if ( requiredCols != 4 ) {
NoticeMessage( MSG_CARIMP_MISSING_COLUMNS, _("Continue"), NULL );
fclose( f );
- RestoreLocale(oldLocale);
+ SetUserLocale();
return FALSE;
}
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] = ',';
@@ -4830,12 +5220,13 @@ 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 );
- RestoreLocale(oldLocale);
+ SetUserLocale();
return FALSE;
}
continue;
@@ -4848,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; }
@@ -4857,12 +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; }
cp = TabStringCpy( title, &tabs[M_MANUF] );
*cp++ = '\t';
cp = TabStringCpy( cp, &tabs[M_PROTO] );
@@ -4885,20 +5279,21 @@ 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 );
- RestoreLocale(oldLocale);
+ SetUserLocale();
return FALSE;
}
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+1 );
+ item->data.notes = cp = MyMalloc( (tabs[M_NOTES].len+2) );
for ( cq=tabs[M_NOTES].ptr,len=tabs[M_NOTES].len; *cq&&len; ) {
if ( strncmp( cq, "<NL>", 4 ) == 0 ) {
*cp++ = '\n';
@@ -4910,11 +5305,10 @@ static int CarInvImportCsv(
}
}
}
- changed++;
- SetWindowTitle();
+ SetFileChanged();
}
fclose( f );
- RestoreLocale(oldLocale);
+ SetUserLocale();
CarInvListLoad();
return TRUE;
}
@@ -4926,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>" );
@@ -4956,61 +5351,65 @@ 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;
long inx;
tabString_t tabs[7];
char * sp;
- char *oldLocale = NULL;
- 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;
}
- oldLocale = SaveLocale("C");
+ SetCLocale();
- for ( inx=0; inx<sizeof carCsvColumnTitles/sizeof carCsvColumnTitles[0]; inx++ ) {
- CsvFormatString( f, carCsvColumnTitles[inx], strlen(carCsvColumnTitles[inx]), inx<(sizeof carCsvColumnTitles/sizeof carCsvColumnTitles[0])-1?",":"\n" );
+ for ( inx=0; inx<COUNT( carCsvColumnTitles ); inx++ ) {
+ CsvFormatString( f, carCsvColumnTitles[inx],
+ (int)strlen(carCsvColumnTitles[inx]),
+ inx<(COUNT( carCsvColumnTitles ))-1?",":"\n" );
}
for ( inx=0; inx<carItemInfo_da.cnt; inx++ ) {
item = carItemInfo( inx );
TabStringExtract( item->title, 7, tabs );
CsvFormatLong( f, item->index, "," );
sp = GetScaleName(item->scaleInx);
- CsvFormatString( f, sp, strlen(sp), "," );
+ CsvFormatString( f, sp, (int)strlen(sp), "," );
CsvFormatString( f, tabs[T_MANUF].ptr, tabs[T_MANUF].len, "," );
CsvFormatLong( f, item->type, "," );
CsvFormatString( f, tabs[T_PART].ptr, tabs[T_PART].len, "," );
@@ -5022,8 +5421,8 @@ static int CarInvExportCsv(
CsvFormatLong( f, item->options, "," );
CsvFormatFloat( f, item->dim.carLength, 3, "," );
CsvFormatFloat( f, item->dim.carWidth, 3, "," );
- CsvFormatFloat( f, item->dim.truckCenterOffset, 3, ",");
CsvFormatFloat( f, item->dim.coupledLength, 3, "," );
+ CsvFormatFloat( f, item->dim.truckCenterOffset, 3, ",");
CsvFormatFloat( f, item->dim.truckCenter, 3, "," );
CsvFormatLong( f, wDrawGetRGB(item->color), "," );
CsvFormatFloat( f, item->data.purchPrice, 2, "," );
@@ -5031,13 +5430,14 @@ static int CarInvExportCsv(
CsvFormatLong( f, item->data.condition, "," );
CsvFormatLong( f, item->data.purchDate, "," );
CsvFormatLong( f, item->data.serviceDate, "," );
- if ( item->data.notes )
- CsvFormatString( f, item->data.notes, strlen(item->data.notes), "\n" );
- else
- CsvFormatString( f, "", strlen(""), "\n" );
+ if ( item->data.notes ) {
+ CsvFormatString( f, item->data.notes, (int)strlen(item->data.notes), "\n" );
+ } else {
+ CsvFormatString( f, "", (int)strlen(""), "\n" );
+ }
}
fclose( f );
- RestoreLocale(oldLocale);
+ SetUserLocale();
return TRUE;
}
@@ -5045,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;
@@ -5074,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;
@@ -5127,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);
@@ -5174,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++ ) {
@@ -5184,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 );
@@ -5239,7 +5669,7 @@ static void CarInvListAdd(
static void CarInvListUpdate(
- carItem_p item )
+ carItem_p item )
{
CarInvListLoad();
carInvInx = (wIndex_t)CarItemFindIndex( item );
@@ -5249,14 +5679,17 @@ static void CarInvListUpdate(
}
-EXPORT void DoCarDlg( void )
+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<sizeof sortOrders/sizeof sortOrders[0]; inx2++ ) {
- wListAddValue( (wList_p)carInvPLs[inx].control, _(sortOrders[inx2]), NULL, NULL );
+ for ( inx2=0; inx2<COUNT( sortOrders ); inx2++ ) {
+ wListAddValue( (wList_p)carInvPLs[inx].control, _(sortOrders[inx2]), NULL,
+ NULL );
ParamLoadControl( &carInvPG, inx );
}
}
@@ -5270,7 +5703,6 @@ EXPORT void DoCarDlg( void )
static void CarDlgChange( long changes )
{
if ( (changes&CHANGE_SCALE) ) {
- carPartChangeLevel = 0;
carDlgCouplerLength = 0.0;
}
}
@@ -5279,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 );
}
@@ -5340,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;
@@ -5353,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;
@@ -5366,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;
@@ -5383,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 ) {
@@ -5393,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;
@@ -5404,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;
@@ -5423,27 +5855,31 @@ 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, (void*)partP );
+ }
+ 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, (void*)carProtoP );
+ CustMgmLoad( carprotoI, CarProtoCustMgmProc, carProtoP );
}
}
}
diff --git a/app/bin/dcmpnd.c b/app/bin/dcmpnd.c
index 93e73ac..9b7dfcc 100644
--- a/app/bin/dcmpnd.c
+++ b/app/bin/dcmpnd.c
@@ -17,23 +17,19 @@
*
* 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 <ctype.h>
-#include <string.h>
-
#include "compound.h"
#include "cundo.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "include/paramfile.h"
#include "shrtpath.h"
#include "track.h"
-#include "utility.h"
+#include "trkendpt.h"
+#include "common-ui.h"
/*****************************************************************************
*
@@ -47,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 )
@@ -68,30 +64,35 @@ static paramData_t updateTitlePLs[] = {
{ PD_MESSAGE, "You can use the List Labels control on the Preferences dialog to" },
{ PD_MESSAGE, "control the format of the list entries" },
#define I_UPDATESTR (9)
- { PD_STRING, NULL, "old", PDO_NOPREF, (void*)400, NULL, BO_READONLY },
+ { PD_STRING, NULL, "old", PDO_NOPREF, I2VP(400), NULL, BO_READONLY },
#define I_UPDATELIST (10)
#define updateTitleL ((wList_p)updateTitlePLs[I_UPDATELIST].control)
- { PD_DROPLIST, NULL, "sel", PDO_NOPREF, (void*)400 },
- { PD_BUTTON, (void*)UpdateTitleIgnore, "ignore", PDO_DLGCMDBUTTON, NULL, N_("Ignore") },
+ { 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") } };
-static paramGroup_t updateTitlePG = { "updatetitle", 0, updateTitlePLs, sizeof updateTitlePLs/sizeof updateTitlePLs[0] };
+ { 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;
}
@@ -102,7 +103,7 @@ static void UpdateTitleNext( void )
wIndex_t inx;
wIndex_t cnt;
track_p trk;
- struct extraData *xx;
+ struct extraDataCompound_t *xx;
updateTitleInx++;
if (updateTitleInx >= updateTitles_da.cnt) {
wHide( updateTitleW );
@@ -112,11 +113,12 @@ static void UpdateTitleNext( void )
trk = NULL;
while (TrackIterate( &trk ) ) {
InfoCount(cnt++);
- if (GetTrkType(trk) == T_TURNOUT || GetTrkType(trk) == T_STRUCTURE) {
- xx = GetTrkExtraData(trk);
+ TRKTYP_T trkType = GetTrkType(trk);
+ if (trkType == T_TURNOUT || trkType == T_STRUCTURE) {
+ 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,14 +128,15 @@ static void UpdateTitleNext( void )
DYNARR_RESET( updateTitleElement, updateTitles_da );
InfoMessage("");
InfoCount( trackCount );
- changed++;
- SetWindowTitle();
+ SetFileChanged();
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 );
+ }
}
@@ -165,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 = (void*)ParamFilesInit();
- updateTitleW = ParamCreateDialog( &updateTitlePG, MakeWindowTitle(_("Update Title")), _("Update"), UpdateTitleUpdate, UpdateTitleCancel, TRUE, NULL, 0, NULL );
+ updateTitlePLs[I_UPDATELOAD].valueP = ParamFilesInit();
+ updateTitleW = ParamCreateDialog( &updateTitlePG,
+ MakeWindowTitle(_("Update Title")), _("Update"), UpdateTitleUpdate,
+ UpdateTitleCancel, TRUE, NULL, 0, NULL );
RegisterChangeNotification( UpdateTitleChange );
}
updateTitleInx = -1;
@@ -181,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;
@@ -195,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;
@@ -211,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 extraData *xx = GetTrkExtraData(trk);
+
+ struct extraDataCompound_t *xx = GET_EXTRA_DATA(trk, T_TURNOUT,
+ extraDataCompound_t);
coOrd pos;
DIST_T d;
ANGLE_T a, a2;
@@ -226,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;
@@ -248,17 +261,17 @@ static BOOL_T CheckCompoundEndPoint(
int refreshCompoundCnt;
static BOOL_T RefreshCompound1(
- track_p trk,
- turnoutInfo_t * to )
+ track_p trk,
+ turnoutInfo_t * to )
{
- struct extraData *xx = GetTrkExtraData(trk);
EPINX_T ep, epCnt;
BOOL_T ok;
BOOL_T flip = FALSE;
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;
@@ -269,35 +282,36 @@ 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);
FreeFilledDraw( xx->segCnt, xx->segs );
MyFree( xx->segs );
xx->segCnt = to->segCnt;
xx->segs = (trkSeg_p)MyMalloc( xx->segCnt * sizeof *(trkSeg_p)0 );
memcpy( xx->segs, to->segs, xx->segCnt * sizeof *(trkSeg_p)0 );
- MyFree( xx->paths);
- xx->paths = (signed char*)MyMalloc( to->pathLen * sizeof *xx->paths );
- memcpy( xx->paths, to->paths, to->pathLen * sizeof *xx->paths );
- xx->pathLen = to->pathLen;
- xx->pathCurr = xx->paths;
- if ( flip )
+ xx->pathOverRide = to->pathOverRide;
+ xx->pathNoCombine = to->pathNoCombine;
+ SetPaths( trk, GetParamPaths(to) );
+ if ( flip ) {
FlipSegs( xx->segCnt, xx->segs, zero, 90.0 );
+ }
ClrTrkBits( trk, TB_SELECTED );
refreshCompoundCnt++;
CloneFilledDraw( xx->segCnt, xx->segs, FALSE );
@@ -306,51 +320,52 @@ 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;
static BOOL_T refreshReturnVal;
-static void RefreshSkip( void * );
+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*/, (void*)380 },
+ { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, I2VP(380) },
#define REFRESH_M2 (1)
- { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, (void*)380 },
+ { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, I2VP(380) },
#define REFRESH_S (2)
- { PD_MESSAGE, NULL, NULL, 0/*PDO_DLGRESIZEW*/, (void*)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, (void*)RefreshSkip, "skip", PDO_DLGCMDBUTTON, NULL, N_("Skip") } };
-static paramGroup_t refreshSpecialPG = { "refreshSpecial", 0, refreshSpecialPLs, sizeof refreshSpecialPLs/sizeof refreshSpecialPLs[0] };
+ { 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 extraData *xx;
+ struct extraDataCompound_t *xx;
int inx;
turnoutInfo_t *to;
SCALEINX_T scale;
@@ -360,27 +375,29 @@ 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);
- xx = GetTrkExtraData(trk);
scale = GetTrkScale(trk);
if ( trkType != T_TURNOUT && trkType != T_STRUCTURE ) {
ClrTrkBits( trk, TB_SELECTED );
return TRUE;
}
+ xx = GET_EXTRA_DATA(trk, trkType, extraDataCompound_t);
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 &&
- 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 );
@@ -391,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 );
@@ -424,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 );
@@ -437,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:") );
}
}
@@ -453,14 +480,15 @@ static char renamePartno[STR_SIZE];
static turnoutInfo_t * renameTo;
static paramData_t renamePLs[] = {
-/*0*/ { PD_STRING, renameManuf, "manuf", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("Manufacturer"), 0, 0, sizeof(renameManuf)},
-/*1*/ { PD_STRING, renameDesc, "desc", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)230, N_("Description"), 0, 0, sizeof(renameDesc)},
-/*2*/ { PD_STRING, renamePartno, "partno", PDO_NOPREF|PDO_DLGHORZ|PDO_DLGIGNORELABELWIDTH | PDO_STRINGLIMITLENGTH, (void*)100, N_("#"), 0, 0, sizeof(renamePartno)} };
-static paramGroup_t renamePG = { "rename", 0, renamePLs, sizeof renamePLs/sizeof renamePLs[0] };
+ /*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;
@@ -469,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, to->paths, 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 );
}
}
@@ -492,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 );
@@ -501,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;
@@ -513,18 +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, to->paths, 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;
@@ -539,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:
@@ -565,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/struct.xpm"
+#include "bitmaps/turnout.xpm3"
+#include "bitmaps/building.xpm3"
EXPORT void CompoundCustMgmLoad( void )
{
@@ -582,21 +624,23 @@ EXPORT void CompoundCustMgmLoad( void )
static wIcon_p turnoutI = NULL;
static wIcon_p structI = NULL;
- if ( turnoutI == NULL )
- turnoutI = wIconCreatePixMap( turnout_xpm );
- if ( structI == NULL )
- structI = wIconCreatePixMap( struct_xpm );
+ 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);
if (to->paramFileIndex == PARAM_CUSTOM && to->segCnt > 0) {
- CustMgmLoad( turnoutI, CompoundCustMgmProc, (void*)to );
+ CustMgmLoad( turnoutI, CompoundCustMgmProc, to );
}
}
for ( inx=0; inx<structureInfo_da.cnt; inx++ ) {
to = structureInfo(inx);
if (to->paramFileIndex == PARAM_CUSTOM && to->segCnt > 0) {
- CustMgmLoad( structI, CompoundCustMgmProc, (void*)to );
+ CustMgmLoad( structI, CompoundCustMgmProc, to );
}
}
}
@@ -608,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 19abefa..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,30 +52,18 @@
*
* 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$";
-
-#include <errno.h>
-#include <math.h>
-
-#ifdef WINDOWS
-#include <io.h>
-#define F_OK (0)
-#define W_OK (2)
-#define access _access
-#endif
+//static const char rcsid[] = "@(#) : $Id$";
#include "cundo.h"
#include "custom.h"
-#include "i18n.h"
#include "param.h"
#include "track.h"
-#include "wlib.h"
/*****************************************************************************
@@ -87,56 +75,57 @@ static const char rcsid[] = "@(#) : $Id$";
static void ControlEdit( void * action );
static void ControlDelete( void * action );
static void ControlDone( void * action );
-static wPos_t controlListWidths[] = { 18, 100, 150 };
+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)
#define controlSelL ((wList_p)controlPLs[I_CONTROLLIST].control)
{ PD_LIST, NULL, "inx", PDO_DLGRESETMARGIN|PDO_DLGRESIZE, &controlListData, NULL, BL_MANY },
#define I_CONTROLEDIT (1)
- { PD_BUTTON, (void*)ControlEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit") },
+ { PD_BUTTON, ControlEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit") },
#define I_CONTROLDEL (2)
- { PD_BUTTON, (void*)ControlDelete, "delete", 0, NULL, N_("Delete") },
- } ;
-static paramGroup_t controlPG = { "contmgm", 0, controlPLs, sizeof controlPLs/sizeof controlPLs[0] };
+ { 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 )
@@ -145,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 );
@@ -168,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 );
@@ -184,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 );
@@ -226,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;
@@ -260,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;
@@ -285,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();
}
@@ -295,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 39bd085..871787f 100644
--- a/app/bin/dcustmgm.c
+++ b/app/bin/dcustmgm.c
@@ -17,32 +17,18 @@
*
* 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 <errno.h>
-#include <string.h>
-
-#ifdef WINDOWS
-#include <io.h>
-#define F_OK (0)
-#define W_OK (2)
-#define access _access
-#else
-#include <unistd.h>
-#endif
-
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "paths.h"
#include "track.h"
-#include "wlib.h"
#include "include/paramfilelist.h"
-#ifdef WINDOWS
+#include "common-ui.h"
+#include "ctrain.h"
+#ifdef UTFCONVERT
#include "include/utf8convert.h"
#endif
@@ -55,57 +41,61 @@ static void CustomNewCar( void * action );
static const char * customTypes[] = { "Car Part", "Car Prototype", NULL };
static wIndex_t selectedType;
-static wPos_t customListWidths[] = { 18, 100, 30, 80, 220 };
+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, (void*)150, N_("Create a new ") },
-#define I_CUSTOMNEW (2)
- { PD_BUTTON, (void *)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, (void*)CustomEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit") },
+ { PD_BUTTON, CustomEdit, "edit", PDO_DLGCMDBUTTON, NULL, N_("Edit") },
#define I_CUSTOMDEL (4)
- { PD_BUTTON, (void*)CustomDelete, "delete", 0, NULL, N_("Delete") },
+ { PD_BUTTON, CustomDelete, "delete", 0, NULL, N_("Delete") },
#define I_CUSTOMCOPYTO (5)
- { PD_BUTTON, (void*)CustomExport, "export", 0, NULL, N_("Move To") },
- } ;
-static paramGroup_t customPG = { "custmgm", 0, customPLs, sizeof customPLs/sizeof customPLs[0] };
+ { 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 );
@@ -124,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 );
@@ -145,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 )
@@ -163,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 );
@@ -186,8 +183,9 @@ EXPORT FILE * customMgmF;
static char custMgmContentsStr[STR_SIZE];
static BOOL_T custMgmProceed;
static paramData_t custMgmContentsPLs[] = {
- { PD_STRING, custMgmContentsStr, "label", PDO_STRINGLIMITLENGTH, (void*)400, N_("Label"), 0, 0, sizeof(custMgmContentsStr)} };
-static paramGroup_t custMgmContentsPG = { "contents", 0, custMgmContentsPLs, sizeof custMgmContentsPLs/sizeof custMgmContentsPLs[0] };
+ { 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 )
{
@@ -197,22 +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;
- char *oldLocale = 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 ) {
@@ -224,43 +222,46 @@ 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 ] );
return FALSE;
}
- oldLocale = SaveLocale("C");
+ SetCLocale();
- if (rc == -1)
- {
- #ifdef WINDOWS
- 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 // WINDOWS
+#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 );
- RestoreLocale(oldLocale);
+ SetUserLocale();
return FALSE;
}
context->proc( CUSTMGM_DO_DELETE, context->data );
@@ -270,7 +271,7 @@ static int CustomDoExport(
cnt--;
}
fclose( customMgmF );
- RestoreLocale(oldLocale);
+ SetUserLocale();
LoadParamFile( 1, fileName, NULL );
DoChangeNotification( CHANGE_PARAMS );
return TRUE;
@@ -281,33 +282,32 @@ 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));
}
static void CustomDone( void * action )
{
- char *oldLocale = NULL;
FILE * f = OpenCustom("w");
if (f == NULL) {
wHide( customPG.win );
return;
}
- oldLocale = SaveLocale("C");
+ SetCLocale();
CompoundCustomSave(f);
CarCustomSave(f);
fclose(f);
- RestoreLocale(oldLocale);
+ SetUserLocale();
wHide( customPG.win );
}
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 );
@@ -324,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 );
@@ -355,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;
@@ -380,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();
}
@@ -389,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 );
}
@@ -412,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 d01f0df..4112c61 100644
--- a/app/bin/dease.c
+++ b/app/bin/dease.c
@@ -17,21 +17,22 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-#include <string.h>
-
+#include "common.h"
#include "ccurve.h"
#include "cjoin.h"
#include "cstraigh.h"
#include "custom.h"
-#include "i18n.h"
#include "fileio.h"
#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;
@@ -67,22 +68,24 @@ static void EasementCancel( void );
static char *easementChoiceLabels[] = { N_("None"), N_("Sharp"), N_("Normal"), N_("Broad"), N_("Cornu"), NULL };
static paramFloatRange_t r0n1_100 = { -1.0, 100.0, 60 };
static paramFloatRange_t r0_100 = { 0.0, 100.0, 60 };
+static paramFloatRange_t r0_200 = { 0.0, 200.0, 60 };
static paramFloatRange_t r0_10 = { 0.0, 10.0, 60 };
static long easeM;
static paramData_t easementPLs[] = {
#define I_EASEVAL (0)
{ PD_FLOAT, &easementVal, "val", PDO_NOPSHUPD, &r0n1_100, N_("Value") },
- { PD_FLOAT, &easeR, "r", PDO_DIM|PDO_DLGRESETMARGIN, &r0_100, N_("R"), BO_READONLY },
+ { PD_FLOAT, &easeR, "r", PDO_DIM|PDO_DLGRESETMARGIN, &r0_200, N_("R"), BO_READONLY },
{ 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 } };
-static paramGroup_t easementPG = { "easement", PGO_RECORD, easementPLs, sizeof easementPLs/sizeof easementPLs[0] };
+ { 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).
*/
@@ -103,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;
@@ -128,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;
@@ -156,28 +161,29 @@ static void SetEasement(
}
/*ParamChange( &easeValPD );*/
- if (easementB)
+ if (easementB) {
wButtonSetLabel( easementB, (char*)bm );
+ }
}
static void EasementOk( void )
{
ParamLoadData( &easementPG );
- SetEasement( easementVal, (void*)FALSE );
+ SetEasement( easementVal, I2VP(FALSE) );
wHide( easementW );
}
static void EasementCancel( void )
{
- SetEasement( easementVal = oldEasementVal, (void*)FALSE );
+ SetEasement( easementVal = oldEasementVal, I2VP(FALSE) );
wHide( easementW );
}
static void EasementSel(
- long arg )
+ long arg )
/*
* Handle transition-curve parameter selection.
*/
@@ -200,22 +206,22 @@ 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;
}
- SetEasement( val, (void*)FALSE );
+ SetEasement( val, I2VP(FALSE) );
}
static void EasementDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
switch (inx) {
case I_EASEVAL:
- SetEasement( *(FLOAT_T*)valueP, (void*)1 );
+ SetEasement( *(FLOAT_T*)valueP, I2VP(1) );
break;
case I_EASESEL:
EasementSel( *(long*)valueP );
@@ -225,26 +231,30 @@ static void EasementDlgUpdate(
static void LayoutEasementW(
- paramData_t * pd,
- int inx,
- wPos_t colX,
- wPos_t * x,
- wPos_t * y )
+ paramData_t * pd,
+ int inx,
+ wWinPix_t colX,
+ wWinPix_t * x,
+ wWinPix_t * y )
{
- 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 * junk )
+static void DoEasement( void * unused )
{
if (easementW == NULL) {
- easementW = ParamCreateDialog( &easementPG, MakeWindowTitle(_("Easement")), _("Ok"), (paramActionOkProc)EasementOk, (paramActionCancelProc)EasementCancel, TRUE, LayoutEasementW, 0, EasementDlgUpdate );
- SetEasement( easementVal, (void*)TRUE );
+ easementW = ParamCreateDialog( &easementPG, MakeWindowTitle(_("Easement")),
+ _("Ok"), (paramActionOkProc)EasementOk, (paramActionCancelProc)EasementCancel,
+ TRUE, LayoutEasementW, 0, EasementDlgUpdate );
+ SetEasement( easementVal, I2VP(TRUE) );
}
oldEasementVal = easementVal;
wShow( easementW );
- SetEasement( easementVal, (void*)TRUE );
+ SetEasement( easementVal, I2VP(TRUE) );
}
@@ -255,36 +265,37 @@ static void EasementChange( long changes )
{
if (changes&(CHANGE_SCALE|CHANGE_UNITS)) {
GetScaleEasementValues( Rvalues, Lvalues );
- SetEasement( easementVal, (void*)TRUE );
+ SetEasement( easementVal, I2VP(TRUE) );
}
}
-#include "bitmaps/enone.xpm"
-#include "bitmaps/esharp.xpm"
-#include "bitmaps/egtsharp.xpm"
-#include "bitmaps/eltsharp.xpm"
-#include "bitmaps/enormal.xpm"
-#include "bitmaps/eltbroad.xpm"
-#include "bitmaps/ebroad.xpm"
-#include "bitmaps/egtbroad.xpm"
-#include "bitmaps/ecornu.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( enone_xpm );
- eltsharp_bm = wIconCreatePixMap( eltsharp_xpm );
- esharp_bm = wIconCreatePixMap( esharp_xpm );
- egtsharp_bm = wIconCreatePixMap( egtsharp_xpm );
- enormal_bm = wIconCreatePixMap( enormal_xpm );
- eltbroad_bm = wIconCreatePixMap( eltbroad_xpm );
- ebroad_bm = wIconCreatePixMap( ebroad_xpm );
- egtbroad_bm = wIconCreatePixMap( egtbroad_xpm );
- ecornu_bm = wIconCreatePixMap( ecornu_xpm );
- easementB = AddToolbarButton( "cmdEasement", enone_bm, 0, (addButtonCallBack_t)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 b353627..bb87601 100644
--- a/app/bin/denum.c
+++ b/app/bin/denum.c
@@ -17,21 +17,15 @@
*
* 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 <string.h>
-#include <time.h>
-
#include "custom.h"
#include "fileio.h"
#include "layout.h"
-#include "i18n.h"
#include "param.h"
#include "paths.h"
#include "track.h"
-#include "utility.h"
static wWin_p enumW;
@@ -42,51 +36,57 @@ static wWin_p enumW;
#undef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
-static void DoEnumOp( void * );
+static void DoEnumOp( void * data );
static long enableListPrices;
+static long enableListIndexes;
static paramTextData_t enumTextData = { 80, 24 };
static char * priceLabels[] = { N_("Prices"), NULL };
+static char * indexLabels[] = { N_("Indexes"), NULL };
static paramData_t enumPLs[] = {
#define I_ENUMTEXT (0)
#define enumT ((wText_p)enumPLs[I_ENUMTEXT].control)
{ PD_TEXT, NULL, "text", PDO_DLGRESIZE, &enumTextData, NULL, BT_CHARUNITS|BT_FIXEDFONT },
- { PD_BUTTON, (void*)DoEnumOp, "save", PDO_DLGCMDBUTTON, NULL, N_("Save As ..."), 0, (void*)ENUMOP_SAVE },
- { PD_BUTTON, (void*)DoEnumOp, "print", 0, NULL, N_("Print"), 0, (void*)ENUMOP_PRINT },
- { PD_BUTTON, (void*)wPrintSetup, "printsetup", 0, NULL, N_("Print Setup"), 0, NULL },
+ { PD_BUTTON, DoEnumOp, "save", PDO_DLGCMDBUTTON, NULL, N_("Save As ..."), 0, I2VP(ENUMOP_SAVE) },
+ { PD_BUTTON, DoEnumOp, "print", 0, NULL, N_("Print"), 0, I2VP(ENUMOP_PRINT) },
+ { PD_BUTTON, wPrintSetup, "printsetup", 0, NULL, N_("Print Setup"), 0, NULL },
#define I_ENUMLISTPRICE (4)
- { PD_TOGGLE, &enableListPrices, "list-prices", PDO_DLGRESETMARGIN, priceLabels, NULL, BC_HORZ|BC_NOBORDER } };
-static paramGroup_t enumPG = { "enum", 0, enumPLs, sizeof enumPLs/sizeof enumPLs[0] };
+ { PD_TOGGLE, &enableListPrices, "list-prices", PDO_DLGRESETMARGIN, priceLabels, NULL, BC_HORZ|BC_NOBORDER },
+#define I_ENUMLISTINDEXES (5)
+ { PD_TOGGLE, &enableListIndexes, "list-indexes", PDO_DLGRESETMARGIN, indexLabels, NULL, BC_HORZ|BC_NOBORDER }
+};
+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( (int)(long)data ) {
+ switch( VP2L(data) ) {
case ENUMOP_SAVE:
wFilSelect( enumFile_fs, GetCurrentPath(PARTLISTPATHKEY) );
break;
@@ -101,12 +101,12 @@ static void DoEnumOp(
static void EnumDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- if ( inx != I_ENUMLISTPRICE ) return;
- EnumerateTracks();
+ if ( inx != I_ENUMLISTPRICE && inx != I_ENUMLISTINDEXES) { return; }
+ EnumerateTracks( NULL );
}
@@ -114,17 +114,18 @@ int enumerateMaxDescLen;
static FLOAT_T enumerateTotal;
void EnumerateList(
- long count,
- FLOAT_T price,
- char * desc )
+ long count,
+ FLOAT_T price,
+ char * desc,
+ char * indexes )
{
char * cp;
- int len;
+ size_t len;
sprintf( message, "%*ld | %s\n", count_utf8_chars(_("Count")), count, desc );
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,6 +135,9 @@ void EnumerateList(
sprintf( cp, " | %-*s |\n", (int) max( 7, count_utf8_chars( _("Each"))), " " );
}
}
+ if (enableListIndexes && indexes) {
+ sprintf( &message[strlen(message)], "%s -> %s \n", N_("Indexes"), indexes);
+ }
wTextAppend( enumT, message );
}
@@ -145,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 );
@@ -173,53 +179,59 @@ 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.
*/
void EnumerateEnd(void)
{
- int len;
+ 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, "-+-");
@@ -232,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 265485b..b0a2b23 100644
--- a/app/bin/directory.c
+++ b/app/bin/directory.c
@@ -17,30 +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 <errno.h>
-#include <string.h>
-
-#ifdef WINDOWS
- #include "include/dirent.h"
- #include <direct.h>
- #define unlink(a) _unlink((a))
- #define rmdir(a) _rmdir((a))
-#else
- #include <dirent.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #include <sys/types.h>
-#endif
-
-#include <wlib.h>
#include "directory.h"
#include "dynstring.h"
-#include "i18n.h"
-#include "messages.h"
#include "misc.h"
+#include "common-ui.h"
/*****************************************************************************
* Safe Create Dir
@@ -52,22 +35,18 @@
BOOL_T SafeCreateDir(const char *dir)
{
- int err;
-
-#ifdef WINDOWS
- err = _mkdir(dir);
-#else
- err = mkdir(dir, 0755);
-#endif
- 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;
}
/************************************************
@@ -80,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 352dbe1..92c58c4 100644
--- a/app/bin/dlayer.c
+++ b/app/bin/dlayer.c
@@ -1,1332 +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 <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <string.h>
-
-#include "custom.h"
-#include "dynstring.h"
-#include "fileio.h"
-#include "i18n.h"
-#include "layout.h"
-#include "messages.h"
-#include "param.h"
-#include "track.h"
-
-/*****************************************************************************
- *
- * LAYERS
- *
- */
-
-#define NUM_BUTTONS (99)
-#define LAYERPREF_FROZEN (1)
-#define LAYERPREF_ONMAP (2)
-#define LAYERPREF_VISIBLE (4)
-#define LAYERPREF_MODULE (8)
-#define LAYERPREF_SECTION ("Layers")
-#define LAYERPREF_NAME "name"
-#define LAYERPREF_COLOR "color"
-#define LAYERPREF_FLAGS "flags"
-
-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) */
- long objCount; /**< number of objects on layer */
-} layer_t;
-
-static layer_t layers[NUM_LAYERS];
-static layer_t *layers_save = NULL;
-
-
-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);
-static void UpdateLayerDlg(void);
-
-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);
-}
-
-BOOL_T GetLayerVisible(unsigned int layer)
-{
- if (!IsLayerValid(layer)) {
- return TRUE;
- } else {
- return layers[layer].visible;
- }
-}
-
-
-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
-}
-
-
-static void FlipLayer(unsigned int layer)
-{
- wBool_t visible;
-
- if (!IsLayerValid(layer)) {
- return;
- }
-
- if (layer == curLayer && layers[layer].visible) {
- 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) {
- wButtonSetBusy(layer_btns[layer], visible != 0);
- wButtonSetLabel(layer_btns[layer], (char *)show_layer_bmps[layer]);
- }
-
- RedrawLayer(layer, TRUE);
-}
-
-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;
- }
-
- curLayer = newLayer;
-
- if (!IsLayerValid(curLayer)) {
- curLayer = 0;
- }
-
- if (!layers[curLayer].visible) {
- FlipLayer(inx);
- }
-
- 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;
- }
-}
-
-char *
-FormatLayerName(unsigned int layerNumber)
-{
- DynString string;// = NaS;
- char *result;
- DynStringMalloc(&string, 0);
- DynStringPrintf(&string,
- "%2d %c %s",
- layerNumber + 1,
- (layers[layerNumber].objCount > 0 ? '+' : '-'),
- layers[layerNumber].name);
- result = strdup(DynStringToCStr(&string));
- DynStringFree(&string);
- return result;
-}
-
-
-#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[NUM_BUTTONS] = {
- l1_bits, l2_bits, l3_bits, l4_bits, l5_bits, l6_bits, l7_bits, l8_bits, l9_bits, l10_bits,
- l11_bits, l12_bits, l13_bits, l14_bits, l15_bits, l16_bits, l17_bits, l18_bits, l19_bits, l20_bits,
- l21_bits, l22_bits, l23_bits, l24_bits, l25_bits, l26_bits, l27_bits, l28_bits, l29_bits, l30_bits,
- l31_bits, l32_bits, l33_bits, l34_bits, l35_bits, l36_bits, l37_bits, l38_bits, l39_bits, l40_bits,
- l41_bits, l42_bits, l43_bits, l44_bits, l45_bits, l46_bits, l47_bits, l48_bits, l49_bits, l50_bits,
- l51_bits, l52_bits, l53_bits, l54_bits, l55_bits, l56_bits, l57_bits, l58_bits, l59_bits, l60_bits,
- l61_bits, l62_bits, l63_bits, l64_bits, l65_bits, l66_bits, l67_bits, l68_bits, l69_bits, l70_bits,
- l71_bits, l72_bits, l73_bits, l74_bits, l75_bits, l76_bits, l77_bits, l78_bits, l79_bits, l80_bits,
- l81_bits, l82_bits, l83_bits, l84_bits, l85_bits, l86_bits, l87_bits, l88_bits, l89_bits, l90_bits,
- l91_bits, l92_bits, l93_bits, l94_bits, l95_bits, l96_bits, l97_bits, l98_bits, l99_bits,
-};
-
-
-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 wDrawColor layerColor;
-static long layerUseColor = TRUE;
-static long layerVisible = TRUE;
-static long layerFrozen = FALSE;
-static long layerOnMap = TRUE;
-static long layerModule = FALSE;
-static void LayerOk(void *);
-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 paramData_t layerPLs[] = {
-#define I_LIST (0)
- { PD_DROPLIST, NULL, "layer", PDO_LISTINDEX|PDO_DLGNOLABELALIGN, (void*)250 },
-#define I_NAME (1)
- { PD_STRING, layerName, "name", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)(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_COUNT (8)
- { PD_STRING, NULL, "object-count", PDO_NOPREF|PDO_DLGBOXEND, (void*)(80), N_("Count"), BO_READONLY },
- { PD_MESSAGE, N_("Personal Preferences"), NULL, PDO_DLGRESETMARGIN, (void *)180 },
- { PD_BUTTON, (void*)DoLayerOp, "reset", PDO_DLGRESETMARGIN, 0, N_("Load"), 0, (void *)ENUMLAYER_RELOAD },
- { PD_BUTTON, (void*)DoLayerOp, "save", PDO_DLGHORZ, 0, N_("Save"), 0, (void *)ENUMLAYER_SAVE },
- { PD_BUTTON, (void*)DoLayerOp, "clear", PDO_DLGHORZ | PDO_DLGBOXEND, 0, N_("Defaults"), 0, (void *)ENUMLAYER_CLEAR },
- { PD_LONG, &newLayerCount, "button-count", PDO_DLGBOXEND|PDO_DLGRESETMARGIN, &i0_20, N_("Number of Layer Buttons") },
-};
-
-static paramGroup_t layerPG = { "layer", 0, layerPLs, sizeof layerPLs/sizeof layerPLs[0] };
-
-#define layerL ((wList_p)layerPLs[I_LIST].control)
-
-/**
- * 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].objCount = 0;
- 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);
- }
-
- /* 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 ((long)data) {
- case ENUMLAYER_CLEAR:
- InitializeLayers(LayerSystemDefaults, -1);
- break;
-
- case ENUMLAYER_SAVE:
- LayerPrefSave();
- break;
-
- case ENUMLAYER_RELOAD:
- LayerPrefLoad();
- break;
- }
-
- UpdateLayerDlg();
-
- if (layoutLayerChanged) {
- MainProc(mainW, wResize_e, NULL, NULL);
- layoutLayerChanged = FALSE;
- changed++;
- SetWindowTitle();
- }
-}
-
-/**
- * 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.
- */
-
-static void
-UpdateLayerDlg()
-{
- int inx;
- /* update the globals for the layer dialog */
- layerVisible = layers[curLayer].visible;
- layerFrozen = layers[curLayer].frozen;
- layerOnMap = layers[curLayer].onMap;
- layerModule = layers[curLayer].module;
- layerColor = layers[curLayer].color;
- layerUseColor = layers[curLayer].useColor;
- strcpy(layerName, layers[curLayer].name);
- layerCurrent = curLayer;
- /* now re-load the layer list boxes */
- LoadLayerLists();
- sprintf(message, "%ld", layers[curLayer].objCount);
- ParamLoadMessage(&layerPG, I_COUNT, message);
-
- /* force update of the 'manage layers' dialogbox */
- if (layerL) {
- ParamLoadControls(&layerPG);
- }
-
- /* finally show the layer buttons with ballon text */
- for (inx = 0; inx < NUM_BUTTONS; inx++) {
- 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, (void*)(long)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 */
- if (newCurrLayer != -1) {
- curLayer = newCurrLayer;
- }
-}
-
-/**
- * Save the customized layer information to preferences.
- */
-
-static void
-LayerPrefSave(void)
-{
- unsigned int inx;
- int flags;
- char buffer[ 80 ];
- 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] && inx != 0) ||
- layers[inx].frozen || (!layers[inx].onMap) || (!layers[inx].visible) ||
- 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;
- }
-
- sprintf(buffer, LAYERPREF_FLAGS ".%0u", inx);
- wPrefSetInteger(LAYERPREF_SECTION, buffer, flags);
-
- /* 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;
- 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);
- prefString = strtok(NULL, ",");
- }
- }
-}
-
-/**
- * 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();
-
- 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);
- }
-
- 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) {
- changed++;
- SetWindowTitle();
- }
-
- 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) {
- 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) {
- wButtonSetBusy(layer_btns[(int)layerCurrent], layerVisible);
- }
-
- 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;
-
- 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);
- layerVisible = layers[inx].visible;
- layerFrozen = layers[inx].frozen;
- layerOnMap = layers[inx].onMap;
- layerModule = layers[inx].module;
- layerColor = layers[inx].color;
- layerUseColor = layers[inx].useColor;
- sprintf(message, "%ld", layers[inx].objCount);
- ParamLoadMessage(&layerPG, I_COUNT, message);
- ParamLoadControls(&layerPG);
-}
-
-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].objCount = 0;
- 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 = 0;
- layerVisible = TRUE;
- layerFrozen = FALSE;
- layerOnMap = TRUE;
- layerModule = FALSE;
- layerColor = layers[0].color;
- layerUseColor = TRUE;
- strcpy(layerName, layers[0].name);
- 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();
- }
-
- 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 * junk)
-{
- 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;
- break;
- }
-}
-
-
-static void DoLayer(void * junk)
-{
- if (layerW == NULL) {
- layerW = ParamCreateDialog(&layerPG, MakeWindowTitle(_("Layers")), _("Done"),
- LayerOk, wHide, TRUE, NULL, 0, LayerDlgUpdate);
- }
-
- /* set the globals to the values for the current layer */
- UpdateLayerDlg();
- layerRedrawMap = FALSE;
- wShow(layerW);
- layoutLayerChanged = FALSE;
-}
-
-
-BOOL_T ReadLayers(char * line)
-{
- char * name;
- int inx, visible, frozen, color, onMap, module, dontUseColor, ColorFlags;
- 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 (layerL) {
- wListSetIndex(layerL, curLayer);
- }
-
- if (setLayerL) {
- wListSetIndex(setLayerL, curLayer);
- }
-
- return TRUE;
- }
-
- /* get the properties for a layer from the file and update the layer accordingly */
-
- if (!GetArgs(line, "dddduddd0q", &inx, &visible, &frozen, &onMap, &rgb, &module, &dontUseColor, &ColorFlags,
- &name)) {
- return FALSE;
- }
-
- if (paramVersion < 9) {
- if ((int)rgb < sizeof oldColorMap/sizeof oldColorMap[0]) {
- 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;
-
- colorTrack = ColorFlags&1; //Make sure globals are set
- colorDraw = ColorFlags&2;
-
- if (inx<NUM_BUTTONS) {
- 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].color !=
- layerColorTab[layerNumber % (COUNT(layerColorTab))] ||
- layers[layerNumber].name[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, 0,
- PutTitle(layers[inx].name));
- }
- }
-
- fprintf(f, "LAYERS CURRENT %u\n", curLayer);
- 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 (i = 0; i<NUM_BUTTONS; i++) {
- show_layer_bmps[i] = wIconCreateBitMap(l1_width, l1_height, show_layer_bits[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), 0,
- (addButtonCallBack_t)BackgroundToggleShow, NULL);
- wControlActive((wControl_p)backgroundB, FALSE);
-
- for (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, (wButtonCallBack_p)FlipLayer, (void*)(intptr_t)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, (void*)(long)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 3b9ed02..28010d4 100644
--- a/app/bin/doption.c
+++ b/app/bin/doption.c
@@ -17,23 +17,22 @@
*
* 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 <ctype.h>
-
#include "ccurve.h"
#include "cselect.h"
#include "custom.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
+#include "common-ui.h"
+#include "ctrain.h"
-static paramIntegerRange_t i0_64 = { 0, 64 };
-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 };
+static paramIntegerRange_t i1_1024 = { 1, 1024 };
static paramIntegerRange_t i0_10000 = { 0, 10000 };
static paramIntegerRange_t i0_99 = { 0, 99};
static paramIntegerRange_t i1_1000 = { 1, 1000 };
@@ -61,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 )
- changes |= (long)pg->paramPtr[inx].context;
+ if ( changed&1 ) {
+ changes |= VP2L(pg->paramPtr[inx].context);
+ }
}
return changes;
}
@@ -71,48 +71,10 @@ static paramGroup_t prefPG;
-static void OptionDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
-{
- if ( inx < 0 ) return;
- if ( pg->paramPtr[inx].valueP == &enableBalloonHelp ) {
- wEnableBalloonHelp((wBool_t)*(long*)valueP);
- } else {
- if (pg->paramPtr[inx].valueP == &units) {
- UpdatePrefD();
- }
- if (pg->paramPtr[inx].valueP == &distanceFormatInx) {
- UpdateMeasureFmt();
- }
- if (pg->paramPtr[inx].valueP == &showFlexTrack) {
- DoChangeNotification(CHANGE_PARAMS|CHANGE_TOOLBAR);
- }
- if (pg->paramPtr[inx].valueP == &checkPtInterval) {
- checkPtInterval = *(long *)valueP;
- if (checkPtInterval == 0 ) {
- wControlSetBalloon( pg->paramPtr[inx].control, 0, -5, _("Turning off AutoSave") );
- UpdateAutoSaveInterval(0);
- } else {
- wControlSetBalloon( pg->paramPtr[inx].control, 0, -5, NULL );
- }
- }
- if (pg->paramPtr[inx].valueP == &autosaveChkPoints) {
- autosaveChkPoints = *(long *)valueP;
- if (checkPtInterval == 0 && autosaveChkPoints>0 ) {
- wControlSetBalloon( pg->paramPtr[inx].control, 0, -5, _("Turning on CheckPointing") );
- UpdateChkPtInterval(10);
- } else {
- wControlSetBalloon( pg->paramPtr[inx].control, 0, -5, NULL );
- }
- }
- }
-}
static void OptionDlgCancel(
- wWin_p win )
+ wWin_p win )
{
wEnableBalloonHelp( (int)enableBalloonHelp );
wHide( win );
@@ -141,37 +103,37 @@ static char * colorDrawLabels[] = { N_("Object"), N_("Layer"), NULL };
static char * liveMapLabels[] = { N_("Live Map"), NULL };
static char * hideTrainsInTunnelsLabels[] = { N_("Hide Trains On Hidden Track"), NULL };
static char * constrainMainLabels[] = {N_("Constrain Drawing Area to Room boundaries"), NULL};
-
-extern long trainPause;
-
+static char * dontHideLabels[] = {N_("Don't Hide System Cursor when program cursor is active"), NULL};
static paramData_t displayPLs[] = {
- { PD_RADIO, &colorTrack, "color-track", PDO_NOPSHUPD|PDO_DRAW, colorTrackLabels, N_("Color Track"), BC_HORZ, (void*)(CHANGE_MAIN) },
- { PD_RADIO, &colorDraw, "color-draw", PDO_NOPSHUPD|PDO_DRAW, colorDrawLabels, N_("Color Draw"), BC_HORZ, (void*)(CHANGE_MAIN) },
- { PD_RADIO, &drawTunnel, "tunnels", PDO_NOPSHUPD|PDO_DRAW, drawTunnelLabels, N_("Draw Tunnel"), BC_HORZ, (void*)(CHANGE_MAIN) },
- { PD_RADIO, &drawEndPtV, "endpt", PDO_NOPSHUPD|PDO_DRAW, drawEndPtLabels3, N_("Draw EndPts"), BC_HORZ, (void*)(CHANGE_MAIN) },
- { PD_RADIO, &drawUnconnectedEndPt, "unconnected-endpt", PDO_NOPSHUPD|PDO_DRAW, drawEndPtUnconnectedSize, N_("Draw Unconnected EndPts"), BC_HORZ, (void*)(CHANGE_MAIN) },
- { PD_RADIO, &tieDrawMode, "tiedraw", PDO_NOPSHUPD|PDO_DRAW, tiedrawLabels, N_("Draw Ties"), BC_HORZ, (void*)(CHANGE_MAIN) },
- { PD_RADIO, &centerDrawMode, "centerdraw", PDO_NOPSHUPD|PDO_DRAW, drawCenterCircle, N_("Draw Centers"), BC_HORZ, (void*)(CHANGE_MAIN | CHANGE_MAP) },
- { PD_LONG, &twoRailScale, "tworailscale", PDO_NOPSHUPD, &i1_64, N_("Two Rail Scale"), 0, (void*)(CHANGE_MAIN) },
- { PD_LONG, &mapScale, "mapscale", PDO_NOPSHUPD, &i1_256, N_("Map Scale"), 0, (void*)(CHANGE_MAP) },
+ { PD_RADIO, &colorTrack, "color-track", PDO_NOPSHUPD|PDO_DRAW, colorTrackLabels, N_("Color Track"), BC_HORZ, I2VP(CHANGE_MAIN) },
+ { PD_RADIO, &colorDraw, "color-draw", PDO_NOPSHUPD|PDO_DRAW, colorDrawLabels, N_("Color Draw"), BC_HORZ, I2VP(CHANGE_MAIN) },
+ { PD_RADIO, &drawTunnel, "tunnels", PDO_NOPSHUPD|PDO_DRAW, drawTunnelLabels, N_("Draw Tunnel"), BC_HORZ, I2VP(CHANGE_MAIN) },
+ { PD_RADIO, &drawEndPtV, "endpt", PDO_NOPSHUPD|PDO_DRAW, drawEndPtLabels3, N_("Draw EndPts"), BC_HORZ, I2VP(CHANGE_MAIN) },
+ { PD_RADIO, &drawUnconnectedEndPt, "unconnected-endpt", PDO_NOPSHUPD|PDO_DRAW, drawEndPtUnconnectedSize, N_("Draw Unconnected EndPts"), BC_HORZ, I2VP(CHANGE_MAIN) },
+ { 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_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 },
- { PD_TOGGLE, &labelEnable, "labelenable", PDO_NOPSHUPD, labelEnableLabels, N_("Label Enable"), 0, (void*)(CHANGE_MAIN) },
- { PD_LONG, &labelScale, "labelscale", PDO_NOPSHUPD, &i0_64, N_("Label Scale"), 0, (void*)(CHANGE_MAIN) },
- { PD_LONG, &descriptionFontSize, "description-fontsize", PDO_NOPSHUPD, &i1_1000, N_("Label Font Size"), 0, (void*)(CHANGE_MAIN) },
- { PD_TOGGLE, &hotBarLabels, "hotbarlabels", PDO_NOPSHUPD, hotBarLabelsLabels, N_("Hot Bar Labels"), BC_HORZ, (void*)(CHANGE_TOOLBAR) },
- { PD_TOGGLE, &layoutLabels, "layoutlabels", PDO_NOPSHUPD, listLabelsLabels, N_("Layout Labels"), BC_HORZ, (void*)(CHANGE_MAIN) },
- { PD_TOGGLE, &listLabels, "listlabels", PDO_NOPSHUPD, listLabelsLabels, N_("List Labels"), BC_HORZ, (void*)(CHANGE_PARAMS) },
-/* ATTENTION: update the define below if you add entries above */
-#define I_HOTBARLABELS (18)
- { PD_DROPLIST, &carHotbarModeInx, "carhotbarlabels", PDO_NOPSHUPD|PDO_DLGUNDERCMDBUTT|PDO_LISTINDEX, (void*)250, N_("Car Labels"), 0, (void*)CHANGE_SCALE },
- { PD_LONG, &trainPause, "trainpause", PDO_NOPSHUPD, &i10_1000 , N_("Train Update Delay"), 0, 0 },
+#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 */
+#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_TOGGLE, &hideTrainsInTunnels, "hideTrainsInTunnels", PDO_NOPSHUPD, hideTrainsInTunnelsLabels, "", BC_HORZ }
- };
-static paramGroup_t displayPG = { "display", PGO_RECORD|PGO_PREFMISC, displayPLs, sizeof displayPLs/sizeof displayPLs[0] };
+};
+static paramGroup_t displayPG = { "display", PGO_RECORD|PGO_PREFMISC, displayPLs, COUNT( displayPLs ) };
static void DisplayOk( void * junk )
@@ -183,27 +145,75 @@ static void DisplayOk( void * junk )
}
-#ifdef LATER
-static void DisplayChange( long changes )
+static void OptionDlgUpdate(
+ paramGroup_p pg,
+ int inx,
+ void * valueP )
{
- if (changes & (CHANGE_SCALE|CHANGE_UNITS))
- if (displayW != NULL && wWinIsVisible(displayW) )
- ParamLoadControls( &displayPG );
-}
-#endif
+ if ( inx < 0 ) { return; }
+ if ( pg->paramPtr[inx].valueP == &enableBalloonHelp ) {
+ wEnableBalloonHelp((wBool_t)*(long*)valueP);
+ } else {
+ if (pg->paramPtr[inx].valueP == &labelEnable) {
+ long new_labels = wRadioGetValue( (wChoice_p)pg->paramPtr[inx].control );
+ labelEnable = new_labels;
+ ParamLoadControl(&displayPG,labelSelect);
+ }
+ if (pg->paramPtr[inx].valueP == &units) {
+ UpdatePrefD();
+ }
+ if (pg->paramPtr[inx].valueP == &distanceFormatInx) {
+ UpdateMeasureFmt();
+ }
+ if (pg->paramPtr[inx].valueP == &showFlexTrack) {
+ DoChangeNotification(CHANGE_PARAMS|CHANGE_TOOLBAR);
+ }
+ if (pg->paramPtr[inx].valueP == &checkPtInterval) {
+ 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") );
+ UpdateAutoSaveInterval(0);
+ } else {
+ wControlSetBalloon( pg->paramPtr[inx].control, 0, 0, NULL );
+ }
+ }
+ if (pg->paramPtr[inx].valueP == &autosaveChkPoints) {
+ 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") );
+ UpdateChkPtInterval(10);
+ } else {
+ wControlSetBalloon( pg->paramPtr[inx].control, 0, 0, NULL );
+ }
+
+ }
+ }
+}
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, (void*)0x0002 );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto/Manuf"), NULL, (void*)0x0012 );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto/Manuf/Part Number"), NULL, (void*)0x0312 );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Proto/Manuf/Partno/Item"), NULL, (void*)0x4312 );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Manuf/Proto"), NULL, (void*)0x0021 );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Manuf/Proto/Part Number"), NULL, (void*)0x0321 );
- wListAddValue( (wList_p)displayPLs[I_HOTBARLABELS].control, _("Manuf/Proto/Partno/Item"), NULL, (void*)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 );
@@ -241,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 },
@@ -249,8 +259,8 @@ 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, sizeof cmdoptPLs/sizeof cmdoptPLs[0] };
+};
+static paramGroup_t cmdoptPG = { "cmdopt", PGO_RECORD|PGO_PREFMISC, cmdoptPLs, COUNT( cmdoptPLs ) };
static void CmdoptOk( void * junk )
{
@@ -264,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 );
@@ -295,6 +307,7 @@ EXPORT addButtonCallBack_t CmdoptInit( void )
static wWin_p prefW;
static long displayUnits;
+static char * iconSizeLabels[] = { N_("16 px"), N_("24 px"), N_("32 px"), NULL };
static char * unitsLabels[] = { N_("English"), N_("Metric"), NULL };
static char * angleSystemLabels[] = { N_("Polar"), N_("Cartesian"), NULL };
static char * enableBalloonHelpLabels[] = { N_("Balloon Help"), NULL };
@@ -302,10 +315,12 @@ static char * enableFlexTrackLabels[] = { N_("Show FlexTrack in HotBar"), NULL }
static char * startOptions[] = { N_("Load Last Layout"), N_("Start New Layout"), NULL };
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 },
- { PD_RADIO, &units, "units", PDO_NOPSHUPD|PDO_NOUPDACT, unitsLabels, N_("Units"), BC_HORZ, (void*)(CHANGE_MAIN|CHANGE_UNITS) },
-#define I_DSTFMT (2)
- { PD_DROPLIST, &distanceFormatInx, "dstfmt", PDO_DIM|PDO_NOPSHUPD|PDO_LISTINDEX, (void*)150, N_("Length Format"), 0, (void*)(CHANGE_MAIN|CHANGE_UNITS) },
+#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) },
{ PD_FLOAT, &minLength, "minlength", PDO_DIM|PDO_SMALLDIM|PDO_NOPSHUPD, &r0o1_1, N_("Min Track Length") },
{ PD_FLOAT, &connectDistance, "connectdistance", PDO_DIM|PDO_SMALLDIM|PDO_NOPSHUPD, &r0o1_1, N_("Connection Distance"), },
{ PD_FLOAT, &connectAngle, "connectangle", PDO_NOPSHUPD, &r1_10, N_("Connection Angle") },
@@ -316,59 +331,61 @@ static paramData_t prefPLs[] = {
{ PD_LONG, &dragPixels, "dragpixels", PDO_NOPSHUPD|PDO_DRAW, &i1_1000, N_("Drag Distance") },
{ PD_LONG, &dragTimeout, "dragtimeout", PDO_NOPSHUPD|PDO_DRAW, &i1_1000, N_("Drag Timeout") },
{ PD_LONG, &minGridSpacing, "mingridspacing", PDO_NOPSHUPD|PDO_DRAW, &i1_100, N_("Min Grid Spacing"), 0, 0 },
-#define I_CHKPT (13)
+#define I_CHKPT (14)
{ PD_LONG, &checkPtInterval, "checkpoint", PDO_NOPSHUPD|PDO_FILE, &i0_10000, N_("Check Point Frequency") },
-#define I_AUTOSAVE (14)
+#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, sizeof prefPLs/sizeof prefPLs[0] };
+};
+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)
@@ -387,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, (void*)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 )
@@ -407,16 +426,18 @@ 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;
LoadDstFmtList();
distanceFormatInx = 0;
- for (inx = 0; inx < sizeof prefPLs / sizeof prefPLs[0]; inx++) {
+ for (inx = 0; inx < COUNT( prefPLs ); inx++) {
if ((prefPLs[inx].option&PDO_DIM)) {
ParamLoadControl(&prefPG, inx);
}
@@ -434,12 +455,12 @@ 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 < sizeof prefPLs / sizeof prefPLs[0]; inx++) {
+ for (inx = 0; inx < COUNT( prefPLs ); inx++) {
if ((prefPLs[inx].option&PDO_DIM)) {
ParamLoadControl(&prefPG, inx);
}
@@ -479,6 +500,9 @@ static void PrefOk( void * junk )
NoticeMessage2( 0, MSG_CONN_PARAMS_TOO_BIG, _("Ok"), NULL ) ;
}
+ if(changes & CHANGE_ICONSIZE) {
+ NoticeMessage( MSG_ICON_SIZE_RESTART, _("Ok"), NULL ) ;
+ }
wHide( prefW );
DoChangeNotification(changes);
@@ -489,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 );
@@ -501,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;
}
/*****************************************************************************
@@ -527,17 +556,20 @@ EXPORT long GetDistanceFormat( void )
static wWin_p colorW;
static paramData_t colorPLs[] = {
- { PD_COLORLIST, &snapGridColor, "snapgrid", PDO_NOPSHUPD, NULL, N_("Snap Grid"), 0, (void*)(CHANGE_GRID) },
- { PD_COLORLIST, &markerColor, "marker", PDO_NOPSHUPD, NULL, N_("Marker"), 0, (void*)(CHANGE_GRID) },
- { PD_COLORLIST, &borderColor, "border", PDO_NOPSHUPD, NULL, N_("Border"), 0, (void*)(CHANGE_MAIN) },
+ { PD_COLORLIST, &snapGridColor, "snapgrid", PDO_NOPSHUPD, NULL, N_("Snap Grid"), 0, I2VP(CHANGE_GRID) },
+ { PD_COLORLIST, &markerColor, "marker", PDO_NOPSHUPD, NULL, N_("Marker"), 0, I2VP(CHANGE_GRID) },
+ { PD_COLORLIST, &borderColor, "border", PDO_NOPSHUPD, NULL, N_("Border"), 0, I2VP(CHANGE_MAIN) },
{ PD_COLORLIST, &crossMajorColor, "crossmajor", PDO_NOPSHUPD, NULL, N_("Primary Axis"), 0, 0 },
{ PD_COLORLIST, &crossMinorColor, "crossminor", PDO_NOPSHUPD, NULL, N_("Secondary Axis"), 0, 0 },
- { PD_COLORLIST, &normalColor, "normal", PDO_NOPSHUPD, NULL, N_("Normal Track"), 0, (void*)(CHANGE_MAIN|CHANGE_PARAMS) },
- { PD_COLORLIST, &selectedColor, "selected", PDO_NOPSHUPD, NULL, N_("Selected Track"), 0, (void*)(CHANGE_MAIN) },
- { PD_COLORLIST, &profilePathColor, "profile", PDO_NOPSHUPD, NULL, N_("Profile Path"), 0, (void*)(CHANGE_MAIN) },
- { PD_COLORLIST, &exceptionColor, "exception", PDO_NOPSHUPD, NULL, N_("Exception Track"), 0, (void*)(CHANGE_MAIN) },
- { PD_COLORLIST, &tieColor, "tie", PDO_NOPSHUPD, NULL, N_("Track Ties"), 0, (void*)(CHANGE_MAIN) } };
-static paramGroup_t colorPG = { "rgbcolor", PGO_RECORD|PGO_PREFGROUP, colorPLs, sizeof colorPLs/sizeof colorPLs[0] };
+ { PD_COLORLIST, &normalColor, "normal", PDO_NOPSHUPD, NULL, N_("Normal Track"), 0, I2VP(CHANGE_MAIN|CHANGE_PARAMS) },
+ { 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, &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 ) };
@@ -546,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 9d04d6d..06931fe 100644
--- a/app/bin/dpricels.c
+++ b/app/bin/dpricels.c
@@ -17,15 +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
*/
-#include <string.h>
#include "compound.h"
#include "custom.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
@@ -41,7 +38,7 @@ DIST_T priceListFlexLengthV;
DIST_T priceListFlexCostV;
static paramFloatRange_t priceListCostData = { 0.0, 9999.99, 80 };
-static wPos_t priceListColumnWidths[] = { -60, 200 };
+static wWinPix_t priceListColumnWidths[] = { -60, 200 };
static const char * priceListColumnTitles[] = { N_("Price"), N_("Item") };
static paramListData_t priceListListData = { 10, 400, 2, priceListColumnWidths, priceListColumnTitles };
static paramFloatRange_t priceListFlexData = { 0.0, 999.99, 80 };
@@ -51,32 +48,38 @@ static paramData_t priceListPLs[] = {
{ PD_FLOAT, &priceListCostV, "cost", PDO_NOPREF|PDO_NOPSHUPD, &priceListCostData },
#define I_PRICELSENTRY (1)
#define priceListEntryS ((wString_p)priceListPLs[I_PRICELSENTRY].control)
- { PD_STRING, &priceListEntryV, "entry", PDO_NOPREF|PDO_NOPSHUPD|PDO_DLGHORZ, (void*)(400-80-3), NULL, BO_READONLY },
+ { 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 } };
-static paramGroup_t priceListPG = { "pricelist", 0, priceListPLs, sizeof priceListPLs/sizeof priceListPLs[0] };
+ { PD_FLOAT, &priceListFlexCostV, "flexcost", PDO_NOPREF|PDO_NOPSHUPD|PDO_DLGHORZ, &priceListFlexData }
+};
+static paramGroup_t priceListPG = { "pricelist", 0, priceListPLs, COUNT( priceListPLs ) };
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 );
+ }
}
@@ -91,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 );
@@ -111,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 );
@@ -131,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 ) {
@@ -141,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;
}
@@ -150,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 3bb249e..ced4c8f 100644
--- a/app/bin/dprmfile.c
+++ b/app/bin/dprmfile.c
@@ -17,19 +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
*/
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <string.h>
-
#include "custom.h"
#include "dynstring.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "include/paramfile.h"
#include "include/paramfilelist.h"
@@ -65,32 +58,32 @@ static long paramFileSel = 0;
static void ParamFileFavorite(void * favorite);
static void ParamRefreshSelectedFiles(void * action);
-static void ParamUnloadSelectedFiles(void *);
-static void ParamFileBrowse(void *);
-static void ParamFileSelectAll(void *);
+static void ParamUnloadSelectedFiles(void * action);
+static void ParamFileBrowse(void * junk);
+static void ParamFileSelectAll(void * junk);
static paramListData_t paramFileListData = { 15, 370 };
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, (void *)370 },
- { PD_BUTTON, (void *)ParamFileSelectAll, "selectall", PDO_DLGCMDBUTTON, NULL, N_("Select all") },
+ { PD_MESSAGE, "", NULL, 0, I2VP(370) },
+ { PD_BUTTON, ParamFileSelectAll, "selectall", PDO_DLGCMDBUTTON, NULL, N_("Select all") },
#define I_PRMFILEFAVORITE (4)
- { PD_BUTTON, (void *)ParamFileFavorite, "favorite", PDO_DLGCMDBUTTON, (void *)TRUE, N_("Favorite")},
- { PD_BUTTON, (void*)ParamUnloadSelectedFiles, "unload", PDO_DLGCMDBUTTON, NULL, N_(PARAMBUTTON_UNLOAD), 0L, FALSE },
- { PD_BUTTON, (void*)ParamRefreshSelectedFiles, "refresh", PDO_DLGCMDBUTTON, NULL, N_(PARAMBUTTON_REFRESH), 0L, FALSE },
- { PD_BUTTON, (void*)DoSearchParams, "find", 0, NULL, N_("Search Library") },
- { PD_BUTTON, (void*)ParamFileBrowse, "browse", 0, NULL, N_("Browse ...") },
+ { 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, ParamFileBrowse, "browse", 0, NULL, N_("Browse...") },
};
-static paramGroup_t paramFilePG = { "prmfile", 0, paramFilePLs, sizeof paramFilePLs/sizeof paramFilePLs[0] };
+static paramGroup_t paramFilePG = { "prmfile", 0, paramFilePLs, COUNT( paramFilePLs ) };
#define MESSAGETEXT ((wMessage_p)paramFilePLs[I_MESSAGE].control)
@@ -107,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));
+ }
}
/**
@@ -130,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] = i;
- }
+ for (size_t i = 0; i < cnt; i++) {
+ list[i] = (int)i;
+ }
- sortFiles = files;
+ sortFiles = files;
- qsort((void *)list, (size_t)cnt, sizeof(int), CompareParameterFiles);
+ qsort(list, (size_t)cnt, sizeof(int), CompareParameterFiles);
}
@@ -145,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],
- (void*)(intptr_t)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;
}
/**
@@ -195,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 = (intptr_t)wListGetItemContext(paramFileL, inx);
-
- if (fileInx < 0 || fileInx >= GetParamFileCount()) {
- return;
- }
- if (!IsParamFileFavorite(fileInx)) {
- paramFilePLs[I_PRMFILEFAVORITE].context = (void *)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);
+ }
+ }
+ }
}
/**
@@ -235,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 = (intptr_t)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);
}
/**
@@ -260,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);
+ }
}
/**
@@ -284,7 +280,7 @@ ParamChangeSelectedFiles(unsigned paramFileChange)
for (inx = 0; inx < cnt; inx++) {
if (wListGetItemSelected((wList_p)paramFileL, inx)) {
- fileInx = (intptr_t)wListGetItemContext(paramFileL, inx);
+ fileInx = (wIndex_t)VP2L(wListGetItemContext(paramFileL, inx));
switch (paramFileChange) {
case PARAMFILE_UNLOAD:
@@ -302,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) );
}
}
}
@@ -319,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)
@@ -362,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);
+ }
+ }
}
/**
@@ -409,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 343ae3f..d833a7b 100644
--- a/app/bin/draw.c
+++ b/app/bin/draw.c
@@ -17,63 +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 <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#ifdef HAVE_MALLOC_C
-#include <malloc.h>
-#endif
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <time.h>
-#include <stdarg.h>
-#include <sys/types.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#include <sys/time.h>
-#else
-#include <sys/timeb.h>
-#endif
-
#include "cselect.h"
#include "custom.h"
#include "draw.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "misc.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
#include "layout.h"
+#include "common-ui.h"
+
+
+EXPORT wIndex_t panCmdInx;
static void DrawRoomWalls( wBool_t );
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,
- int fill,
- int open );
+ 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 );
EXPORT int log_pan = 0;
static int log_zoom = 0;
static int log_mouse = 0;
static int log_redraw = 0;
-
-static BOOL_T hideBox = FALSE;
+static int log_timemainredraw = 0;
+static int log_mapsize = 0;
static wFontSize_t drawMaxTextFontSize = 100;
@@ -85,11 +66,14 @@ static wFontSize_t drawMaxTextFontSize = 100;
// static char FAR message[STR_LONG_SIZE];
-EXPORT wPos_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;
@@ -100,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;
@@ -125,8 +114,8 @@ EXPORT DIST_T pixelBins = 80;
*
*/
-static wPos_t infoHeight;
-static wPos_t textHeight;
+static wWinPix_t infoHeight;
+static wWinPix_t textHeight;
EXPORT wWin_p mapW;
EXPORT BOOL_T mapVisible;
EXPORT BOOL_T magneticSnap;
@@ -142,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;
- wPos_t scale_w;
- wPos_t count_w;
- wPos_t pos_w;
- wPos_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 };
@@ -170,7 +161,8 @@ EXPORT BOOL_T inError = FALSE;
typedef enum { mouseNone, mouseLeft, mouseRight, mouseLeftPending } mouseState_e;
static mouseState_e mouseState;
-static int mousePositionx, mousePositiony; /**< position of mouse pointer */
+static wDrawPix_t mousePositionx,
+ mousePositiony; /**< position of mouse pointer */
static int delayUpdate = 1;
@@ -179,47 +171,71 @@ 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 },
- { "128:1", 128.0 },
- { "256:1", 256.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 },
};
@@ -230,35 +246,39 @@ static struct {
*
*/
-static void MainCoOrd2Pix( drawCmd_p d, coOrd p, wPos_t * x, wPos_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 = ((wPos_t)t) + ((d->options&DC_TICKS)?LBORDER:0);
+ }
+ *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 = ((wPos_t)t) + ((d->options&DC_TICKS)?BBORDER:0);
+ }
+ *y = ((wDrawPix_t)t) + ((d->options&DC_TICKS)?BBORDER:0);
}
static int Pix2CoOrd_interpolate = 0;
static void MainPix2CoOrd(
- drawCmd_p d,
- wPos_t px,
- wPos_t py,
- coOrd * posR )
+ drawCmd_p d,
+ wDrawPix_t px,
+ wDrawPix_t py,
+ coOrd * posR )
{
DIST_T x, y;
DIST_T bins = pixelBins;
@@ -266,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=%d 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;
@@ -286,37 +307,41 @@ 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 )
{
- wPos_t x0, y0, x1, y1;
+ 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);
@@ -324,128 +349,129 @@ 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, (wDrawOpts)d->funcs->options );
+ 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 )
-{
- wPos_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)
- {
- wDrawArc(d->d, x, y, (wPos_t)(rr), angle0, angle1, drawCenter,
- width, lineOpt,
- color, (wDrawOpts)d->funcs->options);
- }
+ }
+ 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 )
-{
- wPos_t x, y;
- if (d == &mapD && !mapVisible)
+ 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) {
return;
+ }
d->CoOrd2Pix(d,p,&x,&y);
if ( color == wDrawColorWhite ) {
- wPos_t width, height, descent, ascent;
+ wDrawPix_t width, height, descent, ascent;
coOrd pos[4], size;
double scale = 1.0;
wDrawGetTextSize( &width, &height, &descent, &ascent, d->d, s, fp, fontSize );
@@ -461,29 +487,30 @@ static void DDrawString(
Rotate( &pos[1], pos[0], a );
Rotate( &pos[2], pos[0], a );
Rotate( &pos[3], pos[0], a );
- DDrawPoly( d, 4, pos, NULL, color, 0, 1, 0 );
+ DDrawPoly( d, 4, pos, NULL, color, 0, DRAW_FILL );
} else {
fontSize /= d->scale;
- wDrawString( d->d, x, y, d->angle-a, s, fp, fontSize, color, (wDrawOpts)d->funcs->options );
+ wDrawString( d->d, x, y, d->angle-a, s, fp, fontSize, color, DRAWOPTS(d) );
}
}
static void DDrawPoly(
- drawCmd_p d,
- int cnt,
- coOrd * pts,
- int * types,
- wDrawColor color,
- wDrawWidth width,
- int fill,
- int open )
-{
- typedef wPos_t wPos2[2];
+ 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;
static dynArr_t wpts_type_da;
int inx;
- wPos_t x, y;
+ int fill = 0;
+ int open = 0;
+ wDrawPix_t x, y;
DYNARR_SET( wPos2, wpts_da, cnt * 2 );
DYNARR_SET( int, wpts_type_da, cnt);
#define wpts(N) DYNARR_N( wPos2, wpts_da, N )
@@ -492,114 +519,174 @@ 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;
- wDrawPolygon( d->d, &wpts(0), &wtype(0), cnt, color, width, lineOpt, (wDrawOpts)d->funcs->options, fill, open );
+ }
+
+ wDrawOpts drawOpts = DRAWOPTS(d);
+ switch ( eFillOpt ) {
+ case DRAW_OPEN:
+ open = 1;
+ break;
+ case DRAW_CLOSED:
+ break;
+ case DRAW_FILL:
+ fill = 1;
+ break;
+ case DRAW_TRANSPARENT:
+ fill = 1;
+ drawOpts |= wDrawOptTransparent;
+ break;
+ default:
+ CHECK(FALSE);
+ }
+ 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 )
{
- wPos_t x, y;
+ 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)) {
-#ifdef LATER
- da = (maxArcSegStraightLen * 180) / (M_PI * rr);
- cnt = (int)(angle1/da) + 1;
- da = angle1 / cnt;
- PointOnCircle( &p0, p, r, angle0 );
- for ( i=1; i<=cnt; i++ ) {
- angle0 += da;
- PointOnCircle( &p1, p, r, angle0 );
- DrawLine( d, p0, p1, width, color );
- p0 = p1;
- }
-#endif
+ // Circle too big
return;
}
d->CoOrd2Pix(d,p,&x,&y);
+ wWinPix_t w, h;
+ 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 ) {
+ return;
+ }
+ } else {
+ if ( x+rr < 0 || x-rr > w ||
+ y+rr < 0 || y-rr > h ) {
+ return;
+ }
+ }
drawCount++;
if (drawEnable) {
- wDrawFilledCircle( d->d, x, y, (wPos_t)(rr),
- color, (wDrawOpts)d->funcs->options );
+ wDrawFilledCircle( d->d, x, y, (wDrawPix_t)(rr),
+ color, DRAWOPTS(d) );
}
}
-EXPORT void DrawHilight( drawCmd_p d, coOrd p, coOrd s, BOOL_T add )
+static void DDrawRectangle(
+ drawCmd_p d,
+ coOrd orig,
+ coOrd size,
+ wDrawColor color,
+ drawFill_e eFillOpt )
{
- wPos_t x, y, w, h;
- if (d == &mapD && !mapVisible)
+ wDrawPix_t x, y, w, h;
+
+ if (d == &mapD && !mapVisible) {
return;
- w = (wPos_t)((s.x/d->scale)*d->dpi+0.5);
- h = (wPos_t)((s.y/d->scale)*d->dpi+0.5);
- d->CoOrd2Pix(d,p,&x,&y);
- if ( add )
- wDrawFilledRectangle( d->d, x, y, w, h, drawColorPowderedBlue, wDrawOptTemp|wDrawOptTransparent );
- else
- wDrawFilledRectangle( d->d, x, y, w, h, selectedColor, wDrawOptTemp|wDrawOptTransparent );
+ }
+ 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);
+ drawCount++;
+ if (drawEnable) {
+ wDrawOpts opts = DRAWOPTS(d);
+ coOrd p1, p2;
+ switch (eFillOpt) {
+ case DRAW_CLOSED:
+ // 1 2
+ // 0 3
+ p1.x = orig.x;
+ p1.y = orig.y+size.y;
+ DrawLine( d, orig, p1, 0, color );
+ p2.x = orig.x+size.x;
+ p2.y = p1.y;
+ DrawLine( d, p1, p2, 0, color );
+ p1.x = p2.x;
+ p1.y = orig.y;
+ DrawLine( d, p2, p1, 0, color );
+ DrawLine( d, p1, orig, 0, color );
+ break;
+ case DRAW_TRANSPARENT:
+ opts |= wDrawOptTransparent;
+ // 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:
+ CHECK(FALSE);
+ }
+ }
+}
+
+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 );
+ wDrawSetTempMode( d->d, bTemp );
+ d->options = options;
}
EXPORT void DrawHilightPolygon( drawCmd_p d, coOrd *p, int cnt )
{
- wPos_t q[4][2];
- int i;
-#ifdef LATER
- if (d->options&DC_TEMPSEGS) {
- return;
- }
- if (d->options&DC_PRINT)
- return;
-#endif
- ASSERT( cnt <= 4 );
- for (i=0; i<cnt; i++) {
- d->CoOrd2Pix(d,p[i],&q[i][0],&q[i][1]);
- }
+ CHECK( cnt <= 4 );
static wDrawColor color = 0;
- if ( color == 0 )
+ if ( color == 0 ) {
color = wDrawColorGray( 70 );
- wDrawPolygon( d->d, q, NULL, cnt, color, 0, 0, wDrawOptTemp|wDrawOptTransparent, 1, 0 );
+ }
+ 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;
@@ -623,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++;
}
@@ -655,117 +745,143 @@ 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);
}
- DrawLine( d, p[0], p[1], 0, color );
- DrawLine( d, p[1], p[2], 0, color );
- DrawLine( d, p[2], p[3], 0, color );
- DrawLine( d, p[3], p[0], 0, color );
+ DrawPoly( d, 4, p, NULL, color, 0, DRAW_CLOSED );
}
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)/72.0;
- wPos_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;
+ 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;
} 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;
- p[0].y -= (bb*d->scale/d->dpi+descent);
+ 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;
+ 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;
switch (style) {
case BOX_ARROW:
- Translate( &p1, pos, a, size.x+size.y );
- ClipLine( &pos, &p1, p[0], 0.0, size );
- Translate( &p2, p1, a, size.y*arrowScale );
- DrawLine( d, p1, p2, 0, color );
- 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 );
+ 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;
+ // Pick a point (p1) outside of Box in arrow direction
+ Translate(&p1, pos, a, size.x + size.y);
+ // Find point on edge of Box (p1)
+ 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);
+ // 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 */
case BOX_BOX:
- DrawLine( d, p[1], p[2], 0, color );
- DrawLine( d, p[2], p[3], 0, color );
- DrawLine( d, p[3], p[0], 0, color );
+ 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 */
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, 1, 0);
- 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, 1, 0 );
- 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)
-{
- wPos_t w, h, d, a;
+ 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;
@@ -781,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;
@@ -819,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;
@@ -845,57 +963,57 @@ 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)
{
- wPos_t x, y;
-#ifdef LATER
- if (d->options&DC_TEMPSEGS) {
- return;
- }
- if (d->options&DC_PRINT)
- return;
-#endif
+ wDrawPix_t x, y;
d->CoOrd2Pix( d, p, &x, &y );
- wDrawBitMap( d->d, bm, x, y, color, (wDrawOpts)d->funcs->options );
+ wDrawBitMap( d->d, bm, x, y, color, DRAWOPTS(d) );
}
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
- 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
- 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;
@@ -904,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;
@@ -926,45 +1044,64 @@ static void TempSegString(
static void TempSegPoly(
- drawCmd_p d,
- int cnt,
- coOrd * pts,
- int * types,
- wDrawColor color,
- wDrawWidth width,
- int fill,
- int open )
-{
+ drawCmd_p d,
+ int cnt,
+ coOrd * pts,
+ int * types,
+ wDrawColor color,
+ wDrawWidth width,
+ drawFill_e eFillOpt )
+{
+ int fill = 0;
+ int open = 0;
+ switch (eFillOpt) {
+ case DRAW_OPEN:
+ open = 1;
+ break;
+ case DRAW_CLOSED:
+ break;
+ case DRAW_FILL:
+ fill = 1;
+ break;
+ case DRAW_TRANSPARENT:
+ fill = 1;
+ break;
+ default:
+ 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
- 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[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;
@@ -972,56 +1109,73 @@ static void TempSegFillCircle(
}
-static void NoDrawBitMap( drawCmd_p d, coOrd p, wDrawBitMap_p bm, wDrawColor color )
+static void TempSegRectangle(
+ drawCmd_p d,
+ coOrd orig,
+ coOrd size,
+ wDrawColor color,
+ drawFill_e eOpts )
+{
+ coOrd p[4];
+ // p1 p2
+ // p0 p3
+ p[0].x = p[1].x = orig.x;
+ p[2].x = p[3].x = orig.x+size.x;
+ p[0].y = p[3].y = orig.y;
+ p[1].y = p[2].y = orig.y+size.y;
+ TempSegPoly( d, 4, p, NULL, color, 0, eOpts );
+}
+
+
+static void NoDrawBitMap( drawCmd_p d, coOrd p, wDrawBitMap_p bm,
+ wDrawColor color )
{
}
EXPORT drawFuncs_t screenDrawFuncs = {
- 0,
- DDrawLine,
- DDrawArc,
- DDrawString,
- DDrawBitMap,
- DDrawPoly,
- DDrawFillCircle };
-
-EXPORT drawFuncs_t tempDrawFuncs = {
- wDrawOptTemp,
- DDrawLine,
- DDrawArc,
- DDrawString,
- DDrawBitMap,
- DDrawPoly,
- DDrawFillCircle };
+ DDrawLine,
+ DDrawArc,
+ DDrawString,
+ DDrawBitMap,
+ DDrawPoly,
+ DDrawFillCircle,
+ DDrawRectangle
+};
EXPORT drawFuncs_t printDrawFuncs = {
- 0,
- DDrawLine,
- DDrawArc,
- DDrawString,
- NoDrawBitMap,
- DDrawPoly,
- DDrawFillCircle };
+ DDrawLine,
+ DDrawArc,
+ DDrawString,
+ NoDrawBitMap,
+ DDrawPoly,
+ DDrawFillCircle,
+ DDrawRectangle
+};
EXPORT drawFuncs_t tempSegDrawFuncs = {
- 0,
- TempSegLine,
- TempSegArc,
- TempSegString,
- NoDrawBitMap,
- TempSegPoly,
- TempSegFillCircle };
+ 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 };
+ 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, &tempDrawFuncs, DC_TICKS, INIT_MAIN_SCALE, 0.0, {0.0,0.0}, {0.0,0.0}, MainPix2CoOrd, MainCoOrd2Pix };
+ 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 };
+ NULL, &screenDrawFuncs, DC_SIMPLE, INIT_MAP_SCALE, 0.0, {0.0,0.0}, {96.0,48.0}, Pix2CoOrd, CoOrd2Pix, 96.0
+};
/*****************************************************************************
@@ -1031,60 +1185,63 @@ EXPORT drawCmd_t mapD = {
*/
-static wPos_t info_yb_offset = 2;
-static wPos_t info_ym_offset = 3;
-static wPos_t six = 2;
-static wPos_t info_xm_offset = 2;
-static wPos_t messageOrControlX = 0;
-static wPos_t messageOrControlY = 0;
+static wWinPix_t info_yb_offset = 2;
+static wWinPix_t six = 2;
+static wWinPix_t info_xm_offset = 2;
+static wWinPix_t messageOrControlX = 0;
+static wWinPix_t messageOrControlY = 0;
#define NUM_INFOCTL (4)
static wControl_p curInfoControl[NUM_INFOCTL];
-static wPos_t curInfoLabelWidth[NUM_INFOCTL];
+static wWinPix_t curInfoLabelWidth[NUM_INFOCTL];
/**
* Determine the width of a mouse pointer position string ( coordinate plus label ).
*
* \return width of position string
*/
-static wPos_t GetInfoPosWidth( void )
+static wWinPix_t GetInfoPosWidth( void )
{
- wPos_t labelWidth;
-
+ 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;
}
-
- labelWidth = (wStatusGetWidth( xLabel ) > wStatusGetWidth( yLabel ) ? wStatusGetWidth( xLabel ):wStatusGetWidth( yLabel ));
-
- return wStatusGetWidth( FormatDistance(dist) ) + labelWidth;
+ } 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;
}
/**
* Initialize the status line at the bottom of the window.
- *
+ *
*/
EXPORT void InitInfoBar( void )
{
- wPos_t width, height, y, yb, ym, x, boxH;
+ wWinPix_t width, height, y, yb, ym, x, boxH;
wWinGetSize( mainW, &width, &height );
infoHeight = 2 + wStatusGetHeight( COMBOBOX ) + 2 ;
textHeight = wStatusGetHeight(0L);
@@ -1098,34 +1255,40 @@ 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, "" );
}
static void SetInfoBar( void )
{
- wPos_t width, height, y, yb, ym, x, boxH;
+ wWinPix_t width, height, y, yb, ym, x, boxH;
int inx;
static long oldDistanceFormat = -1;
long newDistanceFormat;
@@ -1139,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];
- int 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 )
@@ -1199,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;
}
@@ -1207,10 +1374,10 @@ 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 )
{
- wPos_t x, y;
+ wWinPix_t x, y;
int inx;
for ( inx=0; inx<NUM_INFOCTL; inx++ ) {
if (curInfoControl[inx]) {
@@ -1238,9 +1405,10 @@ EXPORT void InfoSubstituteControls(
curInfoLabelWidth[inx] = wLabelWidth(_(labels[inx]));
x += curInfoLabelWidth[inx];
#ifdef WINDOWS
- int y_this = y + (infoHeight/2) - (textHeight / 2 );
+ wWinPix_t y_this = y + (infoHeight/2) - (textHeight / 2 );
#else
- int 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] );
@@ -1259,108 +1427,152 @@ 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()
{
- wPos_t w, h;
- wPos_t dw, dh;
+ wWinPix_t w, h;
FLOAT_T fw, fh;
-
- fw = (((mapD.size.x/mapD.scale)*mapD.dpi) + 0.5)+2;
- fh = (((mapD.size.y/mapD.scale)*mapD.dpi) + 0.5)+2;
-
- w = (wPos_t)fw;
- h = (wPos_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);
- }
+ // 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;
+
+ w = (wWinPix_t)fw;
+ h = (wWinPix_t)fh;
+ 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 )
{
- if (size.x < 12.0)
- size.x = 12.0;
- if (size.y < 12.0)
- size.y = 12.0;
+ 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 < 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;
-}
-
-static void MapRedraw()
+/**
+ * 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 )
{
- 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 ) {
+ 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 );
//wSetCursor( mapD.d, defaultCursor );
+ wDrawSetTempMode( mapD.d, bTemp );
wDrawDelayUpdate( mapD.d, FALSE );
}
-static void MapResize( void )
-{
- mapD.scale = mapScale;
- ChangeMapScale(TRUE);
- MapRedraw();
-}
-
-#ifdef LATER
-static void MapProc( wWin_p win, winProcEvent e, void * data )
-{
- switch( e ) {
- case wResize_e:
- if (mapD.d == NULL)
- return;
- DrawMapBoundingBox( FALSE );
- ChangeMapScale();
- break;
- case wClose_e:
- mapVisible = FALSE;
- break;
- /*case wRedraw_e:
- if (mapD.d == NULL)
- break;
- MapRedraw();
- break;*/
- default:
- break;
- }
-}
-#endif
-
-
EXPORT void SetMainSize( void )
{
- wPos_t ww, hh;
+ wWinPix_t ww, hh;
DIST_T w, h;
wDrawGetSize( mainD.d, &ww, &hh );
ww -= LBORDER+RBORDER;
@@ -1372,28 +1584,55 @@ 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] origY y origin of drawing area
+ * \param [out] posX x position of bitmap
+ * \param [out] posY y position of bitmap
+ * \param [out] pWidth width of bitmap in destination coordinates
+ *
+ * \returns true on success, false otherwise
+ */
+
+void
+TranslateBackground(drawCmd_p drawP, POS_T origX, POS_T origY, wWinPix_t* posX,
+ wWinPix_t* posY, wWinPix_t* pWidth)
+{
+ coOrd back_pos = GetLayoutBackGroundPos();
+
+ *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);
}
/*
@@ -1404,30 +1643,39 @@ EXPORT void MainRedraw( void )
coOrd orig, size;
static int cMR = 0;
- LOG( log_redraw, 1, ( "MainRedraw: %d\n", cMR++ ) );
- if (delayUpdate)
- wDrawDelayUpdate( mainD.d, TRUE );
+ 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 );
+ }
+ wDrawSetTempMode( mainD.d, FALSE );
wDrawClear( mainD.d );
- //mainD.d->option = 0;
- //mainD.options = 0;
- mainD.funcs->options = 0; //Force MainD back from Temp
-
orig = mainD.orig;
size = mainD.size;
orig.x -= LBORDER/mainD.dpi*mainD.scale;
orig.y -= BBORDER/mainD.dpi*mainD.scale;
- wPos_t back_x,back_y;
- coOrd back_pos = GetLayoutBackGroundPos();
- back_x = (wPos_t)((back_pos.x-orig.x)/mainD.scale*mainD.dpi);
- back_y = (wPos_t)((back_pos.y-orig.y)/mainD.scale*mainD.dpi);
- wPos_t back_width = (wPos_t)(GetLayoutBackGroundSize()/mainD.scale*mainD.dpi);
DrawRoomWalls( TRUE );
if (GetLayoutBackGroundScreen() < 100.0 && GetLayoutBackGroundVisible()) {
- wDrawShowBackground( mainD.d, back_x, back_y, back_width, GetLayoutBackGroundAngle(), GetLayoutBackGroundScreen());
+ wWinPix_t bitmapPosX;
+ wWinPix_t bitmapPosY;
+ wWinPix_t bitmapWidth;
+
+ TranslateBackground(&mainD, orig.x, orig.y, &bitmapPosX, &bitmapPosY,
+ &bitmapWidth);
+
+ wDrawShowBackground(mainD.d,
+ bitmapPosX,
+ bitmapPosY,
+ bitmapWidth,
+ GetLayoutBackGroundAngle(),
+ GetLayoutBackGroundScreen());
}
+ DrawSnapGrid( &mainD, mapD.size, TRUE );
+
orig = mainD.orig;
size = mainD.size;
orig.x -= RBORDER/mainD.dpi*mainD.scale;
@@ -1436,12 +1684,14 @@ EXPORT void MainRedraw( void )
size.y += (BBORDER+TBORDER)/mainD.dpi*mainD.scale;
DrawTracks( &mainD, mainD.scale, orig, size );
- DrawRoomWalls( FALSE );
+ DrawRoomWalls( FALSE ); //No background, just rulers
+
currRedraw++;
- DrawSnapGrid( &mainD, mapD.size, TRUE );
//wSetCursor( mainD.d, defaultCursor );
InfoScale();
+ LOG( log_timemainredraw, 1, ( "MainRedraw time = %lu mS\n",
+ wGetTimer()-time0 ) );
// The remainder is from TempRedraw
wDrawSetTempMode( tempD.d, TRUE );
DrawMarkers();
@@ -1459,79 +1709,76 @@ 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 )
{
-#ifdef LATER
- wPos_t ww, hh;
- DIST_T w, h;
-#endif
-
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":"---" ) );
-#ifdef LATER
- wDrawGetSize( mainD.d, &ww, &hh );
- w = ww/mainD.dpi;
- h = hh/mainD.dpi;
-#endif
SetMainSize();
-#ifdef LATER
- /*wDrawClip( mainD.d, 0, 0, w, h );*/
-#endif
t1 = mainD.dpi/mainD.scale;
if (units == UNITS_ENGLISH) {
t1 /= 2.0;
for ( pixelBins=0.25; pixelBins<t1; pixelBins*=2.0 );
} else {
- pixelBins = 50.8;
- if (pixelBins >= t1)
- while (1) {
- if ( pixelBins <= t1 )
+ t1 /= 2.0;
+ pixelBins = 0.127;
+ while (1) {
+ pixelBins *= 2.0;
+ if ( pixelBins >= t1 ) {
break;
- pixelBins /= 2.0;
- if ( pixelBins <= t1 )
+ }
+ pixelBins *= 2.0;
+ if ( pixelBins >= t1 ) {
break;
- pixelBins /= 2.5;
- if ( pixelBins <= t1 )
+ }
+ pixelBins *= 2.5;
+ if ( pixelBins >= t1 ) {
break;
- pixelBins /= 2.0;
+ }
}
}
- ConstraintOrig( &mainD.orig, mainD.size, bNoBorder, FALSE );
+ LOG( log_pan, 2, ( "PixelBins=%0.6f\n", pixelBins ) );
+ ConstraintOrig( &mainD.orig, mainD.size, bNoBorder, TRUE );
tempD.orig = mainD.orig;
tempD.size = mainD.size;
mainCenter.x = mainD.orig.x + mainD.size.x/2.0;
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)
@@ -1539,26 +1786,36 @@ EXPORT void MainLayout(
void MainProc( wWin_p win, winProcEvent e, void * refresh, void * data )
{
- wPos_t width, height;
+ 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" );
+ }
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", width );
- wPrefSetInteger( "draw", "mainheight", height );
- } else DrawMapBoundingBox( TRUE );
+ wPrefSetInteger( "draw", "mainwidth", (int)width );
+ wPrefSetInteger( "draw", "mainheight", (int)height );
+ wDrawSetTempMode( mainD.d, bTemp );
+ } else { DrawMapBoundingBox( TRUE ); }
break;
case wState_e:
wPrefSetInteger( "draw", "maximized", wWinIsMaximized(win) );
@@ -1568,7 +1825,7 @@ void MainProc( wWin_p win, winProcEvent e, void * refresh, void * data )
break;
case wClose_e:
/* shutdown the application via "close window" button */
- DoQuit();
+ DoQuit(NULL);
break;
default:
break;
@@ -1576,38 +1833,12 @@ void MainProc( wWin_p win, winProcEvent e, void * refresh, void * data )
}
-#ifdef WINDOWS
-int profRedraw = 0;
-void
-#ifndef WIN32
-_far _pascal
-#endif
-ProfStart( void );
-void
-#ifndef WIN32
-_far _pascal
-#endif
-ProfStop( void );
-#endif
-
EXPORT void DoRedraw( void )
{
-#ifdef WINDOWS
-#ifndef WIN32
- if (profRedraw)
- ProfStart();
-#endif
-#endif
- MapRedraw();
+ LOG( log_mapsize, 2, ( "DoRedraw\n" ) );
+ ChangeMapScale();
+ MapRedraw( mapD.d, NULL, 0, 0 );
MainRedraw(); // DoRedraw
-#ifdef WINDOWS
-#ifndef WIN32
- if (profRedraw)
- ProfStop();
-#endif
-#endif
-
-
}
/*****************************************************************************
@@ -1619,112 +1850,93 @@ EXPORT void DoRedraw( void )
static void DrawRoomWalls( wBool_t drawBackground )
{
- coOrd p00, p01, p11, p10;
- int p0,p1,p2,p3;
-
- if (mainD.d == NULL)
+ if (mainD.d == NULL) {
return;
+ }
if (drawBackground) {
- mainD.CoOrd2Pix(&mainD,mainD.orig,&p0,&p1);
- coOrd end;
- end.x = mainD.orig.x + mainD.size.x;
- end.y = mainD.orig.y + mainD.size.y;
- mainD.CoOrd2Pix(&mainD,end,&p2,&p3);
- p2 -= p0;
- p3 -= p1;
- wDrawFilledRectangle( mainD.d, p0, p1, p2, p3, drawColorGrey80, 0 );
-
- mainD.CoOrd2Pix(&mainD,zero,&p0,&p1);
- mainD.CoOrd2Pix(&mainD,mapD.size,&p2,&p3);
- p2 -= p0;
- p3 -= p1;
- wDrawFilledRectangle( mainD.d, p0, p1, p2, p3, drawColorWhite, 0 );
+ DrawRectangle( &mainD, mainD.orig, mainD.size, drawColorGrey80, DRAW_FILL );
+ DrawRectangle( &mainD, zero, mapD.size, wDrawColorWhite, DRAW_FILL );
} else {
-
+ coOrd p[4];
DrawTicks( &mainD, mapD.size );
-
- p00.x = 0.0; p00.y = 0.0;
- p01.x = p10.y = 0.0;
- p11.x = p10.x = mapD.size.x;
- p01.y = p11.y = mapD.size.y;
-
- DrawLine( &mainD, p01, p11, 3, borderColor );
- DrawLine( &mainD, p11, p10, 3, borderColor );
- DrawLine( &mainD, p00, p01, 3, borderColor );
- DrawLine( &mainD, p00, p10, 3, borderColor );
+ p[0].x = p[0].y = p[1].x = p[3].y = 0.0;
+ p[2].x = p[3].x = mapD.size.x;
+ p[1].y = p[2].y = mapD.size.y;
+ DrawPoly( &mainD, 4, p, NULL, borderColor, 3, DRAW_CLOSED );
}
}
static void DrawMarkers( void )
{
- wPos_t x, y;
- mainD.CoOrd2Pix(&mainD,oldMarker,&x,&y);
- wDrawLine( tempD.d, 0, y, (wPos_t)LBORDER, y,
- 0, wDrawLineSolid, markerColor, wDrawOptTemp );
- wDrawLine( tempD.d, x, 0, x, (wPos_t)BBORDER,
- 0, wDrawLineSolid, markerColor, wDrawOptTemp );
+ coOrd p0, p1;
+ p0.x = p1.x = oldMarker.x;
+ p0.y = mainD.orig.y;
+ p1.y = mainD.orig.y-BBORDER*mainD.scale/mainD.dpi;
+ DrawLine( &tempD, p0, p1, 0, markerColor );
+ p0.y = p1.y = oldMarker.y;
+ p0.x = mainD.orig.x;
+ p1.x = mainD.orig.x-LBORDER*mainD.scale/mainD.dpi;
+ DrawLine( &tempD, p0, p1, 0, markerColor );
}
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;
DIST_T start, end;
long inch, lastInch;
- wPos_t len;
+ DIST_T len;
int digit;
char quote;
- char message[10];
+ char message[STR_SHORT_SIZE];
coOrd d_orig, d_size;
wFontSize_t fs;
- long mm, mm0, mm1, power;
- wPos_t x0, y0, x1, y1;
-
- static double lengths[16] = {
- 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 };
+ 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
+ };
int fraction, incr, firstFraction, lastFraction;
int majorLength;
coOrd p0, p1;
- FLOAT_T sin_aa;
a = FindAngle( pos0, pos1 );
Translate( &pos0, pos0, a, offset );
Translate( &pos1, pos1, a, offset );
aa = NormalizeAngle(a+(tickSide==0?+90:-90));
- sin_aa = sin(D2R(aa));
end = FindDistance( pos0, pos1 );
- if (end < 0.1)
+ if (end < 0.1) {
return;
- d_orig.x = d->orig.x - 0.001;
- d_orig.y = d->orig.y - 0.001;
- d_size.x = d->size.x + 0.002;
- d_size.y = d->size.y + 0.002;
- if (!ClipLine( &pos0, &pos1, d_orig, d->angle, d_size ))
+ }
+ 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 )) {
return;
+ }
start = FindDistance( orig, pos0 );
- if (offset < 0)
+ if (offset < 0) {
start = -start;
+ }
end = FindDistance( orig, pos1 );
- d->CoOrd2Pix( d, pos0, &x0, &y0 );
- d->CoOrd2Pix( d, pos1, &x1, &y1 );
- wDrawLine( d->d, x0, y0, x1, y1,
- 0, wDrawLineSolid, color, (wDrawOpts)d->funcs->options );
+ DrawLine( d, pos0, pos1, 0, color );
if (units == UNITS_METRIC) {
mm0 = (int)ceil(start*25.4-0.5);
@@ -1739,23 +1951,31 @@ EXPORT void DrawRuler(
} else {
power = 1000;
}
+
+ // Label interval for scale > 40
+ if (d->scale <= 200) {
+ skip = 2000;
+ } else if (d->scale <= 400) {
+ skip = 5000;
+ } 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 );
- d->CoOrd2Pix( d, p0, &x0, &y0 );
- d->CoOrd2Pix( d, p1, &x1, &y1 );
- wDrawLine( d->d, x0, y0, x1, y1,
- 0, wDrawLineSolid, color, (wDrawOpts)d->funcs->options );
-
- if (!number || (d->scale>40 && mm != 0.0))
+ DrawLine( d, p0, p1, 0, color );
+ 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;
@@ -1771,28 +1991,26 @@ EXPORT void DrawRuler(
//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;
}
- d->CoOrd2Pix( d, p0, &x0, &y0 );
- if (x0<0) x0 = 0;
- if (y0<0) y0 = 0;
- wDrawString( d->d, x0, y0, d->angle, message, rulerFp,
- fs, color, (wDrawOpts)d->funcs->options );
+ DrawString( d, p0, 0.0, message, rulerFp, fs*d->scale, color );
}
}
}
}
} 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;
inch = (int)ceil(start);
@@ -1801,20 +2019,20 @@ EXPORT void DrawRuler(
inch--;
firstFraction = 16 - firstFraction;
}
- for ( ; inch<=lastInch; inch++){
- if (inch % 12 == 0) {
+ for ( ; inch<=lastInch; inch++) {
+ if(inch % 12 == 0) {
lengths[0] = 12;
majorLength = 16;
digit = (int)(inch/12);
fs = rulerFontSize;
quote = '\'';
- } else if (d->scale <= 8) {
+ } else if (d->scale <= 12) { // 8
lengths[0] = 12;
majorLength = 16;
digit = (int)(inch%12);
fs = rulerFontSize*(2.0/3.0);
quote = '"';
- } else if (d->scale <= 16){
+ } else if (d->scale <= 24) { // 16
lengths[0] = 10;
majorLength = 12;
digit = (int)(inch%12);
@@ -1822,34 +2040,49 @@ 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 ) {
- Translate( &p0, orig, a, inch+fraction/16.0 );
- Translate( &p1, p0, aa, lengths[fraction]*d->scale/72.0 );
- d->CoOrd2Pix( d, p0, &x0, &y0 );
- d->CoOrd2Pix( d, p1, &x1, &y1 );
- wDrawLine( d->d, x0, y0, x1, y1,
- 0, wDrawLineSolid, color,
- (wDrawOpts)d->funcs->options );
-#ifdef KLUDGEWINDOWS
- /* KLUDGE: can't draw invertable strings on windows */
- if ( (opts&DO_TEMP) == 0)
-#endif
- if (fraction == 0) {
- if ( (number == TRUE && d->scale<40) || (digit==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 );
- sprintf(message, "%d%c", digit, quote );
- d->CoOrd2Pix( d, p0, &x0, &y0 );
- if (x0<0) x0 = 0;
- if (y0<0) y0 = 0;
- wDrawString( d->d, x0, y0, d->angle, message, rulerFp, fs, color, (wDrawOpts)d->funcs->options );
+ }
+ 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) {
+ skip = (inch % 60 != 0);
+ } else if(d->scale > 128) {
+ skip = (inch % 24 != 0);
+ } else if(d->scale > 64) {
+ skip = (inch % 12 != 0);
+ }
+ 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 );
+ }
+ if (fraction == 0) {
+ // Label interval for scale > 40
+ if (d->scale <= 80) {
+ skip = 2;
+ } else if (d->scale <= 120) {
+ skip = 5;
+ } else if (d->scale <= 240) {
+ skip = 10;
+ } else if (d->scale <= 480) {
+ skip = 20;
+ } else {
+ skip = 50;
+ }
+ 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 );
+ sprintf(message, "%d%c", digit, quote );
+ DrawString( d, p0, 0.0, message, rulerFp, fs*d->scale, color );
+ }
}
}
- }
- firstFraction = 0;
+ firstFraction = 0;
}
}
}
@@ -1863,17 +2096,17 @@ static void DrawTicks( drawCmd_p d, coOrd size )
offset = 0.0;
- double blank_zone = 40*d->scale/72.0;
+ 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;
@@ -1890,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;
@@ -1910,26 +2143,28 @@ static void DrawTicks( drawCmd_p d, coOrd size )
EXPORT coOrd mainCenter;
-
static void DrawMapBoundingBox( BOOL_T set )
{
- if (mainD.d == NULL || mapD.d == NULL)
+ CHECK( mainD.d );
+ CHECK( mapD.d );
+ if (!mapVisible) {
return;
- wDrawSetTempMode( mapD.d, TRUE );
+ }
DrawHilight( &mapD, mainD.orig, mainD.size, TRUE );
- wDrawSetTempMode( mapD.d, FALSE );
}
-static void ConstraintOrig( coOrd * orig, coOrd size, wBool_t bNoBorder, wBool_t round )
+static void ConstraintOrig( coOrd * orig, coOrd size, wBool_t bNoBorder,
+ wBool_t bRound )
{
-LOG( log_pan, 2, ( "ConstraintOrig [ %0.3f, %0.3f ] 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;
}
@@ -1943,8 +2178,9 @@ LOG( log_pan, 2, ( "ConstraintOrig [ %0.3f, %0.3f ] 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) ) {
@@ -1954,36 +2190,20 @@ LOG( log_pan, 2, ( "ConstraintOrig [ %0.3f, %0.3f ] 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 (round) {
- if (mainD.scale >= 1.0) {
- if (units == UNITS_ENGLISH) {
- orig->x = floor(orig->x*4)/4; //>1:1 = 1/4 inch
- orig->y = floor(orig->y*4)/4;
- } else {
- orig->x = floor(orig->x*2.54*2)/(2.54*2); //>1:1 = 0.5 cm
- orig->y = floor(orig->y*2.54*2)/(2.54*2);
- }
- } else {
- if (units == UNITS_ENGLISH) {
- orig->x = floor(orig->x*64)/64; //<1:1 = 1/64 inch
- orig->y = floor(orig->y*64)/64;
- } else {
- orig->x = floor(orig->x*25.4*2)/(25.4*2); //>1:1 = 0.5 mm
- orig->y = floor(orig->y*25.4*2)/(25.4*2);
- }
- }
+ if (bRound) {
+ orig->x = round(orig->x*pixelBins)/pixelBins;
+ orig->y = round(orig->y*pixelBins)/pixelBins;
}
- //orig->x = (long)(orig->x*pixelBins+0.5)/pixelBins;
- //orig->y = (long)(orig->y*pixelBins+0.5)/pixelBins;
- LOG( log_pan, 2, ( " = [ %0.3f %0.3f ]\n", orig->y, orig->y ) )
+ LOG( log_pan, 2, ( " = [ %0.6f %0.6f ]\n", orig->x, orig->y ) )
}
/**
- * 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
@@ -1991,31 +2211,34 @@ LOG( log_pan, 2, ( "ConstraintOrig [ %0.3f, %0.3f ] 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<sizeof zoomList/sizeof zoomList[0]; 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, (wMenuCallBack_p)DoZoom, (void *)(&(zoomList[inx].value)));
- if( zoomSubM )
- zoomList[inx].pdRadio = wMenuRadioCreate( zoomSubM, "cmdZoom", zoomList[inx].name, 0, (wMenuCallBack_p)DoZoom, (void *)(&(zoomList[inx].value)));
- if (panMenu)
- zoomList[inx].panRadio = wMenuRadioCreate( panMenu, "cmdZoom", zoomList[inx].name, 0, (wMenuCallBack_p)DoZoom, (void *)(&(zoomList[inx].value)));
+
+ for ( inx=0; inx<COUNT( zoomList ); inx++ ) {
+ 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 ((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, (wMenuCallBack_p)DoZoom, (void *)(&(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
*
*/
@@ -2023,95 +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<sizeof zoomList/sizeof zoomList[0]; inx++ ) {
- if( curScale == zoomList[inx].value ) {
- if (zoomList[inx].btRadio)
+
+ for ( inx=0; inx<COUNT( zoomList ); inx++ ) {
+ 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 < (sizeof zoomList/sizeof zoomList[0] - 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<sizeof zoomList/sizeof zoomList[0]; 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<sizeof zoomList/sizeof zoomList[0]; 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 ( mainD.dpi == 75 ) {
- mainD.dpi = 72.0;
- } else 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();
- PanHere( (void*)1 );
-LOG( log_zoom, 1, ( "center = [%0.3f %0.3f]\n", mainCenter.x, mainCenter.y ) )
+ SetMainSize();
+ PanHere( I2VP(1) );
+ 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
}
@@ -2125,48 +2379,91 @@ 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 );
}
}
-EXPORT void DoZoomExtents( void * mode) {
+/*
+ * Mode - 0 = Extents are Map size
+ * Mode - 1 = Extents are Selected size
+ */
+EXPORT void DoZoomExtents( void * mode)
+{
DIST_T scale_x, scale_y;
- scale_x = mapD.size.x/(mainD.size.x/mainD.scale);
- scale_y = mapD.size.y/(mainD.size.y/mainD.scale);
- if (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; }
+ }
+ }
+ }
+ panCenter.x = (top.x/2)+(bot.x)/2;
+ panCenter.y = (top.y/2)+(bot.y)/2;
+ PanHere(I2VP(1));
+ scale_x = (top.x-bot.x)*1.5/(mainD.size.x/mainD.scale);
+ scale_y = (top.y-bot.y)*1.5/(mainD.size.y/mainD.scale);
+ } else {
+ scale_x = mapD.size.x/(mainD.size.x/mainD.scale);
+ scale_y = mapD.size.y/(mainD.size.y/mainD.scale);
+ }
+
+
+ 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;
- mainD.orig = zero;
+ 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);
@@ -2183,64 +2480,67 @@ 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 < ( sizeof zoomList/sizeof zoomList[0] - 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
*
*/
-
-EXPORT void DoZoom( DIST_T *pScale )
+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,
- wPos_t x,
- wPos_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,
- wPos_t * x,
- wPos_t * y )
+ drawCmd_p d,
+ coOrd pos,
+ wDrawPix_t * x,
+ wDrawPix_t * y )
{
- *x = (wPos_t)((pos.x-d->orig.x)/d->scale*d->dpi);
- *y = (wPos_t)((pos.y-d->orig.y)/d->scale*d->dpi);
+ *x = (wDrawPix_t)((pos.x-d->orig.x)/d->scale*d->dpi);
+ *y = (wDrawPix_t)((pos.y-d->orig.y)/d->scale*d->dpi);
}
/*
@@ -2253,31 +2553,34 @@ EXPORT void CoOrd2Pix(
* - 2: same as 0, plus liveMap
* - 3: Take position from menuPos
*/
-EXPORT void PanHere(void * mode) {
- if ( 3 == (long)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 != (long)mode )
- if ( (MyGetKeyState()&WKEY_CTRL)!= 0 )
+ if ( 1 != VP2L(mode) )
+ if ( (MyGetKeyState()&WKEY_CTRL)!= 0 ) {
bNoBorder = !bNoBorder;
- wBool_t bLiveMap = TRUE;
- if ( 2 == (long)mode )
- bLiveMap = liveMap;
+ }
MainLayout( bLiveMap, bNoBorder ); // PanHere
}
-static void DoPanKeyAction( wAction_t action )
+static int DoPanKeyAction( wAction_t action )
{
- switch ((wAccelKey_e)(action>>8)) {
+ switch ((wAccelKey_e)(action>>8)&0xFF) {
case wAccelKey_Del:
- SelectDelete();
- return;
+ return SelectDelete();
#ifndef WINDOWS
case wAccelKey_Pgdn:
DoZoomUp(NULL);
@@ -2289,50 +2592,59 @@ static void 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 ) );
- PanHere((void*)0);
+ }
+ 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 ) );
- PanHere((void*)0);
+ }
+ 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 ) );
- PanHere((void*)0);
+ }
+ 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 ) );
- PanHere((void*)0);
+ }
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere(I2VP(0));
break;
default:
- return;
+ return 0;
}
+ return 0;
}
@@ -2342,82 +2654,98 @@ static void DoMapPan( wAction_t action, coOrd pos )
static coOrd size;
static DIST_T xscale, yscale;
static enum { noPan, movePan, resizePan } mode = noPan;
- wPos_t x, y;
+ wDrawPix_t x, y;
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 ) )
- PanHere( (void*)2 );
+ 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( (void*)0 );
-LOG( log_pan, 1, ( "FINAL = [ %0.3f, %0.3f ]\n", mainD.orig.x, mainD.orig.y ) )
+ PanHere( I2VP(0));
+ 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;
mainD.orig.x = mapOrig.x - mainD.size.x / 2.0;
mainD.orig.y = mapOrig.y - mainD.size.y / 2.0;
tempD.scale = mainD.scale = xscale;
- PanHere( (void*)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 ) )
+ 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 ) )
InfoScale();
- break;
+ break;
case C_RUP:
- if ( mode != resizePan )
+ if ( mode != resizePan ) {
break;
+ }
DoNewScale( xscale );
mode = noPan;
break;
@@ -2435,12 +2763,15 @@ 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 )
{
- wPos_t pd;
- pd = (wPos_t)(d/mainD.scale * mainD.dpi);
- return pd <= closePixels;
+ return d <= closeDist*mainD.scale;
}
/*****************************************************************************
@@ -2467,11 +2798,11 @@ EXPORT void FakeDownMouseState( void )
*
* \param x OUT pointer x position
* \param y OUT pointer y position
- * \return
+ * \return
*/
void
-GetMousePosition( int *x, int *y )
+GetMousePosition( wDrawPix_t *x, wDrawPix_t *y )
{
if( x && y ) {
*x = mousePositionx;
@@ -2479,7 +2810,8 @@ GetMousePosition( int *x, int *y )
}
}
-coOrd minIncrementSizes() {
+coOrd minIncrementSizes()
+{
double x,y;
if (mainD.scale >= 1.0) {
if (units == UNITS_ENGLISH) {
@@ -2491,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;
@@ -2508,10 +2840,14 @@ static void DoMouse( wAction_t action, coOrd pos )
{
BOOL_T rc;
- wPos_t x, y;
+ 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 );
@@ -2521,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;
@@ -2530,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;
@@ -2560,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;
@@ -2573,114 +2932,142 @@ 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;
- }
- DoPanKeyAction( action );
+ case C_DOWN:
+ case C_RDOWN:
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ break;
+ case C_MDOWN:
+ break;
+ case wActionMove:
+ InfoPos( pos );
+ if ( ignoreMoves ) {
return;
- case C_TEXT:
- if ((action>>8) == 0x0D) {
- action = C_OK;
- } else if ((action>>8) == 0x1B) {
- ConfirmReset( TRUE );
- return;
- }
- 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((void *)1L);
- break;
- case C_WDOWN:
- DoZoomDown((void *)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((void*)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((void*)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((void*)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((void*)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 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;
+ }
}
-wPos_t autoPanFactor = 10;
-static void DoMousew( wDraw_p d, void * context, wAction_t action, wPos_t x, wPos_t y )
+wDrawPix_t autoPanFactor = 10;
+static void DoMousew( wDraw_p d, void * context, wAction_t action, wDrawPix_t x,
+ wDrawPix_t y )
{
coOrd pos;
coOrd orig;
- wPos_t w, h;
- static wPos_t lastX, lastY;
+ wWinPix_t w, h;
+ static wDrawPix_t lastX, lastY;
DIST_T minDist;
-
+ wDrawGetSize( mainD.d, &w, &h );
if ( autoPan && !inPlayback ) {
- wDrawGetSize( mainD.d, &w, &h );
- 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;
@@ -2688,39 +3075,45 @@ static void DoMousew( wDraw_p d, void * context, wAction_t action, wPos_t x, wPo
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();
@@ -2740,6 +3133,7 @@ static void DoMousew( wDraw_p d, void * context, wAction_t action, wPos_t x, wPo
case wActionRDrag:
case wActionRUp:
case wActionLDownDouble:
+ case wActionMDrag:
mousePositionx = x;
mousePositiony = y;
break;
@@ -2748,6 +3142,10 @@ static void DoMousew( wDraw_p d, void * context, wAction_t action, wPos_t x, wPo
}
DoMouse( action, pos );
+
+ if (( x < 20 ) || ( x > w-20 ) || ( y < 20 ) || ( y > h-20 ) ) {
+ wSetCursor(mainD.d,defaultCursor); //Add system cursor if close to edges
+ }
}
static wBool_t PlaybackMain( char * line )
@@ -2755,17 +3153,17 @@ static wBool_t PlaybackMain( char * line )
int rc;
int action;
coOrd pos;
- char *oldLocale = NULL;
- oldLocale = SaveLocale("C");
+ SetCLocale();
- rc=sscanf( line, "%d " SCANF_FLOAT_FORMAT SCANF_FLOAT_FORMAT, &action, &pos.x, &pos.y);
- RestoreLocale(oldLocale);
+ rc=sscanf( line, "%d " SCANF_FLOAT_FORMAT SCANF_FLOAT_FORMAT, &action, &pos.x,
+ &pos.y);
+ SetUserLocale();
if (rc != 3) {
SyntaxError( "MOUSE", rc, 3 );
} else {
- PlaybackMouse( DoMouse, &mainD, (wAction_t)action, pos, wDrawColorBlack );
+ PlaybackMouse( DoMouse, &tempD, (wAction_t)action, pos, wDrawColorBlack );
}
return TRUE;
}
@@ -2775,18 +3173,18 @@ static wBool_t PlaybackKey( char * line )
int rc;
int action = C_TEXT;
coOrd pos;
- char *oldLocale = NULL;
int c;
- oldLocale = SaveLocale("C");
- rc=sscanf( line, "%d " SCANF_FLOAT_FORMAT SCANF_FLOAT_FORMAT, &c, &pos.x, &pos.y );
- RestoreLocale(oldLocale);
+ SetCLocale();
+ rc=sscanf( line, "%d " SCANF_FLOAT_FORMAT SCANF_FLOAT_FORMAT, &c, &pos.x,
+ &pos.y );
+ SetUserLocale();
if (rc != 3) {
SyntaxError( "MOUSE", rc, 3 );
} else {
- action = action||c<<8;
- PlaybackMouse( DoMouse, &mainD, (wAction_t)action, pos, wDrawColorBlack );
+ action = action|c<<8;
+ PlaybackMouse( DoMouse, &tempD, (wAction_t)action, pos, wDrawColorBlack );
}
return TRUE;
}
@@ -2797,52 +3195,11 @@ static wBool_t PlaybackKey( char * line )
*
*/
-static paramDrawData_t mapDrawData = { 100, 100, (wDrawRedrawCallBack_p)MapRedraw, DoMapPan, &mapD };
+static paramDrawData_t mapDrawData = { 50, 50, MapRedraw, DoMapPan, &mapD };
static paramData_t mapPLs[] = {
- { PD_DRAW, NULL, "canvas", 0, &mapDrawData } };
-static paramGroup_t mapPG = { "map", PGO_NODEFAULTPROC, mapPLs, sizeof mapPLs/sizeof mapPLs[0] };
-
-static void MapDlgUpdate(
- paramGroup_p pg,
- int inx,
- void * valueP )
-{
- int 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 > 256.0) scale = 256.0;
- if (scale < 0.01) scale = 0.01;
-
- mapScale = (long)scale;
-
- mapD.scale = mapScale;
- ChangeMapScale(FALSE);
-
- if (mapVisible) {
- MapRedraw();
- }
- wPrefSetInteger( "draw", "mapscale", (long)mapD.scale );
- }
- break;
- case -1:
- MapWindowShow( FALSE );
- break;
- default:
- break;
- }
-}
+ { PD_DRAW, NULL, "canvas", PDO_DLGRESIZE, &mapDrawData }
+};
+static paramGroup_t mapPG = { "map", PGO_NODEFAULTPROC, mapPLs, COUNT( mapPLs ) };
static void DrawChange( long changes )
@@ -2850,39 +3207,96 @@ 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, wPos_t px, wPos_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 )
{
- wPos_t w, h;
+ 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,
- (wDrawRedrawCallBack_p)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--;
@@ -2894,9 +3308,7 @@ EXPORT void DrawInit( int initialZoom )
}
tempD.scale = mainD.scale;
mainD.dpi = wDrawGetDPI( mainD.d );
- if ( mainD.dpi == 75 ) {
- mainD.dpi = 72.0;
- } else if ( mainD.scale > 1.0 && mainD.scale <= 12.0 ) {
+ if ( mainD.scale > 1.0 && mainD.scale <= 12.0 ) {
mainD.dpi = floor( (mainD.dpi + mainD.scale/2)/mainD.scale) * mainD.scale;
}
tempD.dpi = mainD.dpi;
@@ -2904,40 +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 = (wPos_t)((mapD.size.x/mapD.scale)*mainD.dpi + 0.5)+2;*/
- /*h = (wPos_t)((mapD.size.y/mapD.scale)*mainD.dpi + 0.5)+2;*/
+ /*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( log_mapsize, 2, ( "DrawInit/ParamCreateDialog(&mapPG\n" ) );
+ mapW = ParamCreateDialog( &mapPG, MakeWindowTitle(_("Map")), NULL, NULL, NULL,
+ FALSE, NULL, F_RESIZE, NULL );
+ ChangeMapScale();
- log_pan = LogFindIndex( "pan" );
- log_zoom = LogFindIndex( "zoom" );
- log_mouse = LogFindIndex( "mouse" );
- log_redraw = LogFindIndex( "redraw" );
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 );
-#ifdef LATER
- wAttachAccelKey( wAccelKey_Pgup, 0, (wAccelKeyCallBack_p)doZoomUp, NULL );
- wAttachAccelKey( wAccelKey_Pgdn, 0, (wAccelKeyCallBack_p)doZoomDown, NULL );
-#endif
}
-#include "bitmaps/pan.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;
@@ -2955,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;
@@ -2975,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,FALSE);
- 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) {
@@ -3016,41 +3425,43 @@ static STATUS_T CmdPan(
}
panCenter.x = mainD.orig.x + mainD.size.x/2.0;
panCenter.y = mainD.orig.y + mainD.size.y/2.0;
- PanHere( (void*)0 );
+ PanHere( I2VP(0));
break;
case C_UP:
if (panmode == ZOOM) {
scale_x = size.x/mainD.size.x*mainD.scale;
scale_y = size.y/mainD.size.y*mainD.scale;
- DIST_T oldScale = 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:
@@ -3061,20 +3472,24 @@ static STATUS_T CmdPan(
panmode = NONE;
if ((action>>8) == 'e') { //"e"
- DoZoomExtents(0);
+ DoZoomExtents(I2VP(0));
+ } else if((action>>8) == 's') {
+ DoZoomExtents(I2VP(1));
} else if (((action>>8) == '0') || ((action>>8) == 'o')) { //"0" or "o"
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 ) );
- PanHere( (void*)0 ); // CmdPan C_TEXT 'c'
+ LOG( log_pan, 2, ( "PanCenter:%d %0.3f %0.3f\n", __LINE__, panCenter.x,
+ panCenter.y ) );
+ PanHere( I2VP(0)); // CmdPan C_TEXT 'c'
}
if ((action>>8) == 0x0D) {
@@ -3095,44 +3510,59 @@ 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(int key) {
+EXPORT void PanMenuEnter( void * keyVP )
+{
+ int key = (int)VP2L(keyVP);
int action;
action = C_TEXT;
action |= key<<8;
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_xpm),
- 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, (void*) (intptr_t) selectCmdInx);
- wMenuPushCreate(panPopupM, "cmdDescribeMode", GetBalloonHelpStr("cmdDescribeMode"), 0, DoCommandB, (void*) (intptr_t) describeCmdInx);
- wMenuPushCreate(panPopupM, "cmdModifyMode", GetBalloonHelpStr("cmdModifyMode"), 0, DoCommandB, (void*) (intptr_t) 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, (wMenuCallBack_p)PanMenuEnter, (void*) 'e');
- zoomLvl1 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:1 - '1'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '1');
- zoomLvl2 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:2 - '2'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '2');
- zoomLvl3 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:3 - '3'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '3');
- zoomLvl4 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:4 - '4'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '4');
- zoomLvl5 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:5 - '5'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '5');
- zoomLvl6 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:6 - '6'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '6');
- zoomLvl7 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:7 - '7'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '7');
- zoomLvl8 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:8 - '8'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '8');
- zoomLvl9 = wMenuPushCreate( panPopupM, "", _("Zoom to 1:9 - '9'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '9');
- panOrig = wMenuPushCreate( panPopupM, "", _("Pan to Origin - 'o'/'0'"), 0, (wMenuCallBack_p)PanMenuEnter, (void*) '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, (wMenuCallBack_p)PanHere, (void*) 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 dc01695..0ddf547 100644
--- a/app/bin/draw.h
+++ b/app/bin/draw.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 DRAW_H
#define DRAW_H
#include "common.h"
-#include "wlib.h"
// drawCmd_t.options
//
@@ -41,8 +40,15 @@
#define DC_CENTERLINE (1<<4)
// TICKS: draw rulers on edges
#define DC_TICKS (1<<5)
+// TEMP: temp mode draws
+#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<<7)
+#define DC_THICK (1<<9)
#define DC_DASH (1<<12)
#define DC_DOT (1<<13)
#define DC_DASHDOT (1<<14)
@@ -54,55 +60,60 @@
#define INIT_MAIN_SCALE (8.0)
#define INIT_MAP_SCALE (64.0)
-#define MAX_MAIN_SCALE (256.0)
+#define MAX_MAIN_SCALE (1024.0)
#define MIN_MAIN_SCALE (1.0)
#define MIN_MAIN_MACRO (0.10)
+typedef enum { DRAW_OPEN, DRAW_CLOSED, DRAW_FILL, DRAW_TRANSPARENT } drawFill_e;
+
+struct drawCmd_t;
typedef struct drawCmd_t * drawCmd_p;
typedef struct {
- long options;
- 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, int,
- int);
- void (*drawFillCircle)(drawCmd_p, coOrd, DIST_T, wDrawColor);
+ 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, wPos_t, wPos_t, coOrd *);
-typedef void (*drawConvertCoOrd2Pix)(drawCmd_p, coOrd, wPos_t *, wPos_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)
-void Pix2CoOrd(drawCmd_p, wPos_t, wPos_t, coOrd *);
-void CoOrd2Pix(drawCmd_p, coOrd, wPos_t *, wPos_t *);
+void Pix2CoOrd(drawCmd_p, wDrawPix_t, wDrawPix_t, coOrd *);
+void CoOrd2Pix(drawCmd_p, coOrd, wDrawPix_t *, wDrawPix_t *);
extern BOOL_T inError;
extern DIST_T pixelBins;
@@ -115,7 +126,6 @@ extern drawCmd_t mapD;
extern drawCmd_t tempD;
#define RoomSize (mapD.size)
extern coOrd oldMarker;
-extern wPos_t closePixels;
#define dragDistance (dragPixels*mainD.scale / mainD.dpi)
extern long dragPixels;
extern long dragTimeout;
@@ -124,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;
@@ -137,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;
@@ -190,8 +209,9 @@ extern drawFuncs_t printDrawFuncs;
#define DrawArc( D, P, R, A0, A1, F, W, C ) (D)->funcs->drawArc( D, P, R, A0, A1, F, W, C )
#define DrawString( D, P, A, S, FP, FS, C ) (D)->funcs->drawString( D, P, A, S, FP, FS, C )
#define DrawBitMap( D, P, B, C ) (D)->funcs->drawBitMap( D, P, B, C )
-#define DrawPoly( D, N, P, T, C, W, F, O ) (D)->funcs->drawPoly( D, N, P, T, C, W, F, O );
+#define DrawPoly( D, N, P, T, C, W, O ) (D)->funcs->drawPoly( D, N, P, T, C, W, O );
#define DrawFillCircle( D, P, R, C ) (D)->funcs->drawFillCircle( D, P, R, C );
+#define DrawRectangle( D, P, S, C, O ) (D)->funcs->drawRectangle( D, P, S, C, O )
#define REORIGIN( Q, P, A, O ) { \
(Q) = (P); \
@@ -213,12 +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_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,
@@ -229,8 +252,10 @@ void DrawTextSize(drawCmd_p, char *, wFont_p, wFontSize_t, BOOL_T, coOrd *);
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);
+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);
@@ -239,13 +264,13 @@ 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 *);
-void DoZoomDown(void *);
-void DoZoomExtents( void *);
-void DoZoom(DIST_T *);
-void PanHere(void *);
-void PanMenuEnter(int);
+void DoZoomUp(void * modeVP);
+void DoZoomDown(void * modeVP);
+void DoZoomExtents( void * modeVP);
+void PanHere(void * modeVP);
+void PanMenuEnter(void * modeVP);
void InitCmdZoom(wMenu_p, wMenu_p, wMenu_p, wMenu_p);
@@ -253,7 +278,7 @@ void InfoPos(coOrd);
void InfoCount(wIndex_t);
void SetMessage(char *);
-wIndex_t panCmdInx;
+extern wIndex_t panCmdInx;
void InfoSubstituteControls(wControl_p *, char * *);
@@ -265,10 +290,10 @@ STATUS_T GridAction(wAction_t, coOrd, coOrd *, DIST_T *);
void ResetMouseState(void);
void FakeDownMouseState(void);
-void GetMousePosition(int *x, int *y);
+void GetMousePosition(wDrawPix_t *x, wDrawPix_t *y);
void RecordMouse(char *, wAction_t, POS_T, POS_T);
extern long playbackDelay;
-void MovePlaybackCursor(drawCmd_p, wPos_t, wPos_t, wBool_t, wControl_p);
+void MovePlaybackCursor(drawCmd_p, coOrd pos, wBool_t, wControl_p);
typedef void (*playbackProc)(wAction_t, coOrd);
void PlaybackMouse(playbackProc, drawCmd_p, wAction_t, coOrd, wDrawColor);
void RedrawPlaybackCursor();
diff --git a/app/bin/drawgeom.c b/app/bin/drawgeom.c
index d23031f..b52d42a 100644
--- a/app/bin/drawgeom.c
+++ b/app/bin/drawgeom.c
@@ -14,24 +14,18 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-#include <stdarg.h>
-#include <string.h>
-
#include "ccurve.h"
#include "cbezier.h"
#include "compound.h"
#include "cundo.h"
#include "drawgeom.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "common-ui.h"
static long drawGeomCurveMode;
@@ -52,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;
}
@@ -67,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;
@@ -76,27 +72,31 @@ 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 );
}
-static void DrawGeomOk( void )
+static void DrawGeomOk( BOOL_T started )
{
track_p trk;
int inx;
- if (tempSegs_da.cnt <= 0)
+ if (tempSegs_da.cnt <= 0) {
return;
- UndoStart( _("Create Lines"), "newDraw" );
+ }
+ 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);
@@ -107,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);
@@ -121,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->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])))
+ } 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]))) {
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.
@@ -185,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 wBool_t lock;
- static coOrd pos0, pos0x, pos1, lastPos;
+// 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:
@@ -217,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:
@@ -225,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;
@@ -233,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;
@@ -255,28 +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:
@@ -286,86 +299,116 @@ STATUS_T DrawGeomMouse(
CleanSegs(&tempSegs_da);
DYNARR_RESET( trkSeg_t, tempSegs_da );
DYNARR_RESET( trkSeg_t, anchors_da );
- lock = FALSE;
- if (!magneticSnap)
- InfoMessage(_("+Shift to lock to nearby objects"));
- else
- InfoMessage(_("+Shift to not lock to nearby objects"));
+ locked = FALSE;
+ if (!magneticSnap) {
+ InfoMessage(_("+Alt for Magnetic Snap"));
+ } else {
+ InfoMessage(_("+Alt to inhibit Magnetic Snap"));
+ }
+ wSetCursor(mainD.d,defaultCursor);
+ movePos = zero;
+ context->UndoStarted = FALSE;
return C_CONTINUE;
case wActionMove:
- if (context->State == 0 || context->State ==2 ) {
+ 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))) {
DYNARR_RESET( trkSeg_t, anchors_da );
- switch (context->Op) { //Snap pos to nearest line if this is end and just shift is depressed for lines and some curves
- case OP_CURVE1:
- case OP_CURVE2:
- case OP_CURVE3:
- case OP_CURVE4:
- case OP_LINE:
- case OP_DIMLINE:
- case OP_BENCH:
- 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) {
- if (context->Op == OP_DIMLINE ) {
- CreateEndAnchor(p,FALSE);
- } else if (!IsTrack(t)) CreateEndAnchor(p,FALSE);
- } else {
- p = pos;
- if (FindTempNear(context,&p)) {
- CreateEndAnchor(p,FALSE);
- }
+ 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;
}
}
- break;
- default:
- ;
+ }
+ if (!locked && SnapPos(&pos)) {
+ CreateEndAnchor(pos,FALSE);
+ // wSetCursor(mainD.d,wCursorNone);
+ movePos = pos;
+ locked = TRUE;
+ }
+ break;
+ default:
+ ;
}
}
return C_CONTINUE;
+ case wActionRDown:
case wActionLDown:
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();
+ 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_LINE) || (context->Op == OP_DIMLINE) ||
- (context->Op == OP_BENCH) ) {
- BOOL_T found = FALSE;
- if (((MyGetKeyState() & WKEY_ALT) ==0) == magneticSnap ) {
- coOrd p = pos;
- track_p t;
- if ((t=OnTrack(&p,FALSE,FALSE))!=NULL) {
- if (!IsTrack(t)) {
- EPINX_T ep1,ep2;
- line_angle = GetAngleAtPoint(t,pos,&ep1,&ep2);
- pos = p;
- found = TRUE;
- }
- }
- }
- if (!found) SnapPos( &pos );
+ (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) {
- ;
+ 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;
@@ -375,32 +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 to next point, +Shift to lock to object, +Ctrl to lock to 90deg") );
+ 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_da.cnt = 0;
- context->message( _("Drag to place next end point") );
+ tempSegs(0).u.l.option = 0;
+ 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) {
@@ -410,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:
@@ -420,28 +473,29 @@ 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;
tempSegs(0).u.c.center = pos;
context->message( _("Drag to set radius") );
+ 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") );
@@ -449,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;
@@ -462,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];
@@ -485,36 +540,63 @@ STATUS_T DrawGeomMouse(
segPtr->u.l.pos[1] = pos;
context->State = 1;
segCnt = tempSegs_da.cnt;
- context->message(_("+Shift - lock to close object, +Ctrl - lock to 90 deg"));
+ context->message(_("+Alt - reverse Magnetic Snap or +Ctrl - lock to 90 deg"));
break;
}
return C_CONTINUE;
+ case wActionRDrag:
case wActionLDrag:
DYNARR_RESET(trkSeg_t, anchors_da );
+ 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 != 2) ||
- (context->Op == OP_LINE) ||
- (context->Op == OP_BENCH) ) {
- if (( (MyGetKeyState() & WKEY_ALT)==0) == magneticSnap) {
- if (OnTrack( &pos, FALSE, FALSE )!=NULL)
- CreateEndAnchor(pos,TRUE);
+ (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)))) {
+ poslocked = TRUE;
+ pos1 = p;
+
+ }
+ }
+ if (!poslocked) { //Set up poslock and pos1 for later
+ p = pos;
+ if (SnapPos(&p)) {
+ poslocked = TRUE;
+ pos1 = p;
+ }
}
- } else if (context->Op == OP_DIMLINE) {
- if (OnTrack( &pos, FALSE, FALSE )!=NULL) CreateEndAnchor(pos,TRUE);
}
- pos1 = pos;
-
switch (context->Op) {
case OP_TBLEDGE:
- OnTableEdgeEndPt( NULL, &pos1 );
- /* no break */
+ 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 */
case OP_LINE:
case OP_DIMLINE:
case OP_BENCH:
- if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == WKEY_CTRL ) {
+ 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);
@@ -522,99 +604,117 @@ 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(pos, 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_SHIFT|WKEY_CTRL|WKEY_ALT)) == WKEY_CTRL ) {
+ 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 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)) {
- 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);
- d = FindDistance(intersect,pos);
- if (IsClose(d)) {
- pos = intersect;
+ 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)) {
+ 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);
+ d = FindDistance(intersect,pos);
+ if (IsClose(d)) {
+ pos = intersect;
+ }
}
}
}
- }
+ } 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 = pos;
- CreateCurve( C_MOVE, pos, FALSE, context->Color, width, drawGeomCurveMode, &anchors_da, context->message );
+ pos0x = pos1;
+ CreateCurve( C_MOVE, pos, FALSE, lineColor, lineWidth, drawGeomCurveMode,
+ &anchors_da, context->message );
} else {
- PlotCurve( drawGeomCurveMode, pos0, pos0x, pos1, &context->ArcData, FALSE );
- 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;
@@ -622,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,pos,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:
@@ -652,66 +755,68 @@ STATUS_T DrawGeomMouse(
case OP_CIRCLE2:
case OP_FILLCIRCLE2:
tempSegs(0).u.c.center = pos1;
- /* no break */
+ 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 )) );
+ break;
case OP_CIRCLE3:
case OP_FILLCIRCLE3:
+ 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 = pos.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 = pos.y;
+ 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);
return C_CONTINUE;
case wActionLUp:
- lastValid = FALSE;
- createTrack = FALSE;
- if ((context->Op == OP_CURVE1 && 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_LINE) || (context->Op == OP_DIMLINE) ||
- (context->Op == OP_BENCH) ) {
- if (((MyGetKeyState() & WKEY_ALT)==0) == magneticSnap ) {
- coOrd p = pos1;
- track_p t;
- if ((t=OnTrack(&p,FALSE,FALSE))) {
- pos1 = p;
- if (context->Op == OP_LINE || context->Op == OP_DIMLINE || context->Op == OP_BENCH) {
- tempSegs(0).u.l.pos[1] = p;
- } else {
- PlotCurve( drawGeomCurveMode, pos0, pos0x, pos1, &context->ArcData, FALSE );
- if (context->ArcData.type == curveTypeStraight) {
- DYNARR_RESET(trkSeg_t,tempSegs_da);
- DYNARR_APPEND(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);
- 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;
- }
- }
-
- }
+ case wActionRUp:
+// 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) ) {
+ ;
+ } else if (context->Op == OP_LINE || context->Op == OP_DIMLINE ||
+ 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)) {
+ ;
+ } else {
+ PlotCurve( drawGeomCurveMode, pos0, pos0x, pos1, &context->ArcData, FALSE,
+ 0.0 );
+ if (context->ArcData.type == curveTypeStraight) {
+ 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;
+ } else if (context->ArcData.type == curveTypeNone) {
+ DYNARR_RESET(trkSeg_t,tempSegs_da);
+ } else if (context->ArcData.type == curveTypeCurve) {
+ 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;
}
}
switch ( context->Op ) {
@@ -719,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);
@@ -731,16 +836,18 @@ 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;
} else {
DYNARR_SET(trkSeg_t,tempSegs_da,1);
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;
@@ -750,19 +857,29 @@ 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 ) {
+ CreateEndAnchor(context->ArcData.pos2,FALSE);
+ DrawArrowHeadsArray(&anchors_da,context->ArcData.pos2,
+ FindAngle(context->ArcData.curvePos,context->ArcData.pos2)+90,TRUE,
+ wDrawColorRed);
+ }
+ CreateEndAnchor(context->ArcData.curvePos,TRUE);
/*drawContext = context;
- DrawGeomOp( (void*)context->Op );*/
+ DrawGeomOp( I2VP(context->Op) );*/
}
break;
case OP_CIRCLE1:
@@ -771,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;
@@ -784,15 +902,15 @@ 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( (void*)context->Op );*/
+ DrawGeomOp( I2VP(context->Op) );*/
context->length = FindDistance(pts[0].pt,pts[1].pt);
context->width = FindDistance(pts[3].pt,pts[0].pt);
context->State = 2;
@@ -801,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);
@@ -830,25 +948,30 @@ 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;
return C_CONTINUE;
}
context->Started = FALSE;
- context->Changed = TRUE; //Update screen shown
/*CheckOk();*/
if (context->State == 2 && IsCurCommandSticky()) {
segCnt = tempSegs_da.cnt;
+ UndoStart("Create Lines","Sticky Draw");
+ context->UndoStarted = TRUE;
return C_CONTINUE;
}
- DrawGeomOk();
+ DrawGeomOk(FALSE);
context->State = 0;
context->Changed = FALSE;
context->message("");
@@ -856,54 +979,71 @@ STATUS_T DrawGeomMouse(
case wActionText:
DYNARR_RESET(trkSeg_t, anchors_da );
- if ( ((action>>8)&0xFF) == 0x0D ||
- ((action>>8)&0xFF) == ' ' ) {
- if ((context->Op == OP_POLY) || (context->Op == OP_FILLPOLY) || (context->Op == OP_POLYLINE)) {
- tempSegs_da.cnt = segCnt;
+ 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)) {
+ 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;
- DrawGeomOk();
+ if (context->State == 2) {
+ DYNARR_SET( trkSeg_t, tempSegs_da, segCnt );
+ DrawGeomOk(context->UndoStarted);
+ context->UndoStarted = FALSE;
+
+ }
}
+ 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
+ context->State = 0;
+ segCnt = 0;
+ return C_TERMINATE;
}
- context->State = 0;
- segCnt = 0;
- return C_TERMINATE;
+ return C_CONTINUE;
- case C_CANCEL:
- if (context->Changed) { //If the update values were shown
- if (context->State == 2) {
- tempSegs_da.cnt = segCnt;
- DrawGeomOk();
- }
+ case C_CONFIRM:
+ if (context->State==2 && IsCurCommandSticky()) {
+ DrawGeomOk(context->UndoStarted);
}
+ context->Changed = FALSE;
+ return C_CONTINUE;
+
+ 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;
@@ -920,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);
@@ -934,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);
@@ -949,27 +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); }
}
-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);
- 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;
@@ -979,8 +1130,8 @@ void static CreateOriginAnchor(coOrd origin, wBool_t trans_selected) {
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;
+ anchors(i).color = trans_selected?wDrawColorAqua:wDrawColorBlue;
+ anchors(i).lineWidth = 0;
DYNARR_APPEND(trkSeg_t,anchors_da,1);
Translate(&p0,origin,90,d*4);
Translate(&p1,origin,90,-d*4);
@@ -989,10 +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;
+ 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);
@@ -1001,70 +1155,77 @@ 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);
+ 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;
+ wSetCursor(mainD.d,wCursorNone);
}
/*
@@ -1075,519 +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;
}
- int pInx=0;
- coOrd pm0,pm1;
- DIST_T dm = 10000.0;
- 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);
- }
- return C_CONTINUE;
- break;
- case C_DOWN:
- d = 10000.0;
- 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--;
- }
- }
- }
+ CreateMovingAnchor(points(pInx).pt,TRUE);
}
- //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++) {
+ }
+ 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;
}
- 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;
- }
- }
- //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))) {
-
+ for (int i=0; i<points_da.cnt; i++) {
+ if (IsClose(FindDistance(pos,points(i).pt)) && point_selected(i)==TRUE) {
point_selected(i) = FALSE;
-
- }
- if (point_selected(i) == TRUE) {
- polyInx = i;
+ selected_count--;
}
}
}
- 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, 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);
- }
- } 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:
- tempSegs_da.cnt = 1;
- if (polyState != POLYPOINT_SELECTED) {
- return C_CONTINUE;
+ }
+ //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;
}
- //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;
- }
- }
+ }
+ if (!IsClose(d)) { //Not on/near object - de-select all points
+ for (int i=0; i<points_da.cnt; i++) {
+ point_selected(i) = FALSE;
}
- 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;
+ 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; }
}
- if (first_inx == points_da.cnt-1) {
- next_inx = 0;
- } else {
- next_inx = first_inx+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);
}
- //Lock to 90 degrees first/last point
- if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == WKEY_SHIFT ) {
- 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;
- }
- InfoMessage( _("Length = %s, Last angle = %0.2f"),
- FormatDistance(FindDistance(pos_lock,last_point)),
- PutAngle(FindAngle(pos_lock,last_point)));
+ 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))) {
+ point_selected(i) = FALSE;
+
+ }
+ if (point_selected(i) == TRUE) {
+ polyInx = i;
}
}
- 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++) {
+ }
+ 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)) {
- points(i).pt.x = points(i).pt.x + diff.x;
- points(i).pt.y = points(i).pt.y + diff.y;
+ first_inx = i;
+ break;
}
}
- 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));
+ }
+ 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);
}
- CreatePolyAnchors(first_inx);
- if (show_intersect)
- CreateSquareAnchor(intersect);
- context->p0 = points(0).pt;
- context->p1 = points(1).pt;
+ } 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_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++) {
+ }
+ //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 = 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);
+ }
+ 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_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 {
- context->rel_angle = 180-DifferenceBetweenAngles(an0,an1);
+ last_point = points(first_inx-1).pt;
+ last_angle = FindAngle(points(first_inx-2).pt,last_point);
}
- }
- 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));
+ 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 {
- an1 = NormalizeAngle((180-context->rel_angle)+an0);
+ 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;
}
- Translate(&points(prev_inx).pt,points(last_index).pt,an1,context->length);
+ 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;
}
- 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(1);
- InfoMessage("Move Origin Mode: Place Origin, p for Points, Enter or Esc");
- return C_CONTINUE;
+ }
+ 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;
}
- if (((prev_inx>=0 && 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;
- break;
- case 'v':
- points(context->prev_inx).pt_type = wPolyLineStraight;
- break;
- case 'r':
- points(context->prev_inx).pt_type = wPolyLineRound;
- break;
- default:
- return C_CONTINUE;
- }
+ }
+ 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);
}
- 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;
+ }
+ 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);
}
- 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);
+ 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;
+ }
+ 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;
- }
- 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->filled = TRUE;
- CreatePolyAnchors( -1);
+ case 'v':
+ points(context->prev_inx).pt_type = wPolyLineStraight;
return C_CONTINUE;
- }
- if ((action>>8 == 'u') && (tempSegs(0).type == SEG_FILPOLY) ) {
- tempSegs(0).type = SEG_POLY;
- context->type = SEG_POLY;
- context->filled = FALSE;
- CreatePolyAnchors( -1);
+ case 'r':
+ points(context->prev_inx).pt_type = wPolyLineRound;
return C_CONTINUE;
+ default:;
}
- //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);
+ }
+ 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;
+ }
+ 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);
}
- points_da.cnt--;
- select_da.cnt--;
- selected_count=0;
- tempSegs(0).u.p.cnt = points_da.cnt;
- context->max_inx = points_da.cnt-1;
}
- 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) return C_CONTINUE;
- /* no break */
- case C_FINISH:
- //copy changes back into track
- if (polyState != POLY_SELECTED) return C_TERMINATE;
- 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->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;
+ 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 );
}
- MyFree(oldPts);
- oldPts = NULL;
+ 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);
- DrawNewTrack( context->trk );
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_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;
@@ -1601,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;
@@ -1626,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);
+ if (IsClose(FindDistance(pos,context->rot_center))) {
+ pos = context->rot_center;
+ } else {
+ context->rot_center = pos;
}
- InfoMessage("Move Origin Mode: Place Origin, 0-4, c or l, Enter or Esc");
- return C_CONTINUE;
- break;
- case wActionMove:
CreateOriginAnchor(context->rot_center, TRUE);
- 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_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){
- 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:
+ }
+ 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_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:
- 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);
- }
- }
- }
- 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(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;
@@ -1755,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;
@@ -1786,81 +2027,88 @@ 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;
- 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) {
case SEG_TBLEDGE:
case SEG_STRLIN:
@@ -1877,27 +2125,37 @@ STATUS_T DrawGeomModify(
CreateMovingAnchor(context->p1,TRUE);
}
}
- break;
+ break;
case SEG_CRVLIN:
case SEG_FILCRCL:
DYNARR_RESET(trkSeg_t,anchors_da);
- if (tempSegs(0).u.c.a1 < 360.0)
- CreateCurveAnchors(curveInx,context->pm,context->pc,context->p0,context->p1);
- dd = FindDistance( context->p0, pos );
- if ( IsClose(dd)) {
- CreateMovingAnchor(context->p0,TRUE);
+ if (tempSegs(0).u.c.a1 >= 360.0) {
+ if (IsClose(FindDistance(context->pc,pos)-context->radius)) {
+ coOrd p;
+ 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);
+ }
} else {
- dd = FindDistance( context->p1, pos );
+ CreateCurveAnchors(curveInx,context->pm,context->pc,context->p0,context->p1);
+ dd = FindDistance( context->p0, pos );
if ( IsClose(dd)) {
- CreateMovingAnchor(context->p1,TRUE);
+ CreateMovingAnchor(context->p0,TRUE);
} else {
- dd = FindDistance( context->pm, pos );
+ dd = FindDistance( context->p1, pos );
if ( IsClose(dd)) {
- CreateMovingAnchor(context->pm,TRUE);
+ CreateMovingAnchor(context->p1,TRUE);
+ } else {
+ dd = FindDistance( context->pm, pos );
+ if ( IsClose(dd)) {
+ CreateMovingAnchor(context->pm,TRUE);
+ }
}
}
}
- break;
+ break;
case SEG_POLY:
case SEG_FILPOLY:;
CreateBoxAnchors(-1,&points(0));
@@ -1907,17 +2165,16 @@ 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:
- if ( MyGetKeyState() & WKEY_CTRL )
- OnTableEdgeEndPt( NULL, &pos );
case SEG_STRLIN:
case SEG_DIMLIN:
case SEG_BENCH:
@@ -1936,24 +2193,27 @@ STATUS_T DrawGeomModify(
if (lineInx < 0 ) {
InfoMessage( _("Not close to end of line"));
} else {
- InfoMessage("End selected, drag to reposition");
+ if (context->type == SEG_TBLEDGE) {
+ InfoMessage("End selected, drag to move +Ctl to lock to other edge end, +Shift lock to line");
+ } 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;
@@ -1961,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;
@@ -1990,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;
@@ -2005,6 +2268,7 @@ STATUS_T DrawGeomModify(
case SEG_FILPOLY:
d = 10000;
polyInx = 0;
+ wSetCursor(mainD.d,wCursorNone);
for ( inx=0; inx<4; inx++ ) {
if (IsClose(FindDistance(pos,points(inx).pt))) {
corner_mode = TRUE;
@@ -2027,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;
@@ -2050,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:
@@ -2071,21 +2334,38 @@ STATUS_T DrawGeomModify(
UndrawNewTrack( context->trk );
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 )) {
+ locked = TRUE;
+ }
+ }
+ /* No Break*/
case SEG_STRLIN:
case SEG_DIMLIN:
case SEG_BENCH:
- case SEG_TBLEDGE:
- if ( (MyGetKeyState() & WKEY_SHIFT) != 0) {
- d = FindDistance( pos, tempSegs(0).u.l.pos[1-lineInx] );
- Translate( &pos, tempSegs(0).u.l.pos[1-lineInx], segA1, d );
- } else if ((MyGetKeyState() & (WKEY_SHIFT|WKEY_CTRL|WKEY_ALT)) == WKEY_SHIFT ) {
- OnTrack( &pos, FALSE, FALSE );
- CreateEndAnchor(pos,TRUE);
+ if (!locked) {
+ if ((MyGetKeyState() & WKEY_SHIFT) != 0) { //Shift is on same line
+ 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
+ if (OnTrack( &pos, FALSE, FALSE )!=NULL) {
+ CreateEndAnchor(pos,TRUE);
+ locked = TRUE;
+ }
+ }
+ };
+ if (!locked) {
+ if (SnapPos(&pos)) { locked = TRUE; }
}
break;
default:
@@ -2093,19 +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:
- if ( MyGetKeyState() & WKEY_CTRL )
- OnTableEdgeEndPt( NULL, &pos );
- /* no break */
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;
@@ -2116,10 +2393,12 @@ 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;
pc = context->pc;
@@ -2159,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;
}
@@ -2174,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;
@@ -2192,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;
}
@@ -2221,16 +2504,19 @@ 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:
case SEG_FILPOLY:
+ wSetCursor(mainD.d,wCursorNone);
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)));
}
@@ -2244,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;
@@ -2267,19 +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;
}
-
- if (segInx == -1)
+ wSetCursor(mainD.d,defaultCursor);
+ if (segInx == -1) {
return C_CONTINUE;
+ }
switch (tempSegs(0).type) {
case SEG_TBLEDGE:
case SEG_STRLIN:
@@ -2294,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;
@@ -2315,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:
;
@@ -2330,120 +2624,162 @@ 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
+ 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(1);
+ 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*/
+ case C_OK:
case C_FINISH:
+ UndoStart("Modify Draw", "OK");
+ UndoModify(context->trk);
if (polyMode) {
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
+ }
+ context->state = MOD_NONE;
+ DrawNewTrack( context->trk );
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
return C_TERMINATE;
}
//copy changes back into track
@@ -2452,70 +2788,75 @@ 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);
+ 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:
- case C_CONFIRM:
- case C_TERMINATE:
context->state = MOD_NONE;
context->rotate_state = FALSE;
context->rot_moved = FALSE;
+ polyMode = FALSE;
DYNARR_RESET(trkSeg_t,anchors_da);
- DYNARR_RESET(trkSeg_t,tempSegs_da);
+ DYNARR_RESET( trkSeg_t, tempSegs_da );
+ DrawNewTrack( context->trk );
break;
default:
;
}
return C_CONTINUE;
}
+
+
diff --git a/app/bin/drawgeom.h b/app/bin/drawgeom.h
index 45814d7..d98cf1d 100644
--- a/app/bin/drawgeom.h
+++ b/app/bin/drawgeom.h
@@ -16,17 +16,15 @@
*
* 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
#define HAVE_DRAWGEOM_H
-#include "ccurve.h"
#include "common.h"
-#include "draw.h"
-#include "track.h"
-#include "wlib.h"
+#include "track.h" //- drawLineType_e PolyType_e
+#include "ccurve.h" //- curveData_t
#define OP_LINE (0)
#define OP_DIMLINE (1)
@@ -51,76 +49,78 @@
#define OP_LAST (OP_POLYLINE)
typedef struct {
- void (*message)( char *, ... );
- void (*Redraw)( void );
- drawCmd_t *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;
- } 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)( char *, ... );
- void (*Redraw)( void );
- drawCmd_t *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 3b79c7e..ac634cf 100644
--- a/app/bin/dxfformat.c
+++ b/app/bin/dxfformat.c
@@ -17,14 +17,8 @@
*
* 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 <stdarg.h>
-#include <string.h>
-#include <stdio.h>
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
#include <dynstring.h>
#include "dxfformat.h"
@@ -32,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"}
};
@@ -48,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
@@ -64,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);
}
/**
@@ -98,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);
}
/**
@@ -116,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);
}
/**
@@ -148,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);
}
/**
@@ -171,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);
}
/**
@@ -195,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);
}
/**
@@ -219,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);
}
/**
@@ -244,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
@@ -279,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);
@@ -302,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\
@@ -340,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\
@@ -364,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 214f63c..3988696 100644
--- a/app/bin/dxfoutput.c
+++ b/app/bin/dxfoutput.c
@@ -17,22 +17,10 @@
*
* 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>
- #include <windows.h>
-#else
- #include <errno.h>
-#endif
-
#include <xtrkcad-config.h>
-#include <locale.h>
-#include <assert.h>
#include <dynstring.h>
@@ -40,199 +28,223 @@
#include "custom.h"
#include "dxfformat.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "paths.h"
#include "track.h"
-#include "utility.h"
+#include "draw.h"
+#include "common-ui.h"
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 DxfFillPoly(
- drawCmd_p d,
- int cnt,
- coOrd * pts,
- int * types,
- wDrawColor color,
- wDrawWidth width,
- int fill,
- int open )
+static void DxfPoly(
+ 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 (!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)
+{
+ coOrd p[4];
+ // p1 p2
+ // p0 p3
+ p[0].x = p[1].x = orig.x;
+ p[2].x = p[3].x = orig.x+size.x;
+ p[0].y = p[3].y = orig.y;
+ p[1].y = p[2].y = orig.y+size.y;
+ DxfPoly( d, 4, p, NULL, color, 0, eOpts );
}
static drawFuncs_t dxfDrawFuncs = {
- 0,
- DxfLine,
- DxfArc,
- DxfString,
- DxfBitMap,
- DxfFillPoly,
- DxfFillCircle
+ 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;
- char *oldLocale;
+ 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;
- }
-
- oldLocale = SaveLocale("C");
- 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);
- RestoreLocale(oldLocale);
- Reset();
- wSetCursor(mainD.d, defaultCursor);
- return TRUE;
+ fclose(dxfF);
+ SetUserLocale();
+ Reset();
+ wSetCursor(mainD.d, defaultCursor);
+ return TRUE;
}
/**
* Create and show the dialog for selected the DXF export filename
*/
-void DoExportDXF(void)
+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 a9e5fee..98fcbab 100644
--- a/app/bin/elev.c
+++ b/app/bin/elev.c
@@ -1,5 +1,5 @@
/** \file elev.c
- *
+ *
*/
/* XTrkCad - Model Railroad CAD
@@ -17,21 +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 <math.h>
#include "ccurve.h"
+#include "tbezier.h"
+#include "tcornu.h"
#include "cundo.h"
-#include "messages.h"
#include "param.h"
#include "shrtpath.h"
#include "track.h"
-#include "utility.h"
-#include "string.h"
+#include "common-ui.h"
-EXPORT long oldElevationEvaluation = 0;
+/** @logcmd @showrefby fillElev=n elev.c */
static int log_fillElev = 0;
+/** @logcmd @showrefby dumpElev=n elev.c */
static int log_dumpElev = 0;
static BOOL_T log_fillElev_initted;
static int checkTrk = 0;
@@ -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,100 +129,70 @@ 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;
- DIST_T elev0, elev1, dist0, dist1;
+ DIST_T grade = 0.0;
+ DIST_T elev0;
BOOL_T rc = FALSE;
-if (oldElevationEvaluation) {
- int rc0, rc1;
- if (GetTrkEndElevMode(trk,ep) == ELEV_DEF) {
- if (elevR)
- *elevR = GetTrkEndElevHeight(trk,ep);
- if (gradeR)
- *gradeR = 0.0;
- return TRUE;
- }
- rc0 = FindDefinedElev( trk, ep, 0, onpath, &elev0, &dist0 );
- rc1 = FindDefinedElev( trk, ep, 1, onpath, &elev1, &dist1 );
- if ( rc0 == FDE_DEF && rc1 == FDE_DEF ) {
- if (dist0+dist1 > 0.1)
- grade = (elev1-elev0)/(dist0+dist1);
- else
- grade = 0.0;
- elev0 += grade*dist0;
- rc = TRUE;
- } else if ( rc0 == FDE_DEF && rc1 == FDE_END ) {
- grade = 0.0;
- rc = TRUE;
- } else if ( rc1 == FDE_DEF && rc0 == FDE_END ) {
- grade = 0.0;
- elev0 = elev1;
- rc = TRUE;
- } else if ( rc0 == FDE_END && rc1 == FDE_END ) {
- grade = 0.0;
- elev0 = 0.0;
- rc = TRUE;
- } else {
- grade = 0.0;
- elev0 = 0.0;
- }
-} else {
track_p trk1;
EPINX_T ep1;
- grade = -1;
rc = TRUE;
if ( EndPtIsDefinedElev(trk,ep) ) {
elev0 = GetTrkEndElevHeight(trk,ep);
rc = FALSE;
- } else {
- if (force || (!GetTrkEndElevCachedHeight(trk,ep,&elev0,&dist0))) {
- elev0 = GetElevation( trk );
- dist0 = GetTrkLength( trk, ep, -1 );
- }
- SetTrkEndElevCachedHeight(trk,ep,elev0,dist0);
+ } else if (force || (!GetTrkEndElevCachedHeight(trk,ep,&elev0,&grade))) {
trk1 = GetTrkEndTrk( trk, ep );
if (trk1!=NULL) {
+ // Compute weighted average of the 2 track elevation
ep1 = GetEndPtConnectedToMe(trk1,trk);
- if (force || (!GetTrkEndElevCachedHeight(trk1,ep1,&elev1,&dist1))) {
+ if (force || (!GetTrkEndElevCachedHeight(trk1,ep1,&elev0,&grade))) {
+ // Not cached, need to compute
+ DIST_T elev1, dist0, dist1;
+ elev0 = GetElevation( trk );
+ dist0 = GetTrkLength( trk, ep, -1 );
elev1 = GetElevation( trk1 );
dist1 = GetTrkLength( trk1, ep1, -1 );
- }
- SetTrkEndElevCachedHeight(trk1,ep1,elev1,dist1);
- if (dist0+dist1>0.1) {
- grade = (elev1-elev0)/(dist0+dist1);
- elev0 += grade*dist0;
+ if (dist0+dist1>0.1) {
+ grade = (elev1-elev0)/(dist0+dist1);
+ elev0 += grade*dist0;
+ } else {
+ elev0 = (elev0+elev1)/2.0;
+ rc = FALSE;
+ }
+ SetTrkEndElevCachedHeight(trk,ep,elev0,grade);
+ SetTrkEndElevCachedHeight(trk1,ep1,elev0,-grade);
} else {
- elev0 = (elev0+elev1)/2.0;
- rc = FALSE;
- SetTrkEndElevCachedHeight(trk,ep,elev0,dist0);
- SetTrkEndElevCachedHeight(trk1,ep1,elev0,dist1);
+ // flip grade from connected EP
+ grade = - grade;
}
} else {
- grade = 0.0;
+ // Not connected - use track elevation
+ elev0 = GetElevation( trk );
+ SetTrkEndElevCachedHeight(trk,ep,elev0,0.0);
}
-
}
-}
-if ( elevR )
- *elevR = elev0;
-if ( gradeR )
- *gradeR = grade;
-return rc;
+ if ( elevR ) {
+ *elevR = elev0;
+ }
+ if ( gradeR ) {
+ *gradeR = grade;
+ }
+ return rc;
}
@@ -231,10 +204,10 @@ return rc;
*/
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 )
@@ -250,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;
@@ -259,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 ) )
}
@@ -283,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;
@@ -319,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 );
+ }
}
}
}
@@ -344,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;
}
@@ -358,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;
@@ -384,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:
@@ -407,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;
@@ -424,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;
@@ -437,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;
@@ -469,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 ) )
}
@@ -495,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 );
@@ -521,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;
@@ -534,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;
}
@@ -569,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;
@@ -587,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 );
@@ -624,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 ) )
}
@@ -651,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;
}
@@ -664,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:
@@ -684,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 )
@@ -776,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);
@@ -795,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 )
@@ -816,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 ) )
}
@@ -836,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
@@ -866,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 );
@@ -895,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:
@@ -918,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;
@@ -945,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++ ) {
@@ -978,17 +981,18 @@ 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
*
*/
-EXPORT void RecomputeElevations( void )
+EXPORT void RecomputeElevations( void * unused )
{
long time0 = wGetTimer();
elevPrefix = "RECELV";
@@ -1001,29 +1005,29 @@ EXPORT void RecomputeElevations( void )
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" );
-#ifdef LATER
- EPINX_T ep;
- int mode;
+ }
+ EPINX_T ep;
+ int mode;
for ( ep=0; ep<GetTrkEndPtCnt(trk); ep++ ) {
mode = GetTrkEndElevMode( trk, ep );
- ComputeElev( trk, ep, FALSE, &elev, NULL );
+ 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 );
}
-#endif
}
}
}
@@ -1037,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 ) )
}
@@ -1073,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;
@@ -1088,7 +1096,7 @@ EXPORT DIST_T GetElevation( track_p trk )
/*
* DYNAMIC ELEVATION COMPUTATION
- *
+ *
* Utilities
*
*/
@@ -1107,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 );
+ }
}
@@ -1116,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;
@@ -1147,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;
+ }
}
}
@@ -1161,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 );
@@ -1203,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) ) {
@@ -1222,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;
@@ -1239,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 )) ) {
@@ -1252,7 +1270,7 @@ EXPORT void UpdateTrkEndElev(
if ( changed ) {
ClrTrkElev( trk );
if ( trk1 ) {
- ep1 = GetEndPtConnectedToMe( trk1, trk );
+// ep1 = GetEndPtConnectedToMe( trk1, trk );
ClrTrkElev( trk1 );
}
UpdateAllElevations();
@@ -1266,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 );
+ }
}
@@ -1295,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 ) ) {
+ 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 a9d8f4f..86a67cf 100644
--- a/app/bin/file2uri.c
+++ b/app/bin/file2uri.c
@@ -2,46 +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.
- */
-
-#include <string.h>
-#include <stdio.h>
-#include "wlib.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
+ */
+
+#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;
@@ -51,17 +49,18 @@ File2URI(char *fileName, unsigned resultLen, char *resultBuffer)
}
*currentDest = '\0';
- return(strlen(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++;
@@ -79,5 +78,5 @@ URI2File(char *encodedFileName, unsigned resultLen, char *resultBuffer)
}
}
*currentDest = '\0';
- return(strlen(resultBuffer));
+ return((unsigned)strlen(resultBuffer));
}
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 cb0c8de..4741c05 100644
--- a/app/bin/fileio.c
+++ b/app/bin/fileio.c
@@ -17,35 +17,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 <stdlib.h>
-#include <stdio.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#include <dirent.h>
-#include <errno.h>
-#endif
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <time.h>
-#include <ctype.h>
-#ifdef WINDOWS
- #include <io.h>
- #define W_OK (2)
- #define access _access
- #include <windows.h>
-#endif
-#include <sys/stat.h>
-#include <stdarg.h>
-#include <locale.h>
-
-#include <stdint.h>
-
-#include <assert.h>
-
#include <cJSON.h>
#include "archive.h"
@@ -58,101 +32,106 @@
#include "draw.h"
#include "fileio.h"
#include "fcntl.h"
-#include "i18n.h"
#include "layout.h"
#include "manifest.h"
-#include "messages.h"
#include "misc.h"
#include "param.h"
#include "include/paramfile.h"
+#include "include/paramfilelist.h"
#include "paths.h"
#include "track.h"
-#include "utility.h"
#include "version.h"
#include "dynstring.h"
+#include "common-ui.h"
+#include "ctrain.h"
-#ifdef WINDOWS
+#ifdef UTFCONVERT
#include "include/utf8convert.h"
-#endif // WINDOWS
+#endif // UTFCONVERT
-
-/*#define TIME_READTRACKFILE*/
+EXPORT dynArr_t paramProc_da;
#define COPYBLOCKSIZE 1024
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
-/**
- * Save the old locale and set to new.
- *
- * \param newlocale IN the new locale to set
- * \return pointer to the old locale
- */
-
-char *
-SaveLocale( char *newLocale )
+//
+// 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
+static int log_locale = 0; // logging
+static int log_timereadfile = 0;
+
+EXPORT void SetCLocale()
{
- char *oldLocale;
- char *saveLocale = NULL;
-
- /* get old locale setting */
- oldLocale = setlocale(LC_ALL, NULL);
-
- /* allocate memory to save */
- if (oldLocale)
- saveLocale = strdup( oldLocale );
-
- setlocale(LC_ALL, newLocale );
-
- return( saveLocale );
+ if ( sUserLocale == NULL ) {
+ sUserLocale = MyStrdup( setlocale( LC_ALL, NULL ) );
+ }
+ if ( lCLocale == 0 ) {
+ LOG( log_locale, 1, ( "Set C Locale: %ld\n", ++nCLocale ) );
+ setlocale( LC_ALL, "C" );
+#ifdef LC_MESSAGES
+ setlocale( LC_MESSAGES, "");
+#endif
+ }
+ lCLocale++;
+ if ( lCLocale > 1 ) {
+ LOG( log_locale, 3, ( "SetClocale - C! %ld\n", nCLocale) );
+ } else if ( lCLocale < 1 ) {
+ LOG( log_locale, 2, ( "SetClocale - User! %ld\n", nCLocale) );
+ }
}
-/**
- * Restore a previously saved locale.
- *
- * \param locale IN return value from earlier call to SaveLocale
- */
-
-void
-RestoreLocale( char * locale )
+EXPORT void SetUserLocale()
{
- if( locale ) {
- setlocale( LC_ALL, locale );
- free( locale );
+ if ( lCLocale == 1 ) {
+ LOG( log_locale, 1, ( "Set %s Locale: %ld\n", sUserLocale, ++nCLocale ) );
+ setlocale( LC_ALL, sUserLocale );
+ }
+ lCLocale--;
+ if ( lCLocale < 0 ) {
+ LOG( log_locale, 2, ("SetUserLocale - User! %ld\n", nCLocale) );
+ } else if ( lCLocale > 0 ) {
+ LOG( log_locale, 3, ("SetUserLocale - C! %ld\n", nCLocale) );
}
}
@@ -178,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 )
@@ -221,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 );
@@ -254,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 );
}
@@ -291,9 +273,9 @@ EXPORT void SyntaxError(
*/
EXPORT BOOL_T GetArgs(
- char * line,
- char * format,
- ... )
+ char * line,
+ char * format,
+ ... )
{
char * cp, * cq;
long * pl;
@@ -304,15 +286,16 @@ EXPORT BOOL_T GetArgs(
char * ps;
char ** qp;
va_list ap;
- char *oldLocale = NULL;
char * sError = NULL;
- oldLocale = SaveLocale("C");
+ 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;
@@ -363,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':
@@ -418,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++ = '\"';
@@ -453,25 +438,25 @@ EXPORT BOOL_T GetArgs(
} else {
message[0] = '\0';
}
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(message);
#endif
*qp = (char*)ConvertFromEscapedText(message);
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 );
- RestoreLocale(oldLocale);
if ( sError ) {
InputError( sError, TRUE, cp );
return FALSE;
@@ -484,17 +469,19 @@ EXPORT BOOL_T GetArgs(
wBool_t IsEND( char * sEnd )
{
char * cp;
- wBool_t bAllowNakedENDs = paramVersion < 12;
+ 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;
}
@@ -526,11 +513,11 @@ ReadMultilineText()
string = MyStrdup(DynStringToCStr(&noteText));
string[strlen(string) - 1] = '\0';
-#ifdef WINDOWS
+#ifdef UTFCONVERT
if (wIsUTF8(string)) {
ConvertUTF8ToSystem(string);
}
-#endif // WINDOWS
+#endif // UTFCONVERT
DynStringFree(&noteText);
return(string);
@@ -538,8 +525,8 @@ ReadMultilineText()
EXPORT wBool_t ParseRoomSize(
- char * s,
- coOrd * roomSizeRet )
+ char * s,
+ coOrd * roomSizeRet )
{
coOrd size;
char *cp;
@@ -547,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) {
@@ -573,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;
@@ -585,7 +572,7 @@ EXPORT char * PutTitle( char * cp )
{
static char *title;
char * tp;
- unsigned cnt = strlen(cp) * 2 + 3; // add 3 for quotes and terminating \0
+ size_t cnt = strlen(cp) * 2 + 3; // add 3 for quotes and terminating \0
if (!title) {
title = MyMalloc(cnt);
@@ -604,18 +591,19 @@ EXPORT char * PutTitle( char * cp )
}
cp++;
}
- if ( *cp )
+ if ( *cp ) {
NoticeMessage( _("putTitle: title too long: %s"), _("Ok"), NULL, title );
+ }
*tp = '\0';
-#ifdef WINDOWS
+#ifdef UTFCONVERT
if(RequiresConvToUTF8(title)) {
char *out = MyMalloc(cnt);
- wSystemToUTF8(title, out, cnt);
+ wSystemToUTF8(title, out, (unsigned int)cnt);
strcpy(title, out);
MyFree(out);
}
-#endif // WINDOWS
+#endif // UTFCONVERT
return title;
}
@@ -630,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 );
}
@@ -654,11 +643,6 @@ static struct wFilSel_t * loadFile_fs = NULL;
static struct wFilSel_t * saveFile_fs = NULL;
static struct wFilSel_t * examplesFile_fs = NULL;
-static wWin_p checkPointingW;
-static paramData_t checkPointingPLs[] = {
- { PD_MESSAGE, N_("Check Pointing") } };
-static paramGroup_t checkPointingPG = { "checkpoint", 0, checkPointingPLs, sizeof checkPointingPLs/sizeof checkPointingPLs[0] };
-
static char * checkPtFileName1;
static char * checkPtFileName2;
static char * checkPtFileNameBackup;
@@ -668,39 +652,37 @@ 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;
long scale;
char * cp;
- char *oldLocale = NULL;
int ret = TRUE;
- oldLocale = SaveLocale( "C" );
-
paramFile = fopen( pathName, "r" );
if (paramFile == NULL) {
- /* Reset the locale settings */
- RestoreLocale( oldLocale );
-
- 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;
paramFileName = strdup( fileName );
@@ -708,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;
@@ -718,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;
}
@@ -737,31 +721,35 @@ 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 WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(paramLine + 7);
-#endif // WINDOWS
+#endif // UTFCONVERT
SetLayoutTitle(paramLine + 7);
} else if (strncmp( paramLine, "TITLE2 ", 7 ) == 0) {
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(paramLine + 7);
-#endif // WINDOWS
+#endif // UTFCONVERT
SetLayoutSubtitle(paramLine + 7);
} else if (strncmp( paramLine, "ROOMSIZE", 8 ) == 0) {
if ( ParseRoomSize( paramLine+8, &roomSize ) ) {
@@ -769,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++;
@@ -794,51 +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);
-
- RestoreLocale( oldLocale );
+ 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)
{
-#ifdef TIME_READTRACKFILE
- long time0, time1;
-#endif
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"));
+ return FALSE;
+ }
- if ( ! bExample )
+ if ( ! bExample ) {
SetCurrentPath(LAYOUTPATHKEY, fileName[0]);
+ }
bReadOnly = bExample;
paramVersion = -1;
wSetCursor( mainD.d, wCursorWait );
@@ -846,20 +847,19 @@ int LoadTracks(
ClearTracks();
ResetLayers();
checkPtMark = changed = 0;
- LayoutBackGroundInit(TRUE); //Keep values of background -> will be overriden my archive
+ if (!data) {
+ LayoutBackGroundInit(
+ TRUE); //Keep values of background -> will be overriden by archive
+ }
UndoSuspend();
useCurrentLayer = FALSE;
-#ifdef TIME_READTRACKFILE
- time0 = wGetTimer();
-#endif
- nameOfFile = FindFilename( fileName[ 0 ] );
- /*
- * 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]);
@@ -883,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);
@@ -904,55 +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]);
- if (loadXTC && ReadTrackFile( full_path, FindFilename( fileName[0]), TRUE, TRUE, TRUE )) {
+ unsigned long time0 = wGetTimer();
+ if (loadXTC
+ && ReadTrackFile( full_path, FindFilename( fileName[0]), TRUE, TRUE, TRUE )) {
nameOfFile = NULL;
extOfFile = NULL;
@@ -962,21 +959,19 @@ 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();
-#ifdef TIME_READTRACKFILE
- time1 = wGetTimer();
- printf( "time= %ld ms \n", time1-time0 );
-#endif
- RecomputeElevations();
+ LOG( log_timereadfile, 1, ( "Read time (%s) = %lu mS \n", fileName[0],
+ wGetTimer()-time0 ) );
+ RecomputeElevations(NULL);
AttachTrains();
DoChangeNotification( CHANGE_ALL );
DoUpdateTitles();
- LoadLayerLists();
LayerSetCounts();
}
@@ -984,6 +979,8 @@ int LoadTracks(
free(full_path);
full_path = NULL;
+ UpdateLayerDlg(curLayer);
+
UndoResume();
Reset();
wSetCursor( mainD.d, defaultCursor );
@@ -994,42 +991,43 @@ int LoadTracks(
* Load the layout specified by data. Filename may contain a full
* path.
* \param index IN ignored
- * \param label IN ignored
+ * \param label IN if not NULL - during startup - set flag to not load background
* \param data IN path and filename
*/
EXPORT void DoFileList(
- int index,
- char * label,
- void * data )
+ int index,
+ char * label,
+ void * data )
{
char *pathName = (char*)data;
bExample = FALSE;
- LoadTracks( 1, &pathName, NULL );
+ if (label) {
+ LoadTracks( 1, &pathName, I2VP(1));
+ } else {
+ LoadTracks( 1, &pathName, NULL );
+ }
}
-
static BOOL_T DoSaveTracks(
- const char * fileName )
+ const char * fileName )
{
FILE * f;
time_t clock;
BOOL_T rc = TRUE;
- char *oldLocale = NULL;
- oldLocale = SaveLocale( "C" );
f = fopen( fileName, "w" );
if (f==NULL) {
- RestoreLocale( oldLocale );
-
- 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() );
@@ -1042,15 +1040,15 @@ 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;
- RestoreLocale( oldLocale );
-
checkPtMark = changed;
wSetCursor( mainD.d, defaultCursor );
+ SetUserLocale();
return rc;
}
@@ -1065,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);
@@ -1142,94 +1149,157 @@ 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
- char *oldLocale = SaveLocale("C");
- 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 );
- }
- RestoreLocale(oldLocale);
+ 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
-
- DoSaveTracks( fileName[ 0 ] );
+ } else {
+ success = DoSaveTracks(fileName[0]);
+ }
- nameOfFile = FindFilename( fileName[ 0 ] );
- wMenuListAdd( fileList_ml, 0, nameOfFile, MyStrdup(fileName[ 0 ]) );
- checkPtMark = changed = 0;
+ if (success) {
+ 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;
}
+/**
+ * Save information about current files and some settings to preferences file.
+ */
-EXPORT void DoSave( doSaveCallBack_p after )
+EXPORT void SaveState(void)
{
- doAfterSave = after;
+ 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 );
+ wFilSelect( saveFile_fs, GetCurrentPath(LAYOUTPATHKEY));
+ checkPtMark = 1;
+ SetWindowTitle();
+ CleanupCheckpointFiles(); //Remove old checkpoint
+ SaveState();
+
+}
+
+EXPORT void DoSave( void * doAfterSaveVP )
+{
+ doAfterSave = 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));
- changed = checkPtMark = 1;
+ checkPtMark = 1;
} else {
char *temp = GetLayoutFullPath();
SaveTracks( 1, &temp, NULL );
}
SetWindowTitle();
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
-EXPORT void DoSaveAs( doSaveCallBack_p after )
+EXPORT void DoSaveAs( void * doAfterSaveVP )
{
- doAfterSave = after;
+ 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));
- changed = checkPtMark = 1;
+ checkPtMark = 1;
SetWindowTitle();
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
@@ -1237,11 +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;
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
@@ -1249,13 +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, &bExample );
+ sSourceFilePattern, LoadTracks, NULL );
}
bExample = TRUE;
sprintf( message, "%s" FILE_SEP_CHAR "examples" FILE_SEP_CHAR, libDir );
wFilSelect( examplesFile_fs, message );
+ CleanupCheckpointFiles(); //Remove old checkpoint
SaveState();
}
@@ -1264,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;
@@ -1273,12 +1344,8 @@ EXPORT void DoCheckPoint( void )
MakeFullpath(&checkPtFileNameBackup, workingDir, sCheckPointBF, NULL);
}
- if (checkPointingW == NULL) {
- ParamRegister( &checkPointingPG );
- checkPointingW = ParamCreateDialog( &checkPointingPG, MakeWindowTitle(_("Check Pointing")), NULL, NULL, NULL, FALSE, NULL, F_TOP|F_CENTER, NULL );
- }
rename( checkPtFileName1, checkPtFileName2 );
- //wShow( checkPointingW );
+
rc = DoSaveTracks( checkPtFileName1 );
/* could the check point file be written ok? */
@@ -1305,10 +1372,38 @@ EXPORT void DoCheckPoint( void )
rename( checkPtFileName2, checkPtFileName1 );
}
- //wHide( checkPointingW );
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
@@ -1319,10 +1414,8 @@ EXPORT void DoCheckPoint( void )
*
*/
-EXPORT void CleanupFiles( void )
+EXPORT void CleanupCheckpointFiles( void )
{
- char *tempDir;
-
if( checkPtFileName1 ) {
if (checkPtFileNameBackup) {
remove( checkPtFileNameBackup );
@@ -1331,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) {
@@ -1382,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
@@ -1396,13 +1506,17 @@ EXPORT int LoadCheckpoint( BOOL_T sameName )
SetCurrentPath( LAYOUTPATHKEY, initialFile );
SetLayoutFullPath(initialFile);
}
- } else SetLayoutFullPath("");
+ } else { SetLayoutFullPath(""); }
- RecomputeElevations();
+ RecomputeElevations(NULL);
AttachTrains();
DoChangeNotification( CHANGE_ALL );
DoUpdateTitles();
- } else SetLayoutFullPath("");
+
+ } else { SetLayoutFullPath(""); }
+
+ LayerSetCounts();
+ UpdateLayerDlg(curLayer);
Reset();
UndoResume();
@@ -1436,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;
@@ -1452,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();
@@ -1467,24 +1581,25 @@ 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();*/
EnableCommands();
wSetCursor( mainD.d, defaultCursor );
paramVersion = paramVersionOld;
- DoCommandB( (void*)(intptr_t)selectCmdInx );
+ DoCommandB( I2VP(selectCmdInx) );
SelectRecount();
return TRUE;
}
EXPORT void DoImport( void * type )
{
- importAsModule = (int)(long)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));
}
@@ -1500,36 +1615,36 @@ 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;
- char *oldLocale = NULL;
- 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;
}
- oldLocale = SaveLocale("C");
+ SetCLocale();
wSetCursor( mainD.d, wCursorWait );
time(&clock);
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);
- RestoreLocale( oldLocale );
+ SetUserLocale();
Reset();
wSetCursor( mainD.d, defaultCursor );
@@ -1538,56 +1653,54 @@ static int DoExportTracks(
}
-EXPORT void DoExport( void )
+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));
}
-EXPORT BOOL_T EditCopy( void )
+EXPORT wBool_t editStatus = TRUE;
+
+EXPORT void EditCopy( void * unused )
{
+ editStatus = FALSE;
FILE * f;
time_t clock;
- char *oldLocale = NULL;
if (selectedTrackCount <= 0) {
ErrorMessage( MSG_NO_SELECTED_TRK );
- return FALSE;
+ return;
}
f = fopen( clipBoardN, "w" );
if (f == NULL) {
- NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Clipboard"), clipBoardN, strerror(errno) );
- return FALSE;
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Clipboard"), clipBoardN,
+ strerror(errno) );
+ return;
}
- oldLocale = SaveLocale("C");
+ SetCLocale();
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 );
- RestoreLocale(oldLocale);
+ SetUserLocale();
fclose(f);
- return TRUE;
+ editStatus = TRUE;
}
-EXPORT BOOL_T EditCut( void )
+EXPORT void EditCut( void * unused )
{
- if (!EditCopy())
- return FALSE;
+ EditCopy(NULL);
+ if ( !editStatus ) { return; }
SelectDelete();
- return TRUE;
}
@@ -1598,13 +1711,10 @@ EXPORT BOOL_T EditCut( void )
* \return TRUE if success, FALSE on error (file not found)
*/
-BOOL_T EditPastePlace( wBool_t inPlace )
+static BOOL_T EditPastePlace( wBool_t inPlace )
{
BOOL_T rc = TRUE;
- char *oldLocale = NULL;
-
- oldLocale = SaveLocale("C");
wSetCursor( mainD.d, wCursorWait );
Reset();
@@ -1623,31 +1733,32 @@ 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();
wSetCursor( mainD.d, defaultCursor );
- DoCommandB( (void*)(intptr_t)selectCmdInx );
+ DoCommandB( I2VP(selectCmdInx) );
SelectRecount();
UpdateAllElevations();
- RestoreLocale(oldLocale);
return rc;
}
-EXPORT BOOL_T EditPaste( void) {
- return EditPastePlace(FALSE);
+EXPORT void EditPaste( void * unused )
+{
+ editStatus = EditPastePlace(FALSE);
}
-
-EXPORT BOOL_T EditClone( void ) {
- BOOL_T rc = TRUE;
- if (!EditCopy()) return FALSE;
- if (!EditPastePlace(TRUE)) return FALSE;
- return rc;
+
+EXPORT void EditClone( void * unused )
+{
+ EditCopy( NULL );
+ if ( !editStatus ) { return; }
+ editStatus = EditPastePlace(TRUE);
}
/*****************************************************************************
@@ -1656,15 +1767,40 @@ EXPORT BOOL_T EditClone( void ) {
*
*/
-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 13761bf..0ea80af 100644
--- a/app/bin/fileio.h
+++ b/app/bin/fileio.h
@@ -16,16 +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
*/
#ifndef FILEIO_H
#define FILEIO_H
-#include <stdio.h>
-
#include "common.h"
-#include "misc.h"
extern FILE * paramFile;
extern char *paramFileName;
@@ -45,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;
@@ -59,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"
@@ -69,6 +67,7 @@ extern wMenuList_p fileList_ml;
#define BITMAPPATHKEY "bitmap"
#define BACKGROUNDPATHKEY "images"
#define DXFPATHKEY "dxf"
+#define SVGPATHKEY "svg"
#define PARTLISTPATHKEY "parts"
#define CARSPATHKEY "cars"
#define PARAMETERPATHKEY "params"
@@ -81,7 +80,7 @@ typedef struct {
char * name;
readParam_t proc;
} paramProc_t;
-dynArr_t paramProc_da;
+extern dynArr_t paramProc_da;
#define paramProc(N) DYNARR_N( paramProc_t, paramProc_da, N )
void Stripcr( char * );
@@ -98,46 +97,47 @@ 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 );
FILE * OpenCustom( char * );
-#ifdef WINDOWS
-#define fopen( FN, MODE ) wFileOpen( FN, MODE )
-#endif
-
void SetWindowTitle( void );
char * PutTitle( char * cp );
void ParamFileListLoad(int paramFileCnt, dynArr_t *paramFiles);
-void DoParamFiles(void * junk);
+void DoParamFiles(void * unused);
int LoadTracks( int cnt, char **fileName, void *data );
-typedef void (*doSaveCallBack_p)( void );
-void DoSave( doSaveCallBack_p );
-void DoSaveAs( doSaveCallBack_p );
+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 * );
-void DoExport( void );
-void DoExportDXF( void );
-BOOL_T EditCopy( void );
-BOOL_T EditCut( void );
-BOOL_T EditPaste( void );
-BOOL_T EditClone( void );
+void DoImport( void * typeVP );
+void DoExport( void * unused );
+void DoExportDXF( void * unused );
+#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 );
+void EditPaste( void * unused );
+void EditClone( void * unused );
void DoRecord( void * );
void AddPlaybackProc( char *, playbackProc_p, void * );
-EXPORT void TakeSnapshot( drawCmd_t * );
+EXPORT void TakeSnapshot( drawCmd_p );
void PlaybackMessage( char * );
void DoPlayBack( void * );
int MyGetKeyState( void );
@@ -146,14 +146,16 @@ int RegLevel( void );
void ReadKey( void );
void PopupRegister( void * );
+void LoadFileList( void );
void FileInit( void );
BOOL_T MacroInit( void );
-char *SaveLocale( char *newLocale );
-void RestoreLocale( char * locale );
+int Copyfile( const char * fn1, const char * fn2);
+void SetCLocale();
+void SetUserLocale();
// Parameter file search
-void DoSearchParams(void * junk);
+void DoSearchParams(void * unused);
#endif
diff --git a/app/bin/filenoteui.c b/app/bin/filenoteui.c
index 5ffddd1..9b1c2d5 100644
--- a/app/bin/filenoteui.c
+++ b/app/bin/filenoteui.c
@@ -17,72 +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 <string.h>
-#include <stdbool.h>
-#ifdef WINDOWS
- #include <io.h>
- #define access(path,mode) _access(path,mode)
- #define F_OK (0)
-#else
- #include <unistd.h>
-#endif
#include "custom.h"
#include "dynstring.h"
#include "file2uri.h"
-#include "i18n.h"
#include "misc.h"
#include "note.h"
#include "param.h"
#include "paths.h"
#include "include/stringxtc.h"
#include "track.h"
-#include "wlib.h"
-
-extern BOOL_T inDescribeCmd;
#define MYMIN(x, y) (((x) < (y)) ? (x) : (y))
#define DOCUMENTFILEPATTERN "All Files (*.*)|*.*"
#define DOCUMENTPATHKEY "document"
-static struct extraDataNote 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, (void*)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, (void*)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, (void*)200, N_("Document"), BO_READONLY, (void *)0L },
+ { 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, (void *)NoteFileBrowse, "browse", 0L, NULL, N_("Select...") },
+ { PD_BUTTON, NoteFileBrowse, "browse", 0L, NULL, N_("Select...") },
#define I_OPEN (6)
- { PD_BUTTON, (void*)NoteFileOpenExternal, "openfile", PDO_DLGHORZ, NULL, N_("Open...") },
+ { PD_BUTTON, NoteFileOpenExternal, "openfile", PDO_DLGHORZ, NULL, N_("Open...") },
//#define I_ARCHIVE (7)
// { PD_TOGGLE, &noteFileData.inArchive, "archive", 0, toggleLabels, NULL },
};
-static paramGroup_t fileEditPG = { "fileEdit", 0, fileEditPLs, sizeof fileEditPLs / sizeof fileEditPLs[0] };
-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 * xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
return(xx->op == OP_NOTEFILE );
}
@@ -95,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);
}
@@ -114,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);
}
}
}
@@ -165,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
@@ -220,10 +217,23 @@ 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();
- FileIsChanged();
+ SetFileChanged();
}
/**
@@ -233,37 +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)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
-
- if (!fileEditW) {
- 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));
-
- 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);
}
/**
@@ -273,7 +273,7 @@ void CreateEditFileDialog(track_p trk, char * windowTitle)
void ActivateFileNote(track_p trk)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
NoteFileOpen(xx->noteData.fileData.path);
}
@@ -288,26 +288,34 @@ void ActivateFileNote(track_p trk)
void DescribeFileNote(track_p trk, char * str, CSIZE_T len)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
- DynString statusLine;
-
- DynStringMalloc(&statusLine, 80);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
+ DynString statusLine;
+
+ DynStringMalloc(&statusLine, 80);
+
+ DynStringPrintf(&statusLine,
+ _("Document(%d) Layer=%d %-.80s [%s]"),
+ GetTrkIndex(trk),
+ GetTrkLayer(trk) + 1,
+ xx->noteData.fileData.title,
+ xx->noteData.fileData.path);
+
+ strcpy(str, DynStringToCStr(&statusLine));
+ DynStringFree(&statusLine);
+ if ( ! inDescribeCmd ) {
+ return;
+ }
- DynStringPrintf(&statusLine,
- _("Document(%d) Layer=%d %-.80s [%s]"),
- GetTrkIndex(trk),
- GetTrkLayer(trk) + 1,
- xx->noteData.fileData.title,
- xx->noteData.fileData.path);
- strcpy(str, DynStringToCStr(&statusLine));
- DynStringFree(&statusLine);
+ 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 );
- if (inDescribeCmd) {
- NoteStateSave(trk);
-
- CreateEditFileDialog(trk, _("Update document"));
- }
+ CreateEditFileDialog(_("Update Document"));
}
/**
@@ -317,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 * xx = (struct extraDataNote *)GetTrkExtraData(trk);
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 a8ed631..8782803 100644
--- a/app/bin/i18n.c
+++ b/app/bin/i18n.c
@@ -16,20 +16,19 @@
*
* 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>
-#include <stdio.h>
#include <stdlib.h>
#include "i18n.h"
#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\
@@ -40,23 +39,15 @@ void InitGettext( void )
{
#ifdef XTRKCAD_USE_GETTEXT
char directory[2048];
-
+
setlocale(LC_ALL, "");
-
-#ifdef WINDOWS
+
// build the correct directory path
strcpy(directory, wGetAppLibDir());
strcat( directory, "/../locale" );
+#ifdef WINDOWS
_fullpath( directory, directory, 2048 );
-#else
- #ifdef XTRKCAD_CMAKE_BUILD
- strcpy(directory, XTRKCAD_INSTALL_PREFIX);
- strcat(directory, "/share");
- #else
- strcpy(directory, wGetAppLibDir());
- #endif
- strcat(directory, "/locale");
-#endif
+#endif
// initialize gettext
bindtextdomain(XTRKCAD_PACKAGE, directory);
bind_textdomain_codeset(XTRKCAD_PACKAGE, "UTF-8");
@@ -64,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 fdfbe5b..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 */ 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 */ 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
new file mode 100644
index 0000000..1ea6c36
--- /dev/null
+++ b/app/bin/include/levenshtein.h
@@ -0,0 +1,25 @@
+#ifndef LEVENSHTEIN_H
+#define LEVENSHTEIN_H
+
+// `levenshtein.h` - levenshtein
+// MIT licensed.
+// Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+
+// Returns a size_t, depicting the difference between `a` and `b`.
+// See <https://en.wikipedia.org/wiki/Levenshtein_distance> for more information.
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+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);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // LEVENSHTEIN_H
diff --git a/app/bin/include/paramfile.h b/app/bin/include/paramfile.h
index b177b15..8ae7f59 100644
--- a/app/bin/include/paramfile.h
+++ b/app/bin/include/paramfile.h
@@ -1,26 +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);
+
+#define CONTENTSCOMMAND "CONTENTS"
+char *GetParameterFileContent(char *file);
+
+#define TURNOUTCOMMAND "TURNOUT"
+#define STRUCTURECOMMAND "STRUCTURE"
+#define CARCOMMAND "CARPART"
+#define CARPROTOCOMMAND "CARPROTO"
+
+char * GetParameterFileScale(char *file);
- 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);
#endif // !HAVE_PARAMFILE_H
diff --git a/app/bin/include/paramfilelist.h b/app/bin/include/paramfilelist.h
index a1c081d..2893292 100644
--- a/app/bin/include/paramfilelist.h
+++ b/app/bin/include/paramfilelist.h
@@ -1,32 +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;
- bool deleted;
- bool valid; /** < FALSE for dropped file */
- bool favorite;
- enum paramFileState trackState;
- } 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);
- BOOL_T ParamFileListInit(void);
+#define paramFileInfo(N) DYNARR_N( paramFileInfo_t, paramFileInfo_da, N )
- void SearchUiOk(void * junk);
- bool ReloadParamFile(wIndex_t index);
- bool UnloadParamFile(wIndex_t fileIndex);
+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 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 eec9d1e..365e78b 100644
--- a/app/bin/include/partcatalog.h
+++ b/app/bin/include/partcatalog.h
@@ -1,7 +1,7 @@
/** \file partcatalog.h
* Manage the catalog of track parameter files
*/
-/* XTrkCad - Model Railroad CAD
+/* XTrackCad - Model Railroad CAD
* Copyright (C) 2019 Martin Fischer
*
* This program is free software; you can redistribute it and/or modify
@@ -16,55 +16,93 @@
*
* 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
#define HAVE_TRACKCATALOG_H
#include <stdbool.h>
+#include "include/utlist.h"
#define MAXFILESPERCONTENT 10 /**< count of files with the same content header */
-#define ESTIMATED_CONTENTS_WORDS 10 /**< average count of words in CONTENTS header */
struct sCatalogEntry {
- struct sCatalogEntry *next;
- unsigned files; /**< current count of files */
- char *fullFileName[MAXFILESPERCONTENT]; /**< fully qualified file name */
- char *contents; /**< content field of parameter file */
- struct sCatalogEntry *indirect; /**< pointer to another catalog entry */
+ 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 sIndexEntry {
- CatalogEntry *value; /**< catalog entry having the key word in contents */
- char *keyWord; /**< keyword */
+struct sCatalog {
+ CatalogEntry *head; /**< The entries */
};
+typedef struct sCatalog Catalog;
+
+/**
+An index entry. This struct holds a keyword pointer and an array of pointers to
+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 */
+};
typedef struct sIndexEntry IndexEntry;
-struct sTrackLibrary {
- CatalogEntry *catalog; /**< list of files cataloged */
- IndexEntry *index; /**< Index for lookup */
- unsigned wordCount; /**< How many words indexed */
- void * words_array; /**< The array of words */
- unsigned trackTypeCount; /**< */
+
+struct sParameterLib {
+ 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 */
-typedef struct sTrackLibrary
- TrackLibrary; /**< core data structure for the catalog */
+enum WORDSTATE {
+ SEARCHED,
+ DISCARDED,
+ NOTFOUND,
+ CLOSE,
+ 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;
+};
+typedef struct sSearchResult SearchResult;
-CatalogEntry *InitCatalog(void);
-TrackLibrary *InitLibrary(void);
-TrackLibrary *CreateLibrary(char *directory);
-void DeleteLibrary(TrackLibrary *tracklib);
-bool GetTrackFiles(TrackLibrary *trackLib, char *directory);
-int GetParameterFileInfo(int files, char ** fileName, void * data);
-unsigned CreateLibraryIndex(TrackLibrary *trackLib);
-unsigned SearchLibrary(TrackLibrary *library, char *searchExpression, CatalogEntry *resultEntries);
-unsigned CountCatalogEntries(CatalogEntry *listHeader);
-void EmptyCatalog(CatalogEntry *listHeader);
-unsigned SearchLibrary(TrackLibrary *library, char *searchExpression, CatalogEntry *resultEntries);
+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);
+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);
+char *SearchStatistics(SearchResult *result);
+void SearchDiscardResult(SearchResult *res);
+unsigned CountCatalogEntries(Catalog *catalog);
+void DiscardCatalog(ParameterLib *library);
+EXPORT void CatalogDiscard(Catalog *catalog);
bool FilterKeyword(char *word);
#endif // !HAVE_TRACKCATALOG_H
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
new file mode 100644
index 0000000..075bbe1
--- /dev/null
+++ b/app/bin/include/svgformat.h
@@ -0,0 +1,55 @@
+/** \file svgformat.h
+ * Definitions and prototypes for SVG export
+ */
+
+/* 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 HAVE_SVGFORMAT_H
+#define HAVE_SVGFORMAT_H
+#include <stdbool.h>
+#include <mxml.h>
+
+#define MINIMUMLINEWIDTH 4.0
+
+typedef mxml_node_t SVGParent;
+typedef mxml_node_t SVGDocument;
+
+void SvgAddCSSStyle(SVGParent *svg);
+void SvgLineCommand(SVGParent *svg, double x0, double y0, double x1, double y1,
+ double w, long c, unsigned lineOpt);
+void SvgPolyLineCommand(SVGParent *svg, int cnt, double *points, int color,
+ double width, bool fill, unsigned lineStyle);
+void SvgRectCommand(SVGParent *svg, double x0, double y0, double x1, double y1,
+ int color, unsigned linestyle);
+void SvgCircleCommand(SVGParent *svg, double x, double y, double r, double w,
+ long c, bool fill, unsigned lineStyle);
+void SvgArcCommand(SVGParent *svg, double x, double y, double r, double a0,
+ double a1, bool center, double w, long c, unsigned lineStyle);
+void SvgTextCommand(SVGParent *svg, double x, double y, double size, long c,
+ char *text);
+void SvgAddTitle(SVGParent *svg, char *title);
+
+SVGDocument *SvgCreateDocument(void);
+SVGParent *SvgPrologue(SVGDocument *result, char *id, int layerCount, double x0,
+ double y0, double x1, double y1);
+
+bool SvgSaveFile(SVGDocument *svg, char *filename);
+void SvgDestroyDocument(SVGDocument *svg);
+#endif // !HAVE_SVGFORMAT_H
+
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/include/utlist.h b/app/bin/include/utlist.h
new file mode 100644
index 0000000..5bb1ac9
--- /dev/null
+++ b/app/bin/include/utlist.h
@@ -0,0 +1,1073 @@
+/*
+Copyright (c) 2007-2018, Troy D. Hanson http://troydhanson.github.com/uthash/
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+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 OWNER
+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.
+*/
+
+#ifndef UTLIST_H
+#define UTLIST_H
+
+#define UTLIST_VERSION 2.1.0
+
+#include <assert.h>
+
+/*
+ * This file contains macros to manipulate singly and doubly-linked lists.
+ *
+ * 1. LL_ macros: singly-linked lists.
+ * 2. DL_ macros: doubly-linked lists.
+ * 3. CDL_ macros: circular doubly-linked lists.
+ *
+ * To use singly-linked lists, your structure must have a "next" pointer.
+ * To use doubly-linked lists, your structure must "prev" and "next" pointers.
+ * Either way, the pointer to the head of the list must be initialized to NULL.
+ *
+ * ----------------.EXAMPLE -------------------------
+ * struct item {
+ * int id;
+ * struct item *prev, *next;
+ * }
+ *
+ * struct item *list = NULL:
+ *
+ * int main() {
+ * struct item *item;
+ * ... allocate and populate item ...
+ * DL_APPEND(list, item);
+ * }
+ * --------------------------------------------------
+ *
+ * For doubly-linked lists, the append and delete macros are O(1)
+ * For singly-linked lists, append and delete are O(n) but prepend is O(1)
+ * The sort macro is O(n log(n)) for all types of single/double/circular lists.
+ */
+
+/* These macros use decltype or the earlier __typeof GNU extension.
+ As decltype is only available in newer compilers (VS2010 or gcc 4.3+
+ when compiling c++ source) this code uses whatever method is needed
+ or, for VS2008 where neither is available, uses casting workarounds. */
+#if !defined(LDECLTYPE) && !defined(NO_DECLTYPE)
+#if defined(_MSC_VER) /* MS compiler */
+#if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */
+#define LDECLTYPE(x) decltype(x)
+#else /* VS2008 or older (or VS2010 in C mode) */
+#define NO_DECLTYPE
+#endif
+#elif defined(__BORLANDC__) || defined(__ICCARM__) || defined(__LCC__) || defined(__WATCOMC__)
+#define NO_DECLTYPE
+#else /* GNU, Sun and other compilers */
+#define LDECLTYPE(x) __typeof(x)
+#endif
+#endif
+
+/* for VS2008 we use some workarounds to get around the lack of decltype,
+ * namely, we always reassign our tmp variable to the list head if we need
+ * to dereference its prev/next pointers, and save/restore the real head.*/
+#ifdef NO_DECLTYPE
+#define IF_NO_DECLTYPE(x) x
+#define LDECLTYPE(x) char*
+#define UTLIST_SV(elt,list) _tmp = (char*)(list); {char **_alias = (char**)&(list); *_alias = (elt); }
+#define UTLIST_NEXT(elt,list,next) ((char*)((list)->next))
+#define UTLIST_NEXTASGN(elt,list,to,next) { char **_alias = (char**)&((list)->next); *_alias=(char*)(to); }
+/* #define UTLIST_PREV(elt,list,prev) ((char*)((list)->prev)) */
+#define UTLIST_PREVASGN(elt,list,to,prev) { char **_alias = (char**)&((list)->prev); *_alias=(char*)(to); }
+#define UTLIST_RS(list) { char **_alias = (char**)&(list); *_alias=_tmp; }
+#define UTLIST_CASTASGN(a,b) { char **_alias = (char**)&(a); *_alias=(char*)(b); }
+#else
+#define IF_NO_DECLTYPE(x)
+#define UTLIST_SV(elt,list)
+#define UTLIST_NEXT(elt,list,next) ((elt)->next)
+#define UTLIST_NEXTASGN(elt,list,to,next) ((elt)->next)=(to)
+/* #define UTLIST_PREV(elt,list,prev) ((elt)->prev) */
+#define UTLIST_PREVASGN(elt,list,to,prev) ((elt)->prev)=(to)
+#define UTLIST_RS(list)
+#define UTLIST_CASTASGN(a,b) (a)=(b)
+#endif
+
+/******************************************************************************
+ * The sort macro is an adaptation of Simon Tatham's O(n log(n)) mergesort *
+ * Unwieldy variable names used here to avoid shadowing passed-in variables. *
+ *****************************************************************************/
+#define LL_SORT(list, cmp) \
+ LL_SORT2(list, cmp, next)
+
+#define LL_SORT2(list, cmp, next) \
+do { \
+ LDECLTYPE(list) _ls_p; \
+ LDECLTYPE(list) _ls_q; \
+ LDECLTYPE(list) _ls_e; \
+ LDECLTYPE(list) _ls_tail; \
+ IF_NO_DECLTYPE(LDECLTYPE(list) _tmp;) \
+ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \
+ if (list) { \
+ _ls_insize = 1; \
+ _ls_looping = 1; \
+ while (_ls_looping) { \
+ UTLIST_CASTASGN(_ls_p,list); \
+ (list) = NULL; \
+ _ls_tail = NULL; \
+ _ls_nmerges = 0; \
+ while (_ls_p) { \
+ _ls_nmerges++; \
+ _ls_q = _ls_p; \
+ _ls_psize = 0; \
+ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
+ _ls_psize++; \
+ UTLIST_SV(_ls_q,list); _ls_q = UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); \
+ if (!_ls_q) break; \
+ } \
+ _ls_qsize = _ls_insize; \
+ while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \
+ if (_ls_psize == 0) { \
+ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \
+ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \
+ } else if (_ls_qsize == 0 || !_ls_q) { \
+ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \
+ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \
+ } else if (cmp(_ls_p,_ls_q) <= 0) { \
+ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \
+ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \
+ } else { \
+ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \
+ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \
+ } \
+ if (_ls_tail) { \
+ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,_ls_e,next); UTLIST_RS(list); \
+ } else { \
+ UTLIST_CASTASGN(list,_ls_e); \
+ } \
+ _ls_tail = _ls_e; \
+ } \
+ _ls_p = _ls_q; \
+ } \
+ if (_ls_tail) { \
+ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,NULL,next); UTLIST_RS(list); \
+ } \
+ if (_ls_nmerges <= 1) { \
+ _ls_looping=0; \
+ } \
+ _ls_insize *= 2; \
+ } \
+ } \
+} while (0)
+
+
+#define DL_SORT(list, cmp) \
+ DL_SORT2(list, cmp, prev, next)
+
+#define DL_SORT2(list, cmp, prev, next) \
+do { \
+ LDECLTYPE(list) _ls_p; \
+ LDECLTYPE(list) _ls_q; \
+ LDECLTYPE(list) _ls_e; \
+ LDECLTYPE(list) _ls_tail; \
+ IF_NO_DECLTYPE(LDECLTYPE(list) _tmp;) \
+ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \
+ if (list) { \
+ _ls_insize = 1; \
+ _ls_looping = 1; \
+ while (_ls_looping) { \
+ UTLIST_CASTASGN(_ls_p,list); \
+ (list) = NULL; \
+ _ls_tail = NULL; \
+ _ls_nmerges = 0; \
+ while (_ls_p) { \
+ _ls_nmerges++; \
+ _ls_q = _ls_p; \
+ _ls_psize = 0; \
+ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
+ _ls_psize++; \
+ UTLIST_SV(_ls_q,list); _ls_q = UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); \
+ if (!_ls_q) break; \
+ } \
+ _ls_qsize = _ls_insize; \
+ while ((_ls_psize > 0) || ((_ls_qsize > 0) && _ls_q)) { \
+ if (_ls_psize == 0) { \
+ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \
+ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \
+ } else if ((_ls_qsize == 0) || (!_ls_q)) { \
+ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \
+ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \
+ } else if (cmp(_ls_p,_ls_q) <= 0) { \
+ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \
+ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \
+ } else { \
+ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \
+ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \
+ } \
+ if (_ls_tail) { \
+ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,_ls_e,next); UTLIST_RS(list); \
+ } else { \
+ UTLIST_CASTASGN(list,_ls_e); \
+ } \
+ UTLIST_SV(_ls_e,list); UTLIST_PREVASGN(_ls_e,list,_ls_tail,prev); UTLIST_RS(list); \
+ _ls_tail = _ls_e; \
+ } \
+ _ls_p = _ls_q; \
+ } \
+ UTLIST_CASTASGN((list)->prev, _ls_tail); \
+ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,NULL,next); UTLIST_RS(list); \
+ if (_ls_nmerges <= 1) { \
+ _ls_looping=0; \
+ } \
+ _ls_insize *= 2; \
+ } \
+ } \
+} while (0)
+
+#define CDL_SORT(list, cmp) \
+ CDL_SORT2(list, cmp, prev, next)
+
+#define CDL_SORT2(list, cmp, prev, next) \
+do { \
+ LDECLTYPE(list) _ls_p; \
+ LDECLTYPE(list) _ls_q; \
+ LDECLTYPE(list) _ls_e; \
+ LDECLTYPE(list) _ls_tail; \
+ LDECLTYPE(list) _ls_oldhead; \
+ LDECLTYPE(list) _tmp; \
+ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \
+ if (list) { \
+ _ls_insize = 1; \
+ _ls_looping = 1; \
+ while (_ls_looping) { \
+ UTLIST_CASTASGN(_ls_p,list); \
+ UTLIST_CASTASGN(_ls_oldhead,list); \
+ (list) = NULL; \
+ _ls_tail = NULL; \
+ _ls_nmerges = 0; \
+ while (_ls_p) { \
+ _ls_nmerges++; \
+ _ls_q = _ls_p; \
+ _ls_psize = 0; \
+ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
+ _ls_psize++; \
+ UTLIST_SV(_ls_q,list); \
+ if (UTLIST_NEXT(_ls_q,list,next) == _ls_oldhead) { \
+ _ls_q = NULL; \
+ } else { \
+ _ls_q = UTLIST_NEXT(_ls_q,list,next); \
+ } \
+ UTLIST_RS(list); \
+ if (!_ls_q) break; \
+ } \
+ _ls_qsize = _ls_insize; \
+ while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \
+ if (_ls_psize == 0) { \
+ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \
+ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \
+ if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \
+ } else if (_ls_qsize == 0 || !_ls_q) { \
+ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \
+ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \
+ if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \
+ } else if (cmp(_ls_p,_ls_q) <= 0) { \
+ _ls_e = _ls_p; UTLIST_SV(_ls_p,list); _ls_p = \
+ UTLIST_NEXT(_ls_p,list,next); UTLIST_RS(list); _ls_psize--; \
+ if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \
+ } else { \
+ _ls_e = _ls_q; UTLIST_SV(_ls_q,list); _ls_q = \
+ UTLIST_NEXT(_ls_q,list,next); UTLIST_RS(list); _ls_qsize--; \
+ if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \
+ } \
+ if (_ls_tail) { \
+ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,_ls_e,next); UTLIST_RS(list); \
+ } else { \
+ UTLIST_CASTASGN(list,_ls_e); \
+ } \
+ UTLIST_SV(_ls_e,list); UTLIST_PREVASGN(_ls_e,list,_ls_tail,prev); UTLIST_RS(list); \
+ _ls_tail = _ls_e; \
+ } \
+ _ls_p = _ls_q; \
+ } \
+ UTLIST_CASTASGN((list)->prev,_ls_tail); \
+ UTLIST_CASTASGN(_tmp,list); \
+ UTLIST_SV(_ls_tail,list); UTLIST_NEXTASGN(_ls_tail,list,_tmp,next); UTLIST_RS(list); \
+ if (_ls_nmerges <= 1) { \
+ _ls_looping=0; \
+ } \
+ _ls_insize *= 2; \
+ } \
+ } \
+} while (0)
+
+/******************************************************************************
+ * singly linked list macros (non-circular) *
+ *****************************************************************************/
+#define LL_PREPEND(head,add) \
+ LL_PREPEND2(head,add,next)
+
+#define LL_PREPEND2(head,add,next) \
+do { \
+ (add)->next = (head); \
+ (head) = (add); \
+} while (0)
+
+#define LL_CONCAT(head1,head2) \
+ LL_CONCAT2(head1,head2,next)
+
+#define LL_CONCAT2(head1,head2,next) \
+do { \
+ LDECLTYPE(head1) _tmp; \
+ if (head1) { \
+ _tmp = (head1); \
+ while (_tmp->next) { _tmp = _tmp->next; } \
+ _tmp->next=(head2); \
+ } else { \
+ (head1)=(head2); \
+ } \
+} while (0)
+
+#define LL_APPEND(head,add) \
+ LL_APPEND2(head,add,next)
+
+#define LL_APPEND2(head,add,next) \
+do { \
+ LDECLTYPE(head) _tmp; \
+ (add)->next=NULL; \
+ if (head) { \
+ _tmp = (head); \
+ while (_tmp->next) { _tmp = _tmp->next; } \
+ _tmp->next=(add); \
+ } else { \
+ (head)=(add); \
+ } \
+} while (0)
+
+#define LL_INSERT_INORDER(head,add,cmp) \
+ LL_INSERT_INORDER2(head,add,cmp,next)
+
+#define LL_INSERT_INORDER2(head,add,cmp,next) \
+do { \
+ LDECLTYPE(head) _tmp; \
+ if (head) { \
+ LL_LOWER_BOUND2(head, _tmp, add, cmp, next); \
+ LL_APPEND_ELEM2(head, _tmp, add, next); \
+ } else { \
+ (head) = (add); \
+ (head)->next = NULL; \
+ } \
+} while (0)
+
+#define LL_LOWER_BOUND(head,elt,like,cmp) \
+ LL_LOWER_BOUND2(head,elt,like,cmp,next)
+
+#define LL_LOWER_BOUND2(head,elt,like,cmp,next) \
+ do { \
+ if ((head) == NULL || (cmp(head, like)) >= 0) { \
+ (elt) = NULL; \
+ } else { \
+ for ((elt) = (head); (elt)->next != NULL; (elt) = (elt)->next) { \
+ if (cmp((elt)->next, like) >= 0) { \
+ break; \
+ } \
+ } \
+ } \
+ } while (0)
+
+#define LL_DELETE(head,del) \
+ LL_DELETE2(head,del,next)
+
+#define LL_DELETE2(head,del,next) \
+do { \
+ LDECLTYPE(head) _tmp; \
+ if ((head) == (del)) { \
+ (head)=(head)->next; \
+ } else { \
+ _tmp = (head); \
+ while (_tmp->next && (_tmp->next != (del))) { \
+ _tmp = _tmp->next; \
+ } \
+ if (_tmp->next) { \
+ _tmp->next = (del)->next; \
+ } \
+ } \
+} while (0)
+
+#define LL_COUNT(head,el,counter) \
+ LL_COUNT2(head,el,counter,next) \
+
+#define LL_COUNT2(head,el,counter,next) \
+do { \
+ (counter) = 0; \
+ LL_FOREACH2(head,el,next) { ++(counter); } \
+} while (0)
+
+#define LL_FOREACH(head,el) \
+ LL_FOREACH2(head,el,next)
+
+#define LL_FOREACH2(head,el,next) \
+ for ((el) = (head); el; (el) = (el)->next)
+
+#define LL_FOREACH_SAFE(head,el,tmp) \
+ LL_FOREACH_SAFE2(head,el,tmp,next)
+
+#define LL_FOREACH_SAFE2(head,el,tmp,next) \
+ for ((el) = (head); (el) && ((tmp) = (el)->next, 1); (el) = (tmp))
+
+#define LL_SEARCH_SCALAR(head,out,field,val) \
+ LL_SEARCH_SCALAR2(head,out,field,val,next)
+
+#define LL_SEARCH_SCALAR2(head,out,field,val,next) \
+do { \
+ LL_FOREACH2(head,out,next) { \
+ if ((out)->field == (val)) break; \
+ } \
+} while (0)
+
+#define LL_SEARCH(head,out,elt,cmp) \
+ LL_SEARCH2(head,out,elt,cmp,next)
+
+#define LL_SEARCH2(head,out,elt,cmp,next) \
+do { \
+ LL_FOREACH2(head,out,next) { \
+ if ((cmp(out,elt))==0) break; \
+ } \
+} while (0)
+
+#define LL_REPLACE_ELEM2(head, el, add, next) \
+do { \
+ LDECLTYPE(head) _tmp; \
+ assert((head) != NULL); \
+ assert((el) != NULL); \
+ assert((add) != NULL); \
+ (add)->next = (el)->next; \
+ if ((head) == (el)) { \
+ (head) = (add); \
+ } else { \
+ _tmp = (head); \
+ while (_tmp->next && (_tmp->next != (el))) { \
+ _tmp = _tmp->next; \
+ } \
+ if (_tmp->next) { \
+ _tmp->next = (add); \
+ } \
+ } \
+} while (0)
+
+#define LL_REPLACE_ELEM(head, el, add) \
+ LL_REPLACE_ELEM2(head, el, add, next)
+
+#define LL_PREPEND_ELEM2(head, el, add, next) \
+do { \
+ if (el) { \
+ LDECLTYPE(head) _tmp; \
+ assert((head) != NULL); \
+ assert((add) != NULL); \
+ (add)->next = (el); \
+ if ((head) == (el)) { \
+ (head) = (add); \
+ } else { \
+ _tmp = (head); \
+ while (_tmp->next && (_tmp->next != (el))) { \
+ _tmp = _tmp->next; \
+ } \
+ if (_tmp->next) { \
+ _tmp->next = (add); \
+ } \
+ } \
+ } else { \
+ LL_APPEND2(head, add, next); \
+ } \
+} while (0) \
+
+#define LL_PREPEND_ELEM(head, el, add) \
+ LL_PREPEND_ELEM2(head, el, add, next)
+
+#define LL_APPEND_ELEM2(head, el, add, next) \
+do { \
+ if (el) { \
+ assert((head) != NULL); \
+ assert((add) != NULL); \
+ (add)->next = (el)->next; \
+ (el)->next = (add); \
+ } else { \
+ LL_PREPEND2(head, add, next); \
+ } \
+} while (0) \
+
+#define LL_APPEND_ELEM(head, el, add) \
+ LL_APPEND_ELEM2(head, el, add, next)
+
+#ifdef NO_DECLTYPE
+/* Here are VS2008 / NO_DECLTYPE replacements for a few functions */
+
+#undef LL_CONCAT2
+#define LL_CONCAT2(head1,head2,next) \
+do { \
+ char *_tmp; \
+ if (head1) { \
+ _tmp = (char*)(head1); \
+ while ((head1)->next) { (head1) = (head1)->next; } \
+ (head1)->next = (head2); \
+ UTLIST_RS(head1); \
+ } else { \
+ (head1)=(head2); \
+ } \
+} while (0)
+
+#undef LL_APPEND2
+#define LL_APPEND2(head,add,next) \
+do { \
+ if (head) { \
+ (add)->next = head; /* use add->next as a temp variable */ \
+ while ((add)->next->next) { (add)->next = (add)->next->next; } \
+ (add)->next->next=(add); \
+ } else { \
+ (head)=(add); \
+ } \
+ (add)->next=NULL; \
+} while (0)
+
+#undef LL_INSERT_INORDER2
+#define LL_INSERT_INORDER2(head,add,cmp,next) \
+do { \
+ if ((head) == NULL || (cmp(head, add)) >= 0) { \
+ (add)->next = (head); \
+ (head) = (add); \
+ } else { \
+ char *_tmp = (char*)(head); \
+ while ((head)->next != NULL && (cmp((head)->next, add)) < 0) { \
+ (head) = (head)->next; \
+ } \
+ (add)->next = (head)->next; \
+ (head)->next = (add); \
+ UTLIST_RS(head); \
+ } \
+} while (0)
+
+#undef LL_DELETE2
+#define LL_DELETE2(head,del,next) \
+do { \
+ if ((head) == (del)) { \
+ (head)=(head)->next; \
+ } else { \
+ char *_tmp = (char*)(head); \
+ while ((head)->next && ((head)->next != (del))) { \
+ (head) = (head)->next; \
+ } \
+ if ((head)->next) { \
+ (head)->next = ((del)->next); \
+ } \
+ UTLIST_RS(head); \
+ } \
+} while (0)
+
+#undef LL_REPLACE_ELEM2
+#define LL_REPLACE_ELEM2(head, el, add, next) \
+do { \
+ assert((head) != NULL); \
+ assert((el) != NULL); \
+ assert((add) != NULL); \
+ if ((head) == (el)) { \
+ (head) = (add); \
+ } else { \
+ (add)->next = head; \
+ while ((add)->next->next && ((add)->next->next != (el))) { \
+ (add)->next = (add)->next->next; \
+ } \
+ if ((add)->next->next) { \
+ (add)->next->next = (add); \
+ } \
+ } \
+ (add)->next = (el)->next; \
+} while (0)
+
+#undef LL_PREPEND_ELEM2
+#define LL_PREPEND_ELEM2(head, el, add, next) \
+do { \
+ if (el) { \
+ assert((head) != NULL); \
+ assert((add) != NULL); \
+ if ((head) == (el)) { \
+ (head) = (add); \
+ } else { \
+ (add)->next = (head); \
+ while ((add)->next->next && ((add)->next->next != (el))) { \
+ (add)->next = (add)->next->next; \
+ } \
+ if ((add)->next->next) { \
+ (add)->next->next = (add); \
+ } \
+ } \
+ (add)->next = (el); \
+ } else { \
+ LL_APPEND2(head, add, next); \
+ } \
+} while (0) \
+
+#endif /* NO_DECLTYPE */
+
+/******************************************************************************
+ * doubly linked list macros (non-circular) *
+ *****************************************************************************/
+#define DL_PREPEND(head,add) \
+ DL_PREPEND2(head,add,prev,next)
+
+#define DL_PREPEND2(head,add,prev,next) \
+do { \
+ (add)->next = (head); \
+ if (head) { \
+ (add)->prev = (head)->prev; \
+ (head)->prev = (add); \
+ } else { \
+ (add)->prev = (add); \
+ } \
+ (head) = (add); \
+} while (0)
+
+#define DL_APPEND(head,add) \
+ DL_APPEND2(head,add,prev,next)
+
+#define DL_APPEND2(head,add,prev,next) \
+do { \
+ if (head) { \
+ (add)->prev = (head)->prev; \
+ (head)->prev->next = (add); \
+ (head)->prev = (add); \
+ (add)->next = NULL; \
+ } else { \
+ (head)=(add); \
+ (head)->prev = (head); \
+ (head)->next = NULL; \
+ } \
+} while (0)
+
+#define DL_INSERT_INORDER(head,add,cmp) \
+ DL_INSERT_INORDER2(head,add,cmp,prev,next)
+
+#define DL_INSERT_INORDER2(head,add,cmp,prev,next) \
+do { \
+ LDECLTYPE(head) _tmp; \
+ if (head) { \
+ DL_LOWER_BOUND2(head, _tmp, add, cmp, next); \
+ DL_APPEND_ELEM2(head, _tmp, add, prev, next); \
+ } else { \
+ (head) = (add); \
+ (head)->prev = (head); \
+ (head)->next = NULL; \
+ } \
+} while (0)
+
+#define DL_LOWER_BOUND(head,elt,like,cmp) \
+ DL_LOWER_BOUND2(head,elt,like,cmp,next)
+
+#define DL_LOWER_BOUND2(head,elt,like,cmp,next) \
+do { \
+ if ((head) == NULL || (cmp(head, like)) >= 0) { \
+ (elt) = NULL; \
+ } else { \
+ for ((elt) = (head); (elt)->next != NULL; (elt) = (elt)->next) { \
+ if ((cmp((elt)->next, like)) >= 0) { \
+ break; \
+ } \
+ } \
+ } \
+} while (0)
+
+#define DL_CONCAT(head1,head2) \
+ DL_CONCAT2(head1,head2,prev,next)
+
+#define DL_CONCAT2(head1,head2,prev,next) \
+do { \
+ LDECLTYPE(head1) _tmp; \
+ if (head2) { \
+ if (head1) { \
+ UTLIST_CASTASGN(_tmp, (head2)->prev); \
+ (head2)->prev = (head1)->prev; \
+ (head1)->prev->next = (head2); \
+ UTLIST_CASTASGN((head1)->prev, _tmp); \
+ } else { \
+ (head1)=(head2); \
+ } \
+ } \
+} while (0)
+
+#define DL_DELETE(head,del) \
+ DL_DELETE2(head,del,prev,next)
+
+#define DL_DELETE2(head,del,prev,next) \
+do { \
+ assert((head) != NULL); \
+ assert((del)->prev != NULL); \
+ if ((del)->prev == (del)) { \
+ (head)=NULL; \
+ } else if ((del)==(head)) { \
+ (del)->next->prev = (del)->prev; \
+ (head) = (del)->next; \
+ } else { \
+ (del)->prev->next = (del)->next; \
+ if ((del)->next) { \
+ (del)->next->prev = (del)->prev; \
+ } else { \
+ (head)->prev = (del)->prev; \
+ } \
+ } \
+} while (0)
+
+#define DL_COUNT(head,el,counter) \
+ DL_COUNT2(head,el,counter,next) \
+
+#define DL_COUNT2(head,el,counter,next) \
+do { \
+ (counter) = 0; \
+ DL_FOREACH2(head,el,next) { ++(counter); } \
+} while (0)
+
+#define DL_FOREACH(head,el) \
+ DL_FOREACH2(head,el,next)
+
+#define DL_FOREACH2(head,el,next) \
+ for ((el) = (head); el; (el) = (el)->next)
+
+/* this version is safe for deleting the elements during iteration */
+#define DL_FOREACH_SAFE(head,el,tmp) \
+ DL_FOREACH_SAFE2(head,el,tmp,next)
+
+#define DL_FOREACH_SAFE2(head,el,tmp,next) \
+ for ((el) = (head); (el) && ((tmp) = (el)->next, 1); (el) = (tmp))
+
+/* these are identical to their singly-linked list counterparts */
+#define DL_SEARCH_SCALAR LL_SEARCH_SCALAR
+#define DL_SEARCH LL_SEARCH
+#define DL_SEARCH_SCALAR2 LL_SEARCH_SCALAR2
+#define DL_SEARCH2 LL_SEARCH2
+
+#define DL_REPLACE_ELEM2(head, el, add, prev, next) \
+do { \
+ assert((head) != NULL); \
+ assert((el) != NULL); \
+ assert((add) != NULL); \
+ if ((head) == (el)) { \
+ (head) = (add); \
+ (add)->next = (el)->next; \
+ if ((el)->next == NULL) { \
+ (add)->prev = (add); \
+ } else { \
+ (add)->prev = (el)->prev; \
+ (add)->next->prev = (add); \
+ } \
+ } else { \
+ (add)->next = (el)->next; \
+ (add)->prev = (el)->prev; \
+ (add)->prev->next = (add); \
+ if ((el)->next == NULL) { \
+ (head)->prev = (add); \
+ } else { \
+ (add)->next->prev = (add); \
+ } \
+ } \
+} while (0)
+
+#define DL_REPLACE_ELEM(head, el, add) \
+ DL_REPLACE_ELEM2(head, el, add, prev, next)
+
+#define DL_PREPEND_ELEM2(head, el, add, prev, next) \
+do { \
+ if (el) { \
+ assert((head) != NULL); \
+ assert((add) != NULL); \
+ (add)->next = (el); \
+ (add)->prev = (el)->prev; \
+ (el)->prev = (add); \
+ if ((head) == (el)) { \
+ (head) = (add); \
+ } else { \
+ (add)->prev->next = (add); \
+ } \
+ } else { \
+ DL_APPEND2(head, add, prev, next); \
+ } \
+} while (0) \
+
+#define DL_PREPEND_ELEM(head, el, add) \
+ DL_PREPEND_ELEM2(head, el, add, prev, next)
+
+#define DL_APPEND_ELEM2(head, el, add, prev, next) \
+do { \
+ if (el) { \
+ assert((head) != NULL); \
+ assert((add) != NULL); \
+ (add)->next = (el)->next; \
+ (add)->prev = (el); \
+ (el)->next = (add); \
+ if ((add)->next) { \
+ (add)->next->prev = (add); \
+ } else { \
+ (head)->prev = (add); \
+ } \
+ } else { \
+ DL_PREPEND2(head, add, prev, next); \
+ } \
+} while (0) \
+
+#define DL_APPEND_ELEM(head, el, add) \
+ DL_APPEND_ELEM2(head, el, add, prev, next)
+
+#ifdef NO_DECLTYPE
+/* Here are VS2008 / NO_DECLTYPE replacements for a few functions */
+
+#undef DL_INSERT_INORDER2
+#define DL_INSERT_INORDER2(head,add,cmp,prev,next) \
+do { \
+ if ((head) == NULL) { \
+ (add)->prev = (add); \
+ (add)->next = NULL; \
+ (head) = (add); \
+ } else if ((cmp(head, add)) >= 0) { \
+ (add)->prev = (head)->prev; \
+ (add)->next = (head); \
+ (head)->prev = (add); \
+ (head) = (add); \
+ } else { \
+ char *_tmp = (char*)(head); \
+ while ((head)->next && (cmp((head)->next, add)) < 0) { \
+ (head) = (head)->next; \
+ } \
+ (add)->prev = (head); \
+ (add)->next = (head)->next; \
+ (head)->next = (add); \
+ UTLIST_RS(head); \
+ if ((add)->next) { \
+ (add)->next->prev = (add); \
+ } else { \
+ (head)->prev = (add); \
+ } \
+ } \
+} while (0)
+#endif /* NO_DECLTYPE */
+
+/******************************************************************************
+ * circular doubly linked list macros *
+ *****************************************************************************/
+#define CDL_APPEND(head,add) \
+ CDL_APPEND2(head,add,prev,next)
+
+#define CDL_APPEND2(head,add,prev,next) \
+do { \
+ if (head) { \
+ (add)->prev = (head)->prev; \
+ (add)->next = (head); \
+ (head)->prev = (add); \
+ (add)->prev->next = (add); \
+ } else { \
+ (add)->prev = (add); \
+ (add)->next = (add); \
+ (head) = (add); \
+ } \
+} while (0)
+
+#define CDL_PREPEND(head,add) \
+ CDL_PREPEND2(head,add,prev,next)
+
+#define CDL_PREPEND2(head,add,prev,next) \
+do { \
+ if (head) { \
+ (add)->prev = (head)->prev; \
+ (add)->next = (head); \
+ (head)->prev = (add); \
+ (add)->prev->next = (add); \
+ } else { \
+ (add)->prev = (add); \
+ (add)->next = (add); \
+ } \
+ (head) = (add); \
+} while (0)
+
+#define CDL_INSERT_INORDER(head,add,cmp) \
+ CDL_INSERT_INORDER2(head,add,cmp,prev,next)
+
+#define CDL_INSERT_INORDER2(head,add,cmp,prev,next) \
+do { \
+ LDECLTYPE(head) _tmp; \
+ if (head) { \
+ CDL_LOWER_BOUND2(head, _tmp, add, cmp, next); \
+ CDL_APPEND_ELEM2(head, _tmp, add, prev, next); \
+ } else { \
+ (head) = (add); \
+ (head)->next = (head); \
+ (head)->prev = (head); \
+ } \
+} while (0)
+
+#define CDL_LOWER_BOUND(head,elt,like,cmp) \
+ CDL_LOWER_BOUND2(head,elt,like,cmp,next)
+
+#define CDL_LOWER_BOUND2(head,elt,like,cmp,next) \
+do { \
+ if ((head) == NULL || (cmp(head, like)) >= 0) { \
+ (elt) = NULL; \
+ } else { \
+ for ((elt) = (head); (elt)->next != (head); (elt) = (elt)->next) { \
+ if ((cmp((elt)->next, like)) >= 0) { \
+ break; \
+ } \
+ } \
+ } \
+} while (0)
+
+#define CDL_DELETE(head,del) \
+ CDL_DELETE2(head,del,prev,next)
+
+#define CDL_DELETE2(head,del,prev,next) \
+do { \
+ if (((head)==(del)) && ((head)->next == (head))) { \
+ (head) = NULL; \
+ } else { \
+ (del)->next->prev = (del)->prev; \
+ (del)->prev->next = (del)->next; \
+ if ((del) == (head)) (head)=(del)->next; \
+ } \
+} while (0)
+
+#define CDL_COUNT(head,el,counter) \
+ CDL_COUNT2(head,el,counter,next) \
+
+#define CDL_COUNT2(head, el, counter,next) \
+do { \
+ (counter) = 0; \
+ CDL_FOREACH2(head,el,next) { ++(counter); } \
+} while (0)
+
+#define CDL_FOREACH(head,el) \
+ CDL_FOREACH2(head,el,next)
+
+#define CDL_FOREACH2(head,el,next) \
+ for ((el)=(head);el;(el)=(((el)->next==(head)) ? NULL : (el)->next))
+
+#define CDL_FOREACH_SAFE(head,el,tmp1,tmp2) \
+ CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next)
+
+#define CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next) \
+ for ((el) = (head), (tmp1) = (head) ? (head)->prev : NULL; \
+ (el) && ((tmp2) = (el)->next, 1); \
+ (el) = ((el) == (tmp1) ? NULL : (tmp2)))
+
+#define CDL_SEARCH_SCALAR(head,out,field,val) \
+ CDL_SEARCH_SCALAR2(head,out,field,val,next)
+
+#define CDL_SEARCH_SCALAR2(head,out,field,val,next) \
+do { \
+ CDL_FOREACH2(head,out,next) { \
+ if ((out)->field == (val)) break; \
+ } \
+} while (0)
+
+#define CDL_SEARCH(head,out,elt,cmp) \
+ CDL_SEARCH2(head,out,elt,cmp,next)
+
+#define CDL_SEARCH2(head,out,elt,cmp,next) \
+do { \
+ CDL_FOREACH2(head,out,next) { \
+ if ((cmp(out,elt))==0) break; \
+ } \
+} while (0)
+
+#define CDL_REPLACE_ELEM2(head, el, add, prev, next) \
+do { \
+ assert((head) != NULL); \
+ assert((el) != NULL); \
+ assert((add) != NULL); \
+ if ((el)->next == (el)) { \
+ (add)->next = (add); \
+ (add)->prev = (add); \
+ (head) = (add); \
+ } else { \
+ (add)->next = (el)->next; \
+ (add)->prev = (el)->prev; \
+ (add)->next->prev = (add); \
+ (add)->prev->next = (add); \
+ if ((head) == (el)) { \
+ (head) = (add); \
+ } \
+ } \
+} while (0)
+
+#define CDL_REPLACE_ELEM(head, el, add) \
+ CDL_REPLACE_ELEM2(head, el, add, prev, next)
+
+#define CDL_PREPEND_ELEM2(head, el, add, prev, next) \
+do { \
+ if (el) { \
+ assert((head) != NULL); \
+ assert((add) != NULL); \
+ (add)->next = (el); \
+ (add)->prev = (el)->prev; \
+ (el)->prev = (add); \
+ (add)->prev->next = (add); \
+ if ((head) == (el)) { \
+ (head) = (add); \
+ } \
+ } else { \
+ CDL_APPEND2(head, add, prev, next); \
+ } \
+} while (0)
+
+#define CDL_PREPEND_ELEM(head, el, add) \
+ CDL_PREPEND_ELEM2(head, el, add, prev, next)
+
+#define CDL_APPEND_ELEM2(head, el, add, prev, next) \
+do { \
+ if (el) { \
+ assert((head) != NULL); \
+ assert((add) != NULL); \
+ (add)->next = (el)->next; \
+ (add)->prev = (el); \
+ (el)->next = (add); \
+ (add)->next->prev = (add); \
+ } else { \
+ CDL_PREPEND2(head, add, prev, next); \
+ } \
+} while (0)
+
+#define CDL_APPEND_ELEM(head, el, add) \
+ CDL_APPEND_ELEM2(head, el, add, prev, next)
+
+#ifdef NO_DECLTYPE
+/* Here are VS2008 / NO_DECLTYPE replacements for a few functions */
+
+#undef CDL_INSERT_INORDER2
+#define CDL_INSERT_INORDER2(head,add,cmp,prev,next) \
+do { \
+ if ((head) == NULL) { \
+ (add)->prev = (add); \
+ (add)->next = (add); \
+ (head) = (add); \
+ } else if ((cmp(head, add)) >= 0) { \
+ (add)->prev = (head)->prev; \
+ (add)->next = (head); \
+ (add)->prev->next = (add); \
+ (head)->prev = (add); \
+ (head) = (add); \
+ } else { \
+ char *_tmp = (char*)(head); \
+ while ((char*)(head)->next != _tmp && (cmp((head)->next, add)) < 0) { \
+ (head) = (head)->next; \
+ } \
+ (add)->prev = (head); \
+ (add)->next = (head)->next; \
+ (add)->next->prev = (add); \
+ (head)->next = (add); \
+ UTLIST_RS(head); \
+ } \
+} while (0)
+#endif /* NO_DECLTYPE */
+
+#endif /* UTLIST_H */
diff --git a/app/bin/layout.c b/app/bin/layout.c
index a77cbb2..c61c23f 100644
--- a/app/bin/layout.c
+++ b/app/bin/layout.c
@@ -17,60 +17,80 @@
*
* 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>
#include <dynstring.h>
#include "custom.h"
-#include "i18n.h"
#include "layout.h"
-#include "misc2.h"
#include "param.h"
#include "paths.h"
#include "track.h"
-#include "wlib.h"
#include "fileio.h"
-#include "utility.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 r1_10000 = { 1, 10000 };
+// 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 };
static paramFloatRange_t r360_360 = { -360, 360 };
static paramFloatRange_t rN_9999999 = { -99999, 99999 };
static paramIntegerRange_t i0_100 = { 0, 100 };
+static void SettingsWrite( void );
+static void SettingsRead( void );
+
static void LayoutDlgUpdate(paramGroup_p pg, int inx, void * valueP);
/**
@@ -82,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, "");
+ }
}
/**
@@ -103,110 +123,213 @@ 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';
+}
+
+
+/**
+* Set the file's changed flag and update the window title.
+*/
+
+void
+SetFileChanged(void)
+{
+ changed++;
+ 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
@@ -216,7 +339,7 @@ char *
GetLayoutFullPath()
{
char * s = DynStringToCStr(&thisLayout.fullFileName);
- return s;
+ return s;
}
/**
@@ -228,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()
{
@@ -290,51 +445,69 @@ 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);
}
+/**
+ * Gets layout room size
+ *
+ * \param [out] roomSize size of the room.
+ */
+
+void
+GetLayoutRoomSize(coOrd *roomSize)
+{
+ *roomSize = thisLayout.props.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;
@@ -343,26 +516,46 @@ static paramData_p layout_p;
static paramGroup_t * layout_pg_p;
static wBool_t file_changed;
-EXPORT BOOL_T haveBackground = FALSE;
+bool haveBackground = false;
BOOL_T backgroundVisible = TRUE;
char * noname = "";
+EXPORT wButton_p backgroundB;
+
+/**
+ * @brief Enable background visibility toggle from Menu or Button
+ * @param unused
+*/
void
-BackgroundToggleShow()
+BackgroundToggleShow( void * unused )
{
backgroundVisible = !backgroundVisible;
wButtonSetBusy(backgroundB, backgroundVisible);
MainRedraw();
}
+/**
+ * @brief Returns status of backgroundVisible
+ * @return backgroundVisible
+*/
int GetLayoutBackGroundVisible()
{
return(backgroundVisible);
}
-/*****************************************
-* Try to load the background image file
+/**
+ * @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. Display notice if failed to load.
+* @return TRUE if successful, FALSE if not.
*/
wBool_t
LoadBackGroundImage(void)
@@ -373,76 +566,91 @@ LoadBackGroundImage(void)
NoticeMessage(_("Unable to load Image File - %s"),_("Ok"),NULL,error);
return FALSE;
}
+ wControlActive((wControl_p)backgroundB, backgroundVisible);
+ wButtonSetBusy(backgroundB, backgroundVisible);
+
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 * junk )
+*/
+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 * junk)
+*/
+static void ImageFileClear( void * unused)
{
char * noname = "";
SetLayoutBackGroundFullPath(noname);
@@ -450,83 +658,108 @@ static void ImageFileClear( void * junk)
SetName();
wControlActive((wControl_p)backgroundB, FALSE);
file_changed = TRUE;
- ParamLoadControl(layout_pg_p, 8);
+ haveBackground = false;
+ 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, (void*)(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, (void*)(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, (void *)120, N_("Scale"), 0, (void*)(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, (void *)120, N_(" Gauge"), 0, (void *)(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, &r1_10000, N_("Min Track Radius"), 0, (void*)(CHANGE_MAIN | CHANGE_LIMITS) },
- { PD_FLOAT, &thisLayout.props.maxTrackGrade, "maxtrackgrade", PDO_NOPSHUPD | PDO_DLGHORZ, &r0_90, N_(" Max Track Grade (%)"), 0, (void*)(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, NULL, N_("Background File Path"), 0, (void *)(CHANGE_BACKGROUND) },
- { PD_BUTTON, (void*)ImageFileBrowse, "browse", PDO_DLGHORZ, NULL, N_("Browse ...") },
- { PD_BUTTON, (void*)ImageFileClear, "clear", PDO_DLGHORZ, NULL, N_("Clear") },
+ { 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)
- { PD_FLOAT, &thisLayout.props.backgroundPos.x, "backgroundposX", PDO_DIM | PDO_NOPSHUPD | PDO_DRAW, &rN_9999999, N_("Background PosX,Y"), 0, (void*)(CHANGE_BACKGROUND) },
+ { PD_FLOAT, &thisLayout.props.backgroundPos.x, "backgroundposX", PDO_DIM | PDO_NOPSHUPD | PDO_DRAW, &rN_9999999, N_("Background PosX,Y"), 0, I2VP(CHANGE_BACKGROUND) },
#define BACKGROUNDPOSY (12)
- { PD_FLOAT, &thisLayout.props.backgroundPos.y, "backgroundposY", PDO_DIM | PDO_NOPSHUPD | PDO_DRAW | PDO_DLGHORZ, &rN_9999999, NULL, 0, (void*)(CHANGE_BACKGROUND) },
+ { PD_FLOAT, &thisLayout.props.backgroundPos.y, "backgroundposY", PDO_DIM | PDO_NOPSHUPD | PDO_DRAW | PDO_DLGHORZ, &rN_9999999, NULL, 0, I2VP(CHANGE_BACKGROUND) },
#define BACKGROUNDWIDTH (13)
- { PD_FLOAT, &thisLayout.props.backgroundSize, "backgroundWidth", PDO_DIM | PDO_NOPSHUPD | PDO_DRAW, &r1_9999999, N_("Background Size"), 0, (void*)(CHANGE_BACKGROUND) },
+ { PD_FLOAT, &thisLayout.props.backgroundSize, "backgroundWidth", PDO_DIM | PDO_NOPSHUPD | PDO_DRAW, &r0_9999999, N_("Background Size"), 0, I2VP(CHANGE_BACKGROUND) },
#define BACKGROUNDSCREEN (14)
- { PD_LONG, &thisLayout.props.backgroundScreen, "backgroundScreen", PDO_NOPSHUPD | PDO_DRAW, &i0_100, N_("Background Screen %"), 0, (void*)(CHANGE_BACKGROUND) },
+ { PD_LONG, &thisLayout.props.backgroundScreen, "backgroundScreen", PDO_NOPSHUPD | PDO_DRAW, &i0_100, N_("Background Screen %"), 0, I2VP(CHANGE_BACKGROUND) },
#define BACKGROUNDANGLE (15)
- { PD_FLOAT, &thisLayout.props.backgroundAngle, "backgroundAngle", PDO_NOPSHUPD | PDO_DRAW, &r360_360, N_("Background Angle"), 0, (void*)(CHANGE_BACKGROUND) }
-
+ { PD_FLOAT, &thisLayout.props.backgroundAngle, "backgroundAngle", PDO_NOPSHUPD | PDO_DRAW | PDO_DLGBOXEND, &r360_360, N_("Background Angle"), 0, I2VP(CHANGE_BACKGROUND) },
+ { 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, sizeof layoutPLs / sizeof layoutPLs[0] };
+static paramGroup_t layoutPG = { "layout", PGO_RECORD | PGO_PREFMISC, layoutPLs, COUNT( layoutPLs ) };
/**
-* Apply the changes entered to settings
-*
-* \param junk IN unused
+ * @brief Handle the Layout changes, setting the values of changed items from dialog.
*/
-
-static void LayoutOk(void * junk)
+static void ChangeLayout()
{
- long changes;
- changes = GetChanges(&layoutPG);
+ long changes;
- /* [mf Nov. 15, 2005] Get the gauge/scale settings */
- if (changes & CHANGE_SCALE) {
- SetScaleGauge(thisLayout.props.curScaleDescInx, thisLayout.props.curGaugeInx);
- }
+ changes = GetChanges(&layoutPG);
- /* [mf Nov. 15, 2005] end */
+ /* [mf Nov. 15, 2005] Get the gauge/scale settings */
+ if (changes & CHANGE_SCALE) {
+ SetScaleGauge(thisLayout.props.curScaleDescInx, thisLayout.props.curGaugeInx);
+ file_changed = TRUE;
+ }
- if (changes & CHANGE_MAP) {
- SetRoomSize(thisLayout.props.roomSize);
- }
+ /* [mf Nov. 15, 2005] end */
- DoChangeNotification(changes);
+ if (changes & CHANGE_MAP) {
+ SetRoomSize(thisLayout.props.roomSize);
+ file_changed = TRUE;
+ }
- if (changes & CHANGE_LIMITS) {
- char prefString[30];
- // now set the minimum track radius
- sprintf(prefString, "minTrackRadius-%s", curScaleName);
- wPrefSetFloat("misc", prefString, thisLayout.props.minTrackRadius);
- }
+ DoChangeNotification(changes);
- if ((changes & CHANGE_BACKGROUND) || file_changed) {
+ 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;
+ }
- LayoutBackGroundSave();
- file_changed = FALSE;
- }
+ if (changes & CHANGE_BACKGROUND) {
- free(thisLayout.copyOfLayoutProps);
- wHide(layoutW);
+ LayoutBackGroundSave();
+ file_changed = TRUE;
+ }
+}
+
+/**
+* Apply the changes entered to settings
+*
+* \param unused IN unused
+*/
- MainLayout( TRUE, TRUE );
+static void LayoutOk(void * unused)
+{
+ ChangeLayout();
+ if(file_changed) {
+ LayoutBackGroundSave();
+ SetFileChanged();
+ file_changed = FALSE;
+ }
+
+ free(thisLayout.copyOfLayoutProps);
+ DynStringFree(&thisLayout.copyBackgroundFileName);
+
+ wHide(layoutW);
+
+ MainLayout( TRUE, TRUE );
}
@@ -534,57 +767,107 @@ static void LayoutOk(void * junk)
/**
* Discard the changes entered and replace with earlier values
*
-* \param junk IN unused
+* \param unused IN unused
*/
-static void LayoutCancel(struct wWin_t *junk)
+static void LayoutCancel(struct wWin_t *unused)
{
- thisLayout.props = *(thisLayout.copyOfLayoutProps);
- ParamLoadControls(&layoutPG);
- LayoutOk(junk);
+ // 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);
+ }
}
-void DoLayout(void * junk)
+/**
+ * @brief Initialize Layout dialog
+ * @param unused
+*/
+void DoLayout(void * unused)
{
- SetLayoutRoomSize(mapD.size);
+ CHECK(BACKGROUNDFILEENTRY == BACKGROUNDFILECHECK);
- if (layoutW == NULL) {
- layoutW = ParamCreateDialog(&layoutPG, MakeWindowTitle(_("Layout Options")),
- _("Ok"), LayoutOk, LayoutCancel, TRUE, NULL, 0, LayoutDlgUpdate);
- LoadScaleList((wList_p)layoutPLs[4].control);
- }
+ 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);
+ }
- 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;
}
/**
@@ -599,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);
@@ -692,6 +987,7 @@ LayoutBackGroundInit(BOOL_T clear) {
}
char * str = GetLayoutBackGroundFullPath();
if (str && str[0]) {
+ haveBackground = true;
if (!LoadBackGroundImage()) { //Failed -> Wipe Out
SetLayoutBackGroundFullPath(noname);
SetLayoutBackGroundPos(zero);
@@ -699,9 +995,111 @@ LayoutBackGroundInit(BOOL_T clear) {
SetLayoutBackGroundScreen(0);
SetLayoutBackGroundSize(0.0);
LayoutBackGroundSave();
+ 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 )
+{
+ char * pref;
+ 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) {
+ char buffer[STR_SHORT_SIZE];
+ strcpy(buffer, pref);
+ DoSetScale(buffer);
+ }
+ //Get command options
+ wPrefGetInteger("DialogItem","cmdopt-preselect",&preSelect,preSelect);
+ 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;
+}
+
+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 );
+ 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 )
+{
+ 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 );
+ wFilSelect( settingsWrite_fs, wGetAppWorkDir());
}
+
+
+
diff --git a/app/bin/layout.h b/app/bin/layout.h
index fcb5160..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,18 +17,18 @@
*
* 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
#define HAVE_LAYOUT_H
#include "common.h"
-#include "misc.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);
@@ -37,23 +37,25 @@ 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);
void SetLayoutBackGroundAngle(ANGLE_T angle);
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);
@@ -61,10 +63,11 @@ coOrd GetLayoutBackGroundPos(void);
ANGLE_T GetLayoutBackGroundAngle(void);
int GetLayoutBackGroundScreen(void);
int GetLayoutBackGroundVisible(void);
+bool HasBackGround(void);
void LayoutBackGroundInit(BOOL_T clear);
void LayoutBackGroundLoad(void);
void LayoutBackGroundSave(void);
-void BackgroundToggleShow(void);
-void DoLayout(void * junk);
+void BackgroundToggleShow(void * unused);
+void DoLayout(void * unused);
int LoadImageFile(int files,char ** fileName,void * data );
#endif
diff --git a/app/bin/levenshtein.c b/app/bin/levenshtein.c
new file mode 100644
index 0000000..d51af01
--- /dev/null
+++ b/app/bin/levenshtein.c
@@ -0,0 +1,75 @@
+// `levenshtein.c` - levenshtein
+// MIT licensed.
+// Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include "include/levenshtein.h"
+
+// 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;
+ }
+
+ if (length == 0) {
+ return bLength;
+ }
+
+ 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;
+
+ // initialize the vector.
+ while (index < length) {
+ cache[index] = index + 1;
+ index++;
+ }
+
+ // 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];
+
+ cache[index] = result = distance > result
+ ? bDistance > result
+ ? result + 1
+ : bDistance
+ : bDistance > distance
+ ? distance + 1
+ : bDistance;
+ }
+ }
+
+ free(cache);
+
+ return result;
+}
+
+size_t
+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);
+}
diff --git a/app/bin/linknoteui.c b/app/bin/linknoteui.c
index daa3ccf..a47bb58 100644
--- a/app/bin/linknoteui.c
+++ b/app/bin/linknoteui.c
@@ -17,56 +17,54 @@
*
* 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>
-#include <stdbool.h>
-
#include "custom.h"
#include "dynstring.h"
-#include "i18n.h"
#include "misc.h"
#include "note.h"
#include "param.h"
#include "include/stringxtc.h"
#include "track.h"
#include "validator.h"
-#include "wlib.h"
-
-extern BOOL_T inDescribeCmd;
#define DEFAULTLINKURL "http://www.xtrkcad.org/"
#define DEFAULTLINKTITLE "The XTrackCAD Homepage"
-
-static struct extraDataNote 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, (void*)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, (void*)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, (void*)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, (void*)NoteLinkBrowse, "openlink", PDO_DLGHORZ, NULL, N_("Open...") },
+ /*5*/{ PD_BUTTON, NoteLinkBrowse, "openlink", PDO_DLGHORZ, NULL, N_("Open...") },
};
-static paramGroup_t linkEditPG = { "linkEdit", 0, linkEditPLs, sizeof linkEditPLs / sizeof linkEditPLs[0] };
-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 * xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
return(xx->op == OP_NOTELINK);
}
@@ -79,7 +77,7 @@ IsLinkNote(track_p trk)
*/
static void NoteLinkBrowse(void *junk)
{
- NoteLinkOpen(noteDataInUI.noteData.linkData.url);
+ NoteLinkOpen(linkNoteData.url);
}
/**
@@ -89,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;
- }
+ }
}
/**
@@ -141,11 +123,8 @@ LinkDlgUpdate(
static void
LinkEditCancel( wWin_p junk)
{
- if (inDescribeCmd) {
- UpdateFile(&noteDataInUI, CANCEL_NOTE, FALSE);
- }
ResetIfNotSticky();
- wHide(linkEditW);
+ wHide(linkNoteW);
}
/**
@@ -158,47 +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();
- FileIsChanged();
+ SetFileChanged();
}
-static void
-CreateEditLinkDialog(track_p trk, char *title)
+static void
+CreateEditLinkDialog(char *title)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
// create the dialog if necessary
- if (!linkEditW) {
- 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
- 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);
}
/**
@@ -208,7 +188,7 @@ CreateEditLinkDialog(track_p trk, char *title)
void ActivateLinkNote(track_p trk)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
NoteLinkOpen(xx->noteData.linkData.url);
}
@@ -223,23 +203,31 @@ void ActivateLinkNote(track_p trk)
void DescribeLinkNote(track_p trk, char * str, CSIZE_T len)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
- 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"));
}
/**
@@ -249,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 *xx = (struct extraDataNote *)GetTrkExtraData(trk);
-
- 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 23cc44a..0989ec9 100644
--- a/app/bin/lprintf.c
+++ b/app/bin/lprintf.c
@@ -17,26 +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 <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#ifndef WINDOWS
-#include <time.h>
-#else
-#include <time.h>
-#include <sys/timeb.h>
-#endif
-
#include "custom.h"
#include "fileio.h"
-#include "messages.h"
#include "paths.h"
#include "track.h"
+#include "common-ui.h"
/****************************************************************************
@@ -58,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;
@@ -86,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 )
@@ -102,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 )
@@ -117,26 +110,28 @@ EXPORT void LogSet( char * name, int level )
}
-EXPORT int LogFindIndex( char * name )
+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(
- 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 8db996d..7105e98 100644
--- a/app/bin/macro.c
+++ b/app/bin/macro.c
@@ -1,5 +1,5 @@
/** \file macro.c
-
+ *
* Macros
*/
@@ -18,57 +18,29 @@
*
* 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>
-#include <stdio.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#include <dirent.h>
-#include <errno.h>
-#endif
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <time.h>
-#ifdef WINDOWS
-#include <io.h>
-#include <windows.h>
-#else
-#include <sys/stat.h>
-#endif
-#include <stdarg.h>
-#ifndef WINDOWS
-#include <sys/time.h>
-#else
-#include <sys/timeb.h>
-#endif
-#include <locale.h>
-
-#include <stdint.h>
-
#include "common.h"
#include "compound.h"
#include "cundo.h"
#include "custom.h"
#include "draw.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "misc.h"
-#include "param.h"
+#include "param.h"
#include "paths.h"
#include "track.h"
-#include "trackx.h"
-#include "utility.h"
#include "version.h"
+#include "common-ui.h"
+
+#ifdef UTFCONVERT
+#include "include/utf8convert.h"
+#endif // UTFCONVERT
EXPORT long adjTimer;
static void DemoInitValues( void );
-extern char *userLocale;
static int log_playbackCursor = 0;
@@ -89,20 +61,23 @@ static paramTextData_t recordTextData = { 50, 16 };
static paramData_t recordPLs[] = {
#define I_RECSTOP (0)
#define recStopB ((wButton_p)recordPLs[I_RECSTOP].control)
- { PD_BUTTON, (void*)DoRecordButton, "stop", PDO_NORECORD, NULL, N_("Stop"), 0, (void*)0 },
+ { PD_BUTTON, DoRecordButton, "stop", PDO_NORECORD, NULL, N_("Stop"), 0, I2VP(0) },
#define I_RECMESSAGE (1)
#define recMsgB ((wButton_p)recordPLs[I_RECMESSAGE].control)
- { PD_BUTTON, (void*)DoRecordButton, "message", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Message"), 0, (void*)2 },
+ { PD_BUTTON, DoRecordButton, "message", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Message"), 0, I2VP(2) },
#define I_RECEND (2)
#define recEndB ((wButton_p)recordPLs[I_RECEND].control)
- { PD_BUTTON, (void*)DoRecordButton, "end", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("End"), BO_DISABLED, (void*)4 },
+ { 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} };
-static paramGroup_t recordPG = { "record", 0, recordPLs, sizeof recordPLs/sizeof recordPLs[0] };
+ { PD_TEXT, NULL, "text", PDO_NORECORD|PDO_DLGRESIZE, &recordTextData, NULL, BT_CHARUNITS|BO_READONLY}
+};
+static paramGroup_t recordPG = { "record", 0, recordPLs, COUNT( recordPLs ) };
#ifndef WINDOWS
+#include <sys/time.h>
+
static struct timeval lastTim = {0,0};
static void ComputePause( void )
{
@@ -111,35 +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
-static struct _timeb lastTim;
+#include <sys/types.h>
+#include <sys/timeb.h>
+#include <time.h>
+
+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
@@ -148,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 );
}
@@ -170,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 );
@@ -208,7 +200,7 @@ static void DoRecordButton( void * context )
char * cp;
int len;
- switch( (int)(long)context ){
+ switch( (int)VP2L(context) ) {
case 0: /* Stop */
fprintf( recordF, "CLEAR\nMESSAGE\n");
fprintf( recordF, N_("End of Playback. Hit Step to exit\n"));
@@ -225,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 );
@@ -276,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 ));
@@ -292,7 +287,7 @@ EXPORT void DoRecord( void * context )
static drawCmd_p playbackD = NULL;
static wDrawBitMap_p playbackBm = NULL;
static wDrawColor playbackColor;
-static wPos_t playbackX, playbackY;
+static coOrd playbackPos;
static wBool_t bDoFlash = FALSE;
static wDrawColor flashColor;
@@ -335,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+";
@@ -367,20 +363,20 @@ char * DrawBitMapToString(DrawBitMap_e dbm) {
}
static void MacroDrawBitMap(
- DrawBitMap_e dbm,
- wDrawBitMap_p bm,
- wPos_t x,
- wPos_t y,
- wDrawColor color )
+ DrawBitMap_e dbm,
+ wDrawBitMap_p bm,
+ coOrd pos,
+ wDrawColor color )
{
- wDrawBitMap( playbackD->d, bm, x, y, color, wDrawOptTemp|wDrawOptNoClip );
- wFlush();
+ DrawBitMap( playbackD, pos, bm, color );
+// wFlush();
- LOG( log_playbackCursor, 1, ("%s %d DrawBitMap( %p %p %d %d %d %d )\n", DrawBitMapToString(dbm), DBMCount++, playbackD->d, bm, x, y, color, wDrawOptTemp|wDrawOptNoClip ) );
+ LOG( log_playbackCursor, 2, ("%s %d DrawBitMap( %p %p [%0.3f %0.3f] %d )\n",
+ DrawBitMapToString(dbm), DBMCount++, playbackD->d, bm, pos, color ) );
}
-static void Flash( drawCmd_p d, wPos_t x, wPos_t y, wDrawColor color )
+static void Flash( wDrawColor color )
{
bDoFlash = TRUE;
flashColor = color;
@@ -391,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;
@@ -406,74 +402,70 @@ static void SetPlaybackSpeed(
}
-EXPORT void RedrawPlaybackCursor() {
+EXPORT void RedrawPlaybackCursor()
+{
if ( playbackD && playbackBm && inPlayback) {
- wBool_t ret;
- if ( playbackD->d != mainD.d )
- ret = wDrawSetTempMode( playbackD->d, TRUE );
+ unsigned long options = playbackD->options;
+ playbackD->options |= DC_TEMP;
+ wBool_t bTemp = wDrawSetTempMode( playbackD->d, TRUE );
if ( bDoFlash && playbackTimer == 0 ) {
- MacroDrawBitMap( FLASH_PLUS, flash_bm, playbackX, playbackY, flashColor );
+ MacroDrawBitMap( FLASH_PLUS, flash_bm, playbackPos, flashColor );
+ wDrawSetTempMode( playbackD->d, FALSE );
wPause( flashTO*2 );
+ wDrawSetTempMode( playbackD->d, TRUE );
if ( flashTwice ) {
- MacroDrawBitMap( FLASH_PLUS, flash_bm, playbackX, playbackY, flashColor );
+ MacroDrawBitMap( FLASH_PLUS, flash_bm, playbackPos, flashColor );
+ wDrawSetTempMode( playbackD->d, FALSE );
wPause( flashTO*2 );
+ wDrawSetTempMode( playbackD->d, TRUE );
}
bDoFlash = FALSE;
}
- MacroDrawBitMap( DRAW, playbackBm, playbackX, playbackY, playbackColor );
- if ( playbackD->d != mainD.d )
- wDrawSetTempMode( playbackD->d, ret );
+ MacroDrawBitMap( DRAW, playbackBm, playbackPos, playbackColor );
+ wDrawSetTempMode( playbackD->d, bTemp );
+ playbackD->options = options;
+ wFlush();
}
}
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, dx, dy;
- coOrd pos1, dpos;
+ DIST_T dist;
+ coOrd dpos;
int i, steps;
- wPos_t x, y;
- wPos_t x0=playbackX;
- wPos_t y0=playbackY;
- if (d == NULL)
+ if (d == NULL) {
return;
-
- d->CoOrd2Pix( d, pos, &x, &y );
+ }
if (playbackTimer == 0 /*&& !didPause*/) {
playbackBm = bm;
playbackColor = color;
- dx = (DIST_T)(x-x0);
- dy = (DIST_T)(y-y0);
- dist = sqrt( dx*dx + dy*dy );
- steps = (int)(dist / PixelsPerStep ) + 1;
- dx /= steps;
- dy /= steps;
- d->Pix2CoOrd( d, x0, y0, &pos1 );
- dpos.x = (pos.x-pos1.x)/steps;
- dpos.y = (pos.y-pos1.y)/steps;
-
- for ( i=1; i<=steps; i++ ) {
+ 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 ) );
- playbackX = x0+(wPos_t)(i*dx);
- playbackY = y0+(wPos_t)(i*dy);
+ dpos.x = (pos.x-playbackPos.x)/steps;
+ dpos.y = (pos.y-playbackPos.y)/steps;
- pos1.x += dpos.x;
- pos1.y += dpos.y;
+ for ( i=1; i<=steps; i++ ) {
+ playbackPos.x += dpos.x;
+ playbackPos.y += dpos.y;
if ( proc != NULL ) {
- proc( action, pos1 );
+ proc( action, playbackPos );
} else {
TempRedraw();
}
-// DrawPlaybackCursor( d, bm, xx, yy, color );
if ( d->d == mainD.d ) {
- InfoPos( pos1 );
+ InfoPos( playbackPos );
wFlush();
}
// Simple mouse moves happen twice as fast
@@ -484,91 +476,96 @@ static void MoveCursor(
return;
}
}
- } else {
- playbackX = x;
- playbackY = y;
}
+ playbackPos = pos;
}
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;
- wPos_t x, y;
long time0, time1;
time0 = wGetTimer();
- d->CoOrd2Pix( d, pos, &x, &y );
-
-
-
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);
- Flash( d, x, y, playbackColor=rightDragColor );
+ 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( d, x, y, 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);
- Flash( d, x, y, playbackColor=leftDragColor );
+ 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( d, x, y, 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;
case C_REDRAW:
proc( action, pos ); //Send Redraw to functions
playbackD = &tempD;
- MacroDrawBitMap( REDRAW, playbackBm, playbackX, playbackY, playbackColor );
+ playbackPos = pos;
+ MacroDrawBitMap( REDRAW, playbackBm, playbackPos, playbackColor );
break;
case C_TEXT:
proc( action, pos);
- char c = action>>8;
+// char c = action>>8;
bm = playbackBm;
break;
@@ -584,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;
@@ -596,31 +593,44 @@ EXPORT void PlaybackMouse(
EXPORT void MovePlaybackCursor(
- drawCmd_p d,
- wPos_t x,
- wPos_t y, wBool_t direct, wControl_p control)
+ drawCmd_p d,
+ coOrd pos,
+ wBool_t direct, wControl_p control)
{
- coOrd pos;
+#ifdef MOVECURSORTOCOMMANDBUTTON
+ // Show the cursor clicking on the command button
+ // Not possile with current structure
playbackD = &tempD;
- d->Pix2CoOrd( d, x, y, &pos );
- d->CoOrd2Pix( d, pos, &x, &y );
- if (!direct)
+ if (!direct) {
MoveCursor( d, NULL, wActionMove, pos, arrow0_bm, wDrawColorBlack );
- wBool_t ret = wDrawSetTempMode( d->d, TRUE );
- MacroDrawBitMap( MOVE_PLYBCK1, arrow0_bm, x, y, wDrawColorBlack );
- MacroDrawBitMap( MOVE_PLYBCK2, arrow3_bm, x, y, rightDragColor );
-
- Flash( d, x, y, rightDragColor );
+ }
+ unsigned long options = d->options;
+ d->options |= DC_TEMP;
+ wBool_t bTemp = wDrawSetTempMode( d->d, TRUE );
+ DoCurCommand( C_REDRAW, zero );
+ MacroDrawBitMap( MOVE_PLYBCK1, arrow0_bm, pos, wDrawColorBlack );
+ MacroDrawBitMap( MOVE_PLYBCK2, arrow3_bm, pos, rightDragColor );
+
+ Flash( rightDragColor );
if (direct) {
wControlHilite(control,TRUE);
}
- MacroDrawBitMap( MOVE_PLYBCK3, arrow3_bm, x, y, rightDragColor );
- MacroDrawBitMap( MOVE_PLYBCK4, arrow0_bm, x, y, wDrawColorBlack );
+ MacroDrawBitMap( MOVE_PLYBCK3, arrow3_bm, pos, rightDragColor );
+ MacroDrawBitMap( MOVE_PLYBCK4, arrow0_bm, pos, wDrawColorBlack );
if (direct) {
wPause(1000);
wControlHilite(control,FALSE);
}
- wDrawSetTempMode( d->d, ret );
+ wDrawSetTempMode( d->d, bTemp );
+ d->options = options;
+#else
+ // Just hilight the button
+ if ( control ) {
+ wControlHilite( control, TRUE );
+ wPause( 1000 );
+ wControlHilite( control, FALSE );
+ }
+#endif
}
/*****************************************************************************
@@ -635,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 )
@@ -673,27 +683,29 @@ static paramTextData_t demoTextData = { 50, 16 };
static paramData_t demoPLs[] = {
#define I_DEMOSTEP (0)
#define demoStep ((wButton_p)demoPLs[I_DEMOSTEP].control)
- { PD_BUTTON, (void*)DoDemoButton, "step", PDO_NORECORD, NULL, N_("Step"), BB_DEFAULT, (void*)0 },
+ { PD_BUTTON, DoDemoButton, "step", PDO_NORECORD, NULL, N_("Step"), BB_DEFAULT, I2VP(0) },
#define I_DEMONEXT (1)
#define demoNext ((wButton_p)demoPLs[I_DEMONEXT].control)
- { PD_BUTTON, (void*)DoDemoButton, "next", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Next"), 0, (void*)1 },
+ { PD_BUTTON, DoDemoButton, "next", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Next"), 0, I2VP(1) },
#define I_DEMOQUIT (2)
#define demoQuit ((wButton_p)demoPLs[I_DEMOQUIT].control)
- { PD_BUTTON, (void*)DoDemoButton, "quit", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Quit"), BB_CANCEL, (void*)3 },
+ { PD_BUTTON, DoDemoButton, "quit", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Quit"), BB_CANCEL, I2VP(3) },
#define I_DEMOSPEED (3)
#define demoSpeedL ((wList_p)demoPLs[I_DEMOSPEED].control)
- { PD_DROPLIST, &playbackSpeed, "speed", PDO_NORECORD|PDO_LISTINDEX|PDO_DLGHORZ, (void*)80, N_("Speed") },
+ { 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} };
-static paramGroup_t demoPG = { "demo", 0, demoPLs, sizeof demoPLs/sizeof demoPLs[0] };
+ { 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();
+ }
}
@@ -709,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();
@@ -732,8 +745,8 @@ static void PlaybackQuit( void )
ClearTracks();
checkPtMark = changed = 0;
RestoreTrackState();
- inPlaybackQuit = FALSE;
DoSetScale( oldScaleName );
+ inPlaybackQuit = FALSE;
DoChangeNotification( CHANGE_ALL );
CloseDemoWindows();
curDemo = -1;
@@ -749,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;
@@ -764,31 +778,39 @@ static BOOL_T snapshotMouse = FALSE;
EXPORT void TakeSnapshot( drawCmd_t * d )
{
char * cp;
- wPos_t ix, iy;
- if (d->dpi < 0)
+ wWinPix_t ix, iy;
+ 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 = (wPos_t)(d->dpi*d->size.x/d->scale);
- iy = (wPos_t)(d->dpi*d->size.y/d->scale);
+ }
+ 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 );
if (d->d == (wDraw_p)0) {
return;
}
DrawTracks( d, d->scale, d->orig, d->size );
- if ( snapshotMouse && playbackBm )
- wDrawBitMap( d->d, playbackBm, playbackX, playbackY, playbackColor, 0 );
- wDrawLine( d->d, 0, 0, ix-1, 0, 0, wDrawLineSolid, wDrawColorBlack, 0 );
- wDrawLine( d->d, ix-1, 0, ix-1, iy-1, 0, wDrawLineSolid, wDrawColorBlack, 0 );
- wDrawLine( d->d, ix-1, iy-1, 0, iy-1, 0, wDrawLineSolid, wDrawColorBlack, 0 );
- wDrawLine( d->d, 0, iy-1, 0, 0, 0, wDrawLineSolid, wDrawColorBlack, 0 );
+ if ( snapshotMouse && playbackBm ) {
+ DrawBitMap( d, playbackPos, playbackBm, playbackColor );
+ }
+ coOrd p0, s1;
+ DIST_T off = 0.02;
+ p0.x = off * d->scale;
+ p0.y = off * d->scale;
+ s1.x = d->size.x-off*2 * d->scale;
+ s1.y = d->size.y-off*2 * d->scale;
+ DrawRectangle( d, p0, s1, wDrawColorBlack, DRAW_CLOSED );
strcpy( message, paramFileName );
cp = message+strlen(message)-4;
- sprintf( cp, "-%4.4d.xpm", documentSnapshotNum );
+ sprintf( cp, "-%4.4d.png", documentSnapshotNum );
wBitMapWriteFile( d->d, message );
wBitMapDelete( d->d );
documentSnapshotNum++;
@@ -803,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 )
{
@@ -813,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;
}
@@ -931,7 +894,7 @@ static BOOL_T DoRegression( char * sFileName )
}
static void EnableButtons(
- BOOL_T enable )
+ BOOL_T enable )
{
wButtonSetBusy( demoStep, !enable );
wButtonSetBusy( demoNext, !enable );
@@ -943,7 +906,7 @@ static void EnableButtons(
}
EXPORT void PlaybackMessage(
- char * line )
+ char * line )
{
char * cp;
wTextAppend( demoT, _(line) );
@@ -975,7 +938,7 @@ static void PlaybackSetup( void )
wTextClear( demoT );
wShow( demoW );
wFlush();
- wPrefFlush();
+ wPrefFlush("");
wWinSetBusy( mainW, TRUE );
wWinSetBusy( mapW, TRUE );
ParamSaveAll();
@@ -985,14 +948,14 @@ static void PlaybackSetup( void )
oldMainSize = mainD.size;
oldMainScale = mainD.scale;
oldScaleName = curScaleName;
- playbackX = 0;
- playbackY = 0;
+ playbackPos = zero;
Reset();
paramVersion = -1;
playbackColor=wDrawColorBlack;
paramTogglePlaybackHilite = FALSE;
CompoundClearDemoDefns();
SaveLayers();
+ nRegressionFail = 0;
}
@@ -1002,8 +965,8 @@ static void Playback( void )
POS_T zoom;
wIndex_t inx;
long timeout;
- static enum { pauseCmd, mouseCmd, otherCmd } thisCmd, lastCmd;
- int len;
+ static enum { pauseCmd, mouseCmd, otherCmd } thisCmd/*, lastCmd*/;
+ size_t len;
static wBool_t demoWinOnTop = FALSE;
coOrd roomSize;
char * cp, * cq;
@@ -1012,20 +975,21 @@ static void Playback( void )
useCurrentLayer = FALSE;
inPlayback = TRUE;
EnableButtons( FALSE );
- lastCmd = otherCmd;
+// lastCmd = otherCmd;
playbackTimer = 0;
if (demoWinOnTop) {
wWinTop( mainW );
demoWinOnTop = FALSE;
}
- char * oldLocale = NULL;
- oldLocale = SaveLocale( "C" );
+ SetCLocale();
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) {
@@ -1037,17 +1001,20 @@ 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) );
- RestoreLocale( oldLocale );
+ NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Demo"), demoFileName,
+ strerror(errno) );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
-
+
+ paramFileName = strdup( demoFileName );
playbackColor=wDrawColorBlack;
paramLineNum = 0;
wWinSetTitle( demoW, demoList( curDemo ).title );
@@ -1059,11 +1026,12 @@ 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;
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
free(demoFileName);
@@ -1081,8 +1049,9 @@ static void Playback( void )
}
thisCmd = otherCmd;
paramLineNum++;
- if (showParamLineNum)
+ if (showParamLineNum) {
InfoCount( paramLineNum );
+ }
Stripcr( paramLine );
if (paramLine[0] == '#') {
/* comment */
@@ -1104,15 +1073,16 @@ 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) {
wPause( 1000 );
EnableButtons( FALSE );
} else {
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
} else if (strncmp( paramLine, "CLEAR", 5 ) == 0) {
@@ -1123,26 +1093,31 @@ 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;
EnableButtons( TRUE );
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
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) {
ResolveIndex();
- RecomputeElevations();
+ RecomputeElevations(NULL);
DoRedraw();
/*DoChangeNotification( CHANGE_ALL );*/
} else if (strncmp( paramLine, "COMMAND ", 8 ) == 0) {
@@ -1155,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;
@@ -1190,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 );
@@ -1207,12 +1189,26 @@ 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 ) {
- playbackKeyState = atoi( paramLine+9 );
+ if ( strchr( "0123456789", paramLine[9] ) ) {
+ playbackKeyState = atoi( paramLine+9 );
+ } else {
+ playbackKeyState = 0;
+ if ( strchr( paramLine+9, 'S' ) ) {
+ playbackKeyState |= WKEY_SHIFT;
+ }
+ if ( strchr( paramLine+9, 'C' ) ) {
+ playbackKeyState |= WKEY_CTRL;
+ }
+ if ( strchr( paramLine+9, 'A' ) ) {
+ playbackKeyState |= WKEY_ALT;
+ }
+ }
} else if (strncmp( paramLine, "TIMESTART", 9 ) == 0 ) {
playbackTimer = wGetTimer();
} else if (strncmp( paramLine, "TIMEEND", 7 ) == 0 ) {
@@ -1228,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;
@@ -1253,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;
@@ -1270,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;
}
}
@@ -1289,13 +1294,13 @@ static void Playback( void )
NoticeMessage( MSG_PLAYBACK_UNK_CMD, _("Ok"), NULL, paramLineNum, paramLine );
}
}
- lastCmd = thisCmd;
+// lastCmd = thisCmd;
wFlush();
if (pauseDemo) {
EnableButtons( TRUE );
pauseDemo = FALSE;
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
}
@@ -1309,19 +1314,20 @@ static void Playback( void )
}
inPlayback = FALSE;
PlaybackQuit();
- RestoreLocale( oldLocale );
+ SetUserLocale();
}
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;
}
@@ -1341,11 +1347,10 @@ static int StartPlayback( int cnt, char **pathName, void * context )
static void DoDemoButton( void * command )
{
- switch( (int)(long)command ) {
+ switch( VP2L(command) ) {
case 0:
/* step */
playbackNonStop = (wGetKeyState() & WKEY_SHIFT) != 0;
- paramHiliteFast = (wGetKeyState() & WKEY_CTRL) != 0;
Playback();
break;
case 1:
@@ -1353,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();
}
@@ -1389,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 );
}
@@ -1401,23 +1408,26 @@ static void DemoDlgUpdate(
static void CreateDemoW( void )
{
char * title = MakeWindowTitle(_("Demo"));
- demoW = ParamCreateDialog( &demoPG, title, NULL, NULL, NULL, FALSE, NULL, F_RESIZE, DemoDlgUpdate );
-
- wListAddValue( demoSpeedL, _("Slowest"), NULL, (void*)0 );
- wListAddValue( demoSpeedL, _("Slow"), NULL, (void*)1 );
- wListAddValue( demoSpeedL, _("Normal"), NULL, (void*)2 );
- wListAddValue( demoSpeedL, _("Fast"), NULL, (void*)3 );
- wListAddValue( demoSpeedL, _("Faster"), NULL, (void*)4 );
- wListAddValue( demoSpeedL, _("Fastest"), NULL, (void*)5 );
+ demoW = ParamCreateDialog( &demoPG, title, NULL, NULL, NULL, FALSE, NULL,
+ F_RESIZE, DemoDlgUpdate );
+
+ wListAddValue( demoSpeedL, _("Slowest"), NULL, I2VP(0) );
+ wListAddValue( demoSpeedL, _("Slow"), NULL, I2VP(1) );
+ wListAddValue( demoSpeedL, _("Normal"), NULL, I2VP(2) );
+ wListAddValue( demoSpeedL, _("Fast"), NULL, I2VP(3) );
+ 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));
}
@@ -1431,81 +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",
- "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 )
{
@@ -1526,11 +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;
}
- for ( cpp = demoInitParams; *cpp; cpp++ )
+ for ( cpp = demoInitParams; *cpp; cpp++ ) {
paramPlaybackProc( *cpp );
+ }
// Have to do this manually
oldMagneticSnap = MagneticSnap( TRUE );
}
@@ -1539,10 +1554,11 @@ static void DemoInitValues( void )
static void DoDemo( void * demoNumber )
{
- if (demoW == NULL)
+ if (demoW == NULL) {
CreateDemoW();
+ }
wButtonSetLabel( demoNext, _("Next") );
- curDemo = (int)(long)demoNumber;
+ curDemo = (int)VP2L(demoNumber);
if ( curDemo < 0 || curDemo >= demoList_da.cnt ) {
NoticeMessage( MSG_DEMO_BAD_NUM, _("Ok"), NULL, curDemo );
return;
@@ -1555,47 +1571,43 @@ static void DoDemo( void * demoNumber )
static BOOL_T ReadDemo(
- char * line )
+ char * line )
{
- static wMenu_p m;
- char * cp;
- char *oldLocale = NULL;
- char *path;
-
- if ( m == NULL )
- m = demoM;
-
- if ( strncmp( line, "DEMOGROUP ", 10 ) == 0 ) {
- if (userLocale)
- oldLocale = SaveLocale(userLocale);
- m = wMenuMenuCreate( demoM, NULL, _(line+10) );
- if (oldLocale)
- RestoreLocale(oldLocale);
- } 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 );
- if (userLocale)
- oldLocale = SaveLocale(userLocale);
- 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, (void*)(intptr_t)(demoList_da.cnt-1) );
- if (oldLocale)
- RestoreLocale(oldLocale);
+ 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;
}
- return TRUE;
+ *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) );
+ }
+ return TRUE;
error:
- InputError( "Expected 'DEMO \"<Demo Name>\" <File Name>'", TRUE );
- return FALSE;
+ InputError( "Expected 'DEMO \"<Demo Name>\" <File Name>'", TRUE );
+ return FALSE;
}
@@ -1610,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 );
@@ -1630,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 1652996..8adf0b1 100644
--- a/app/bin/manifest.c
+++ b/app/bin/manifest.c
@@ -1,64 +1,62 @@
/** \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) {
char *copyOfFileName = MyStrdup(nameOfLayout);
cJSON* a_object = cJSON_CreateObject();
cJSON_AddItemToObject(manifest, "layout", a_object);
-#ifdef WINDOWS
+#ifdef UTFCONVERT
copyOfFileName = Convert2UTF8(copyOfFileName);
-#endif // WINDOWS
+#endif // UTFCONVERT
cJSON_AddStringToObject(a_object, "name", copyOfFileName);
MyFree(copyOfFileName);
@@ -69,19 +67,13 @@ char* CreateManifest(char* nameOfLayout, char* background,
cJSON_AddStringToObject(b_object, "name", "background");
backg = MyStrdup(FindFilename(background));
-#ifdef WINDOWS
+#ifdef UTFCONVERT
backg = Convert2UTF8(backg);
#endif
cJSON_AddStringToObject(b_object, "filename", backg);
MyFree(backg);
backg = MyStrdup(background);
-#ifdef WINDOWS
- backg = Convert2UTF8(backg);
- ConvertPathForward(backg);
-#endif // WINDOWS
- 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);
@@ -108,24 +100,24 @@ char* ParseManifest(char* manifest, char* zip_directory)
char* background_file[1] = { NULL };
char* layoutname;
- char *oldLocale = SaveLocale("C");
+ SetCLocale();
cJSON* json_manifest = cJSON_Parse(manifest);
- RestoreLocale(oldLocale);
+ SetUserLocale();
cJSON* layout = cJSON_GetObjectItemCaseSensitive(json_manifest, "layout");
cJSON* name = cJSON_GetObjectItemCaseSensitive(layout, "name");
layoutname = cJSON_GetStringValue(name);
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(layoutname);
-#endif // WINDOWS
+#endif // UTFCONVERT
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");
@@ -136,12 +128,12 @@ char* ParseManifest(char* manifest, char* zip_directory)
cJSON* archpath = cJSON_GetObjectItemCaseSensitive(dependency, "arch-path");
file = MyStrdup(cJSON_GetStringValue(filename));
path = MyStrdup(cJSON_GetStringValue(archpath));
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(file);
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 2ac1e2f..901b684 100644
--- a/app/bin/misc.c
+++ b/app/bin/misc.c
@@ -17,74 +17,29 @@
*
* 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 <stdio.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#include <dirent.h>
-#endif
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <time.h>
-#ifdef WINDOWS
-#include <io.h>
-#include <windows.h>
-#include "getopt.h"
-#define R_OK (02)
-#define access _access
-#if _MSC_VER >1300
-#define strdup _strdup
-#endif
-#else
-#include <sys/stat.h>
-#endif
-#include <locale.h>
-#include <stdarg.h>
-#include <stdint.h>
-#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 "i18n.h"
#include "layout.h"
-#include "messages.h"
-#include "misc.h"
#include "param.h"
#include "include/paramfilelist.h"
#include "paths.h"
#include "smalldlg.h"
#include "track.h"
-#include "utility.h"
-
-#define DEFAULT_SCALE ("N")
+#include "common-ui.h"
-char *userLocale = NULL;
+#include <inttypes.h>
-extern wBalloonHelp_t balloonHelp[];
-
-static wMenuToggle_p mapShowMI;
-static wMenuToggle_p magnetsMI;
+#define DEFAULT_SCALE ("N")
-#ifdef DEBUG
-#define CHECK_BALLOONHELP
-/*#define CHECK_UNUSED_BALLOONHELP*/
-#endif
-#ifdef CHECK_UNUSED_BALLOONHELP
-static void ShowUnusedBalloonHelp(void);
-#endif
-void DoCarDlg(void);
/****************************************************************************
*
@@ -92,208 +47,262 @@ void DoCarDlg(void);
*
*/
-EXPORT int foobar = 0;
-
-EXPORT int log_error;
-static int log_command;
+EXPORT int iconSize = 0;
+EXPORT wWinPix_t displayWidth;
+EXPORT wWinPix_t displayHeight;
EXPORT wWin_p mainW;
-EXPORT wIndex_t changed = 0;
-
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;
-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 wPos_t DlgSepLeft = 12;
-EXPORT wPos_t DlgSepMid = 18;
-EXPORT wPos_t DlgSepRight = 12;
-EXPORT wPos_t DlgSepTop = 12;
-EXPORT wPos_t DlgSepBottom = 12;
-EXPORT wPos_t DlgSepNarrow = 6;
-EXPORT wPos_t DlgSepWide = 12;
-EXPORT wPos_t DlgSepFrmLeft = 4;
-EXPORT wPos_t DlgSepFrmRight = 4;
-EXPORT wPos_t DlgSepFrmTop = 4;
-EXPORT wPos_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 char * stickyLabels[33];
-#define TOOLBARSET_INIT (0xFFFF)
-EXPORT long toolbarSet = TOOLBARSET_INIT;
-EXPORT wPos_t toolbarHeight = 0;
-static wPos_t toolbarWidth = 0;
+EXPORT long units = 0; /**< measurement units: 0 = English, 1 = metric */
-static wMenuList_p messageList_ml;
-static BOOL_T messageListEmpty = TRUE;
-#define MESSAGE_LIST_EMPTY N_("No Messages")
+EXPORT long labelScale = 8;
+EXPORT long labelEnable = (LABELENABLE_ENDPT_ELEV|LABELENABLE_CARS);
+/** @prefs [draw] label-when=2 Unknown */
+EXPORT long labelWhen = 2;
-#define NUM_FILELIST (5)
-
-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 long totalMallocs = 0;
-EXPORT long totalMalloced = 0;
-EXPORT long totalRealloced = 0;
-EXPORT long totalReallocs = 0;
-EXPORT long totalFreeed = 0;
-EXPORT long 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;
+
+typedef struct slog_t {
+ void * storage_p;
+ size_t storage_size;
+ BOOL_T freed;
+} slog_t, * slog_p;
+
+static int StorageLogCurrent = 0;
+
+
+#define LOG_SIZE 1000000
+
static unsigned long guard0 = 0xDEADBEEF;
static unsigned long guard1 = 0xAF00BA8A;
static int log_malloc;
-EXPORT void * MyMalloc(long size) {
+static void RecordMalloc(void * p, size_t 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;
+ log_p[StorageLogCurrent].storage_size = size;
+ StorageLogCurrent++;
+ } else {
+ printf("Storage Log size exceeded, wrapped\n");
+ log_p[0].storage_p = p;
+ log_p[0].storage_size = size;
+ StorageLogCurrent = 1;
+ }
+}
+
+static void RecordMyFree(void *p)
+{
+ slog_p log_p = StorageLog;
+ if (log_p) {
+ for (int i=0; i<StorageLogCurrent; i++) {
+ if (!log_p[i].freed && log_p[i].storage_p == p) {
+ log_p[i].freed = TRUE;
+ }
+ }
+ }
+}
+
+#define SLOG_FMT "0x%.12" PRIxPTR
+
+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; }
+ 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;
+ }
+ if (*(unsigned long*) ((char*) old + oldSize) != guard1) {
+ LogPrintf("Guard 1 hosed, " SLOG_FMT " size: %llu \n", (uintptr_t)old, oldSize);
+ rc = FALSE;
+ }
+ testedMallocs++;
+ }
+ }
+ LogPrintf("Tested: %llu Mallocs: %llu Total Malloced: %llu Freed: %llu Total Freed: %llu \n",
+ 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)
+{
void * p;
totalMallocs++;
totalMalloced += size;
-#if defined(WINDOWS) && ! defined(WIN32)
- if ( size > 65500L ) {
- AbortProg( "mallocing > 65500 bytes" );
- }
-#endif
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) = %lx (%lx-%lx)\n", size, (long)((char*)p+sizeof (size_t) + sizeof (unsigned long)), (long)p, (long)((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);
*(unsigned long*) p = guard0;
p = (char*) p + sizeof(unsigned long);
*(unsigned long*) ((char*) p + size) = guard1;
memset(p, 0, (size_t )size);
+ if (extraButtons) {
+ RecordMalloc(p,size);
+ }
return p;
}
-EXPORT void * MyRealloc(void * old, long 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 defined(WINDOWS) && ! defined(WIN32)
- if ( size > 65500L ) {
- AbortProg( "reallocing > 65500 bytes" );
- }
-#endif
- 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");
- }
- LOG1(log_malloc, ("Realloc(%lx,%ld) was %d\n", (long)old, size, oldSize ))
+ 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 ))
+
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");
- }
- LOG1(log_malloc,
- ("Free %d at %lx (%lx-%lx)\n", oldSize, (long)ptr, (long)((char*)ptr-sizeof *(size_t*)0-sizeof *(long*)0), (long)((char*)ptr+oldSize+sizeof *(long*)0)))
- totalFreeed += oldSize;
- free((char*) ptr - sizeof *(long*) 0 - sizeof *(size_t*) 0);
+ 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 %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
*
@@ -303,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]) {
@@ -323,7 +333,7 @@ EXPORT char * ConvertToEscapedText(const char * text) {
}
text_i++;
}
- unsigned cnt = strlen(text) + 1 + add;
+ size_t cnt = strlen(text) + 1 + add;
#ifdef WINDOWS
cnt *= 2;
#endif
@@ -364,9 +374,6 @@ EXPORT char * ConvertToEscapedText(const char * text) {
text_i++;
}
cout[cout_i] = '\0';
-#ifdef WINDOWS
- wSystemToUTF8(cout, cout, cnt);
-#endif // WINDOWS
return cout;
}
@@ -380,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;
@@ -424,112 +432,136 @@ EXPORT char * ConvertFromEscapedText(const char * text) {
return cout;
}
-EXPORT void AbortProg(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((doSaveCallBack_p) abort);
+ DoSaveAs(abort);
} else {
abort();
}
}
}
-EXPORT char * Strcpytrimed(char * dst, char * src, BOOL_T double_quotes) {
- char * cp;
- while (*src && isspace((unsigned char) *src))
+EXPORT char * Strcpytrimed(char * dst, const char * src, BOOL_T double_quotes)
+{
+ const char * cp;
+ 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;
-#ifdef WINDOWS
-#define F_OK (0)
-#endif
-
-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, char * sep, char * mfg, char * desc,
- 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 char * ParseMessage(char *msgSrc) {
+static const char * ParseMessage(const char *msgSrc)
+{
char *cp1 = NULL, *cp2 = NULL;
static char shortMsg[STR_SIZE];
cp1 = strchr(_(msgSrc), '\t');
@@ -545,34 +577,33 @@ static char * ParseMessage(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(char * format, ...) {
+EXPORT void InfoMessage(const char * format, ...)
+{
va_list ap;
va_start(ap, format);
format = ParseMessage(format);
- vsprintf(message2, format, ap);
+ vsnprintf(message2, 1020, format, ap);
va_end(ap);
/*InfoSubstituteControl( NULL, NULL );*/
- if (inError)
+ if (inError) {
return;
+ }
SetMessage(message2);
}
-EXPORT void ErrorMessage(char * format, ...) {
+EXPORT void ErrorMessage(const char * format, ...)
+{
va_list ap;
va_start(ap, format);
format = ParseMessage(format);
- vsprintf(message2, format, ap);
+ vsnprintf(message2, 1020, format, ap);
va_end(ap);
InfoSubstituteControls( NULL, NULL);
SetMessage(message2);
@@ -580,61 +611,55 @@ EXPORT void ErrorMessage(char * format, ...) {
inError = TRUE;
}
-EXPORT int NoticeMessage(char * format, char * yes, char * no, ...) {
+EXPORT int NoticeMessage(const char * format, const char * yes, const char * no,
+ ...)
+{
va_list ap;
va_start(ap, no);
format = ParseMessage(format);
- vsprintf(message2, format, ap);
+ vsnprintf(message2, 1020, format, ap);
va_end(ap);
return wNotice(message2, yes, no);
}
-EXPORT int NoticeMessage2(int playbackRC, char * format, char * yes, 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);
- vsprintf(message2, format, ap);
+ vsnprintf(message2, 1020, format, ap);
va_end(ap);
return wNoticeEx( NT_INFORMATION, message2, yes, no);
}
-/**
-* Set the file's changed flag and update the window title.
-*/
-
-void
-FileIsChanged(void)
-{
- changed++;
- SetWindowTitle();
-}
/*****************************************************************************
*
* 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) {
@@ -644,101 +669,32 @@ 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) {
- Confirm(_("Load"), DoLoad);
-}
-
-static void ChkExamples( void )
-{
- Confirm(_("examples"), DoExamples);
-}
-
-static void ChkRevert(void)
-{
- 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, NULL);
- }
- }
-}
-
-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) {
- wPos_t width, height;
- const char * fileName;
- void * pathName;
- char file[6];
- int inx;
-
- wWinGetSize(mainW, &width, &height);
- wPrefSetInteger("draw", "mainwidth", width);
- wPrefSetInteger("draw", "mainheight", 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();
- LogClose();
-}
/*
* Clean up before quitting
*/
-static void DoQuitAfter(void) {
+static void DoQuitAfter(void)
+{
changed = 0;
+ CleanupCheckpointFiles(); //Get rid of checkpoint if we quit.
+ CleanupTempArchive(); // removefiels used for archive handling
SaveState();
-
- CleanupFiles();
}
/**
* Process shutdown request. This function is called when the user requests
* to close the application. Before shutting down confirmation is gotten to
* prevent data loss.
*/
-void DoQuit(void) {
+EXPORT void DoQuit(void * unused)
+{
if (Confirm(_("Quit"), DoQuitAfter)) {
#ifdef CHECK_UNUSED_BALLOONHELP
@@ -749,12 +705,13 @@ void DoQuit(void) {
}
}
-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 );
@@ -765,7 +722,8 @@ static void DoClearAfter(void) {
LayoutBackGroundInit(TRUE);
}
-static void DoClear(void) {
+EXPORT void DoClear(void * unused)
+{
Confirm(_("Clear"), DoClearAfter);
}
@@ -773,7 +731,8 @@ static void DoClear(void) {
* Toggle visibility state of map window.
*/
-void MapWindowToggleShow(void) {
+EXPORT void MapWindowToggleShow(void * unused)
+{
MapWindowShow(!mapVisible);
}
@@ -783,7 +742,8 @@ void MapWindowToggleShow(void) {
* \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);
@@ -796,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) {
- 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);
@@ -830,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;
@@ -848,38 +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:
@@ -887,1885 +840,139 @@ EXPORT void DefaultProc(wWin_p win, winProcEvent e, void * data) {
}
}
-static void NextWindow(void) {
+static void NextWindow(void)
+{
}
-EXPORT void SelectFont(void) {
- wSelectFont(_("XTrackCAD Font"));
-}
+
/*****************************************************************************
*
- * COMMAND
+ * ACCEL KEYS
*
*/
-#define COMMAND_MAX (170)
-#define BUTTON_MAX (170)
-#define NUM_CMDMENUS (4)
-
-static struct {
- wControl_p control;
- wBool_t enabled;
- wPos_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(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 );
+enum eAccelAction_t { EA_ZOOMUP, EA_ZOOMDOWN, EA_REDRAW, EA_DELETE, EA_UNDO, EA_COPY, EA_PASTE, EA_CUT, EA_NEXT, EA_HELP };
+struct accelKey_s {
+ const char * sPrefName;
+ 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 },
+#ifdef WINDOWS
+ { "delete", wAccelKey_Del, 0, EA_DELETE, 0 },
#endif
- return _("No Help");
-}
-
-#ifdef CHECK_UNUSED_BALLOONHELP
-static void ShowUnusedBalloonHelp( void )
+ { "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 )
{
- 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 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;
- if (checkPtInterval > 0
- && changed >= checkPtMark + (wIndex_t) checkPtInterval
- && !inPlayback) {
- DoCheckPoint();
- checkPtMark = changed;
-
- autosave_count++;
-
- if ((autosaveChkPoints>0) && (autosave_count>=autosaveChkPoints)) {
- DoSave(NULL);
- InfoMessage(_("File AutoSaved"));
- autosave_count = 0;
- }
- }
-
-
-
- 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;
+ int iAccelKeyIndex = (int)VP2L(accelKeyIndexVP);
+ switch( aAccelKeys[iAccelKeyIndex].iAction ) {
+ case EA_ZOOMUP:
+ DoZoomUp( I2VP(aAccelKeys[iAccelKeyIndex].iContext) );
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;
- }
- }
+ case EA_ZOOMDOWN:
+ DoZoomDown( I2VP(aAccelKeys[iAccelKeyIndex].iContext) );
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;
- }
+ case EA_REDRAW:
+ MainRedraw();
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;
- }
- }
+ case EA_DELETE:
+ TrySelectDelete();
break;
- case C_RUP:
- if (!checkRight)
- return TRUE;
- if (time0 != 0) {
- time0 = 0;
- *action = C_RCLICK;
- }
+ case EA_UNDO:
+ UndoUndo(NULL);
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
+ case EA_COPY:
+ EditCopy(NULL);
break;
- default:
+ case EA_PASTE:
+ EditPaste(NULL);
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;
- }
- LOG(log_command, 1,
- ( "COMMAND START %s\n", commandList[curCommand].helpKey ))
- 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;
-}
-
-EXPORT void ConfirmReset(BOOL_T retry) {
- wAction_t rc;
- if (curCommand != describeCmdInx && curCommand != selectCmdInx) {
- 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 update?"),
- _("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 update?"),
- _("Yes"), _("No"));
- if (rc == 1) {
- LOG(log_command, 3,
- ( "COMMAND OK %s\n", commandList[curCommand].helpKey ))
- commandList[curCommand].cmdProc( C_OK, zero);
- return;
- } else if (rc == -1) {
- return;
- }
- } else if (rc == C_TERMINATE) {
- return;
- }
- }
- 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);
-}
-
-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) (long) 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;
- }
- 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,
- (void*) (intptr_t) 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 ))
- rc = commandList[curCommand].cmdProc( C_START, pos);
- LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
- TempRedraw(); // DoCommandB
- switch (rc) {
- case C_CONTINUE:
+ case EA_CUT:
+ EditCut(NULL);
break;
- case C_ERROR:
- Reset();
-#ifdef VERBOSE
- lprintf( "Start returns Error");
-#endif
+ case EA_NEXT:
+ NextWindow();
break;
- case C_TERMINATE:
- case C_INFO:
- if (rc == C_TERMINATE)
- InfoMessage("");
- Reset();
+ case EA_HELP:
+ wDoAccelHelp(key, I2VP(aAccelKeys[iAccelKeyIndex].iContext));
break;
+ default:
+ CHECK(FALSE);
}
- inDoCommandB = FALSE;
}
-static void DoCommandBIndirect(void * cmdInxP) {
- wIndex_t cmdInx;
- cmdInx = *(wIndex_t*) cmdInxP;
- DoCommandB((void*) (intptr_t) cmdInx);
-}
-
-EXPORT void LayoutSetPos(wIndex_t inx) {
- wPos_t w, h, offset;
- static wPos_t toolbarRowHeight = 0;
- static wPos_t width;
- static int lastGroup;
- static wPos_t gap;
- static int layerButtCnt;
- int currGroup;
-
- if (inx == 0) {
- lastGroup = 0;
- wWinGetSize(mainW, &width, &h);
- gap = 5;
- toolbarWidth = width - 20 + 5;
- layerButtCnt = 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;
- }
- 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);
- }
- }
-}
+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"
+ };
-EXPORT void LayoutToolBar( void * data )
+static void SetAccelKeys()
{
- 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, char * helpKey,
- 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(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 == (void*) action) {
- context = &menuPLs[inx];
- action = ParamMenuPush;
- menuPLs[inx].context = (void*) (intptr_t) 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) {
- wPos_t cmdX, cmdY;
-
- if (buttInx < 0 || buttInx >= buttonCnt)
- return;
- if (buttonList[buttInx].control == NULL)
- return;
- cmdX = buttonList[buttInx].x + 17;
- cmdY = toolbarHeight - (buttonList[buttInx].y + 17)
- + (wPos_t) (mainD.size.y / mainD.scale * mainD.dpi) + 30;
-
- MovePlaybackCursor(&mainD, cmdX, cmdY,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/openbutt.xpm"
-static char * buttonGroupMenuTitle;
-static char * buttonGroupHelpKey;
-static char * buttonGroupStickyLabel;
-static wMenu_p buttonGroupPopupM;
-
-EXPORT void ButtonGroupBegin(char * menuTitle, char * helpKey,
- 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,
- char * helpKey, 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,
- (wButtonCallBack_p) DoCommandB,
- (void*) (intptr_t) commandCnt);
- buttonList[buttInx].cmdInx = commandCnt;
- }
- if (buttonGroupMenuTitle != NULL && buttonGroupPopupM == NULL) {
- if (openbuttIcon == NULL)
- openbuttIcon = wIconCreatePixMap(openbutt_xpm);
- buttonGroupPopupM = wMenuPopupCreate(mainW, buttonGroupMenuTitle);
- AddToolbarButton(buttonGroupHelpKey, openbuttIcon, IC_ABUT,
- (wButtonCallBack_p) wMenuPopupShow,
- (void*) 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,
- (void*) (intptr_t) 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, (void*) (intptr_t) cmdInx);
- if ((options & (IC_POPUP | IC_POPUP2 | IC_POPUP3))) {
- if (!(options & IC_SELECTED)) {
- commandList[cmdInx].menu[2] = wMenuPushCreate(p1m, helpKey, nameStr,
- 0, DoCommandB, (void*) (intptr_t) cmdInx);
- }
- commandList[cmdInx].menu[3] = wMenuPushCreate(p2m, helpKey, nameStr, 0,
- DoCommandB, (void*) (intptr_t) cmdInx);
- }
-
- return cmdInx;
-}
-
-EXPORT wIndex_t InitCommand(wMenu_p menu, procCommand_t command, char * nameStr,
- 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(char * line, wIndex_t lineNum) {
- wIndex_t inx;
- wIndex_t buttInx;
- int 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 {
- wPos_t cmdX, cmdY;
- if ((buttInx = commandList[inx].buttInx) >= 0) {
- cmdX = buttonList[buttInx].x + 17;
- cmdY = toolbarHeight - (buttonList[buttInx].y + 17)
- + (wPos_t) (mainD.size.y / mainD.scale * mainD.dpi) + 30;
- MovePlaybackCursor(&mainD, cmdX, cmdY,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();
- } 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();
+ for ( int iAccelKey = 0; iAccelKey < COUNT( aAccelKeys ); iAccelKey++ ) {
+ struct accelKey_s * akP = &aAccelKeys[iAccelKey];
+ int eKey = akP->eKey;
+ int iMode = akP->iMode;
+ const char * sPrefValue = wPrefGetString("accelKey", akP->sPrefName);
+ if (sPrefValue != NULL) {
+ int iMode1 = 0;
+ while (sPrefValue[1] == '-') {
+ switch (sPrefValue[0]) {
+ case 'S':
+ iMode1 |= WKEY_SHIFT;
+ break;
+ case 'C':
+ iMode1 |= WKEY_CTRL;
+ break;
+ case 'A':
+ iMode1 |= WKEY_ALT;
+ break;
+ default:
+ ;
+ }
+ sPrefValue += 2;
}
- UndoRedo();
- } else {
- if (buttInx >= 0 && playbackTimer == 0) {
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
- wFlush();
- wPause(500);
- wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
- wFlush();
+ for (int inx = 0; inx < COUNT( accelKeyNames ); inx++) {
+ if (strcmp(sPrefValue, accelKeyNames[inx]) == 0) {
+ eKey = inx + 1;
+ iMode = iMode1;
+ break;
+ }
}
- DoCommandB((void*) (intptr_t) 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(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;
- wPos_t x, y;
- 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) {
- mainD.CoOrd2Pix(&mainD, pos, &x, &y);
- MovePlaybackCursor(&mainD, x, y, FALSE, NULL);
- oldMarker = cmdMenuPos = pos;
- wMenuAction(mt->menu, _(itemName));
- return;
}
+ wAttachAccelKey(eKey, iMode, AccelKeyDispatch, I2VP(iAccelKey));
}
- AbortProg("menuPlayback: %s not found", menuName);
-}
-/*--------------------------------------------------------------------*/
-
-static wWin_p stickyW;
-
-static void StickyOk(void *);
-static paramData_t stickyPLs[] = { { PD_TOGGLE, &stickySet, "set", 0,
- stickyLabels } };
-static paramGroup_t stickyPG = { "sticky", PGO_RECORD, stickyPLs,
- sizeof stickyPLs / sizeof stickyPLs[0] };
-
-static void StickyOk(void * junk) {
- wHide(stickyW);
-}
-
-static void DoSticky(void) {
- 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_("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_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 void ToolbarAction(wBool_t set, void * data) {
- long mask = (long) data;
- 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 = sizeof(AllToolbarMasks) / sizeof(AllToolbarMasks[0]);
- masks = AllToolbarMasks;
- labels = AllToolbarLabels;
- for (inx = 0; inx < cnt; inx++, masks++, labels++) {
- set = (toolbarSet & *masks) != 0;
- wMenuToggleCreate(toolbarM, "toolbarM", _(*labels), 0, set,
- ToolbarAction, (void*) *masks);
- }
-}
-
-/*--------------------------------------------------------------------*/
-
-static wWin_p addElevW;
-#define addElevF (wFloat_p)addElevPD.control
-EXPORT DIST_T addElevValueV;
-static void DoAddElev(void *);
-
-static paramFloatRange_t rn1000_1000 = { -1000.0, 1000.0 };
-static paramData_t addElevPLs[] = { { PD_FLOAT, &addElevValueV, "value",
- PDO_DIM, &rn1000_1000, NULL, 0 } };
-static paramGroup_t addElevPG = { "addElev", 0, addElevPLs, sizeof addElevPLs
- / sizeof addElevPLs[0] };
-
-static void DoAddElev(void * junk) {
- ParamLoadData(&addElevPG);
- AddElevations(addElevValueV);
- wHide(addElevW);
-}
-
-static void ShowAddElevations(void) {
- 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 moveW;
-static double rotateValue;
-static coOrd moveValue;
-static rotateDialogCallBack_t rotateDialogCallBack;
-static moveDialogCallBack_t moveDialogCallBack;
-
-static void RotateEnterOk(void *);
-
-static paramFloatRange_t rn360_360 = { -360.0, 360.0, 80.0 };
-static paramData_t rotatePLs[] = { { PD_FLOAT, &rotateValue, "rotate", PDO_ANGLE,
- &rn360_360, N_("Angle:") } };
-static paramGroup_t rotatePG = { "rotate", 0, rotatePLs, sizeof rotatePLs
- / sizeof rotatePLs[0] };
-
-static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
-static void MoveEnterOk(void *);
-static paramData_t movePLs[] = { { PD_FLOAT, &moveValue.x, "moveX", PDO_DIM,
- &r_1000_1000, N_("Move X:") }, { PD_FLOAT, &moveValue.y, "moveY",
- PDO_DIM, &r_1000_1000, N_("Move Y:") } };
-static paramGroup_t movePG = { "move", 0, movePLs, sizeof movePLs
- / sizeof movePLs[0] };
-
-EXPORT void StartRotateDialog(rotateDialogCallBack_t func) {
- if (rotateW == NULL)
- rotateW = ParamCreateDialog(&rotatePG, MakeWindowTitle(_("Rotate")),
- _("Ok"), RotateEnterOk, wHide, FALSE, NULL, 0, NULL);
- ParamLoadControls(&rotatePG);
- rotateDialogCallBack = func;
- wShow(rotateW);
-}
-
-EXPORT void StartMoveDialog(moveDialogCallBack_t func) {
- 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 * junk) {
- ParamLoadData(&movePG);
- moveDialogCallBack((void*) &moveValue);
- wHide(moveW);
-}
-
-static void RotateEnterOk(void * junk) {
- ParamLoadData(&rotatePG);
- if (angleSystem == ANGLE_POLAR)
- rotateDialogCallBack((void*) (long)(rotateValue*1000));
- else
- rotateDialogCallBack((void*) (long)(-rotateValue*1000));
- wHide(rotateW);
-}
-
-static void RotateDialogInit(void) {
- ParamRegister(&rotatePG);
}
-static void MoveDialogInit(void) {
- ParamRegister(&movePG);
-}
-EXPORT void AddMoveMenu(wMenu_p m, moveDialogCallBack_t func) {
- wMenuPushCreate(m, "", _("Enter Move ..."), 0,
- (wMenuCallBack_p) StartMoveDialog, (void*) func);
-}
+//EXPORT void InitCmdEnumerate(void) {
+// AddToolbarButton("cmdEnumerate", wIconCreatePixMap(partlist_xpm),
+// IC_SELECTED | IC_ACCLKEY, EnumerateTracks,
+// NULL);
+//}
-//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, (void*) 180000);
- wMenuPushCreate(m, "", _("90 CW"), 0, func, (void*) (long) (90000));
- wMenuPushCreate(m, "", _("45 CW"), 0, func, (void*) (long) (45000));
- wMenuPushCreate(m, "", _("30 CW"), 0, func, (void*) (long) (30000));
- wMenuPushCreate(m, "", _("15 CW"), 0, func, (void*) (long) (15000));
- wMenuPushCreate(m, "", _("15 CCW"), 0, func, (void*) (long) (360000 - 15000));
- wMenuPushCreate(m, "", _("30 CCW"), 0, func, (void*) (long) (360000 - 30000));
- wMenuPushCreate(m, "", _("45 CCW"), 0, func, (void*) (long) (360000 - 45000));
- wMenuPushCreate(m, "", _("90 CCW"), 0, func, (void*) (long) (360000 - 90000));
- wMenuPushCreate(m, "", _("Enter Angle ..."), 0,
- (wMenuCallBack_p) StartRotateDialog, (void*) func);
-}
-/*****************************************************************************
+
+/****************************************************************************
*
- * INITIALIZATON
+ * WMAIN
*
*/
-static wWin_p debugW;
-
-static int debugCnt = 0;
-static paramIntegerRange_t r0_100 = { 0, 100, 80 };
-static void DebugOk(void * junk);
-static paramData_t debugPLs[30];
-static long debug_values[30];
-static int debug_index[30];
-
-static paramGroup_t debugPG = { "debug", 0, debugPLs, 0 };
-
-static void DebugOk(void * junk) {
- for (int i = 0; i<debugCnt;i++) {
- logTable(debug_index[i]).level = debug_values[i];
- }
- wHide(debugW);
-}
-
-static void CreateDebugW(void) {
- debugPG.paramCnt = debugCnt;
- ParamRegister(&debugPG);
- debugW = ParamCreateDialog(&debugPG, MakeWindowTitle(_("Debug")), _("Ok"),
- DebugOk, wHide, FALSE, NULL, 0, NULL);
- wHide(debugW);
-}
-
-EXPORT void DebugInit(void) {
-
- if (!debugW) {
- 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(char * label, long * valueP) {
- if (debugCnt >= sizeof debugPLs / sizeof debugPLs[0])
- AbortProg("Too many debug flags");
- memset(&debugPLs[debugCnt], 0, sizeof debugPLs[debugCnt]);
- debugPLs[debugCnt].type = PD_LONG;
- debugPLs[debugCnt].valueP = valueP;
- debugPLs[debugCnt].nameStr = label;
- debugPLs[debugCnt].winData = &r0_100;
- debugPLs[debugCnt].winLabel = label;
- debugCnt++;
-}
-
-void RecomputeElevations(void);
-
-static void MiscMenuItemCreate(wMenu_p m1, wMenu_p m2, char * name,
- 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++;
-}
-
-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" };
-
-static void SetAccelKey(char * prefName, wAccelKey_e key, int mode,
- wAccelKeyCallBack_p func, void * context) {
- int mode1 = 0;
- int inx;
- const char * prefValue = wPrefGetString("accelKey", prefName);
- if (prefValue != NULL) {
- while (prefValue[1] == '-') {
- switch (prefValue[0]) {
- case 'S':
- mode1 |= WKEY_SHIFT;
- break;
- case 'C':
- mode1 |= WKEY_CTRL;
- break;
- case 'A':
- mode1 |= WKEY_ALT;
- break;
- default:
- ;
- }
- prefValue += 2;
- }
- for (inx = 0; inx < sizeof accelKeyNames / sizeof accelKeyNames[0];
- inx++) {
- if (strcmp(prefValue, accelKeyNames[inx]) == 0) {
- key = inx + 1;
- mode = mode1;
- break;
- }
- }
- }
- wAttachAccelKey(key, mode, func, context);
-}
-
-#include "bitmaps/zoomin.xpm"
-#include "bitmaps/zoom.xpm"
-#include "bitmaps/zoomout.xpm"
-#include "bitmaps/edit-undo.xpm"
-#include "bitmaps/edit-redo.xpm"
-#include "bitmaps/partlist.xpm"
-#include "bitmaps/document-export.xpm"
-#include "bitmaps/document-exportdxf.xpm"
-#include "bitmaps/document-import.xpm"
-#include "bitmaps/document-importmod.xpm"
-#include "bitmaps/document-new.xpm"
-#include "bitmaps/document-save.xpm"
-#include "bitmaps/document-open.xpm"
-#include "bitmaps/document-print.xpm"
-#include "bitmaps/map.xpm"
-#include "bitmaps/magnet.xpm"
-
-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;
-
- 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,
- (void*) (wMenuCallBack_p) UndoUndo, 0, (void *) 0);
- MiscMenuItemCreate(popup1M, popup2M, "cmdRedo", _("Redo"), 0,
- (void*) (wMenuCallBack_p) UndoRedo, 0, (void *) 0);
- /* Zoom */
- wMenuPushCreate(popup1M, "cmdZoomIn", _("Zoom In"), 0,
- (wMenuCallBack_p) DoZoomUp, (void*) 1);
- wMenuPushCreate(popup2M, "cmdZoomIn", _("Zoom In"), 0,
- (wMenuCallBack_p) DoZoomUp, (void*) 1);
- wMenuPushCreate(popup1M, "cmdZoomOut", _("Zoom Out"), 0,
- (wMenuCallBack_p) DoZoomDown, (void*) 1);
- wMenuPushCreate(popup2M, "cmdZoomOut", _("Zoom Out"), 0,
- (wMenuCallBack_p) DoZoomDown, (void*) 1);
- /* Display */
- MiscMenuItemCreate(popup1M, popup2M, "cmdGridEnable", _("Enable SnapGrid"),
- 0, (void*) (wMenuCallBack_p) SnapGridEnable, 0, (void *) 0);
- MiscMenuItemCreate(popup1M, popup2M, "cmdGridShow", _("SnapGrid Show"), 0,
- (void*) (wMenuCallBack_p) SnapGridShow, 0, (void *) 0);
- MiscMenuItemCreate(popup1M, popup2M, "cmdMagneticSnap", _(" Enable Magnetic Snap"), 0,
- (void*) (wMenuCallBack_p) MagneticSnapToggle, 0, (void *) 0);
- MiscMenuItemCreate(popup1M, popup2M, "cmdMapShow", _("Show/Hide Map"), 0,
- (void*) (wMenuCallBack_p) MapWindowToggleShow, 0, (void *) 0);
- MiscMenuItemCreate(popup1M, popup2M, "cmdBackgroundShow", _("Show/Hide Background"), 0,
- (void*) (wMenuCallBack_p) BackgroundToggleShow, 0, (void *) 0);
- wMenuSeparatorCreate(popup1M);
- wMenuSeparatorCreate(popup2M);
- /* Copy/Paste */
- MiscMenuItemCreate(popup2M, NULL, "cmdCut", _("Cut"), 0,
- (void*) (wMenuCallBack_p) EditCut, 0, (void *) 0);
- MiscMenuItemCreate(popup2M, NULL, "cmdCopy", _("Copy"), 0,
- (void*) (wMenuCallBack_p) EditCopy, 0, (void *) 0);
- MiscMenuItemCreate(popup1M, popup2M, "cmdPaste", _("Paste"), 0,
- (void*) (wMenuCallBack_p) EditPaste, 0, (void *) 0);
- MiscMenuItemCreate(popup2M, NULL, "cmdClone", _("Clone"), 0,
- (void*) (wMenuCallBack_p) EditClone, 0, (void *) 0);
- /*Select*/
- MiscMenuItemCreate(popup1M, popup2M, "cmdSelectAll", _("Select All"), 0,
- (void*) (wMenuCallBack_p) SetAllTrackSelect, 0, (void *) 1);
- MiscMenuItemCreate(popup1M, popup2M, "cmdSelectCurrentLayer",
- _("Select Current Layer"), 0,
- (void*) (wMenuCallBack_p) SelectCurrentLayer, 0, (void *) 0);
- MiscMenuItemCreate(popup2M, NULL, "cmdDeselectAll", _("Deselect All"), 0,
- (void*) (wMenuCallBack_p) SetAllTrackSelect, 0, (void *) 0);
- /* Modify */
- wMenuPushCreate(popup2M, "cmdMove", _("Move"), 0,
- (wMenuCallBack_p) DoCommandBIndirect, &moveCmdInx);
- wMenuPushCreate(popup2M, "cmdRotate", _("Rotate"), 0,
- (wMenuCallBack_p) DoCommandBIndirect, &rotateCmdInx);
- wMenuSeparatorCreate(popup1M);
- wMenuSeparatorCreate(popup2M);
- MiscMenuItemCreate(popup2M, NULL, "cmdDelete", _("Delete"), 0,
- (void*) (wMenuCallBack_p) SelectDelete, 0, (void *) 0);
- wMenuSeparatorCreate(popup2M);
- popup1aM = wMenuMenuCreate(popup1M, "", _("Add..."));
- popup2aM = wMenuMenuCreate(popup2M, "", _("Add..."));
- wMenuSeparatorCreate(popup2M);
- wMenuSeparatorCreate(popup1M);
- popup1mM = wMenuMenuCreate(popup1M, "", _("More..."));
- popup2mM = wMenuMenuCreate(popup2M, "", _("More..."));
-
- cmdGroup = BG_FILE;
- AddToolbarButton("menuFile-clear", wIconCreatePixMap(document_new),
- IC_MODETRAIN_TOO, (addButtonCallBack_t) DoClear, NULL);
- AddToolbarButton("menuFile-load", wIconCreatePixMap(document_open),
- IC_MODETRAIN_TOO, (addButtonCallBack_t) ChkLoad, NULL);
- AddToolbarButton("menuFile-save", wIconCreatePixMap(document_save),
- IC_MODETRAIN_TOO, (addButtonCallBack_t) DoSave, NULL);
-
- InitCmdExport();
-
- cmdGroup = BG_ZOOM;
- zoomUpB = AddToolbarButton("cmdZoomIn", wIconCreatePixMap(zoomin_xpm),
- IC_MODETRAIN_TOO, (addButtonCallBack_t) DoZoomUp, NULL);
-
- zoomM = wMenuPopupCreate(mainW, "");
- AddToolbarButton("cmdZoom", wIconCreatePixMap(zoom_xpm), IC_MODETRAIN_TOO,
- (wButtonCallBack_p) wMenuPopupShow, zoomM);
-
- zoomDownB = AddToolbarButton("cmdZoomOut", wIconCreatePixMap(zoomout_xpm),
- IC_MODETRAIN_TOO, (addButtonCallBack_t) DoZoomDown, NULL);
-
- cmdGroup = BG_UNDO;
- undoB = AddToolbarButton("cmdUndo", wIconCreatePixMap(edit_undo), 0,
- (addButtonCallBack_t) UndoUndo, NULL);
- redoB = AddToolbarButton("cmdRedo", wIconCreatePixMap(edit_redo), 0,
- (addButtonCallBack_t) UndoRedo, NULL);
-
- wControlActive((wControl_p) undoB, FALSE);
- wControlActive((wControl_p) redoB, FALSE);
-
- /*
- * FILE MENU
- */
- MiscMenuItemCreate(fileM, NULL, "menuFile-clear", _("&New ..."), ACCL_NEW,
- (void*) (wMenuCallBack_p) DoClear, 0, (void *) 0);
- wMenuPushCreate(fileM, "menuFile-load", _("&Open ..."), ACCL_OPEN,
- (wMenuCallBack_p) ChkLoad, NULL);
- wMenuSeparatorCreate(fileM);
-
- wMenuPushCreate(fileM, "menuFile-save", _("&Save"), ACCL_SAVE,
- (wMenuCallBack_p) DoSave, NULL);
- wMenuPushCreate(fileM, "menuFile-saveAs", _("Save &As ..."), ACCL_SAVEAS,
- (wMenuCallBack_p) DoSaveAs, NULL);
- wMenuPushCreate(fileM, "menuFile-revert", _("Revert"), ACCL_REVERT,
- (wMenuCallBack_p) ChkRevert, NULL);
- wMenuSeparatorCreate(fileM);
- MiscMenuItemCreate(fileM, NULL, "printSetup", _("P&rint Setup ..."),
- ACCL_PRINTSETUP, (void*) (wMenuCallBack_p) wPrintSetup, 0,
- (void *) 0);
- printCmdInx = InitCmdPrint(fileM);
- wMenuSeparatorCreate(fileM);
- MiscMenuItemCreate(fileM, NULL, "cmdImport", _("&Import"), ACCL_IMPORT,
- (void*) (wMenuCallBack_p) DoImport, 0, (void *) 0);
- MiscMenuItemCreate(fileM, NULL, "cmdImportModule", _("Import &Module"), ACCL_IMPORT_MOD,
- (void*) (wMenuCallBack_p) DoImport, 0, (void *) 1);
- MiscMenuItemCreate(fileM, NULL, "cmdOutputbitmap", _("Export to &Bitmap"),
- ACCL_PRINTBM, (void*) (wMenuCallBack_p) OutputBitMapInit(), 0,
- (void *) 0);
- MiscMenuItemCreate(fileM, NULL, "cmdExport", _("E&xport"), ACCL_EXPORT,
- (void*) (wMenuCallBack_p) DoExport, IC_SELECTED, (void *) 0);
- MiscMenuItemCreate(fileM, NULL, "cmdExportDXF", _("Export D&XF"),
- ACCL_EXPORTDXF, (void*) (wMenuCallBack_p) DoExportDXF, IC_SELECTED,
- (void *) 0);
- wMenuSeparatorCreate(fileM);
-
- MiscMenuItemCreate(fileM, NULL, "cmdPrmfile", _("Parameter &Files ..."),
- ACCL_PARAMFILES, (void*) ParamFilesInit(), 0, (void *) 0);
- MiscMenuItemCreate(fileM, NULL, "cmdFileNote", _("No&tes ..."), ACCL_NOTES,
- (void*) (wMenuCallBack_p) DoNote, 0, (void *) 0);
-
- wMenuSeparatorCreate(fileM);
- fileList_ml = wMenuListCreate(fileM, "menuFileList", NUM_FILELIST,
- ChkFileList);
- wMenuSeparatorCreate(fileM);
- wMenuPushCreate(fileM, "menuFile-quit", _("E&xit"), 0,
- (wMenuCallBack_p) DoQuit, NULL);
-
- /*
- * EDIT MENU
- */
- MiscMenuItemCreate(editM, NULL, "cmdUndo", _("&Undo"), ACCL_UNDO,
- (void*) (wMenuCallBack_p) UndoUndo, 0, (void *) 0);
- MiscMenuItemCreate(editM, NULL, "cmdRedo", _("R&edo"), ACCL_REDO,
- (void*) (wMenuCallBack_p) UndoRedo, 0, (void *) 0);
- wMenuSeparatorCreate(editM);
- MiscMenuItemCreate(editM, NULL, "cmdCut", _("Cu&t"), ACCL_CUT,
- (void*) (wMenuCallBack_p) EditCut, IC_SELECTED, (void *) 0);
- MiscMenuItemCreate(editM, NULL, "cmdCopy", _("&Copy"), ACCL_COPY,
- (void*) (wMenuCallBack_p) EditCopy, IC_SELECTED, (void *) 0);
- MiscMenuItemCreate(editM, NULL, "cmdPaste", _("&Paste"), ACCL_PASTE,
- (void*) (wMenuCallBack_p) EditPaste, 0, (void *) 0);
- MiscMenuItemCreate(editM, NULL, "cmdClone", _("C&lone"), ACCL_CLONE,
- (void*) (wMenuCallBack_p) EditClone, 0, (void *) 0);
- MiscMenuItemCreate(editM, NULL, "cmdDelete", _("De&lete"), ACCL_DELETE,
- (void*) (wMenuCallBack_p) SelectDelete, IC_SELECTED, (void *) 0);
- MiscMenuItemCreate(editM, NULL, "cmdMoveToCurrentLayer",
- _("Move To Current Layer"), ACCL_MOVCURLAYER,
- (void*) (wMenuCallBack_p) MoveSelectedTracksToCurrentLayer,
- IC_SELECTED, (void *) 0);
- wMenuSeparatorCreate( editM );
- menuPLs[menuPG.paramCnt].context = (void*)1;
- MiscMenuItemCreate( editM, NULL, "cmdSelectAll", _("Select &All"), ACCL_SELECTALL, (void*)(wMenuCallBack_p)SetAllTrackSelect, 0, (void *)1 );
- MiscMenuItemCreate( editM, NULL, "cmdSelectCurrentLayer", _("Select Current Layer"), ACCL_SETCURLAYER, (void*)(wMenuCallBack_p)SelectCurrentLayer, 0, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdDeselectAll", _("&Deselect All"), ACCL_DESELECTALL, (void*)(wMenuCallBack_p)SetAllTrackSelect, 0, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdSelectInvert", _("&Invert Selection"), 0L, (void*)(wMenuCallBack_p)InvertTrackSelect, 0, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdSelectOrphaned", _("Select Stranded Track"), 0L, (void*)(wMenuCallBack_p)OrphanedTrackSelect, 0, (void *)0 );
- wMenuSeparatorCreate( editM );
- MiscMenuItemCreate( editM, NULL, "cmdTunnel", _("Tu&nnel"), ACCL_TUNNEL, (void*)(wMenuCallBack_p)SelectTunnel, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdBridge", _("B&ridge"), ACCL_BRIDGE, (void*)(wMenuCallBack_p)SelectBridge, IC_SELECTED, (void *)0);
- MiscMenuItemCreate( editM, NULL, "cmdTies", _("Ties/NoTies"), ACCL_TIES, (void*)(wMenuCallBack_p)SelectTies, IC_SELECTED, (void *)0);
- MiscMenuItemCreate( editM, NULL, "cmdAbove", _("Move to &Front"), ACCL_ABOVE, (void*)(wMenuCallBack_p)SelectAbove, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdBelow", _("Move to &Back"), ACCL_BELOW, (void*)(wMenuCallBack_p)SelectBelow, IC_SELECTED, (void *)0 );
-
- wMenuSeparatorCreate( editM );
- MiscMenuItemCreate( editM, NULL, "cmdWidth0", _("Thin Tracks"), ACCL_THIN, (void*)(wMenuCallBack_p)SelectTrackWidth, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdWidth2", _("Medium Tracks"), ACCL_MEDIUM, (void*)(wMenuCallBack_p)SelectTrackWidth, IC_SELECTED, (void *)2 );
- MiscMenuItemCreate( editM, NULL, "cmdWidth3", _("Thick Tracks"), ACCL_THICK, (void*)(wMenuCallBack_p)SelectTrackWidth, IC_SELECTED, (void *)3 );
-
- /*
- * VIEW MENU
- */
- zoomInM = wMenuPushCreate(viewM, "menuEdit-zoomIn", _("Zoom &In"),
- ACCL_ZOOMIN, (wMenuCallBack_p) DoZoomUp, (void*) 1);
- zoomSubM = wMenuMenuCreate(viewM, "menuEdit-zoomTo", _("&Zoom"));
- zoomOutM = wMenuPushCreate(viewM, "menuEdit-zoomOut", _("Zoom &Out"),
- ACCL_ZOOMOUT, (wMenuCallBack_p) DoZoomDown, (void*) 1);
- 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);
-
- 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,
- (wMenuToggleCallBack_p) SnapGridEnable, NULL);
- snapGridShowMI = wMenuToggleCreate(viewM, "cmdGridShow", _("Show SnapGrid"),
- ACCL_SNAPSHOW,
- FALSE, (wMenuToggleCallBack_p) SnapGridShow, NULL);
- gridCmdInx = InitGrid(viewM);
-
- // visibility toggle for anchors
- // get the start value
- long anchors_long;
- wPrefGetInteger("misc", "anchors", (long *)&anchors_long, 1);
- magneticSnap = anchors_long ? TRUE : FALSE;
- magnetsMI = wMenuToggleCreate(viewM, "cmdMagneticSnap", _("Enable Magnetic Snap"),
- 0, magneticSnap,
- (wMenuToggleCallBack_p)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,
- (wMenuToggleCallBack_p) 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),
- IC_MODETRAIN_TOO, (addButtonCallBack_t) MagneticSnapToggle, NULL);
- wControlLinkedSet((wControl_p) magnetsMI, (wControl_p) magnetsB);
- wButtonSetBusy(magnetsB, (wBool_t) magneticSnap);
-
- mapShowB = AddToolbarButton("cmdMapShow", wIconCreatePixMap(map_xpm),
- IC_MODETRAIN_TOO, (addButtonCallBack_t) 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(changeM);
- wMenuSeparatorCreate(changeM);
-
- cmdGroup = BG_TRKGRP;
- InitCmdMove(changeM);
- InitCmdDelete();
- InitCmdTunnel();
- InitCmdBridge();
- InitCmdAboveBelow();
-
- cmdGroup = BG_TRKMOD;
- if (extraButtons)
- MiscMenuItemCreate(changeM, NULL, "loosen", _("&Loosen Tracks"),
- ACCL_LOOSEN, (void*) (wMenuCallBack_p) LoosenTracks,
- IC_SELECTED, (void *) 0);
-
- InitCmdModify(changeM);
- InitCmdJoin(changeM);
- InitCmdPull(changeM);
- InitCmdSplit(changeM);
- InitCmdMoveDescription(changeM);
- wMenuSeparatorCreate(changeM);
-
- MiscMenuItemCreate(changeM, NULL, "cmdAddElevations",
- _("Raise/Lower Elevations"), ACCL_CHGELEV,
- (void*) (wMenuCallBack_p) ShowAddElevations, IC_SELECTED,
- (void *) 0);
- InitCmdElevation(changeM);
- InitCmdProfile(changeM);
-
- MiscMenuItemCreate(changeM, NULL, "cmdClearElevations",
- _("Clear Elevations"), ACCL_CLRELEV,
- (void*) (wMenuCallBack_p) ClearElevations, IC_SELECTED, (void *) 0);
- MiscMenuItemCreate(changeM, NULL, "cmdElevation", _("Recompute Elevations"),
- 0, (void*) (wMenuCallBack_p) RecomputeElevations, 0, (void *) 0);
- ParamRegister(&addElevPG);
-
- wMenuSeparatorCreate(changeM);
- MiscMenuItemCreate(changeM, NULL, "cmdRescale", _("Change Scale"), 0,
- (void*) (wMenuCallBack_p) DoRescale, IC_SELECTED, (void *) 0);
-
- wMenuSeparatorCreate(changeM);
-
- InitCmdCornu(changeM);
-
- /*
- * 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, (void*) LayoutInit(), IC_MODETRAIN_TOO, (void *) 0);
- MiscMenuItemCreate(optionM, NULL, "cmdDisplay", _("&Display ..."),
- ACCL_DISPLAYW, (void*) DisplayInit(), IC_MODETRAIN_TOO, (void *) 0);
- MiscMenuItemCreate(optionM, NULL, "cmdCmdopt", _("Co&mmand ..."),
- ACCL_CMDOPTW, (void*) CmdoptInit(), IC_MODETRAIN_TOO, (void *) 0);
- MiscMenuItemCreate(optionM, NULL, "cmdEasement", _("&Easements ..."),
- ACCL_EASEW, (void*) (wMenuCallBack_p) DoEasementRedir,
- IC_MODETRAIN_TOO, (void *) 0);
- MiscMenuItemCreate(optionM, NULL, "fontSelW", _("&Fonts ..."), ACCL_FONTW,
- (void*) (wMenuCallBack_p) SelectFont, IC_MODETRAIN_TOO, (void *) 0);
- MiscMenuItemCreate(optionM, NULL, "cmdSticky", _("Stic&ky ..."),
- ACCL_STICKY, (void*) (wMenuCallBack_p) DoSticky, IC_MODETRAIN_TOO,
- (void *) 0);
- if (extraButtons) {
- menuPLs[menuPG.paramCnt].context = debugW;
- MiscMenuItemCreate(optionM, NULL, "cmdDebug", _("&Debug ..."), 0,
- (void*) (wMenuCallBack_p) DebugInit, IC_MODETRAIN_TOO, (void *) 0);
- }
- MiscMenuItemCreate(optionM, NULL, "cmdPref", _("&Preferences ..."),
- ACCL_PREFERENCES, (void*) PrefInit(), IC_MODETRAIN_TOO, (void *) 0);
- MiscMenuItemCreate(optionM, NULL, "cmdColor", _("&Colors ..."), ACCL_COLORW,
- (void*) ColorInit(), IC_MODETRAIN_TOO, (void *) 0);
-
- /*
- * 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, (wMenuCallBack_p)ShowTip, (void *)(SHOWTIP_FORCESHOW | SHOWTIP_NEXTTIP));
- demoM = wMenuMenuCreate( helpM, "cmdDemo", _("&Demos") );
- wMenuPushCreate( helpM, "cmdExamples", _("Examples..."), 0, (wMenuCallBack_p)ChkExamples, (void *)0);
-
- /* about window */
- wMenuSeparatorCreate(helpM);
- wMenuPushCreate(helpM, "about", _("About"), 0,
- (wMenuCallBack_p) 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,
- (void*) ControlMgrInit(), 0, (void*) 0);
- MiscMenuItemCreate(manageM, NULL, "cmdGroup", _("&Group"), ACCL_GROUP,
- (void*) (wMenuCallBack_p) DoGroup, IC_SELECTED, (void *) 0);
- MiscMenuItemCreate(manageM, NULL, "cmdUngroup", _("&Ungroup"), ACCL_UNGROUP,
- (void*) (wMenuCallBack_p) DoUngroup, IC_SELECTED, (void *) 0);
-
- MiscMenuItemCreate(manageM, NULL, "cmdCustmgm",
- _("Custom defined parts..."), ACCL_CUSTMGM, (void*) CustomMgrInit(),
- 0, (void *) 0);
- MiscMenuItemCreate(manageM, NULL, "cmdRefreshCompound",
- _("Update Turnouts and Structures"), 0,
- (void*) (wMenuCallBack_p) DoRefreshCompound, 0, (void *) 0);
-
- MiscMenuItemCreate(manageM, NULL, "cmdCarInventory", _("Car Inventory"),
- ACCL_CARINV, (void*) (wMenuCallBack_p) DoCarDlg, IC_MODETRAIN_TOO,
- (void *) 0);
-
- wMenuSeparatorCreate(manageM);
-
- MiscMenuItemCreate(manageM, NULL, "cmdLayer", _("Layers ..."), ACCL_LAYERS,
- (void*) InitLayersDialog(), 0, (void *) 0);
- wMenuSeparatorCreate(manageM);
-
- MiscMenuItemCreate(manageM, NULL, "cmdEnumerate", _("Parts &List ..."),
- ACCL_PARTSLIST, (void*) (wMenuCallBack_p) EnumerateTracks, 0,
- (void *) 0);
- MiscMenuItemCreate(manageM, NULL, "cmdPricelist", _("Price List..."),
- ACCL_PRICELIST, (void*) PriceListInit(), 0, (void *) 0);
-
- cmdGroup = BG_LAYER | BG_BIGGAP;
-
- InitCmdSelect2(changeM);
- InitCmdDescribe2(changeM);
- InitCmdPan2(changeM);
-
- InitLayers();
-
- cmdGroup = BG_HOTBAR;
- InitHotBar();
-
-#ifdef LATER
-#ifdef WINDOWS
- wAttachAccelKey( wAccelKey_Pgdn, 0, (wAccelKeyCallBack_p)DoZoomUp, (void*)1 );
- wAttachAccelKey( wAccelKey_Pgup, 0, (wAccelKeyCallBack_p)DoZoomDown, (void*)1 );
- wAttachAccelKey( wAccelKey_F5, 0, (wAccelKeyCallBack_p)MainRedraw, (void*)1 );
-#endif
- wAttachAccelKey( wAccelKey_Ins, WKEY_CTRL, (wAccelKeyCallBack_p)EditCopy, 0 );
- wAttachAccelKey( wAccelKey_Ins, WKEY_SHIFT, (wAccelKeyCallBack_p)EditPaste, 0 );
- wAttachAccelKey( wAccelKey_Back, WKEY_SHIFT, (wAccelKeyCallBack_p)UndoUndo, 0 );
- wAttachAccelKey( wAccelKey_Del, WKEY_SHIFT, (wAccelKeyCallBack_p)EditCut, 0 );
- wAttachAccelKey( wAccelKey_F6, 0, (wAccelKeyCallBack_p)NextWindow, 0 );
-#endif
- SetAccelKey("zoomUp", wAccelKey_Pgdn, 0, (wAccelKeyCallBack_p) DoZoomUp,
- (void*) 1);
- SetAccelKey("zoomDown", wAccelKey_Pgup, 0, (wAccelKeyCallBack_p) DoZoomDown,
- (void*) 1);
- SetAccelKey("redraw", wAccelKey_F5, 0, (wAccelKeyCallBack_p) MainRedraw,
- (void*) 1);
- SetAccelKey("delete", wAccelKey_Del, 0, (wAccelKeyCallBack_p) SelectDelete,
- (void*) 1);
- SetAccelKey("copy", wAccelKey_Ins, WKEY_CTRL,
- (wAccelKeyCallBack_p) EditCopy, 0);
- SetAccelKey("paste", wAccelKey_Ins, WKEY_SHIFT,
- (wAccelKeyCallBack_p) EditPaste, 0);
- SetAccelKey("undo", wAccelKey_Back, WKEY_SHIFT,
- (wAccelKeyCallBack_p) UndoUndo, 0);
- SetAccelKey("cut", wAccelKey_Del, WKEY_SHIFT, (wAccelKeyCallBack_p) EditCut,
- 0);
- SetAccelKey("nextWindow", wAccelKey_F6, 0, (wAccelKeyCallBack_p) NextWindow,
- 0);
- SetAccelKey("zoomUp", wAccelKey_Numpad_Add, WKEY_CTRL,
- (wAccelKeyCallBack_p) DoZoomUp, (void*) 1);
- SetAccelKey("zoomDown", wAccelKey_Numpad_Subtract, WKEY_CTRL,
- (wAccelKeyCallBack_p) DoZoomDown, (void*) 1);
- SetAccelKey("help", wAccelKey_F1, WKEY_SHIFT,
- (wAccelKeyCallBack_p) wDoAccelHelp, (void*) 1);
- SetAccelKey("help-context", wAccelKey_F1, 0,
- (wAccelKeyCallBack_p) wDoAccelHelp, (void*) 3);
-
- 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, (addButtonCallBack_t) EnumerateTracks,
- NULL);
-}
-
-EXPORT void InitCmdExport(void) {
- ButtonGroupBegin( _("Import/Export"), "cmdExportImportSetCmd", _("Import/Export") );
- cmdGroup = BG_EXPORTIMPORT;
- AddToolbarButton("cmdExport", wIconCreatePixMap(export_xpm),
- IC_SELECTED | IC_ACCLKEY, (addButtonCallBack_t) DoExport, NULL);
- AddToolbarButton("cmdExportDXF", wIconCreatePixMap(export_dxf_xpm), IC_SELECTED | IC_ACCLKEY,
- (addButtonCallBack_t)DoExportDXF, (void*)1);
- AddToolbarButton("cmdImport", wIconCreatePixMap(import_xpm), IC_ACCLKEY,
- (addButtonCallBack_t) DoImport, (void*)0);
- AddToolbarButton("cmdImportModule", wIconCreatePixMap(importmod_xpm), IC_ACCLKEY,
- (addButtonCallBack_t) DoImport, (void*)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.
*
@@ -2781,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);
@@ -2801,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;
@@ -2813,11 +1022,9 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
long oldToolbarMax;
long newToolbarMax;
char *cp;
- char *oldLocale = NULL;
char buffer[STR_SIZE];
unsigned int i;
- wPos_t displayWidth;
- wPos_t displayHeight;
+ BOOL_T bRunTests = FALSE;
strcpy(buffer, sProdNameLower);
@@ -2828,17 +1035,17 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
InitGettext();
/* Save user locale */
- oldLocale = setlocale(LC_ALL, NULL);
- if (oldLocale)
- userLocale = strdup(oldLocale);
+ SetCLocale();
+ SetUserLocale();
/*
* ARGUMENTS
*/
opterr = 0;
+ LogSet("dummy",0);
- while ((c = getopt(argc, argv, "vl:d:c:m")) != -1)
+ while ((c = getopt(argc, argv, "vl:d:c:mVT")) != -1)
switch (c) {
case 'c': /* configuration name */
/* test for valid filename */
@@ -2880,21 +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();
@@ -2905,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);
@@ -2981,14 +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();
wSetSplashInfo(_("Initializing commands"));
LOG1(log_init, ( "paramInit\n" ))
@@ -3003,46 +1185,51 @@ 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 {
- HideHotBar();
+ LayoutHotBar( NULL ); /* Must run once to set it up */
+ HideHotBar(); /* Then hide */
}
LOG1(log_init, ( "drawInit\n" ))
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;
+ }
- curCommand = describeCmdInx;
+ /* initialize the layers */
+ LOG1(log_init, ("DefaultLayerProperties"));
+ DefaultLayerProperties();
+
+ // LOG1(log_init, ("!ParamFileListInit()\n"))
+
+ CommandInit();
LOG1(log_init, ( "Reset\n" ))
Reset();
@@ -3051,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);
@@ -3072,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);
@@ -3082,13 +1267,24 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
/* this has to be called before ShowTip() */
InitSmallDlg();
- 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;
if (ExistsCheckpoint()) {
resumeWork = OfferCheckpoint();
- MainRedraw();
}
if (!resumeWork) {
@@ -3099,15 +1295,59 @@ EXPORT wWin_p wMain(int argc, char * argv[]) {
wPrefGetInteger("misc", "lastlayoutexample", &iExample, 0);
bExample = (iExample == 1);
}
-
if (initialFile && strlen(initialFile)) {
- DoFileList(0, NULL, initialFile); //Will load Background values, if archive
- if (onStartup == 1)
- LayoutBackGroundInit(TRUE); //Wipe Out Prior Background
- else
- LayoutBackGroundInit(FALSE); //Get 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 2be0be2..641f47f 100644
--- a/app/bin/misc.h
+++ b/app/bin/misc.h
@@ -17,284 +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 <stdio.h>
-
-#include "acclkeys.h"
#include "common.h"
-#include "draw.h"
-#include "wlib.h"
-
-typedef void (*addButtonCallBack_t)(void*);
-
-#ifdef WINDOWS
-/* suppress warning from *.bmp about conversion of int to char */
-#pragma warning( disable : 4305)
-#endif
-
-#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 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 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 int iconSize;
+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 wPos_t DlgSepLeft;
-extern wPos_t DlgSepMid;
-extern wPos_t DlgSepRight;
-extern wPos_t DlgSepTop;
-extern wPos_t DlgSepBottom;
-extern wPos_t DlgSepNarrow;
-extern wPos_t DlgSepWide;
-extern wPos_t DlgSepFrmLeft;
-extern wPos_t DlgSepFrmRight;
-extern wPos_t DlgSepFrmTop;
-extern wPos_t DlgSepFrmBottom;
+extern long dontHideCursor; // not used
+#ifdef HIDESELECTIONWINDOW
+extern long hideSelectionWindow; // not used
+#endif
-extern wWin_p mainW;
-extern wPos_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 (*moveDialogCallBack_t) (void *);
-extern void AddRotateMenu( wMenu_p, rotateDialogCallBack_t );
-extern void AddMoveMenu( wMenu_p, moveDialogCallBack_t );
-extern void StartRotateDialog( rotateDialogCallBack_t );
-extern void StartMoveDialog(moveDialogCallBack_t );
/*
* Safe Memory etc
*/
-void * MyMalloc( long );
-void * MyRealloc( void *, long );
-void MyFree( void * );
-void * memdup( void *, size_t );
-char * MyStrdup( const char * );
-void AbortProg( char *, ... );
-#define ASSERT( X ) if ( !(X) ) AbortProg( "%s: %s:%d", #X, __FILE__, __LINE__ )
-char * Strcpytrimed( char *, char *, BOOL_T );
-char * BuildTrimedTitle( char *, char *, char *, char *, char * );
-void ErrorMessage( char *, ... );
-void InfoMessage( char *, ... );
-int NoticeMessage( char *, char*, char *, ... );
-int NoticeMessage2( int, char *, char*, char *, ... );
-void DoQuit( void );
-
-void FileIsChanged(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 CheckRoomSize( BOOL_T );
-const char * GetBalloonHelpStr( char* );
-const char * GetCurCommandName( void );
-void EnableCommands( void );
-void Reset( void );
-wIndex_t GetCurrentCommand(void);
-BOOL_T IsCurCommandSticky(void);
-void ResetIfNotSticky( void );
-wBool_t DoCurCommand( wAction_t, coOrd );
-void 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, char *, char *, int, long, long );
-void AddToolbarControl( wControl_p, long );
-BOOL_T CommandEnabled( wIndex_t );
-wButton_p AddToolbarButton( char*, wIcon_p, long, wButtonCallBack_p, void * context );
-wIndex_t AddCommandButton( procCommand_t, char*, char*, wIcon_p, int, long, long, void* );
-wIndex_t AddMenuButton( wMenu_p, procCommand_t, char*, char*, wIcon_p, int, long, long, void* );
-void PlaybackButtonMouse( wIndex_t );
-void ButtonGroupBegin( char *, char *, char * );
-void ButtonGroupEnd( void );
-
-void SaveState( void );
-
-void PlaybackCommand( char *, wIndex_t );
-wMenu_p MenuRegister( char * label );
-void DoCommandB( void * );
-
-extern void EnumerateTracks( void );
-void InitDebug( char *, long * );
+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)
@@ -305,37 +115,18 @@ void InitDebug( char *, long * );
#define CHANGE_TOOLBAR (1<<8)
#define CHANGE_CMDOPT (1<<9)
#define CHANGE_LIMITS (1<<10)
-#define CHANGE_ALL (CHANGE_SCALE|CHANGE_PARAMS|CHANGE_MAIN|CHANGE_MAP|CHANGE_UNITS|CHANGE_TOOLBAR|CHANGE_CMDOPT|CHANGE_BACKGROUND)
-typedef void (*changeNotificationCallBack_t)( long );
-void RegisterChangeNotification( changeNotificationCallBack_t );
-void DoChangeNotification( long );
+#define CHANGE_ICONSIZE (1<<11)
+#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 drawCmd_t mapD;
-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 );
-
-/* cnote.c */
-void ClearNote( void );
-
-/* cruler.c */
-void RulerRedraw( BOOL_T );
-STATUS_T ModifyRuler( wAction_t, coOrd );
-
-/* dialogs */
-void OutputBitMap( void );
-
-extern wDrawColor snapGridColor;
+/* Initializers */
addButtonCallBack_t ColorInit( void );
+addButtonCallBack_t SettingsInit( void );
addButtonCallBack_t PrefInit( void );
addButtonCallBack_t LayoutInit( void );
addButtonCallBack_t DisplayInit( void );
@@ -346,28 +137,37 @@ addButtonCallBack_t PriceListInit( void );
addButtonCallBack_t ParamFilesInit( void );
addButtonCallBack_t ControlMgrInit ( void );
-wIndex_t InitGrid( wMenu_p menu );
+/* cnote.c */
+void ClearNote( void );
+void DoNote( void * unused );
+BOOL_T WriteMainNote( FILE * );
+BOOL_T ReadMainNote(char * line);
+
+/* cprintc.c */
+coOrd GetPrintOrig();
+ANGLE_T GetPrintAngle();
-void SnapPos( coOrd * );
+
+/* cruler.c */
+void RulerRedraw( BOOL_T );
+STATUS_T ModifyRuler( wAction_t, coOrd );
+STATUS_T ModifyProtractor( wAction_t, coOrd );
+
+/* 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 );
-void SnapGridShow( void );
-void MapWindowShow( int state );
-extern wMenuToggle_p snapGridEnableMI;
-extern wMenuToggle_p snapGridShowMI;
-
-void ScaleLengthEnd( void );
-void EnumerateList( long, FLOAT_T, char * );
-void EnumerateStart(void);
-void EnumerateEnd(void);
+void SnapGridEnable( void * unused );
+void SnapGridShow( void * unused );
-/* cnote.c */
-void DoNote( void );
-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 );
@@ -413,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 );
@@ -445,8 +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 );
+/* 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 19226cc..0000000
--- a/app/bin/misc2.c
+++ /dev/null
@@ -1,729 +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 <stdlib.h>
-#include <stdio.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#include <dirent.h>
-#endif
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <stdarg.h>
-
-#include <stdint.h>
-
-#include "cjoin.h"
-#include "common.h"
-#include "compound.h"
-#include "custom.h"
-#include "draw.h"
-#include "fileio.h"
-#include "i18n.h"
-#include "layout.h"
-#include "messages.h"
-#include "misc.h"
-#include "param.h"
-#include "track.h"
-#include "utility.h"
-
-
-EXPORT long units = 0; /**< measurement units: 0 = English, 1 = metric */
-EXPORT long checkPtInterval = 10;
-EXPORT long autosaveChkPoints = 2;
-
-EXPORT DIST_T curScaleRatio;
-EXPORT char * curScaleName;
-EXPORT DIST_T trackGauge;
-EXPORT long labelScale = 8;
-EXPORT long labelEnable = (LABELENABLE_ENDPT_ELEV|LABELENABLE_CARS);
-EXPORT long labelWhen = 2;
-EXPORT long colorTrack = 0;
-EXPORT long colorDraw = 0;
-EXPORT long constrainMain = 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 )
-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;
-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 )
-{
- return scaleInfo(si).gauge;
-}
-
-EXPORT DIST_T GetScaleRatio( SCALEINX_T si )
-{
- return scaleInfo(si).ratio;
-}
-
-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;
- 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 );
- }
- 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(((gaugeInfo_p)gauges_da.ptr)[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;
-}
-
-
-EXPORT BOOL_T CompatibleScale(
- BOOL_T isTurnout,
- SCALEINX_T scale1,
- SCALEINX_T scale2 )
-{
- if ( scale1 == scale2 )
- return TRUE;
- if ( scale1 == SCALE_DEMO || scale2 == SCALE_DEMO )
- return FALSE;
- if ( scale1 == demoScaleInx || scale2 == demoScaleInx )
- return FALSE;
- if ( isTurnout ) {
- if ( includeSameGaugeTurnouts &&
- scaleInfo(scale1).gauge == scaleInfo(scale2).gauge )
- return TRUE;
- } else {
- if ( scale1 == SCALE_ANY )
- return TRUE;
- if ( scaleInfo(scale1).ratio == scaleInfo(scale2).ratio )
- return TRUE;
- }
- return FALSE;
-}
-
-/** 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 ];
- int 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;
-}
-
-
-EXPORT void ScaleLengthIncrement(
- SCALEINX_T scale,
- DIST_T length )
-{
- char * cp;
- int 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 = len;
- }
- scaleInfo(scale).length += length;
-}
-
-EXPORT void ScaleLengthEnd( void )
-{
- wIndex_t si;
- int 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( count, flexCost, tmp );
- }
- 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, (void*)(intptr_t)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, (void*)(intptr_t)(g[inx]).scale );
- }
-}
-
-static void ScaleChange( long changes )
-{
- if (changes & CHANGE_SCALE) {
- SetScale( GetLayoutCurScale() );
- }
-}
-
-/*****************************************************************************
- *
- *
- *
- */
-
-EXPORT void Misc2Init( void )
-{
- AddParam( "SCALE ", AddScale );
- 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 966f75b..0000000
--- a/app/bin/misc2.h
+++ /dev/null
@@ -1,115 +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"
-#include "time.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( char * );
-void LogPrintf( 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 );
-BOOL_T CompatibleScale( BOOL_T, SCALEINX_T, SCALEINX_T );
-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 );
-BOOL_T GetLayerFrozen( unsigned int );
-BOOL_T GetLayerOnMap( unsigned int );
-BOOL_T GetLayerModule( 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 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 315823f..4e744b2 100644
--- a/app/bin/note.h
+++ b/app/bin/note.h
@@ -2,28 +2,27 @@
* 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
-#include <stdbool.h>
-#include "track.h"
+#include "common.h"
#define URLMAXIMUMLENGTH (512)
#define PATHMAXIMUMLENGTH (2048)
@@ -40,9 +39,9 @@ enum noteCommands {
};
/** hold the data for the note */
-struct extraDataNote {
+typedef struct extraDataNote_t {
+ extraDataBase_t base;
coOrd pos; /**< position */
- unsigned int layer;
enum noteCommands op; /**< note type */
track_p trk; /**< track */
union {
@@ -57,54 +56,28 @@ struct extraDataNote {
BOOL_T inArchive;
} fileData; /**< used for file note */
} noteData;
-};
-
-//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;
-};
+} extraDataNote_t;
-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 */
-void NoteStateSave(track_p trk);
+extern TRKTYP_T T_NOTE;
+//void NoteStateSave(track_p trk);
+track_p NewNote(wIndex_t index, coOrd p, enum noteCommands command );
-void UpdateFile(struct extraDataNote *noteUIData, int inx, BOOL_T needUndoStart);
-void UpdateText(struct extraDataNote *noteUIData, int inx, BOOL_T needUndoStart);
-void UpdateLink(struct extraDataNote *noteUIData, int inx, BOOL_T needUndoStart);
#endif // !HAVE_NOTE_H
diff --git a/app/bin/param.c b/app/bin/param.c
index 27a8cf9..b6ad8c3 100644
--- a/app/bin/param.c
+++ b/app/bin/param.c
@@ -17,47 +17,17 @@
*
* 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 <stdint.h>
-#include <stdio.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#include <dirent.h>
-#endif
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <time.h>
-#ifdef WINDOWS
-#include <io.h>
-#include <windows.h>
-#define R_OK (02)
-#define access _access
-#else
-#include <sys/stat.h>
-#include <errno.h>
-#endif
-#include <stdarg.h>
-#include <locale.h>
-#include <wlib.h>
-
#include "common.h"
#include "compound.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "misc.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
-
+#include "common-ui.h"
/* Bogus reg vars */
EXPORT int paramLevel = 1;
@@ -67,11 +37,25 @@ 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;
-static int log_paramLayout;
+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;
/*****************************************************************************
@@ -81,18 +65,18 @@ static int log_paramLayout;
*/
static char * getNumberError;
-static char decodeErrorStr[STR_SHORT_SIZE];
+static char decodeErrorStr[STR_SIZE];
static int GetDigitStr( char ** cpp, long * numP, int * lenP )
{
char *cp=*cpp, *cq;
- int len;
+ size_t len;
*numP = 0;
if ( cp == NULL ) {
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;
@@ -100,13 +84,14 @@ static int GetDigitStr( char ** cpp, long * numP, int * lenP )
return FALSE;
}
len = cq-cp;
- if ( lenP )
- *lenP = len;
+ 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;
}
@@ -118,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) ) {
@@ -133,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");
@@ -168,138 +154,139 @@ 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 ) {
/*wStringSetHilight( strCtrl, cp2-cp0, -1 );*/
- sprintf( decodeErrorStr, _("Invalid Number") );
+ snprintf( decodeErrorStr, sizeof(decodeErrorStr), _("Invalid Number") );
*validP = FALSE;
return 0.0;
}
@@ -313,90 +300,94 @@ 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;
- 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 {
- sprintf(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;
}
#define N_STRING (10)
-static char formatStrings[N_STRING][40];
-static int formatStringInx;
+static int formatStringInx; //Index ahead in case of overwrite
+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;
@@ -439,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);
@@ -457,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 ) {
@@ -480,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);
@@ -507,112 +503,135 @@ EXPORT char * FormatSmallDistance(
*
*/
+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 )
- return;
- if (p->control == NULL || p->valueP == NULL)
+ 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;
- switch ( p->type ) {
- case PD_LONG:
- wStringSetValue( (wString_p)p->control, FormatLong( *(long*)p->valueP ) );
- 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 );
- p->oldD.f = tmpR;
- break;
- case PD_STRING:
- if (p->oldD.s)
- MyFree( p->oldD.s );
- 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);
+ } 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;
+ }
}
@@ -620,16 +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;
- for ( inx=0; inx<pg->paramCnt; inx++ )
+ LOG( log_paraminput, 1, ( "ParamLoadControls( %s )\n", pg->nameStr ) );
+ for ( inx=0; inx<pg->paramCnt; inx++ ) {
ParamLoadControl( pg, inx );
+ }
}
EXPORT long ParamUpdate(
- paramGroup_p pg )
+ paramGroup_p pg )
{
long longV;
FLOAT_T floatV;
@@ -641,20 +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 ) {
+ break;
+ }
switch ( p->type ) {
case PD_LONG:
stringV = wStringGetValue( (wString_p)p->control );
longV = atol( stringV );
+ if ( ! ParamIntegerRangeCheck( p, longV ) ) {
+ break;
+ }
if (longV != p->oldD.l) {
p->oldD.l = longV;
- if ( /*(p->option&PDO_NOUPDUPD)==0 &&*/ 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;
@@ -662,10 +693,12 @@ EXPORT long ParamUpdate(
longV = wRadioGetValue( (wChoice_p)p->control );
if (longV != p->oldD.l) {
p->oldD.l = longV;
- if ( /*(p->option&PDO_NOUPDUPD)==0 &&*/ 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;
@@ -673,10 +706,12 @@ EXPORT long ParamUpdate(
longV = wToggleGetValue( (wChoice_p)p->control );
if (longV != p->oldD.l) {
p->oldD.l = longV;
- if ( /*(p->option&PDO_NOUPDUPD)==0 &&*/ 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;
@@ -686,10 +721,12 @@ EXPORT long ParamUpdate(
longV = wListGetIndex( (wList_p)p->control );
if (longV != p->oldD.l) {
p->oldD.l = longV;
- if ( /*(p->option&PDO_NOUPDUPD)==0 &&*/ 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;
@@ -697,8 +734,9 @@ EXPORT long ParamUpdate(
dc = wColorSelectButtonGetColor( (wButton_p)p->control );
if (dc != p->oldD.dc) {
p->oldD.dc = dc;
- if ( /*(p->option&PDO_NOUPDUPD)==0 &&*/ p->valueP)
+ if ( p->valueP) {
*(wDrawColor*)p->valueP = dc;
+ }
if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc) {
pg->changeProc( pg, inx, &longV ); /* COLORNOP */
}
@@ -710,41 +748,51 @@ 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 ) {
+ break;
}
- if ( !valid )
+ if ( ! ParamFloatRangeCheck( p, floatV ) ) {
break;
+ }
if (floatV != p->oldD.f) {
p->oldD.f = floatV;
- if ( /*(p->option&PDO_NOUPDUPD)==0 &&*/ 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;
case PD_STRING:
stringV = wStringGetValue( (wString_p)p->control );
+ if ( (p->option & PDO_NOTBLANK) && stringV [0] == '\0' ) {
+ p->bInvalid = TRUE;
+ 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 ) {
- if (p->option & PDO_STRINGLIMITLENGTH ) {
- strncpy((char*)p->valueP, stringV, p->max_string-1);
- ((char *)p->valueP)[p->max_string - 1] = '\0';
- if (strlen(stringV) > p->max_string-1) {
- NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, p->max_string-1);
- }
- }
- else {
- strcpy((char*)p->valueP, stringV);
+ strncpy((char*)p->valueP, stringV, p->max_string-1);
+ ((char *)p->valueP)[p->max_string - 1] = '\0';
+ if (strlen(stringV) > p->max_string-1) {
+ NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, p->max_string-1);
}
}
if ( (p->option&PDO_NOUPDACT)==0 && pg->changeProc)
- pg->changeProc( pg, inx, CAST_AWAY_CONST stringV );
+ // CAST_AWAY_CONST: param 3 should be const but its a big change
+ {
+ pg->changeProc( pg, inx, CAST_AWAY_CONST stringV );
+ }
change |= (1L<<inx);
}
break;
@@ -759,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;
@@ -876,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 ) );
}
@@ -894,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;
@@ -914,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 );
@@ -952,15 +1010,10 @@ static long ParamIntRestore(
break;
case PD_STRING:
if ( oldP->s && strcmp((char*)p->valueP,oldP->s) != 0 ) {
- if (p->max_string && (p->option & PDO_STRINGLIMITLENGTH)) {
- ((char*)p->valueP)[0] = '\0';
- strncat((char*)p->valueP,oldP->s,p->max_string-1);
- if (p->control)
- wStringSetValue( (wString_p)p->control, (char*)p->valueP );
- } else {
- strcpy( (char*)p->valueP, oldP->s );
- if (p->control)
- wStringSetValue( (wString_p)p->control, oldP->s );
+ ((char*)p->valueP)[0] = '\0';
+ strncat((char*)p->valueP,oldP->s,p->max_string-1);
+ if (p->control) {
+ wStringSetValue( (wString_p)p->control, (char*)p->valueP );
}
change |= (1L<<inx);
}
@@ -976,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;
@@ -1011,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:
@@ -1048,12 +1103,13 @@ static long ParamRestore( paramGroup_p pg )
static dynArr_t paramGroups_da;
#define paramGroups(N) DYNARR_N( paramGroup_p, paramGroups_da, N )
+static BOOL_T paramGroups_init = FALSE;
EXPORT void ParamRegister( paramGroup_p pg )
{
- paramData_p p;
+ paramData_t * p;
const char * cp;
WDOUBLE_T tmpR;
long valL;
@@ -1061,18 +1117,23 @@ EXPORT void ParamRegister( paramGroup_p pg )
char prefName1[STR_SHORT_SIZE];
const char *prefSect2, *prefName2;
+ if (!paramGroups_init) { ParamInit(); }
+
DYNARR_APPEND( paramGroup_p, paramGroups_da, 10 );
paramGroups(paramGroups_da.cnt-1) = pg;
- for ( p=pg->paramPtr; p<&pg->paramPtr[pg->paramCnt]; p++ ) {
+ 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;
- sprintf( prefName1, "%s-%s", pg->nameStr, p->nameStr );
+ }
+ 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) ) {
@@ -1109,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:
@@ -1174,121 +1245,135 @@ EXPORT void ParamUpdatePrefs( void )
paramData_p p;
long rgb;
char prefName[STR_SHORT_SIZE];
- int len;
+ size_t len;
int col;
char * cp;
- static wPos_t * colWidths;
+ static wWinPix_t * colWidths;
static int maxColCnt = 0;
paramListData_t * listDataP;
for ( inx=0; inx<paramGroups_da.cnt; inx++ ) {
- pg = paramGroups(inx);
- 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;
- sprintf( 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 = (wPos_t*)MyMalloc( listDataP->colCnt * sizeof * colWidths );
- else
- colWidths = (wPos_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, "%d ", 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:
@@ -1300,8 +1385,9 @@ EXPORT void ParamGroupRecord(
break;
}
}
- if (pg->nameStr)
+ if (pg->nameStr) {
fprintf( recordF, "PARAMETER GROUP %s\n", pg->nameStr );
+ }
fflush( recordF );
}
@@ -1311,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) {
@@ -1357,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, p-p->group->paramPtr, NULL);
+ } else if ( p->group->changeProc) {
+ p->group->changeProc( p->group, (int)(p-p->group->paramPtr), NULL);
+ }
}
}
@@ -1370,13 +1458,48 @@ 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)
- p->group->changeProc( p->group, p-p->group->paramPtr, &valL);
+ }
+ 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 ) {
+ 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 ) {
+ 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 );
+ }
+ wWinPix_t h = wControlGetHeight(p->control);
+ wControlSetBalloon( p->control, 0, -h*3/4, message );
+ p->bInvalid = TRUE;
+ LOG( log_paraminput, 1, ( " -> RangeError\n" ) );
+ ParamHilite( p->group->win, p->control, p->bInvalid );
+ return FALSE;
+ }
+ p->bInvalid = FALSE;
+ return TRUE;
}
@@ -1386,50 +1509,83 @@ static void ParamIntegerPush( const char * val, void * dp )
long valL;
char * cp;
const char * value;
- paramIntegerRange_t * irangeP;
- if (strlen(val) == 1 && val[strlen(val)-1] == '\n' && (p->option & BO_ENTER)) {
+// wBool_t bInvalid = p->bInvalid;
+ if (strlen(val) == 1 && val[strlen(val)-1] == '\n') {
value = wStringGetValue((wString_p)p->control);
p->enter_pressed = TRUE;
} else {
+ value = val;
p->enter_pressed = FALSE;
- value = CAST_AWAY_CONST val;
}
+ LOG( log_paraminput, 1, ( "ParamIntegerPush( %s Enter:%d Val:%s )\n",
+ p->nameStr, p->enter_pressed, value ) );
-
- while ( isspace((unsigned char)*value)) value++;
valL = strtol( value, &cp, 10 );
-
-
- //wControlSetBalloon( p->control, 0, -5, NULL );
- if ( value == cp ) {
- wControlSetBalloon( p->control, 0, -5, _("Invalid Number") );
+ for ( ; isspace( (unsigned char)*cp); cp++ );
+ if ( *cp != '\0' ) {
+ wWinPix_t h = wControlGetHeight(p->control);
+ wControlSetBalloon( p->control, 0, -h*3/4, _("Invalid Number") );
+ p->bInvalid = TRUE;
+ LOG( log_paraminput, 1, ( " -> InvalidNumber\n" ) );
+ ParamHilite( p->group->win, p->control, p->bInvalid );
return;
}
- irangeP = (paramIntegerRange_t*)p->winData;
- 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 );
- wControlSetBalloon( p->control, 0, -5, message );
+ if ( ! ParamIntegerRangeCheck( p, valL ) ) {
return;
}
- wControlSetBalloon( p->control, 0, -5, NULL );
+ 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)
- p->group->changeProc( p->group, p-p->group->paramPtr, &valL);
+ }
+ 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 ) );
}
+
+static wBool_t ParamFloatRangeCheck( paramData_p p, FLOAT_T valF )
+{
+ 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 )
+ 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) );
+ 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) );
+ wWinPix_t h = wControlGetHeight(p->control);
+ wControlSetBalloon( p->control, 0, -h*3/4, message );
+ p->bInvalid = TRUE;
+ ParamHilite( p->group->win, p->control, p->bInvalid );
+ return FALSE;
+ }
+ p->bInvalid = FALSE;
+ return TRUE;
+}
+
+
/**
* Checks the entered value in a float field. Accepts data entered in the different
* formats for dimensions. Compares the value against limits if specified in that
@@ -1445,53 +1601,51 @@ static void ParamFloatPush( const char * val, void * dp )
FLOAT_T valF;
BOOL_T valid;
const char * value;
- paramFloatRange_t * frangeP;
- if (strlen(val) == 1 && val[strlen(val)-1] == '\n' && (p->option & PDO_ENTER)) {
+
+// wBool_t bInvalid = p->bInvalid;
+ if (strlen(val) == 1 && val[strlen(val)-1] == '\n') {
value = wStringGetValue((wString_p)p->control);
p->enter_pressed = TRUE;
} else {
value = val;
p->enter_pressed = FALSE;
}
+ 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 );
+ }
}
- // wControlSetBalloon( p->control, 0, -5, NULL );
if ( !valid ) {
- wControlSetBalloon( p->control, 0, -5, decodeErrorStr );
+ wWinPix_t h = wControlGetHeight(p->control);
+ wControlSetBalloon( p->control, 0, -h*3/4, decodeErrorStr );
+ p->bInvalid = TRUE;
+ ParamHilite( p->group->win, p->control, p->bInvalid );
return;
}
- frangeP = (paramFloatRange_t*)p->winData;
- 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) );
- 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) );
- wControlSetBalloon( p->control, 0, -5, message );
+ if ( !ParamFloatRangeCheck( p, valF ) ) {
return;
}
- wControlSetBalloon( p->control, 0, -5, NULL );
+ 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 ))
- p->group->changeProc( p->group, p-p->group->paramPtr, &valF );
+ }
+ 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 );
}
@@ -1499,26 +1653,55 @@ static void ParamStringPush( const char * val, void * dp )
{
paramData_p p = (paramData_p)dp;
const char * value;
+// 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 );
}
- if (strlen(val) == 1 && val[strlen(val)-1] == '\n' && (p->option & PDO_ENTER)) {
- value = wStringGetValue((wString_p)p->control);
- p->enter_pressed = TRUE;
+ if (strlen(val) == 1 && val[strlen(val)-1] == '\n' ) {
+ value = wStringGetValue((wString_p)p->control);
+ p->enter_pressed = TRUE;
} else {
+ value = val;
p->enter_pressed = FALSE;
- value = CAST_AWAY_CONST val;
}
-
- if ( (p->option&PDO_NOPSHUPD)==0 && p->valueP)
- strcpy( (char*)p->valueP, 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 );
+ wWinPix_t h = wControlGetHeight(p->control);
+ wControlSetBalloon( p->control, 0, -h*3/4, _("String cannot be blank") );
+ ParamHilite( p->group->win, p->control, TRUE );
+ return;
+ }
+ wControlSetBalloon( p->control, 0, 0, NULL );
+ p->bInvalid = FALSE;
+ ParamHilite( p->group->win, p->control, FALSE );
+
+ 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)
- p->group->changeProc( p->group, p-p->group->paramPtr, CAST_AWAY_CONST value );
+ // 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 );
+ }
}
-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;
@@ -1528,14 +1711,16 @@ 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, p-p->group->paramPtr, &valL );
+ p->group->changeProc( p->group, (int)(p-p->group->paramPtr), &valL );
}
break;
@@ -1548,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 );
+ }
}
@@ -1566,65 +1753,118 @@ 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 )
- p->group->changeProc( p->group, p-p->group->paramPtr, &dc );
+ }
+ if ( (p->option&PDO_NOPSHACT)==0 && p->group->changeProc ) {
+ p->group->changeProc( p->group, (int)(p-p->group->paramPtr), &dc );
+ }
}
-static void ParamDrawRedraw( wDraw_p d, void * dp, wPos_t w, wPos_t h )
+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, wPos_t w, wPos_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 );
+ }
}
-static void ParamButtonOk(
- paramGroup_p group )
+EXPORT wBool_t ParamCheckInputs(
+ paramGroup_p group,
+ wControl_p b )
{
- if ( recordF && group->nameStr )
- fprintf( recordF, "PARAMETER %s %s\n", group->nameStr, "ok" ); {
+ wBool_t bInvalid = FALSE;
+ // Check for invalid entries
+ for ( paramData_p p = group->paramPtr; p < &group->paramPtr[group->paramCnt];
+ p++ ) {
+ ParamHilite( group->win, p->control, p->bInvalid );
+ 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)") );
+ wFlush();
+ return FALSE;
+ }
+ return TRUE;
+}
+
+
+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 ) ) {
+ return;
+ }
+ if ( recordF && group->nameStr ) {
+ fprintf( recordF, "PARAMETER %s %s\n", group->nameStr, "ok" );
fflush( recordF );
}
- if ( group->okProc )
- group->okProc( group->okProc==(paramActionOkProc)wHide?((void*)group->win):group );
+
+ if ( group->okProc ) {
+ group->okProc( group );
+ }
+
+ wControlSetBalloon( (wControl_p)group->okB, 0, 0, NULL );
+ wFlush();
+
+ LOG( log_paraminput, 1, ( "ParamButtonOk -> Ok\n" ) );
}
-static void ParamButtonCancel(
- paramGroup_p group )
+static void ParamButtonCancel( void * groupVP )
{
+ paramGroup_p group = groupVP;
if ( recordF && group->nameStr ) {
fprintf( recordF, "PARAMETER %s %s\n", group->nameStr, "cancel" );
fflush( recordF );
}
- if ( group->cancelProc )
+ if ( group->cancelProc ) {
group->cancelProc( group->win );
+ }
}
@@ -1633,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 ) );
@@ -1647,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:
@@ -1710,36 +1969,60 @@ EXPORT void ParamChange( paramData_p p )
#endif
-EXPORT int paramHiliteFast = FALSE;
EXPORT void ParamHilite(
- wWin_p win,
- wControl_p control,
- BOOL_T hilite )
+ wWin_p win,
+ wControl_p control,
+ BOOL_T hilite )
{
- if ( win != NULL && wWinIsVisible(win) == FALSE ) return;
- if ( control == NULL ) return;
- if ( !paramTogglePlaybackHilite ) return;
+ if ( control == NULL ) { return; }
+ LOG(log_paraminput, 2, ("ParamHilite %s\n", hilite?"Set":"Clr" ));
if ( hilite ) {
wControlHilite( control, TRUE );
wFlush();
- if ( !paramHiliteFast )
- wPause(500);
+ if ( inPlayback ) {
+ wPause(playbackDelay*4+1);
+ }
} else {
- if ( !paramHiliteFast )
- wPause(500);
wControlHilite( control, FALSE );
- wFlush();
+ }
+}
+
+EXPORT void ParamResetInvalid(
+ 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 ) {
+ LOG( log_paraminput, 1, ( " %s Invalid\n", p->nameStr ) );
+ }
+ ParamHilite( win, p->control, FALSE );
+ wControlSetBalloon( p->control, 0, 0, NULL );
+ p->bInvalid = FALSE;
+ }
+ break;
+ }
}
}
+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;
paramData_p p;
long valL;
FLOAT_T valF, valF1;
- int len, len1, len2;
+ size_t len, len1, len2;
wIndex_t inx;
void * listContext, * itemContext;
long rgb;
@@ -1749,7 +2032,6 @@ static void ParamPlayback( char * line )
wAction_t a;
coOrd pos;
char * valS;
- char *oldLocale = NULL;
if ( strncmp( line, "GROUP ", 6 ) == 0 ) {
#ifdef PGPROC
@@ -1767,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();
@@ -1798,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 ) {
@@ -1854,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 );
}
@@ -1868,61 +2166,73 @@ 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 );
}
break;
case PD_FLOAT:
- oldLocale = SaveLocale("C");
+ SetCLocale();
valF = valF1 = atof( line+len );
- RestoreLocale(oldLocale);
- if (p->valueP)
+ SetUserLocale();
+ 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 );
@@ -1934,44 +2244,50 @@ static void ParamPlayback( char * line )
break;
case PD_MENUITEM:
if (p->valueP) {
- if ( (p->option&IC_PLAYBACK_PUSH) != 0 )
- PlaybackButtonMouse( (wIndex_t)(long)p->context );
+ 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 );
}
@@ -1981,7 +2297,7 @@ static void ParamCheck( char * line )
paramData_p p;
long valL;
FLOAT_T valF, diffF;
- int len, len1, len2;
+ size_t len, len1, len2;
wIndex_t inx;
void * listContext, * itemContext;
char * valS;
@@ -1991,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:
@@ -2027,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 = "";
}
@@ -2045,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;
@@ -2068,8 +2392,8 @@ static void ParamCheck( char * line )
break;
case PD_STRING:
line += len;
- while ( *line == ' ' ) line++;
- valS = CAST_AWAY_CONST wStringGetValue( (wString_p)p->control );
+ while ( *line == ' ' ) { line++; }
+ wStringGetValue( (wString_p)p->control );
if ( strcasecmp( line, (char*)p->valueP ) != 0 ) {
expVal = line;
actVal = (char*)p->valueP;
@@ -2083,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 );
}
/*
@@ -2110,159 +2437,182 @@ static void ParamCheck( char * line )
static void ParamCreateControl(
- paramData_p pd,
- char * helpStr,
- wPos_t xx,
- wPos_t yy )
+ paramData_p pd,
+ char * helpStr,
+ wWinPix_t xx,
+ wWinPix_t yy )
{
- paramFloatRange_t * floatRangeP;
- paramIntegerRange_t * integerRangeP;
- paramDrawData_t * drawDataP;
- paramTextData_t * textDataP;
+ const paramFloatRange_t * floatRangeP;
+ const paramIntegerRange_t * integerRangeP;
+ const paramDrawData_t * drawDataP;
+ const paramTextData_t * textDataP;
paramListData_t * listDataP;
- wIcon_p iconP;
+ const struct wIcon_t * iconP;
wWin_p win;
- wPos_t w;
- wPos_t colWidth;
- static wPos_t *colWidths;
+ wWinPix_t w;
+ wWinPix_t colWidth;
+ static wWinPix_t *colWidths;
static wBool_t *colRightJust;
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?(wPos_t)(long)pd->winData:(wPos_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 = (wPos_t*)MyMalloc( listDataP->colCnt * sizeof *colWidths );
- colRightJust = (wBool_t*)MyMalloc( listDataP->colCnt * sizeof *colRightJust );
- } else {
- colWidths = (wPos_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] = abs(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 = (wPos_t)strtol( cp, &cq, 10 );
- if ( cp == cq )
+ colWidth = (wWinPix_t)strtol( cp, &cq, 10 );
+ 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?(wPos_t)(long)pd->winData:(wPos_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 = (wPos_t)(long)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,
- wPos_t xx,
- wPos_t yy )
+ paramData_p pd,
+ char * helpStr,
+ wWinPix_t xx,
+ wWinPix_t yy )
{
- paramDrawData_t * drawDataP;
- paramTextData_t * textDataP;
- paramListData_t * listDataP;
- wPos_t winW, winH, ctlW, ctlH;
+ 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) {
@@ -2270,93 +2620,102 @@ static void ParamPositionControl(
case PD_COMBOLIST:
case PD_DROPLIST:
if ( pd->type == PD_DROPLIST ) {
- ctlW = pd->winData?(wPos_t)(long)pd->winData:(wPos_t)100;
+ ctlW = pd->winData?(wWinPix_t)VP2L(pd->winData):(wWinPix_t)100;
ctlH = wControlGetHeight( pd->control );
} else {
listDataP = (paramListData_t*)pd->winData;
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:
- ctlW = pd->winData?(wPos_t)(long)pd->winData:(wPos_t)250;
+ ctlW = pd->winData?(wWinPix_t)VP2L(pd->winData):(wWinPix_t)250;
if ( (pd->option&PDO_DLGRESIZEW) ) {
ctlW = winW - (pd->group->origW-ctlW);
wStringSetWidth( (wString_p)pd->control, ctlW );
}
break;
case PD_MESSAGE:
- ctlW = pd->winData?(wPos_t)(long)pd->winData:(wPos_t)150;
+ ctlW = pd->winData?(wWinPix_t)VP2L(pd->winData):(wWinPix_t)150;
if ( (pd->option&PDO_DLGRESIZEW) ) {
ctlW = winW - (pd->group->origW-ctlW);
wMessageSetWidth( (wMessage_p)pd->control, ctlW );
}
break;
default:
- AbortProg( "paramPositionControl" );
+ CHECK(FALSE);
}
}
}
-typedef void (*layoutControlsProc)(paramData_p, char *, wPos_t, wPos_t );
+typedef void (*layoutControlsProc)(paramData_p, char *, wWinPix_t, wWinPix_t );
static void LayoutControls(
- paramGroup_p group,
- layoutControlsProc proc,
- wPos_t * retW,
- wPos_t * retH )
+ paramGroup_p group,
+ layoutControlsProc proc,
+ wWinPix_t * retW,
+ wWinPix_t * retH )
{
struct {
- struct { wPos_t x, y; } orig, term;
+ struct { wWinPix_t x, y; } orig, term;
} controlK, columnK, windowK;
- wPos_t controlSize_x;
- wPos_t controlSize_y;
+ wWinPix_t controlSize_x;
+ wWinPix_t controlSize_y;
paramData_p pd;
- wPos_t w;
+ wWinPix_t w;
BOOL_T hasBox;
- wPos_t boxTop;
- wPos_t boxPos[10];
+ wWinPix_t boxTop;
+ wWinPix_t boxPos[10];
int boxCnt = 0;
int box;
int inx;
- wPos_t labelW[100];
+ wWinPix_t labelW[100];
int lastLabelPos, currLabelPos;
char helpStr[STR_SHORT_SIZE], * helpStrP;
BOOL_T inCmdButtons = FALSE;
@@ -2373,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);
@@ -2407,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;
@@ -2428,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;
@@ -2449,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
@@ -2461,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++;
@@ -2493,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 {
@@ -2523,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;
@@ -2593,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
@@ -2607,18 +3011,18 @@ 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];
- wPos_t w0, h0;
+ wWinPix_t w0, h0;
char * cancelLabel = (winOption&PD_F_ALT_CANCELLABEL?_("Close"):_("Cancel"));
winOption &= ~PD_F_ALT_CANCELLABEL;
@@ -2627,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, (wButtonCallBack_p)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, (wButtonCallBack_p)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 );
}
@@ -2672,13 +3090,15 @@ wWin_p ParamCreateDialog(
*
*/
EXPORT void ParamLayoutDialog(
- paramGroup_p pg )
+ paramGroup_p pg )
{
- wPos_t w, h;
+ 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;
@@ -2687,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;
@@ -2708,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;
}
@@ -2717,7 +3139,13 @@ EXPORT void ParamCreateControls(
EXPORT void ParamInit( void )
{
+ if (paramGroups_init) { return; }
+
AddPlaybackProc( "PARAMETER", ParamPlayback, NULL );
AddPlaybackProc( "PARAMCHECK", ParamCheck, NULL );
log_paramLayout = LogFindIndex( "paramlayout" );
+ log_paraminput = LogFindIndex( "paraminput" );
+ DYNARR_INIT( paramGroup_p, paramGroups_da );
+ paramGroups_init = TRUE;
+
}
diff --git a/app/bin/param.h b/app/bin/param.h
index 414dae3..004dcb5 100644
--- a/app/bin/param.h
+++ b/app/bin/param.h
@@ -17,134 +17,151 @@
*
* 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
#define PARAM_H
#include "common.h"
-#include "wlib.h"
-#include "draw.h"
+#include "draw.h" //- playbackAction
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;
-
-#define PDO_DIM (1L<<0)
-#define PDO_ANGLE (1L<<1)
-#define PDO_NORECORD (1L<<2)
-#define PDO_NOPSHACT (1L<<3)
-#define PDO_NOPSHUPD (1L<<4)
-#define PDO_NOPREF (1L<<5)
-#define PDO_NOUPDACT (1L<<6)
-#define PDO_MISC (1L<<7)
-#define PDO_DRAW (1L<<8)
-#define PDO_FILE (1L<<9)
-#define PDO_ENTER (1L<<10)
-
-#define PDO_STRINGLIMITLENGTH (1L<<11) /**< context has maximum length for string */
-#define PDO_SMALLDIM (1L<<12)
-
-#define PDO_DLGSTARTBTNS (1L<<13)
-#define PDO_DLGWIDE (1L<<14)
-#define PDO_DLGNARROW (1L<<15)
-#define PDO_DLGBOXEND (1L<<16) /**< draw recessed frame around the controls */
-#define PDO_DLGRESETMARGIN (1L<<17) /**< position control on the left ?*/
-#define PDO_DLGIGNORELABELWIDTH (1L<<18)
-
-#define PDO_DLGHORZ (1L<<20) /**< arrange on same line as previous element */
-#define PDO_DLGNEWCOLUMN (1L<<21)
-#define PDO_DLGNOLABELALIGN (1L<<22)
-#define PDO_LISTINDEX (1L<<23)
-#define PDO_DLGSETY (1L<<24)
-#define PDO_DLGIGNOREX (1L<<25)
-#define PDO_DLGUNDERCMDBUTT (1L<<26)
-#define PDO_DLGCMDBUTTON (1L<<27) /**< arrange button on the right with the default buttons */
-#define PDO_DLGIGNORE (1L<<28)
-
-#define PDO_DLGRESIZEW (1L<<29)
-#define PDO_DLGRESIZEH (1L<<30)
+ 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)
+#define PDO_ANGLE (1L<<1)
+#define PDO_SMALLDIM (1L<<2)
+// PD_STRING modifiers
+#define PDO_NOTBLANK (1L<<3)
+
+#define PDO_NORECORD (1L<<6)
+#define PDO_NOPSHACT (1L<<7)
+#define PDO_NOPSHUPD (1L<<8)
+#define PDO_NOUPDACT (1L<<9)
+#define PDO_NOACT (PDO_NOPSHACT|PDO_NOUPDACT)
+#define PDO_NOUPD (PDO_NORSTUPD|PDO_NOPSHUPD)
+
+// Override paramGroup pref group
+#define PDO_NOPREF (1L<<10)
+#define PDO_MISC (1L<<11)
+#define PDO_DRAW (1L<<12)
+#define PDO_FILE (1L<<13)
+//#define PDO_ENTER (1L<<14)
+#define PDO_ENTER 0
+
+//#define PDO_STRINGLIMITLENGTH (1L<<11) /**< context has maximum length for string */
+#define PDO_STRINGLIMITLENGTH 0 /**< context has maximum length for string */
+
+// Ignore param
+#define PDO_DLGIGNORE (1L<<15)
+
+// Layout options
+#define PDO_DLGSTARTBTNS (1L<<16)
+#define PDO_DLGWIDE (1L<<17)
+#define PDO_DLGNARROW (1L<<18)
+#define PDO_DLGBOXEND (1L<<19) /**< draw recessed frame around the controls */
+#define PDO_DLGRESETMARGIN (1L<<20) /**< position control on the left ?*/
+#define PDO_DLGIGNORELABELWIDTH (1L<<21)
+#define PDO_DLGHORZ (1L<<22) /**< arrange on same line as previous element */
+#define PDO_DLGNEWCOLUMN (1L<<23)
+#define PDO_DLGNOLABELALIGN (1L<<24)
+#define PDO_LISTINDEX (1L<<25)
+#define PDO_DLGSETY (1L<<26)
+#define PDO_DLGIGNOREX (1L<<27)
+#define PDO_DLGUNDERCMDBUTT (1L<<28)
+#define PDO_DLGCMDBUTTON (1L<<29) /**< arrange button on the right with the default buttons */
+#define PDO_DLGRESIZEW (1L<<30)
+#define PDO_DLGRESIZEH (1L<<31)
#define PDO_DLGRESIZE (PDO_DLGRESIZEW|PDO_DLGRESIZEH)
-#define PDO_NOACT (PDO_NOPSHACT|PDO_NOUPDACT)
-#define PDO_NOUPD (PDO_NORSTUPD|PDO_NOPSHUPD|PDO_NOUPDUPD)
+
+
typedef struct paramGroup_t *paramGroup_p;
#define PDO_NORANGECHECK_LOW (1<<0)
#define PDO_NORANGECHECK_HIGH (1<<1)
typedef struct {
- long low;
- long high;
- wPos_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;
- wPos_t width;
- int rangechecks;
- } paramFloatRange_t;
+ FLOAT_T low;
+ FLOAT_T high;
+ wWinPix_t width;
+ int rangechecks;
+} paramFloatRange_t;
typedef struct {
- wPos_t width;
- wPos_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;
- wPos_t width;
- int colCnt;
- wPos_t * colWidths;
- const char * * colTitles;
- wPos_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 {
- wPos_t width;
- wPos_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;
- char * nameStr;
- long option;
- void * winData;
- char * winLabel;
- long winOption;
- void * context;
- unsigned int max_string;
- wControl_p control;
- paramGroup_p group;
- paramOldData_t oldD, demoD;
- wBool_t enter_pressed;
- } 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 );
@@ -160,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, wPos_t, wPos_t *, wPos_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;
- wPos_t origW;
- wPos_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 );
@@ -213,8 +250,8 @@ void ParamRestoreAll( void );
void ParamSaveAll( void );
void ParamMenuPush( void * );
-int paramHiliteFast;
void ParamHilite( wWin_p, wControl_p, BOOL_T );
+wBool_t ParamCheckInputs( paramGroup_p pg, wControl_p b );
void ParamInit( void );
@@ -232,12 +269,14 @@ 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 );
void ParamDialogOkActive( paramGroup_p, int );
-#define ParamControlShow( PG, INX, SHOW ) \
- wControlShow( ((PG)->paramPtr)[INX].control, SHOW )
+void ParamResetInvalid( wWin_p win );
+
+void ParamControlShow( paramGroup_t *, wIndex_t, wBool_t );
#endif
diff --git a/app/bin/paramfile.c b/app/bin/paramfile.c
index 2dd9ac7..994a47d 100644
--- a/app/bin/paramfile.c
+++ b/app/bin/paramfile.c
@@ -2,54 +2,40 @@
* 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.
- */
-
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+/* 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"
#include "ctrain.h"
#include "custom.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
-#include "misc2.h"
#include "paths.h"
#include "include/paramfile.h"
#include "include/paramfilelist.h"
#include "include/utf8convert.h"
-
-#if _MSC_VER >1300
-#define stricmp( a, b ) _stricmp(a, b )
-#endif
+#include "common-ui.h"
static long paramCheckSum;
typedef enum paramFileState(*GetCompatibilityFunction)(int index,
- SCALEINX_T scale);
+ SCALEINX_T scale);
GetCompatibilityFunction GetCompatibility[] = {
GetTrackCompatibility,
@@ -58,7 +44,7 @@ GetCompatibilityFunction GetCompatibility[] = {
GetCarPartCompatibility
};
-#define COMPATIBILITYCHECKSCOUNT (sizeof(GetCompatibility)/sizeof(GetCompatibility[0]))
+#define COMPATIBILITYCHECKSCOUNT COUNT(GetCompatibility)
/**
* Check whether parameter file is still loaded
@@ -68,7 +54,7 @@ GetCompatibilityFunction GetCompatibility[] = {
*/
wBool_t IsParamValid(
- int fileInx)
+ int fileInx)
{
if (fileInx == PARAM_DEMO) {
return (curDemo >= 0);
@@ -95,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;
}
@@ -147,11 +133,14 @@ void SetParamFileState(int index)
enum paramFileState newState;
SCALEINX_T scale = GetLayoutCurScale();
- for (int i = 0; i < COMPATIBILITYCHECKSCOUNT && state < PARAMFILE_FIT &&
- state != PARAMFILE_UNLOADED; i++) {
- newState = (*GetCompatibility[i])(index, scale);
- if (newState > state || newState == PARAMFILE_UNLOADED) {
- state = newState;
+ //Set yet?
+ if (scale>=0) {
+ for (int i = 0; i < COMPATIBILITYCHECKSCOUNT && state < PARAMFILE_FIT &&
+ state != PARAMFILE_UNLOADED; i++) {
+ newState = (*GetCompatibility[i])(index, scale);
+ if (newState > state || newState == PARAMFILE_UNLOADED) {
+ state = newState;
+ }
}
}
@@ -159,6 +148,24 @@ void SetParamFileState(int index)
}
/**
+ * Check whether file exists and is readable
+ *
+ * \param file The file.
+ *
+ * \returns True if it succeeds, false if it fails.
+ */
+
+static bool
+CheckFileReadable(const char *file)
+{
+ if(!access( file, R_OK )) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
+/**
* Read a single parameter file and update the parameter file list
*
* \param fileName full path for parameter file
@@ -168,15 +175,18 @@ void SetParamFileState(int index)
int
ReadParamFile(const char *fileName)
{
- DYNARR_APPEND(paramFileInfo_t, paramFileInfo_da, 10);
- curParamFileIndex = paramFileInfo_da.cnt - 1;
- paramFileInfo(curParamFileIndex).name = MyStrdup(fileName);
- paramFileInfo(curParamFileIndex).valid = TRUE;
- paramFileInfo(curParamFileIndex).deleted = !ReadParams(0, NULL, fileName);
- paramFileInfo(curParamFileIndex).contents = MyStrdup(curContents);
-
- SetParamFileState(curParamFileIndex);
-
+ if (!CheckFileReadable(fileName)) {
+ return(-1);
+ } else {
+ DYNARR_APPEND(paramFileInfo_t, paramFileInfo_da, 10);
+ curParamFileIndex = paramFileInfo_da.cnt - 1;
+ paramFileInfo(curParamFileIndex).name = MyStrdup(fileName);
+ paramFileInfo(curParamFileIndex).valid = TRUE;
+ paramFileInfo(curParamFileIndex).deleted = !ReadParams(0, NULL, fileName);
+ paramFileInfo(curParamFileIndex).contents = MyStrdup(curContents);
+
+ SetParamFileState(curParamFileIndex);
+ }
return (curParamFileIndex);
}
@@ -193,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);
@@ -211,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;
@@ -222,8 +233,8 @@ bool ReadParams(
long oldCheckSum;
long checkSum = 0;
BOOL_T checkSummed;
+ BOOL_T bFoundContents = FALSE;
paramVersion = -1;
- char *oldLocale = NULL;
if (dirName) {
MakeFullpath(&paramFileName, dirName, fileName, NULL);
@@ -237,15 +248,15 @@ bool ReadParams(
//LOG1( log_paramFile, ("ReadParam( %s )\n", fileName ) )
- oldLocale = SaveLocale("C");
+ SetCLocale();
paramFile = fopen(paramFileName, "r");
if (paramFile == NULL) {
/* Reset the locale settings */
- RestoreLocale(oldLocale);
+ SetUserLocale();
NoticeMessage(MSG_OPEN_FAIL, _("Continue"), NULL, _("Parameter"), paramFileName,
- strerror(errno));
+ strerror(errno));
return FALSE;
}
@@ -254,7 +265,7 @@ bool ReadParams(
checkSummed = FALSE;
BOOL_T skip = false;
int skipLines = 0;
- while (paramFile && (fgets(paramLine, 256, paramFile)) != NULL) {
+ while (paramFile && (fgets(paramLine, 1024, paramFile)) != NULL) {
paramLineNum++;
Stripcr(paramLine);
if (strncmp(paramLine, "CHECKSUM ", 9) == 0) {
@@ -278,16 +289,16 @@ bool ReadParams(
/* Close file and reset the locale settings */
if (paramFile) {
fclose(paramFile);
+ paramFile = NULL;
}
- RestoreLocale(oldLocale);
-
+ SetUserLocale();
return FALSE;
}
oldFile = paramFile;
oldLineNum = paramLineNum;
oldCheckSum = paramCheckSum;
if (!ReadParams(key, dirName, cp)) {
- RestoreLocale(oldLocale);
+ SetUserLocale();
return FALSE;
}
paramFile = oldFile;
@@ -300,32 +311,39 @@ bool ReadParams(
}
skip = FALSE;
} else if (strncmp(paramLine, "CONTENTS ", 9) == 0) {
-#ifdef WINDOWS
+#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 WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(paramLine + 12);
-#endif // WINDOWS
+#endif // UTFCONVERT
curSubContents = MyStrdup(paramLine + 12);
skip = FALSE;
} else if (strncmp(paramLine, "PARAM ", 6) == 0) {
- paramVersion = strtol(paramLine + 8, &cp, 10);
+ 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)) {
@@ -335,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;
@@ -358,13 +379,13 @@ bool ReadParams(
free(paramFileName);
paramFileName = NULL;
}
- RestoreLocale(oldLocale);
+ SetUserLocale();
return FALSE;
}
}
skipLines++;
}
- nextLine:
+nextLine:
;
}
if (key) {
@@ -372,22 +393,26 @@ bool ReadParams(
/* Close file and reset the locale settings */
if (paramFile) {
fclose(paramFile);
+ paramFile = NULL;
}
- RestoreLocale(oldLocale);
+ SetUserLocale();
NoticeMessage(MSG_PROG_CORRUPTED, _("Ok"), NULL, paramFileName);
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;
- RestoreLocale(oldLocale);
+ SetUserLocale();
return TRUE;
}
diff --git a/app/bin/paramfilelist.c b/app/bin/paramfilelist.c
index 199345c..f6703f3 100644
--- a/app/bin/paramfilelist.c
+++ b/app/bin/paramfilelist.c
@@ -17,30 +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 <assert.h>
-#include <errno.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
#include "common.h"
#include "compound.h"
#include "ctrain.h"
#include "custom.h"
#include "dynstring.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
-#include "misc2.h"
#include "paths.h"
#include "include/paramfile.h"
#include "include/paramfilelist.h"
+#include "common-ui.h"
dynArr_t paramFileInfo_da;
@@ -48,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;
@@ -59,10 +51,27 @@ static char * customPathBak;
int GetParamFileCount()
{
- return (paramFileInfo_da.cnt);
+ return (paramFileInfo_da.cnt);
}
+/**
+ * Show parameter file error message
+ *
+ * \param [in,out] file If non-null, the file.
+ */
+static void
+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);
+ wNoticeEx(NT_ERROR, DynStringToCStr(&error_msg), "OK", NULL);
+ DynStringFree(&error_msg);
+}
/**
@@ -78,70 +87,108 @@ int GetParamFileCount()
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;
}
/**
@@ -150,85 +197,98 @@ 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
- if ((share= strstr(fileName,"/share/xtrkcad/params/"))) {
- share += strlen("/share/xtrkcad/params/");
- MakeFullpath(&fileName, wGetAppLibDir(), "params", share, NULL);
- wPrefSetString("Parameter File Map", contents, fileName);
- }
-
- ReadParamFile(fileName);
-
- if (curContents == NULL) {
- curContents = curSubContents = MyStrdup(contents);
- }
- paramFileInfo(curParamFileIndex).contents = curContents;
- if (favoriteList && fileNo == favoriteList[nextFavorite]) {
- DynString topic;
- long deleted;
- DynStringMalloc(&topic, 16);
- DynStringPrintf(&topic, FAVORITEDELETED, fileNo);
-
- wPrefGetIntegerBasic(FAVORITESECTION, DynStringToCStr(&topic), &deleted, 0L);
- paramFileInfo(curParamFileIndex).favorite = TRUE;
- paramFileInfo(curParamFileIndex).deleted = deleted;
- if (nextFavorite < favorites - 1) {
- nextFavorite++;
- }
- DynStringFree(&topic);
- }
-
- }
- curParamFileIndex = PARAM_CUSTOM;
- if (updated) {
- SaveParamFileList();
- }
-
- MyFree(favoriteList);
+ 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)
+#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) {
+
+ if (curContents == NULL) {
+ curContents = curSubContents = MyStrdup(contents);
+ }
+ paramFileInfo(curParamFileIndex).contents = curContents;
+ if (favoriteList && fileNo == favoriteList[nextFavorite]) {
+ DynString topic;
+ long deleted;
+ DynStringMalloc(&topic, 16);
+ DynStringPrintf(&topic, FAVORITEDELETED, fileNo);
+
+ wPrefGetIntegerBasic(FAVORITESECTION, DynStringToCStr(&topic), &deleted, 0L);
+ paramFileInfo(curParamFileIndex).favorite = TRUE;
+ paramFileInfo(curParamFileIndex).deleted = deleted;
+ if (nextFavorite < favorites - 1) {
+ nextFavorite++;
+ }
+ DynStringFree(&topic);
+ }
+ } else {
+ ReadParamError(fileName);
+ }
+ }
+ curParamFileIndex = PARAM_CUSTOM;
+ if (updated) {
+ SaveParamFileList();
+ }
+
+ MyFree(favoriteList);
}
/**
@@ -239,47 +299,60 @@ 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(i);
- }
+ for (size_t i = 0; i < (unsigned)paramFileInfo_da.cnt; i++) {
+ SetParamFileState((int)i);
+ }
}
+
+
/**
* Load the selected parameter files. This is a callback executed when the file selection dialog
* is closed.
@@ -300,85 +373,94 @@ UpdateParamFileList(void)
*/
int LoadParamFile(
- int files,
- char ** fileName,
- void * data)
+ int files,
+ char ** fileName,
+ void * data)
{
- wIndex_t inx;
- int i = 0;
-
- assert(fileName != NULL);
- assert(files > 0);
-
- for (i = 0; i < files; i++) {
- enum paramFileState structState = PARAMFILE_UNLOADED;
- int newIndex;
-
- curContents = curSubContents = NULL;
-
- newIndex = ReadParamFile(fileName[i]);
-
- // 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) {
- paramFileInfo(inx).valid = FALSE;
- break;
- }
- }
-
- wPrefSetString("Parameter File Map", curContents,
- paramFileInfo(curParamFileIndex).name);
- }
- //Only set the ParamFileDir if not the system directory
- if (!strstr(fileName[i-1],"/share/xtrkcad/params/"))
- SetParamFileDir(fileName[i - 1]);
- curParamFileIndex = PARAM_CUSTOM;
- DoChangeNotification(CHANGE_PARAMS);
- return TRUE;
+ wIndex_t inx;
+ int i = 0;
+
+ CHECK(fileName != NULL);
+ CHECK(files > 0);
+
+ for (i = 0; i < files; i++) {
+// enum paramFileState structState = PARAMFILE_UNLOADED;
+ int newIndex;
+
+ curContents = curSubContents = NULL;
+
+ 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) {
+ 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);
+ } else {
+ ReadParamError(fileName[i]);
+ }
+ }
+ //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);
+ }
}
-/*
- * Open the file and then set the locale to "C". Old locale will be copied to
- * oldLocale. After the required file I/O is done, the caller must call
- * CloseCustom() with the same locale value that was returned in oldLocale by
- * this function.
+/**
+ * Open the custom file where user-defined turnouts, cars and such are stored
*/
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
@@ -388,40 +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)
{
- log_params = LogFindIndex("params");
+ /** @logcmd @showrefby params=n paramfilelist.c Log ReadParams
+ * (including scale file (xtq), custom file (*.cus) and other params (xtp))
+ */
+ log_params = LogFindIndex("params");
+ log_paramupdate = LogFindIndex("paramupdate");
+ SetCLocale();
// get the default definitions
- if (ReadParams(lParamKey, libDir, sParamQF) == FALSE) {
- return FALSE;
- }
+ if (ReadParams(lParamKey, libDir, sParamQF) == FALSE) {
+ SetUserLocale();
+ return FALSE;
+ }
- curParamFileIndex = PARAM_CUSTOM;
+ curParamFileIndex = PARAM_CUSTOM;
- if (lParamKey == 0) {
- LoadParamFileList();
- ReadCustom();
- }
+ if (lParamKey == 0) {
+ LoadParamFileList();
+ ReadCustom();
+ }
- return TRUE;
+ SetUserLocale();
+ return TRUE;
}
@@ -444,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
*
@@ -457,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);
}
/**
@@ -486,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 bf9c47a..5050f22 100644
--- a/app/bin/paramfilesearch_ui.c
+++ b/app/bin/paramfilesearch_ui.c
@@ -2,7 +2,7 @@
* Parameter File Search Dialog
*/
-/* XTrkCad - Model Railroad CAD
+/* XTrackCAD - Model Railroad CAD
* Copyright (C) 2019 Martin Fischer
*
* This program is free software; you can redistribute it and/or modify
@@ -17,165 +17,184 @@
*
* 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 <ctype.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <string.h>
-
#include "custom.h"
#include "dynstring.h"
-#include "i18n.h"
-#include "messages.h"
#include "param.h"
#include "include/partcatalog.h"
#include "paths.h"
#include "include/paramfilelist.h"
+#include "include/paramfile.h"
#include "fileio.h"
#include "directory.h"
+#include "layout.h"
-#include "bitmaps/magnifier.xpm"
-
-static CatalogEntry *catalogFileBrowse; /**< current search results */
-static TrackLibrary *trackLibrary; /**< Track Library */
-static CatalogEntry *currentCat; /**< catalog being shown */
+static ParameterLib *trackLibrary; /**< Track Library */
+static Catalog currentCat; /**< catalog being shown */
/* define the search / browse dialog */
-static struct wFilSel_t *searchUi_fs; /**< searchdialog for parameter files */
-
-static void SearchUiBrowse(void *junk);
-static void SearchUiDefault(void * junk);
+static void SearchUiDefault(void);
static void SearchUiApply(wWin_p junk);
static void SearchUiSelectAll(void *junk);
static void SearchUiDoSearch(void *junk);
+static void SearchUiClearFilter(void *ptr);
static long searchUiMode = 0;
+static long searchFitMode = 0;
static paramListData_t searchUiListData = { 10, 370, 0 };
#define MAXQUERYLENGTH 250
static char searchUiQuery[MAXQUERYLENGTH];
static char * searchUiLabels[] = { N_("Show File Names"), NULL };
+// Note these are defined in the same order as FIT_ANY, FIT_COMPATIBLE, FIT_EXACT
+static char * searchFitLabels[] = { N_("Fit Any"), N_("Fit Compatible"), N_("Fit Exact"), NULL};
+
+
+#define QUERYPROMPTSTRING "Enter at least one search word"
static paramData_t searchUiPLs[] = {
#define I_QUERYSTRING (0)
- { PD_STRING, searchUiQuery, "query", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)(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, (void*)SearchUiDoSearch, "find", PDO_DLGHORZ, 0, NULL, BO_ICON, (void *)NULL },
-#define I_MESSAGE (2)
- { PD_MESSAGE, N_("Enter at least one search word"), NULL, PDO_DLGBOXEND, (void *)370 },
-#define I_RESULTLIST (3)
- { PD_LIST, NULL, "inx", PDO_NOPREF | PDO_DLGRESIZE, &searchUiListData, NULL, BL_DUP|BL_SETSTAY|BL_MANY },
-#define I_MODETOGGLE (4)
- { PD_TOGGLE, &searchUiMode, "mode", PDO_DLGBOXEND, searchUiLabels, NULL, BC_HORZ|BC_NOBORDER },
-#define I_APPLYBUTTON (5)
- { PD_BUTTON, (void *)SearchUiApply, "apply", PDO_DLGCMDBUTTON, NULL, N_("Add") },
-#define I_SELECTALLBUTTON (6)
- { PD_BUTTON, (void*)SearchUiSelectAll, "selectall", PDO_DLGCMDBUTTON, NULL, N_("Select all") },
- { PD_BUTTON, (void*)SearchUiDefault, "default", 0, NULL, N_("Reload Library") },
+ { 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 },
+#define I_FITRADIO (3)
+ { 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) },
+#define I_STATISTICS (5)
+ { 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 },
+#define I_MODETOGGLE (7)
+ { 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") },
+#define I_SELECTALLBUTTON (9)
+ { PD_BUTTON, SearchUiSelectAll, "selectall", PDO_DLGCMDBUTTON, NULL, N_("Select all") },
};
#define SEARCHBUTTON ((wButton_p)searchUiPLs[I_SEARCHBUTTON].control)
+#define CLEARBUTTON ((wButton_p)searchUiPLs[I_CLEARBUTTON].control)
#define RESULTLIST ((wList_p)searchUiPLs[I_RESULTLIST].control)
#define APPLYBUTTON ((wButton_p)searchUiPLs[I_APPLYBUTTON].control)
#define SELECTALLBUTTON ((wButton_p)searchUiPLs[I_SELECTALLBUTTON].control)
#define MESSAGETEXT ((wMessage_p)searchUiPLs[I_MESSAGE].control)
#define QUERYSTRING ((wString_p)searchUiPLs[I_QUERYSTRING].control)
+#define SEARCHSTAT ((wMessage_p)searchUiPLs[I_STATISTICS].control)
+#define FITRADIO ((wChoice_p)searchUiPLs[I_FITRADIO].control)
-static paramGroup_t searchUiPG = { "searchgui", 0, searchUiPLs, sizeof searchUiPLs/sizeof searchUiPLs[0] };
+static paramGroup_t searchUiPG = { "searchgui", 0, searchUiPLs, COUNT( searchUiPLs ) };
static wWin_p searchUiW;
#define FILESECTION "file"
#define PARAMDIRECTORY "paramdir"
+
/**
- * Reload the listbox showing the current catalog
+ * Clears the current catalog
*/
-static
-void SearchFileListLoad(CatalogEntry *catalog)
+void
+ClearCurrentCatalog(void)
{
- CatalogEntry *currentEntry = catalog->next;
- DynString description;
- DynStringMalloc(&description, STR_SHORT_SIZE);
-
- wControlShow((wControl_p)RESULTLIST, FALSE);
- wListClear(RESULTLIST);
-
- while (currentEntry != currentEntry->next) {
- for (unsigned int i=0;i<currentEntry->files;i++) {
- DynStringClear(&description);
- DynStringCatCStr(&description,
- ((!searchUiMode) && currentEntry->contents) ?
- currentEntry->contents :
- currentEntry->fullFileName[i]);
-
- wListAddValue(RESULTLIST,
- DynStringToCStr(&description),
- NULL,
- // indicatorIcons[paramFileInfo.favorite][paramFileInfo.trackState],
- (void*)currentEntry->fullFileName[i]);
- }
-
- currentEntry = currentEntry->next;
- }
-
- wControlShow((wControl_p)RESULTLIST, TRUE);
- wControlActive((wControl_p)SELECTALLBUTTON,
- wListGetCount(RESULTLIST));
-
- DynStringFree(&description);
-
- currentCat = catalog;
+ if (currentCat.head) {
+ DestroyCatalog(&currentCat);
+ currentCat.head = NULL;
+ }
}
/**
- * Find parameter files using the file selector
+ * Reload the listbox showing the current catalog. The catalog is either the system
+ * default library catalog or a search result
*
- * \param junk
+ * \param [in] catalog the current catalog.
*/
-static void SearchUiBrowse(void * junk)
-{
+static
+int SearchFileListLoad(Catalog *catalog)
- //EmptyCatalog(catalogFileBrowse);
+{
+ 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]);
- wFilSelect(searchUi_fs, GetParamFileDir());
+ wListAddValue(RESULTLIST,
+ DynStringToCStr(&description),
+ NULL,
+ catalogEntry->fullFileName[i]);
+ }
+ }
- //SearchFileListLoad(catalogFileBrowse);
+ wControlShow((wControl_p)RESULTLIST, TRUE);
+ wControlActive((wControl_p)SELECTALLBUTTON,
+ wListGetCount(RESULTLIST));
- return;
+ DynStringFree(&description);
+ return wListGetCount(RESULTLIST);
}
-
/**
* Reload just the system files into the searchable set
*/
-static void SearchUiDefault(void * junk)
+static void SearchUiDefault(void)
{
+ DynString dsSummary;
- if (!catalogFileBrowse)
- catalogFileBrowse = InitCatalog();
- else {
- EmptyCatalog(catalogFileBrowse);
- }
-
- if (trackLibrary)
- DeleteLibrary(trackLibrary);
-
- char * parms_path;
-
- MakeFullpath(&parms_path, wGetAppLibDir(), "params", NULL);
+ int matches = SearchFileListLoad(
+ trackLibrary->catalog); //Start with system files
+ wStringSetValue(QUERYSTRING, "");
- trackLibrary = CreateLibrary(parms_path);
-
- SearchFileListLoad(trackLibrary->catalog); //Start with system files
-
- free(parms_path);
+ wMessageSetValue(MESSAGETEXT, _(QUERYPROMPTSTRING));
+ DynStringMalloc(&dsSummary, 16);
+ DynStringPrintf(&dsSummary, _("%u parameter files in library. %d Fit Scale."),
+ CountCatalogEntries(trackLibrary->catalog), matches);
+ wMessageSetValue(SEARCHSTAT, DynStringToCStr(&dsSummary));
+ DynStringFree(&dsSummary);
+ wControlActive((wControl_p)CLEARBUTTON, FALSE);
}
/**
@@ -185,27 +204,23 @@ static void SearchUiDefault(void * junk)
void static
SearchUILoadResults(void)
{
- char **fileNames;
- int files = wListGetSelectedCount(RESULTLIST);
- int found = 0;
-
- if (files) {
- fileNames = malloc(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);
- free(fileNames);
- SearchUiOk((void *) 0);
- }
+ 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);
+ }
}
@@ -220,69 +235,104 @@ 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);
}
-// Return a pointer to the (shifted) trimmed string
+/**
+ * Return a pointer to the (shifted) trimmed string
+ *
+ * \param [in,out] s If non-null, a char to process.
+ *
+ * \returns pointer to the trimmed string
+ */
+
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);
}
/**
* Perform the search. If successful, the results are loaded into the list
*
- * \param ptr INignored
+ * \param [in,out] ptr ignored.
*/
static void SearchUiDoSearch(void * ptr)
{
- unsigned result;
+ unsigned result;
+ SearchResult *currentResults = MyMalloc(sizeof(SearchResult));
+ char * search;
+
+ ClearCurrentCatalog();
+
+ strcpy(searchUiQuery, wStringGetValue((wString_p)
+ searchUiPG.paramPtr[I_QUERYSTRING].control));
+ search = StringTrim(searchUiQuery);
+
+ if (search[0]) {
+ result = SearchLibrary(trackLibrary, search, currentResults);
- char * search;
+ if (result) {
- search = StringTrim(searchUiQuery);
+ char *statistics;
- if (catalogFileBrowse) {
- EmptyCatalog(catalogFileBrowse);
- } else
- catalogFileBrowse = InitCatalog();
+ statistics = SearchStatistics(currentResults);
+ wMessageSetValue(SEARCHSTAT, statistics);
+ MyFree(statistics);
- result = SearchLibrary(trackLibrary, search, catalogFileBrowse);
+ int matches = SearchFileListLoad(&(currentResults->subCatalog));
- if (result) {
- DynString hitsMessage;
- DynStringMalloc(&hitsMessage, 16);
- DynStringPrintf(&hitsMessage, _("%d parameter files found."), result);
- wMessageSetValue(MESSAGETEXT, DynStringToCStr(&hitsMessage));
- DynStringFree(&hitsMessage);
+ DynString hitsMessage;
+ DynStringMalloc(&hitsMessage, 16);
+ DynStringPrintf(&hitsMessage, _("%d parameter files found. %d Fit Scale"),
+ result, matches);
+ wMessageSetValue(MESSAGETEXT, DynStringToCStr(&hitsMessage));
+ DynStringFree(&hitsMessage);
- SearchFileListLoad(catalogFileBrowse);
+ currentCat = currentResults->subCatalog;
+ wControlActive((wControl_p)CLEARBUTTON, TRUE);
+ } else {
+ wListClear(RESULTLIST);
+ wControlActive((wControl_p)SELECTALLBUTTON, FALSE);
+ wMessageSetValue(MESSAGETEXT, _("No matches found."));
+ }
+ } else {
+ SearchUiDefault();
+ }
+ MyFree(currentResults); //Because SearchFileList also caches the currentResults->subCatalog address as currentCatalog for reuse.
+}
- } else {
+/**
+ * Clear the current filter
+ *
+ * \param [in,out] ptr ignored
+ */
- wListClear(RESULTLIST);
- wControlActive((wControl_p)SELECTALLBUTTON, FALSE);
- wMessageSetValue(MESSAGETEXT, _("No matches found."));
- }
+static void
+SearchUiClearFilter(void *ptr)
+{
+ ClearCurrentCatalog();
+ SearchUiDefault();
}
/**
@@ -294,7 +344,7 @@ static void SearchUiDoSearch(void * ptr)
static void SearchUiSelectAll(void *junk)
{
- wListSelectAll(RESULTLIST);
+ wListSelectAll(RESULTLIST);
}
/**
@@ -305,9 +355,9 @@ static void SearchUiSelectAll(void *junk)
void SearchUiOk(void * junk)
{
- if (searchUiW) {
- wHide(searchUiW);
- }
+ if (searchUiW) {
+ wHide(searchUiW);
+ }
}
/**
@@ -319,11 +369,11 @@ void SearchUiOk(void * junk)
static void SearchUiApply(wWin_p junk)
{
- SearchUILoadResults();
+ SearchUILoadResults();
}
/**
- * Event handling for the Search dialog. If the 'X' decoration is pressed the
+ * Event handling for the Search dialog. If the 'X' decoration is pressed the
* dialog window is closed.
*
* \param pg IN ignored
@@ -332,25 +382,47 @@ 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_RESULTLIST:
- UpdateSearchUiButton();
- break;
- case I_MODETOGGLE:
- SearchFileListLoad(currentCat);
- break;
+ 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;
- }
+ }
+}
+
+void
+SearchUiCancel(wWin_p window)
+{
+ ClearCurrentCatalog();
+ wHide(window);
}
/**
- * Get the system default directory for parameter files. First step is to
+ * Get the system default directory for parameter files. First step is to
* check the configuration file for a user specific setting. If that is not
* found, the diretory is based derived from the installation directory.
* The returned string has to be free'd() when no longer needed.
@@ -370,8 +442,12 @@ GetParamsPath()
} else {
params_path = strdup(params_pref);
}
- return(params_path);
+ return (params_path);
}
+
+#include "bitmaps/funnel.xpm"
+#include "bitmaps/funnelclear.xpm"
+
/**
* Create and open the search dialog.
*
@@ -380,47 +456,48 @@ GetParamsPath()
void DoSearchParams(void * junk)
{
- if (searchUiW == NULL) {
- catalogFileBrowse = InitCatalog();
+ if (searchUiW == NULL) {
- //Make the Find menu bound to the System Library initially
+ //Make the Find menu bound to the System Library initially
char *paramsDir = GetParamsPath();
- trackLibrary = CreateLibrary(paramsDir);
+ trackLibrary = CreateLibrary(paramsDir);
free(paramsDir);
- searchUiPLs[I_SEARCHBUTTON].winLabel = (char *)wIconCreatePixMap(magnifier_xpm);
+ searchUiPLs[I_SEARCHBUTTON].winLabel = (char *)wIconCreatePixMap(funnel_xpm);
+ searchUiPLs[I_CLEARBUTTON].winLabel = (char *)wIconCreatePixMap(
+ funnelclear_xpm);
- ParamRegister(&searchUiPG);
+ searchFitMode = FIT_COMPATIBLE; //Default to "Any" after startup
- searchUiW = ParamCreateDialog(&searchUiPG,
- MakeWindowTitle(_("Choose parameter files")), _("Done"), NULL, wHide,
- TRUE, NULL, F_RESIZE | F_RECALLSIZE, SearchUiDlgUpdate);
- if (trackLibrary) {
- SearchFileListLoad(trackLibrary->catalog); //Start with system files
- }
- wControlActive((wControl_p)APPLYBUTTON, FALSE);
- wControlActive((wControl_p)SELECTALLBUTTON, FALSE);
+ ParamRegister(&searchUiPG);
+
+
+
+ searchUiW = ParamCreateDialog(&searchUiPG,
+ MakeWindowTitle(_("Choose parameter files")), _("Done"), NULL, SearchUiCancel,
+ TRUE, NULL, F_RESIZE | F_RECALLSIZE, SearchUiDlgUpdate);
- searchUi_fs = wFilSelCreate(searchUiW, FS_LOAD, FS_MULTIPLEFILES,
- _("Load Parameters"), _("Parameter files (*.xtp)|*.xtp"), GetParameterFileInfo,
- (void *)catalogFileBrowse);
- }
- ParamLoadControls(&searchUiPG);
- ParamGroupRecord(&searchUiPG);
+ wControlActive((wControl_p)APPLYBUTTON, FALSE);
+ wControlActive((wControl_p)SELECTALLBUTTON, FALSE);
+ }
+
+ wControlActive((wControl_p)FITRADIO, TRUE);
+
+ 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 {
- wStringSetValue(QUERYSTRING, "");
- SearchFileListLoad(trackLibrary->catalog); //Start with system files
+ 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 a1db09c..205ae50 100644
--- a/app/bin/partcatalog.c
+++ b/app/bin/partcatalog.c
@@ -1,7 +1,7 @@
/** \file partcatalog.c
* Manage the catalog of track parameter files
*/
-/* XTrkCad - Model Railroad CAD
+/* XTrackCAD - Model Railroad CAD
* Copyright (C) 2019 Martin Fischer
*
* This program is free software; you can redistribute it and/or modify
@@ -16,44 +16,29 @@
*
* 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 <ctype.h>
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-#include <search.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifdef WINDOWS
- #include "include/dirent.h"
-#else
- #include <dirent.h>
-#endif
+#include "dynstring.h"
#include "fileio.h"
+#include "include/levenshtein.h"
#include "misc.h"
#include "include/paramfile.h"
#include "include/partcatalog.h"
#include "paths.h"
#include "include/stringxtc.h"
#include "include/utf8convert.h"
-
-#if _MSC_VER > 1300
- #define strnicmp _strnicmp
- #define strdup _strdup
-#endif
+#include "include/utlist.h"
#define PUNCTUATION "+-*/.,&%=#"
+#define SEARCHDELIMITER " \t\n\r/"
+#define LDISTANCELIMIT (2)
+static char *stopwords = {
+ "scale",
+};
+static int log_params;
/**
* Create and initialize the linked list for the catalog entries
@@ -61,24 +46,49 @@
* \return pointer to first element
*/
-CatalogEntry *
+Catalog *
InitCatalog(void)
{
- CatalogEntry *head;
- CatalogEntry *tail;
-
- /* allocate two pseudo nodes for beginning and end of list */
- head = (CatalogEntry *)malloc(sizeof(CatalogEntry));
- tail = (CatalogEntry *)malloc(sizeof(CatalogEntry));
-
- head->next = tail;
- tail->next = tail;
+ Catalog *newCatalog = MyMalloc(sizeof(Catalog));
+ if (newCatalog) {
+ newCatalog->head = NULL;
+ }
+ return (newCatalog);
+}
+/**
+ * Destroys the catalog
+ *
+ * \param [in] catalog
+ */
+void
+DestroyCatalog(Catalog *catalog)
+{
+ CatalogEntry *current = catalog->head;
+ CatalogEntry *entry = NULL;
+ CatalogEntry *tmp = NULL;
+// CatalogEntry *old = NULL;
+ DL_FOREACH_SAFE(current, entry, tmp) {
+ //if (old) MyFree(old);
+// old = NULL;
+ for (unsigned int i = 0; i < entry->files; i++) {
+ 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;
+ DL_DELETE(catalog->head,entry);
+ }
- return (head);
+ 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
@@ -90,33 +100,32 @@ InitCatalog(void)
static CatalogEntry *
InsertIntoCatalogAfter(CatalogEntry *entry)
{
- CatalogEntry *newEntry = (CatalogEntry *)malloc(sizeof(CatalogEntry));
- newEntry->next = entry->next;
- entry->next = newEntry;
- newEntry->files = 0;
- newEntry->contents = 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 ignoring dummy elements
+ * Count the elements in the linked list
*
- * \param listHeader IN the linked list
- * \return the numberof elements
+ * \param catalog IN
+ * \return the number of elements
*/
unsigned
-CountCatalogEntries(CatalogEntry *listHeader)
+CountCatalogEntries(Catalog *catalog)
{
- CatalogEntry *currentEntry = listHeader->next;
- unsigned count = 0;
-
- while (currentEntry != currentEntry->next) {
- count++;
- currentEntry = currentEntry->next;
- }
- return (count);
+ CatalogEntry * entry;
+ unsigned count = 0;
+ DL_COUNT(catalog->head, entry, count);
+ return (count);
}
/**
@@ -125,119 +134,134 @@ CountCatalogEntries(CatalogEntry *listHeader)
* \param listHeader IN the list
*/
-void
-EmptyCatalog(CatalogEntry *listHeader)
+EXPORT void
+CatalogDiscard(Catalog *catalog)
{
- CatalogEntry *current = listHeader;
-
- while (current->next != current->next->next) {
- CatalogEntry *removedElement;
- removedElement = current->next;
- current->next = current->next->next;
- if (removedElement->contents) {
- free(removedElement->contents);
- }
- for (unsigned int i = 0; i < removedElement->files; i++) {
- free(removedElement->fullFileName[i]);
- }
- free(removedElement);
- }
+ 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;
}
/**
- * Find the position in the list and add
+ * Compare entries
*
- * \param listHeader IN start of list
- * \param contents IN contents to include
+ * \param [in] a If non-null, a CatalogEntry to compare.
+ * \param [in] b If non-null, a CatalogEntry to compare.
*
- * \return CatalogEntry if found, NULL otherwise
+ * \returns An int.
*/
-static CatalogEntry *
-InsertInOrder(CatalogEntry *listHeader, const char *contents)
+static int
+CompareEntries(CatalogEntry *a, CatalogEntry *b)
{
- CatalogEntry *currentEntry = listHeader;
-
- while (currentEntry->next != currentEntry->next->next) {
- CatalogEntry *nextEntry = currentEntry->next;
- if (XtcStricmp(nextEntry->contents, contents)>0) {
- return InsertIntoCatalogAfter(currentEntry);
- }
- currentEntry = nextEntry;
- }
- return InsertIntoCatalogAfter(currentEntry);
+ return XtcStricmp(a->contents, b->contents);
}
+
/**
- * Get the existing list element for a content
+ * Create a new CatalogEntry and insert it keeping the list sorted
*
- * \param listHeader IN start of list
- * \param contents IN contents to search
- * \param Do we log error messages or not
+ * \param [in] catalog
+ * \param [in] contents to include.
+ * \param [in] tag
*
- * \return CatalogEntry if found, NULL otherwise
+ * \returns CatalogEntry
*/
-static CatalogEntry *
-IsExistingContents(CatalogEntry *listHeader, const char *contents, BOOL_T silent)
+EXPORT CatalogEntry *
+InsertInOrder(Catalog *catalog, const char *contents, const char *tag)
{
- CatalogEntry *currentEntry = listHeader->next;
-
- while (currentEntry != currentEntry->next) {
- if (!XtcStricmp(currentEntry->contents, contents)) {
- if (!silent)
- printf("%s already exists in %s\n", contents, currentEntry->fullFileName[0]);
- return (currentEntry);
- }
- currentEntry = currentEntry->next;
- }
- return (NULL);
-}
+ CatalogEntry *newEntry = MyMalloc(sizeof(CatalogEntry));
+ newEntry->files = 0;
-/**
- * Store information about a parameter file. The filename is added to the array
- * of files with identical content. If not already present, in addition
- * the content is stored
- *
- * \param entry existing entry to be updated
- * \param path filename to add
- * \param contents contents description
- */
+ if (contents) {
+ newEntry->contents = MyStrdup(contents);
+ }
+ if (tag) {
+ newEntry->tag = MyStrdup(tag);
+ }
-static void
-UpdateCatalogEntry(CatalogEntry *entry, char *path, char *contents)
-{
- if (!entry->contents) {
- entry->contents = strdup(contents);
- }
-
- if (entry->files < MAXFILESPERCONTENT) {
- entry->fullFileName[entry->files++] = strdup(path);
- } else {
- AbortProg("Number of file with same content too large!", NULL);
- }
+ DL_INSERT_INORDER(catalog->head, newEntry, CompareEntries);
+
+ return newEntry;
}
/**
- * Create the list for the catalog entries
+ * Find an existing list element for a given content
+ *
+ * \param [in] catalog
+ * \param [in] contents contents to search.
+ * \param [in] silent we log error messages or not.
*
- * \return
+ * \returns CatalogEntry if found, NULL otherwise.
*/
static CatalogEntry *
-CreateCatalog()
+IsExistingContents(Catalog *catalog, const char *contents, BOOL_T silent)
{
- CatalogEntry *catalog = InitCatalog();
+ CatalogEntry *head = catalog->head;
+ CatalogEntry *currentEntry;
- return (catalog);
+ 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);
}
+/**
+ * Store information about a parameter file. The filename is added to the array
+ * of files with identical content. If not already present, in addition
+ * the content is stored
+ *
+ * \param entry existing entry to be updated
+ * \param path filename to add
+ * \param contents contents description
+ */
-static IndexEntry *
-CreateIndexTable(unsigned int capacity)
+EXPORT void
+UpdateCatalogEntry(CatalogEntry *entry, char *path, char *contents, char *tag)
{
- IndexEntry *index = (IndexEntry *)malloc(capacity * sizeof(IndexEntry));
+ 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);
+ }
- return (index);
+ CHECK( entry->files < MAXFILESPERCONTENT );
+ entry->fullFileName[entry->files++] = MyStrdup(path);
}
/**
@@ -245,7 +269,7 @@ CreateIndexTable(unsigned int capacity)
*
* \param dir IN opened directory handle
* \param dirName IN name of directory
- * \param fileName OUT fully qualified filename
+ * \param fileName OUT fully qualified filename, must be free()'d by caller
*
* \return TRUE if file found, FALSE if not
*/
@@ -253,97 +277,40 @@ CreateIndexTable(unsigned int capacity)
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);
-}
-
-/**
- * Scan a directory for parameter files. For each file found the CONTENTS is
- * read and added to the list *
- *
- * \param insertAfter IN starting point for the list of files
- * \param dirName IN directory to be scanned
- *
- * \return pointer to the last element(?)
- */
-
-static CatalogEntry *
-ScanDirectory(CatalogEntry *catalog, const char *dirName)
-{
- DIR *d;
- CatalogEntry *newEntry = catalog;
-
- d = opendir(dirName);
- if (d) {
- char *fileName = NULL;
-
- while (GetNextParameterFile(d, dirName, &fileName)) {
- CatalogEntry *existingEntry;
- char *contents = GetParameterFileContent(fileName);
- if ((existingEntry = IsExistingContents(catalog, contents,FALSE))) {
- printf("Duplicate CONTENTS record in parameter file %s\n", fileName);
- if (strcmp(existingEntry->fullFileName[existingEntry->files-1],fileName))
- UpdateCatalogEntry(existingEntry, fileName, contents);
- } else {
- newEntry = InsertInOrder(catalog,contents);
- UpdateCatalogEntry(newEntry, fileName, contents);
- }
- free(contents);
- free(fileName);
- fileName = NULL;
- }
- closedir(d);
- }
-
- return (newEntry);
-}
-
-/**
- * Comparison function for IndexEntries used by qsort()
- *
- * \param entry1 IN
- * \param entry2 IN
- * \return per C runtime conventions
- */
+ 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;
+ }
-static int
-CompareIndex(const void *entry1, const void *entry2)
-{
- IndexEntry index1 = *(IndexEntry *)entry1;
- IndexEntry index2 = *(IndexEntry *)entry2;
- return (strcoll(index1.keyWord, index2.keyWord));
+ /* ignore any directories */
+ if (!(fileState.st_mode & S_IFDIR)) {
+ done = true;
+ res = true;
+ }
+ }
+ } else {
+ done = true;
+ res = false;
+ }
+ }
+ return (res);
}
/*!
@@ -357,218 +324,185 @@ CompareIndex(const void *entry1, const void *entry2)
bool
FilterKeyword(char *word)
{
- if (strlen(word) == 1 && strpbrk(word, PUNCTUATION )) {
- return(true);
+ if (strlen(word) == 1 && strpbrk(word, PUNCTUATION)) {
+ return (true);
}
- return(false);
-}
-
-/**
- * Create the keyword index from a list of parameter files
- *
- * \param catalog IN list of parameter files
- * \param index IN index table to be filled
- * \param pointer IN/OUT array of words that are indexed
- * \param capacityOfIndex IN total maximum of keywords
- * \return number of indexed keywords
- */
-static unsigned
-CreateContentsIndex(CatalogEntry *catalog, IndexEntry *index, void** words_array,
- unsigned capacityOfIndex)
-{
- CatalogEntry *currentEntry = catalog->next;
- unsigned totalMemory = 0;
- size_t wordCount = 0;
- char *wordList;
- char *wordListPtr;
-
- while (currentEntry != currentEntry->next) {
- totalMemory += strlen(currentEntry->contents) + 1;
- currentEntry = currentEntry->next;
- }
-
- wordList = malloc((totalMemory + 1) * sizeof(char));
- *words_array = (void*)wordList;
-
- wordListPtr = wordList;
- currentEntry = catalog->next;
-
- while (currentEntry != currentEntry->next) {
- char *word;
- char *content = strdup(currentEntry->contents);
-
- word = strtok(content, " \t\n\r");
- while (word && wordCount < capacityOfIndex) {
- strcpy(wordListPtr, word);
-
- char *p = wordListPtr;
- for (; *p; ++p) {
- *p = tolower(*p);
- }
- if (!FilterKeyword(wordListPtr)) {
- index[wordCount].value = currentEntry;
- index[wordCount].keyWord = wordListPtr;
- wordListPtr += strlen(word) + 1;
- wordCount++;
- if (wordCount >= capacityOfIndex) {
- AbortProg("Too many keywords were used!", NULL);
- }
- }
- word = strtok(NULL, " \t\n\r");
- }
- free(content);
- currentEntry = currentEntry->next;
- }
- *wordListPtr = '\0';
- qsort((void*)index, wordCount, sizeof(IndexEntry), CompareIndex);
-
- return (wordCount);
+ for (int i = 0; i < sizeof(stopwords) / sizeof(char *); i++) {
+ if (!XtcStricmp(word, stopwords+i)) {
+ return (true);
+ }
+ }
+ return (false);
}
-/**
-* A recursive binary search function. It returns location of x in
-* given array arr[l..r] is present, otherwise -1
-* Taken from http://www.geeksforgeeks.org/binary-search/ and modified
-*
-* \param arr IN array to search
-* \param l IN starting index
-* \param r IN highest index in array
-* \param key IN key to search
-* \return index if found, -1 otherwise
-*/
-
-static int SearchInIndex(IndexEntry arr[], int l, int r, char *key)
+int KeyWordCmp(void *a, void *b)
{
- if (r >= l) {
- int mid = l + (r - l) / 2;
- int res = XtcStricmp(key, arr[mid].keyWord);
-
- // 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 SearchInIndex(arr, l, mid - 1, key);
- }
-
- // Else the element can only be present in right subarray
- return SearchInIndex(arr, mid + 1, r, key);
- }
-
- // We reach here when element is not present in array
- return -1;
+ return XtcStricmp(((IndexEntry *)a)->keyWord,((IndexEntry *)b)->keyWord);
}
+
/**
- * Inserts a key in arr[] of given capacity. n is current
- * size of arr[]. This function returns n+1 if insertion
- * is successful, else n.
- * Taken from http ://www.geeksforgeeks.org/search-insert-and-delete-in-a-sorted-array/ and modified
+ * Standardize spelling: remove some typical spelling problems. It is assumed that the word
+ * has already been converted to lower case
+ *
+ * \param [in,out] word If non-null, the word.
*/
-int InsertSorted(CatalogEntry *arr[], int n, CatalogEntry *key, int capacity)
+void
+StandardizeSpelling(char *word)
{
- // Cannot insert more elements if n is already
- // more than or equal to capcity
- if (n >= capacity) {
- return n;
- }
+ char *p = strchr(word, '-');
+ // remove the word 'scale' from combinations like N-scale
+ if (p) {
+ if (!XtcStricmp(p+1, "scale")) {
+ *p = '\0';
+ }
+ }
- int i;
- for (i = n - 1; (i >= 0 && arr[i] > key); i--) {
- arr[i + 1] = arr[i];
- }
+ if (!strncasecmp(word, "h0", 2)) {
+ strcpy(word, "ho");
+ }
- arr[i + 1] = key;
+ if (!strncasecmp(word, "00", 2)) {
+ strcpy(word, "oo");
+ }
- return (n + 1);
+ if (word[0] == '0') {
+ word[0] = 'o';
+ }
}
/**
- * Comparison function for CatalogEntries used by qsort()
+ * Create the keyword index from a list of parameter files
*
- * \param entry1 IN
- * \param entry2 IN
- * \return per C runtime conventions
+ * \param [in] library initialized library
+ *
+ * \returns number of indexed keywords.
*/
-static int
-CompareResults(const void *entry1, const void *entry2)
+static unsigned
+CreateKeywordIndex(ParameterLib *library)
{
- CatalogEntry * index1 = *(CatalogEntry **)entry1;
- CatalogEntry * index2 = *(CatalogEntry **)entry2;
- return (strcoll(index1->contents, index2->contents));
-}
+ 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));
-/**
- * Search the index for a keyword. The index is assumed to be sorted. So after one entry
- * is found, neighboring entries up and down are checked as well. The total result set
- * is placed into an array and returned. This array has to be free'd by the caller.
- *
- * \param index IN index list
- * \param length IN number of entries index
- * \param search IN search string
- * \param resultCount OUT count of found entries
- * \return array of found catalog entries, NULL if none found
- */
+ wordListPtr = wordList;
-static int findAll = 1;
+ DL_FOREACH(listOfEntries, curParamFile) {
+ char *word;
+ char *content = strdup(curParamFile->contents);
-unsigned int
-FindWord(IndexEntry *index, int length, char *search, CatalogEntry ***entries)
-{
- CatalogEntry **result; //Array of pointers to Catalog Entries
- int found;
- int foundElements = 0;
- *entries = NULL;
-
- //Get all the entries back for generic search or if "generic find"
- if (findAll || !search || (search[0] == '*') || (search[0] == '\0')) {
- result = malloc((length) * sizeof(CatalogEntry *));
- for (int i = 0; i < length; i++) {
- result[i] = index[i].value;
- }
- *entries = result;
- return length;
- }
+ word = strtok(content, SEARCHDELIMITER);
+ while (word) {
+ strcpy(wordListPtr, word);
- found = SearchInIndex(index, 0, length, search);
+ XtcStrlwr(wordListPtr);
+ if (!FilterKeyword(wordListPtr)) {
+ IndexEntry *searchEntry = MyMalloc(sizeof(IndexEntry));
+ IndexEntry *existingEntry = NULL;
+ searchEntry->keyWord = wordListPtr;
+ StandardizeSpelling(wordListPtr);
- if (found >= 0) {
- int lower = found;
- int upper = found;
- int i;
+ 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))
+ }
- while (lower > 0 && !XtcStricmp(index[lower-1].keyWord, search)) {
- lower--;
- }
+ wordListPtr += strlen(word) + 1;
+ wordCount++;
+ }
+ word = strtok(NULL, SEARCHDELIMITER);
+ }
+ free(content);
+ }
+ *wordListPtr = '\0';
- while (upper < length - 1 && !XtcStricmp(index[upper + 1].keyWord, search)) {
- upper++;
- }
+ DL_SORT(index, KeyWordCmp);
+ library->index = index;
+ library->words = wordList;
- foundElements = 1 + upper - lower;
+ IndexEntry *existingEntry;
+ DL_FOREACH(index, existingEntry) {
+ LOG1(log_params, ("Index Entry: <%s> Count: %d\n", existingEntry->keyWord,
+ existingEntry->references->cnt));
+ }
+ return (unsigned)(wordCount);
+}
- result = malloc((foundElements) * sizeof(CatalogEntry *));
+/**
+ * Search the index for a keyword. The index is assumed to be sorted. Each
+ * keyword has one entry in the index list.
+ *
+ * \param [in] index index list.
+ * \param length number of entries index.
+ * \param [in] search search string.
+ * \param [out] entries array of found entry.
+ *
+ * \returns TRUE if found, FALSE otherwise.
+ */
- for (i = 0; i < foundElements; i++) {
- result[i] = index[i+lower].value;
- }
+unsigned int
+FindWord(IndexEntry *index, int length, char *search, IndexEntry **entries)
+{
+ IndexEntry *result = NULL;
+
+ IndexEntry searchWord;
+ searchWord.keyWord = search;
+
+ *entries = NULL;
+
+ DL_SEARCH(index, result, &searchWord, KeyWordCmp);
+ if (!result) {
+ int maxdistance = 1;
+ while (maxdistance <= LDISTANCELIMIT && !result ) {
+ IndexEntry *current;
+// size_t minDistance = LDISTANCELIMIT + 1;
+ int maxProbability = 0;
+ 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) {
+ if (current->references->cnt > maxProbability) {
+ if (!result) {
+ result = MyMalloc(sizeof(IndexEntry));
+ }
+ memcpy(result, current, sizeof(IndexEntry));
+ maxProbability = current->references->cnt;
+ }
+ }
+ }
- qsort((void*)result, foundElements, sizeof(void *), CompareResults);
+ maxdistance++;
+ }
+ }
- *entries = result;
- }
- return (foundElements);
+ *entries = result;
+ return (result != NULL);
}
/**
@@ -578,23 +512,38 @@ FindWord(IndexEntry *index, int length, char *search, CatalogEntry ***entries)
* \return TRUE on success
*/
-TrackLibrary *
+ParameterLib *
InitLibrary(void)
{
- TrackLibrary *trackLib = malloc(sizeof(TrackLibrary));
+ ParameterLib *trackLib = MyMalloc(sizeof(ParameterLib));
+
+ if (trackLib) {
+ trackLib->catalog = InitCatalog();
+ trackLib->index = NULL;
+ trackLib->wordCount = 0;
+ trackLib->parameterFileCount = 0;
+ }
+
+ return (trackLib);
+}
- if (trackLib) {
- trackLib->catalog = CreateCatalog();
- trackLib->index = NULL;
- trackLib->wordCount = 0;
- trackLib->trackTypeCount = 0;
- }
+/**
+ * Destroys the library freeing all associated memory
+ *
+ * \param [in] library If non-null, the library.
+ */
- return (trackLib);
+void
+DestroyLibrary(ParameterLib *library)
+{
+ if (library) {
+ DestroyCatalog(library->catalog);
+ MyFree(library);
+ }
}
/**
- * Scan directory and all parameter files found to the catalog
+ * Scan directory and add all parameter files found to the catalog
*
* \param trackLib IN the catalog
* \param directory IN directory to scan
@@ -602,78 +551,109 @@ InitLibrary(void)
*/
bool
-GetTrackFiles(TrackLibrary *trackLib, char *directory)
+CreateCatalogFromDir(ParameterLib *paramLib, char *directory)
{
- ScanDirectory(trackLib->catalog, directory);
- trackLib->trackTypeCount = CountCatalogEntries(trackLib->catalog);
+ 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);
- return (trackLib->trackTypeCount);
+
+ 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);
}
+
/**
- * Add a list of parameters files to a catalog. This function is
- * called when the user selects files in the file selector.
+ * Discard the complete catalog from a library
*
- * \param files IN count of files
- * \param fileName IN array of filenames
- * \param data IN pointer to the catalog
- * \return alwqys TRUE
+ * \param [in] library
*/
-int GetParameterFileInfo(
- int files,
- char ** fileName,
- void * data)
+void
+DiscardCatalog(ParameterLib *library)
{
- CatalogEntry *catalog = (CatalogEntry *)data;
-
- assert(fileName != NULL);
- assert(files > 0);
- assert(data != NULL);
-
- for (int i = 0; i < files; i++) {
- CatalogEntry *newEntry;
- char *contents = GetParameterFileContent(fileName[i]);
-
- if (!(newEntry = IsExistingContents(catalog, contents,TRUE))) {
- newEntry = InsertIntoCatalogAfter(catalog);
- }
- UpdateCatalogEntry(newEntry, fileName[i], contents);
- free(contents);
- }
- return (TRUE);
+ 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);
+ }
+
}
+
/**
- * Create the search index from the contents description for the whole catalog.
- * A fixed number of words are added to the index. See ESTIMATED_CONTENTS_WORDS
+ * Create the search index from the contents description for the whole
+ * catalog.
*
- * \param trackLib IN the catalog
- * \return the number of words indexed
+ * \param [in] parameterLib IN the catalog.
+ *
+ * \returns the number of words indexed.
*/
unsigned
-CreateLibraryIndex(TrackLibrary *trackLib)
+CreateLibraryIndex(ParameterLib *parameterLib)
{
- trackLib->index = CreateIndexTable(trackLib->trackTypeCount *
- ESTIMATED_CONTENTS_WORDS);
+ parameterLib->index = NULL;
- trackLib->wordCount = CreateContentsIndex(trackLib->catalog, trackLib->index,
- &trackLib->words_array,
- ESTIMATED_CONTENTS_WORDS * trackLib->trackTypeCount);
+ parameterLib->wordCount = CreateKeywordIndex(parameterLib);
- return (trackLib->wordCount);
+ return (parameterLib->wordCount);
}
+/**
+ * Discard library index freeing all memory used
+ * references were created using MakeFullPath. These were allocated using malloc and
+ * not MyMalloc
+ *
+ * \param [in] trackLib the track library.
+ */
+
void
-DeleteLibraryIndex(TrackLibrary *trackLib)
+DiscardLibraryIndex(ParameterLib *trackLib)
{
- free(trackLib->index);
- trackLib->index = NULL;
-
- free(trackLib->words_array);
+ 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;
-
}
@@ -684,128 +664,307 @@ DeleteLibraryIndex(TrackLibrary *trackLib)
* \return NULL if error or empty directory, else library handle
*/
-TrackLibrary *
+ParameterLib *
CreateLibrary(char *directory)
{
- TrackLibrary *library;
+ ParameterLib *library;
- library = InitLibrary();
- if (library) {
- if (!GetTrackFiles(library, directory)) {
- return (NULL);
- }
+ log_params = LogFindIndex("params");
- CreateLibraryIndex(library);
- }
- return (library);
+ library = InitLibrary();
+ if (library) {
+ if (!CreateCatalogFromDir(library, directory)) {
+ return (NULL);
+ }
+
+ CreateLibraryIndex(library);
+ }
+ return (library);
}
+/**
+ * Discard library freeing all memory used
+ *
+ * \param [in,out] library If non-null, the library.
+ */
+
void
-DeleteLibrary(TrackLibrary* library)
+DiscardLibrary(ParameterLib* library)
{
- DeleteLibraryIndex(library);
+ CatalogEntry *entry = library->catalog->head;
+ CatalogEntry *element;
+ CatalogEntry *tmp;
+ DiscardLibraryIndex(library);
- free(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);
}
-// Case insensitive comparison
-char* stristr( const char* haystack, const char* needle )
+/**
+ * Create a statistic for a finished search. The returned string has to be MyFreed() after usage
+ *
+ * \param [in] result the finished search
+ *
+ * \returns Null if it fails, else the found statistics.
+ */
+
+char *
+SearchStatistics(SearchResult *result)
{
- int c = tolower((unsigned char)*needle);
- if (c == '\0')
- return (char *)haystack;
- for (; *haystack; haystack++) {
- if (tolower((unsigned char)*haystack) == c) {
- for (size_t i = 0;;) {
- if (needle[++i] == '\0')
- return (char *)haystack;
- if (tolower((unsigned char)haystack[i]) != tolower((unsigned char)needle[i]))
- break;
- }
- }
- }
- return NULL;
+ DynString buffer;
+ DynString subStats[STATE_COUNT];
+
+ unsigned searched = 0;
+ unsigned discarded = 0;
+ unsigned notfound = 0;
+ unsigned close = 0;
+
+ char *resStat;
+ DynStringMalloc(&buffer, 16);
+
+ for (int i = SEARCHED; i < STATE_COUNT; i++) {
+ DynStringMalloc(subStats + i, 16);
+ }
+
+ 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;
+ 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);
+ }
+ if (close) {
+ DynStringCatStr(&buffer, subStats + CLOSE);
+ }
+ 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);
}
/**
- * Search the library for a keyword string and return the result list
+ * returns number of words in str.
*
- * First the index is searched for the first word and then each "hit" is matched
- * to the entire search string
+ * \param [in] str the string.
*
- * Null, Blank and "*" match all entries
+ * \returns The total number of words.
+ */
+
+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;
+}
+
+/**
+ * Search the library for a keyword string and return the result list
*
- * The list is de-duped of repeat of filenames as the same file might appear in
- * more than once
+ * Each key word exists only once in the index.
*
* \param library IN the library
* \param searchExpression IN keyword to search for
* \param resultEntries IN list header for result list
* \return number of found entries
*/
+
unsigned
-SearchLibrary(TrackLibrary *library, char *searchExpression,
- CatalogEntry *resultEntries)
+SearchLibrary(ParameterLib *library, char *searchExpression,
+ SearchResult *results)
{
- CatalogEntry **entries;
- CatalogEntry * newEntry = resultEntries;
- unsigned entryCount;
-
- char * word;
-
- word = strdup(searchExpression);
-
- //word = strtok(word," \t");
-
- if (library->index == NULL || library->wordCount == 0) {
- return (0);
- }
- entryCount = FindWord(library->index, library->wordCount, word,
- &entries);
- int count= 0;
- if (entryCount) {
- unsigned int i = 0;
- while (i < entryCount) {
- char * match;
- //Check if entire String Matches
- if (!searchExpression || !word || (word[0] == '*') || (word[0] == '\0') ||
- (match = stristr(entries[i]->contents,searchExpression))) {
- CatalogEntry * existingEntry;
- existingEntry = IsExistingContents(resultEntries, entries[i]->contents, TRUE);
- //Same FileName already in one of the entries?
- BOOL_T found = FALSE;
- if (existingEntry) {
- for (unsigned int j=0;j<existingEntry->files;j++) {
- if (!strcmp(existingEntry->fullFileName[j],entries[i]->fullFileName[entries[i]->files-1])) {
- found=TRUE;
+ 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 == TRUE ) {
- i++;
- continue;
+ 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);
}
- UpdateCatalogEntry(existingEntry, entries[i]->fullFileName[(entries[i]->files- 1)],
- entries[i]->contents);
- } else {
- newEntry = InsertInOrder(resultEntries,entries[i]->contents);
- UpdateCatalogEntry(newEntry, entries[i]->fullFileName[(entries[i]->files- 1)],
- entries[i]->contents);
}
- count++;
- }
- i++;
- }
- }
- free(word);
- if (entries)
- free(entries); //Clean-up after search
- return (count);
+ }
+ } 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);
+}
+
+/**
+ * Discard results. The memory allocated with the search is freed
+ *
+ * \param [in] res If non-null, the results.
+ */
+
+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);
+ }
}
/**
- * Get the contents description from a parameter file. Returned string has to be freed after use.
+ * Get the contents description from a parameter file. Returned string has to be MyFree'd after use.
*
* \param file IN xtpfile
* \return pointer to found contents or NULL if not present
@@ -829,10 +988,10 @@ GetParameterFileContent(char *file)
/* if found, store the rest of the line and the filename */
ptr = ptr+strlen(CONTENTSCOMMAND)+1;
ptr = strtok(ptr, "\r\n");
- result = strdup(ptr);
-#ifdef WINDOWS
+ result = MyStrdup(ptr);
+#ifdef UTFCONVERT
ConvertUTF8ToSystem(result);
-#endif // WINDOWS
+#endif // UTFCONVERT
found = true;
}
} else {
@@ -842,5 +1001,105 @@ GetParameterFileContent(char *file)
}
fclose(fh);
}
- return(result);
+ return (result);
+}
+
+/**
+ * Get the first scale values from a parameter file. Returned strings have to be MyFreed after use
+ *
+ * \param file IN xtpfile
+ * \param array of one of three char results (Track, Structure and Car)
+ */
+
+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);
+ 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);
+ 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);
+ 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;
+
+}
+
+#ifdef MEMWATCH
+/** 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();
}
+#endif //MEMWATCH
diff --git a/app/bin/paths.c b/app/bin/paths.c
index 6c6bb10..785ff6f 100644
--- a/app/bin/paths.c
+++ b/app/bin/paths.c
@@ -17,32 +17,20 @@
*
* 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 <string.h>
-#include <assert.h>
-#include <stdarg.h>
-
-#ifdef WINDOWS
-#include <windows.h>
-#endif
-
-#include <wlib.h>
#include <dynstring.h>
#include "track.h"
#include "common.h"
-#include "utility.h"
#include "misc.h"
-#include "i18n.h"
#include "uthash.h"
#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;
@@ -63,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);
}
/**
@@ -77,19 +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);
- HASH_ADD_STR(paths, type, tableEntry);
- }
-
- DynStringCatCStr(&(tableEntry->path), 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);
+#ifdef WINDOWS
+#pragma warning( disable : 4267)
+#endif
+ // This generates warning C4267 on windows
+ HASH_ADD_STR(paths, type, tableEntry);
+ }
+
+ DynStringCatCStr(&(tableEntry->path), path);
}
/**
@@ -104,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);
}
/**
@@ -136,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);
}
/**
@@ -185,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);
}
/**
@@ -204,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, '.');
@@ -231,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 6cd16e6..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,14 +64,17 @@ 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;
}
- strncpy(resultString, source, length);
+ if ( dest ) {
+ strncpy(resultString, source, length);
+ }
+
resultString[ length ] = '\0';
position = length - 1;
@@ -84,9 +87,11 @@ 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;
-} \ No newline at end of file
+}
+
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 b8fbe1e..f969a12 100644
--- a/app/bin/shrtpath.c
+++ b/app/bin/shrtpath.c
@@ -17,11 +17,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 <string.h>
-
#include "shrtpath.h"
#include "track.h"
@@ -36,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 )
@@ -59,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;
}
@@ -78,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");
}
@@ -99,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;
@@ -109,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;
}
@@ -119,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;
@@ -133,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;
@@ -148,12 +150,13 @@ 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 ) {
AddTrackToNode( trk, ep1, ep2, dist );
- dist += GetTrkLength( trk, ep1, -1 ) + GetTrkLength( trk, ep2, -1 );
+ dist += GetTrkLength( trk, ep1, ep2 );
if ( DoShortPathFunc( func, "MATCH", SPTC_MATCH, trk, ep2, ep1, dist, data ) ) {
trk = NULL;
ep1 = -1;
@@ -166,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;
}
@@ -183,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 );
@@ -197,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);
@@ -210,90 +217,98 @@ 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;
pathNode_p pNext;
int pinx=0;
DIST_T minDist;
- int count;
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 );
- count = 0;
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) {
- InfoMessage( "%d", ++count );
-
/* 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);
@@ -306,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 165717f..b106df6 100644
--- a/app/bin/shrtpath.h
+++ b/app/bin/shrtpath.h
@@ -17,25 +17,25 @@
*
* 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
#include "common.h"
-#include "track.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 1fb5965..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,42 +18,23 @@
*
* 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>
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-
-#ifndef WINDOWS
-#include <unistd.h>
-#include <dirent.h>
-#endif
-#ifdef WINDOWS
-#include <io.h>
-#include <windows.h>
-#include <FreeImage.h>
-#else
-#include <sys/stat.h>
-#endif
-
#include "common.h"
#include "custom.h"
#include "draw.h"
#include "fileio.h"
-#include "i18n.h"
#include "misc.h"
#include "paths.h"
#include "param.h"
#include "smalldlg.h"
-#include "wlib.h"
-extern char *sTipF;
-wWin_p aboutW;
+#ifdef WINDOWS
+#include <FreeImage.h>
+#endif
+
+EXPORT wWin_p aboutW;
static wWin_p tipW; /**< window handle for tip dialog */
static long showTipAtStart = 1; /**< flag for visibility */
@@ -68,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, (void*)ShowTip, "prev", PDO_DLGRESETMARGIN, NULL, N_("Previous Tip"), 0L, (void *)(SHOWTIP_FORCESHOW | SHOWTIP_PREVTIP) },
- { PD_BUTTON, (void*)ShowTip, "next", PDO_DLGHORZ, NULL, N_("Next Tip"), 0L, (void *)(SHOWTIP_FORCESHOW | SHOWTIP_NEXTTIP) },
- { PD_TOGGLE, &showTipAtStart, "showatstart", PDO_DLGCMDBUTTON, tipLabels, NULL, BC_NOBORDER }};
+ { 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 }
+};
-static paramGroup_t tipPG = { "tip", 0, tipPLs, sizeof tipPLs/sizeof tipPLs[0] };
+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 )
@@ -87,35 +69,38 @@ static void CreateTipW( void )
char *filename;
char * cp;
- tipW = ParamCreateDialog( &tipPG, MakeWindowTitle(_("Tip of the Day")), _("Ok"), (paramActionOkProc)wHide, wHide, FALSE, NULL, F_RESIZE|F_CENTER, 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;
@@ -123,23 +108,24 @@ static void CreateTipW( void )
while (*cp=='\\') {
/* put LF at end */
*cp++ = '\n';
-
- /* read a line */
- if (!fgets( cp, (sizeof buff) - (cp-buff), tipF )) {
+
+ /* 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 );
@@ -150,19 +136,19 @@ 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
*
*/
-void ShowTip( long flags )
+void ShowTip( void * flagsVP )
{
+ long flags = VP2L(flagsVP);
long tipNum;
-
- if (showTipAtStart || (flags & SHOWTIP_FORCESHOW))
- {
+
+ if (showTipAtStart || (flags & SHOWTIP_FORCESHOW)) {
if (tipW == NULL) {
CreateTipW();
}
@@ -170,24 +156,26 @@ void ShowTip( long flags )
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 );
- }
+ }
}
/*--------------------------------------------------------------------*/
@@ -206,47 +194,68 @@ static paramData_t aboutPLs[] = {
#define COPYRIGHT_T ((wText_p)aboutPLs[I_COPYRIGHT].control)
{ PD_TEXT, NULL, NULL, PDO_DLGRESIZE, &aboutTextData, NULL, BO_READONLY|BT_TOP|BT_CHARUNITS }
};
-static paramGroup_t aboutPG = { "about", 0, aboutPLs, sizeof aboutPLs/sizeof aboutPLs[0] };
+static paramGroup_t aboutPG = { "about", 0, aboutPLs, COUNT( aboutPLs ) };
-/**
+/**
* Create and show the About window.
*/
-void CreateAboutW( void *ptr )
+void CreateAboutW(void *ptr)
{
- char *copyright = sAboutProd;
-
- if( !aboutW ) {
- aboutPLs[I_ABOUTDRAW].winData = wIconCreatePixMap( xtc_xpm );
- ParamRegister( &aboutPG );
- aboutW = ParamCreateDialog( &aboutPG, MakeWindowTitle(_("About")), _("Ok"), (paramActionOkProc)wHide, wHide, FALSE, NULL, F_TOP|F_CENTER, 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." );
- wTextAppend( COPYRIGHT_T, "\nIcons by: Tango Desktop Project (http://tango.freedesktop.org)");
- wTextAppend(COPYRIGHT_T, "\nSome icons by Yusuke Kamiyamane. Licensed under a Creative Commons Attribution 3.0 License.");
- wTextAppend( COPYRIGHT_T, "\nContributions by: Robert Heller, Mikko Nissinen, Timothy M. Shead, Daniel Luis Spagnol" );
- wTextAppend( COPYRIGHT_T, "\nParameter Files by: Ralph Boyd, Dwayne Ward" );
+// 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);
+ 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, "\nParameter Files by: Ralph Boyd, Dwayne Ward\n");
+
+ wTextAppend(COPYRIGHT_T,
+ "\nThe following software is distributed with XTrackCAD\n\n");
#ifdef WINDOWS
- wTextAppend(COPYRIGHT_T, "\n");
wTextAppend(COPYRIGHT_T, FreeImage_GetCopyrightMessage());
+ wTextAppend(COPYRIGHT_T, "\n\n");
#endif
- wTextAppend( COPYRIGHT_T, "\nCornu Algorithm and Implementation by: Raph Levien");
- wTextAppend( COPYRIGHT_T, "\nuthash Copyright notice:" );
- wTextAppend( COPYRIGHT_T, "\nCopyright (c) 2005-2015, Troy D. Hanson http://troydhanson.github.com/uthash/");
- wTextAppend( COPYRIGHT_T, "\nAll rights reserved.");
- }
-
- wShow( aboutW );
-}
+ 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, "\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.");
+ }
+
+ wShow(aboutW);
+}
/*--------------------------------------------------------------------*/
/**
* 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 df54063..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,22 +17,20 @@
*
* 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
#define SMALLDLG_H
-#include "wlib.h"
-
#define SHOWTIP_NEXTTIP (0L)
#define SHOWTIP_PREVTIP (1L)
#define SHOWTIP_FORCESHOW (2L)
-extern wWin_p aboutW;
+extern struct wWin_t * aboutW;
void InitSmallDlg( void );
-void ShowTip( long flags );
+void ShowTip( void * flagsVP );
void CreateAboutW( void *ptr );
#endif
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
new file mode 100644
index 0000000..3dfa621
--- /dev/null
+++ b/app/bin/svgformat.c
@@ -0,0 +1,674 @@
+/** \file svgformat.c
+* Formatting of SVG commands and parameters.
+*/
+
+/* XTrkCad - Model Railroad CAD
+* Copyright (C)2021 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
+*/
+
+#define _USE_MATH_DEFINES
+#include <math.h>
+#include <stdarg.h>
+#include <string.h>
+#include <stdio.h>
+
+#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;
+} 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"
+};
+
+#define LINESTYLECLASSES \
+ ".linedash{ stroke-dasharray: 25px 15px; } \n" \
+ ".linedot{ stroke-dasharray: 5px 10px; } \n" \
+ ".linedashdot{ stroke-dasharray: 25px 10px 5px 10px; } \n" \
+ ".linedashdotdot{ stroke-dasharray: 25px 10px 5px 10px 5px 10px; } \n" \
+ ".linecenter{ stroke-dasharray: 40px 15px 25px 15px; } \n" \
+ ".linephantom{ stroke-dasharray: 40px 15px 25px 15px 25px 15px; } \n"
+
+
+/**
+ * Initialize style cache. Memory is allocated and the default style added
+ */
+
+static void
+SvgInitStyleCache(void)
+{
+ sCssStyle *style;
+
+ 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);
+
+ cacheCount = 1;
+}
+
+static int
+CompareStyle(sCssStyle *a, sCssStyle *b)
+{
+ return (strcmp(DynStringToCStr(&(a->style)), DynStringToCStr(&(b->style))));
+}
+
+/**
+ * Add style to cache. If an identical style definition can be found in the
+ * cache, the class name is returned.
+ * If no previous definition is in the cache, a new one is contructed and
+ * stored in the cache. The new class name is returned
+ *
+ * \param [in] styleDef style definition.
+ *
+ * \returns Null if default style can be used, else the class name
+ */
+
+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
+ }
+}
+
+/**
+ * destroy style cache freeing all memory allocated
+ */
+
+static void
+SvgDestroyStyleCache(void)
+{
+ sCssStyle *style;
+ sCssStyle *tmp;
+
+ LL_FOREACH_SAFE(styleCache, style, tmp) {
+ DynStringFree(&(style->name));
+ DynStringFree(&(style->style));
+ free(style);
+ }
+
+ styleCache = NULL;
+}
+
+/**
+ * Svg create style, add to the cache and the associated CSS class name to the element
+ *
+ * \param element SVG element
+ * \param colorRGB RGB value
+ * \param width line width
+ * \param fill true to fill
+ */
+
+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;
+
+ 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
+ }
+ }
+}
+
+/**
+ * add real unit, ie. units that are specified in pixels. Rounding is performed
+ *
+ * \param [in,out] node If non-null, the node.
+ * \param [in,out] name If non-null, the name.
+ * \param value the dimension in pixels
+ */
+
+static void
+SvgAddRealUnit(mxml_node_t *node, char *name, double value)
+{
+ mxmlElementSetAttrf(node, name, "%d", (int)(value+0.5));
+}
+
+/**
+* Format a dimension and add to XML node as an attribute.
+* A fictional value for the resolution is assumed. As final
+* rendering is done by the client, this is not really relevant.
+*
+* \PARAM [in, out] node the XML node
+* \PARAM [in] name name of attribute
+* \param [in] value size
+*/
+
+static void
+SvgAddCoordinate(mxml_node_t *node, char *name, double value)
+{
+ mxmlElementSetAttrf(node, name, "%d", ROUND2PIXEL(value));
+}
+
+/**
+ * Svg line command
+ * \param [in] svg the svg parent.
+ * \param x0 The x coordinate 0.
+ * \param y0 The y coordinate 0.
+ * \param x1 The first x value.
+ * \param y1 The first y value.
+ * \param w A wDrawWidth to process.
+ * \param c RGB color definition.
+ * \param lineStyle line style.
+ */
+
+void
+SvgLineCommand(SVGParent *svg, double x0,
+ double y0, double x1, double y1, double w, long c, unsigned lineStyle)
+{
+ mxml_node_t *xmlData;
+
+ xmlData = mxmlNewElement(svg, "line");
+
+ // 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);
+}
+
+/**
+ * Svg rectangle command
+ *
+ * \param [in] svg If non-null, the svg.
+ * \param x0 The x coordinate 0.
+ * \param y0 The y coordinate 0.
+ * \param x1 The first x value.
+ * \param y1 The first y value.
+ * \param color The color.
+ * \param fill Specifies the fill options.
+ */
+
+void
+SvgRectCommand(SVGParent *svg, double x0, double y0, double x1, double y1,
+ int color, unsigned lineStyle)
+{
+ mxml_node_t *xmlData;
+
+ xmlData = mxmlNewElement(svg, "rect");
+
+ // 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);
+
+}
+
+/**
+ * Svg polygon line command
+ *
+ * \param [in] svg If non-null, the svg.
+ * \param cnt Number of point.
+ * \param [in] points If non-null, the points.
+ * \param color The line and fill color.
+ * \param width The line width.
+ * \param lineStyle The line style.
+ * \param fill True to fill.
+ */
+
+void
+SvgPolyLineCommand(SVGParent *svg, int cnt, double *points, int color,
+ double width, bool fill, unsigned lineStyle)
+{
+ mxml_node_t *xmlData;
+ DynString pointList;
+ DynString pos;
+
+ 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));
+
+ DynStringCatStr(&pointList, &pos);
+ DynStringClear(&pos);
+ }
+
+ xmlData = mxmlNewElement(svg, "polyline");
+ mxmlElementSetAttr(xmlData, "points", DynStringToCStr(&pointList));
+
+ SvgCreateStyle(xmlData, color, width, fill, lineStyle);
+
+ DynStringFree(&pos);
+ DynStringFree(&pointList);
+}
+
+/**
+ * Format a complete CIRCLE command
+ *
+ * \param [in] svg OUT buffer for the completed command.
+ * \param x x position of center.
+ * \param y y position of center point.
+ * \param r radius.
+ * \param w width
+ * \param c color
+ * \param lineStyle The line style.
+ * \param fill True to fill.
+ */
+
+void
+SvgCircleCommand(SVGParent *svg, double x,
+ double y, double r, double w, long c, bool fill, unsigned lineStyle)
+{
+ mxml_node_t *xmlData;
+
+ xmlData = mxmlNewElement(svg, "circle");
+
+ // line end points
+ SvgAddCoordinate(xmlData, "cx", x);
+ SvgAddCoordinate(xmlData, "cy", y);
+
+ SvgAddCoordinate(xmlData, "r", r);
+
+ SvgCreateStyle(xmlData, c, w, fill, lineStyle);
+
+}
+
+/**
+ * Polar to cartesian
+ *
+ * \param cx x coordinate of center.
+ * \param cy y coordinate of center
+ * \param radius radius.
+ * \param angle angle.
+ * \param [out] px resulting x coordinate
+ * \param [out] py resulting y coordinate
+ */
+
+static void
+PolarToCartesian(double cx, double cy, double radius, double angle, double *px,
+ double *py)
+{
+ double angleInRadians = ((angle) * M_PI) / 180.0;
+
+ *px = cx + (radius * cos(angleInRadians));
+ *py = cy + (radius * sin(angleInRadians));
+}
+
+/**
+ * Format an arc as a SVG path See
+ * https://stackoverflow.com/questions/5736398/how-to-calculate-the-svg-path-for-an-arc-of-a-circle
+ *
+ * \param [in] svg the svg document.
+ * \param x y IN center point.
+ * \param y The y coordinate.
+ * \param r IN radius.
+ * \param a0 IN starting angle.
+ * \param a1 IN ending angle.
+ * \param center IN draw center mark if true.
+ * \param w line width.
+ * \param c line color.
+ * \param lineStyle line style.
+ */
+
+void
+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);
+}
+
+/**
+ * Create SVG text command
+ *
+ * \param [in] svg If non-null, the svg.
+ * \param x The x coordinate.
+ * \param y The y coordinate.
+ * \param size The fontsize.
+ * \param c the text color
+ * \param [in] text text in UTF-8 format
+ */
+
+void
+SvgTextCommand(SVGParent *svg, double x,
+ double y, double size, long c, char *text)
+{
+ mxml_node_t *xmlData;
+
+ xmlData = mxmlNewElement(svg, "text");
+ // starting point
+ SvgAddCoordinate(xmlData, "x", x);
+ SvgAddCoordinate(xmlData, "y", y);
+
+ SvgCreateStyle(xmlData, c, 1, 1, 0);
+
+ SvgAddRealUnit(xmlData, "font-size", size);
+
+ mxmlNewText(xmlData, false, text);
+}
+
+/**
+ * Add title to SVG document
+ *
+ * \param [in] svg svg
+ * \param [in] title If non-null, the title.
+ */
+
+void
+SvgAddTitle(SVGParent *svg, char *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);
+ }
+}
+
+/**
+ * Add CSS style definitions to the SVG file. CSS definitions are
+ * created from the options of the drawing commands. As a final step
+ * in creation of the SVG file, these definitions have to be added.
+ * For compatibility reasons the styles have to be defined before
+ * first use.
+ *
+ * \param [in] svg the svg.
+ */
+
+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);
+}
+
+/**
+ * Svg create document
+ *
+ * \returns An XMLDocument.
+ */
+
+SVGDocument *
+SvgCreateDocument()
+{
+ SvgInitStyleCache();
+
+ return ((SVGDocument *)mxmlNewXML("1.0"));
+}
+
+/**
+ * Svg destroy document freeing the memory used by the XML tree
+ *
+ * \param [in] xml the XML document
+ */
+
+void
+SvgDestroyDocument(SVGDocument *xml)
+{
+ mxmlDelete((mxml_node_t *)xml);
+
+ SvgDestroyStyleCache();
+}
+
+/**
+ * Create the complete prologue for a SVG file.
+ *
+ * \param [in] parent the document handle.
+ * \param [in] id If non-null, the identifier.
+ * \param layerCount IN count of defined layers.
+ * \param x0 y0 IN minimum (left bottom) position.
+ * \param y0 y1 IN maximum (top right) position.
+ * \param x1 The first x value.
+ * \param y1 The first y value.
+ *
+ * \returns Null if it fails, else a pointer to a SVGParent.
+ */
+
+SVGParent *
+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);
+}
+
+/**
+ * Add formatting to the resulting document by adding whitespace
+ *
+ * \param node to be formatted
+ * \param see minixml docu, position in XML tag
+ *
+ * \returns Null if it no character to add, else a pointer to the additional chars.
+ */
+
+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);
+}
+
+/**
+ * Svg save file
+ *
+ * \param [in] svg the svg document.
+ * \param [in] filename filename of the file.
+ *
+ * \returns True if it succeeds, false if it fails.
+ */
+
+bool
+SvgSaveFile(SVGDocument *svg, char *filename)
+{
+ FILE *svgF;
+
+ svgF = fopen(filename, "w");
+ if (svgF) {
+ mxmlSetWrapMargin(0);
+ mxmlSaveFile(svg, svgF, whitespace_cb);
+ fclose(svgF);
+
+ return (true);
+ }
+ return (false);
+}
diff --git a/app/bin/svgoutput.c b/app/bin/svgoutput.c
new file mode 100644
index 0000000..e4ff66b
--- /dev/null
+++ b/app/bin/svgoutput.c
@@ -0,0 +1,490 @@
+/** \file svgoutput.c
+ * Exporting SVG files
+*/
+
+/* XTrkCad - 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 <stdio.h>
+#include <string.h>
+#include <time.h>
+#ifdef WINDOWS
+#include <io.h>
+#define UTFCONVERT
+#else
+#include <errno.h>
+#endif
+
+#include <xtrkcad-config.h>
+#include <locale.h>
+#include <mxml.h>
+#include <dynstring.h>
+
+#include "cselect.h"
+#include "custom.h"
+#include "draw.h"
+#include "include/svgformat.h"
+#include "fileio.h"
+#include "i18n.h"
+#include "layout.h"
+#include "messages.h"
+#include "paths.h"
+#include "track.h"
+#include "include/utf8convert.h"
+#include "utility.h"
+#include "wlib.h"
+
+static struct wFilSel_t * exportSVGFile_fs;
+static coOrd roomSize;
+
+static int svgLineWidth[4] = {10, 10, 20, 30};
+
+/**
+ * get line style for element
+ *
+ * \param d drawCmd_p to process.
+ *
+ * \returns the line style
+ */
+
+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);
+}
+
+/**
+ * Svg draw line
+ *
+ * \param d A drawCmd_p to process.
+ * \param p0 The p 0.
+ * \param p1 The first coOrd.
+ * \param width The width.
+ * \param color The color.
+ */
+
+static void SvgDrawLine(
+ drawCmd_p d,
+ coOrd p0,
+ coOrd p1,
+ wDrawWidth width,
+ wDrawColor color)
+{
+ unsigned lineOpt = SvgDrawGetLineStyle(d);
+
+ 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);
+}
+
+/**
+ * Svg draw arc
+ *
+ * \param d A drawCmd_p to process.
+ * \param p A coOrd to process.
+ * \param r A DIST_T to process.
+ * \param angle0 The angle 0.
+ * \param angle1 The first angle.
+ * \param drawCenter The draw center.
+ * \param width The width.
+ * \param color The color.
+ */
+
+static void SvgDrawArc(
+ 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);
+ 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);
+ }
+
+}
+
+/**
+ * Svg draw string. Perform conversion to UTF-8 if required.
+ *
+ * \param d A drawCmd_p to process.
+ * \param p position of text
+ * \param a text angle
+ * \param [in,out] s the string
+ * \param fp font definition (ignored)
+ * \param fontSize Size of the font.
+ * \param color color.
+ */
+
+static void SvgDrawString(
+ drawCmd_p d,
+ coOrd p,
+ ANGLE_T a,
+ char * s,
+ wFont_p fp,
+ FONTSIZE_T fontSize,
+ wDrawColor color)
+{
+ char *text = MyStrdup(s);
+
+#ifdef UTFCONVERT
+ text = Convert2UTF8(text);
+#endif // UTFCONVERT
+
+ SvgTextCommand((SVGParent *)(d->d),
+ p.x,
+ roomSize.y - p.y,
+ fontSize,
+ wDrawGetRGB(color),
+ text);
+
+ MyFree(text);
+}
+
+/**
+ * Svg draw bitmap
+ *
+ * \param d A drawCmd_p to process.
+ * \param p A coOrd to process.
+ * \param bm The bm.
+ * \param color The color.
+ */
+
+static void SvgDrawBitmap(
+ drawCmd_p d,
+ coOrd p,
+ wDrawBitMap_p bm,
+ wDrawColor color)
+{
+}
+
+/**
+ * Svg draw fill polygon
+ *
+ * \param d A drawCmd_p to process.
+ * \param cnt Number of points in polyline.
+ * \param [in,out] pts the coordinates
+ * \param [in,out] pointer If non-null, the pointer.
+ * \param color color.
+ * \param width line width.
+ * \param fillStyle fill style.
+ */
+
+static void SvgDrawFillPoly(
+ 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));
+ 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);
+}
+
+/**
+ * Svg draw filled circle
+ *
+ * \param d A drawCmd_p to process.
+ * \param center The center.
+ * \param radius The radius.
+ * \param color The fill color.
+ */
+
+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);
+}
+
+/**
+ * Svg draw rectangle
+ *
+ * \param d A drawCmd_p to process.
+ * \param corner1 The first corner.
+ * \param corner2 The second corner.
+ * \param color The color.
+ * \param pattern Specifies the pattern.
+ */
+
+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);
+}
+
+static drawFuncs_t svgDrawFuncs = {
+ 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
+};
+
+/**
+ * Creates valid identifier from a string. Whitespaces are removed
+ * and characters are prepended to make sure the i starts with
+ * valid chars.
+ * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/id
+ *
+ * \param [in,out] base the base for the id.
+ *
+ * \returns Null if it fails, else the new valid identifier.
+ */
+
+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);
+}
+
+/**
+ * get a valid identifier for SVG export
+ *
+ * \returns Null if it fails, else a pointer to a char.
+ */
+
+static char * SvgGetId(void)
+{
+ char *fileName = GetLayoutFilename();
+ char *id = NULL;
+
+ if (fileName) {
+ id = CreateValidId(fileName);
+#ifdef UTFCONVERT
+ id = Convert2UTF8(id);
+#endif
+ }
+
+ return (id);
+}
+
+/**
+ * Set title for SVG file
+ * The first title line of the design is used and stored in the SVG file
+ *
+ * \param d A drawCmd_p to process.
+ */
+
+static void SvgSetTitle(drawCmd_p d)
+{
+ char *tmp = GetLayoutTitle();
+ char *title;
+
+ if (tmp) {
+ title = MyStrdup(tmp);
+#ifdef UTFCONVERT
+ title = Convert2UTF8(title);
+#endif
+ SvgAddTitle((SVGParent *)(d->d), title);
+ MyFree(title);
+ }
+
+}
+
+/**
+ * Executes the export tracks to SVG operation
+ *
+ * \param cnt Number of filenames, has to be 1
+ * \param [in] fileName filename of the export file.
+ * \param [in] data If non-null, the data.
+ *
+ * \returns TRUE on success, FALSE on failure
+ */
+
+static int DoExportSVGTracks(
+ int cnt,
+ char ** fileName,
+ void * data)
+{
+ DynString command = NaS;
+ SVGDocument *svg;
+ SVGParent *svgData;
+ BOOL_T all = (selectedTrackCount == 0);
+ char *id;
+
+ CHECK(fileName != NULL);
+ CHECK(cnt == 1);
+
+ SetCLocale();
+ GetLayoutRoomSize(&roomSize);
+
+ SetCurrentPath(SVGPATHKEY, fileName[ 0 ]);
+
+ svg = SvgCreateDocument();
+ id = SvgGetId();
+ svgData = SvgPrologue(svg, id, 0, 0.0, 0.0, roomSize.x, roomSize.y);
+ MyFree(id);
+
+ wSetCursor(mainD.d, wCursorWait);
+// time(&clock);
+
+ 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 * unused)
+{
+ // CHECK(selectedTrackCount > 0);
+
+ if (exportSVGFile_fs == NULL)
+ exportSVGFile_fs = wFilSelCreate(mainW, FS_SAVE, 0, _("Export to SVG"),
+ sSVGFilePattern, DoExportSVGTracks, NULL);
+
+ wFilSelect(exportSVGFile_fs, GetCurrentPath(SVGPATHKEY));
+}
+
+
diff --git a/app/bin/tbezier.c b/app/bin/tbezier.c
index fc949a2..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)
@@ -41,26 +41,21 @@
#include "ccurve.h"
#include "cstraigh.h"
#include "cjoin.h"
-#include "utility.h"
-#include "i18n.h"
#include "param.h"
-#include "math.h"
-#include "string.h"
#include "cundo.h"
#include "layout.h"
#include "fileio.h"
-#include "assert.h"
EXPORT TRKTYP_T T_BEZIER = -1;
EXPORT TRKTYP_T T_BZRLIN = -1;
-struct extraData {
- BezierData_t bezierData;
- };
-
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);
/****************************************
*
@@ -71,32 +66,36 @@ static DIST_T GetLengthBezier( track_p );
/*
* Run after any changes to the Bezier points
*/
-EXPORT void FixUpBezier(coOrd pos[4], struct extraData* xx, BOOL_T track) {
- xx->bezierData.a0 = NormalizeAngle(FindAngle(pos[1], pos[0]));
- xx->bezierData.a1 = NormalizeAngle(FindAngle(pos[2], pos[3]));
-
- ConvertToArcs(pos, &xx->bezierData.arcSegs, track, xx->bezierData.segsColor,
- xx->bezierData.segsWidth);
- xx->bezierData.minCurveRadius = BezierMinRadius(pos,
- xx->bezierData.arcSegs);
- xx->bezierData.length = BezierLength(pos, xx->bezierData.arcSegs);
+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->segsLineWidth);
+ xx->minCurveRadius = BezierMinRadius(pos,
+ 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);
}
@@ -104,118 +103,157 @@ 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 extraData * xx )
+static void ComputeBezierBoundingBox( track_p trk,
+ struct extraDataBezier_t * xx )
{
- coOrd hi, lo;
- hi.x = lo.x = xx->bezierData.pos[0].x;
- hi.y = lo.y = xx->bezierData.pos[0].y;
-
- for (int i=1; i<=3;i++) {
- hi.x = hi.x < xx->bezierData.pos[i].x ? xx->bezierData.pos[i].x : hi.x;
- hi.y = hi.y < xx->bezierData.pos[i].y ? xx->bezierData.pos[i].y : hi.y;
- lo.x = lo.x > xx->bezierData.pos[i].x ? xx->bezierData.pos[i].x : lo.x;
- lo.y = lo.y > xx->bezierData.pos[i].y ? xx->bezierData.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)
{
- struct extraData *xx = GetTrkExtraData(trk);
coOrd p1;
- if (hidden) *hidden = FALSE;
- if ( GetTrkType( trk ) != T_BEZIER || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0 ) && !show_hidden))
- return 100000;
-
- coOrd offset = xx->bezierData.descriptionOff;
+ 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 ) offset = zero;
+ coOrd end0, end0off, end1, end1off;
+ end0 = xx->pos[0];
+ end1 = xx->pos[3];
+ ANGLE_T a;
+ a = FindAngle(end0,end1);
+ Translate(&end0off,end0,a+90,xx->descriptionOff.y);
+ Translate(&end1off,end1,a+90,xx->descriptionOff.y);
- p1.x = xx->bezierData.pos[0].x + ((xx->bezierData.pos[3].x-xx->bezierData.pos[0].x)/2) + offset.x;
- p1.y = xx->bezierData.pos[0].y + ((xx->bezierData.pos[3].y-xx->bezierData.pos[0].y)/2) + offset.y;
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
+ 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); }
*dpos = p1;
+
+ coOrd tpos = 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 extraData *xx = GetTrkExtraData(trk);
- wFont_p fp;
- coOrd pos;
+ 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;
- pos.x = xx->bezierData.pos[0].x + ((xx->bezierData.pos[3].x - xx->bezierData.pos[0].x)/2);
- pos.y = xx->bezierData.pos[0].y + ((xx->bezierData.pos[3].y - xx->bezierData.pos[0].y)/2);
- pos.x += xx->bezierData.descriptionOff.x;
- pos.y += xx->bezierData.descriptionOff.y;
- fp = wStandardFont( F_TIMES, FALSE, FALSE );
- sprintf( message, _("Bezier: len=%0.2f min_rad=%0.2f"),
- xx->bezierData.length, xx->bezierData.minCurveRadius>10000?0.0:xx->bezierData.minCurveRadius);
- DrawBoxedString( BOX_BOX, d, pos, message, fp, (wFontSize_t)descriptionFontSize, color, 0.0 );
+ }
+
+
+ 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 )
{
- struct extraData *xx = GetTrkExtraData(trk);
- static coOrd p0,p1;
- static BOOL_T editState = FALSE;
-
- if (GetTrkType(trk) != T_BEZIER) return C_TERMINATE;
- p0.x = xx->bezierData.pos[0].x + ((xx->bezierData.pos[3].x - xx->bezierData.pos[0].x)/2);
- p0.y = xx->bezierData.pos[0].y + ((xx->bezierData.pos[3].y - xx->bezierData.pos[0].y)/2);
- switch (action) {
- case C_DOWN:
- DrawBezierDescription( trk, &mainD, wDrawColorWhite );
- case C_MOVE:
- case C_UP:
- editState = TRUE;
- p1 = pos;
- xx->bezierData.descriptionOff.x = pos.x - p0.x;
- xx->bezierData.descriptionOff.y = pos.y - p0.y;
- if (action == C_UP) {
- editState = FALSE;
- wDrawColor color = GetTrkColor( trk, &mainD );
- DrawBezierDescription( trk, &mainD, color );
- }
- return action==C_UP?C_TERMINATE:C_CONTINUE;
- case C_REDRAW:
- if (editState) {
- DrawBezierDescription( trk, &tempD, wDrawColorBlue );
- DrawLine( &tempD, p1, p0, 0, wDrawColorBlue );
- }
- break;
+// static coOrd p0,p1;
+// static BOOL_T editState = FALSE;
+
+ 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;
+ end0 = xx->pos[0];
+ end1 = xx->pos[3];
+ 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; }
-
- }
return C_CONTINUE;
}
@@ -226,166 +264,189 @@ 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 extraData *xx = GetTrkExtraData(trk);
+ 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:
- if (GetTrkEndTrk(trk,0)) break;
- updateEndPts = TRUE;
- xx->bezierData.pos[0] = bezData.pos[0];
- bezDesc[P0].mode |= DESC_CHANGE;
- /* no break */
- case P1:
- if (GetTrkEndTrk(trk,0) && GetTrkEndTrk(trk,1)) break;
- updateEndPts = TRUE;
- xx->bezierData.pos[3]= bezData.pos[3];
- bezDesc[P1].mode |= DESC_CHANGE;
- break;
- case A0:
- case A1:
- break;
- case CP1:
- if (GetTrkEndTrk(trk,0)) {
- angle1 = NormalizeAngle(GetTrkEndAngle(trk,0));
- angle2 = NormalizeAngle(FindAngle(bezData.pos[1], xx->bezierData.pos[0])-angle1);
- if (angle2 > 90.0 && angle2 < 270.0)
- Translate( &bezData.pos[1], xx->bezierData.pos[0], angle1, -FindDistance( xx->bezierData.pos[0], bezData.pos[1] )*cos(D2R(angle2)));
- }
- xx->bezierData.pos[1] = bezData.pos[1];
- bezDesc[CP1].mode |= DESC_CHANGE;
- updateEndPts = TRUE;
- break;
- case CP2:
- if (GetTrkEndTrk(trk,1)) {
- angle1 = NormalizeAngle(GetTrkEndAngle(trk,1));
- angle2 = NormalizeAngle(FindAngle(bezData.pos[2], xx->bezierData.pos[3])-angle1);
- if (angle2 > 90.0 && angle2 < 270.0)
- Translate( &bezData.pos[2], xx->bezierData.pos[3], angle1, -FindDistance( xx->bezierData.pos[3], bezData.pos[0] )*cos(D2R(angle2)));
- }
- xx->bezierData.pos[2] = bezData.pos[2];
- bezDesc[CP2].mode |= DESC_CHANGE;
- updateEndPts = TRUE;
- break;
- case Z0:
+ 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]; }
+ }
+ }
+ 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]; }
+ }
+ }
+ 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->bezierData.segsWidth = bezData.width/mainD.dpi;
+ xx->segsLineWidth = bezData.lineWidth;
break;
case CO:
- xx->bezierData.segsColor = bezData.color;
+ xx->segsColor = bezData.color;
break;
case LT:
- xx->bezierData.lineType = bezData.lineType;
+ xx->lineType = bezData.lineType;
break;
default:
- AbortProg( "updateBezier: Bad inx %d", inx );
+ CHECKMSG( FALSE, ( "updateBezier: Bad inx %d", inx ) );
}
- ConvertToArcs(xx->bezierData.pos, &xx->bezierData.arcSegs, IsTrack(trk)?TRUE:FALSE, xx->bezierData.segsColor, xx->bezierData.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->bezierData.pos[i],&params);
- bezData.radius[i] = params.arcR;
- bezData.center[i] = params.arcP;
- }
- if (updateEndPts) {
- 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->bezierData.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->bezierData.pos[1],&params);
- bezData.radius[1] = params.arcR;
- bezData.center[1] = 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;
}
-
- FixUpBezier(xx->bezierData.pos, xx, IsTrack(trk));
+ 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;
+ }
+ }
+ FixUpBezier(xx->pos, xx, IsTrack(trk));
ComputeBezierBoundingBox(trk, xx);
DrawNewTrack( trk );
}
static void DescribeBezier( track_p trk, char * str, CSIZE_T len )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
DIST_T d;
- int fix0, fix1 = 0;
-
- d = xx->bezierData.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->bezierData.minCurveRadius),
- FormatDistance(d),
- PutDim(xx->bezierData.pos[0].x),PutDim(xx->bezierData.pos[0].y),
- PutDim(xx->bezierData.pos[3].x),PutDim(xx->bezierData.pos[3].y),
- PutDim(xx->bezierData.pos[1].x),PutDim(xx->bezierData.pos[1].y),
- PutDim(xx->bezierData.pos[2].x),PutDim(xx->bezierData.pos[2].y));
+ 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));
if (GetTrkType(trk) == T_BEZIER) {
fix0 = GetTrkEndTrk(trk,0)!=NULL;
@@ -393,48 +454,48 @@ static void DescribeBezier( track_p trk, char * str, CSIZE_T len )
}
bezData.length = GetLengthBezier(trk);
- bezData.minRadius = xx->bezierData.minCurveRadius;
- if (bezData.minRadius >= 100000.00) bezData.minRadius = 0;
- bezData.layerNumber = GetTrkLayer(trk);
- bezData.pos[0] = xx->bezierData.pos[0];
- bezData.pos[1] = xx->bezierData.pos[1];
- bezData.pos[2] = xx->bezierData.pos[2];
- bezData.pos[3] = xx->bezierData.pos[3];
- bezData.angle[0] = xx->bezierData.a0;
- bezData.angle[1] = xx->bezierData.a1;
- trackParams_t params;
- GetTrackParams(PARAMS_CORNU,trk,xx->bezierData.pos[0],&params);
- bezData.radius[0] = params.arcR;
- bezData.center[0] = params.arcP;
- GetTrackParams(PARAMS_CORNU,trk,xx->bezierData.pos[3],&params);
- bezData.radius[1] = params.arcR;
- bezData.center[1] = params.arcP;
-
- if (GetTrkType(trk) == T_BEZIER) {
+ 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) {
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->bezierData.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;
@@ -442,56 +503,58 @@ 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->bezierData.segsWidth*mainD.dpi+0.5);
+ bezData.lineWidth = xx->segsLineWidth;
bezDesc[WI].mode = GetTrkType(trk) == T_BEZIER?DESC_IGNORE:0;
- bezData.color = xx->bezierData.segsColor;
+ 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 );
- wListAddValue( (wList_p)bezDesc[LT].control0, _("Solid"), NULL, (void*)0 );
- wListAddValue( (wList_p)bezDesc[LT].control0, _("Dash"), NULL, (void*)1 );
- wListAddValue( (wList_p)bezDesc[LT].control0, _("Dot"), NULL, (void*)2 );
- wListAddValue( (wList_p)bezDesc[LT].control0, _("DashDot"), NULL, (void*)3 );
- wListAddValue( (wList_p)bezDesc[LT].control0, _("DashDotDot"), NULL, (void*)4 );
- wListAddValue( (wList_p)bezDesc[LT].control0, _("CenterDot"), NULL, (void*)5);
- wListAddValue( (wList_p)bezDesc[LT].control0, _("PhantomDot"), NULL, (void*)6 );
+ wListAddValue( (wList_p)bezDesc[LT].control0, _("Solid"), NULL, I2VP(0));
+ wListAddValue( (wList_p)bezDesc[LT].control0, _("Dash"), NULL, I2VP(1));
+ wListAddValue( (wList_p)bezDesc[LT].control0, _("Dot"), NULL, I2VP(2));
+ wListAddValue( (wList_p)bezDesc[LT].control0, _("DashDot"), NULL, I2VP(3));
+ wListAddValue( (wList_p)bezDesc[LT].control0, _("DashDotDot"), NULL, I2VP(4));
+ wListAddValue( (wList_p)bezDesc[LT].control0, _("CenterDot"), NULL, I2VP(5));
+ wListAddValue( (wList_p)bezDesc[LT].control0, _("PhantomDot"), NULL, I2VP(6));
wListSetIndex( (wList_p)bezDesc[LT].control0, bezData.lineType );
}
}
}
-EXPORT void SetBezierLineType( track_p trk, int width ) {
+EXPORT void SetBezierLineType( track_p trk, int width )
+{
if (GetTrkType(trk) == T_BZRLIN) {
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_BZRLIN,
+ extraDataBezier_t);
switch(width) {
case 0:
- xx->bezierData.lineType = DRAWLINESOLID;
+ xx->lineType = DRAWLINESOLID;
break;
case 1:
- xx->bezierData.lineType = DRAWLINEDASH;
+ xx->lineType = DRAWLINEDASH;
break;
case 2:
- xx->bezierData.lineType = DRAWLINEDOT;
+ xx->lineType = DRAWLINEDOT;
break;
case 3:
- xx->bezierData.lineType = DRAWLINEDASHDOT;
+ xx->lineType = DRAWLINEDASHDOT;
break;
case 4:
- xx->bezierData.lineType = DRAWLINEDASHDOTDOT;
+ xx->lineType = DRAWLINEDASHDOTDOT;
break;
case 5:
- xx->bezierData.lineType = DRAWLINECENTER;
+ xx->lineType = DRAWLINECENTER;
break;
case 6:
- xx->bezierData.lineType = DRAWLINEPHANTOM;
+ xx->lineType = DRAWLINEPHANTOM;
break;
}
}
@@ -499,104 +562,103 @@ EXPORT void SetBezierLineType( track_p trk, int width ) {
static DIST_T DistanceBezier( track_p t, coOrd * p )
{
- struct extraData *xx = GetTrkExtraData(t);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(t, T_NOTRACK, extraDataBezier_t);
- DIST_T d = 100000.0;
- coOrd p2 = xx->bezierData.pos[0]; //Set initial point
+ DIST_T d = DIST_INF;
+ coOrd p2 = xx->pos[0]; //Set initial point
segProcData_t segProcData;
- for (int i = 0;i<xx->bezierData.arcSegs.cnt;i++) {
+ for (int i = 0; i<xx->arcSegs.cnt; i++) {
segProcData.distance.pos1 = * p;
- SegProc(SEGPROC_DISTANCE,&DYNARR_N(trkSeg_t,xx->bezierData.arcSegs,i),&segProcData);
+ SegProc(SEGPROC_DISTANCE,&DYNARR_N(trkSeg_t,xx->arcSegs,i),&segProcData);
if (segProcData.distance.dd<d) {
d = segProcData.distance.dd;
p2 = segProcData.distance.pos1;
}
}
- * p = p2;
+ * p = p2;
return d;
}
static void DrawBezier( track_p t, drawCmd_p d, wDrawColor color )
{
- struct extraData *xx = GetTrkExtraData(t);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(t, T_NOTRACK, extraDataBezier_t);
long widthOptions = DTS_LEFT|DTS_RIGHT;
if (GetTrkType(t) == T_BZRLIN) {
unsigned long NotSolid = ~(DC_NOTSOLIDLINE);
d->options &= NotSolid;
- if (xx->bezierData.lineType == DRAWLINESOLID) {}
- else if (xx->bezierData.lineType == DRAWLINEDASH) d->options |= DC_DASH;
- else if (xx->bezierData.lineType == DRAWLINEDOT) d->options |= DC_DOT;
- else if (xx->bezierData.lineType == DRAWLINEDASHDOT) d->options |= DC_DASHDOT;
- else if (xx->bezierData.lineType == DRAWLINEDASHDOTDOT) d->options |= DC_DASHDOTDOT;
- else if (xx->bezierData.lineType == DRAWLINECENTER) d->options |= DC_CENTER;
- else if (xx->bezierData.lineType == DRAWLINEPHANTOM) d->options |= DC_PHANTOM;
- DrawSegsO(d,t,zero,0.0,xx->bezierData.arcSegs.ptr,xx->bezierData.arcSegs.cnt, 0.0, color, 0);
+ 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; }
+ 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->bezierData.arcSegs.ptr,xx->bezierData.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 );
}
static void DeleteBezier( track_p t )
{
- struct extraData *xx = GetTrkExtraData(t);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(t, T_NOTRACK, extraDataBezier_t);
- for (int i=0;i<xx->bezierData.arcSegs.cnt;i++) {
- trkSeg_t s = DYNARR_N(trkSeg_t,xx->bezierData.arcSegs,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->bezierData.arcSegs.ptr && !xx->bezierData.arcSegs.max)
- MyFree(xx->bezierData.arcSegs.ptr);
- xx->bezierData.arcSegs.max = 0;
- xx->bezierData.arcSegs.cnt = 0;
- xx->bezierData.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 extraData *xx = GetTrkExtraData(t);
+ 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->bezierData.segsColor), xx->bezierData.segsWidth,
- GetTrkScaleName(t), GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0),
- xx->bezierData.pos[0].x, xx->bezierData.pos[0].y,
- xx->bezierData.pos[1].x, xx->bezierData.pos[1].y,
- xx->bezierData.pos[2].x, xx->bezierData.pos[2].y,
- xx->bezierData.pos[3].x, xx->bezierData.pos[3].y,
- xx->bezierData.lineType,
- xx->bezierData.descriptionOff.x, xx->bezierData.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->bezierData.arcSegs.cnt, xx->bezierData.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;
}
static BOOL_T ReadBezier( char * line )
{
- struct extraData *xx;
+ struct extraDataBezier_t *xx;
track_p t;
wIndex_t index;
BOOL_T visible;
@@ -605,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 = GetTrkExtraData(t);
+ 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 ( ( options & 0x80 ) == 0 ) SetTrkBits(t,TB_HIDEDESC);
- xx->bezierData.pos[0] = p0;
- xx->bezierData.pos[1] = c1;
- xx->bezierData.pos[2] = c2;
- xx->bezierData.pos[3] = p1;
- xx->bezierData.lineType = lt;
- xx->bezierData.descriptionOff = dp;
- xx->bezierData.segsWidth = width;
- xx->bezierData.segsColor = wDrawFindColor( rgb );
- FixUpBezier(xx->bezierData.pos,xx,GetTrkType(t) == T_BEZIER);
- ComputeBezierBoundingBox(t,xx);
- if (GetTrkType(t) == T_BEZIER) {
+ 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->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 extraData *xx = GetTrkExtraData(trk);
- for (int i=0;i<4;i++) {
- xx->bezierData.pos[i].x += orig.x;
- xx->bezierData.pos[i].y += orig.y;
- }
- FixUpBezier(xx->bezierData.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 extraData *xx = GetTrkExtraData(trk);
- for (int i=0;i<5;i++) {
- Rotate( &xx->bezierData.pos[i], orig, angle );
- }
- FixUpBezier(xx->bezierData.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 extraData *xx = GetTrkExtraData(trk);
- xx->bezierData.pos[0].x *= ratio;
- xx->bezierData.pos[0].y *= ratio;
- xx->bezierData.pos[1].x *= ratio;
- xx->bezierData.pos[1].y *= ratio;
- xx->bezierData.pos[2].x *= ratio;
- xx->bezierData.pos[2].y *= ratio;
- xx->bezierData.pos[3].x *= ratio;
- xx->bezierData.pos[3].y *= ratio;
- FixUpBezier(xx->bezierData.pos,xx,IsTrack(trk));
- ComputeBezierBoundingBox(trk,xx);
+ 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);
}
-EXPORT void AdjustBezierEndPt( track_p trk, EPINX_T inx, coOrd pos ) {
- struct extraData *xx = GetTrkExtraData(trk);
- UndoModify(trk);
- if (inx ==0 ) {
- xx->bezierData.pos[1].x += -xx->bezierData.pos[0].x+pos.x;
- xx->bezierData.pos[1].y += -xx->bezierData.pos[0].y+pos.y;
- xx->bezierData.pos[0] = pos;
- }
- else {
- xx->bezierData.pos[2].x += -xx->bezierData.pos[3].x+pos.x;
- xx->bezierData.pos[2].y += -xx->bezierData.pos[3].y+pos.y;
- xx->bezierData.pos[3] = pos;
- }
- FixUpBezier(xx->bezierData.pos, xx, IsTrack(trk));
- ComputeBezierBoundingBox(trk,xx);
- SetTrkEndPoint( trk, inx, pos, inx==0?xx->bezierData.a0:xx->bezierData.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 extraData *xx = GetTrkExtraData(trk);
+ 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->bezierData.pos, 500, &t); //Find t value
-
- for (int i=0;i<4;i++) {
- current[i] = xx->bezierData.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->bezierData.segsColor,xx->bezierData.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->bezierData.pos[i] = ep?newl[i]:newr[i];
- }
- FixUpBezier(xx->bezierData.pos,xx,track);
- ComputeBezierBoundingBox(trk,xx);
- SetTrkEndPoint( trk, ep, xx->bezierData.pos[ep?3:0], ep?xx->bezierData.a1:xx->bezierData.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;
@@ -768,30 +843,33 @@ static int log_bezierSegments = 0;
*/
static BOOL_T TraverseBezier( traverseTrack_p trvTrk, DIST_T * distR )
{
- track_p trk = trvTrk->trk;
- struct extraData *xx = GetTrkExtraData(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;
BOOL_T segs_backwards= FALSE;
- DIST_T d = 10000;
+ DIST_T d = DIST_INF;
coOrd pos2 = trvTrk->pos;
ANGLE_T a1,a2;
int inx,segInx = 0;
EPINX_T ep;
BOOL_T back,neg;
- trkSeg_p segPtr = (trkSeg_p)xx->bezierData.arcSegs.ptr;
+ trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->arcSegs,0);
a2 = GetAngleSegs( //Find correct Segment and nearest point in it
- xx->bezierData.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 {
@@ -804,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->bezierData.arcSegs.cnt) {
- segPtr = (trkSeg_p)xx->bezierData.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!!
+ while (inx >=0 && inx<xx->arcSegs.cnt) {
+ 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?
@@ -830,117 +917,108 @@ 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 )
{
- struct extraData *xx0 = GetTrkExtraData(trk0);
- struct extraData *xx1 = GetTrkExtraData(trk1);
- track_p trk2 = NULL;
- EPINX_T ep2=-1;
- BOOL_T tracks = FALSE;
-
- if (IsTrack(trk0) && IsTrack(trk1) ) tracks = TRUE;
- if (GetTrkType(trk0) != GetTrkType(trk1)) return FALSE;
-
- if (ep0 == ep1)
- return FALSE;
-
- UndoStart( _("Merge Bezier"), "MergeBezier( T%d[%d] T%d[%d] )", GetTrkIndex(trk0), ep0, GetTrkIndex(trk1), ep1 );
- UndoModify( trk0 );
- UndrawNewTrack( trk0 );
- if (tracks) {
- trk2 = GetTrkEndTrk( trk1, 1-ep1 );
- if (trk2) {
- ep2 = GetEndPtConnectedToMe( trk2, trk1 );
- DisconnectTracks( trk1, 1-ep1, trk2, ep2 );
- }
- }
- if (ep0 == 0) {
- xx0->bezierData.pos[3] = xx1->bezierData.pos[3];
- xx0->bezierData.pos[2] = xx1->bezierData.pos[2];
- } else {
- xx0->bezierData.pos[0] = xx1->bezierData.pos[0];
- xx0->bezierData.pos[1] = xx1->bezierData.pos[1];
- }
- FixUpBezier(xx0->bezierData.pos,xx0,tracks);
- ComputeBezierBoundingBox(trk0,xx0);
- DeleteTrack( trk1, FALSE );
- if (tracks && trk2) {
- if (ep0 == 1)
- SetTrkEndPoint( trk2, 1, xx0->bezierData.pos[0], xx0->bezierData.a0);
- else
- SetTrkEndPoint( trk2, 2, xx0->bezierData.pos[3], xx0->bezierData.a1);
- ConnectTracks( trk0, ep0, trk2, ep2 );
- }
- DrawNewTrack( trk0 );
-
- return TRUE;
+ return FALSE;
}
static BOOL_T EnumerateBezier( track_p trk )
{
- if (trk != NULL) {
+ if ((trk != NULL) && (GetTrkType(trk) == T_BEZIER)) {
DIST_T d;
- struct extraData *xx = GetTrkExtraData(trk);
- d = max(BezierOffsetLength(xx->bezierData.arcSegs,-GetTrkGauge(trk)/2.0),
- BezierOffsetLength(xx->bezierData.arcSegs,GetTrkGauge(trk)/2.0));
+ 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));
ScaleLengthIncrement( GetTrkScale(trk), d );
+ return TRUE;
}
- return TRUE;
+ return FALSE;
}
static DIST_T GetLengthBezier( track_p trk )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ 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->bezierData.arcSegs.cnt;i++) {
- SegProc(SEGPROC_LENGTH,&(DYNARR_N(trkSeg_t,xx->bezierData.arcSegs,i)), &segProcData);
+ 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)
+{
+
+ if (GetTrkType(trk) != T_BEZIER) {
+ return FALSE;
+ }
+// struct extraDataBezier_t *xx = GET_EXTRA_DATA(trk, T_BEZIER, extraDataBezier_t);
+ DIST_T length = GetLengthBezier(trk)/2;
+
+ traverseTrack_t tp;
+ tp.pos = GetTrkEndPos(trk,0);
+ tp.angle = NormalizeAngle(GetTrkEndAngle(trk,0)+180.0);
+ tp.trk = trk;
+ tp.length = length;
+
+ TraverseBezier(&tp,&length);
+
+ *pos = tp.pos;
+
+ return TRUE;
+
+}
+
-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 extraData *xx = GetTrkExtraData(trk);
- for (int i=0;i<4;i++) params->bezierPoints[i] = xx->bezierData.pos[i];
- params->len = xx->bezierData.length;
- params->track_angle = GetAngleSegs( //Find correct Segment and nearest point in it
- xx->bezierData.arcSegs.cnt,xx->bezierData.arcSegs.ptr,
- &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->bezierData.arcSegs,segInx);
+ 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,&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;
} else {
@@ -950,17 +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 (FindDistance(pos,params->bezierPoints[0]) > FindDistance(pos,params->bezierPoints[3]))
- params->ep = 1;
- else params->ep = 0;
- coOrd curr_pos = params->bezierPoints[params->ep*3];
+ 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; }
+ coOrd curr_pos = params->bezierPoints[0];
BOOL_T first = TRUE;
DYNARR_RESET(coOrd,params->nodes);
- for (int i = 0; i<xx->bezierData.arcSegs.cnt;i++) {
- trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->bezierData.arcSegs,params->ep?xx->bezierData.arcSegs.cnt-1-i:i);
+ // Load out the points in order from bezierPoint[0] to bezierPoint[3]
+ 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);
@@ -971,49 +1053,62 @@ 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;
- for (int j=1-first;j<=number;j++) {
- DYNARR_APPEND(coOrd,params->nodes,1);
- if (back == params->ep)
- 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) );
- else
- Translate(&DYNARR_LAST(coOrd,params->nodes),segPtr->u.c.center,segPtr->u.c.a0+(j*arc_size),fabs(segPtr->u.c.radius) );
+ 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--) {
+ 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) );
+ }
+ } else {
+ 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) );
+ }
}
first = FALSE;
} else {
if (first) {
first = FALSE;
DYNARR_APPEND(coOrd,params->nodes,1);
- DYNARR_LAST(coOrd,params->nodes) = start;
+ DYNARR_LAST(coOrd,params->nodes) = back?end:start;
}
DYNARR_APPEND(coOrd,params->nodes,1);
- DYNARR_LAST(coOrd,params->nodes) = end;
-
+ DYNARR_LAST(coOrd,params->nodes) = back?start:end;
}
}
curr_pos = DYNARR_LAST(coOrd,params->nodes);
}
- params->lineOrig = params->bezierPoints[params->ep*3];
- params->lineEnd = params->bezierPoints[(1-params->ep)*3];
+ 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;
@@ -1023,17 +1118,21 @@ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
switch ( query ) {
case Q_CAN_GROUP:
return FALSE;
break;
case Q_FLIP_ENDPTS:
+ return GetTrkType(trk) == T_BEZIER?TRUE:FALSE;
+ break;
case Q_HAS_DESC:
return TRUE;
break;
case Q_EXCEPTION:
- return GetTrkType(trk) == T_BEZIER?fabs(xx->bezierData.minCurveRadius) < (GetLayoutMinTrackRadius()-EPSILON):FALSE;
+ return GetTrkType(trk) == T_BEZIER?fabs(xx->minCurveRadius) <
+ (GetLayoutMinTrackRadius()-EPSILON):FALSE;
break;
case Q_CAN_MODIFY_CONTROL_POINTS:
return TRUE;
@@ -1048,6 +1147,8 @@ static BOOL_T QueryBezier( track_p trk, int query )
return TRUE;
break;
case Q_MODIFY_CAN_SPLIT:
+ return TRUE;
+ break;
case Q_CORNU_CAN_MODIFY:
return (GetTrkType(trk) == T_BEZIER);
case Q_GET_NODES:
@@ -1059,72 +1160,92 @@ 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 extraData * xx = GetTrkExtraData(trk);
- FlipPoint( &xx->bezierData.pos[0], orig, angle );
- FlipPoint( &xx->bezierData.pos[1], orig, angle );
- FlipPoint( &xx->bezierData.pos[2], orig, angle );
- FlipPoint( &xx->bezierData.pos[3], orig, angle );
- FixUpBezier(xx->bezierData.pos,xx,IsTrack(trk));
- ComputeBezierBoundingBox(trk,xx);
+ 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 );
+
+ // Reverse control point order
+ coOrd pos = xx->pos[0];
+ xx->pos[0] = xx->pos[3];
+ xx->pos[3] = pos;
+
+ pos = xx->pos[1];
+ xx->pos[1] = xx->pos[2];
+ xx->pos[2] = pos;
+
+ FixUpBezier(xx->pos,xx,IsTrack(trk));
+ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataBezier_t * xx = GET_EXTRA_DATA(trk, T_NOTRACK,
+ extraDataBezier_t);
ANGLE_T angle;
BOOL_T back, neg;
int indx;
- angle = GetAngleSegs( xx->bezierData.arcSegs.cnt, (trkSeg_p)xx->bezierData.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 extraData * xx = GetTrkExtraData(trk);
+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->bezierData.pos[i];
- seg_p->color = xx->bezierData.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;
+ for (int i=0; i<4; i++) { seg_p->u.b.pos[i] = xx->pos[i]; }
+ seg_p->color = xx->segsColor;
+ 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))) {
+ 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;
}
@@ -1136,91 +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;
- struct extraData * xx = GetTrkExtraData(trk);
+ DYNARR_INIT( trkSeg_t, seg_temp.bezSegs );
newTracks[0] = NULL, newTracks[1] = NULL;
- if (!IsTrack(trk)) return FALSE;
+ 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->bezierData.pos[i];
- seg_temp.color = xx->bezierData.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);
+ for (int i=0; i<4; i++) { seg_temp.u.b.pos[i] = xx->pos[i]; }
+ seg_temp.color = xx->segsColor;
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 extraData * xx = GetTrkExtraData(trk);
- coOrd np[4], p;
- ANGLE_T a,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.
-
- a = FindAngle(xx->bezierData.pos[0],xx->bezierData.pos[3]);
- p = pos;
- DistanceBezier(trk, &p);
- a2 = NormalizeAngle(FindAngle(pos,p)-a);
- //find parallel move x and y for points
- for (int i =0; i<4;i++) {
- np[i] = xx->bezierData.pos[i];
- }
- sep = sep+factor/xx->bezierData.minCurveRadius;
- // Adjust sep based on radius and factor
- if ( a2 > 180 ) {
- Translate(&np[0],np[0],a+90,sep);
- Translate(&np[1],np[1],a+90,sep);
- Translate(&np[2],np[2],a+90,sep);
- Translate(&np[3],np[3],a+90,sep);
- } else {
- Translate(&np[0],np[0],a-90,sep);
- Translate(&np[1],np[1],a-90,sep);
- Translate(&np[2],np[2],a-90,sep);
- Translate(&np[3],np[3],a-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];
- FixUpBezierSeg(tempSegs(0).u.b.pos,&tempSegs(0),TRUE);
+ 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;
}
@@ -1229,28 +1345,32 @@ static BOOL_T MakeParallelBezier(
* ensure
* - that the Segs are restored and
* - other fields reset.
+ * Not called for deleted tracks
*/
BOOL_T RebuildBezier (track_p trk)
{
- struct extraData *xx;
- xx = GetTrkExtraData(trk);
- xx->bezierData.arcSegs.cnt = 0;
- FixUpBezier(xx->bezierData.pos,xx,IsTrack(trk));
+ CHECK( trk != NULL && !IsTrackDeleted(trk) );
+ struct extraDataBezier_t *xx;
+ xx = GET_EXTRA_DATA(trk, T_NOTRACK, extraDataBezier_t);
+ 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 extraData *xx;
+ struct extraDataBezier_t *xx;
if (SplitTrack(*trk,pos,*ep,&trk2,TRUE)) {
if (trk2) {
UndrawNewTrack( trk2 );
DeleteTrack(trk2,TRUE);
}
UndrawNewTrack( *trk );
- xx = GetTrkExtraData(*trk);
- SetTrkEndPoint( *trk, *ep, *ep?xx->bezierData.pos[3]:xx->bezierData.pos[0], *ep?xx->bezierData.a1:xx->bezierData.a0 );
+ xx = GET_EXTRA_DATA(*trk, T_NOTRACK, extraDataBezier_t);
+ SetTrkEndPoint( *trk, *ep, *ep?xx->pos[3]:xx->pos[0], *ep?xx->a1:xx->a0 );
DrawNewTrack( *trk );
return TRUE;
}
@@ -1259,106 +1379,108 @@ 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 extraData *xx1 = GetTrkExtraData( trk1 );
- struct extraData *xx2 = GetTrkExtraData( 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 );
char * cp = message + strlen(message);
- REGRESS_CHECK_POS( "Pos[0]", xx1, xx2, bezierData.pos[0] )
- REGRESS_CHECK_POS( "Pos[1]", xx1, xx2, bezierData.pos[1] )
- REGRESS_CHECK_POS( "Pos[2]", xx1, xx2, bezierData.pos[2] )
- REGRESS_CHECK_POS( "Pos[3]", xx1, xx2, bezierData.pos[3] )
- REGRESS_CHECK_DIST( "MinCurveRadius", xx1, xx2, bezierData.minCurveRadius )
- REGRESS_CHECK_ANGLE( "A0", xx1, xx2, bezierData.a0 )
- REGRESS_CHECK_ANGLE( "A1", xx1, xx2, bezierData.a1 )
+ REGRESS_CHECK_POS( "Pos[0]", xx1, xx2, pos[0] )
+ REGRESS_CHECK_POS( "Pos[1]", xx1, xx2, pos[1] )
+ REGRESS_CHECK_POS( "Pos[2]", xx1, xx2, pos[2] )
+ REGRESS_CHECK_POS( "Pos[3]", xx1, xx2, pos[3] )
+ REGRESS_CHECK_DIST( "MinCurveRadius", xx1, xx2, minCurveRadius )
+ REGRESS_CHECK_ANGLE( "A0", xx1, xx2, a0 )
+ REGRESS_CHECK_ANGLE( "A1", xx1, xx2, a1 )
// Check arcSegs
- REGRESS_CHECK_DIST( "Length", xx1, xx2, bezierData.length )
- REGRESS_CHECK_POS( "DescOff", xx1, xx2, bezierData.descriptionOff )
- REGRESS_CHECK_WIDTH( "SegsWidth", xx1, xx2, bezierData.segsWidth )
- REGRESS_CHECK_COLOR( "SegsColor", xx1, xx2, bezierData.segsColor )
- REGRESS_CHECK_INT( "LineType", xx1, xx2, bezierData.lineType )
+ REGRESS_CHECK_DIST( "Length", xx1, xx2, length )
+ REGRESS_CHECK_POS( "DescOff", xx1, xx2, descriptionOff )
+ 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,
- NULL,
- 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;
@@ -1370,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) {
@@ -1379,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;
@@ -1390,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;
@@ -1426,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;
@@ -1453,31 +1590,36 @@ 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:
- dd = 100000.00; //Just find one distance
+ 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;
@@ -1492,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;
@@ -1504,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;
@@ -1554,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;
@@ -1567,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;
-
+
}
}
@@ -1586,43 +1731,54 @@ 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,
+ LWIDTH_T lineWidth )
+{
+ BOOL_T bTrack = (GetTrkType(p) == T_BEZIER);
+ struct extraDataBezier_t *xx = GET_EXTRA_DATA(p, T_NOTRACK, extraDataBezier_t);
+ xx->pos[0] = pos[0];
+ xx->pos[1] = pos[1];
+ xx->pos[2] = pos[2];
+ xx->pos[3] = pos[3];
+ xx->a0 = FindAngle(pos[1],pos[0]);
+ xx->a1 = FindAngle(pos[2],pos[3]);
+ xx->segsColor = color;
+ xx->segsLineWidth = lineWidth;
+ FixUpBezier(pos, xx, bTrack);
+ ComputeBezierBoundingBox( p, xx );
+ if ( bTrack ) {
+ SetTrkEndPointSilent( p, 0, pos[0], xx->a0 );
+ SetTrkEndPointSilent( p, 1, pos[3], xx->a1 );
+ CheckTrackLength( p );
+ SetTrkBits( p, TB_HIDEDESC );
+ }
+}
+
+
track_p NewBezierTrack(coOrd pos[4], trkSeg_t * tempsegs, int count)
{
- struct extraData *xx;
track_p p;
- p = NewTrack( 0, T_BEZIER, 2, sizeof *xx );
- xx = GetTrkExtraData(p);
- xx->bezierData.pos[0] = pos[0];
- xx->bezierData.pos[1] = pos[1];
- xx->bezierData.pos[2] = pos[2];
- xx->bezierData.pos[3] = pos[3];
- xx->bezierData.segsColor = wDrawColorBlack;
- xx->bezierData.segsWidth = 0;
- FixUpBezier(pos, xx, TRUE);
-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) ) )
- ComputeBezierBoundingBox( p, xx );
- SetTrkEndPoint( p, 0, pos[0], xx->bezierData.a0);
- SetTrkEndPoint( p, 1, pos[3], xx->bezierData.a1);
- CheckTrackLength( p );
- SetTrkBits( p, TB_HIDEDESC );
+ 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) ) )
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 )
{
- struct extraData *xx;
track_p p;
- p = NewTrack( 0, T_BZRLIN, 2, sizeof *xx );
- xx = GetTrkExtraData(p);
- xx->bezierData.pos[0] = pos[0];
- xx->bezierData.pos[1] = pos[1];
- xx->bezierData.pos[2] = pos[2];
- xx->bezierData.pos[3] = pos[3];
- xx->bezierData.segsColor = color;
- xx->bezierData.segsWidth = width;
- FixUpBezier(pos, xx, FALSE);
-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) ) )
- ComputeBezierBoundingBox( p, xx );
+ 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;
}
@@ -1647,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 = 10000.0;
- 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];
}
@@ -1753,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
}
@@ -1777,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;
}
/**
@@ -1809,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 823992e..e2f28c5 100644
--- a/app/bin/tbezier.h
+++ b/app/bin/tbezier.h
@@ -17,45 +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"
-
-typedef struct {
- 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;
- } BezierData_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 );
-track_p NewBezierTrack(coOrd[4], trkSeg_t * , int );
-track_p NewBezierLine(coOrd[4], trkSeg_t * , int, wDrawColor, DIST_T);
-DIST_T BezierMathDistance( coOrd *, coOrd[4], int , double * );
-void FixUpBezier(coOrd[4], struct extraData*, BOOL_T);
-void FixUpBezierSeg(coOrd[4], trkSeg_p , BOOL_T);
+#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;
+ LWIDTH_T segsLineWidth;
+ wDrawColor segsColor;
+ drawLineType_e lineType;
+} extraDataBezier_t;
+
+
+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 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 * );
+
+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 * );
+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 dd09cfa..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
*/
@@ -45,23 +45,14 @@
#include "ccurve.h"
#include "cstraigh.h"
#include "cjoin.h"
-#include "utility.h"
#include "common.h"
-#include "i18n.h"
#include "param.h"
-#include "math.h"
-#include "string.h"
#include "cundo.h"
#include "layout.h"
#include "fileio.h"
-#include "assert.h"
EXPORT TRKTYP_T T_CORNU = -1;
-struct extraData {
- cornuData_t cornuData;
- };
-
static int log_cornu = 0;
static DIST_T GetLengthCornu( track_p );
@@ -75,194 +66,228 @@ static DIST_T GetLengthCornu( track_p );
/*
* Run after any changes to the Cornu points
*/
-void SetUpCornuParmFromTracks(track_p trk[2],cornuParm_t * cp, struct extraData* xx) {
+void SetUpCornuParmFromTracks(track_p trk[2],cornuParm_t * cp,
+ struct extraDataCornu_t* xx)
+{
if (!trk[0]) {
- cp->center[0] = xx->cornuData.c[0];
- cp->angle[0] = xx->cornuData.a[0];
- cp->radius[0] = xx->cornuData.r[0];
+ cp->center[0] = xx->c[0];
+ cp->angle[0] = xx->a[0];
+ cp->radius[0] = xx->r[0];
}
if (!trk[1]) {
- cp->center[1] = xx->cornuData.c[1];
- cp->angle[1] = xx->cornuData.a[1];
- cp->radius[1] = xx->cornuData.r[1];
+ cp->center[1] = xx->c[1];
+ cp->angle[1] = xx->a[1];
+ cp->radius[1] = xx->r[1];
}
}
-EXPORT BOOL_T FixUpCornu(coOrd pos[2], track_p trk[2], EPINX_T ep[2], struct extraData* 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->cornuData.arcSegs, &cp)) return FALSE;
+ if (!CallCornu(pos, trk, ep, &xx->arcSegs, &cp)) { return FALSE; }
- xx->cornuData.r[0] = cp.radius[0];
+ xx->r[0] = cp.radius[0];
if (cp.radius[0]==0) {
- xx->cornuData.a[0] = cp.angle[0];
+ xx->a[0] = cp.angle[0];
} else {
- xx->cornuData.c[0] = cp.center[0];
+ xx->c[0] = cp.center[0];
}
- xx->cornuData.r[1] = cp.radius[1];
+ xx->r[1] = cp.radius[1];
if (cp.radius[1]==0) {
- xx->cornuData.a[1] = cp.angle[1];
+ xx->a[1] = cp.angle[1];
} else {
- xx->cornuData.c[1] = cp.center[1];
+ xx->c[1] = cp.center[1];
}
- xx->cornuData.minCurveRadius = CornuMinRadius(pos,xx->cornuData.arcSegs);
- xx->cornuData.windingAngle = CornuTotalWindingArc(pos,xx->cornuData.arcSegs);
+ xx->minCurveRadius = CornuMinRadius(pos,xx->arcSegs);
+ xx->windingAngle = CornuTotalWindingArc(pos,xx->arcSegs);
DIST_T last_c;
- if (xx->cornuData.r[0] == 0) last_c = 0;
- else last_c = 1/xx->cornuData.r[0];
- xx->cornuData.maxRateofChange = CornuMaxRateofChangeofCurvature(pos,xx->cornuData.arcSegs,&last_c);
- xx->cornuData.length = CornuLength(pos, xx->cornuData.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);
return TRUE;
}
-EXPORT BOOL_T FixUpCornu0(coOrd pos[2],coOrd center[2],ANGLE_T angle[2],DIST_T radius[2],struct extraData* 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->cornuData.arcSegs,FALSE)) return FALSE;
- xx->cornuData.minCurveRadius = CornuMinRadius(pos,
- xx->cornuData.arcSegs);
- if (xx->cornuData.r[0] == 0) last_c = 0;
- else last_c = 1/xx->cornuData.r[0];
- xx->cornuData.maxRateofChange = CornuMaxRateofChangeofCurvature(pos,xx->cornuData.arcSegs,&last_c);
- xx->cornuData.length = CornuLength(pos, xx->cornuData.arcSegs);
- xx->cornuData.windingAngle = CornuTotalWindingArc(pos,xx->cornuData.arcSegs);
+ 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->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;
- struct extraData *xx = GetTrkExtraData(trk);
- if (xx->cornuData.cornuPath) MyFree(xx->cornuData.cornuPath);
- xx->cornuData.cornuPath = MyMalloc(xx->cornuData.arcSegs.cnt+2);
+ 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); }
+ xx->cornuPath = MyMalloc(xx->arcSegs.cnt+2);
int j= 0;
- for (int i = 0;i<xx->cornuData.arcSegs.cnt;i++,j++) {
- xx->cornuData.cornuPath[j] = i+1;
+ for (int i = 0; i<xx->arcSegs.cnt; i++,j++) {
+ xx->cornuPath[j] = i+1;
}
- xx->cornuData.cornuPath[j] = cp[0];
- xx->cornuData.cornuPath[j+1] = cp[0];
- return xx->cornuData.cornuPath;
+ xx->cornuPath[j] = cp[0];
+ xx->cornuPath[j+1] = cp[0];
+ return xx->cornuPath;
}
+#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 extraData * xx )
+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->cornuData.arcSegs.cnt,xx->cornuData.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)
{
- struct extraData *xx = GetTrkExtraData(trk);
coOrd p1;
- if (hidden) *hidden = FALSE;
- if ( GetTrkType( trk ) != T_CORNU || ((( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) && !show_hidden) )
- return 100000;
-
- coOrd offset = xx->cornuData.descriptionOff;
-
- if (( GetTrkBits( trk ) & TB_HIDEDESC ) != 0) offset = zero;
- p1.x = xx->cornuData.pos[0].x + ((xx->cornuData.pos[1].x-xx->cornuData.pos[0].x)/2) + offset.x;
- p1.y = xx->cornuData.pos[0].y + ((xx->cornuData.pos[1].y-xx->cornuData.pos[0].y)/2) + offset.y;
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
+ 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; }
+
+ coOrd end0, end0off, end1, end1off;
+ end0 = xx->pos[0];
+ end1 = xx->pos[1];
+ ANGLE_T a;
+ a = FindAngle(end0,end1);
+ Translate(&end0off,end0,a+90,xx->descriptionOff.y);
+ Translate(&end1off,end1,a+90,xx->descriptionOff.y);
+
+ 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); }
*dpos = p1;
+
+ coOrd tpos = 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;
static void DrawCornuDescription(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
{
- struct extraData *xx = GetTrkExtraData(trk);
- wFont_p fp;
- coOrd pos;
+ coOrd epos0, epos1, offpos0, offpos1;
- if (layoutLabels == 0)
+ if (layoutLabels == 0) {
+ return;
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0) {
return;
- if ((labelEnable&LABELENABLE_TRKDESC)==0)
- return;
- pos.x = xx->cornuData.pos[0].x + ((xx->cornuData.pos[1].x - xx->cornuData.pos[0].x)/2);
- pos.y = xx->cornuData.pos[0].y + ((xx->cornuData.pos[1].y - xx->cornuData.pos[0].y)/2);
- pos.x += xx->cornuData.descriptionOff.x;
- pos.y += xx->cornuData.descriptionOff.y;
- fp = wStandardFont( F_TIMES, FALSE, FALSE );
-
- sprintf( message, _("Cornu: len=%0.2f min_rad=%0.2f"),
- xx->cornuData.length, (xx->cornuData.minCurveRadius>=10000.00)?0.0:xx->cornuData.minCurveRadius);
- DrawBoxedString( BOX_BOX, d, pos, message, fp, (wFontSize_t)descriptionFontSize, color, 0.0 );
+ }
+
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
+ epos0 = xx->pos[0];
+ epos1 = xx->pos[1];
+ ANGLE_T a = FindAngle(epos0,epos1);
+ Translate(&offpos0,epos0,a+90,xx->descriptionOff.y);
+ Translate(&offpos1,epos1,a+90,xx->descriptionOff.y);
+
+ 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 );
+
+ 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);
+
+ 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 )
{
- struct extraData *xx = GetTrkExtraData(trk);
- static coOrd p0,p1;
- static BOOL_T editState;
-
- if (GetTrkType(trk) != T_CORNU) return C_TERMINATE;
-
- p0.x = xx->cornuData.pos[0].x + ((xx->cornuData.pos[1].x - xx->cornuData.pos[0].x)/2);
- p0.y = xx->cornuData.pos[0].y + ((xx->cornuData.pos[1].y - xx->cornuData.pos[0].y)/2);
-
- switch (action) {
- case C_DOWN:
- DrawCornuDescription( trk, &mainD, wDrawColorWhite );
- case C_MOVE:
- case C_UP:
- editState = TRUE;
- p1 = pos;
- xx->cornuData.descriptionOff.x = pos.x - p0.x;
- xx->cornuData.descriptionOff.y = pos.y - p0.y;
- if (action == C_UP) {
- editState = FALSE;
- wDrawColor color = GetTrkColor( trk, &mainD );
- DrawCornuDescription( trk, &mainD, color );
- }
- return action==C_UP?C_TERMINATE:C_CONTINUE;
-
- case C_REDRAW:
- if (editState) {
- DrawCornuDescription( trk, &tempD, wDrawColorBlue );
- DrawLine( &tempD, p1, p0, 0, wDrawColorBlue );
- }
- break;
-
- }
+// static coOrd p0,p1;
+// static BOOL_T editState;
+
+ 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];
+ 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; }
+
return C_CONTINUE;
}
@@ -273,119 +298,122 @@ 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 )
{
- struct extraData *xx = GetTrkExtraData(trk);
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->cornuData.pos[0] = cornData.pos[0];
- Translate(&xx->cornuData.c[0],xx->cornuData.pos[0],xx->cornuData.a[0]+90,xx->cornuData.r[0]);
- cornData.center[0] = xx->cornuData.c[0];
+ 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->cornuData.pos[1]= cornData.pos[1];
- Translate(&xx->cornuData.c[1],xx->cornuData.pos[1],xx->cornuData.a[1]-90,xx->cornuData.r[1]);
- cornData.center[1] = xx->cornuData.c[1];
+ xx->pos[1]= cornData.pos[1];
+ Translate(&xx->c[1],xx->pos[1],xx->a[1]-90,xx->r[1]);
+ cornData.center[1] = xx->c[1];
cornuDesc[P1].mode |= DESC_CHANGE;
cornuDesc[C1].mode |= DESC_CHANGE;
break;
case A0:
- if (GetTrkEndTrk(trk,0)) break;
+ if (GetTrkEndTrk(trk,0)) { break; }
updateEndPts = TRUE;
- xx->cornuData.a[0] = cornData.angle[0];
- Translate(&xx->cornuData.c[0],xx->cornuData.pos[0],xx->cornuData.a[0]+90,xx->cornuData.r[0]);
- cornData.center[0] = xx->cornuData.c[0];
+ xx->a[0] = cornData.angle[0];
+ Translate(&xx->c[0],xx->pos[0],xx->a[0]+90,xx->r[0]);
+ cornData.center[0] = xx->c[0];
cornuDesc[A0].mode |= DESC_CHANGE;
cornuDesc[C0].mode |= DESC_CHANGE;
break;
case A1:
- if (GetTrkEndTrk(trk,1)) break;
+ if (GetTrkEndTrk(trk,1)) { break; }
updateEndPts = TRUE;
- xx->cornuData.a[1]= cornData.angle[1];
- Translate(&xx->cornuData.c[1],xx->cornuData.pos[1],xx->cornuData.a[1]-90,xx->cornuData.r[1]);
- cornData.center[1] = xx->cornuData.c[1];
+ xx->a[1]= cornData.angle[1];
+ Translate(&xx->c[1],xx->pos[1],xx->a[1]-90,xx->r[1]);
+ cornData.center[1] = xx->c[1];
cornuDesc[A1].mode |= DESC_CHANGE;
cornuDesc[C1].mode |= DESC_CHANGE;
break;
case C0:
- if (GetTrkEndTrk(trk,0)) break;
+ if (GetTrkEndTrk(trk,0)) { break; }
//updateEndPts = TRUE;
- //xx->cornuData.c[0] = cornData.center[0];
+ //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->cornuData.c[1] = cornData.center[1];
+ //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->cornuData.r[0] = fabs(cornData.radius[0]);
- Translate(&xx->cornuData.c[0],xx->cornuData.pos[0],NormalizeAngle(xx->cornuData.a[0]+90),cornData.radius[0]);
- cornData.center[0] = xx->cornuData.c[0];
+ xx->r[0] = fabs(cornData.radius[0]);
+ Translate(&xx->c[0],xx->pos[0],NormalizeAngle(xx->a[0]+90),cornData.radius[0]);
+ cornData.center[0] = xx->c[0];
cornData.radius[0] = fabs(cornData.radius[0]);
cornuDesc[R0].mode |= DESC_CHANGE;
cornuDesc[C0].mode |= DESC_CHANGE;
break;
case R1:
- if (GetTrkEndTrk(trk,1)) break;
+ if (GetTrkEndTrk(trk,1)) { break; }
updateEndPts = TRUE;
- xx->cornuData.r[1]= fabs(cornData.radius[1]);
- Translate(&xx->cornuData.c[1],xx->cornuData.pos[1],NormalizeAngle(xx->cornuData.a[1]-90),cornData.radius[1]);
- cornData.center[1] = xx->cornuData.c[1];
+ xx->r[1]= fabs(cornData.radius[1]);
+ Translate(&xx->c[1],xx->pos[1],NormalizeAngle(xx->a[1]-90),cornData.radius[1]);
+ cornData.center[1] = xx->c[1];
cornData.radius[1] = fabs(cornData.radius[1]);
cornuDesc[R1].mode |= DESC_CHANGE;
cornuDesc[C1].mode |= DESC_CHANGE;
@@ -393,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;
@@ -406,19 +437,19 @@ 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 ) {
- SetTrkEndPoint( trk, 0, cornData.pos[0], xx->cornuData.a[0]);
+ SetTrkEndPoint( trk, 0, cornData.pos[0], xx->a[0]);
cornuDesc[A0].mode |= DESC_CHANGE;
}
if ( GetTrkEndTrk(trk,1) == NULL ) {
- SetTrkEndPoint( trk, 1, cornData.pos[1], xx->cornuData.a[1]);
+ SetTrkEndPoint( trk, 1, cornData.pos[1], xx->a[1]);
cornuDesc[A1].mode |= DESC_CHANGE;
}
}
@@ -427,7 +458,7 @@ static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final
ts[0] = GetTrkEndTrk(trk,0);
ts[1] = GetTrkEndTrk(trk,1);
SetUpCornuParmFromTracks(ts,&cp,xx);
- CallCornu0(xx->cornuData.pos, xx->cornuData.c, xx->cornuData.a, xx->cornuData.r, &xx->cornuData.arcSegs, FALSE);
+ CallCornu0(xx->pos, xx->c, xx->a, xx->r, &xx->arcSegs, FALSE);
//FixUpCornu(xx->bezierData.pos, xx, IsTrack(trk));
ComputeCornuBoundingBox(trk, xx);
@@ -437,49 +468,53 @@ static void UpdateCornu( track_p trk, int inx, descData_p descUpd, BOOL_T final
static void DescribeCornu( track_p trk, char * str, CSIZE_T len )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
DIST_T d;
- d = xx->cornuData.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->cornuData.minCurveRadius),
- FormatDistance(d),
- PutDim(xx->cornuData.pos[0].x),PutDim(xx->cornuData.pos[0].y),
- PutDim(xx->cornuData.pos[1].x),PutDim(xx->cornuData.pos[1].y)
- );
-
- cornData.length = xx->cornuData.length;
- cornData.minRadius = xx->cornuData.minCurveRadius;
- cornData.maxRateOfChange = xx->cornuData.maxRateofChange*GetScaleRatio(GetLayoutCurScale());
- cornData.windingAngle = xx->cornuData.windingAngle;
- cornData.layerNumber = GetTrkLayer(trk);
- cornData.pos[0] = xx->cornuData.pos[0];
- cornData.pos[1] = xx->cornuData.pos[1];
- cornData.angle[0] = xx->cornuData.a[0];
- cornData.angle[1] = xx->cornuData.a[1];
- cornData.center[0] = xx->cornuData.c[0];
- cornData.center[1] = xx->cornuData.c[1];
- cornData.radius[0] = xx->cornuData.r[0];
- cornData.radius[1] = xx->cornuData.r[1];
- if (GetTrkType(trk) == T_CORNU) {
+ 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)
+ );
+
+ cornData.length = xx->length;
+ cornData.minRadius = xx->minCurveRadius;
+ 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) {
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;
@@ -489,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 );
@@ -501,15 +536,15 @@ static void DescribeCornu( track_p trk, char * str, CSIZE_T len )
DIST_T DistanceCornu( track_p t, coOrd * p )
{
- struct extraData *xx = GetTrkExtraData(t);
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
//return BezierMathDistance(p,xx->bezierData.pos,100, &s);
- DIST_T d = 100000.0;
- coOrd p2 = xx->cornuData.pos[0]; //Set initial point
+ DIST_T d = DIST_INF;
+ coOrd p2 = xx->pos[0]; //Set initial point
segProcData_t segProcData;
- for (int i = 0;i<xx->cornuData.arcSegs.cnt;i++) {
- trkSeg_t seg = DYNARR_N(trkSeg_t,xx->cornuData.arcSegs,i);
- if (seg.type == SEG_FILCRCL) continue;
+ 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; }
segProcData.distance.pos1 = * p;
SegProc(SEGPROC_DISTANCE,&seg,&segProcData);
if (segProcData.distance.dd<d) {
@@ -517,84 +552,80 @@ 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;
}
static void DrawCornu( track_p t, drawCmd_p d, wDrawColor color )
{
- struct extraData *xx = GetTrkExtraData(t);
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;
- DrawSegsO(d,t,zero,0.0,xx->cornuData.arcSegs.ptr,xx->cornuData.arcSegs.cnt, GetTrkGauge(t), color, widthOptions);
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
+ 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 );
}
}
static void DeleteCornu( track_p t )
{
- struct extraData *xx = GetTrkExtraData(t);
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
- for (int i=0;i<xx->cornuData.arcSegs.cnt;i++) {
- trkSeg_t s = DYNARR_N(trkSeg_t,xx->cornuData.arcSegs,i);
+ for (int i=0; i<xx->arcSegs.cnt; i++) {
+ trkSeg_t s = DYNARR_N(trkSeg_t,xx->arcSegs,i);
FreeSubSegs(&s);
}
- if (xx->cornuData.arcSegs.ptr)
- MyFree(xx->cornuData.arcSegs.ptr);
- xx->cornuData.arcSegs.max = 0;
- xx->cornuData.arcSegs.cnt = 0;
- xx->cornuData.arcSegs.ptr = NULL;
+
+ DYNARR_FREE( trkSeg_t, xx->arcSegs );
}
static BOOL_T WriteCornu( track_p t, FILE * f )
{
- struct extraData *xx = GetTrkExtraData(t);
+ int bits;
long options;
BOOL_T rc = TRUE;
BOOL_T track =(GetTrkType(t)==T_CORNU);
options = GetTrkWidth(t) & 0x0F;
- 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->cornuData.pos[0].x, xx->cornuData.pos[0].y,
- xx->cornuData.a[0],
- xx->cornuData.r[0],
- xx->cornuData.c[0].x,xx->cornuData.c[0].y,
- xx->cornuData.pos[1].x, xx->cornuData.pos[1].y,
- xx->cornuData.a[1],
- xx->cornuData.r[1],
- xx->cornuData.c[1].x,xx->cornuData.c[1].y )>0;
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
+ 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->cornuData.arcSegs.cnt, xx->cornuData.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;
}
static BOOL_T ReadCornu( char * line )
{
- struct extraData *xx;
+ struct extraDataCornu_t *xx;
track_p t;
wIndex_t index;
BOOL_T visible;
@@ -604,108 +635,117 @@ 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 );
- xx = GetTrkExtraData(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 ( ( options & 0x80 ) == 0 ) SetTrkBits(t,TB_HIDEDESC);
- xx->cornuData.pos[0] = p0;
- xx->cornuData.pos[1] = p1;
- xx->cornuData.a[0] = a0;
- xx->cornuData.r[0] = r0;
- xx->cornuData.a[1] = a1;
- xx->cornuData.c[0] = c0;
- xx->cornuData.c[1] = c1;
- xx->cornuData.r[1] = r1;
- xx->cornuData.descriptionOff.x = xx->cornuData.descriptionOff.y = 0.0;
- FixUpCornu0(xx->cornuData.pos,xx->cornuData.c,xx->cornuData.a, xx->cornuData.r, xx);
- ComputeCornuBoundingBox(t,xx);
+ 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);
SetEndPts(t,2);
return TRUE;
}
static void MoveCornu( track_p trk, coOrd orig )
{
- struct extraData *xx = GetTrkExtraData(trk);
- for (int i=0;i<2;i++) {
- xx->cornuData.pos[i].x += orig.x;
- xx->cornuData.pos[i].y += orig.y;
- xx->cornuData.c[i].x += orig.x;
- xx->cornuData.c[i].y += orig.y;
- }
- RebuildCornu(trk);
+ 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);
}
static void RotateCornu( track_p trk, coOrd orig, ANGLE_T angle )
{
- struct extraData *xx = GetTrkExtraData(trk);
- for (int i=0;i<2;i++) {
- Rotate( &xx->cornuData.pos[i], orig, angle );
- Rotate( &xx->cornuData.c[i], orig, angle);
- xx->cornuData.a[i] = NormalizeAngle(xx->cornuData.a[i]+angle);
- }
- RebuildCornu(trk);
+ 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);
}
static void RescaleCornu( track_p trk, FLOAT_T ratio )
{
- struct extraData *xx = GetTrkExtraData(trk);
- for (int i=0;i<2;i++) {
- xx->cornuData.pos[i].x *= ratio;
- xx->cornuData.pos[i].y *= ratio;
- xx->cornuData.c[i].x *= ratio;
- xx->cornuData.c[i].y *= ratio;
- xx->cornuData.r[i] *= ratio;
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
+ 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 extraData *xx = GetTrkExtraData(trk);
- xx->cornuData.pos[inx] = pos;
- xx->cornuData.c[inx] = center;
- xx->cornuData.a[inx] = angle;
- xx->cornuData.r[inx] = radius;
- if (!RebuildCornu(trk)) return FALSE;
- SetTrkEndPoint( trk, inx, xx->cornuData.pos[inx], xx->cornuData.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 ) {
- struct extraData *xx = GetTrkExtraData(t);
+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;
- ANGLE_T angle = GetAngleSegs(xx->cornuData.arcSegs.cnt,(trkSeg_t *)(xx->cornuData.arcSegs.ptr),&pos,&inx,NULL,&back,NULL,&neg);
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(t, T_CORNU, extraDataCornu_t);
+ 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
}
- trkSeg_p segPtr = &DYNARR_N(trkSeg_t, xx->cornuData.arcSegs, inx);
+ 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);
}
@@ -716,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;
@@ -733,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);
@@ -756,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;
}
@@ -768,91 +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 )
{
- struct extraData *xx = GetTrkExtraData(trk);
track_p trk1;
- DIST_T radius = 0.0;
- coOrd center;
- int inx;
- BOOL_T track;
- track = IsTrack(trk);
-
- cornuParm_t new;
-
- double dd = DistanceCornu(trk, &pos);
- if (dd>minLength) return FALSE;
- BOOL_T back, neg;
-
- ANGLE_T angle = GetAngleSegs(xx->cornuData.arcSegs.cnt,(trkSeg_t *)(xx->cornuData.arcSegs.ptr),&pos,&inx,NULL,&back,NULL,&neg);
-
- if (inx == -1) return FALSE;
-
- trkSeg_p segPtr = &DYNARR_N(trkSeg_t, xx->cornuData.arcSegs, inx);
-
- GetAngleSegs(segPtr->bezSegs.cnt,(trkSeg_t *)(segPtr->bezSegs.ptr),&pos,&inx,NULL,&back,NULL,&neg);
-
- if (inx == -1) return FALSE;
-
- segPtr = &DYNARR_N(trkSeg_t, segPtr->bezSegs, inx);
-
- 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->cornuData.pos[1];
- new.angle[0] = NormalizeAngle(angle+(neg==back?180:0));
- new.angle[1] = xx->cornuData.a[1];
- new.center[0] = center;
- new.center[1] = xx->cornuData.c[1];
- new.radius[0] = radius;
- new.radius[1] = xx->cornuData.r[1];
- } else {
- new.pos[1] = pos;
- new.pos[0] = xx->cornuData.pos[0];
- new.angle[1] = NormalizeAngle(angle+(neg==back?0:180));
- new.angle[0] = xx->cornuData.a[0];
- new.center[1] = center;
- new.center[0] = xx->cornuData.c[0];
- new.radius[1] = radius;
- new.radius[0] = xx->cornuData.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;
+ 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,&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->cornuData.pos[ep] = pos;
- xx->cornuData.a[ep] = NormalizeAngle(new.angle[1-ep]+180);
- xx->cornuData.r[ep] = new.radius[1-ep];
- xx->cornuData.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->cornuData.pos[ep], xx->cornuData.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?
@@ -861,15 +909,16 @@ 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)) {
- struct extraData *xx = GetTrkExtraData(*trk);
if (trk2) {
UndrawNewTrack( trk2 );
DeleteTrack(trk2,TRUE);
}
- SetTrkEndPoint( *trk, *ep, *ep?xx->cornuData.pos[1]:xx->cornuData.pos[0], *ep?xx->cornuData.a[1]:xx->cornuData.a[0] );
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(*trk, T_CORNU, extraDataCornu_t);
+ SetTrkEndPoint( *trk, *ep, *ep?xx->pos[1]:xx->pos[0], *ep?xx->a[1]:xx->a[0] );
DrawNewTrack( *trk );
return TRUE;
}
@@ -897,50 +946,58 @@ static int log_traverseCornu = 0;
*/
static BOOL_T TraverseCornu( traverseTrack_p trvTrk, DIST_T * distR )
{
- track_p trk = trvTrk->trk;
- struct extraData *xx = GetTrkExtraData(trk);
+ track_p trk = trvTrk->trk;
DIST_T dist = *distR;
segProcData_t segProcData;
BOOL_T cornu_backwards= FALSE;
BOOL_T neg = FALSE;
- DIST_T d = 10000;
+ DIST_T d = DIST_INF;
coOrd pos1 = trvTrk->pos, pos2 = trvTrk->pos;
ANGLE_T a1,a2;
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 ))
- trkSeg_p segPtr = (trkSeg_p)xx->cornuData.arcSegs.ptr;
+ 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 = &DYNARR_N(trkSeg_t,xx->arcSegs,0);
a2 = GetAngleSegs( //Find correct Segment and nearest point in it
- xx->cornuData.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->cornuData.arcSegs.cnt) {
- segPtr = (trkSeg_p)xx->cornuData.arcSegs.ptr+inx; //move in to the identified Bezier segment
+ while (inx >=0 && inx<xx->arcSegs.cnt) {
+ 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;
@@ -951,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?
@@ -965,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;
}
@@ -989,119 +1053,49 @@ static BOOL_T EnumerateCornu( track_p trk )
{
if (trk != NULL) {
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCornu_t *xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
DIST_T d;
- d = max(CornuOffsetLength(xx->cornuData.arcSegs,-GetTrkGauge(trk)/2.0),
- CornuOffsetLength(xx->cornuData.arcSegs,GetTrkGauge(trk)/2.0));
+ d = max(CornuOffsetLength(xx->arcSegs,-GetTrkGauge(trk)/2.0),
+ CornuOffsetLength(xx->arcSegs,GetTrkGauge(trk)/2.0));
ScaleLengthIncrement( GetTrkScale(trk), d );
+ return TRUE;
}
- return TRUE;
+ return FALSE;
}
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 )
{
- struct extraData *xx0 = GetTrkExtraData(trk0);
- struct extraData *xx1 = GetTrkExtraData(trk1);
- track_p trk_after,trk_before;
- EPINX_T ep_before,ep_after=-1;
- coOrd p[2];
- coOrd c[2];
- ANGLE_T a[2];
- DIST_T r[2];
-
-
- if (!IsTrack(trk0) || !IsTrack(trk1) ) return FALSE;
- if (GetTrkType(trk0) != GetTrkType(trk1)) return FALSE;
- if (GetEndPtConnectedToMe(trk0,trk1) != ep0) return FALSE;
- if (GetEndPtConnectedToMe(trk1,trk0) != ep1) return FALSE;
-
- if (ep0 == ep1)
- return FALSE;
-
- UndoStart( _("Merge Cornu"), "MergeCornu( T%d[%d] T%d[%d] )", GetTrkIndex(trk0), ep0, GetTrkIndex(trk1), ep1 );
- p[0] = xx0->cornuData.pos[0];
- p[1] = xx1->cornuData.pos[1];
- a[0] = xx0->cornuData.a[0];
- a[1] = xx1->cornuData.a[1];
- c[0] = xx0->cornuData.c[0];
- c[1] = xx1->cornuData.c[1];
- r[0] = xx0->cornuData.r[0];
- r[1] = xx1->cornuData.r[1];
- track_p trk3 = NewCornuTrack(p,c,a,r,NULL,0);
- if (trk3==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"),
- p[0].x,p[0].y,
- p[1].x,p[1].y,
- c[0].x,c[0].y,
- c[1].x,c[1].y,
- a[0],a[1],
- FormatDistance(r[0]),FormatDistance(r[1]));
- UndoEnd();
- return FALSE;
- }
-
- UndoModify( trk0 );
- UndoModify( trk1 );
- UndrawNewTrack( trk0 );
- UndrawNewTrack( trk1 );
- trk_after = GetTrkEndTrk( trk1, 1-ep1 );
- if (trk_after) {
- ep_after = GetEndPtConnectedToMe( trk_after, trk1 );
- DisconnectTracks( trk1, 1-ep1, trk_after, ep_after );
- }
- trk_before = GetTrkEndTrk( trk0, 1-ep0 );
- if (trk_before) {
- ep_before = GetEndPtConnectedToMe( trk_before, trk0 );
- DisconnectTracks( trk0, 1-ep1, trk_before, ep_before );
- }
-
- DeleteTrack( trk1, TRUE );
- DeleteTrack( trk0, TRUE );
- if (trk_after) {
- SetTrkEndPoint( trk_after, ep_after, xx0->cornuData.pos[1], NormalizeAngle(xx0->cornuData.a[1]+180));
- ConnectTracks( trk3, 1, trk_after, ep_after);
- }
- if (trk_before) {
- SetTrkEndPoint( trk_before, ep_before, xx0->cornuData.pos[0], NormalizeAngle(xx0->cornuData.a[0]+180));
- ConnectTracks( trk3, 0, trk_before, ep_before);
- }
- DrawNewTrack( trk3 );
- UndoEnd();
-
- return TRUE;
+ return FALSE;
}
-BOOL_T GetBezierSegmentsFromCornu(track_p trk, dynArr_t * segs, BOOL_T track) {
- struct extraData * xx = GetTrkExtraData(trk);
- for (int i=0;i<xx->cornuData.arcSegs.cnt;i++) {
- trkSeg_p p = (trkSeg_t *) xx->cornuData.arcSegs.ptr+i;
+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 = &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;
}
}
@@ -1110,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) {
@@ -1119,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;
@@ -1132,32 +1126,56 @@ BOOL_T GetBezierSegmentsFromCornu(track_p trk, dynArr_t * segs, BOOL_T track) {
static DIST_T GetLengthCornu( track_p trk )
{
- struct extraData *xx = GetTrkExtraData(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->cornuData.arcSegs.cnt;i++) {
- trkSeg_t seg = DYNARR_N(trkSeg_t,xx->cornuData.arcSegs,i);
- if (seg.type == SEG_FILCRCL) continue;
+ 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; }
SegProc(SEGPROC_LENGTH, &seg, &segProcData);
length += segProcData.length.length;
}
return length;
}
+EXPORT BOOL_T GetCornuMiddle( track_p trk, coOrd * pos)
+{
+
+ if (GetTrkType(trk) != T_CORNU) {
+ return FALSE;
+ }
+ DIST_T length = GetLengthCornu(trk)/2;
+
+ traverseTrack_t tp;
+ tp.pos = GetTrkEndPos(trk,0);
+ tp.angle = NormalizeAngle(GetTrkEndAngle(trk,0)+180.0);
+ tp.trk = trk;
+ tp.length = length;
+
+ TraverseCornu(&tp,&length);
+
+ *pos = tp.pos;
+
+ return TRUE;
+
+}
+
-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 extraData *xx = GetTrkExtraData(trk);
+ 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->cornuData.arcSegs.cnt,xx->cornuData.arcSegs.ptr,
- &pos, &segInx, &d , &back, &segInx2, &negative );
- if (segInx ==-1) return FALSE;
- trkSeg_p segPtr = &DYNARR_N(trkSeg_t,xx->cornuData.arcSegs,segInx);
- if (negative != back) params->track_angle = NormalizeAngle(params->track_angle+180); //Cornu 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, &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 (segPtr->type == SEG_STRTRK) {
params->arcR = 0.0;
} else if (segPtr->type == SEG_CRVTRK) {
@@ -1176,22 +1194,23 @@ 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++) {
- params->cornuEnd[i] = xx->cornuData.pos[i];
- params->cornuAngle[i] = xx->cornuData.a[i];
- params->cornuRadius[i] = xx->cornuData.r[i];
- params->cornuCenter[i] = xx->cornuData.c[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];
+ params->cornuCenter[i] = xx->c[i];
}
- params->len = xx->cornuData.length;
+ 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);
@@ -1205,7 +1224,6 @@ static BOOL_T GetParamsCornu( int inx, track_p trk, coOrd pos, trackParams_t * p
static BOOL_T QueryCornu( track_p trk, int query )
{
- struct extraData * xx = GetTrkExtraData(trk);
switch ( query ) {
case Q_CAN_GROUP:
return FALSE;
@@ -1214,9 +1232,10 @@ static BOOL_T QueryCornu( track_p trk, int query )
case Q_HAS_DESC:
return TRUE;
break;
- case Q_EXCEPTION:
- return fabs(xx->cornuData.minCurveRadius) < (GetLayoutMinTrackRadius()-EPSILON);
- break;
+ 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;
@@ -1231,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;
@@ -1243,196 +1263,202 @@ 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 extraData * xx = GetTrkExtraData(trk);
- FlipPoint( &xx->cornuData.pos[0], orig, angle );
- FlipPoint( &xx->cornuData.pos[1], orig, angle );
- FlipPoint( &xx->cornuData.c[0], orig, angle);
- FlipPoint( &xx->cornuData.c[1], orig, angle);
- xx->cornuData.a[0] = NormalizeAngle( 2*angle - xx->cornuData.a[0] );
- xx->cornuData.a[1] = NormalizeAngle( 2*angle - xx->cornuData.a[1] );
+ struct extraDataCornu_t * xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
+ FlipPoint( &xx->pos[0], orig, angle );
+ FlipPoint( &xx->pos[1], orig, angle );
+ FlipPoint( &xx->c[0], orig, angle);
+ FlipPoint( &xx->c[1], orig, angle);
+ xx->a[0] = NormalizeAngle( 2*angle - xx->a[0] );
+ xx->a[1] = NormalizeAngle( 2*angle - xx->a[1] );
/* Reverse internals so that they match the new ends */
- coOrd pos_save = xx->cornuData.pos[0];
- xx->cornuData.pos[0] = xx->cornuData.pos[1];
- xx->cornuData.pos[1] = pos_save;
- ANGLE_T angle_save = xx->cornuData.a[0];
- xx->cornuData.a[0] = xx->cornuData.a[1];
- xx->cornuData.a[1] = angle_save;
- coOrd c_save = xx->cornuData.c[0];
- xx->cornuData.c[0] = xx->cornuData.c[1];
- xx->cornuData.c[1] = c_save;
- DIST_T rad_save = xx->cornuData.r[0];
- xx->cornuData.r[0] = xx->cornuData.r[1];
- xx->cornuData.r[1] = rad_save;
-
- RebuildCornu(trk);
+ coOrd pos_save = xx->pos[0];
+ xx->pos[0] = xx->pos[1];
+ xx->pos[1] = pos_save;
+ ANGLE_T angle_save = xx->a[0];
+ xx->a[0] = xx->a[1];
+ xx->a[1] = angle_save;
+ coOrd c_save = xx->c[0];
+ xx->c[0] = xx->c[1];
+ xx->c[1] = c_save;
+ DIST_T rad_save = xx->r[0];
+ xx->r[0] = xx->r[1];
+ xx->r[1] = rad_save;
+
+ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataCornu_t * xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
ANGLE_T angle;
BOOL_T back, neg;
int indx;
- angle = GetAngleSegs( xx->cornuData.arcSegs.cnt, (trkSeg_p)xx->cornuData.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 )
{
- struct extraData * xx = GetTrkExtraData(trk);
- 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
- atrk = GetAngleSegs(xx->cornuData.arcSegs.cnt,(trkSeg_t *)(xx->cornuData.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->cornuData.a[0] <180) above = !above;
- DIST_T sep0 = sep+((xx->cornuData.r[0]!=0.0)?fabs(factor/xx->cornuData.r[0]):0);
- DIST_T sep1 = sep+((xx->cornuData.r[1]!=0.0)?fabs(factor/xx->cornuData.r[1]):0);
- Translate(&np[0],xx->cornuData.pos[0],xx->cornuData.a[0]+(above?90:-90),sep0);
- Translate(&np[1],xx->cornuData.pos[1],xx->cornuData.a[1]+(above?-90:90),sep1);
- na[0]=xx->cornuData.a[0];
- na[1]=xx->cornuData.a[1];
- if (xx->cornuData.r[0] != 0.0) {
- //Find angle between center and end angle of track
- ANGLE_T ea0 =
- NormalizeAngle(FindAngle(xx->cornuData.c[0],xx->cornuData.pos[0])-xx->cornuData.a[0]);
- if (ea0>180) sep0 = -sep0;
- nr[0]=xx->cornuData.r[0]+(above?sep0:-sep0); //Needs adjustment
- nc[0]=xx->cornuData.c[0];
- } else {
- nr[0] = 0.0;
- nc[0] = zero;
- }
-
- if (xx->cornuData.r[1] != 0.0) {
- ANGLE_T ea1 =
- NormalizeAngle(FindAngle(xx->cornuData.c[1],xx->cornuData.pos[1])-xx->cornuData.a[1]);
- if (ea1<180) sep1 = -sep1;
- nr[1]=xx->cornuData.r[1]+(above?sep1:-sep1); //Needs adjustment
- nc[1]=xx->cornuData.c[1];
- } else {
- nr[1] = 0.0;
- nc[1] = zero;
- }
+ // - 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,&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 );
DeleteTrack(trk, TRUE);
return FALSE;
} else {
- struct extraData *xx;
+ struct extraDataCornu_t *xx;
UndrawNewTrack( trk );
- xx = GetTrkExtraData(trk);
- xx->cornuData.a[ep] = angle;
- xx->cornuData.c[ep] = center;
- xx->cornuData.r[ep] = radius;
- xx->cornuData.pos[ep] = endpos;
+ xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
+ xx->a[ep] = angle;
+ xx->c[ep] = center;
+ xx->r[ep] = radius;
+ xx->pos[ep] = endpos;
RebuildCornu(trk);
- SetTrkEndPoint(trk, ep, xx->cornuData.pos[ep], xx->cornuData.a[ep]);
+ SetTrkEndPoint(trk, ep, xx->pos[ep], xx->a[ep]);
DrawNewTrack( trk );
}
return TRUE;
@@ -1446,13 +1472,11 @@ static BOOL_T TrimCornu( track_p trk, EPINX_T ep, DIST_T dist, coOrd endpos, ANG
*/
EXPORT BOOL_T RebuildCornu (track_p trk)
{
- struct extraData *xx;
- xx = GetTrkExtraData(trk);
- xx->cornuData.arcSegs.max = 0;
- xx->cornuData.arcSegs.cnt = 0;
- //if (xx->cornuData.arcSegs.ptr) MyFree(xx->cornuData.arcSegs.ptr);
- xx->cornuData.arcSegs.ptr = NULL;
- if (!FixUpCornu0(xx->cornuData.pos,xx->cornuData.c,xx->cornuData.a,xx->cornuData.r, xx)) return FALSE;
+ struct extraDataCornu_t *xx;
+ xx = GET_EXTRA_DATA(trk, T_CORNU, extraDataCornu_t);
+ //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;
}
@@ -1460,64 +1484,66 @@ EXPORT BOOL_T RebuildCornu (track_p trk)
static wBool_t CompareCornu( track_cp trk1, track_cp trk2 )
{
- struct extraData *xx1 = GetTrkExtraData( trk1 );
- struct extraData *xx2 = GetTrkExtraData( 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 );
char * cp = message + strlen(message);
- REGRESS_CHECK_POS( "Pos[0]", xx1, xx2, cornuData.pos[0] )
- REGRESS_CHECK_POS( "Pos[1]", xx1, xx2, cornuData.pos[1] )
- REGRESS_CHECK_POS( "C[0]", xx1, xx2, cornuData.c[0] )
- REGRESS_CHECK_POS( "C[1]", xx1, xx2, cornuData.c[1] )
- REGRESS_CHECK_ANGLE( "A[0]", xx1, xx2, cornuData.a[0] )
- REGRESS_CHECK_ANGLE( "A[1]", xx1, xx2, cornuData.a[1] )
- REGRESS_CHECK_DIST( "R[0]", xx1, xx2, cornuData.r[0] )
- REGRESS_CHECK_DIST( "R[1]", xx1, xx2, cornuData.r[1] )
- REGRESS_CHECK_DIST( "MinCurveRadius", xx1, xx2, cornuData.minCurveRadius )
- REGRESS_CHECK_DIST( "MaxRateofChange", xx1, xx2, cornuData.maxRateofChange )
- REGRESS_CHECK_DIST( "Length", xx1, xx2, cornuData.length )
- REGRESS_CHECK_ANGLE( "WindingAngle", xx1, xx2, cornuData.windingAngle )
+ REGRESS_CHECK_POS( "Pos[0]", xx1, xx2, pos[0] )
+ REGRESS_CHECK_POS( "Pos[1]", xx1, xx2, pos[1] )
+ REGRESS_CHECK_POS( "C[0]", xx1, xx2, c[0] )
+ REGRESS_CHECK_POS( "C[1]", xx1, xx2, c[1] )
+ REGRESS_CHECK_ANGLE( "A[0]", xx1, xx2, a[0] )
+ REGRESS_CHECK_ANGLE( "A[1]", xx1, xx2, a[1] )
+ REGRESS_CHECK_DIST( "R[0]", xx1, xx2, r[0] )
+ REGRESS_CHECK_DIST( "R[1]", xx1, xx2, r[1] )
+ REGRESS_CHECK_DIST( "MinCurveRadius", xx1, xx2, minCurveRadius )
+ REGRESS_CHECK_DIST( "MaxRateofChange", xx1, xx2, maxRateofChange )
+ REGRESS_CHECK_DIST( "Length", xx1, xx2, length )
+ REGRESS_CHECK_ANGLE( "WindingAngle", xx1, xx2, windingAngle )
// CHECK arcSegs
- REGRESS_CHECK_POS( "DescOff", xx1, xx2, cornuData.descriptionOff )
+ REGRESS_CHECK_POS( "DescOff", xx1, xx2, descriptionOff )
// CHECK cornuPath
return TRUE;
}
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
+};
@@ -1532,29 +1558,32 @@ 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 extraData *xx;
+ struct extraDataCornu_t *xx;
track_p p;
p = NewTrack( 0, T_CORNU, 2, sizeof *xx );
- xx = GetTrkExtraData(p);
- xx->cornuData.pos[0] = pos[0];
- xx->cornuData.pos[1] = pos[1];
- xx->cornuData.a[0] = angle[0];
- xx->cornuData.a[1] = angle[1];
- xx->cornuData.r[0] = radius[0];
- xx->cornuData.r[1] = radius[1];
- xx->cornuData.c[0] = center[0];
- xx->cornuData.c[1] = center[1];
-
- if (!FixUpCornu0(xx->cornuData.pos,xx->cornuData.c,xx->cornuData.a,xx->cornuData.r, xx)) {
- ErrorMessage("Create Cornu Failed");
- return NULL;
+ 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;
}
-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->cornuData.a[0]);
- SetTrkEndPoint( p, 1, pos[1], xx->cornuData.a[1]);
+ SetTrkEndPoint( p, 0, pos[0], xx->a[0]);
+ SetTrkEndPoint( p, 1, pos[1], xx->a[1]);
CheckTrackLength( p );
SetTrkBits( p, TB_HIDEDESC );
return p;
diff --git a/app/bin/tcornu.h b/app/bin/tcornu.h
index 5684373..cc4ddcf 100644
--- a/app/bin/tcornu.h
+++ b/app/bin/tcornu.h
@@ -16,47 +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
*/
-typedef struct {
- 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;
- } cornuData_t;
+#include "common.h"
+
+typedef struct 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_t * tempsegs, int count);
-DIST_T CornuDistance( coOrd *, coOrd[2], ANGLE_T[2], DIST_T[2], trkSeg_t * ,int , double * );
-BOOL_T FixUpCornu(coOrd pos[2], track_p [2], EPINX_T ep[2], struct extraData* xx);
-BOOL_T FixUpCornu0(coOrd pos[2], coOrd center[2], ANGLE_T angle[2], DIST_T radius[2], struct extraData* 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);
@@ -65,5 +76,6 @@ BOOL_T GetBezierSegmentsFromCornu(track_p, dynArr_t *, BOOL_T);
char * CreateSegPathList(track_p trk);
+BOOL_T GetCornuMiddle( track_p trk, coOrd * pos);
diff --git a/app/bin/tcurve.c b/app/bin/tcurve.c
index 00d1ef5..65b6bcc 100644
--- a/app/bin/tcurve.c
+++ b/app/bin/tcurve.c
@@ -17,37 +17,29 @@
*
* 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 <math.h>
-#include <string.h>
-
#include "ccurve.h"
#include "cjoin.h"
#include "cstraigh.h"
#include "cundo.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "common-ui.h"
static TRKTYP_T T_CURVE = -1;
-struct extraData {
- coOrd pos;
- DIST_T radius;
- BOOL_T circle;
- long helixTurns;
- coOrd descriptionOff;
- };
-#define xpos extraData->pos
-#define xradius extraData->radius
-#define xcircle extraData->circle
+typedef struct 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;
@@ -62,20 +54,21 @@ static DIST_T GetLengthCurve( track_p );
static void GetCurveAngles( ANGLE_T *a0, ANGLE_T *a1, track_p trk )
{
- struct extraData *xx = GetTrkExtraData(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 extraData * 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);
@@ -85,7 +78,7 @@ static void SetCurveAngles( track_p p, ANGLE_T a0, ANGLE_T a1, struct extraData
SetTrkEndPoint( p, 1, pos1, NormalizeAngle(a0+a1+90.0) );
}
-static void ComputeCurveBoundingBox( track_p trk, struct extraData * xx )
+static void ComputeCurveBoundingBox( track_p trk, struct extraDataCurve_t * xx )
{
coOrd p = xx->pos;
DIST_T r = xx->radius;
@@ -112,16 +105,15 @@ static void ComputeCurveBoundingBox( track_p trk, struct extraData * xx )
static void AdjustCurveEndPt( track_p t, EPINX_T inx, ANGLE_T a )
{
- struct extraData *xx = GetTrkExtraData(t);
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 );
@@ -131,37 +123,39 @@ 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 );
}
static void GetTrkCurveCenter( track_p t, coOrd *p, DIST_T *r )
{
- struct extraData *xx = GetTrkExtraData(t);
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
*p = xx->pos;
*r = xx->radius;
}
BOOL_T IsCurveCircle( track_p t )
{
- struct extraData *xx;
- if ( GetTrkType(t) != T_CURVE )
+ struct extraDataCurve_t *xx;
+ if ( GetTrkType(t) != T_CURVE ) {
return FALSE;
- xx = GetTrkExtraData(t);
+ }
+ xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
return xx->circle || xx->helixTurns>0;
}
BOOL_T GetCurveMiddle( track_p trk, coOrd * pos )
{
- struct extraData *xx;
+ struct extraDataCurve_t *xx;
ANGLE_T a0, a1;
- if ( GetTrkType(trk) != T_CURVE )
+ if ( GetTrkType(trk) != T_CURVE ) {
return FALSE;
- xx = GetTrkExtraData(trk);
+ }
+ xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
if (xx->circle || xx->helixTurns>0) {
PointOnCircle( pos, xx->pos, xx->radius, 0 );
} else {
@@ -171,44 +165,63 @@ BOOL_T GetCurveMiddle( track_p trk, coOrd * pos )
return TRUE;
}
+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)
{
- struct extraData *xx = GetTrkExtraData(trk);
- coOrd p1;
+ 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))
- return 100000;
+ 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 ) {
- p1.x = xx->pos.x + offset.x;
- p1.y = xx->pos.y + offset.y;
+ pd.x = xx->pos.x + offset.x;
+ pd.y = xx->pos.y + offset.y;
+// p0 = pd;
+// p1 = pd;
} else {
GetCurveAngles( &a0, &a1, trk );
- ratio = ( offset.x + 1.0 ) / 2.0;
- a = a0 + ratio * a1;
- ratio = ( offset.y + 1.0 ) / 2.0;
- Translate( &p1, xx->pos, a, xx->radius * ratio );
- }
- if (hidden) *hidden = (GetTrkBits( trk ) & TB_HIDEDESC);
- *dpos = p1;
- return FindDistance( p1, pos );
+ ratio = offset.x;
+ if (!IsCurveCircle( trk )) {
+ a = NormalizeAngle(a0 + a1/2.0 + ratio * a1/ 2.0);
+ } 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; }
+ Translate( &pd, xx->pos, a, xx->radius * ratio );
+ }
+ if (hidden) { *hidden = (GetTrkBits( trk ) & TB_HIDEDESC); }
+ *dpos = pd;
+
+ coOrd tpos = 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 )
{
- struct extraData *xx = GetTrkExtraData(trk);
wFont_p fp;
coOrd pos, p0, p1;
DIST_T elev0, elev1, dist, grade=0, sep=0;
@@ -216,11 +229,14 @@ 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 ) {
pos = xx->pos;
pos.x += xx->descriptionOff.x;
@@ -228,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);
@@ -240,16 +256,20 @@ static void DrawCurveDescription(
}
fp = wStandardFont( F_TIMES, FALSE, FALSE );
if (elevValid)
- sprintf( message, _("Helix: turns=%ld len=%0.2f grade=%0.1f%% sep=%0.2f"),
- xx->helixTurns,
- dist,
- grade*100.0,
- sep );
+ sprintf( message, _("Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"),
+ xx->helixTurns,
+ dist,
+ grade*100.0,
+ sep );
else
- sprintf( message, _("Helix: turns=%ld len=%0.2f"),
- xx->helixTurns,
- dist );
- DrawBoxedString( BOX_BOX, d, pos, message, fp, (wFontSize_t)descriptionFontSize, color, 0.0 );
+ sprintf( message, _("Helix: Turns %ld L %0.2f"),
+ 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 );
} else {
dist = trackGauge/2.0;
DrawArc( d, xx->pos, dist, 0.0, 360.0, FALSE, 0, color );
@@ -260,81 +280,93 @@ static void DrawCurveDescription(
Translate( &p1, xx->pos, 180.0, dist );
DrawLine( d, p0, p1, 0, color );
GetCurveAngles( &a0, &a1, trk );
- ratio = ( xx->descriptionOff.x + 1.0 ) / 2.0;
- a = a0 + ratio * a1;
+ ratio = xx->descriptionOff.x; // 1.0 to - 1.0
+ if (! IsCurveCircle( trk )) {
+ a = NormalizeAngle(ratio*a1/2.0 + a0 + a1/2.0);
+ } else {
+ a = NormalizeAngle(ratio*360.0+a0);
+ }
PointOnCircle( &p0, xx->pos, xx->radius, a );
- sprintf( message, "R %s", FormatDistance( xx->radius ) );
- ratio = ( xx->descriptionOff.y + 1.0 ) / 2.0;
- DrawDimLine( d, xx->pos, p0, message, (wFontSize_t)descriptionFontSize, ratio, 0, color, 0x11 );
+ coOrd end0, end1;
+ DIST_T off;
+ Translate(&end0,xx->pos,a0,xx->radius);
+ 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 (! 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 );
+
+ 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);
+
+ AddTrkDetails(d, trk, details_pos, a1/180.0*M_PI*xx->radius, color);
+ }
}
+
}
STATUS_T CurveDescriptionMove(
- track_p trk,
- wAction_t action,
- coOrd pos )
+ track_p trk,
+ wAction_t action,
+ coOrd pos )
{
- struct extraData *xx = GetTrkExtraData(trk);
- static coOrd p0,p1;
- static BOOL_T editMode;
- wDrawColor color;
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
+// static coOrd p0,p1;
+// wDrawColor color;
ANGLE_T a, a0, a1;
DIST_T d;
- p0 = xx->pos;
+// p0 = xx->pos;
- switch (action) {
- case C_DOWN:
- DrawCurveDescription( trk, &mainD, wDrawColorWhite );
- case C_MOVE:
- case C_UP:
- editMode = TRUE;
- 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;
- } else {
- p1 = pos;
- GetCurveAngles( &a0, &a1, trk );
- if ( a1 < 1 ) a1 = 1.0;
- a = FindAngle( xx->pos, pos );
- if ( ! IsCurveCircle( trk ) ) {
- a = NormalizeAngle( a - a0 );
- if ( a > a1 ) {
- if ( a < a1 + ( 360.0 - a1 ) / 2 ) {
- a = a1;
- } else {
- a = 0.0;
- }
+// 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;
+ } else {
+// p1 = pos;
+ GetCurveAngles( &a0, &a1, trk );
+ if ( a1 < 1 ) { a1 = 1.0; }
+ a = FindAngle( xx->pos, pos );
+ if ( ! IsCurveCircle( trk ) ) {
+ a = NormalizeAngle( a - a0 );
+ if ( a > a1 ) {
+ if ( a < a1 + ( 360.0 - a1 ) / 2 ) {
+ a = a1;
+ } else {
+ a = 0.0;
}
}
- xx->descriptionOff.x = ( a / a1 ) * 2.0 - 1.0;
- d = FindDistance( xx->pos, pos ) / xx->radius;
- if ( d > 0.9 )
- d = 0.9;
- if ( d < 0.1 )
- d = 0.1;
- xx->descriptionOff.y = d * 2.0 - 1.0;
+ xx->descriptionOff.x = ( a / a1 ) * 2.0 - 1.0; // -1 to 1, 0 in middle
+ } else {
+ a = FindAngle(xx->pos,pos);
GetCurveAngles( &a0, &a1, trk );
- a = a0 + (0.5 * a1);
- PointOnCircle( &p0, xx->pos, xx->radius/2, a );
+ xx->descriptionOff.x = NormalizeAngle((a - a0)/360.0);
}
- if (action == C_UP) {
- editMode = FALSE;
- DrawCurveDescription( trk, &mainD, wDrawColorBlack );
+ d = FindDistance( xx->pos, pos ) / xx->radius;
+ if ( d > 1.0 ) {
+ d = 1.0;
}
- return action==C_UP?C_TERMINATE:C_CONTINUE;
-
- case C_REDRAW:
- if (editMode) {
- DrawLine( &tempD, p0, p1, 0, wDrawColorBlue );
- DrawCurveDescription( trk, &tempD, wDrawColorBlue );
+ if ( d < 0.0 ) {
+ d = 0.0;
}
- break;
-
+ xx->descriptionOff.y = d-0.5; // -0.5 to 0.5, 0 in the middle
}
+
return C_CONTINUE;
}
@@ -345,51 +377,53 @@ 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_("Pivot"), &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 )
{
- struct extraData *xx = GetTrkExtraData(trk);
BOOL_T updateEndPts;
ANGLE_T a0, a1;
EPINX_T ep;
- struct extraData xx0;
FLOAT_T turns;
- if ( inx == -1 )
+ if ( inx == -1 ) {
return;
- xx0 = *xx;
+ }
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
+ struct extraDataCurve_t xx0 = *xx;
updateEndPts = FALSE;
GetCurveAngles( &a0, &a1, trk );
switch ( inx ) {
@@ -486,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 ) {
@@ -504,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;
@@ -527,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;
}
@@ -540,34 +577,36 @@ static void UpdateCurve( track_p trk, int inx, descData_p descUpd, BOOL_T final
static void DescribeCurve( track_p trk, char * str, CSIZE_T len )
{
- struct extraData *xx = GetTrkExtraData(trk);
ANGLE_T a0, a1;
DIST_T d;
int fix0, fix1;
FLOAT_T turns;
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
GetCurveAngles( &a0, &a1, trk );
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;
@@ -591,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;
@@ -602,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 ) {
@@ -633,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;
@@ -649,9 +690,9 @@ static void DescribeCurve( track_p trk, char * str, CSIZE_T len )
static DIST_T DistanceCurve( track_p t, coOrd * p )
{
- struct extraData *xx = GetTrkExtraData(t);
ANGLE_T a0, a1;
DIST_T d;
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
GetCurveAngles( &a0, &a1, t );
if ( xx->helixTurns > 0 ) {
a0 = 0.0;
@@ -663,49 +704,191 @@ static DIST_T DistanceCurve( track_p t, coOrd * p )
static void DrawCurve( track_p t, drawCmd_p d, wDrawColor color )
{
- struct extraData *xx = GetTrkExtraData(t);
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,
- GetTrkEndPos(t,0), GetTrkEndPos(t,1),
- 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 )
{
}
static BOOL_T WriteCurve( track_p t, FILE * f )
{
- struct extraData *xx = GetTrkExtraData(t);
+ 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 ) == ( xx->helixTurns > 0 ) )
+ 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;
+ }
+ 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;
@@ -714,7 +897,7 @@ static BOOL_T WriteCurve( track_p t, FILE * f )
static BOOL_T ReadCurve( char * line )
{
- struct extraData *xx;
+ struct extraDataCurve_t *xx;
track_p t;
wIndex_t index;
BOOL_T visible;
@@ -728,47 +911,61 @@ 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 = GetTrkExtraData(t);
+ xx = GET_EXTRA_DATA(t, T_CURVE, extraDataCurve_t);
xx->helixTurns = helixTurns;
xx->descriptionOff = descriptionOff;
if ( paramVersion < 3 ) {
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 );
SetTrkWidth(t, (int)(options&3));
xx->pos = p;
xx->radius = r;
- if ( ( ( options & 0x80 ) != 0 ) == ( xx->helixTurns > 0 ) )
- SetTrkBits(t,TB_HIDEDESC);
+ if ( paramVersion < VERSION_DESCRIPTION2 ) {
+ if ( xx->helixTurns <= 0 ) {
+ // Descriptions on by default for helix, off for curves
+ SetTrkBits(t,TB_HIDEDESC);
+ }
+ } else {
+ 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;
}
static void MoveCurve( track_p trk, coOrd orig )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
xx->pos.x += orig.x;
xx->pos.y += orig.y;
ComputeCurveBoundingBox( trk, xx );
@@ -776,32 +973,34 @@ static void MoveCurve( track_p trk, coOrd orig )
static void RotateCurve( track_p trk, coOrd orig, ANGLE_T angle )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
Rotate( &xx->pos, orig, angle );
ComputeCurveBoundingBox( trk, xx );
}
static void RescaleCurve( track_p trk, FLOAT_T ratio )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
xx->pos.x *= ratio;
xx->pos.y *= 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 extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
ANGLE_T a, a0, a1;
track_p trk1;
@@ -818,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;
}
@@ -828,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;
@@ -841,61 +1041,70 @@ static BOOL_T SplitCurve( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
static BOOL_T TraverseCurve( traverseTrack_p trvTrk, DIST_T * distR )
{
track_p trk = trvTrk->trk;
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
ANGLE_T a, a0, a1, a2, a3;
DIST_T arcDist;
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;
@@ -936,28 +1145,32 @@ static BOOL_T TraverseCurve( traverseTrack_p trvTrk, DIST_T * distR )
static BOOL_T EnumerateCurve( track_p trk )
{
- struct extraData *xx;
+ struct extraDataCurve_t *xx;
ANGLE_T a0, a1;
DIST_T d;
if (trk != NULL) {
- xx = GetTrkExtraData(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 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;
ANGLE_T a, aa;
ANGLE_T a0, a1;
coOrd pos, center;
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
if (xx->helixTurns>0) {
ErrorMessage( MSG_CANT_TRIM_HELIX );
return FALSE;
@@ -973,48 +1186,56 @@ 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 )
{
- struct extraData *xx0 = GetTrkExtraData(trk0);
- struct extraData *xx1 = GetTrkExtraData(trk1);
ANGLE_T a00, a01, a10, a11;
DIST_T d;
track_p trk2;
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 );
@@ -1034,7 +1255,8 @@ static BOOL_T MergeCurve(
ConnectTracks( trk0, ep0, trk2, ep2 );
}
DrawNewTrack( trk0 );
- ComputeCurveBoundingBox( trk0, GetTrkExtraData(trk0) );
+ ComputeCurveBoundingBox( trk0, GET_EXTRA_DATA(trk0, T_CURVE,
+ extraDataCurve_t) );
return TRUE;
}
@@ -1055,109 +1277,114 @@ static STATUS_T ModifyCurve( track_p trk, wAction_t action, coOrd pos )
ANGLE_T a, aa1, aa2;
DIST_T r, d;
track_p trk1;
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t *xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
switch ( action ) {
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 );
@@ -1165,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 );
@@ -1185,43 +1412,47 @@ static DIST_T GetLengthCurve( track_p trk )
DIST_T dist, rad;
ANGLE_T a0, a1;
coOrd cen;
- struct extraData *xx = GetTrkExtraData(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 )
{
- struct extraData *xx = GetTrkExtraData(trk);
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);
if ( inx == PARAMS_EXTEND && ( IsCurveCircle(trk) || xx->helixTurns > 0 ) ) {
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 ) ) {
@@ -1229,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;
}
@@ -1247,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;
}
@@ -1262,7 +1496,7 @@ static BOOL_T MoveEndPtCurve( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d0 )
static BOOL_T QueryCurve( track_p trk, int query )
{
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t * xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
switch ( query ) {
case Q_CAN_PARALLEL:
case Q_CAN_MODIFYRADIUS:
@@ -1276,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 );
@@ -1289,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:
@@ -1301,49 +1536,49 @@ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataCurve_t * xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
FlipPoint( &xx->pos, orig, angle );
ComputeCurveBoundingBox( trk, xx );
}
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 extraData * xx = GetTrkExtraData(trk);
- struct extraData * xx1;
+ struct extraDataCurve_t * xx = GET_EXTRA_DATA(trk, T_CURVE, extraDataCurve_t);
+ struct extraDataCurve_t * xx1;
DIST_T rad;
ANGLE_T a0, a1;
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) {
*newTrkR = NewCurvedTrack( xx->pos, rad, a0, a1, 0 );
- xx1 = GetTrkExtraData(*newTrkR);
+ 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;
@@ -1359,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 extraData * ed1 = GetTrkExtraData( trk1 );
- struct extraData * ed2 = GetTrkExtraData( 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 );
char * cp = message+strlen(message);
REGRESS_CHECK_POS( "POS", ed1, ed2, pos )
REGRESS_CHECK_DIST( "RADIUS", ed1, ed2, radius )
@@ -1388,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;
@@ -1448,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 -
@@ -1462,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;
@@ -1483,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);
@@ -1491,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:
@@ -1522,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:
@@ -1536,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;
}
}
@@ -1576,12 +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)
+ 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;
@@ -1589,34 +1847,55 @@ 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;
if (a1<180.0) {
a2 = NormalizeAngle( angle + 90.0 );
- if (constrain)
- curveData->curveRadius = ConstrainR( d0/sin(D2R(a1)) );
- else
- curveData->curveRadius = d0/sin(D2R(a1));
+ if (desired_r > 0.0) {
+ if (IsClose(fabs(d0/sin(D2R(a1))-desired_r))) {
+ curveData->curveRadius = desired_r;
+ found = TRUE;
+ }
+ }
+ if (!found) {
+ if (constrain) {
+ curveData->curveRadius = ConstrainR( d0/sin(D2R(a1)) );
+ } else {
+ curveData->curveRadius = d0/sin(D2R(a1));
+ }
+ }
} else {
a1 -= 360.0;
a2 = NormalizeAngle( angle - 90.0 );
- if (constrain)
- curveData->curveRadius = ConstrainR( d0/sin(D2R(-a1)) );
- else
- curveData->curveRadius = d0/sin(D2R(-a1));
+ if (desired_r > 0.0) {
+ if (IsClose(fabs(d0/sin(D2R(-a1))-desired_r))) {
+ curveData->curveRadius = desired_r;
+ found = TRUE;
+ }
+ }
+ if (!found) {
+ if (constrain) {
+ curveData->curveRadius = ConstrainR( d0/sin(D2R(-a1)) );
+ } else {
+ curveData->curveRadius = d0/sin(D2R(-a1));
+ }
+ }
}
if (curveData->curveRadius > 1000) {
LOG( log_curve, 3, ( "Straight %0.3f > 1000\n", curveData->curveRadius ) )
@@ -1627,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;
@@ -1637,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;
}
}
@@ -1661,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:
@@ -1671,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 );
@@ -1694,25 +1979,29 @@ 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 extraData *xx;
+ struct extraDataCurve_t *xx;
track_p p;
p = NewTrack( 0, T_CURVE, 2, sizeof *xx );
- xx = GetTrkExtraData(p);
+ xx = GET_EXTRA_DATA(p, T_CURVE, extraDataCurve_t);
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 dec0801..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.
@@ -60,8 +60,6 @@ For a better representation of this, build 'testjoin' and
do 'testjoin psplot 10 10 40 1 | lpr -Ppostscript'
*/
-#include <math.h>
-
#include "common.h"
#include "track.h"
#include "tcornu.h"
@@ -71,35 +69,26 @@ do 'testjoin psplot 10 10 40 1 | lpr -Ppostscript'
#include "cjoin.h"
#include "cundo.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
-#include "utility.h"
+#include "common-ui.h"
static TRKTYP_T T_EASEMENT = -1;
static ANGLE_T JOINT_ANGLE_INCR = 2.0;
-struct extraData {
- 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 */
- };
-
-#define xl0 extraData->l0
-#define xl1 extraData->l1
-#define xR extraData->R
-#define xL extraData->L
-#define xflip extraData->flip
-#define xnegate extraData->negate
-#define xScurve extraData->Scurve
-#define xpos extraData->pos
-#define xangle extraData->angle
+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;
+
#define EASE_MIN_X (0.01)
@@ -108,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!
@@ -121,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;
@@ -143,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.
@@ -167,35 +158,40 @@ static void ComputeJoinPos(
ANGLE_T a;
DIST_T r;
coOrd pp, pc;
- if (l==0.0)
- r = 100000.0;
- else
+ if (l==0.0) {
+ r = DIST_INF;
+ } 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
@@ -220,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;
@@ -234,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;
@@ -267,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;
@@ -275,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
@@ -289,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;
@@ -297,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;
}
@@ -367,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;
@@ -390,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),
@@ -406,13 +406,15 @@ static track_p NewJoint(
*/
{
track_p trk;
- struct extraData *xx;
+ 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() );
- xx = GetTrkExtraData( trk );
+ xx = GET_EXTRA_DATA( trk, T_EASEMENT, extraDataEase_t );
SetTrkEndPoint( trk, 0, pos0, NormalizeAngle(angle0+180.0) );
SetTrkEndPoint( trk, 1, pos1, NormalizeAngle(angle1+180.0) );
xx->R = R;
@@ -441,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;
@@ -459,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;
}
@@ -474,76 +477,83 @@ LOG( log_ease, 1, ( "NewJoint( [%0.3f %0.3f] A%0.3f, [%0.3f %0.3f] A%0.3f\n B
static DIST_T GetLengthJoint( track_p trk )
{
- struct extraData *xx;
+ struct extraDataEase_t *xx;
DIST_T d0, d1;
- xx = GetTrkExtraData(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 )
{
- struct extraData *xx;
+ struct extraDataEase_t *xx;
DIST_T d0, d1, d3;
- xx = GetTrkExtraData(trk);
+ xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
d0 = JoinD( xx->l0, xx->R+(GetTrkGauge(trk)/2.0), xx->L );
d1 = JoinD( xx->l1, xx->R+(GetTrkGauge(trk)/2.0), xx->L );
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_("Pivot"), &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;
@@ -557,21 +567,23 @@ 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.
*/
{
- struct extraData *xx = GetTrkExtraData(trk);
+ 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;
@@ -588,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.
*/
@@ -631,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 );
@@ -675,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 extraData * xx = GetTrkExtraData(trk);
- return JointDistance( p, xx->pos, xx->angle, xx->l0, xx->l1, xx->R, xx->L, xx->negate, xx->Scurve );
+ 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 );
}
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).
@@ -710,6 +729,7 @@ static void DrawJointSegment(
coOrd p0, p1;
ANGLE_T a0, a1;
int cnt1;
+ wDrawWidth thick = 3;
ComputeJoinPos( l0, R, L, NULL, &a0, NULL, NULL );
ComputeJoinPos( l1, R, L, NULL, &a1, NULL, NULL );
@@ -723,61 +743,164 @@ static void DrawJointSegment(
a0 += a1;
ll = sqrt( sin(D2R(a0)) * 2 * R * L );
GetJointPos( &p1, NULL, ll, R, L, P, A, N );
+ if (widthOptions&DTS_CENTERONLY) {
+ 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 )
+{
+ struct extraDataEase_t *xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
+ ANGLE_T ap;
+ coOrd end0, end1;
+ end0 = GetTrkEndPos(trk,0);;
+ end1 = GetTrkEndPos(trk,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; }
+
+ return C_CONTINUE;
+}
+
+DIST_T JointDescriptionDistance(
+ 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)) {
+ return DIST_INF;
+ }
+
+ struct extraDataEase_t *xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
+ coOrd end0, end0off, end1, end1off;
+ end0 = GetTrkEndPos(trk,0);
+ end1 = GetTrkEndPos(trk,1);
+ ANGLE_T a = FindAngle(end0,end1);
+ Translate(&end0off,end0,a+90,xx->descriptionOff.y);
+ Translate(&end1off,end1,a+90,xx->descriptionOff.y);
+
+ 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); }
+ *dpos = p1;
+
+ coOrd tpos = 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 )
+{
+// DIST_T grade=0, sep=0;
+ ANGLE_T a;
+ if (layoutLabels == 0) {
+ return;
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0 ) {
+ return;
+ }
+
+ coOrd end0, end0off, end1, end1off;
+ end0 = GetTrkEndPos(trk,0);
+ end1 = GetTrkEndPos(trk,1);
+ a = FindAngle(end0,end1);
+ struct extraDataEase_t *xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
+ Translate(&end0off,end0,a+90,xx->descriptionOff.y);
+ 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));
+ 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 );
+
+ 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);
+
+ AddTrkDetails(d, trk, details_pos, FindDistance(end0,end1), color);
+ }
+
+
+}
+
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;
@@ -787,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;
@@ -800,76 +923,86 @@ 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 ) )
-#ifdef LATER
- scale2rail = (d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale;
-
-#ifdef WINDOWS
- width *= (wDrawWidth)(d->dpi/mainD.dpi);
-#else
- if (d->options&DC_PRINT)
- width *= 300/75;
-#endif
-#endif
- 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 );
+ }
+
}
static void DrawJoint(
- track_p trk,
- drawCmd_p d,
- wDrawColor color )
+ track_p trk,
+ drawCmd_p d,
+ wDrawColor color )
/*
* Draw a transition-curve.
*/
{
- struct extraData * xx = GetTrkExtraData(trk);
+ 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 extraData * xx = GetTrkExtraData(t);
+ struct extraDataEase_t * xx = GET_EXTRA_DATA(t, T_EASEMENT, extraDataEase_t);
BOOL_T rc = TRUE;
- 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\n",
- GetTrkIndex(t), GetTrkLayer(t), (long)GetTrkWidth(t),
- GetTrkScaleName(t), GetTrkVisible(t), xx->l0, xx->l1, xx->R, xx->L,
- xx->flip, xx->negate, xx->Scurve, xx->pos.x, xx->pos.y, xx->angle )>0;
+ int bits;
+ long options = (long)GetTrkWidth(t);
+ 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,
+ "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;
@@ -877,7 +1010,7 @@ static BOOL_T WriteJoint(
}
static BOOL_T ReadJoint(
- char * line )
+ char * line )
/*
* Read track data from a file (f).
*/
@@ -885,32 +1018,49 @@ static BOOL_T ReadJoint(
track_p trk;
TRKINX_T index;
BOOL_T visible;
- struct extraData e, *xx;
+ struct extraDataEase_t e, *xx;
char scale[10];
wIndex_t layer;
long options;
DIST_T elev;
+ char * cp = NULL;
+ coOrd descriptionOff = {0.0,0.0};
- if ( !GetArgs( line+6, paramVersion<3?"dXZsdffffdddpYf":paramVersion<9?"dLl00sdffffdddpYf":"dLl00sdffffdddpff",
- &index, &layer, &options, scale, &visible, &e.l0, &e.l1, &e.R, &e.L,
- &e.flip, &e.negate, &e.Scurve, &e.pos, &elev, &e.angle) )
+ 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 ( !ReadSegs() )
+ }
+ if (cp) {
+ if (!GetArgs(cp,"p",&descriptionOff)) {
+ return FALSE;
+ }
+ }
+ if ( !ReadSegs() ) {
return FALSE;
+ }
trk = NewTrack( index, T_EASEMENT, 0, sizeof e );
- xx = GetTrkExtraData(trk);
+ xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
+ xx->descriptionOff = descriptionOff;
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);
SetTrkWidth(trk, (int)(options&3));
+ if ( paramVersion < VERSION_DESCRIPTION2 || ( ( options & 0x80 ) == 0 ) ) {
+ SetTrkBits(trk,TB_HIDEDESC);
+ }
+ e.base.trkType = T_EASEMENT;
*xx = e;
SetEndPts( trk, 2 );
ComputeBoundingBox( trk );
@@ -918,27 +1068,27 @@ static BOOL_T ReadJoint(
}
static void MoveJoint(
- track_p trk,
- coOrd orig )
+ track_p trk,
+ coOrd orig )
/*
* Move a track.
*/
{
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
xx->pos.x += orig.x;
xx->pos.y += orig.y;
ComputeBoundingBox( trk );
}
static void RotateJoint(
- track_p trk,
- coOrd orig,
- ANGLE_T angle )
+ track_p trk,
+ coOrd orig,
+ ANGLE_T angle )
/*
* Rotate a track.
*/
{
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
Rotate( &xx->pos, orig, angle );
xx->angle = NormalizeAngle( xx->angle+angle );
ComputeBoundingBox( trk );
@@ -947,7 +1097,7 @@ static void RotateJoint(
static void RescaleJoint( track_p trk, FLOAT_T ratio )
{
- struct extraData *xx = GetTrkExtraData(trk);
+ struct extraDataEase_t *xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
xx->pos.x *= ratio;
xx->pos.y *= ratio;
xx->R *= ratio;
@@ -957,11 +1107,12 @@ 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 )
{
- struct extraData * xx = GetTrkExtraData(trk);
DIST_T l;
ANGLE_T a;
+ struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
if ( ep0 && ep1 ) {
if (xx->flip) {
*ep0 = 1;
@@ -971,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 );
@@ -988,13 +1140,13 @@ static ANGLE_T GetAngleJoint( track_p trk, coOrd pos, EPINX_T * ep0, EPINX_T * e
static void SplitJointA(
- coOrd * posR,
- EPINX_T ep,
- struct extraData * xx,
- struct extraData * xx1,
- ANGLE_T * aR )
+ coOrd * posR,
+ EPINX_T ep,
+ struct extraDataEase_t * xx,
+ struct extraDataEase_t * xx1,
+ ANGLE_T * aR )
{
- struct extraData * xx0;
+ struct extraDataEase_t * xx0;
BOOL_T flip;
DIST_T l;
@@ -1007,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;
@@ -1041,20 +1195,22 @@ 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 extraData *xx, *xx1;
+ struct extraDataEase_t *xx, *xx1;
track_p trk1;
ANGLE_T a;
- xx = GetTrkExtraData(trk);
+ xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
trk1 = NewTrack( 0, T_EASEMENT, 2, sizeof *xx );
- xx1 = GetTrkExtraData(trk1);
+ xx1 = GET_EXTRA_DATA(trk1, T_EASEMENT, extraDataEase_t);
*xx1 = *xx;
SetTrkEndPoint( trk1, ep, GetTrkEndPos(trk,ep), GetTrkEndAngle(trk,ep) );
*leftover = trk1;
@@ -1071,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;
@@ -1119,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;
@@ -1130,46 +1289,52 @@ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
BOOL_T rc;
EPINX_T ep;
ANGLE_T angle;
@@ -1177,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 );
@@ -1196,11 +1364,13 @@ static BOOL_T EnumerateJoint( track_p trk )
{
if (trk != NULL) {
ScaleLengthIncrement( GetTrkScale(trk), GetFlexLengthJoint(trk) );
+ return TRUE;
}
- return TRUE;
+ 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;
@@ -1208,31 +1378,34 @@ 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;
coOrd pos;
ANGLE_T a;
- struct extraData *xx0 = GetTrkExtraData(trk0);
- struct extraData *xx1 = GetTrkExtraData(trk1);
+ 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 );
@@ -1261,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);
@@ -1287,7 +1464,7 @@ static BOOL_T MoveEndPtJoint( track_p *trk, EPINX_T *ep, coOrd pos, DIST_T d )
static BOOL_T QueryJoint( track_p trk, int query )
{
- struct extraData * xx = GetTrkExtraData(trk);
+ struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
track_p trk1;
switch ( query ) {
@@ -1298,12 +1475,16 @@ 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;
+ case Q_HAS_DESC:
+ return TRUE;
default:
return FALSE;
}
@@ -1311,11 +1492,11 @@ 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 extraData * xx = GetTrkExtraData(trk);
+ struct extraDataEase_t * xx = GET_EXTRA_DATA(trk, T_EASEMENT, extraDataEase_t);
FlipPoint( &xx->pos, orig, angle );
xx->angle = NormalizeAngle( 2*angle - xx->angle );
xx->negate = !xx->negate;
@@ -1324,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 extraData * xx = GetTrkExtraData(trk), *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 );
@@ -1361,31 +1547,32 @@ 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 ) {
if (track) {
*newTrkR = NewTrack( 0, T_EASEMENT, 2, sizeof *xx );
- xx1 = GetTrkExtraData( *newTrkR );
+ xx1 = GET_EXTRA_DATA( *newTrkR, T_EASEMENT, extraDataEase_t );
*xx1 = *xx;
xx1->angle = A;
xx1->R = R;
@@ -1400,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 );
@@ -1416,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 );
@@ -1438,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 extraData *xx1 = GetTrkExtraData( trk1 );
- struct extraData *xx2 = GetTrkExtraData( 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 );
char * cp = message + strlen(message);
REGRESS_CHECK_DIST( "L0", xx1, xx2, l0 );
REGRESS_CHECK_DIST( "L1", xx1, xx2, l1 );
@@ -1462,52 +1649,53 @@ 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;
BOOL_T flip;
- struct extraData * xx, xxx[2];
+ struct extraDataEase_t * xx, xxx[2];
coOrd p;
int inx;
EPINX_T ep0;
@@ -1515,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;
@@ -1559,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:
@@ -1572,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:
@@ -1581,7 +1787,7 @@ LOG( log_traverseJoint, 1, ( "TJ0: ?[%0.3f %0.3f] A=%0.3f l=%0.3f J[%0.3f %0.3f]
case SEGPROC_NEWTRACK:
data->newTrack.trk = NewTrack( 0, T_EASEMENT, 2, sizeof *xx );
- xx = GetTrkExtraData(data->newTrack.trk);
+ xx = GET_EXTRA_DATA(data->newTrack.trk, T_EASEMENT, extraDataEase_t);
xx->pos = segPtr->u.j.pos;
xx->angle = segPtr->u.j.angle;
xx->l0 = segPtr->u.j.l0;
@@ -1592,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;
@@ -1613,13 +1824,18 @@ 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:
+ xxx[0].base.trkType = T_EASEMENT;
+ xxx[1].base.trkType = T_EASEMENT;
xxx[0].pos = segPtr->u.j.pos;
xxx[0].angle = segPtr->u.j.angle;
xxx[0].l0 = segPtr->u.j.l0;
@@ -1642,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;
@@ -1671,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
@@ -1691,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 );
}
@@ -1706,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) {
@@ -1741,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 );
@@ -1754,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 extraData * xx;
+ struct extraDataEase_t * xx;
DIST_T d;
- if ( GetTrkType(trk1) != T_EASEMENT )
+ if ( GetTrkType(trk1) != T_EASEMENT ) {
return;
- xx = GetTrkExtraData(trk1);
- if ( ep1 == 0 )
+ }
+ xx = GET_EXTRA_DATA(trk1, T_EASEMENT, extraDataEase_t);
+ 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 );
@@ -1820,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 )
{
}
@@ -1829,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.
*/
@@ -1842,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;
@@ -1866,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 );
}
}
@@ -1892,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[] )
@@ -1940,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[] )
@@ -1962,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);
@@ -1973,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 331cfb5..40390bf 100644
--- a/app/bin/textnoteui.c
+++ b/app/bin/textnoteui.c
@@ -2,86 +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.
- */
-
-#include <string.h>
-#include <stdbool.h>
+/* 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 "i18n.h"
#include "misc.h"
#include "note.h"
#include "param.h"
#include "shortentext.h"
-#include "track.h"
-#include "wlib.h"
+#include "track.h"
-static struct extraDataNote 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, (void*)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, sizeof textEditPLs / sizeof textEditPLs[0] };
-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)
/**
@@ -93,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;
@@ -126,11 +83,8 @@ TextDlgUpdate(
static void
TextEditCancel( wWin_p junk )
{
- if (inDescribeCmd) {
- UpdateText(&noteDataInUI, CANCEL_NOTE, FALSE);
- }
ResetIfNotSticky();
- wHide(textEditW);
+ wHide(textNoteW);
}
/**
@@ -143,52 +97,59 @@ 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();
- FileIsChanged();
+ SetFileChanged();
}
/**
* 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 *xx = (struct extraDataNote *)GetTrkExtraData(trk);
-
// 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);
}
/**
@@ -201,7 +162,7 @@ CreateEditTextNote(track_p trk, char *title)
void DescribeTextNote(track_p trk, char * str, CSIZE_T len)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
char *noteText;
DynString statusLine;
@@ -209,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 * xx = (struct extraDataNote *)GetTrkExtraData(trk);
+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 c9ec7db..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,16 +17,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 <assert.h>
-#include <time.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <math.h>
-#include <string.h>
-
#include "ccurve.h"
#include "cjoin.h"
#include "compound.h"
@@ -36,36 +29,36 @@
#include "custom.h"
#include "draw.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "paths.h"
#include "track.h"
-#include "utility.h"
+#include "trackx.h"
+#include "trkendpt.h"
#include "misc.h"
#include "ctrain.h"
+#include "common-ui.h"
+#include "version.h"
-#ifndef TRACKDEP
-#ifndef FASTTRACK
-#include "trackx.h"
-#endif
-#endif
+#include <inttypes.h>
-#ifndef WINDOWS
-#include <errno.h>
-#else
-// starting from Visual Studio 2015 round is in the runtime library, fake otherwise
-#if ( _MSC_VER < 1900 )
-#define round(x) floor((x)+0.5)
-#endif
-#endif
+#include <stdint.h>
+
+#define SLOG_FMT "0x%.12" PRIxPTR
EXPORT char tempSpecial[4096];
+/** @logcmd @showrefby track=n track.c */
static int log_track = 0;
+/** @logcmd @showrefby endPt=n track.c */
static int log_endPt = 0;
+/** @logcmd @showrefby readTracks=n track.c */
static int log_readTracks = 0;
+/** @logcmd @showrefby timedrawtracks=n track.c */
+static int log_timedrawtracks = 0;
+
+// Enable trkType checks on extraData*_t
+#define CHECK_EXTRA_DATA
/*****************************************************************************
*
@@ -77,15 +70,20 @@ static int log_readTracks = 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 printCenterLines = FALSE; /**< flag to control drawing of centerline in Print */
+EXPORT long centerDrawMode =
+ FALSE; /**< flag to control drawing of circle centers */
-static BOOL_T exportingTracks = FALSE;
EXPORT signed char * pathPtr;
EXPORT int pathCnt = 0;
@@ -101,10 +99,7 @@ EXPORT unsigned int curTrackLayer;
EXPORT coOrd descriptionOff;
EXPORT DIST_T roadbedWidth = 0.0;
-EXPORT DIST_T roadbedLineWidth = 3.0/75.0;
-
-//EXPORT DIST_T minTrackRadius;
-//EXPORT DIST_T maxTrackGrade = 5.0;
+EXPORT DIST_T roadbedLineWidth = 3.0/BASE_DPI;
static int suspendElevUpdates = FALSE;
@@ -114,19 +109,23 @@ EXPORT BOOL_T onTrackInSplit = FALSE;
static BOOL_T inDrawTracks;
-static wBool_t bWriteEndPtDirectIndex = FALSE;
+EXPORT wBool_t bFreeTrack = FALSE;
+
+EXPORT long colorTrack = 0;
+EXPORT long colorDraw = 0;
-#ifndef TRACKDEP
/*****************************************************************************
*
- *
+ *
*
*/
-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);
+ }
}
@@ -150,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;
@@ -173,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;
}
@@ -218,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);
}
@@ -231,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 )
@@ -241,8 +252,9 @@ EXPORT BOOL_T CheckTrackLayerSilent( track_p trk )
return FALSE;
} else if (GetLayerModule( GetTrkLayer( trk ) ) ) {
return FALSE;
- } else
+ } else {
return TRUE;
+ }
}
/******************************************************************************
@@ -252,27 +264,42 @@ EXPORT BOOL_T CheckTrackLayerSilent( track_p trk )
*/
-EXPORT void EnumerateTracks( void )
+EXPORT void EnumerateTracks( void * unused )
{
track_p trk;
TRKINX_T inx;
- enumerateMaxDescLen = strlen("Description");
+ enumerateMaxDescLen = (int)strlen("Description");
+
+ 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)
- trackCmds(trk->type)->enumerate( trk );
+ 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) {
+ InfoMessage(_("No track or structure pieces are present in layout"));
+ } 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();
}
@@ -285,32 +312,33 @@ EXPORT void EnumerateTracks( void )
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 )
{
@@ -328,6 +356,7 @@ EXPORT void InitTrkTrack( void )
log_track = LogFindIndex( "track" );
log_endPt = LogFindIndex( "endPt" );
log_readTracks = LogFindIndex( "readTracks" );
+ log_timedrawtracks = LogFindIndex( "timedrawtracks" );
}
/*****************************************************************************
@@ -337,7 +366,6 @@ EXPORT void InitTrkTrack( void )
*/
-#ifndef FASTTRACK
EXPORT TRKINX_T GetTrkIndex( track_p trk )
{
@@ -346,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;
}
@@ -367,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;
@@ -389,58 +426,53 @@ EXPORT EPINX_T GetTrkEndPtCnt( track_cp trk )
return trk->endCnt;
}
-EXPORT struct extraData * GetTrkExtraData( track_cp trk )
-{
- return trk->extraData;
-}
-EXPORT void SetTrkEndPoint( track_p trk, EPINX_T ep, coOrd pos, ANGLE_T angle )
+EXPORT trkEndPt_p GetTrkEndPt(track_cp trk, EPINX_T ep )
{
- 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;
+ CHECK( ep < GetTrkEndPtCnt(trk) );
+ return EndPtIndex( trk->endPt, ep );
}
-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 )
+EXPORT struct extraDataBase_t * GetTrkExtraData( track_cp trk,
+ TRKTYP_T trkType )
{
- ASSERT( e < trk->endCnt );
- return trk->endPt[e].angle;
+//printf( "GTXD T%d TY%d\n", GetTrkIndex(trk), trkType );
+ if ( IsTrackDeleted(trk) ) {
+ // We've been called by FreeTracks() which is called from
+ // - ClearTracks to remove all tracks
+ // - DoRegression to remove expected track
+ // - UndoStart / UndoDelete
+ // Anywhere else: needs investigation
+ if ( bFreeTrack == FALSE ) {
+ printf( "GetExtraData T%d is deleted!\n", trk->index );
+ }
+ return trk->extraData;
+ }
+#ifdef CHECK_EXTRA_DATA
+ CHECK( trk->extraData );
+ CHECK( trk->type == trk->extraData->trkType );
+ CHECK( trkType == T_NOTRACK || trk->type == trkType );
+#endif
+ return trk->extraData;
}
-EXPORT track_p GetTrkEndTrk( track_p trk, EPINX_T e )
-{
- ASSERT( e < trk->endCnt );
- return trk->endPt[e].track;
-}
-EXPORT long GetTrkEndOption( track_p trk, EPINX_T e )
+EXPORT void ResizeExtraData( track_p trk, CSIZE_T newSize )
{
- ASSERT( e < trk->endCnt );
- return trk->endPt[e].option;
+ trk->extraData = MyRealloc( trk->extraData, newSize );
+ trk->extraSize = newSize;
}
-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 )
@@ -455,7 +487,11 @@ EXPORT void SetTrkWidth( track_p trk, int width )
EXPORT int GetTrkBits( track_p trk )
{
- return trk->bits;
+ if (trk) {
+ return trk->bits;
+ } else {
+ return 0;
+ }
}
EXPORT int SetTrkBits( track_p trk, int bits )
@@ -476,101 +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;
-}
-
-EXPORT BOOL_T GetTrkEndElevCachedHeight (track_p trk, EPINX_T e, DIST_T * height, DIST_T * length)
-{
- if (trk->endPt[e].elev.cacheSet) {
- *height = trk->endPt[e].elev.cachedElev;
- *length = trk->endPt[e].elev.cachedLength;
- return TRUE;
- }
- return FALSE;
-}
-
-EXPORT void SetTrkEndElevCachedHeight ( track_p trk, EPINX_T e, DIST_T height, DIST_T length)
-{
- trk->endPt[e].elev.cachedElev = height;
- trk->endPt[e].elev.cachedLength = length;
- 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
@@ -579,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);
}
@@ -603,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;
@@ -617,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 );
}
@@ -647,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;
@@ -670,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;
@@ -741,39 +657,38 @@ 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;
- DIST_T d=10000.0, dd;
+ DIST_T d=DIST_INF, dd;
coOrd pos;
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;
@@ -786,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 = 10000;
+ 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;
}
@@ -842,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 );
}
@@ -852,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 );
}
@@ -865,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 );
@@ -877,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;
@@ -888,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;
@@ -922,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;
@@ -945,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;
}
@@ -996,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 )
@@ -1021,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;
@@ -1034,26 +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 = MyMalloc( extraSize );
- } else
+ trk->extraData = (struct extraDataBase_t*)MyMalloc( extraSize );
+ trk->extraData->trkType = type;
+ } else {
trk->extraData = NULL;
+ }
trk->extraSize = extraSize;
UndoNew( trk );
trackCount++;
@@ -1065,12 +1046,16 @@ LOG( log_track, 1, ( "NewTrack( T%d, t%d, E%d, X%ld)\n", index, type, endCnt, ex
EXPORT void FreeTrack( track_p trk )
{
- trackCmds(trk->type)->delete( trk );
- if (trk->endPt)
+ bFreeTrack = TRUE;
+ trackCmds(trk->type)->deleteTrk( trk );
+ if (trk->endPt) {
MyFree(trk->endPt);
- if (trk->extraData)
+ }
+ if (trk->extraData) {
MyFree(trk->extraData);
+ }
MyFree(trk);
+ bFreeTrack = FALSE;
}
@@ -1097,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;
}
@@ -1108,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" );
}
@@ -1129,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 );
}
@@ -1141,17 +1135,27 @@ LOG( log_track, 4, ( "DeleteTrack(T%d)\n", GetTrkIndex(trk) ) )
}
}
}
- for (i=0;i<trk->endCnt;i++) {
- if ((trk2=trk->endPt[i].track) != NULL) {
+ /* 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;
+ ClrTrkBits( trk, TB_SELECTED ); // Make sure we don't select a deleted car
+ return TRUE;
+ }
+ 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);
@@ -1191,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;
}
@@ -1211,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;
}
@@ -1228,16 +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.01 )
+ if ( dist < 0.05 ) {
return TRUE;
-#ifdef WINDOWS
- dist1 *= 96.0/72.0;
-#else
- dist1 *= 72.0/96.0;
-#endif
+ }
+// 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.01 )
+// printf( " -> %0.3f D:%0.3f\n", dist1, dist );
+ if ( dist < 0.05 ) {
return TRUE;
+ }
return FALSE;
}
@@ -1255,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 )
@@ -1274,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
@@ -1304,10 +1435,11 @@ static void ExciseSelectedTracks( track_p * pxtrk, track_p * pltrk )
track_p trk, *ptrk;
for (ptrk=&to_first; *ptrk!=NULL; ) {
trk = *ptrk;
- if (IsTrackDeleted(trk) || !GetTrkSelected(trk)) {
+ if (!GetTrkSelected(trk)) {
ptrk = &(*ptrk)->next;
continue;
}
+ CHECK( !IsTrackDeleted(trk) );
UndoModify( *ptrk );
UndoModify( trk );
*ptrk = trk->next;
@@ -1319,7 +1451,7 @@ static void ExciseSelectedTracks( track_p * pxtrk, track_p * pltrk )
}
-EXPORT void SelectAbove( void )
+EXPORT void SelectAbove( void * unused )
{
track_p xtrk, ltrk;
if (selectedTrackCount<=0) {
@@ -1334,11 +1466,11 @@ EXPORT void SelectAbove( void )
to_last = &ltrk->next;
}
UndoEnd();
- DrawSelectedTracks( &mainD );
+ DrawSelectedTracks( &mainD, false );
}
-EXPORT void SelectBelow( void )
+EXPORT void SelectBelow( void * unused )
{
track_p xtrk, ltrk, trk;
coOrd lo, hi, lowest, highest;
@@ -1355,14 +1487,18 @@ EXPORT void SelectBelow( void )
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 );
}
@@ -1376,16 +1512,16 @@ EXPORT void SelectBelow( void )
}
-#include "bitmaps/above.xpm"
-#include "bitmaps/below.xpm"
+#include "bitmaps/top.xpm3"
+#include "bitmaps/bottom.xpm3"
EXPORT void InitCmdAboveBelow( void )
{
wIcon_p bm_p;
- bm_p = wIconCreatePixMap( above_xpm );
- AddToolbarButton( "cmdAbove", bm_p, IC_SELECTED|IC_POPUP, (addButtonCallBack_t)SelectAbove, NULL );
- bm_p = wIconCreatePixMap( below_xpm );
- AddToolbarButton( "cmdBelow", bm_p, IC_SELECTED|IC_POPUP, (addButtonCallBack_t)SelectBelow, NULL );
+ bm_p = wIconCreatePixMap( top_xpm3[iconSize] );
+ AddToolbarButton( "cmdAbove", bm_p, IC_SELECTED|IC_POPUP, SelectAbove, NULL );
+ bm_p = wIconCreatePixMap( bottom_xpm3[iconSize] );
+ AddToolbarButton( "cmdBelow", bm_p, IC_SELECTED|IC_POPUP, SelectBelow, NULL );
}
/*****************************************************************************
@@ -1415,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;
}
@@ -1456,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;
}
@@ -1485,8 +1626,8 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
wIndex_t trackCountOld;
track_p trk;
coOrd pos;
- wPos_t x, y;
- wPos_t ww, hh;
+ wDrawPix_t x, y;
+ wWinPix_t ww, hh;
wBool_t offscreen = FALSE;
double xmin = 0.0;
@@ -1497,27 +1638,26 @@ 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 );
coOrd middle_screen;
- wPos_t mx,my;
+ wDrawPix_t mx,my;
- mx = ww/2;
- my = hh/2;
+ mx = ww/2.0;
+ my = hh/2.0;
mainD.Pix2CoOrd( &mainD, mx, my, &middle_screen );
for ( trk=*importTrack; trk; trk=trk->next ) {
- if (!IsTrackDeleted(trk)) {
- 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};
@@ -1541,10 +1681,10 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
middle_object.x = offset.x + (size.x/2);
middle_object.y = offset.y + (size.y/2);
- wPos_t ox,oy;
+ 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;
@@ -1554,7 +1694,8 @@ EXPORT void ImportEnd( coOrd offset, wBool_t import, wBool_t inPlace )
RenumberTracks();
// move the imported track into place
- for ( trk=*importTrack; trk; trk=trk->next ) if (!IsTrackDeleted(trk)) {
+ for ( trk=*importTrack; trk; trk=trk->next ) {
+ CHECK( !IsTrackDeleted(trk) );
coOrd move;
move.x = offset.x;
move.y = offset.y;
@@ -1562,33 +1703,36 @@ 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
if (offscreen) {
panCenter = middle_object;
- PanHere((void*)0);
+ PanHere(I2VP(0));
}
}
/*******
* 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 (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;
}
}
@@ -1599,13 +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
MoveTrack( trk, xlat );
trackCmds(GetTrkType(trk))->write( trk, f );
MoveTrack( trk, orig );
}
}
RenumberTracks();
- exportingTracks = FALSE;
+ bWriteEndPtExporting = FALSE;
return TRUE;
}
@@ -1637,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;
}
@@ -1649,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;
}
}
@@ -1663,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 {
@@ -1693,11 +1841,11 @@ 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) {
- sprintf( msgp, "*to_last is not NULL (%lx)", (long)*to_last );
+ sprintf( msgp, "*to_last is not NULL ("SLOG_FMT")", (uintptr_t)*to_last );
AuditPrint( msg );
}
TRK_ITERATE( trk ) {
@@ -1712,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)) {
@@ -1723,45 +1872,52 @@ EXPORT void AuditTracks( char * event, ... )
SET_BIT(used, trk->index);
}
for (i=0; i<trk->endCnt; i++) {
- if ( (tn = trk->endPt[i].track) != NULL ) {
- if (IsTrackDeleted(trk)) {
+ 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:;
}
if (!trk->next) {
if (to_last != &trk->next) {
- sprintf( msgp, "last track (T%d @ %lx) is not to_last (%lx)\n",
- trk->index, (long)trk, (long)to_last );
+ sprintf( msgp, "last track (T%d @ "SLOG_FMT") is not to_last ("SLOG_FMT")\n",
+ 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 if (UndoUndo()) {
- fprintf( auditFile, "# after undo\n" );
+ if (auditStop) {
+ if (NoticeMessage( MSG_AUDIT_WRITE_FILE, _("Yes"), _("No"))) {
+ fprintf( auditFile, "# before undo\n" );
WriteTracks(auditFile, TRUE);
Rdump( auditFile );
- } else {
- fprintf( auditFile, "# undo stack is empty\n" );
+ 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 );
+ } else {
+ fprintf( auditFile, "# undo stack is empty\n" );
+ }
+ }
}
}
if (NoticeMessage( MSG_AUDIT_ABORT, _("Yes"), _("No"))) {
@@ -1787,103 +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 100000;
- if (((e->option&ELEV_VISIBLE)==0) && !show_hidden)
- return 100000;
- if ((trk1=GetTrkEndTrk(trk,ep)) && GetTrkIndex(trk1)<GetTrkIndex(trk))
- return 100000;
- 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);
- pos1.x += e->doff.x;
- pos1.y += e->doff.y;
- *dpos = pos1;
- if (hidden) *hidden = !(e->option&ELEV_VISIBLE);
- return FindDistance( pos1, pos );
-}
-
-
-EXPORT STATUS_T EndPtDescriptionMove(
- track_p trk,
- EPINX_T ep,
- wAction_t action,
- coOrd pos )
-{
- static coOrd p0, p1;
- static BOOL_T editState = FALSE;
- 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:
- editState = TRUE;
- 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 ) {
- editState = FALSE;
- wDrawColor color = GetTrkColor( trk, &mainD );
- DrawEndElev( &mainD, trk, ep, color );
+ if (pos.y > trk->hi.y) {
+ trk->hi.y = (float)pos.y;
}
- return action==C_UP?C_TERMINATE:C_CONTINUE;
-
- case C_REDRAW:
- DrawEndElev( &tempD, trk, ep, wDrawColorBlue );
- if ( editState ) {
- DrawLine( &tempD, p0, p1, 0, wDrawColorBlue );
+ if (pos.x < trk->lo.x) {
+ trk->lo.x = (float)pos.x;
+ }
+ if (pos.y < trk->lo.y) {
+ trk->lo.y = (float)pos.y;
}
- break;
}
- return C_CONTINUE;
}
@@ -1894,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 )
+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();
@@ -2016,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;
@@ -2038,28 +2118,45 @@ EXPORT BOOL_T SplitTrack( track_p trk, coOrd pos, EPINX_T ep, track_p *leftover,
BOOL_T (*splitCmd)( track_p, coOrd, EPINX_T, track_p *, EPINX_T *, EPINX_T * );
coOrd pos0;
+ if (!IsTrack(trk)) {
+ if ((splitCmd = trackCmds(trk->type)->split) == NULL) { return FALSE; }
+ UndrawNewTrack( trk );
+ UndoModify( trk );
+ rc = splitCmd( trk, pos, ep, leftover, &epl, &ep1 );
+ if (*leftover) {
+ SetTrkLayer(*leftover,GetTrkLayer( trk ));
+ DrawNewTrack( *leftover );
+ }
+ DrawNewTrack( trk );
+ return rc;
+ }
+
trk0 = trk;
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 );
- return FALSE;
+ 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 );
@@ -2070,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 );
@@ -2089,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;
@@ -2107,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;
@@ -2131,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;
}
@@ -2143,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;
@@ -2181,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;
}
@@ -2204,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 )
@@ -2236,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));
@@ -2252,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
@@ -2278,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 );
@@ -2285,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( fabs(a) ) );
+ 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] );
@@ -2347,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;
@@ -2357,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") );
@@ -2368,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 );
@@ -2409,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;
}
}
@@ -2473,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>1000000.0)
+ if (d>DIST_INF) {
break;
+ }
}
*pos = GetTrkEndPos( trk, ep );
return d;
@@ -2500,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)
- d /= 2.0;
+ if (ep1==-1) {
+ d = d/2.0;
+ }
return d;
} else {
pos0 = GetTrkEndPos(trk,ep0);
@@ -2545,13 +2692,10 @@ 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)
EXPORT long drawTunnel = DRAW_TUNNEL_DASH;
-EXPORT long colorTrack;
-EXPORT long colorDraw;
/******************************************************************************
*
@@ -2561,33 +2705,86 @@ EXPORT long colorDraw;
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
+ */
+
+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 ) {
+ return DrawTwoRails(d,1);
+ }
+
+ // all other cases of explicit centerline option (ie. bitmap)
+ if( d->options & DC_CENTERLINE ) {
+ return true;
+ }
+
+ // if zoomed in beyond 1:1 draw centerline when not doing a simple draw
+ if( ( d->scale <= 1.0 ) && !( d->options & DC_SIMPLE ) ) {
+ return true;
+ }
+
+ return false;
+}
-static 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];
@@ -2609,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;
}
@@ -2618,342 +2815,53 @@ 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, 1, 0 );
- } else {
- DrawPoly( d, 4, p, t, color, 0, 0, 0);
- }
-}
-
-
-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,
- coOrd p0,
- coOrd p1,
- track_p trk,
- wDrawColor color,
- long options )
-{
- DIST_T scale2rail;
- DIST_T trackGauge = GetTrkGauge(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_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;
-#ifdef WINDOWS
- width *= (wDrawWidth)(d->dpi/mainD.dpi);
-#else
- if (d->options&DC_PRINT)
- width *= 300/75;
-#endif
-
-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 ) )
- 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, ((d->scale<32) && centerDrawMode && !(options&DTS_NOCENTER)) ? 1 : 0, width, color );
- } else {
- if ( (d->scale <= 1 && (d->options&DC_SIMPLE)==0) || (d->options&DC_CENTERLINE)!=0
- || (d->scale <= scale2rail/2 && ((d->options&DC_PRINT) && printCenterLines))) { // if printing two rails respect print CenterLine option
- 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 (trk && GetTrkBridge( trk ) ) {
-
- ANGLE_T a2,a3;
- coOrd pp0,pp1,pp2,pp3;
-
- a2 = a0+R2D(trackGauge*1.0/r);
- a3 = a1-R2D(trackGauge*2.0/r);
-
- wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/75.0);
-
- DrawArc( d, p, r+(trackGauge*1.5), a2, a3, 0, width2, color );
-
- PointOnCircle(&pp0,p,r+(trackGauge*1.5),a2);
- PointOnCircle(&pp1,p,r+(trackGauge*1.5),a3+a2);
-
- Translate( &pp2,pp0, a2-90+45, trackGauge);
- DrawLine( d, pp0, pp2, width2, color );
- Translate( &pp3,pp1, a2+a3+90-45, trackGauge);
- DrawLine( d, pp1, pp3, width2, color );
-
- DrawArc( d, p, r-(trackGauge*1.5), a2, a3, 0, width2, color );
-
- PointOnCircle(&pp0,p,r-(trackGauge*1.5),a2);
- PointOnCircle(&pp1,p,r-(trackGauge*1.5),a3+a2);
-
- Translate( &pp2,pp0, a2-90-45, trackGauge);
- DrawLine( d, pp0, pp2, width2, color );
- Translate( &pp3,pp1, a2+a3+90+45, trackGauge);
- DrawLine( d, pp1, pp3, width2, color );
-
}
-
-}
-
-
-static 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);
- 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_THICK )
- width = 3;
- if ( color == wDrawColorPreviewSelected || color == wDrawColorPreviewUnselected )
- width = 3;
-#ifdef WINDOWS
- width *= (wDrawWidth)(d->dpi/mainD.dpi);
-#else
- if (d->options&DC_PRINT)
- width *= 300/75;
-#endif
-LOG( log_track, 4, ( "DST( (%0.3f %0.3f) .. (%0.3f..%0.3f)\n",
- p0.x, p0.y, p1.x, p1.y ) )
- 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 );
+ if ( solid ) {
+ DrawPoly( d, 4, p, t, color, 0, DRAW_FILL );
} else {
- if ( (d->scale <= 1 && (d->options&DC_SIMPLE)==0) || (d->options&DC_CENTERLINE)!=0
- || (d->scale <= scale2rail/2 && ((d->options&DC_PRINT) && printCenterLines))) { // if printing two rails respect print CenterLine option
- 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 (trk && GetTrkBridge( trk ) ) {
-
- coOrd pp2,pp3;
- wDrawWidth width2 = (wDrawWidth)round((2.0 * d->dpi)/75.0);
-
- Translate( &pp0, p0, angle+90, trackGauge*1.5 );
- Translate( &pp1, p1, angle+90, trackGauge*1.5 );
- Translate( &pp0, pp0, angle+180, trackGauge*1.5 );
- Translate( &pp1, pp1, angle, trackGauge*1.5 );
- DrawLine( d, pp0, pp1, width2, color );
- Translate( &pp2,pp0, angle+90-45, trackGauge);
- DrawLine( d, pp0, pp2, width2, color );
- Translate( &pp3,pp1, angle+90+45, trackGauge);
- DrawLine( d, pp1, pp3, width2, color );
-
- Translate( &pp0, p0, angle-90, trackGauge*1.5 );
- Translate( &pp1, p1, angle-90, trackGauge*1.5 );
- Translate( &pp0, pp0, angle+180, trackGauge*1.5 );
- Translate( &pp1, pp1, angle, trackGauge*1.5 );
- DrawLine( d, pp0, pp1, width2, color );
- Translate( &pp2,pp0, angle-90+45, trackGauge);
- DrawLine( d, pp0, pp2, width2, color );
- Translate( &pp3,pp1, angle-90-45, trackGauge);
- DrawLine( d, pp1, pp3, width2, color );
-
+ DrawPoly( d, 4, p, t, color, 0, DRAW_CLOSED);
}
}
EXPORT wDrawColor GetTrkColor( track_p trk, drawCmd_p d )
{
- DIST_T len, len1, elev0, elev1;
+ DIST_T len, elev0, elev1;
ANGLE_T grade = 0.0;
if ( IsTrack( trk ) && GetTrkEndPtCnt(trk) == 2 ) {
- if (GetTrkEndElevCachedHeight(trk,0,&elev0,&len) && GetTrkEndElevCachedHeight(trk,1,&elev1,&len1)) {
- grade = fabs( (elev1-elev0)/(len+len1))*100.0;
- } else {
- len = GetTrkLength( trk, 0, 1 );
- if (len>0.1) {
- ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE );
- ComputeElev( trk, 1, FALSE, &elev1, NULL, FALSE );
- grade = fabs( (elev1-elev0)/len )*100.0;
- }
+ ComputeElev( trk, 0, FALSE, &elev0, NULL, FALSE );
+ len = GetTrkLength( trk, 0, 1 );
+ ComputeElev( trk, 1, FALSE, &elev1, NULL, FALSE );
+ 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))
+ }
+ 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;
}
@@ -2964,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;
@@ -3022,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 );
}
}
@@ -3040,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 );
+ }
}
/*****************************************************************************
*
@@ -3054,84 +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;
- if (grade <= -0.001)
- a = NormalizeAngle( a+180.0 );
- else if ( grade < 0.001 )
- style = BOX_BOX;
- 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 );
}
- pp.x += elev->doff.x;
- pp.y += elev->doff.y;
- 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
@@ -3144,127 +3002,154 @@ 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;
track_p trk1;
- coOrd p0, p1, p2;
+ coOrd p0,p1,p2;
BOOL_T sepBoundary;
+ BOOL_T showBridge = 1;
DIST_T trackGauge;
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)) {
+ width2 = (wDrawWidth)round(d->dpi / BASE_DPI);
+ }
- // line width for the tunnel portal, make sure it is rounded correctly
- width2 = (wDrawWidth)round((2.0 * d->dpi)/75.0);
- if (color == wDrawColorBlack)
+ if(color == wDrawColorBlack) {
color = normalColor;
+ }
- if (labelScale >= d->scale)
- DrawEndElev( d, trk, ep, color );
+ if(((d->options & DC_PRINT) ? (labelScale * 2 + 1) : labelScale) >= d->scale) {
+ DrawEndElev(d,trk,ep,color);
+ }
trk1 = GetTrkEndTrk(trk,ep);
- p = GetTrkEndPos( trk, ep );
- a = GetTrkEndAngle( trk, ep ) + 90.0;
+ p = GetTrkEndPos(trk,ep);
+ a = GetTrkEndAngle(trk,ep) + 90.0;
trackGauge = GetTrkGauge(trk);
- if (trk1 == NULL) {
- DrawUnconnectedEndPt( d, p, a, trackGauge, color );
+ if(trk1 == NULL) {
+ DrawUnconnectedEndPt(d,p,a,trackGauge,color);
return;
}
- if ( d->scale >= ((d->options&DC_PRINT)?(twoRailScale*2+1):twoRailScale) )
- return;
-
sepBoundary = FALSE;
- 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)
- len = 0.10*d->scale;
- long oldOptions = d->options;
- d->options &= ~DC_NOTSOLIDLINE;
- Translate( &p0, p, a+45, len );
- Translate( &p1, p, a+225, len );
- DrawLine( d, p0, p1, 2, selectedColor );
- Translate( &p0, p, a-45, len );
- Translate( &p1, p, a-225, len );
- DrawLine( d, p0, p1, 2, selectedColor );
- d->options = oldOptions;
- sepBoundary = TRUE;
- } else if ((d->options&DC_PRINT)==0 && importTrack == NULL && (!GetTrkSelected(trk)) && GetTrkSelected(trk1)) {
- sepBoundary = TRUE;
+ 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) {
+ len = 0.10 * d->scale;
+ }
+ long oldOptions = d->options;
+ d->options &= ~DC_NOTSOLIDLINE;
+ Translate(&p0,p,a + 45,len);
+ Translate(&p1,p,a + 225,len);
+ DrawLine(d,p0,p1,2,selectedColor);
+ Translate(&p0,p,a - 45,len);
+ Translate(&p1,p,a - 225,len);
+ DrawLine(d,p0,p1,2,selectedColor);
+ d->options = oldOptions;
+ sepBoundary = TRUE;
+ } else if((d->options & DC_PRINT) == 0 && importTrack == NULL
+ && (!GetTrkSelected(trk)) && GetTrkSelected(trk1)) {
+ sepBoundary = TRUE;
+ }
}
// is the endpoint a transition into a tunnel?
- if (GetTrkVisible(trk) && (!GetTrkVisible(trk1))) {
+ if(GetTrkVisible(trk) && (!GetTrkVisible(trk1))) {
// yes, draw tunnel portal
- Translate( &p0, p, a, trackGauge );
- Translate( &p1, p, a+180, trackGauge );
- DrawLine( d, p0, p1, width2, color );
- Translate( &p2, p0, a+45, trackGauge/2.0 );
- DrawLine( d, p0, p2, width2, color );
- Translate( &p2, p1, a+135, trackGauge/2.0 );
- DrawLine( d, p1, p2, width2, color );
- if ( d == &mainD ) {
- width = (wDrawWidth)ceil(trackGauge*d->dpi/2.0/d->scale);
- if ( width > 1 ) {
- if ( (GetTrkEndOption(trk,ep)&EPOPT_GAPPED) != 0 ) {
- Translate( &p0, p, a, trackGauge );
- DrawLine( d, p0, p, width, color );
+ Translate(&p0,p,a,trackGauge);
+ Translate(&p1,p,a + 180,trackGauge);
+ DrawLine(d,p0,p1,width2,color);
+ Translate(&p2,p0,a + 45,trackGauge / 2.0);
+ DrawLine(d,p0,p2,width2,color);
+ Translate(&p2,p1,a + 135,trackGauge / 2.0);
+ DrawLine(d,p1,p2,width2,color);
+ if(d == &mainD) {
+ width = (wDrawWidth)ceil(trackGauge * d->dpi / 2.0 / d->scale);
+ if(width > 1) {
+ if((GetTrkEndOption(trk,ep) & EPOPT_GAPPED) != 0) {
+ Translate(&p0,p,a,trackGauge);
+ DrawLine(d,p0,p,width,color);
}
trk1 = GetTrkEndTrk(trk,ep);
- if ( trk1 ) {
- ep = GetEndPtConnectedToMe( trk1, trk );
- if ( (GetTrkEndOption(trk1,ep)&EPOPT_GAPPED) != 0 ) {
- Translate( &p0, p, a+180.0, trackGauge );
- DrawLine( d, p0, p, width, color );
+ if(trk1) {
+ ep = GetEndPtConnectedToMe(trk1,trk);
+ if((GetTrkEndOption(trk1,ep) & EPOPT_GAPPED) != 0) {
+ Translate(&p0,p,a + 180.0,trackGauge);
+ DrawLine(d,p0,p,width,color);
}
}
}
+ showBridge = 0;
}
- } else if ((!GetTrkVisible(trk)) && GetTrkVisible(trk1)) {
- ;
- } else if ( GetLayerVisible( GetTrkLayer( trk ) ) && !GetLayerVisible( GetTrkLayer( trk1 ) ) ) {
+ } else if((!GetTrkVisible(trk)) && GetTrkVisible(trk1)) {
+ showBridge = 0;
+ } 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 );
- DrawLine( d, p0, p, width2, color );
- Translate( &p0, p, a+135.0, trackGauge*2.0 );
- DrawLine( d, p0, p, width2, color );
- } else if ( !GetLayerVisible( GetTrkLayer( trk ) ) && GetLayerVisible( GetTrkLayer( trk1 ) ) ) {
- ;
- } else if ( sepBoundary ) {
+ Translate(&p,p,a,trackGauge / 2.0);
+ Translate(&p0,p,a - 135.0,trackGauge * 2.0);
+ DrawLine(d,p0,p,width2,color);
+ Translate(&p0,p,a + 135.0,trackGauge * 2.0);
+ DrawLine(d,p0,p,width2,color);
+
+ showBridge = 0;
+ } else if(!GetLayerVisible(GetTrkLayer(trk))
+ && GetLayerVisible(GetTrkLayer(trk1))) {
+ showBridge = 0;
+ } else if(sepBoundary) {
;
- } else if ( (drawEndPtV == 1 && (QueryTrack(trk,Q_DRAWENDPTV_1) || QueryTrack(trk1,Q_DRAWENDPTV_1)) ) ||
- (drawEndPtV == 2) ) {
- Translate( &p0, p, a, trackGauge );
+ } 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 )
- width = (wDrawWidth)ceil(trackGauge*d->dpi/2.0/d->scale);
- DrawLine( d, p0, p, width, color );
+ 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 {
;
}
+
+ if(showBridge && GetTrkBridge(trk) && (!GetTrkBridge(trk1))) {
+ Translate(&p0,p,a,trackGauge * 1.5);
+ Translate(&p1,p0,a - 45.0,trackGauge * 1.5);
+ DrawLine(d,p0,p1,width2,color);
+ Translate(&p0,p,a,-trackGauge * 1.5);
+ Translate(&p1,p0,a + 45.0,-trackGauge * 1.5);
+ DrawLine(d,p0,p1,width2,color);
+ }
}
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;
@@ -3272,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 );
+ }
}
}
@@ -3284,46 +3170,53 @@ EXPORT void DrawTracks( drawCmd_p d, DIST_T scale, coOrd orig, coOrd size )
wIndex_t count = 0;
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 ) );
}
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;
@@ -3332,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 );
@@ -3354,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) );
}
}
}
@@ -3382,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 );
@@ -3404,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;
@@ -3426,3 +3327,62 @@ EXPORT void LabelLengths( drawCmd_p d, track_p trk, wDrawColor color )
DrawString( d, p0, 0.0, msg, fp, fs*d->scale, color );
}
}
+
+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);
+ DIST_T dist = length/division, dist1;
+ traverseTrack_t tt;
+ tt.trk = trk;
+ tt.angle = GetTrkEndAngle(trk,0)+180.0;
+ tt.pos = GetTrkEndPos(trk,0);
+
+ dynArr_t pos_array;
+ DYNARR_INIT( pos_angle_t, pos_array );
+
+ typedef struct {
+ 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++) {
+ tt.dist = dist;
+ dist1 = dist;
+ TraverseTrack(&tt,&dist1);
+ 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);
+ // 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[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);
+ DYNARR_FREE( pos_angle_t, pos_array );
+}
+
diff --git a/app/bin/track.h b/app/bin/track.h
index 4e24280..fdc7909 100644
--- a/app/bin/track.h
+++ b/app/bin/track.h
@@ -1,5 +1,5 @@
/** \file track.h
- *
+ *
*/
/* XTrkCad - Model Railroad CAD
@@ -17,26 +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 <string.h>
#include "common.h"
-#include "draw.h"
-#include "misc2.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;
@@ -48,7 +58,6 @@ extern unsigned int curTrackLayer;
extern coOrd descriptionOff;
extern DIST_T roadbedWidth;
extern DIST_T roadbedLineWidth;
-extern long printCenterLines;
extern long drawElevations;
extern wDrawColor elevColorIgnore;
extern wDrawColor elevColorDefined;
@@ -58,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;
@@ -81,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)
@@ -137,292 +146,69 @@ typedef struct {
#define Q_IS_TURNOUT (31)
#define Q_GET_NODES (32)
-typedef struct {
- 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, *traverseTrack_p;
+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;
+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 (*delete)( 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 cachedLength;
- } elev_t;
#define EPOPT_GAPPED (1L<<0)
-typedef struct {
- coOrd pos;
- ANGLE_T angle;
- TRKINX_T index;
- track_p track;
- elev_t elev;
- long option;
- } trkEndPt_t, * trkEndPt_p;
-extern dynArr_t tempEndPts_da;
-#define tempEndPts(N) DYNARR_N( trkEndPt_t, tempEndPts_da, N )
+struct trkEndPt_t;
+typedef struct trkEndPt_t * trkEndPt_p;
-typedef enum { FREEFORM, RECTANGLE, POLYLINE
-} PolyType_e;
-typedef struct {
- 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, * 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 */
#define TB_SELECTED (1<<0)
#define TB_VISIBLE (1<<1)
#define TB_PROFILEPATH (1<<2)
@@ -433,45 +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_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 ) ((T)->extraData)
-#define GetTrkWidth( T ) (int)((T)->width)
-#define SetTrkWidth( T, W ) (T)->width = (unsigned int)(W)
-#define GetTrkBits(T) ((T)->bits)
-#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 );
@@ -480,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 );
-struct extraData * GetTrkExtraData( track_p );
+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) (GetTrkBits(T)&TB_BRIDGE)
+#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 *length);
-void SetTrkEndElevCachedHeight ( track_p trk, EPINX_T e, DIST_T height, DIST_T length);
-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 );
@@ -533,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 );
@@ -590,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 );
@@ -604,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)
@@ -613,46 +363,54 @@ BOOL_T ComputeElev( track_p trk, EPINX_T ep, BOOL_T on_path, DIST_T * elev, DIST
#define DTS_DASH (1<<8)
#define DTS_DASHDOT (1<<9)
#define DTS_DASHDOTDOT (1<<10)
+#define DTS_CENTERONLY (1<<11)
-void DrawCurvedTrack( drawCmd_p, coOrd, DIST_T, ANGLE_T, ANGLE_T, coOrd, coOrd, 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, 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);
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 );
+void LoosenTracks( void * );
void SaveTrackState( void );
void RestoreTrackState( void );
@@ -661,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 );
@@ -668,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 );
@@ -686,20 +446,64 @@ 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 SelectAbove( void );
-void SelectBelow( void );
+void SelectAbove( void * unused );
+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);
+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);
+STATUS_T JointDescriptionMove(track_p trk,wAction_t action,coOrd pos );
/* cmisc.c */
-wIndex_t describeCmdInx;
+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)
@@ -709,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;
- wPos_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 );
@@ -743,7 +557,7 @@ extern long oldElevationEvaluation;
EPINX_T GetNextTrkOnPath( track_p trk, EPINX_T ep );
int FindDefinedElev( track_p, EPINX_T, int, BOOL_T, DIST_T *, DIST_T * );
BOOL_T ComputeElev( track_p, EPINX_T, BOOL_T, DIST_T *, DIST_T *, BOOL_T );
-void RecomputeElevations( void );
+void RecomputeElevations( void * unused );
void UpdateAllElevations( void );
DIST_T GetElevation( track_p );
void ClrTrkElev( track_p );
@@ -753,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);
@@ -767,16 +582,20 @@ BOOL_T GetClosestEndPt( track_p, coOrd * );
BOOL_T ReadTableEdge( char * );
BOOL_T ReadText( char * );
void SetLineType( track_p trk, int width );
-void MenuMode(int );
+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 50fda1d..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
*/
@@ -27,29 +27,26 @@
#include "common.h"
#include "track.h"
-struct extraData;
-
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:12;
- EPINX_T endCnt;
- trkEndPt_p endPt;
- struct { float x; float y; } lo, hi;
- struct extraData * 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/trkendptx.h b/app/bin/trkendptx.h
new file mode 100644
index 0000000..184076a
--- /dev/null
+++ b/app/bin/trkendptx.h
@@ -0,0 +1,51 @@
+/** \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 TRKENDPTX_H
+#define TRKENDPTX_H
+
+#include "common.h"
+#include "track.h"
+
+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 f27cf2e..a62c22d 100644
--- a/app/bin/trknote.c
+++ b/app/bin/trknote.c
@@ -17,34 +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
*/
-#include <stdint.h>
-#include <string.h>
-#include <ctype.h>
-
+#include "common.h"
#include "cundo.h"
#include "custom.h"
#include "dynstring.h"
#include "fileio.h"
-#include "i18n.h"
#include "misc.h"
#include "note.h"
#include "param.h"
#include "track.h"
#include "include/utf8convert.h"
-#include "utility.h"
-
-extern BOOL_T inDescribeCmd;
-extern descData_t noteDesc[];
-static TRKTYP_T T_NOTE = -1;
+EXPORT TRKTYP_T T_NOTE = -1;
static wDrawBitMap_p note_bm, link_bm, document_bm;
typedef struct {
- char **xpm;
+ char ***xpm;
int OP;
char * shortName;
char * cmdName;
@@ -52,14 +44,14 @@ typedef struct {
long acclKey;
} trknoteData_t;
-#include "bitmaps/sticky-note-text.xpm"
-#include "bitmaps/sticky-note-chain.xpm"
-#include "bitmaps/sticky-note-clip.xpm"
+#include "bitmaps/sticky-note.xpm3"
+#include "bitmaps/sticky-link.xpm3"
+#include "bitmaps/sticky-doc.xpm3"
static trknoteData_t noteTypes[] = {
- { sticky_note_text_bits, OP_NOTETEXT, N_("Note"), N_("Comment"), "cmdTextNote", 0L },
- { sticky_note_chain_bits, OP_NOTELINK, N_("Link"), N_("Weblink"), "cmdLinkNote", 0L },
- { sticky_note_clip_bits, 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;
@@ -67,23 +59,23 @@ static long curNoteType;
static unsigned layerSave;
static coOrd posSave;
-#define NOTETYPESCOUNT (sizeof(noteTypes)/sizeof(trknoteData_t))
+#define NOTETYPESCOUNT COUNT(noteTypes)
/*****************************************************************************
* 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 * xx;
- t = NewTrack(index, T_NOTE, 0, sizeof *xx);
- xx = (struct extraDataNote *)GetTrkExtraData(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;
}
/**
@@ -96,26 +88,29 @@ 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 *xx = (struct extraDataNote *)GetTrkExtraData(t);
- coOrd p[4];
-
- if (d->scale >= 16) {
- return;
- }
- if ((d->options & DC_SIMPLE)) {
- //while the icon is moved, draw a square
+ 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) {
+ //while the icon is moved, draw a square with a lopped off corner
//because CmdMove draws all selected object into tempSeg and
//tempSegDrawFuncs doesn't have a BitMap drawing func
DIST_T dist;
- dist = 0.1*mainD.scale;
+ dist = 0.8 + 0.1*(mainD.scale-16)/4;
p[0].x = p[1].x = xx->pos.x - dist;
- p[2].x = p[3].x = xx->pos.x + dist;
+ p[2].x = p[3].x = p[4].x = xx->pos.x + dist;
p[1].y = p[2].y = xx->pos.y - dist;
- p[3].y = p[0].y = xx->pos.y + dist;
- DrawLine(d, p[0], p[1], 0, color);
- DrawLine(d, p[1], p[2], 0, color);
- DrawLine(d, p[2], p[3], 0, color);
- DrawLine(d, p[3], p[0], 0, color);
+ p[3].y = p[4].y = p[0].y = xx->pos.y + dist;
+ p[3].y = p[3].y - (dist/2);
+ p[4].x = p[4].x - (dist/2);
+
+ for (int i=0; i<5; i++) {
+ type[i] = 0;
+ }
+ DrawPoly(d, 5, p, type, color, 0, DRAW_CLOSED);
+ DrawPoly(d, 5, p, type, drawColorGold, 0, DRAW_FILL);
} else {
// draw a bitmap for static object
wDrawBitMap_p bm;
@@ -129,26 +124,26 @@ 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 *xx = (struct extraDataNote *)GetTrkExtraData(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 100000.0;
+ return DIST_INF;
}
static void DeleteNote(track_p t)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(t);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
switch (xx->op) {
case OP_NOTETEXT:
@@ -177,126 +172,8 @@ static void DeleteNote(track_p t)
}
}
-void
-NoteStateSave(track_p trk)
-{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
- 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 *xx = (struct extraDataNote *)GetTrkExtraData(trk);
- xx->layer = layerSave;
- xx->pos = posSave;
- SetBoundingBox(trk, xx->pos, xx->pos);
- }
-}
-
-static void
-CommonUpdateNote(track_p trk, int inx, struct extraDataNote *noteData )
-{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
-
- 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 *noteUIData, int inx, BOOL_T needUndoStart)
-{
- track_p trk = noteUIData->trk;
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
-
- 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 *noteUIData, int inx, BOOL_T needUndoStart)
-{
- track_p trk = noteUIData->trk;
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
-
- 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 *noteUIData, int inx, BOOL_T needUndoStart)
-{
- track_p trk = noteUIData->trk;
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
-
- 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
@@ -323,6 +200,7 @@ GetNoteMarker(enum noteCommands command )
}
return(marker);
}
+#endif
/**
* Write the note to file. Handles the complete syntax for a note statement
@@ -334,12 +212,15 @@ GetNoteMarker(enum noteCommands command )
static BOOL_T WriteNote(track_p t, FILE * f)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(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) {
@@ -349,16 +230,22 @@ 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 WINDOWS
- for ( int inx = 0; inx < 2; inx++ ) {
+#ifdef UTFCONVERT
+ for ( unsigned int inx = 0; inx < strings2convert; inx++ ) {
if ( RequiresConvToUTF8( s[inx] ) ) {
wSystemToUTF8 ( s[inx], message, sizeof message );
MyFree( s[inx] );
@@ -373,7 +260,7 @@ static BOOL_T WriteNote(track_p t, FILE * f)
MyFree( s[1] );
}
rc &= fprintf( f, "\n" )>0;
-
+
return rc;
}
@@ -386,114 +273,116 @@ static BOOL_T WriteNote(track_p t, FILE * f)
static BOOL_T
ReadTrackNote(char *line)
{
- track_p t;
- int size;
- char * cp;
- struct extraDataNote *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 >= 12 ) {
+ if ( paramVersion >= VERSION_INLINENOTE ) {
noteType = size;
t = NewNote(index, pos, noteType);
- SetTrkLayer(t, layer);
-
- xx = (struct extraDataNote *)GetTrkExtraData(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 WINDOWS
+ }
+#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 WINDOWS
+ }
+#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 WINDOWS
+ }
+#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 WINDOWS
+ }
+#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 WINDOWS
+ }
+#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.fileData.title = sText;
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 = (struct extraDataNote *)GetTrkExtraData(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;
}
@@ -506,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 * xx = (struct extraDataNote *)GetTrkExtraData(trk);
- 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 * xx = (struct extraDataNote *)GetTrkExtraData(trk);
- 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 * xx = (struct extraDataNote *)GetTrkExtraData(trk);
- 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 {
@@ -550,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);
}
@@ -563,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;
@@ -574,32 +463,31 @@ static BOOL_T QueryNote( track_p trk, int query )
static wBool_t CompareNote( track_cp trk1, track_cp trk2 )
{
- struct extraDataNote *xx1 = (struct extraDataNote *)GetTrkExtraData( trk1 );
- struct extraDataNote *xx2 = (struct extraDataNote *)GetTrkExtraData( trk2 );
+ struct extraDataNote_t *xx1 = GET_EXTRA_DATA( trk1, T_NOTE, extraDataNote_t );
+ 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*/
@@ -629,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;
-
- switch (action) {
- case C_START:
- InfoMessage(_("Place a note on the layout"));
- curNoteType = (long)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)
- {
+ static coOrd oldPos;
+ static int state_on = FALSE;
+ track_p trk;
+
+ 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;
+
+ 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);
@@ -681,29 +563,33 @@ 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"
#include "bitmaps/link.xbm"
#include "bitmaps/clip.xbm"
-#include "bitmaps/cnote.xpm"
+// RWS not used #include "bitmaps/note.xpm"
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++) {
@@ -711,8 +597,9 @@ void InitTrkNote(wMenu_p menu)
wIcon_p icon;
nt = noteTypes + i;
- icon = wIconCreatePixMap(nt->xpm);
- AddMenuButton(menu, CmdNote, nt->helpKey, _(nt->cmdName), icon, LEVEL0_50, IC_STICKY | IC_POPUP2, nt->acclKey, (void *)(intptr_t)nt->OP);
+ icon = wIconCreatePixMap(nt->xpm[iconSize]);
+ 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 3e38933..82396a2 100644
--- a/app/bin/trkseg.c
+++ b/app/bin/trkseg.c
@@ -17,27 +17,18 @@
*
* 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 <track.h>
-#include <time.h>
-#include <ctype.h>
-#include <math.h>
-#include <stdarg.h>
-#include "track.h"
-#include <common.h>
-#include <cbezier.h>
-#include <string.h>
-
-#include <tbezier.h>
-
-#include "cjoin.h"
+#include "common.h"
#include "fileio.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "trkendpt.h"
#include "misc.h"
+#include "cbezier.h"
+#include "tbezier.h"
+#include "cjoin.h"
/*****************************************************************************
@@ -59,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;
@@ -86,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;
@@ -124,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;
}
@@ -170,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;
@@ -196,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
@@ -225,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;
@@ -245,71 +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;
+ }
if ( (segPtr->type == SEG_CRVTRK) ||
- (segPtr->type == SEG_CRVLIN) ) {
- /* TODO: be more precise about curved line width */
- width.x = width.y = 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 < 180 && a0+a1 >= 180.0 )
- lo->y = pc.y - radius;
- if ( a0 < 270.0 && a0+a1 >= 270.0 )
- lo->x = pc.x - radius;
+ (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;
}
- 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 ( a0 + a1 >= 360.0 ) {
+ hi->y = pc.y + radius;
}
- if (p0.y < p1.y) {
- lo->y = p0.y;
- hi->y = p1.y;
- } else {
- lo->y = p1.y;
- hi->y = p0.y;
+ 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 ( segPtr->type == SEG_STRLIN ) {
- width.x = segPtr->width * fabs(cos( D2R( FindAngle(p0, p1) ) ) ) / 2.0;
- width.y = 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 < 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 ( 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 = 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;
@@ -322,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 = segPtr->width/2.0;
+ width.x = width.y = lwidth;
break;
default:
;
@@ -351,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;
@@ -364,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) {
@@ -404,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;
@@ -444,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;
@@ -496,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;
@@ -533,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:
@@ -556,31 +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++) {
- s->width *= scale_w;
+ if (s->lineWidth>0) {
+ s->lineWidth *= scale_w;
+ }
switch (s->type) {
case SEG_STRLIN:
case SEG_DIMLIN:
@@ -619,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;
}
}
@@ -639,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;
@@ -654,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;
}
@@ -668,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:
@@ -682,8 +713,8 @@ EXPORT void CloneFilledDraw(
EXPORT void FreeFilledDraw(
- int segCnt,
- trkSeg_p segs )
+ int segCnt,
+ trkSeg_p segs )
{
trkSeg_p sp;
@@ -691,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:
@@ -715,14 +748,14 @@ 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 = 100000.0, ddd;
+ DIST_T d, dd = DIST_INF, ddd;
coOrd p0, p1, p2, pt, lo, hi;
BOOL_T found = FALSE;
wIndex_t inx, lin;
@@ -742,85 +775,95 @@ 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 = 100000.0;
- for (lin=0;lin<segPtr->u.p.cnt;lin++) {
+ ddd = DIST_INF;
+ 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
+ } 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 = 100000.0;
- 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 = 100000.0;
+ dd = DIST_INF;
}
if (dd < d) {
d = dd;
p2 = p1;
- if (inx_ret)
+ if (inx_ret) {
*inx_ret = inx;
+ }
found = TRUE;
}
}
@@ -839,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;
@@ -856,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 ) {
@@ -883,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;
}
}
@@ -911,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;
@@ -928,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) );
@@ -1001,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;
@@ -1063,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;
@@ -1086,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;
@@ -1133,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 ) ) {
@@ -1171,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;
@@ -1192,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;
}
@@ -1205,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:
@@ -1220,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;
}
@@ -1234,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;
}
@@ -1250,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;
}
@@ -1269,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;
}
@@ -1286,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;
}
@@ -1345,11 +1393,11 @@ 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;
}
@@ -1360,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;
}
}
@@ -1375,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;
}
@@ -1384,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
}
@@ -1492,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:
@@ -1629,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;
}
}
@@ -1646,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;
@@ -1663,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;
@@ -1691,41 +1702,47 @@ EXPORT void DrawDimLine(
size.x = textsize.x/2.0;
size.y = textsize.y/2.0;
dist1 = FindDistance( zero, size );
- if ( dist <= dist1*2 ) {
+ if ( dist <= dist1*1.5 ) {
DrawLine( d, p0, p1, width, color );
+ coOrd s_pos;
+ s_pos.x = (p1.x-p0.x)*middle+p0.x;
+ s_pos.y = (p1.y-p0.y)*middle+p0.y;
+ ANGLE_T a = FindAngle(p0,p1);
+ Translate(&s_pos,s_pos,a+90,textsize.y/2);
+ 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 );
}
/*
@@ -1733,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;
@@ -1753,7 +1770,7 @@ EXPORT void DrawSegsO(
long option;
wFontSize_t fs;
- wBool_t bFill;
+ wBool_t bFill,bThick;
for (i=0; i<segCnt; i++,segPtr++ ) {
if (color == wDrawColorBlack) {
@@ -1763,9 +1780,9 @@ EXPORT void DrawSegsO(
color1 = color2 = color;
}
wDrawWidth thick = 3;
-#ifdef WINDOWS
- thick *= (wDrawWidth)(d->dpi/mainD.dpi);
-#endif
+//#ifdef WINDOWS
+// thick *= (LWIDTH_T)(d->dpi/BASE_DPI);
+//#endif
switch (segPtr->type) {
case SEG_STRLIN:
case SEG_DIMLIN:
@@ -1776,17 +1793,27 @@ 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 )
+ }
+ 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:
- DrawLine( d, p0, p1, (d->options&DC_THICK)?thick:(wDrawWidth)floor(segPtr->width*factor+0.5), color1 );
+ case SEG_STRLIN:;
+ wDrawWidth w;
+ 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:
case SEG_BENCH:
@@ -1803,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/mainD.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;
}
}
@@ -1823,81 +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 );
+ break;
+ }
+ if ( segPtr->color == wDrawColorWhite ) { break; }
DrawCurvedTrack( d,
- c,
- fabs(segPtr->u.c.radius),
- a0, segPtr->u.c.a1,
- p0, p1,
- trk, color1, options );
+ c,
+ fabs(segPtr->u.c.radius),
+ a0, segPtr->u.c.a1,
+ trk, color1, options );
} else {
+ wDrawWidth w;
+ 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:(wDrawWidth)floor(segPtr->width*factor+0.5), 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;
+ }
+ }
+ //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);
+ //}
+
+ 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;
+ }
+ 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_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);
-
- 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;
- DrawCurvedTrack( d,
- c,
- fabs(tempPtr->u.c.radius),
- a0, tempPtr->u.c.a1,
- p0, p1,
- trk, color1, options );
- } else if (tempPtr->type == SEG_CRVLIN) {
- DrawArc( d, c, fabs(tempPtr->u.c.radius), a0, tempPtr->u.c.a1,
- FALSE, (d->options&DC_THICK)?thick:(wDrawWidth)floor(tempPtr->width*factor+0.5), 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);
- 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);
- DrawLine( d, p0, p1, (d->options&DC_THICK)?thick:(wDrawWidth)floor(tempPtr->width*factor+0.5), 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:
@@ -1907,27 +1976,62 @@ 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;
- DrawPoly( d, segPtr->u.p.cnt, tempPts, tempTypes, color1, (d->options&DC_THICK)?thick:(wDrawWidth)floor(segPtr->width*factor+0.5), bFill?1:0, segPtr->u.p.polyType==POLYLINE?1:0);
+ }
+
+ // 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)) {
+ bFill = FALSE;
+ bThick = TRUE;
+ }
+
+ wDrawWidth w;
+ 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 ) {
+ eOptFill = DRAW_FILL;
+ } else if ( segPtr->u.p.polyType == POLYLINE ) {
+ eOptFill = DRAW_OPEN;
+ } else {
+ eOptFill = DRAW_CLOSED;
+ }
+ DrawPoly( d, segPtr->u.p.cnt, tempPts, tempTypes, color1, bThick?thick:w,
+ eOptFill );
free(tempPts);
free(tempTypes);
+
break;
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)) {
bFill = FALSE;
+ bThick = TRUE;
+ }
if ( bFill ) {
DrawFillCircle( d, c, fabs(segPtr->u.c.radius), color1 );
} else {
DrawArc( d, c, fabs(segPtr->u.c.radius), 0, 360,
- FALSE, (d->options&DC_THICK)?thick:(wDrawWidth)0, color1 );
+ FALSE, bThick?thick:(wDrawWidth)0, color1 );
}
break;
}
@@ -1940,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 );
+ 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 )
+{
+
+ 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((void *)to_p,(void *)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((void *)to_p,(void *)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;
@@ -2042,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 ) {
@@ -2068,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 f9b666f..1a3fa51 100644
--- a/app/bin/tstraigh.c
+++ b/app/bin/tstraigh.c
@@ -17,20 +17,16 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <math.h>
-
#include "cstraigh.h"
#include "cundo.h"
#include "fileio.h"
-#include "i18n.h"
#include "layout.h"
-#include "messages.h"
#include "param.h"
#include "track.h"
-#include "utility.h"
+#include "common-ui.h"
/*******************************************************************************
*
@@ -40,6 +36,14 @@
static TRKTYP_T T_STRAIGHT = -1;
+typedef struct extraDataStraight_t {
+ extraDataBase_t base;
+ coOrd descriptionOff;
+} extraDataStraight_t;
+
+
+/** @logcmd @showrefby straight=n tstraigh.c */
+static int log_straight = 0;
/****************************************
*
@@ -50,15 +54,13 @@ static TRKTYP_T T_STRAIGHT = -1;
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 );
@@ -72,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_("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;
@@ -148,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 ) {
@@ -156,65 +168,25 @@ 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;*/
break;
-#ifdef LATER
- update = UpdateDescStraight( 0, &strDesc[E0], &strDesc[E1], &strDesc[LN], &strDesc[AN], strData.pivot );
- break;
- case E1:
- update = UpdateDescStraight( 1, &strDesc[E0], &strDesc[E1], &strDesc[LN], &strDesc[AN], strData.pivot );
- break;
- case E1:
- strData.length = FindDistance( strData.endPt[0], strData.endPt[1] );
- strData.angle = FindAngle( strData.endPt[0], strData.endPt[1] );
- strDesc[1-inx].mode |= DESC_CHANGE;
- strDesc[LN].mode |= DESC_CHANGE;
- strDesc[AN].mode |= DESC_CHANGE;
- break;
- case LN:
- if ( strData.length < minLength ) {
- ErrorMessage( );
- strData.length = FindDistance( strData.endPt[0], strData.endPt[1] );
- strDesc[LN].mode |= DESC_CHANGE;
- break;
- }
- case AN:
- switch (strData.pivot) {
- case DESC_PIVOT_FIRST:
- Translate( &strData.endPt[1], strData.endPt[0], strData.angle, strData.length );
- strDesc[E1].mode |= DESC_CHANGE;
- break;
- case DESC_PIVOT_SECOND:
- Translate( &strData.endPt[0], strData.endPt[1], strData.angle+180.0, strData.length );
- strDesc[E0].mode |= DESC_CHANGE;
- break;
- case DESC_PIVOT_MID:
- mid.x = (strData.endPt[0].x+strData.endPt[1].x)/2.0;
- mid.y = (strData.endPt[0].y+strData.endPt[1].y)/2.0;
- Translate( &strData.endPt[0], mid, strData.angle+180.0, strData.length/2.0 );
- Translate( &strData.endPt[1], mid, strData.angle, strData.length/2.0 );
- strDesc[E0].mode |= DESC_CHANGE;
- strDesc[E1].mode |= DESC_CHANGE;
- break;
- default:
- break;
- }
- break;
-#endif
case LY:
SetTrkLayer( trk, strData.layerNumber);
break;
@@ -222,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);
@@ -246,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;
@@ -261,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 );
}
@@ -272,26 +250,303 @@ static DIST_T DistanceStraight( track_p t, coOrd * p )
return LineDistance( p, GetTrkEndPos(t,0), GetTrkEndPos(t,1) );
}
+STATUS_T StraightDescriptionMove(
+ track_p trk,
+ wAction_t action,
+ coOrd pos )
+{
+ extraDataStraight_t *xx = GET_EXTRA_DATA(trk, T_STRAIGHT, extraDataStraight_t);
+ 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));
+
+ 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;
+
+}
+
+DIST_T StraightDescriptionDistance(
+ 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)) {
+ return DIST_INF;
+ }
+
+ struct extraDataStraight_t *xx = GET_EXTRA_DATA(trk, T_STRAIGHT,
+ extraDataStraight_t);
+ ANGLE_T a;
+ coOrd end0, end0off, end1, end1off;
+ end0 = GetTrkEndPos(trk,0);
+ end1 = GetTrkEndPos(trk,1);
+ a = FindAngle(end0,end1);
+ Translate(&end0off,end0,a+90,2*GetTrkGauge(trk)+xx->descriptionOff.y);
+ Translate(&end1off,end1,a+90,2*GetTrkGauge(trk)+xx->descriptionOff.y);
+
+ 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); }
+ *dpos = p1;
+ coOrd tpos = 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 )
+{
+ ANGLE_T a;
+ struct extraDataStraight_t *xx = GET_EXTRA_DATA(trk, T_STRAIGHT,
+ extraDataStraight_t);
+
+ if (layoutLabels == 0) {
+ return;
+ }
+ if ((labelEnable&LABELENABLE_TRKDESC)==0) {
+ return;
+ }
+
+ coOrd end0, end0off, end1, end1off;
+ end0 = GetTrkEndPos(trk,0);
+ end1 = GetTrkEndPos(trk,1);
+ a = FindAngle(end0,end1);
+ Translate(&end0off,end0,a+90,2*GetTrkGauge(trk)+xx->descriptionOff.y);
+ DrawLine(d,end0,end0off,0,color);
+ 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));
+
+ 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 ) {
+ 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);
+
+ AddTrkDetails(d, trk, details_pos, FindDistance(end0,end1), color);
+ }
+
+}
+
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 );
+ }
+ // 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);
BOOL_T rc = TRUE;
- rc &= fprintf(f, "STRAIGHT %d %d %ld 0 0 %s %d\n",
- GetTrkIndex(t), GetTrkLayer(t), (long)GetTrkWidth(t),
- GetTrkScaleName(t), GetTrkVisible(t)|(GetTrkNoTies(t)?1<<2:0)|(GetTrkBridge(t)?1<<3:0) )>0;
+
+ 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), 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;
@@ -306,26 +561,44 @@ static BOOL_T ReadStraight( char * line )
char scale[10];
wIndex_t layer;
long options;
+ struct extraDataStraight_t *xx;
+ char * cp = NULL;
+ coOrd descriptionOff = { 0.0, 0.0 };
- if ( !GetArgs( line+8, paramVersion<3?"dXZsd":"dLl00sd", &index, &layer, &options, scale, &visible ) )
+ if ( !GetArgs( line+8, paramVersion<3?"dXZsdc":"dLl00sdc", &index, &layer,
+ &options, scale, &visible, &cp ) ) {
return FALSE;
- if ( !ReadSegs() )
+ }
+ if (cp) {
+ if (!GetArgs(cp,"p",&descriptionOff)) {
+ return FALSE;
+ }
+ }
+ if ( !ReadSegs() ) {
return FALSE;
- trk = NewTrack( index, T_STRAIGHT, 0, 0 );
+ }
+ trk = NewTrack( index, T_STRAIGHT, 0, sizeof *xx );
+ xx = GET_EXTRA_DATA(trk, T_STRAIGHT, extraDataStraight_t);
+ xx->descriptionOff = descriptionOff;
SetTrkScale( trk, LookupScale(scale) );
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);
}
SetTrkLayer(trk, layer);
- SetTrkWidth( trk, (int)(options&3) );
+ SetTrkWidth( trk, (int)(options & 0x0F) );
SetEndPts( trk, 2 );
ComputeBoundingBox( trk );
+ if ( paramVersion < VERSION_DESCRIPTION2 || ( ( options & 0x80 ) == 0 ) ) {
+ SetTrkBits(trk,TB_HIDEDESC);
+ }
return TRUE;
}
@@ -354,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;
@@ -401,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];
@@ -418,11 +696,13 @@ static BOOL_T EnumerateStraight( track_p trk )
if (trk != NULL) {
d = FindDistance( GetTrkEndPos( trk, 0 ), GetTrkEndPos( trk, 1 ) );
ScaleLengthIncrement( GetTrkScale(trk), d );
+ return TRUE;
}
- return TRUE;
+ 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;
@@ -432,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 );
@@ -445,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;
@@ -465,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;
@@ -544,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:
@@ -589,35 +875,39 @@ 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 );
params->track_angle = FindAngle( params->lineOrig, params->lineEnd);
- params->angle = GetTrkEndAngle(trk,params->ep);
+ params->angle = params->track_angle;
params->arcR = 0.0;
return TRUE;
}
-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 );
@@ -635,6 +925,7 @@ static BOOL_T QueryStraight( track_p trk, int query )
case Q_CORNU_CAN_MODIFY:
case Q_MODIFY_CAN_SPLIT:
case Q_CAN_EXTEND:
+ case Q_HAS_DESC:
return TRUE;
default:
return FALSE;
@@ -643,55 +934,58 @@ 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;
*newTrkR = MakeDrawFromSeg( zero, 0.0, &tempSegs(0) );
+ SetTrkBits( *newTrkR, TB_HIDEDESC );
}
} 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;
}
@@ -703,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;
@@ -754,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;
@@ -764,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;
}
@@ -781,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:
@@ -819,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;
@@ -848,13 +1153,14 @@ track_p NewStraightTrack( coOrd p0, coOrd p1 )
{
track_p t;
ANGLE_T a;
- t = NewTrack( 0, T_STRAIGHT, 2, 0 );
- SetTrkScale( t, GetLayoutCurScale() );
+ t = NewTrack( 0, T_STRAIGHT, 2, sizeof (struct extraDataStraight_t) );
+ // *new-layer* SetTrkScale( t, GetLayoutCurScale() );
a = FindAngle( p1, p0 );
SetTrkEndPoint( t, 0, p0, a );
SetTrkEndPoint( t, 1, p1, NormalizeAngle( a+180.0 ) );
ComputeBoundingBox( t );
CheckTrackLength( t );
+ SetTrkBits( t, TB_HIDEDESC );
return t;
}
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 7055d0b..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,24 +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
- )
-
-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/unittest/testfiles/HO-Peco-Code83.xtp b/app/bin/unittest/testfiles/HO-Peco-Code83.xtp
index 09bf426..681e6f5 100644
--- a/app/bin/unittest/testfiles/HO-Peco-Code83.xtp
+++ b/app/bin/unittest/testfiles/HO-Peco-Code83.xtp
@@ -130,8 +130,10 @@ END
SUBCONTENTS Peco Code 83 HO Slip Turnouts
TURNOUT HO "Peco Code 83 #6 Double Slip Switch SL-U8363"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.035433 0.000000 90.000000
E 0.082528 0.993201 279.500000
diff --git a/app/bin/utf8convert.c b/app/bin/utf8convert.c
index 0573c93..666ac80 100644
--- a/app/bin/utf8convert.c
+++ b/app/bin/utf8convert.c
@@ -3,33 +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 <string.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 <wlib.h>
-#include "misc.h"
+#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.
@@ -43,9 +40,9 @@ char *
Convert2UTF8( char *string )
{
if (RequiresConvToUTF8(string)) {
- unsigned cnt = strlen(string) * 2 + 2;
+ size_t cnt = strlen(string) * 2 + 2;
unsigned char *out = MyMalloc(cnt);
- wSystemToUTF8(string, out, cnt);
+ wSystemToUTF8(string, out, (unsigned int)cnt);
MyFree(string);
return(out);
} else {
@@ -65,9 +62,9 @@ void
ConvertUTF8ToSystem(unsigned char *in)
{
if (wIsUTF8(in)) {
- unsigned cnt = strlen(in) * 2 + 1;
+ size_t cnt = strlen(in) * 2 + 2;
unsigned char *out = MyMalloc(cnt);
- wUTF8ToSystem(in, out, cnt);
+ wUTF8ToSystem(in, out, (unsigned int)cnt);
strcpy(in, out);
MyFree(out);
}
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 93f9979..ff457d9 100644
--- a/app/bin/utility.c
+++ b/app/bin/utility.c
@@ -17,16 +17,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 <stdlib.h>
-#include <stdio.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#endif
-#include <math.h>
-#include "common.h"
#include "utility.h"
/*****************************************************************************
@@ -51,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;
}
@@ -59,13 +52,21 @@ 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
+int CoOrdEqual(coOrd p0, coOrd p1)
+{
+ double d = fabs(p1.x - p0.x) + fabs(p1.y - p0.y);
+ return (d < EPSILON);
+}
+
+
+
double FindDistance( coOrd p0, coOrd p1 )
{
double dx = p1.x-p0.x, dy = p1.y-p0.y;
@@ -76,24 +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;
- if ( a > 360.0-EPSILON ) a = 0.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;
}
@@ -155,13 +157,10 @@ void Translate( coOrd *res, coOrd orig, double a, double d )
double FindAngle( coOrd p0, coOrd p1 )
{
double dx = p1.x-p0.x, dy = p1.y-p0.y;
- if (small(dx)) {
- if (dy >=0) return 0.0;
- else return 180.0;
- }
- if (small(dy)) {
- if (dx >=0) return 90.0;
- else return 270.0;
+ if ( dx == 0.0 && dy == 0.0 )
+ // Avoid implementation defined behavior
+ {
+ return 0.0;
}
return R2D(atan2( dx,dy ));
}
@@ -192,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;
@@ -212,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 )) );
}
@@ -221,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;
@@ -245,86 +248,47 @@ BOOL_T FindArcIntersections ( coOrd *Pc, coOrd *Pc2, coOrd center1, DIST_T radiu
}
/*
- * Find Intersections between a line and a circle
- *
- * |c-x|^2 = r^2
- *
- * 𝑥(𝑡)=𝑎+𝑡𝑏
- *
- * where 𝑎 is a point and 𝑏 is a vector.
- *
- * For a point on this line to satisfy the equation, you need to have
- *
- * (𝑡𝑏+(𝑎−𝑐))⋅(𝑡𝑏+(𝑎−𝑐))=𝑟^2
- *
- * which is a quadratic in 𝑡:
- * |b|^2*t^2 + 2(a-c).bt +(|a-c|^2-r^2) = 0
- *
- * whose solutions are
- *
- * t = (-2(a-c).b +/- SQRT([2(a-c).b]^2 - 4|b|^2(|a-c|^2-r^2)) / 2|b|^2
+ * Find Intersection between arc and line.
+ * First - move arc/circle and line so circle is at origin
+ * Then find nearest point on line to origin
+ * If nearest point is > radius -> no intersect
+ * If nearest point is == radius -> one point (the nearest)
+ * If nearest point is < radius -> two points
+ * 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 )
+{
+
+ double la, lb, lc; //Line equation
-double VectorLength (coOrd v) {
- return sqrt(v.x*v.x+v.y+v.y);
-}
-double VectorDot (coOrd v1, coOrd v2) {
- return (v1.x*v2.x+ v1.y*v2.y);
-}
-coOrd VectorSubtract (coOrd v1, coOrd v2) {
- coOrd result;
- result.x = v1.x-v2.x;
- result.y = v1.y-v2.y;
- return result;
-}
-coOrd VectorAdd (coOrd v1, coOrd v2) {
- coOrd result;
- result.x = v1.x+v2.x;
- result.y = v1.y+v2.y;
- return result;
-}
-
-BOOL_T FindArcAndLineIntersections(coOrd *intersection1, coOrd *intersection2, coOrd c, DIST_T radius,
- coOrd point1, coOrd point2 )
-{
- double dx, dy, cx, cy, A, B, C, det, t;
-
- dx = point2.x - point1.x;
- dy = point2.y - point1.y;
-
- cx = c.x;
- cy = c.y;
-
- A = dx * dx + dy * dy;
- B = 2 * (dx * (point1.x - cx) + dy * (point1.x - cy));
- C = (point1.x - cx) * (point1.x - cx) + (point1.y - cy) * (point1.y - cy) - radius * radius;
-
- det = B * B - 4 * A * C;
- if ((A <= 0.0000001) || (det < 0))
- {
- return FALSE;
- }
- else if (det == 0)
- {
- // One solution.
- t = -B / (2 * A);
- (*intersection1).x = point1.x + t * dx;
- (*intersection1).y = point1.y + t * dy;
- intersection2 = intersection1;
- return TRUE;
- }
- else
- {
- // Two solutions.
- t = (float)((-B + sqrt(det)) / (2 * A));
- (*intersection1).x = point1.x + t * dx;
- (*intersection1).y = point1.y + t * dy;
- t = (float)((-B - sqrt(det)) / (2 * A));
- (*intersection2).x = point1.x + t * dx;
- (*intersection2).y = point1.y + t * dy;
- return TRUE;
- }
+ 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 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;
+ }
}
/* Find intersection:
@@ -414,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 )
{
@@ -424,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 ) );
@@ -434,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;
}
@@ -458,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 )
@@ -526,6 +492,14 @@ double CircleDistance( coOrd *p, coOrd c, double r, double a0, double a1 )
+coOrd MidPtCoOrd(coOrd p0, coOrd p1)
+{
+ coOrd res;
+ res.x = (p0.x + p1.x) / 2.0;
+ res.y = (p0.y + p1.y) / 2.0;
+ return res;
+}
+
coOrd AddCoOrd( coOrd p0, coOrd p1, double a )
{
coOrd res, zero;
@@ -538,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;
@@ -571,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;
}
@@ -587,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 )
@@ -609,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 );
@@ -624,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 );
@@ -665,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) || /* 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");
@@ -676,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;
@@ -701,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;
@@ -761,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 ) ));
@@ -795,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;
@@ -806,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[] )
@@ -818,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 fad74be..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
@@ -44,6 +44,7 @@ double max( double a, double b );
double min( double a, double b );
#endif
double FindDistance( coOrd p0, coOrd p1 );
+int CoOrdEqual(coOrd p0, coOrd p1);
double NormalizeAngle( double a );
double DifferenceBetweenAngles(double a, double b);
int AngleInRange(double a, double start, double size);
@@ -55,14 +56,18 @@ 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 );
int PickLineEndPt( coOrd, double, coOrd );
+coOrd MidPtCoOrd(coOrd, coOrd);
coOrd AddCoOrd( coOrd, coOrd, double );
int ClipLine( coOrd *, coOrd *, coOrd, double, coOrd );
coOrd FindCentroid(int vertexCount, pts_t vertices[] );
diff --git a/app/bin/validator.c b/app/bin/validator.c
index c415471..88b41fe 100644
--- a/app/bin/validator.c
+++ b/app/bin/validator.c
@@ -17,10 +17,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 <stdbool.h>
#include "validator.h"
/**
@@ -37,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/bin/cJSON.c b/app/cJSON/cJSON.c
index 1733811..3063f74 100755..100644
--- a/app/bin/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/bin/cJSON.h b/app/cJSON/cJSON.h
index 8d45390..92907a2 100755..100644
--- a/app/bin/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 f30e1c2..2e0d8f4 100644
--- a/app/cornu/bezctx_xtrkcad.c
+++ b/app/cornu/bezctx_xtrkcad.c
@@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
#include "bezctx.h"
#include "bezctx_xtrkcad.h"
#include "track.h"
+#include "draw.h"
#include "tbezier.h"
#include "i18n.h"
#include "math.h"
@@ -71,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;
@@ -105,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;
@@ -113,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;
@@ -142,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;
@@ -151,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;
@@ -165,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;
}
@@ -207,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 f2caf26..a705a26 100644
--- a/app/doc/addm.but
+++ b/app/doc/addm.but
@@ -16,253 +16,295 @@
The \f{Add Menu} has all the actions related to adding track pieces to the layout.
-\dd \f{Circle Track} - place a circle of track by selecting radius, tangent and or center (\K{cmdCircle}).
+\dd \i{Straight Track} \c{Ctrl+G} - lay straight track pieces of arbitrary lengths
\u000
-\dd \f{Curved 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 \f{Hand-laid Turnout} - lay a turnout in place on the layout. (\K{cmdHandLaidTurnout})
+\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 \f{Helix} - Add a helix. (\K{cmdHelix})
+\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 \f{Parallel} - create parallel track or line to existing flex-track, straight or curved track. (\K{cmdParallel})
+\dd \i{Fixed-track} \I{Track, Fixed} \c{Ctrl+T} - select a piece of \f{Fixed-track} and place on layout.
\u000
-\dd \f{Straight Track} - lay straight track pieces of arbitrary lengths
+\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 \f{Structure} - Add a predefined structure to the layout.
+\dd \i{Structure} \c{Ctrl+Shift+C} - Add a predefined structure to the layout.
\u000
-\dd \f{Predefined Track} - select a turnout or a piece of fixed track and place on layout.
+\dd \i{Helix} \c{Ctrl+Shift+H} - Add a helix. (\K{cmdHelix})
\u000
-\dd \f{Custom Turntable} - Place a turntable. (\K{cmdTurntable})
+\dd \i{Custom Turntable} \I{Turntable, Custom} \c{Ctrl+Shift+N} - Place a turntable. (\K{cmdTurntable})
\u000
-\dd \f{Block} - Create a block. (\K{cmdBlock})
+\dd \i{Control Element} - Create a control element.
\u000
-\dd \f{Switchmotor} - Create a switchmotor. (\K{cmdSwitchmotor})
+\dd \i{Block} \I{Control Element, Block} - Create a block. (\K{cmdBlock})
\u000
-\dd \f{Signal} - Create a signal. (\K{cmdSignal})
+\dd \i{Switchmotor} \I{Control Element, Switchmotor} - Create a switchmotor. (\K{cmdSwitchmotor})
\u000
-\dd \f{Control} - Create a control. (\K{cmdControl})
+\dd \i{Signal} \I{Control Element, Signal} - Create a signal. (\K{cmdSignal})
\u000
-\dd \f{Sensor} - Create a sensor. (\K{cmdSensor})
+\dd \i{Control} \I{Control Element, Control} - Create a control. (\K{cmdControl})
-\S{cmdCircle} Circle Track
+\u000
-\G{png.d/bcircle.png}
+\dd \i{Sensor} \I{Control Element, Sensor} - Create a sensor. (\K{cmdSensor})
-A circle track is a special form of a curved track that extends 360\u00B0 and has no endpoints. The three methods (with their Shortcut keys) used to create a Circle Track are:
+\rule
-\u000
+\S{cmdCircle} \i{Circle Track}
-\dd (\K{cmdCircleFixedRadius}). Use the Fixed Radius specified on the \e{Circle Radius} control displayed on the Status Bar (\K{mainW}).
-\c{Left-Drag} the Circle track into position.
+\G{png.d/maddcircle.png}
-\u000
+A circle track \I{Circle Track} \I{Track, Circle} is a special form of a curved track that extends 360\u00B0 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.
-\dd (\K{cmdCircleTangent}). \c{Left-Drag} from tangent point (Edge) of the Circle track to the Center.
+\dd \G{png.d/bcircle.png}
+
+\dd \G{png.d/bmcircle.png}
+
+\dd \e{Circle Track Button Menu}
+
+The three methods (with their Icons and Shortcut keys) used to create a Circle Track are:
\u000
-\dd (\K{cmdCircleCenter}). \c{Left-Drag} from the Center of the Circle track to the edge.
+\dd \G{png.d/bcircl1.png} (\K{cmdCircleFixedRadius}) \c{Control+8} - Use the Fixed Radius specified on the \i\e{Circle Radius}
+control displayed on the Status Bar (\K{mainW}). \c{Left-Drag} the Circle track into position.
\u000
-A drop down menu, which allows selection of the Circle Track creation method, is invoked from the down arrow button (\G{png.d/bmenu.png}) located on the right side the Circle track button.
-Dependent upon previous selection, the Circle Track button will look like \G{png.d/bcircl1.png}, \G{png.d/bcircl2.png} or \G{png.d/bcircl3.png}.
+\dd \G{png.d/bcircl2.png} (\K{cmdCircleTangent}) \c{Control+9} - \c{Left-Drag} from tangent point (Edge) of the Circle track to the Center.
-\dd \G{png.d/bmcircle.png}
+\u000
-\dd \e{Circle Track Button Menu}
+\dd \G{png.d/bcircl3.png} (\K{cmdCircleCenter}) \c{Control+0} - \c{Left-Drag} from the Center of the Circle track to the edge.
+
+\u000
If Snap Grid (\K{cmdGrid}) is enabled then circle centers will be constrained to the grid.
-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".
+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".
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}
-(\c{Control-8}) Use the Fixed Radius specified on the \e{Circle Radius} control displayed on the Status Bar (\K{mainW}).
-\c{Left-Drag} the Circle track into position.
+(\c{Ctrl+8}) Use the Fixed Radius specified on the \i\e{Circle Radius} control displayed on the Status Bar (\K{mainW}).
+\c{Left-Drag} the Circle track into position.
\rule
-\S2{cmdCircleTangent} Circle Fixed Tangent
+\S2{cmdCircleTangent} \i{Circle Fixed Tangent}
\G{png.d/bcircl2.png}
-(\c{Control-9}) \c{Left-Drag} from tangent point (Edge) of the Circle track to the Center.
+(\c{Ctrl+9}) \c{Left-Drag} from tangent point (Edge) of the Circle track to the Center.
\rule
-\S2{cmdCircleCenter} Circle From Center
+\S2{cmdCircleCenter} \i{Circle From Center}
\G{png.d/bcircl3.png}
-(\c{Control-0}) \c{Left-Drag} from the Center of the Circle track to the edge.
+(\c{Ctrl+0}) \c{Left-Drag} from the Center of the Circle track to the edge.
\rule
-\S{cmdCurve} Curved Track
+\S{cmdCurve} \i{Curved Track}
-\G{png.d/bcurve.png}
+\G{png.d/maddcurve.png}
-Creating a curve is a two step operation.
+Creating a curve is a two step operation. You will select a point and then \c{Left-Drag} to specify the control point depending on the drawing method.
-The five methods (with their Shortcut keys) used to create a Curved Track are:
+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.
+
+\dd \G{png.d/bcurve.png}
+
+\dd \G{png.d/bmcurved.png}
+
+\dd \e{Curved Track Button Menu}
+
+The six methods (with their Shortcut keys) used to create a Curved Track are:
\dd
-\dd \K{cmdCurveEndPt}. Drag out the end and then set its radius by dragging the endpoint.
+\dd \G{png.d/bcurve1.png} \K{cmdCurveEndPt} \c{Control+4} - \I{End Point, Curved Track} \I{Curved Track, End Point}
+Drag out the end and then set its radius by dragging the endpoint.
\u000
-\dd \K{cmdCurveTangent}. Drag from the an endpoint to the center and then drag the second enpoint around that center.
+\dd \G{png.d/bcurve2.png} \K{cmdCurveTangent} \c{Control+5} - \I{Tangent, Curved Track} \I{Curved Track, Tangent}
+Drag from the an endpoint to the center and then drag the second enpoint around that center.
\u000
-\dd \K{cmdCurveCenter}. Drag from the Center of the Curved track to one of the endpoints. Position the second endpoint around the center.
+\dd \G{png.d/bcurve3.png} \K{cmdCurveCenter} \c{Control+6} - \I{Center, Curved Track} \I{Curved Track, Center}
+Drag from the Center of the Curved track to one of the endpoints. Position the second endpoint around the center.
\u000
-\dd \K{cmdCurveChord}. Drag from one endpoint to the other endpoint to form the Chord of the Curve. Drag the arc out to form the Curve.
+\dd \G{png.d/bcurve4.png} \K{cmdCurveChord} \c{Control+7} - \I{Chord, Curved Track} \I{Curved Track, Chord}
+Drag from one endpoint to the other endpoint to form the Chord of the Curve. Drag the arc out to form the Curve.
\u000
-\dd \K{cmdBezier}. Construct a Bezier by placing its four control points.
+\dd \G{png.d/bezier.png} \K{cmdBezier} - Construct a \i{Bezier Track} \I{Track, Bezier} by placing its four control points.
\u000
-A drop-down menu, which allows selection of the Curved Track creation method, is invoked from the down arrow button (\G{png.d/bmenu.png}) located on the right side the Curved track button. Dependent upon previous selection, the Curved Track button will look like \G{png.d/bcurve1.png}, \G{png.d/bcurve2.png}, \G{png.d/bcurve3.png}, \G{png.d/bcurve4.png}, \G{png.d/bezier.png} or \G{png.d/bcornu.png}.
+\dd \G{png.d/bcornu.png} \K{cmdCornu} - Construct a \i{Cornu Track} \I{Track, Cornu} curve by selecting the end points and dragging to set the curve values.
-\dd \G{png.d/bmcurved.png}
+\u000
-\dd \e{Curved Track Button Menu}
+For the first four curve mthods, two Red arrow heads will be drawn after the first step to indicate where you can \c{Left-Drag} to complete the second step.
-For all but the Bezier Curve, two Red arrow heads will be drawn after the first step to indicate where you can \c{Left-Drag} to complete the second step.
+A straight track will be created if the second endpoint is lined up with the first endpoint except for Bezier and Cornu tracks.
-A straight track will be created if the second endpoint is lined up with the first endpoint except for Bezier tracks.
+The radius of the curve is designed to be in 1/8" increments unless the \e{desired radius} field is set non-zero and the radius drawn is close to that value, in which case the radius will snap to that value.
If the Snap Grid (\K{cmdGrid}) is enabled then the endpoints will be constrained to the grid if they are not snapped to another object. \c{Shift} ensures that other objects will be ignored.
Optionally, the curve center point and radius can be displayed for the Curve. This is enabled by the Move Label (\K{cmdMoveLabel}) command.
-
-For Beziers, the active control point will be drawn in red and the available endpoints are shown with circles.
+For Beziers and Cornus, the active control point will be drawn in red and the available endpoints are shown with circles.
-\f{Note:} You can also create Straight and Curved tracks using \k{cmdModify} by \c{Left-Drag}ing out extra track from an open end-point.
+\f{Note:} You can also create Straight and Curved tracks using \k{cmdModify} by \c{Left-Drag}ging out extra track from an open end-point.
\rule
-\S2{cmdCurveEndPt} Curved Track from End Point
+\S2{cmdCurveEndPt} \i{Curved Track from End Point}
+
+\G{png.d/bcurve1.png}
-\G{png.d/bcurve1.png}
+(\c{Ctrl+4}) Drag from one endpoint in the direction of the Curve at that point and release. \c{Left-Drag} the red arrows to position the second endpoint.
-(\c{Control-4}) Drag from one endpoint in the direction of the Curve at that point and release. \c{Left-Drag} the red arrows to position the second endpoint.
+While the first endpoint is being placed, and \f{MagneticSnap} (\K{cmdMagneticSnap}) is enabled, unless \e{Alt} 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 \f{MagneticSnap} set off - if \e{Alt} is held.
-While the first endpoint is being placed, and \f{MagneticSnap} is enabled, unless \e{Alt} 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 \f{MagneticSnap} if \e{Alt} is held.
+If Magnetic Snap does not find a end, if \f{SnapGrid} is enabled, the ends will snap to the nearest grid point unless \f{Alt} is held.
\rule
-\S2{cmdCurveTangent} Curved track from Tangent
+\S2{cmdCurveTangent} \i{Curved track from Tangent}
-\G{png.d/bcurve2.png}
+\G{png.d/bcurve2.png}
-(\c{Control-5}) 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.
+(\c{Ctrl+5}) 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.
\c{Left-Drag} on the arrows to position the second endpoint.
-While the endpoints are being placed, if \f{MagneticSnap} 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.
+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.
After the new track is completed, it will be connected to these existing track.
If \f{MagneticSnap} is disabled, the snap 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.
\rule
-\S2{cmdCurveCenter} Curved Track From Center
+\S2{cmdCurveCenter} \i{Curved Track From Center}
-\G{png.d/bcurve3.png}
+\G{png.d/bcurve3.png}
-(\c{Control-6}) Drag from the Center of the Curved track to one of the endpoints and release. \c{Left-Drag} to position the second endpoint.
+(\c{Ctrl+6}) Drag from the Center of the Curved track to one of the endpoints and release. \c{Left-Drag} to position the second endpoint.
-While the endpoints are being placed, if \f{MagneticSnap} 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.
+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.
After the new track is completed, it will be connected to these existing track.
If \f{MagneticSnap} is disabled, the snap 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.
\rule
-\S2{cmdCurveChord} Curved Track from Chord
+\S2{cmdCurveChord} \i{Curved Track from Chord}
-\G{png.d/bcurve4.png} (\c{Control-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} 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.
+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.
After the new track is completed, it will be connected to these existing track.
If \f{MagneticSnap} is disabled, the snap 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.
\rule
-\S2{cmdBezier} Curved Bezier Track
+\S2{cmdBezier} \i{Curved Bezier Track}
-\G{png.d/bezier.png}
+\G{png.d/bezier.png}
-\c{Left-Click} to place one endpoint and \c{Left-Drag} out the first control point and release, \c{Left-Click} to place the second Endpoint and \c{Left-Drag} 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.
+\c{Left-Click} to place one endpoint and \c{Left-Drag} out the first control point and release, \c{Left-Click} to place the second Endpoint and \c{Left-Drag} 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 \c{Enter|, or Reject it with c\{Esc}.
-While the endpoints are being placed, if \f{MagneticSnap} 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.
+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.
After the new track is completed, it will be connected to these existing track.
If \f{MagneticSnap} is disabled, the snap 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.
\rule
-\S{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.
-During the move to the click, if \f{MagneticSnap} is enabled, an anchor will show when the cursor is near an open end point. This can be inhibited with \e{Alt}.
+\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.
-\c{Left-Drag} if the endpoint not on an existing track drags out the end angle of the new track. This is shown by the Cornu endanchor.
+\c{Left-Drag} if the endpoint not on an existing track drags out the end angle of the new track. This is shown by the Cornu endanchor.
\G{png.d/cornuendanchor.png}
-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.
+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.
-\c{Left-Click} to place the second Endpoint either on a track endpoint or not. \c{Left-Drag} sets the second end angle like the first for unconnected end-points.
+\c{Left-Click} to place the second Endpoint either on a track endpoint or not. \c{Left-Drag} sets the second end angle like the first for unconnected end-points.
Complete the Curve by pressing \c{Enter}, or Reject it with \c{Esc}.
The radius and angle of the selected open Cornu end can also be set with text entry boxes in the Status Bar.
-When either endpoint is being moved it will "Snap" to an open track endpoint of the tracks underneath the cursor unless \c{Shift} is held.
+When either endpoint is being moved it will "Snap" to an open track endpoint of the tracks underneath the cursor unless \c{Shift} 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.
Cornu Track Pins are further explained in \K{joinCornu} - 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, \e{Drag} to move them around or hit \e{Delete} to remove them.
@@ -272,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}
@@ -297,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.
@@ -311,6 +355,8 @@ In the case where different parameters could be affected (for instance changing
Changing \e{Vertical Separation} affects \e{Turns} which must be an integer value (no fractions), and this in turn affects the \e{Vertical Separation}. When you set \e{Vertical Separation} you are specifying the minimum separation which is adjusted upwards to the actual value.
+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.
+
Note: only the \e{Radius} and \e{Turns} 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 (\K{cmdElevation}) command to do this.
A helix is placed the same way as a Circle Track (\K{cmdCircle}) 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.
@@ -319,17 +365,18 @@ 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} Parallel Track or Line
+\S{cmdParallel} \i{Parallel Track or Line}
-You can pick between two Parallel Commands:
+\dd \G{png.d/maddparallel.png}
-\dd
+\rule
+
+You can pick between two Parallel Commands:
\u000
-\dd \K{cmdParallelTrack}. You can create a new track parallel to any straight, curved, bezier, cornu or easement track.
+\dd \K{cmdParallelTrack}. You can create a new track parallel to any straight, curved, bezier, cornu or easement track.
\u000
@@ -337,16 +384,16 @@ You can pick between two Parallel Commands:
\rule
-\S2{cmdParallelTrack} Parallel Track
+\S2{cmdParallelTrack} \i{Parallel Track}
-\G{png.d/bparallel.png}
+\G{png.d/bparallel.png}
Select the Track you want to parallel with \c{Left-Click}, and the new parallel track will appear beside it. You control which side the new track will be on by \c{Left-Drag}ging the cursor from one side to the other of the selected track before releasing it.
\G{png.d/statusbarparallel.png}
The \f{Parallel Separation} 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.
-
+
\b 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.
@@ -360,12 +407,12 @@ This command is very useful for creating sidings and yards as well as dual track
\b No parallel to a turnouts or a non-straight piece of sectional track is created.
-\b It is possible to create tracks that abut (the endpoints are very close and aligned).
+\b It is possible to create tracks that abut (the endpoints are very close and aligned).
These endpoints will be automatically connected.
\rule
-\S2{cmdParallelLine} Parallel Lines
+\S2{cmdParallelLine} \i{Parallel Lines}
\G{png.d/bparalleline.png}
@@ -375,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}
@@ -387,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}
@@ -401,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}
@@ -443,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}
@@ -466,7 +513,7 @@ information, etc.
\rule
-\S{cmdSwitchmotor} Switchmotor
+\S{cmdSwitchmotor} \i{Switchmotor}
\G{png.d/bswitchmotor.png}
@@ -490,16 +537,16 @@ could be code snippets or I/O device address information, etc.
\rule
-\S{cmdSignal} Signal
+\S{cmdSignal} \i{Signal}
\G{png.d/bsignal.png}
-A signal is created by selecting \f{Create Signal} from either the Add menu \K{cmdAdd} or
-from the hotbar. Use the mouse to select a location (left button) and then
-draging (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.
+A signal is created by selecting \f{Create Signal} from either the Add menu
+\K{cmdAdd} 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.
\G{png.d/signal.png}
@@ -514,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
@@ -534,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 97238fb..bf8485a 100644
--- a/app/doc/changem.but
+++ b/app/doc/changem.but
@@ -12,85 +12,90 @@
The \f{Change Menu} has all functions related to modifying objects that exist on the layout drawing.
-\dd \f{Change Scale} - change model scale and / or gauge of layout design. (\K{cmdRescale})
+\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 \f{Clear Elevations} - remove elevation parameters from selected track(s).
+\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}).
-\u000
+\rule
-\dd \f{Connect Two Tracks} - 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{Move} - move selected object(s). (\K{cmdMove}).
\u000
-\dd \f{Convert Tracks} - chnages fixed tracks (Straight, Curve, Joint, Bezier) into a Smooth Cornu or vice versa. (\K{cmdConvert}).
+\dd \i{Rotate} - rotate selected object(s). (\K{cmdRotate}).
\u000
-\dd \f{Elevation} - define an elevation at specified track location (\K{cmdElevation}).
+\dd \i{Flip} - turn selected object(s) over or around. (\K{cmdFlip}).
\u000
-\dd \f{Flip} - turn selected object(s) over or around. (\K{cmdFlip}).
+\dd \i{Loosen Tracks} \I{Track, Loosen} - this command reverses the effect of Connect Two Tracks as applied to sectional track.
\u000
-\dd \f{Join} - connect two separate pieces of track. 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. (\K{cmdJoin}).
+\dd \i{Modify} - modify an existing track, or lines. (\K{cmdModify}).
\u000
-\dd \f{Modify} - modify an existing track, or lines. (\K{cmdModify}).
+\dd \G{png.d/mjoin.png}
+
+\dd \f{Join} \I{Join Lines} \I{Join Track} \I{Track, Join} - 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. (\K{cmdJoin}).
\u000
-\dd \f{Move} - move selected object(s). (\K{cmdMove}).
+\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 \f{Move Description} - move the endpoint description of a track piece to another location. (\K{cmdMoveLabel}).
+\dd \G{png.d/msplit.png}
-\u000
+\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;
-\dd \f{Pan/Zoom} - move or resize the viewport using the mouse.
+\lcont{
\u000
-\dd \f{Profile} - display the elevation profile of a definable stretch of track (\K{cmdProfile}).
+\b split a section of flex-track into two connected pieces at the point where a \e{Left-Click} is invoked or;
-\u000
+\b disconnect turnouts or sectional track pieces at their point of connection.
-\dd \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}).
+}
-\u000
+\dd \i{Move Description} - move the endpoint description of a track piece to another location. (\K{cmdMoveLabel}).
-\dd \f{Raise/Lower Elevations} - raise or lower elevation of selected tracks. (\K{cmdRaiseElev}).
+\rule
+
+\dd \i{Raise/Lower Elevations} - raise or lower elevation of selected tracks. (\K{cmdRaiseElev}).
\u000
-\dd \f{Rotate} - rotate selected object(s). (\K{cmdRotate}).
+\dd \i{Elevation} - define an elevation at specified track location (\K{cmdElevation}).
\u000
-\dd \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{Profile} - display the elevation profile of a definable stretch of track (\K{cmdProfile}).
\u000
-\dd \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{Clear Elevations} - remove elevation parameters from selected track(s).
\u000
-\dd \f{Split Track} - the \f{Split Track} (\K{cmdSplitTrack}) command can be used in one of two ways;
+\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.
-\lcont{
+\rule
-\u000
+\dd \i{Change Scale} - change model scale and/or gauge of layout design. (\K{cmdRescale})
-\b split a section of flex-track into two connected pieces at the point where a \e{Left-Click} is invoked or;
+\rule
-\b disconnect turnouts or sectional track pieces at their point of connection.
+\dd \G{png.d/mconvert.png}
-}
+\dd \i{Convert} - changes flex-tracks (Straight, Curve, Joint, Bezier) into a Smooth Cornu or vice versa. (\K{cmdConvert}).
\rule
@@ -109,11 +114,13 @@ The \f{Change Menu} has all functions related to modifying objects that exist on
\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
-
\S{clrElev} Clear Elevations
The \f{Clear Elevations} command is used to remove elevation points from selected track on the layout.
@@ -122,12 +129,11 @@ Using the \f{Select} command, select the track that is to have its elevation set
\rule
-
\S{cmdConnect} Connect Tracks
\G{png.d/bconnect.png}
-This command is frequently used with \e{Sectional Track}. But it can be useful to reattach ordinary track which has become disconected or split.
+This command is frequently used with \i\e{Sectional Track}. But it can be useful to reattach ordinary track which has become disconected or split.
When in this connect, ends of tracks that can be selected are highlighted with a blue arrow. With \e{Shift} added, ends that can be tighten are highlighted with a blue "X".
@@ -159,27 +165,27 @@ You can undo the effect of the \f{Connect} command by splitting (\K{splitDisconn
\dd (\K{cmdConvertFrom}). Convert Cornu to Fixed.
-A drop down menu, which allows selection of the Convert Mode, is invoked from the down arrow button (\G{png.d/bmenu.png}) located on the right side the Convert Tracks button.
+A drop down menu, which allows selection of the Convert Mode, is invoked from the down arrow button (\G{png.d/bmenu.png}) located on the right side the Convert Tracks button.
Dependent upon previous selection, the Convert Track button will look like \G{png.d/convertto.png} or \G{png.d/convertfrom.png}.
\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).
-This may change the internal shape of the resulting track(s) due to smoothing.
+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 \k{cmdModify} can be used to fine tune the Cornu(s) by moving, adding and deleting "pins" in the combined shape.
This command is intended to help conversion of track designs that were made before Cornu Track existed to Cornu.
\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}
@@ -193,17 +199,19 @@ The resulting track(s) will mimic the shape of the Cornu/Bezier(s) exactly. This
\G{png.d/belev.png}
-The \f{Elevation} 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 \f{Left-Click}. You click on the respective endpoint to set its elevation properties.
+The \f{Elevation} 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 \f{Left-Click}. You click on the respective endpoint to set its elevation properties.
+
+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.
-The endpoint which you are working on is indicated with a big red dot.
+If you add \f{Shift} as you move the cursor before clicking you will see a blue bar when it is over a track if a \f{Shift+Left-Click} will split the Track at that point (which will give you the opportunity to specify an elevation).
-Moving around the layout will show you the elevation at the point indicated by a blue dot.
+Adding \f{Ctrl} allows you to \f{Ctrl+Left-Click} to Select and \f{Left-Drag} 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.
-If you hover over a point 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.
+If you add \f{Alt}, while moving around the layout close to tracks will show you the elevation at the point indicated by a blue closed dot.
-If you add \f{Shift} as you move the cursor before clicking you will see a blue bar when it is over a track if a \f{Shift-Left-Click} will split the Track at that point (which will give you the opportunity to specify an elevation).
+With \f{Alt} 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.
-Adding \f{Ctrl} allows you to \f{Ctrl+Left-Click} to Select and \f{Left-Drag} to move Elevation Labels if both the option is set for them to be displayed and the Zoom level is correct,, Only Defined and Station endpoint labels can be moved.
+Clicking with \f{Shift} at this point will split the track, allowing the elevation to be adjusted to provide adequate clearance.
\G{png.d/celev.png}
@@ -211,17 +219,17 @@ An endpoint can have one of several elevation types:
\u000
-\b \f{None} - no elevation defined.
+\b \f{None} - no elevation control defined. This is the default state and the elevation will be computed. It will be shown if the Display Option \K{cmdDisplay} \f{EndPt Elevations} setting is on.
-\b \f{Defined} - a defined elevation at a specified height.
+\b \f{Defined} - the defined elevation is set to a specified height. The elevation will be shown.
-\b \f{Hidden} - a defined elevation but not displayed on the layout.
+\b \f{Hidden} - a defined elevation like \f{Defined} but not displayed on the layout.
-\b \f{Computed} - height is based on height of closest neighbors.
+\b \f{Computed} - height is calculated and displayed even if the Display Option \K{cmdDisplay} \e{EndPt Elevations} is on.
-\b \f{Grade} - grade is based on height of closest neighbors.
+\b \f{Grade} - grade is based on height of closest neighbors and displayed.
-\b \f{Ignored} - endpoint is not considered in computations.
+\b \f{Ignored} - 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.
\b \f{Station} - assigns a name to the endpoint.
@@ -231,9 +239,11 @@ When an endpoint is selected on the layout by \e{Left-Click}, it is highlighted
Additionally, \f{Defined Elevation} endpoints are indicated on the layout by gold colored dots. \f{Ignored Elevation} endpoints are indicated by blue colored dots.
-The grade at the specified endpoint is displayed next to the \f{Grade} radio button. For \f{Defined Elevation} endpoints, the grade on each side of the endpoint is displayed.
+The grade at the specified endpoint is displayed next to the \f{Grade} radio button. For \e{Defined Elevation} endpoints, the grade on each side of the endpoint is displayed.
-\f{Defined Elevation} endpoints are used to specify fixed heights of track endpoints. Typically, this would be where a grade changes or where clearances must be maintained. \f{Computed} Elevations and \f{Grade} markers can place between \f{Defined Elevation} endpoints. These values are not entered directly but are computed dynamically based on \f{Defined Elevations} of connected tracks. This allows labeling of elevations at intermediate endpoints without having the enter specific values. \f{Computed} markers can also placed between a \f{Defined Elevation} point and the end of a track.
+\f{Defined Elevation} endpoints are used to specify fixed heights of track endpoints. Typically, this would be where a grade changes or where clearances must be maintained. \f{Computed} Elevations and \f{Grade} markers can place between \f{Defined Elevation} endpoints.
+These values are not entered directly but are computed dynamically based on \f{Defined Elevations} of connected tracks.
+This allows labeling of elevations at intermediate endpoints without having the enter specific values. \f{Computed} markers can also placed between a \f{Defined Elevation} point and the end of a track.
\f{Stations} are used to provide information for the Profile (\K{cmdProfile}) command.
@@ -246,7 +256,7 @@ All \f{Elevation} labels (including \f{Grade} and \f{Station}) are drawn on the
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 (\K{cmdDisplay})).
-\b The Shortest Paths between all \e{Defined Elevations} are computed. A Path stops at \e{Ignored} or \e{Defined} 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 \e{Defined Elevation} points (\e{Blue}).
+\b The Shortest Paths between all \e{Defined Elevations} are computed. A Path stops at \f{Ignored} or \e{Defined} 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 \e{Defined Elevation} points (\e{Blue}).
\u000
@@ -260,7 +270,8 @@ Elevations of Tracks are computed in following steps. The colors listed in each
\b Any remaining tracks are not connected to a \e{Defined Elevation} and do not have an Elevation.
-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 \e{Defined Elevation} endpoints and the number of Paths between them. Place the \e{Defined Elevations} at points where tracks begin to branch (such as the throat of a yard or at the ends of a siding). Also, use \e{Defined Elevations} to break the layout into areas so recomputation has fewer tracks and Paths to deal with.
+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 \e{Defined Elevation} endpoints and the number of Paths between them.
+Place the \e{Defined Elevations} at points where tracks begin to branch (such as the throat of a yard or at the ends of a siding). Also, use \e{Defined Elevations} or \e{Ignore Elevations} to break the layout into areas so recomputation has fewer tracks and Paths to deal with.
\rule
@@ -306,9 +317,9 @@ Certain turnouts, such as a Wye's, Three-Way or Crossings are symmetrical and th
\S{cmdJoin} Join Tracks and Lines
-The \f{Join} command has two variatons,
+The \f{Join} command has two variatons,
-\dd (\K{cmdJoinTrack}). Join Tracks by connecting them.
+\dd (\K{cmdJoinTrack}). Join Tracks by connecting them.
\u000
@@ -320,7 +331,7 @@ The \f{Join} command has two variatons,
\G{png.d/bjoinline.png}
-The \f{Join Line} 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.
+The \f{Join Line} 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.
\rule
@@ -339,8 +350,8 @@ For detail about;
\u000
-\dd Using Normal Easments 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})
+\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 a S-Curve (\K{generalTerms})
\u000
@@ -354,6 +365,8 @@ e.g. one which uses a curve in a single direction as opposed to using reverse cu
\S2{joinNormalEasment} Join with Normal Easement
+This type of join does not work for Bezier or Cornu tracks, use Cornu Easements (\K{joinCornu}) for these tracks instead.
+
\u000
\dd \G{png.d/joincrv1.png}
@@ -384,15 +397,15 @@ e.g. one which uses a curve in a single direction as opposed to using reverse cu
}
-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.
+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.
-\n Move the mouse pointer over the endpoint of the other track then \e{Left-Click} and hold the mouse button down. A track connecting the two endpoints will appear.
+\n Move the mouse pointer over the endpoint of the other track then \e{Left-Click} and hold the mouse button down. A track connecting the two endpoints will appear.
\lcont{
If the track appears in black (and you are happy with the curve as its drawn), release the mouse button.
-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.
+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.
@@ -445,11 +458,11 @@ For detail about;
\i{Creating a Cornu} \i{Modifying a Cornu} \i{Cornu Easements}
-A Cornu is a form of curve that uses a mathematical approach to creating a curve between two sets of end conditions.
+A Cornu is a form of curve that uses a mathematical approach to creating a curve between two sets of end conditions.
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.
-The conditions used at each end are the radius, angle and position.
+The conditions used at each end are the radius, angle and position.
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.
@@ -465,7 +478,7 @@ It is not always the case that the Cornu will be the most efficient way to get f
\S2{cornuTrackPins} Cornu Track Pins
-XTrackCAD Cornu can have "track pins" added that constrain the track to pass through those points in addition to meeting the end-conditions.
+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.
The pins can be added when Cornus are created \K{cmdCornu} or during \K{cmdModify} after clicking on the track. They can be selected and then \c{Left-Drag} dragged to alter the curve shape or deleted with \c{Delete}.
@@ -476,7 +489,7 @@ When a Cornu Track with pins is saved, it is split into two Cornu joined at the
\n First, ensure that the Easement type option is set to Cornu - see \k{cmdEasement}
-\n Start the Join Track process by clicking on the Join Track button (\G{png.d/bjoin.png}).
+\n Start the Join Track process by clicking on the Join Track button (\G{png.d/bjoin.png}).
As you move over tracks a blue roundel will indicate the end that will be chosen with \e{Left-Click}.
@@ -486,7 +499,7 @@ As you move over tracks a blue roundel will indicate the end that will be chosen
\u000
-\dd \c{Left-Drag} the endpoint to where you want it and release the button.
+\dd \c{Left-Drag} 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.
\lcont{
@@ -503,8 +516,8 @@ The point will only move along the piece of track with the open endpoint (if thi
\u000
-\dd \c{Left-Drag} 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).
+\dd \c{Left-Drag} 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.
\lcont{
@@ -517,11 +530,11 @@ The initial curve will be drawn - it will be red if the minimum radius is smalle
}
-\dd You are now in "Select Points" mode.
+\dd You are now in "Select Points" mode.
\u000
-\dd You can select one end point at a time with \c{Left-Click} and move it with \c{Left-Drag}. If you drag the end point off the original track it will extend.
+\dd You can select one end point at a time with \c{Left-Click} and move it with \c{Left-Drag}. If you drag the end point off the original track it will extend.
\u000
@@ -677,7 +690,9 @@ Either the left mouse button (for changing length or creating a tangent track) o
\S2{objectModify} Modifying Objects
-\n The endpoints of a \e{Line}, \e{Dimension Line}, \e{Table Edge} or \e{Bench-work} can be dragged to new positions.
+\n The endpoints of a \e{Line}, \e{Dimension Line}, \e{Table Edge} or \e{Benchwork} can be dragged to new positions.
+
+\n The ends of a \e{Ruler} or the ends and origin of a \e{Protractor} can be dragged to new positions
\n A \e{Box} or a \e{FilledBox} 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.
@@ -730,12 +745,15 @@ For more detail about;
\lcont{\u000}
\n With the mouse pointer hovering over the endpoint of the object to be modified, \e{Left+Drag} (\K{windowTerms}) to change the length of the track segment, table edge, bench-work, dimension line or line.
+If \f{MagneticSnap} is enabled, the end will snap to any close draw object. \c{Alt} inverts the MagneticSnap setting. If there is no nearby object and \f{SnapGrid} is enabled, the end will snap to a grid point unless \f{Alt} is added.
\lcont{\u000}
\e{Left+Drag}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.
-\e{Left+Drag}ging the endpoint of a \f{Table Edge} (\K{cmdDraw}) allows the endpoint to be moved to a new position. If the endpoint is moved close to another \f{Table Edge} then the endpoint will be moved to it.
+\e{Left+Drag}ging the endpoint of a \f{Table Edge} (\K{cmdDraw}) allows the endpoint to be moved to a new position. If \c{Ctrl} is added and the endpoint is moved close to another \f{Table Edge} then the endpoint will be moved to it if not, the line will be a multiple of 90 degrees.
+
+
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\u00B0 cannot be created.
@@ -893,7 +911,7 @@ When a Polygon or a PolyLine is modified, open blue circle anchors show the posi
\u000
-\b \f{Delete} will remove a selected node.
+\b \f{Delete} or \f{Backspace} will remove a selected node.
\u000
@@ -1042,7 +1060,7 @@ A move can be achieved using one of the following methods;
\u000
-During a Move of tracks, and \f{MagneticSnap} 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.
+During a Move of tracks, and \f{MagneticSnap} (\K{cmdMagneticSnap}) 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 \e{Alt}. If \f{MagneticSnap} is disabled, the alignment will only occur if \e{Alt} is pressed.
@@ -1068,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;
@@ -1078,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
@@ -1097,17 +1114,70 @@ Any amount of precise transalation may be entered by \e{Left-Click}ing the \f{En
\G{png.d/bmovedes.png}
-This command is used to move Elevation, Grade, Station (\K{cmdElevation}), Curved Track (\K{cmdCurve}), Bezier, Cornu, Helix (\K{cmdHelix}) and Structure or Turnout (\K{cmdHotBar}) Labels.
+This command is used to move Elevation, Grade, or Station (\K{cmdElevation}), and to enable/disable and move
+Straight Track (\K{cmdStraight}), Curved Track (\K{cmdCurve}), Bezier (\K{cmdBezier}, Cornu (\K{cmdCornu}), Joint (\K{cmdJoin}), Helix (\K{cmdHelix}) and Structure or Turnout (\K{cmdHotBar}) Labels.
The \f{Move Description} command can be invoked using the \f{Change>Move Description} menu item or the \f{Move Description} button.
-Click the \f{Move Description} button to activate the \f{Move Description} 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 light blue set off.
+Click the \f{Move Description} button to activate the \f{Move Description} 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.
Use \e{Left+Drag} 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.
This operation can also be invoked by \e{Ctrl+Left+Drag} when in Select command (\K{cmdSelect}).
-The letter "\f{h}", can be used to hide display of individual Curved Track, Bezier Track, Cornu, Helix or Turnout Labels. The letter"\f{s} will show a hidden description. There is a \f{Context Menu} Show/Hide Toggle as well.
+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.
+
+There are keys that control the display of description when hovering over a description or a track.
+
+\b The letter "\f{s}" when hovering over a track will show the hidden description - the teal highlight will show which tracks can have descriptions.
+
+\b The letter "\f{h}", 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.
+
+\b The letter "\f{d}" 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.
+
+Using these detailed values a curve can be constructed even for complex objects such as Bezier or Cornu.
+
+There is a \f{Context Menu} invoked with \e{Right-Click} or \e{Shift plus Right-Click} to Show/Hide individual descriptions as well as set the description to detailed.
+
+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.
+
+\lcont{\u000
+
+\b 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 \f{'d'} is suggested.
+
+\b 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 \f{'d'} may be useful.
+
+\b Straight Tracks show the length and the absolute angle.
+For laying out long straights, the detailed track center position and angle descriptions selected by \f{'d'} may be useful.
+
+\b 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 \f{'d'} may be useful.
+
+}
+
+\u000
+
+\b 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.
+
+\u000
+
+\b Compound (Structure and Turnout) Labels can be moved without restriction. They show the Object's Title information.
+
+\u000
+
+\b Elevation points labels can be moved without restriction - they show the Grade, Elevation, or Station Name as appropriate.
+
+\u000
+
+\b 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.
Note - existing defined elevation labels can be moved, but controlling thier visbility is done with the \K{cmdElevation} command.
@@ -1199,9 +1269,10 @@ The dialog can be closed with the 'X' button in the window's titlebar.
Clicking on the \f{Properties} (Describe Mode) button cancels all active commands, closes any open dialog windows and places focus on the main window.
Until an object is selected, the object under the cursor that will be selected with \e{Left-Click} is highlighted in blue.
+Objects in Frozen Layers will only be highlighted and selected if \f{Shift} is added.
A \e{Left-Click} on an object while in \f{Properties} mode causes a properties dialog window to appear.
-The properties dialog contains information pertaining to the selected objects position, size, color and layer as appropriate for each type of object.
+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 \f{Enter}, \f{Tab} is pressed or the cursor leaves the entry field.
@@ -1209,47 +1280,61 @@ The values will take effect when \f{Enter}, \f{Tab} is pressed or the cursor lea
The selected object is highlighted by a grey area.
-If it is a Line, Curve, Circle or Polygon object, and the rotation origin is non-zero, a large blue cross will show its position.
-
\G{png.d/dpropertieshighlight.png}
-\S2{drawDescribe} Draw Object Fields
+\S2{drawDescribe} Draw Object Describe Fields
+
+\S3{drawDescribeCommon} Common Draw Object Fields
+
+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 \f{Lock Origin} field unticked and the \f{Rotate By} field greyed out.
Some fields are used by multiple types of objects - these are listed below
\dt Line Width
\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.
+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.
\dt Pivot
-\dd The Pivot control can be set to the start, or the middle or the end, and it applies to the Length and Angle controls
-
-\dt Rotation Angle
-
-\dd Some Draw objects (Polygon, Polyline, Lines, Curves, Circles) can be rotated about their rotation origin in Describe.
-After the rotation completes, the rotation angle will be set to zero, as all the points of the object will be adjusted to thier absolute position in the layout.
+\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.
\dt Rotation Origin
\dd By default the rotation origin is the Layout origin \{0,0\}.
-By setting a different Rotation Origin, subsequent Rotations will be about that new point. This may be useful when using Draw objects as part of larger collections.
+If the origin is not at the Layout origin, it will be displayed with a blue cross.
+When the origin is changed with the \f{Lock} off, the object is not moved.
+But if the origin is changed with the \f{Lock} on, the object will be moved as well.
+Enabling the \f{Lock To Origin} allows subsequent Rotations to be about the origin.
+This may be especially useful when using creating larger groups of Draw objects.
+
+\dt Lock To Origin
+
+\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 \K{cmdDescribe} 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 \e{Absolute} origin.
-\dt Lock Rotation Origin
+\dt Rotate By
-\dd For ease of use, the rotation origin can be \e{Relative} to the First Point. If this is done, altering either the First Point or the Rotation Origin will move the both values.
-This value is always set to locked if the Draw origin is non-zero when the \K{cmdDescribe} command is started but can be unset to allow repositioning of the Rotate Origin without moving the object. If the Rotate Origin is set to zero, the Object has an \e{Absolute} origin.
+\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 \f{Lock To Origin} 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 \f{Text Angle}.
\dt Layer
-\dd The object can be moved between layers
+\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.
\dt Color
\dd The color of the line or the fill can be set
-\S3{drawDescribeStr} Straight Line Objects
+\S3{drawDescribeStr} Straight Line Objects Describe Fields
\dt End Pt 1
@@ -1259,13 +1344,13 @@ This value is always set to locked if the Draw origin is non-zero when the \K{cm
\dd Straight Lines have a second point, altering this, moves just that end of the line, altering its length as needed.
-\dt Angle
+\dt Line Angle
-\dd Straight Lines have an angle - this is the angle between the two points, altering this moves End Pt2.
+\dd Straight Lines have an angle - this is the angle between the two points, altering this moves the ends so as to respect the \f{Pivot} control setting.
\dt Length
-\dd The Length control can add to the start or end or both of a Line object depending on the setting of the Pivot control.
+\dd The Length control can add to the start or end or both of a Line object depending on the setting of the \f{Pivot} control setting.
\S3{drawDescribeDim} Dimension Line Objects
@@ -1273,7 +1358,7 @@ This value is always set to locked if the Draw origin is non-zero when the \K{cm
\dd The size of the arrows and text can be set to Tine, Small, Medium or Large.
-\S3{drawDescribeBench} BenchWork Objects
+\S3{drawDescribeBench} BenchWork Objects Describe Fields
\dt Lumber
@@ -1283,7 +1368,7 @@ This value is always set to locked if the Draw origin is non-zero when the \K{cm
\dd The timber can be orientated "On Edge" which will draw the smaller dimension or "Flat".
-\S3{drawDescribeCurve} Curved and Circle Objects
+\S3{drawDescribeCurve} Curved and Circle Objects Describe Fields
\dt Center
@@ -1291,9 +1376,13 @@ This value is always set to locked if the Draw origin is non-zero when the \K{cm
\dt CW Angle and CCW Angle
-\dd Curved Lines have an angle relative to the center that the arc starts and and one where it ends
+\dd Curved Lines have an angle relative to the center that the arc starts and and one where it ends.
+
+\dt Angular Length
-\S3{drawDescribePoly} Polygon Objects
+\dd For Curved Lines this is the length of the arc in degrees. If altered it will move the arc to respect the \f{Pivot} control setting.
+
+\S3{drawDescribePoly} Polygon Objects Describe Fields
\dt Fill
@@ -1301,7 +1390,7 @@ This value is always set to locked if the Draw origin is non-zero when the \K{cm
\dt Open
-\dd Polygons can be opened to become Polylines or Polylines closed to become Polygons using Describe.
+\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.
\dt Point Count
@@ -1315,12 +1404,149 @@ This value is always set to locked if the Draw origin is non-zero when the \K{cm
\dd Straight and Curved Lines, PolyLines, Polygons and Structures can be drawn with dotted, dashed, dash-dotted and dash-dot-dotted lines.
-\S3{drawDescribeText} Text Objects
+\S3{drawDescribeText} Text Objects Describe Fields
\dt Text Angle
-\dd For Text objects, the Text Angle determines the angle the text is rendered at. This is independent of the rotation of the starting position which is gained from the Rotation Angle and the Rotation Origin.
+\dd For Text objects, the Text Angle determines the absolute angle the text is rendered at.
+
+This will be set by itself or by rotation of the starting position about the Rotation Origin with \f{Lock to Origin} set.
+
+\dt Boxed
+
+\dd For Text objects, whether a line is drawn around the text.
+
+\S2{DescribeCompound} Structures, Sectional Track and Turnouts Describe Fields
+
+\dt Pivot
+
+\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.
+
+\dt Angle
+
+\dd The Angle rotates the object about the Pivot point.
+
+\S2{DescribeTrack} Describe Track Fields
+
+\S3{trackDescribeCommon} Common Track Object Fields
+
+\dt End Pt 1
+
+\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.
+
+\dt End Pt 2
+
+\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.
+
+\dt Grade
+
+\dd The calculated grade between the two end-points
+
+\dt Layer
+
+\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.
+
+\dt Length
+
+\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 \f{Pivot} field.
+
+\dt Pivot
+
+\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.
+
+\S3{trackDescribeStr} Straight Track Describe Fields
+
+
+\dt Track Angle
+
+\dd The angle of the Track object. This can be set if the track is not connected. It respects the value of the \f{Pivot} field
+
+
+\S3{trackDescribeCurve} Curved Track Describe Fields
+
+\dt Center
+
+\dd The center point of the curve. The center can only be modified if both ends are unconnected.
+
+\dt Radius
+
+\dd The radius of the curve. The radius can only be modified if one end is not connected.
+
+\dt Angular Length
+
+\dd The length of the curve in degrees. Modifications respect the \f{Pivot} value and are only available if at least one end is disconnected.
+
+\dt CCW Angle
+
+\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.
+
+\dt CW Angle
+
+\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.
+
+
+\S3{trackDescribeCornu} Cornu Track Describe Fields
+
+\dt End Angle
+
+\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.
+
+\dt End Radius
+
+\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.
+
+\dt End Pt
+
+\dd Each End Point has a position. It can only be set if the Track is not joined at that end.
+
+\dt Center
+
+\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\}.
+
+\dt Minimum Radius
+
+\dd This is the approximate smallest radius along the curve based on curve fitting to the Cornu.
+
+\dt Maximum Rate of Curvature
+
+\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.
+
+\dt Total Winding Angle
+\dd The number of degrees that the curve executes - this number will rise if there are loops in the curve.
+
+\S3{trackDescribeBezier} Bezier Track Describe Fields
+
+\dt Ctl Pt
+
+\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.
+
+\dt End Angle
+
+\dd Each end has an angle which is set by the control arm at that end - this is a read-only field
+
+\dt End Radius
+
+\dd Each end has an radius which is driven by the curve shape - this is a read-only field
+
+\dt End Pt
+
+\dd Each End Point has a position. It can only be set if the Track is not joined at that end.
+
+\dt Center
+
+\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\}.
+
+\dt Minimum Radius
+
+\dd This is the approximate smallest radius along the curve based on curve fitting to the Bezier.
+
+\rule
Most commands return to \f{Properties} mode then they terminate unless the command is sticky (\K{cmdSticky}).
@@ -1370,8 +1596,8 @@ Rotation can be achieved using one of the following methods;
\dd Aligning the selected object with another object on the layout. See \K{rotateByAlign} for detail.
-During Rotation of a track, if \f{MagneticSnap} 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 \e{Alt} is used.
+During Rotation of a track, if \f{MagneticSnap} (\K{cmdMagneticSnap}) 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 \e{Alt} is used.
If \f{MagneticSnap} is disabled, the snap will only occur if \e{Alt} is held.
Note that this also applies to \K{cmdMove}.
@@ -1394,19 +1620,19 @@ Rotate An Object Using the Mouse
\lcont{\u000}
-\n Click and hold the left mouse button then drag (\e{Left+Drag}) 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 (\e{Left+Drag}) the handle in the desired direction of rotation.
+\n Click and hold the left mouse button then drag (\e{Left+Drag}) 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 (\e{Left+Drag}) the handle in the desired direction of rotation.
\f{Note:} If the \e{Shift+Ctrl} key is pressed in conjunction with \e{Left+Drag}, the object will rotate in increments of 15\u00B0.
\lcont{\u000}
-\n Release the mouse key once desired rotation is obtained.
+\n Release the mouse key once desired rotation is obtained.
\u000
-\n If \f{Magnetic Snap} is enabled and the \e{Alt} button is not pressed, or ifthe \e{Alt} 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.
+\n If \f{Magnetic Snap} is enabled and the \e{Alt} button is not pressed, or ifthe \e{Alt} 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.
-\u000
+\u000
Rotation can also be achieved through use of one of these alternate methods;
@@ -1535,7 +1761,7 @@ Clicking on the \f{Select} button cancels all active commands, closes any open d
In combination with the mouse, the \f{Select} command can be used as follows;
-\dd Unselected Objects that will be added to the selected set with a \e{Left-Click} are highlighted in Blue as the mouse moves over them. Items that will be deselected are highlighted in Gold.
+\dd Unselected Objects that will be added to the selected set with a \e{Left-Click} are highlighted in Blue as the mouse moves over them. Items that will be deselected are highlighted in Gold.
\u000
@@ -1543,16 +1769,16 @@ In combination with the mouse, the \f{Select} command can be used as follows;
\u000
-\dd \e{Left-Click} - if the \f{SelectMode} in \K{cmdCmdopt} 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 \f{Color} (\K{cmdRgbcolor}) dialog) and a blue selection box surrounds all currently selected objects.
+\dd \e{Left-Click} - if the \f{SelectMode} in \K{cmdCmdopt} 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 \f{Color} (\K{cmdRgbcolor}) dialog) and a blue selection box surrounds all currently selected objects.
If \f{SelectZero} is selected in \K{cmdCmdopt} and an point that is not near to any object is selected, all objects are deselected.
\u000
\dd \e{Ctrl+Left-Click} - if \f{SelectMode} in \K{cmdCmdopt} 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 \f{Color} (\K{cmdRgbcolor}) dialog) and a blue selection box surrounds all currently selected objects.
+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 \f{Color} (\K{cmdRgbcolor}) dialog) and a blue selection box surrounds all currently selected objects.
If \f{SelectZero} is selected in \K{cmdCmdopt} and an point that is not near to any objects is selected, all objects are deselected.
\u000
@@ -1569,7 +1795,21 @@ If \f{SelectZero} is selected in \K{cmdCmdopt} and an point that is not near to
\u000
-\dd \e{Right-Click} - displays a pop-up menu of commands.
+\dd \e{Right-Click} and \e{Shift-Right-Click} - 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 \K{cmdCmdopt}.
+
+\lcont{
+
+\u000
+
+\G{png.d/mselectcmd.png} or \G{png.d/mselectcontext.png}
+
+\u000
+
+}
+
+\u000
+
+\dd \e{Double-Click} - invokes \K{cmdModify} on the object after selecting it for eligible objects. Otherwise it acts as \e{Left-Click}.
\u000
@@ -1577,27 +1817,38 @@ If \f{SelectZero} is selected in \K{cmdCmdopt} and an point that is not near to
\u000
-\dd \e{"@"} - moves the center of the window (i.e., Pans) to be at the cursor position
+\b \e{"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
-\dd \e{Shift+Ctrl} plus the \e{Arrow Keys} will move the selected items a pixel at a time at the current zoom level. No autosnap will occur to permit fine tuning.
+\u000
-\lcont{
+\b \e{"s"} sets the zoom to show the selected set of objects and pans the window to center the highlit area.
\u000
-\G{png.d/mselect.png} or \G{png.d/mselected.png}
+\dd \e{"c"} - moves the center of the window (i.e., Pans) to be at the cursor position
\u000
+\dd Hovering over a selected object (inside the blue highlight area) displays an anchor. The Anchor shows the actions available -
+
+\lcont{
+
+\b If the \e{Shift} key is depressed, a "cross-arrows" anchor shows that a \K{cmdMove} will occur with \e{Left-Click}.
+
+\b If the \e{Ctrl} key is depresesed, a "rotation-circle" anchor shows that a \K{cmdRotate} will occur with \e{Left-Click}.
+
+\b With neither depressed a "target" anchor shows that a \e{Double-Click} will invoke \K{cmdModify} within Select for the object hovered over.
+
}
\u000
-\dd Hovering over a selected object (inside the blue highlight area) with either a \e{Shift} or a \e{Ctrl} button depressed displays an anchor that shows that a Left-Drag will either Move or Rotate the selected items.
+\dd \e{Shift+Ctrl} plus the \e{Arrow Keys} will move the selected items a pixel at a time at the current zoom level. No autosnap will occur to permit fine tuning.
\u000
-\dd \e{Shift+Right-Click} (\K{cmdAcclKeys}) - displays a pop-up menu of options controlling how objects are drawn during moves and rotates (below). If there are selected objects then additional menu items allow you to rotate the selected objects by various angles.
+\dd \e{Shift+Right-Click} or \e{Right-Click} (depending on the setting of \f{Right-Click} in \K{cmdCmdopt}) -
+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.
\u000
@@ -1618,7 +1869,26 @@ Upon release of the button, all the selected tracks will be moved and aligned an
\u000
-The following commands operate on the objects you have selected:
+\dd \e{Double-Click} - on a eligible object such as a Link Object will Activate it, and on a Modifyable object will go into Modify Mode (\K{cmdModify}) within Select.
+
+\u000
+
+\dd \e{Right-Click} and \e{Shift-Right-Click} - 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 \K{cmdCmdopt}.
+The options effects depend on the type of object(s) selected and hovered over.
+
+\lcont{
+\u000
+
+\G{png.d/mselectcmd.png} or \G{png.d/mselectedcontext.png}
+
+\u000
+
+}
+
+Once Objects are
+
+
+Once objects are selected, the following commands operate on them:
\b \f{Move} (\K{cmdMove}) the selected objects.
@@ -1638,7 +1908,7 @@ The following commands operate on the objects you have selected:
\b \f{Export} (\K{cmdExport}) the selected objects.
-\b Creates a structure or turnout definition from \f{Grouped} (\K{cmdGroup}) objects.
+\b \f{Group} Creates a structure or turnout definition (\K{cmdGroup}) from the objects.
\b \f{Rescale} (\K{cmdRescale}) the selected objects.
@@ -1666,12 +1936,15 @@ Notes:
\rule
+\S{cmdSplit} Split Commands
+
+There are two split commands, \K{cmdSplitTrack} and \K{cmdSplitDraw}.
-\S{cmdSplitTrack} Split Track
+\S2{cmdSplitTrack} Split Track
\G{png.d/bsplit.png}
-The \f{Split} 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.
+The \f{Split Track} 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.
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.
@@ -1683,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
@@ -1733,11 +2006,11 @@ For detail about;
\rule
-\S2{splitDivide} Divide Track
+\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} button (\G{png.d/bsplit.png}) to activate the \f{Split} command.
+\n Click the \f{Split Track} button (\G{png.d/bsplit.png}) to activate the \f{Split Track} command.
\n 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 \e{Left-Click}.
@@ -1745,7 +2018,7 @@ Dividing a section of flex track into two connected pieces;
\lcont{\u000}
-\dd When the \f{Split} command completes, a connected joint will appear in the track at the point of selection. To split and disconnect at a point, execute the \f{Split} track command twice. The first command will split the track, the second command will disconnect it.
+\dd When the \f{Split Track} command completes, a connected joint will appear in the track at the point of selection. To split and disconnect at a point, execute the \f{Split} track command twice. The first command will split the track, the second command will disconnect it.
\u000
@@ -1780,7 +2053,7 @@ For detail about;
\rule
-\S2{splitBlockGap} Adding \i{Block Gaps}
+\S3{splitBlockGap} Adding \i{Block Gaps}
The \f{Split} command can be used to add block gaps (\K{generalTerms}) 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.
@@ -1833,3 +2106,41 @@ For detail about;
\dd Dividing a section of track into two connected pieces see \K{splitDivide}.
\rule
+
+\S2{cmdSplitDraw} Split a Draw Object
+
+The \f{Split Draw} command can be used to split many draw object (Straight Lines, Curved Lines, Circles, Polygons, PolyLines).
+
+Until a split point is selected, the split point under the cursor will have a blue marker.
+
+\n 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).
+
+\n Filled Circles and Polygons will be unfilled after the split.
+
+\n If the split object is a Circle, the result is an circular arc split at the point with a small (5 degree) gap.
+
+\n If the split object is a Polygon, a PolyLine with two end points at the split results.
+
+\rule
+
+\S2{cmdTrimDraw} Trim a Draw Object using another Draw object
+
+The \f{Trim Draw} 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.
+
+\n First a Trimming object (draw object) is selected with \f{Left-Click}. 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.
+
+\n 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.
+
+The trim anchor base has an arm that indicates which side of the trimmed object will be deleted. A \f{Left-Click} will trim the object.
+
+\u000
+
+If the trimmed object is a circle or a polygon, the result will be the same as a Split (\K{cmdSplitDraw}), a 355 degree circle and an open polyline with ends at the split will result.
+
+Once a trim has occured, the trimming object remains selected for another trim.
+
+To leave the command use the spacebar. If \e{Sticky} (\K{cmdSticky}) is set for Split commands you will be able to select another trim object.
+
+\rule
+
+
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 76335bc..5e27011 100644
--- a/app/doc/drawm.but
+++ b/app/doc/drawm.but
@@ -32,6 +32,10 @@ Functions for drawing basic shapes and objects like lines and curves can be acce
\u000
+\dd \f{Protractor} - create protractor and set visibility (\K{cmdAngle})
+
+\u000
+
\dd \f{Shapes} - draw boxes, polygons and poly-lines. (\K{cmdDrawShapes})
\u000
@@ -46,10 +50,13 @@ 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}
+Before a Circle is drawn its line width and color can be set. For Filled Circles, the color can be set.
+The \f{Circle 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.
+
\f{Circles} and \f{Filled Circles} are created by selecting either the center position or a point on the edge of the circle and dragging to specify the radius.
\dd \K{cmdDrawCircleTangent}. Draw a Circle from the Edge.
@@ -68,42 +75,45 @@ Some commands display controls on the Status Line (\K{mainW}) to change line wid
\rule
-\S2{cmdDrawCircleTangent} Draw Circle from Tangent
+\S2{cmdDrawCircleTangent} \i{Draw Circle from Tangent}
-\G{png.d/dcircle2.png}
+\G{png.d/dcircle3.png}
-\c{Left-Drag} a point on the edge of the circle to specify the radius.
+\c{Left-Drag} a point from the edge of the circle to the center to specify the radius.
\rule
-\S2{cmdDrawCircleCenter} Draw Circle from Center
+\S2{cmdDrawCircleCenter} \i{Draw Circle from Center}
-\G{png.d/dcircle3.png}
+\G{png.d/dcircle2.png}
-\c{Left-Drag} from the center of the circle to the edge.
+\c{Left-Drag} from the center of the circle to the edge to specify the radius.
\rule
-\S2{cmdDrawFilledCircleTangent} Draw Filled Circle from Tangent
+\S2{cmdDrawFilledCircleTangent} \i{Draw Filled Circle from Tangent}
-\G{png.d/dflcrcl2.png}
+\G{png.d/dflcrcl3.png}
-\c{Left-Drag} from the center of the circle to the edge.
+\c{Left-Drag} from the edge of the circle to the center to specify the radius.
\rule
-\S2{cmdDrawFilledCircleCenter} Draw Filled Circle from Center
+\S2{cmdDrawFilledCircleCenter} \i{Draw Filled Circle from Center}
-\G{png.d/dflcrcl3.png}
+\G{png.d/dflcrcl2.png}
-\c{Left-Drag} a point on the edge of the circle to specify the radius.
+\c{Left-Drag} a point from the center to the edge of the circle to specify the radius.
\rule
-\S{cmdDrawCurves} Curved Lines
+\S{cmdDrawCurves} \i{Curved Lines}
\G{png.d/mdrawcurve.png}
+Before a Curved Line is created, its width and color can be set.
+The \f{Curved Line Width} or \f{Bezier 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.
+
\f{Curved Lines} are created in the same manner as curved tracks.
\dd (\K{cmdDrawCurveEndPt}). Drag out the end point and then curve it.
@@ -124,54 +134,64 @@ Some commands display controls on the Status Line (\K{mainW}) to change line wid
\dd (\K{cmdDrawBezierCurve} \G{png.d/dbezier.png} \e{Left-Drag} out control point from one end of the curve and then \e{Left-Drag} out the second control point from the other end.
-If \f{MagneticSnap} is enabled, the curve ends will snap to the nearest part of nearby Draw objects unless \e{Alt} is held.
-If it is disabled, snapping will only occure if \e{Alt} is held.
+If \f{MagneticSnap} (\K{cmdMagneticSnap}) is enabled, the curve ends will snap to the nearest part of nearby Draw objects unless \e{Alt} is held.
+If Magnetic Snap is disabled, snapping to objects will only occur if \e{Alt} is held.
-The precise values of Radius and Arc Length can be set using the text boxes on the bottom rail once the mouse button is released.
+If \f{Grid Snap} is on and magnetic snap does not find a draw object, the curve ends will snap to the grid. \e{Alt} suppresses this snap.
-To adjust the curve, \e{Left-Click} and \e{Left-Drag} an end or a the radius. Hit \e{Enter} or \e{Space} to accept, \e{Esc} to reject.
+If \e{Sticky} 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 \c{Enter} or \c{Tab} with the cursor in these boxes will apply the new values to the curve. Pressing \c{Space} or \c{Enter} or \c{Tab} on the drawing surface will move to drawing a new curve.
+Pressing \c{Shift+Tab} with the cursor on the drawing surface will remove the current curve, but allow a new curve to be drawn.
+Even if \c{Esc} is pressed, the curve will already exist, it can be removed with \f{Undo}.
+
+To adjust the curve with the mouse, \e{Left-Click} and \e{Left-Drag} an end or a the radius. Hit \e{Enter} or \e{Space} to accept, \e{Esc} to reject.
\rule
-\S2{cmdDrawCurveEndPt} Draw Curve from End Point
+\S2{cmdDrawCurveEndPt} \i{Draw Curve from End Point}
\G{png.d/dcurve1.png}
\c{Left-drag} from the start of the curve and drag in the direction of the curve.
Then \c{left-drag} to form the curve.
-If the cursor is over a Draw object and \f{MagneticSnap} is on, the first position will snap to the nearest part of that object. If \e{Alt} is held the snap will be suppressed.
-If \f{MagneticSnap} is disabled, the snap will happen if \e{Alt} is held. The second end will act similarly.
+If the cursor is over a Draw object and \f{MagneticSnap} (\K{cmdMagneticSnap}) is on, the first position will snap to the nearest part of that object. If \e{Alt} is held the snap will be suppressed.
+If \f{MagneticSnap} is disabled, the snap will happen if \e{Alt} is held. If \f{GridSnap} is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is
+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}
Select one end of the curve and \c{left-drag} to the center.
Then \c{left-drag} the curve around the center.
-The first and second ends will act like \K{cmdDrawCurveEndPt} with \f{MagneticSnap} unless \e{Alt} is held.
+The first and second ends will act like \K{cmdDrawCurveEndPt} with \f{MagneticSnap} (\K{cmdMagneticSnap}) unless \e{Alt} is held.
+If \f{GridSnap} is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is
+suppressed if \f{Alt} is held.
+
To complete the command, drag on the red arrows to adjust the curve from the initial end.
\rule
-\S2{cmdDrawCurveCenter} Draw Curve from Center
+\S2{cmdDrawCurveCenter} \i{Draw Curve from Center}
\G{png.d/dcurve3.png}
-Select the center of the curve and \c{left-drag} to one end.
+Select the center of the curve and \c{left-drag} to one end. If \f{GridSnap} is enabled, the first position will snap to the Grid. This is
+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}
\c{Left-drag} from one end of the curve to the other to form the chord of the curve.
-The first and second ends will act like \K{cmdDrawCurveEndPt} with \f{MagneticSnap} unless \e{Alt} is held.
+The first and second ends will act like \K{cmdDrawCurveEndPt} with \f{MagneticSnap} (\K{cmdMagneticSnap}) and \f{SnapGrid} unless \e{Alt} is held.
If the mouse is over a draw object the second position will snap to the nearst part of that object. If \e{Shift} is held the snap will be suppressed.
@@ -179,18 +199,18 @@ 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}
\e{Left-Drag} out control point from one end of the curve and then \e{Left-Drag} out the second control point from the other end.
Repeat for the other end and control point.
-The first and second ends will act like \K{cmdDrawCurveEndPt} with \f{MagneticSnap} unless \e{Alt} is held.
+The first and second ends will act like \K{cmdDrawCurveEndPt} with \f{MagneticSnap} and \f{SnapGrid} unless \e{Alt} is held.
\rule
-\S{cmdNote} Note Variants
+\S{cmdNote} \i{Note Variants}
\G{png.d/mnote.png}
@@ -208,11 +228,12 @@ 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.
When you release, the \e{Note Editor} dialog is displayed. You can enter the note in the text area.
+Text is limited to about 10 thousand characters.
\G{png.d/notetext.png}
@@ -220,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.
@@ -240,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.
@@ -258,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}
@@ -270,8 +291,22 @@ Subsequent clicks on the \f{Ruler} button will hide or display the ruler.
\rule
+\S{cmdAngle} \i{Protractor}
+
+\G{png.d/bangle.png}
+
+The \f{Angle} command displays a \e{Protractor} on the layout. Click for the protractor origin and \c{left-drag} the cursor to set the base angle. Adding \c{Ctrl} will snap the angle to a multiple of 90 degrees.
+
+Then \{Left-Drag the second line. Adding \c{Ctrl} will snap the angle to 90 degree relative to the base line. The angle between the lines is displayed.
+
+Sunsequent clicks on the \f{Angle} button will hide or display the \e{Protractor}.
-\S{cmdDrawShapes} Shapes
+The points of the \e{Protractor} can be modified using the \f{Modify} (\K{cmdModify}) command.
+
+\rule
+
+
+\S{cmdDrawShapes} \i{Draw Shapes}
\G{png.d/mdrawshapes.png}
@@ -298,27 +333,29 @@ Shapes are drawn by:
\u000
+If \e{Sticky} 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 \c{Space} or \c{Return} or \c{Tab} or by selecting a new operation.
-If \e{Sticky} is set for 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 \c{Space} or \c{Return} or by selecting a new operation.
-
-The \f{Polygon} and \f{PolyLine} shapes are finished by pressing the \c{Space} or \c{Return} key or by selecting another operation. Before they are finished, precise dimensions can be entered for the last side drawn.
+The \f{Polygon} and \f{PolyLine} shapes are finished by pressing the \c{Space} or \c{Return} \c{Tab} 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.
Note that \K{cmdModify} 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.
\rule
-\S2{cmdDrawBox} Draw Box
+\S2{cmdDrawBox} \i{Draw Box}
\G{png.d/dbox.png}
+Before the box is drawn, the line width and color can be specified.
+The \f{Box 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.
+
\f{Boxes} are created by selecting one corner and dragging the opposite corner.
\u000
\rule
-\S2{cmdDrawFilledBox} Draw Filled Box
+\S2{cmdDrawFilledBox} \i{Draw Filled Box}
\G{png.d/dfilbox.png}
@@ -328,14 +365,17 @@ Note that \K{cmdModify} can be used on a Polygon or a Polyline after it has been
\rule
-\S2{cmdDrawPolygon} Draw Polygon
+\S2{cmdDrawPolygon} \i{Draw Polygon}
\G{png.d/dpoly.png}
+Before the polygon is started the line width and color can be set.
+The \f{PolyGon 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.
+
\f{Polygons} are created by either a series for \c{Left-Click}s or \c{Left+Drag}s, and a new "node" is placed for each.
When using \c{Left-drag}, the node will be positioned when you release the button.
-\dd If \f{MagneticSnap} is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless \c{Alt} is held.
+\dd If \f{MagneticSnap} (\K{cmdMagneticSnap}) is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless \c{Alt} is held.
\dd If it is disabled, the snap will only occur if \e{Alt} is held.
@@ -352,16 +392,18 @@ On the first polygon side this will be at a multiple of 90 degrees to the axes.
\rule
-\S2{cmdDrawFilledPolygon} Drae Filled Polygon
+\S2{cmdDrawFilledPolygon} \i{Draw Filled Polygon}
\G{png.d/dfilbox.png}
+Before the Polygon is started, the fill color can be set.
+
\f{Filled Polygons} are created by either a series for \c{Left-Click}s or \c{Left+Drag}s, and a new "node" is placed for each.
When using \c{Left-drag}, the node will be positioned when you release the button.
\dd The fill color can be adjusted using the color control at the bottom of the window
-\dd If \f{MagneticSnap} is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless \c{Alt} is held.
+\dd If \f{MagneticSnap} (\K{cmdMagneticSnap}) is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless \c{Alt} is held.
\dd If it is disabled, the snap will only occur if \e{Alt} is held.
@@ -380,14 +422,17 @@ 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.
\f{PolyLines} are created by either a series for \c{Left-Click}s or \c{Left+Drag}s, and a new "node" is placed for each.
When using \c{left-drag}, the node will be positioned when you release the button.
-\dd If \f{MagneticSnap} is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless \c{Alt} is held.
+\dd If \f{MagneticSnap} (\K{cmdMagneticSnap}) is enabled, An anchor point will be shown on nearby draw objects that the next point will be snapped to unless \c{Alt} is held.
\dd If it is disabled, the snap will only occur if \e{Alt} is held.
@@ -414,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}
@@ -428,43 +473,50 @@ 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}
-\G{png.d/dline.png} Creates a \f{Straight Line} of specified color and width.
+Creates a \f{Straight Line} of specified color and width.
+The \f{Straight Line Width} field is a scaled dimension in 75ths of an inch 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.
-If \c{Ctrl} is held down during \c{Left+Drag} the line will snap the relative angle of the new side to a multiple of 90 degrees.
+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.
-If \e{Sticky} is set for 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 \c{Space} or \c{Return} or \c{Tab} or by selecting a new operation.
+With \f{MagneticSnap} (\K{cmdMagneticSnap}) enabled, the new line start position will snap to the nearest draw object, as shown by the anchor. If \c{Alt} is held down, the magnetic Snap is reversed.
+If \f{GridSnap} is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is suppressed if \f{Alt} is held.
-With \f{MagneticSnap} enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless \c{Shift} is held down.
-If it is diabled, it will onlt snap if \e{Shift} is held.
+The \f{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.
+
+If \e{Sticky} 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 \c{Enter} or \c{Tab} with the cursor in these boxes will apply the value to the line. Pressing \c{Space} or \c{Enter} on the drawing surface will move to drawing a new line.
+Pressing \c{Shift+Tab} will remove the current object and allow a new one to drawn.
+Even if \c{Esc} is pressed, the line will already exist, it can be removed with \f{Undo}.
\rule
-\S2{cmdDrawDimLine} Draw Dimension Line
+\S2{cmdDrawDimLine} \i{Draw Dimension Line}
\G{png.d/ddimlin.png}
Creates a \f{Dimension Line} of various sizes.
-With \f{MagneticSnap} enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless \c{Shift} is held down.
-If it is disabled, it will onlt snap if \e{Shift} is held.
-If \c{Ctrl} is held down during \c{Left+Drag} the line will snap the relative angle of the new side to a multiple of 90 degrees.
-If \e{Sticky} is set for 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 \c{Space} or \c{Return} or \c{Tab} or by selecting a new operation.
+With \f{MagneticSnap} (\K{cmdMagneticSnap}) enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless \c{Alt} is held down.
+If it is disabled, it will only snap if \e{Alt} is held. If \f{GridSnap} is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is
+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}
@@ -478,33 +530,44 @@ Creates \i\f{Bench-work} using different types and orientation of lumber.
\dd When using metric units (\K{cmdPref}), a 1" x 2" is labeled 50mm x 25mm
-With \f{MagneticSnap} enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless \c{Shift} is held down.
-If it is diabled, it will onlt snap if \e{Shift} is held.
-If \c{Ctrl} is held down during \c{Left+Drag} the line will snap the relative angle of the new side to a multiple of 90 degrees.
-If \e{Sticky} is set for 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 \c{Space} or \c{Return} or \c{Tab} or by selecting a new operation.
+With \f{MagneticSnap} (\K{cmdMagneticSnap}) enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless \c{Alt} is held down.
+If it is disabled, it will only snap if \e{Alt} is held. If \f{GridSnap} is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is
+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{cmdDrawTableEdge} Draw Table Edge
+If \e{Sticky} 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 \c{Enter} or \c{Tab} with the cursor in these boxes will apply the value to the benchwork. Pressing \c{Space} or \c{Enter} or \c{Tab} on the drawing surface will move to drawing a new benchwork line.
+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} \i{Draw Table Edge}
\G{png.d/dtbledge.png}
Creates a \f{Table Edge}
-With \f{MagneticSnap} enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless \c{Shift} is held down.
-If it is diabled, it will onlt snap if \e{Shift} is held.
-If \c{Ctrl} is held down during \c{Left+Drag} the line will snap the relative angle of the new side to a multiple of 90 degrees.
-If \e{Sticky} is set for 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 \c{Space} or \c{Return} or \c{Tab} or by selecting a new operation.
+With \f{MagneticSnap} (\K{cmdMagneticSnap}) enabled, the new line start position will snap to the nearest draw object, as shown by the anchor unless \c{Alt} is held down.
+If it is disabled, it will only snap if \e{Alt} is held. If \f{GridSnap} is enabled and MagneticSnap does not find a postion, the first position will snap to the Grid. This is
+suppressed if \f{Alt} is held.
+
+If \c{Ctrl} is held down during \c{Left+Drag} the edge will to a end point of another table edge or to a multiple of 90 degrees if that isn't available.
+
+If \e{Sticky} 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 \c{Enter} or \c{Tab} with the cursor in these boxes will apply the value to the edge. Pressing \c{Space} or \c{Enter} or \c{Tab} on the drawing surface will move to drawing a new edge.
+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 edge will already exist, it can be removed with \f{Undo}.
\rule
-\S{DrawOrigin} Draw Objects Origin
+\S{DrawOrigin} \i{Draw Objects Origin}
-Some objects have a natural rotation point within them. By setting the 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.
-When one of these is moved or rotated, the origin and angle are adjusted but the relative draw point values remain the same.
+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.
+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.
-You can choose to set the origin to make it Relative or put it back to Absolute during \K{cmdDrawShapes} or \K{cmdModify} or by using the \K{cmdDescribe} settings.
+You can choose to set the origin to make it Relative or put it back to Absolute (origin zero) during \K{cmdDrawShapes} or \K{cmdModify} or by using the \K{cmdDescribe} settings.
As a practical matter, the object will appear identical until a subsequent rotation value is entered in the \K{cmdDescribe} window in both cases.
@@ -521,21 +584,27 @@ 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}
-The \f{Text} command lets you enter text 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.
+The \f{Text} 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.
\G{png.d/statustext.png}
-The font size can be changed by the Font Size drop list on the \f{Status-bar} (\K{mainW}). The font size is scaled along with everything else on the layout so text is always the same relative size as other layout objects.
+The font size can be changed by the Font Size drop list on the \f{Status-bar} (\K{mainW}). The font size is scaled along with everything else on the layout so text is always the same relative size as other layout objects.
+
+The color used can be selected by the Color icon on the \f{Status-bar} (\K{mainW}).
+
+The new text object can be "boxed" by having a line drawn around it using the Boxed tick-mark on the \f{Status-bar} (\K{mainW}).
+
+The position where text is to be placed on the layout is selected prior to text entry by \c{Left-Click}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 \c{Left-Click+Drag}ing the text to any desired postion on the layout.
-The font can be selected by the \f{Font Selection} (\K{fontSelW}) dialog invoked by the \f{Options>Fonts} menu item or by \c{Shift+Right-Click} (\K{cmdAcclKeys}).
+The \f{Properties} (\K{cmdDescribe}) command can be used to modify the contents, color and fontsize of existing \f{Text} objects and to set the boxes property.
-The position where text is to be placed on the layout must be selected prior to text entry. The position is select by \c{Left-Click}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 \c{Left-Click+Drag}ing the text to any desired postion on the layout.
+The new Text object is committed when another command is entered (or \e{Enter} is used if the Text command is Sticky).
-The \f{Properties} (\K{cmdDescribe}) command can be used to modify the contents of existing \f{Text} objects and to draw boxes around them.
+The font used for all Text objects can be selected by the \f{Font Selection} (\K{fontSelW}) dialog invoked by the \f{Options>Fonts} menu item or by \c{Shift+Right-Click} (\K{cmdAcclKeys}).
Note: loading fonts (or changing sizes) can take a noticeable amount of time.
diff --git a/app/doc/editm.but b/app/doc/editm.but
index 166ec11..5702321 100644
--- a/app/doc/editm.but
+++ b/app/doc/editm.but
@@ -10,87 +10,109 @@
The \f{Edit Menu} shows commands affecting the \f{Main Canvas} (\K{mainW}).
-\dd \f{Above} - Moves selected object to foreground.
+\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 \f{Below} - Moves selected object to background.
+\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 \f{Copy} - Copies the selected objects to the clipboard.
+\dd \i{Cut} - Moves the selected objects to the clipboard.
\u000
-\dd \f{Clone} - Copies the selected objects to the clipboard and duplicates them offset from the original.
-Repeated Clone commands result in a series of offset copies.
-The new objects are selected and the old ones un-selected.
+\dd \i{Copy} - Copies the selected objects to the clipboard.
\u000
-\dd \f{Cut} - Moves the selected objects to the clipboard.
+\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 \f{Delete} - Deletes the selected objects.
+\dd \i{Delete} - Deletes the selected objects.
\u000
-\dd \f{Deselect All} - unselects all objects on the layout. The same action can be achieved by pressing the ESC key.
+\dd \i{Move To Current Layer} - move all selected objects to the current Layer (\K{cmdLayer}).
\u000
-\dd \f{Invert Selection} - selects all unselected objects and unselects all previously selected objects.
+\dd \i{Select All} - Selects all objects on the layout.
\u000
-\dd \f{Move To Current Layer} - move all selected objects to the current Layer (\K{cmdLayer}).
+\dd \i{Select Current Layer} - selects all objects in the current Layer (\K{cmdLayer}).
\u000
-\dd \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.
-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.
+\dd \i{Select By Index} - selects object by index number (\K{cmdSelectIndex}).
+
+\u000
+
+\dd \i{Deselect All} - unselects all objects on the layout. The same action can be achieved by pressing the ESC key.
\u000
-\dd \f{Redo} - Undoes the last Undo command. The \f{Redo} command can also be invoked by the \f{Redo} button (\K{cmdUndo}).
+\dd \i{Invert Selection} - selects all unselected objects and unselects all previously selected objects.
\u000
-\dd \f{Select All} - Selects all objects on the layout.
+\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 \f{Select Current Layer} - selects all objects in the current Layer (\K{cmdLayer}).
+\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 \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{Bridge}\I{Track, Bridge} - Adds or removes parapet symbols and a solid base to the track. The color is selectable (\K{cmdRgbcolor}).
\u000
-\dd \f{Thin, Medium and Thick Tracks} - set displayed rail width of selected tracks.
+\dd \i{Roadbed}\I{Track, Roadbed} - Adds or removes solid roadbed under the track. The color is selectable (\K{cmdRgbcolor}).
\u000
-\dd \f{Tunnel} - Hides or reveals selected tracks and adds a tunnel portal symbol where the track passes from one to the other.
+\dd \i{Ties/No Ties}\I{Track Ties}\I{Track No Ties} - Hides or reveals the ties on selected tracks.
\u000
-\dd \f{Bridge} - Adds parapet symbols to the sides of the track.
+\dd \i{Move To Front} - Moves selected object to foreground.
\u000
-\dd \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{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.
+
+\u000
For more information on working with selected objects, see the Select (\K{cmdSelect}) command.
\rule
+\S{cmdSelectIndex} \i{Select By Index}
+
+An input window allows one or more index numbers to be entered. Multiple indexes are seperated by commas.
+
+The object can not be selected if its Layer is frozen.
+
+If the object is part of a module layer, all objects in the layer will be selected.
-\S{cmdAboveBelow} "Move To Front" and "Move to Back"
+If the object is a tunnel object, and the Display Tunnel option is None, it will be set to Dashed. See Display options (\K{cmdDisplay}).
+
+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" \I{Move To Front} \I{Move To Back}
\G{png.d/btop_bottom.png}
@@ -107,19 +129,23 @@ Selected objects moved to the \f{Background} become unselected.
Additional Shortcut keys perform the following:
-\dd \c{Shift+Backspace} - Undo
+\dd \c{Ctrl+Z} - Undo
+
+\u000
+
+\dd \c{Ctrl+R} - Redo
\u000
-\dd \c{Ctrl+Insert} - Copy
+\dd \c{Ctrl+C} - Copy
\u000
-\dd \c{Shift+Insert} - Paste
+\dd \c{Ctrl+V} - Paste
\u000
-\dd \c{Shift+Delete} - Cut
+\dd \c{Ctrl+X} - Cut
\u000
@@ -128,7 +154,7 @@ Additional Shortcut keys perform the following:
\rule
-\S{cmdDelete} Delete
+\S{cmdDelete} \i{Delete}
\G{png.d/bdelete.png}
@@ -141,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}
@@ -153,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)}
-\S{cmdUndo} Undo and Redo
+\G{png.d/broadbed.png}
+
+The \f{Roadbed} command is used to add a solid color under a track (as roadbed).
+
+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 a0cce82..31d40d3 100644
--- a/app/doc/filem.but
+++ b/app/doc/filem.but
@@ -25,15 +25,20 @@ 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 will be saved in 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 \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
@@ -41,11 +46,11 @@ The \f{File Menu} shows file oriented commands for loading and saving layout fil
\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.
@@ -60,19 +65,19 @@ The \f{File Menu} shows file oriented commands for loading and saving layout fil
\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
@@ -80,12 +85,14 @@ The \f{File Menu} shows file oriented commands for loading and saving layout fil
\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}
@@ -96,18 +103,27 @@ 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 three check-boxes (\f{Print Titles}, \f{Print Borders} and \f{Print Centerline}) control whether the Layout Title (\K{cmdLayout}), the borders or the track centerlines are printed on the bitmap. The size of the bitmap is smaller if these are disabled.
+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
+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.
+
+ The size of the bitmap is smaller if these are disabled.
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.
If the Snap Grid (\K{cmdGrid}) is visible then it will be printed on the bitmap.
-The \f{DPI} (or \f{DPCM} if using metric units (\K{cmdPref})) control specifies the number of pixels per inch (or centimeter) in the bitmap. You can enter values from 0.1 to 100. Larger values will result in a larger bitmap file. bitmaps must be less than 32000 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.
The bitmap width, height and approximate file size is indicated.
@@ -115,12 +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.
-The format of the file is PNG on all operating systems.
+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}
@@ -129,7 +148,29 @@ Exported files can then be imported into other CAD programs.
\rule
-\S{cmdImport} Import
+\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.
+
+\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
+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.
+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} \i{Import}
+
+\G{png.d/bimport.png}
Importing displays a file selection dialog to specify the file to import.
@@ -139,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}
@@ -149,47 +204,48 @@ 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.
+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.
+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
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. Otherwise it will be removed from the list when
-the program is terminated.
+list between runs.
-Definition files can be marked as \e{favorite}. The indicator for favorites is a star.
+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 the unloaded file was marked as a favorite it can be \e{reloaded} by selecting the \f{Reload} button.
+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.
-The \f{Search} button opens the \e{Search Parameter File} dialog (\K{cmdSearchgui}) this
+The \f{Library} button opens the \e{Choose Parameter File} dialog (\K{cmdSearchgui}) this
shows the all files included the system library so they can be added.
The \f{Browse} button opens a file window that allows the user to add additional files
@@ -203,18 +259,23 @@ The order in this list controls the order of turnouts and structures on the
\f{Hot Bar} (\K{cmdHotBar}). You can move a parameter file to the end of the
list by \e{Unloading} it, and then loading it via the \f{Browse} button.
-\S{cmdSearchgui} \i{Search Parameter Files}
+\S{cmdSearchgui} \i{Choose Parameter Files}
Selecting and loading additional parameter files from the System Library is done in the
-\f{Search Parameter Files} dialog.
+\f{Choose Parameter Files} dialog.
\G{png.d/paramsearch.png}
Using the Search function you can find and select parameter files that are
part of the XTrackCAD installation.
-Enter a search string and select the Search button. Search results are
-shown in the list box. A blank search or the value "*" resets the search results to
-show the entire libary.
+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.
+
+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.
Select the files you're interested in and press the \f{Add} button to add them to your
parameter list.
@@ -223,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}
@@ -279,7 +346,8 @@ 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). x is the position from left to right, y in from bottom to top, So (1/1) is the page at the bottom left.
+\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.
\u000
@@ -288,7 +356,7 @@ As an additional aid, the numbers of the next pages are printed on each edge.
\u000
-\dd \f{Rulers} - print rulers on all edges of the page. This option is only enabled if the \f{Angle} is \e{0.000}.
+\dd \f{Rulers} - choose to print rulers at the layout edge, or on all edges of the page, an option is only enabled if the \f{Angle} is \e{0.000}, or None - which means print no rulers.
\u000
@@ -349,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}
@@ -377,6 +445,29 @@ The \f{Printer Setup} window contains:
\dd \f{Cancel} - ends the dialog without update.
+\u000
+
+\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.
+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.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.
+\u000
+
+\n XTRKCADPRINTSCALE
+
+\n XTRKCADPRINTTEXTSCALE
+
+\u000
+
\rule
\S2{MS-Windows} \i{Microsoft Windows}
@@ -423,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.
@@ -441,7 +532,7 @@ To check your printer's margin:
\u000
-\dd Enable \f{Registration Marks}
+\dd Enable \f{Registration Marks} this prints crosshairs every 3" or 10cm at scale 1:1.
\u000
@@ -463,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 fcaddce..eb4ca76 100644
--- a/app/doc/hotbar.but
+++ b/app/doc/hotbar.but
@@ -8,60 +8,62 @@
\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.
A \c{Right-Click} over the \e{Hot Bar} will display a pop-up menu listing the files with contents on the \e{Hot Bar}. Selecting an item from this list causes the \e{Hot Bar} to jump to the relative spot on the whole list.
-Objects on the \e{Hot Bar} are placed on the drawing canvas by first clicking on the object, \e{Dragging} it the Main window, rotating it with \c{Ctrl+Left-Drag} or \c{Right-Drag} positioning it then pressing the \c{Space} key to set it in place.
+Objects on the \e{Hot Bar} are placed on the drawing canvas by first selecting an object by \e{Cicking} it on the \e{Hot Bar}. Then \e{Click} and \e{Drag} on the Main window, rotating it with \c{Right-Drag} to position it, and then pressing the \c{Space} key to set it in place.
+
+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.
+\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.
Refer to \K{cmdStructure} for information pertaining to use of the \e{Structure} dialog.
\rule
-\S{hbTurnouts} Turnouts
+\S{hbTurnouts} \i{Turnouts}
-\e{Turnouts} have an 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.
+\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.
-If you \c{Left+Drag} a turnout onto a track, the active endpoint (\K{generalTerms}) 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.
+If you \c{Left+Drag} a turnout onto a track, the Active EndPoint (\K{generalTerms}) 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.
\e{XTrackCAD} 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. \e{XTrackCAD} 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 \e{Shift} key while \e{Dragging}.
\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 1a423f0..2a64c51 100644
--- a/app/doc/intro.but.in
+++ b/app/doc/intro.but.in
@@ -6,7 +6,7 @@
\# Identify XTrackCAD Version, Microsoft Windows software installation package name and Copyright information
-\define{XTCVer} Version @XTRKCAD_VERSION@
+\define{XTCVer} Version @XTRKCAD_VERSION@
\define{XTCWinPack} xtrkcad-setup-@XTRKCAD_VERSION@.exe
@@ -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
@@ -61,7 +55,7 @@ Copyright 2020, Martin Fischer, Adam Richards and Dave Bullis
\cfg{html-local-head}{<meta name="AppleTitle" content="org.xtrkcad.help" />}
-\e{XTrackCAD} is a CAD (computer-aided design) program for designing Model Railroad layouts. \e{XTrackCAD} 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. \e{XTrackCAD} 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.
+\e{XTrackCAD} is a CAD (computer-aided design) program for designing Model Railroad layouts. \e{XTrackCAD} 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. \e{XTrackCAD} 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.
Using it, you can
@@ -89,7 +83,7 @@ Using it, you can
\u000
-\b Trace tracks and other objects over a background image of a real-world location map, a scanned trackplan, or other image.
+\b Trace tracks and other objects over a background image of a real-world location map, a scanned trackplan, or other image.
\u000
@@ -110,17 +104,17 @@ Be sure to visit the project web page for latest news and updates: \W{http://www
\f{Easy to use}
- \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!
+ \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.
-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.
+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.
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.
-\e{XTrackCAD} 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.
+\e{XTrackCAD} 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.
-As you zoom in, the two rails are drawn and then ties are added.
+As you zoom in, the two rails are drawn and then ties are added.
\f{Free}
@@ -132,33 +126,35 @@ On-line demonstrations show the actual operation of many of the program's featur
\f{Packed with features}
-\e{XTrackCAD} is designed from the ground up to be a complete tool for many aspects of Model Railroad layout design.
+\e{XTrackCAD} is designed from the ground up to be a complete tool for many aspects of Model Railroad layout design.
\dt \e{Active UI Prompting}
\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.
+\u000
+
\dt \e{Train Simulation and Car Inventory}
\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.
\u000
-\dd The Car Inventory dialog records your cars and locomotives and these can be exported and imported from spreadsheets.
+\dd The Car Inventory dialog records your cars and locomotives and these can be exported and imported from spreadsheets.
\u000
\dt \e{Track Manipulation}
-\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 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.
\u000
-\dd Track circles are especially handy for determining overall designs and seeing what will fit in a given area.
+\dd Track circles are especially handy for determining overall designs and seeing what will fit in a given area.
\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
@@ -166,38 +162,40 @@ On-line demonstrations show the actual operation of many of the program's featur
\u000
-\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 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.
\u000
-\dd The Helix Track command computes the number of turns, radius, grade and vertical separation based on your criteria.
+\dd The Helix Track command computes the number of turns, radius, grade and vertical separation based on your criteria.
\u000
\dd Turntables can be constructed with any radius and can either have fixed or dynamic bay tracks
+\u000
+
\dt \e{Turnout Select and Placement}
-\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 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.
\u000
-\dd As Turnouts are dragged over existing tracks they are automatically aligned. \e{XTrackCAD} 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 As Turnouts are dragged over existing tracks they are automatically aligned. \e{XTrackCAD} 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.
\u000
-\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 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'.
\u000
\dt \e{Layers}
-\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 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.
\u000
-\dd \e{XTrackCAD} 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 \e{XTrackCAD} 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.
\u000
@@ -205,13 +203,13 @@ Just adjust the Turnout's position to minimize the offset to ensure the best fit
\u000
-\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 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.
\u000
\dt \e{Elevations and Profile}
-\dd Elevations are one of the most powerful features of \e{XTrackCAD} they are dynamically recalulated as the layout changes.
+\dd Elevations are one of the most powerful features of \e{XTrackCAD} they are dynamically recalulated as the layout changes.
\u000
@@ -219,21 +217,21 @@ Just adjust the Turnout's position to minimize the offset to ensure the best fit
\u000
-\dd \e{XTrackCAD} lets you define the elevation of any Endpoint on the layout. You can also have \e{XTrackCAD} 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 \e{XTrackCAD} compute the elevation at each riser position between.
+\dd \e{XTrackCAD} lets you define the elevation of any Endpoint on the layout. You can also have \e{XTrackCAD} 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 \e{XTrackCAD} compute the elevation at each riser position between.
\u000
-\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 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.
\u000
\dt \e{Easements (Cornu Transition Curves)}
-\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 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!
\u000
-\dd \e{XTrackCAD} 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 \e{XTrackCAD} 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!
\u000
@@ -257,51 +255,51 @@ Just adjust the Turnout's position to minimize the offset to ensure the best fit
\u000
-\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 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.
\u000
-\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 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.
\u000
-\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 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.
\u000
\dt \e{Turnout and Structure Creation}
-\dd \e{XTrackCAD} 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 \e{XTrackCAD} 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.
\u000
-\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 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.
\u000
-\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 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.
\u000
\dt \e{Lines, Shapes, Table Edges, Text and Notes}
-\dd Layout designs are more than track!
+\dd Layout designs are more than track!
\u000
-\dd The \e{XTrackCAD} 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 The \e{XTrackCAD} 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).
\u000
-\dd You can add Bench-work and dimension lines too.
+\dd You can add Bench-work and dimension lines too.
\u000
-\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 Special types of lines are drawn by the Table Edge command are used to represent the boundary at the edge of the layout.
\u000
-\dd Text can be added to the layout.
+\dd Text can be added to the layout.
\u000
@@ -311,21 +309,21 @@ Just adjust the Turnout's position to minimize the offset to ensure the best fit
\dt \e{Parts and Price Lists}
-\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 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.
\u000
-\dd You can enter the price of each type of Turnout, Sectional Track and Structure, plus the length and price of flex-track. \e{XTrackCAD} will compute the price of each types and the grand total. The total number of flex-track sections is also listed.
+\dd You can enter the price of each type of Turnout, Sectional Track and Structure, plus the length and price of flex-track. \e{XTrackCAD} will compute the price of each types and the grand total. The total number of flex-track sections is also listed.
\u000
\dt \e{Support for Sectional Track}
-\dd Numerous Sectional Track Parameter Files are included with \e{XTrackCAD} (Atlas, Marklin, Peco, ...). The Hot Bar allows easy selection.
+\dd Numerous Sectional Track Parameter Files are included with \e{XTrackCAD} (Atlas, Marklin, Peco, ...). The Hot Bar allows easy selection.
\u000
-\dd The automatic alignment feature of Turnout and Sectional Track placements makes track pieces just 'snap' together.
+\dd The automatic alignment feature of Turnout and Sectional Track placements makes track pieces just 'snap' together.
\u000
@@ -469,9 +467,9 @@ Refer to \K{keyFeatures} and \K{addFeatures} for a listing of \e{XTrackCAD} feat
\H{addFeatures} Additional \e{XTrackCAD} Features
-\e{XTrackCAD} has many other carefully selected features:
+\e{XTrackCAD} has many other carefully selected features:
-\b 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.
+\b 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.
\u000
@@ -519,7 +517,7 @@ Refer to \K{keyFeatures} and \K{addFeatures} for a listing of \e{XTrackCAD} feat
\u000
-\b You can rescale and flip objects, trim turnouts and create block gaps.
+\b You can rescale and flip objects, trim turnouts and create block gaps.
\u000
@@ -586,7 +584,7 @@ Throughout this manual the following typographic conventions are used to make fi
\lcont{\u000}
-\n A program folder named \c{XTrkCad4} will be created during the installation process. The folder contains the program, documentation, parameter and example files.
+\n A program folder named \c{XTrkCad} will be created during the installation process. The folder contains the program, documentation, parameter and example files.
\rule
@@ -594,8 +592,8 @@ Throughout this manual the following typographic conventions are used to make fi
\e{XTrackCAD} for OSX is shipped as a package containing an application.
-\n Start the installation by opening the package and dragging the contained application into the \e{Applications} folder using the shortcut in the package.
-The application includes the program, documentation, parameter and example files within it.
+\n Start the installation by opening the package and dragging the contained application into the \e{Applications} folder using the shortcut in the package.
+The application includes the program, documentation, parameter and example files within it.
\lcont{\u000}
@@ -603,7 +601,7 @@ The application includes the program, documentation, parameter and example files
\lcont{\u000}
-\n \i{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.
+\n \i{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 \e{System Preferences>Security & Privacy} and you will see that the app is named as having been blocked. Hit the \e{Run Anyway} button and the program should start.
This sequence may be necessary after each OS upgrade.
@@ -613,17 +611,17 @@ This sequence may be necessary after each OS upgrade.
\S{LinuxInstall} \i{Linux Installation}
-\e{XTrackCAD} for LINUX is shipped as a self-extracting archive (executable).
-
+\e{XTrackCAD} for LINUX is shipped as a self-extracting archive (executable).
+
\n Installing from the self-extracting archive.
\lcont{
-\dd After downloading open a command line then
+\dd After downloading open a command line then
-\dd \c{./\XTCStgzPack --prefix=/usr/local --exclude-subdir}
+\dd \c{./\XTCStgzPack --prefix=/usr/local --exclude-subdir}
-\dd This will install the executable in /usr/local/bin. A directory named \c{xtrkcad} will be created in
+\dd This will install the executable in /usr/local/bin. A directory named \c{xtrkcad} will be created in
/usr/local/share and all files will be unpacked into it.
}
@@ -636,7 +634,7 @@ If you install \e{XTrackCAD} into another directory, set the \c{XTRKCADLIB} envi
The \e{XTrackCAD} executable is named xtrkcad.exe on Windows and xtrkcad on Linux and OSX.
-It is usually started by clicking on its icon, or right-click and \f{Open} in OSX Catalina, but there are command line options as well.
+It is usually started by clicking on its icon, or right-click and \f{Open} in OSX Catalina, but there are command line options as well.
\f{Command Line}
@@ -657,19 +655,19 @@ On Linux:
\dt \c{c config}
-\dd configuration to use. This allows you to have several distinct configurations (eg.
+\dd configuration to use. This allows you to have several distinct configurations (eg.
parameter files, display options).
\u000
\dt \c{layoutfile}
-\dd filename for the layout to load.
+\dd filename for the layout to load.
This parameter takes precedence over the option to resume with the last layout (\K{cmdPref}).
\f{Debugging Parameters}
-The following parameters are for debugging purposes and are mainly of interest to the
+The following parameters are for debugging purposes and are mainly of interest to the
developers.
\dt \c{v}
@@ -681,7 +679,7 @@ developers.
\dt \c{d logcontrol}
\dd specifies the amount of logging. The argument logcontrol has the format \c{logmodule[=level]}.
-logmodule defines the functionality that should be logged, the optional level specifies the loglevel. Zero means no logging.
+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.
\u000
@@ -690,6 +688,21 @@ 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).
+
+\u000
+
\H{introQT} Quick Tour
\G{png.d/main.png}
@@ -739,7 +752,7 @@ Under the Tool Bar is the Hot Bar. This contains defined track and drawing objec
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 \f{Pan-Zoom} command whise symbol is the crossed arrows allows easiest control, but in \f{Select} command you can pan with the arrow keys and zoom with the trackpad or mousewheel or \f{Ctrl}+"+" or "-" can affect the zoom level.
-\rule
+\rule
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.
@@ -768,7 +781,7 @@ This section lists some things that can improve the performance of \e{XTrackCAD}
\H{directories} Files and Directories
-Information within this section of the manual identifies installation directory names, file names and directory and file locations.
+Information within this section of the manual identifies installation directory names, file names and directory and file locations.
\rule
@@ -782,15 +795,15 @@ Information within this section of the manual identifies installation directory
\b The \e{XTrackCAD Working} directory, which contains configuration and Check Point files.
-On MS Windows, the \e{Install} directory is set when you install \e{XTrackCAD}. All data files (parameters,
-demos, examples) can be found in the \c{share/xtrkcad} subdirectory underneath the \e{Install} directory.
+On MS Windows, the \e{Install} directory is set when you install \e{XTrackCAD}. All data files (parameters,
+demos, examples) can be found in the \c{share/xtrkcad} subdirectory underneath the \e{Install} directory.
The \e{Working} directory is in your personal profile.
On Linux, the \e{Install} directory is usually \c{/usr/local/lib/xtrkcad/}, but you can change this by defining the \c{XTRKCADLIB} environment variable before starting \e{XTrackCAD}. The working directory is \c{\{HOME\}/.xtrkcad/}.
On Mac OSX, the \e{Install} directory is the application package, usually located in the \c{/Applications} directory.
All the included parameters, demos and examples can be found inside the package under the \c{/Applications/xtrkcad/Contents/Resources/xtrkcad} directory.
-The \e{Working} directory is created as \c{.xtrkcad} - a hidden directory - under the active user's directory in \c{/Users}
+The \e{Working} directory is created as \c{.xtrkcad} - a hidden directory - under the active user's directory in \c{/Users}
Layout files (\c{*.xtc}) and export (\K{cmdExport}) files (\c{*.xti}) can be saved anywhere you wish, as specified in the \f{Save File} and \f{Open File} dialogs.
@@ -863,7 +876,7 @@ On MS-Windows only, you can also use the \f{Uninstall} icon in the \e{XTrackCAD}
\H{bugs_enhancements} Bugs and Enhancements
-This section of the manual describes how and where to report a bug or seek an enhancement.
+This section of the manual describes how and where to report a bug or seek an enhancement.
\rule
@@ -890,7 +903,7 @@ If you encounter an unreported bug please submit detail regarding such to the \f
\u000
-\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 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.
\u000
@@ -902,7 +915,7 @@ If you encounter an unreported bug please submit detail regarding such to the \f
\f{Please be brief, but don't leave any important details out.} This is a fine line to walk. But there are some general guidelines:
-Remember the three basics: what you were doing, what you expected to happen, and what happened.
+Remember the three basics: what you were doing, what you expected to happen, and what happened.
If you can recreate the problem the \f{Macro>Record} 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.
diff --git a/app/doc/managem.but b/app/doc/managem.but
index 7996ef1..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,11 +138,11 @@ 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
-\dd \e{PurchPrice}, \e{CurrPrice}, \e{PurchDate} and \e{ServiceDate} - numeric values
+\dd \e{PurchPrice}, \e{CurrPrice}, \e{PurchDate} and \e{ServiceDate} - numeric values - dates are in the form yyyymmdd, where yyyy is the year, mm the month, dd the day
\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.
@@ -215,7 +228,7 @@ This dialog is similar the the \f{Car Item} dialog except that the \f{Car Item I
The middle section contains:
-\dd The \f{Road}, \f{Reporting Mark}, \f{Number} and \f{Color}. You can choose a \f{Road name} from the list of known road names or enter a new value. If known, the \e{reporting mark} (road name abbreviation) is filled in.
+\dd The \f{Road}, \f{Reporting Mark}, \f{Number} and \f{Color}. You can choose a \f{Road name} from the list of known road names or enter a new value. If known, the \e{reporting mark} (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 \K{cmdDisplay}
\u000
@@ -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,31 +355,64 @@ 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. Objects which are associated with other objects (such as tracks created by the \f{Modify} (\K{cmdModify}) or \f{Join} (\K{cmdJoin}) commands) are created in the same layer as the associated object(s).
+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.
+Objects which are associated with other objects (such as tracks created by the \f{Modify} (\K{cmdModify}) or \f{Join} (\K{cmdJoin}) commands) are created in the same layer as the associated object(s).
The \f{Layers} dialog allows you to change various attributes of each of the 99 possible \f{layers}.
-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 \f{Load} and \f{Save} buttons.
+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 \f{Load} and \f{Save} buttons.
\G{png.d/dlayers.png}
-The drop down list at the top of the dialog selects the \f{Layer} you are interested in. Non-empty layers are preceded by a \c{+}.
+The drop down list at the top of the dialog selects the \f{Layer} you are interested in. Frozen layers are preceeded by a \c{*}, Module layers are proceeded by a \c{m}, non-empty layers are preceded by a \c{+} and empty layers by a \c{-}.
The \f{Name} edit box contains the name of the \f{Layer}. This name is listed in the \f{Current Layer} drop down list on the \f{Tool-bar} (\K{mainW}). Also the \f{Name} is displayed as the balloon help for the corresponding \f{Layer Button}.
@@ -378,10 +424,19 @@ The \f{Frozen} check-box indicates that tracks in that \f{Layer} can not be modi
The \f{On Map} check-box controls whether the \f{Layer} is drawn on the Map (\K{cmdMap}) window.
-The \f{Module} check-box controls whether the \f{Layer} 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 \f{Export} and then \f{Import As Module} - this creates one layer per module, names it and sets the \f{Module} check-box.
+The \f{Module} check-box controls whether the \f{Layer} 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 \f{Export} and then \f{Import As Module} - this creates one layer per module, names it and sets the \f{Module} check-box.
+
+The \f{No Button} check-box selects if the \f{Layer} 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.
+
+The \f{Linked Layers} 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.
You cannot uncheck \f{Visible} or check \f{Frozen} for the \f{Current Layer}.
+The \f{Load Settings} 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.
+
The \f{Count} field displays the number of objects in the selected Layer.
The \f{Save} button stores layer attributes in the \c{xtrkcad.ini} file so they may be loaded into an existing or new file. Once saved and unless reset to \e{XTrackCAD} \f{Default}, modified layer information is applied to each new file.
@@ -390,7 +445,7 @@ The \f{Load} button reads layer attributes from the \c{xtrkcad.ini} file then ap
The \f{Defaults} button restores layer attributes to default \e{XTrackCAD} settings.
-The bottom of the dialog contains the \f{Number of Layer Buttons} integer edit box. This controls the number of \f{Layer Buttons} displayed on the \f{Tool-bar} (\K{mainW}). These buttons make it easy to switch between layers. The maximum number of \f{Layer Buttons} that can be displayed is 20. Therefore you should use layers one to twenty for objects which you will be showing and hiding frequently.
+The bottom of the dialog contains the \f{Number of Layer Buttons} integer edit box. This controls the number of \f{Layer Buttons} displayed on the \f{Tool-bar} (\K{mainW}). These buttons make it easy to switch between layers. The maximum number of \f{Layer Buttons} that can be displayed is 99. Layers with "no-button" set do not count towards the Number of Layer Buttons.
\G{png.d/blayer.png}
@@ -410,10 +465,12 @@ 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.
+If no objects are selected, all objects are enumerated.
+
\G{png.d/partslist.png}
The \f{Save As...} button opens a \e{File Save} dialog window that's used to name and save the parts list to a file.
@@ -424,11 +481,13 @@ The \f{Close} button terminates the \f{Parts List} command.
The \f{Parts List} dialog will list pricing for selected objects if the \e{Prices} check box is checked. Prices are set using the Price List (\K{cmdPricelist}) dialog.
-Hint: use the \f{Parts List} command to measure the length of selected flex-track.
+The \f{Parts List} dialog will list the index numbers of each type of named track in a comma delimited list on a new line if the \e{Indexes} check box is checked. This list can be used in the Select By Index (\K{cmdSelectIndex}) command.
+
+Hint: you can use the \f{Parts List} command to measure the length of selected flex-track.
\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.
@@ -436,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}
@@ -454,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
@@ -520,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}.
@@ -532,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
@@ -602,17 +668,17 @@ The Parts List (\K{cmdEnum}) dialog lists prices for selected objects if the \e{
\u000
-\dd Turntables can be turned by using \e{Shift+Left-Click} on the endpoint you want the Turntable to move to. To turn the Turntable 180\u00B0, \e{Shift+Left-Click} on the endpoint again.
+\dd Turntables can be turned by using \e{Shift+Left-Click} 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\u00B0, \e{Shift+Left-Click} on the current endpoint again.
\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.
@@ -660,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.
@@ -668,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.
@@ -688,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.
@@ -700,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 e0269f4..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.
@@ -245,15 +246,17 @@ Lengths and Distances can be entered in a variety of formats;
\u000
-\dd Pressing the Equal Sign (\c{=}) key after an entry will reformat the value entered to your preferred length format (\K{cmdPref}).
+\dd Adding the Equal Sign (\c{=}) key after an entry will reformat the value entered to your preferred length format (\K{cmdPref}).
\u000
-\dd Pressing the "\c{p}" 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 Adding the "\c{p}" 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.
\u000
-\dd Pressing the "\c{s}" key after an entry will convert a scale measurement to a prototype measurement.
+\dd Adding the "\c{s}" key after an entry will convert a scale measurement to a prototype measurement.
+
+The conversion will happen when the \e{Tab} key is used, or the cursor is moved to a different entry box.
\rule
@@ -300,7 +303,7 @@ Instead of using the menus or the buttons on the \f{Tool-bar} (\K{mainW}), most
\u000
-\dd The \c{DELETE} key invokes the \f{Delete} (\K{cmdDelete}) command.
+\dd The \c{DELETE} or the \c{BackSpace} key invokes the \f{Delete} (\K{cmdDelete}) command.
Several Shortcut key commands are used in conjunction with the mouse. These commands are listed in \K{cmdAcclKeys}.
@@ -418,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
@@ -754,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
@@ -936,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.
@@ -1136,6 +1141,10 @@ The Shortcut key for each command is listed after the command name.
\u000
+\dt Angle Command (\K{cmdAngle})
+
+\dd Position Protractor - \e{Left-Drag}
+
\dt Select Command (\K{cmdSelect}) - \e{Ctrl+E}
@@ -1230,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 8876d96..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
@@ -149,6 +157,10 @@ Setting this option constrains the Main Canvas to minimize these areas (the \f{g
\u000
+\dd \f{Dont Hide System Cursor} - 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.
+
+\u000
+
\dd \f{Draw EndPts} - when to draw endpoints between connected track: never, only for turnouts or for all tracks.
\u000
@@ -183,13 +195,13 @@ Setting this option constrains the Main Canvas to minimize these areas (the \f{g
\u000
-\b \e{Cars} - Reporting mark labels on cars.
+\b \e{Cars} - 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 \K{carpart}.
\b \e{EndPt Elevations} - Elevation markers attached to endpoints.
-\b \e{Lengths} - Length of flex-track attached to ends of turnouts.
+\b \e{Lengths} - Length of flex-track attached to ends of turnouts all the way to the next turnout.
-\b \e{Track Descriptions} - Title of each turnout and sectional track.
+\b \e{Track Descriptions} - 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 \K{cmdMoveLabel} command.
\b \e{Track Elevations} - Computed elevations at the center of each track.
@@ -201,11 +213,11 @@ Setting this option constrains the Main Canvas to minimize these areas (the \f{g
\u000
-\dd \f{Layout Labels} - controls the format of titles for turnouts and structures displayed on the Layout.
+\dd \f{Layout Labels} - controls the format of titles for Turnouts and Structures displayed on the Layout.
\u000
-\dd \f{Label Scale} - draw labels only when the drawing Scale is smaller or equal to this value.
+\dd \f{Label Scale} - the program will draw labels only when the drawing Scale is smaller or equal to this value.
\u000
@@ -321,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.
@@ -330,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.
@@ -391,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.
@@ -403,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
@@ -411,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
@@ -461,10 +473,18 @@ This dialog controls some parameters which likely will not be changed frequently
\dd \f{Units} - choose between English (inches) or Metric (centimeters) measurements.
+\u000
+
+\dd \f{Write Settings} - Save the current settings to a named settings file
+
+\u000
+
+\dd \f{Read Settings} - Load settings from a named settings file
+
\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
new file mode 100644
index 0000000..c7977f5
--- /dev/null
+++ 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 ccd90d9..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 aa53512..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 1df9bfc..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 4e7a34c..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 3fecbe3..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 840fa82..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 131bb94..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 6844a84..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 8cb3ae7..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 f6e594c..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 6ad7001..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 1e84751..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 87fb172..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 75038e7..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 f501f13..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 540cce9..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/beasement.png b/app/doc/png.d/beasement.png
index 1e4bd1a..b1c456a 100644
--- a/app/doc/png.d/beasement.png
+++ b/app/doc/png.d/beasement.png
Binary files differ
diff --git a/app/doc/png.d/belev.png b/app/doc/png.d/belev.png
index 6ecb86a..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 895f376..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 cdf548a..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 1cf93fa..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 25dcac1..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 9de3726..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 fab3d1a..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 7b362c2..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 b/app/doc/png.d/bitmap.png
index 33471c8..28fcabb 100644
--- a/app/doc/png.d/bitmap.png
+++ b/app/doc/png.d/bitmap.png
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/bmap.png b/app/doc/png.d/bmap.png
index 7a99724..98b4a6f 100644
--- a/app/doc/png.d/bmap.png
+++ b/app/doc/png.d/bmap.png
Binary files differ
diff --git a/app/doc/png.d/bmcircle.png b/app/doc/png.d/bmcircle.png
index fc26dbf..ca7017f 100644
--- a/app/doc/png.d/bmcircle.png
+++ b/app/doc/png.d/bmcircle.png
Binary files differ
diff --git a/app/doc/png.d/bmcurved.png b/app/doc/png.d/bmcurved.png
index 0feef79..1c76f6a 100644
--- a/app/doc/png.d/bmcurved.png
+++ b/app/doc/png.d/bmcurved.png
Binary files differ
diff --git a/app/doc/png.d/bmenu.png b/app/doc/png.d/bmenu.png
index 75cc557..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 c33196a..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 311d9aa..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 fcff047..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 a83f9da..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 da70589..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 b2bdd6e..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 85184dd..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 b47a3f4..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 7d9834b..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 f6b52f8..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 f9ea955..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 5b556c0..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 7ec6620..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 68d9a4a..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 253a810..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 6f3300f..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 2e39236..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 4f4a81f..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 a63d6d5..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 9561901..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/cmdopt.png b/app/doc/png.d/cmdopt.png
index b721bbc..992426d 100644
--- a/app/doc/png.d/cmdopt.png
+++ b/app/doc/png.d/cmdopt.png
Binary files differ
diff --git a/app/doc/png.d/colorw.png b/app/doc/png.d/colorw.png
index ffe5347..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 9c16665..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 31043e3..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/displayopt.png b/app/doc/png.d/displayopt.png
index be769a1..cf0178a 100644
--- a/app/doc/png.d/displayopt.png
+++ b/app/doc/png.d/displayopt.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 a965062..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/dprmfile.png b/app/doc/png.d/dprmfile.png
index 7733a1c..ba5170a 100644
--- a/app/doc/png.d/dprmfile.png
+++ b/app/doc/png.d/dprmfile.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/layout.png b/app/doc/png.d/layout.png
index d5607da..54f35c9 100644
--- a/app/doc/png.d/layout.png
+++ b/app/doc/png.d/layout.png
Binary files differ
diff --git a/app/doc/png.d/madd.png b/app/doc/png.d/madd.png
index e8a664f..bde4a7f 100644
--- a/app/doc/png.d/madd.png
+++ b/app/doc/png.d/madd.png
Binary files differ
diff --git a/app/doc/png.d/maddcircle.png b/app/doc/png.d/maddcircle.png
new file mode 100644
index 0000000..57708a1
--- /dev/null
+++ b/app/doc/png.d/maddcircle.png
Binary files differ
diff --git a/app/doc/png.d/maddcontrol.png b/app/doc/png.d/maddcontrol.png
new file mode 100644
index 0000000..0a0e167
--- /dev/null
+++ b/app/doc/png.d/maddcontrol.png
Binary files differ
diff --git a/app/doc/png.d/maddcurve.png b/app/doc/png.d/maddcurve.png
new file mode 100644
index 0000000..7b63b71
--- /dev/null
+++ b/app/doc/png.d/maddcurve.png
Binary files differ
diff --git a/app/doc/png.d/maddparallel.png b/app/doc/png.d/maddparallel.png
new file mode 100644
index 0000000..c821f4a
--- /dev/null
+++ b/app/doc/png.d/maddparallel.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/mchange.png b/app/doc/png.d/mchange.png
index f891411..e09079c 100644
--- a/app/doc/png.d/mchange.png
+++ b/app/doc/png.d/mchange.png
Binary files differ
diff --git a/app/doc/png.d/mconvert.png b/app/doc/png.d/mconvert.png
new file mode 100644
index 0000000..879777d
--- /dev/null
+++ b/app/doc/png.d/mconvert.png
Binary files differ
diff --git a/app/doc/png.d/mdraw.png b/app/doc/png.d/mdraw.png
index 46b1f69..24d46ce 100644
--- a/app/doc/png.d/mdraw.png
+++ b/app/doc/png.d/mdraw.png
Binary files differ
diff --git a/app/doc/png.d/mdrawcircles.png b/app/doc/png.d/mdrawcircles.png
index 30f9f00..42e1854 100644
--- a/app/doc/png.d/mdrawcircles.png
+++ b/app/doc/png.d/mdrawcircles.png
Binary files differ
diff --git a/app/doc/png.d/mdrawcurve.png b/app/doc/png.d/mdrawcurve.png
index 20501f0..6a638c3 100644
--- a/app/doc/png.d/mdrawcurve.png
+++ b/app/doc/png.d/mdrawcurve.png
Binary files differ
diff --git a/app/doc/png.d/mdrawmeasure.png b/app/doc/png.d/mdrawmeasure.png
new file mode 100644
index 0000000..e090704
--- /dev/null
+++ b/app/doc/png.d/mdrawmeasure.png
Binary files differ
diff --git a/app/doc/png.d/mdrawnotes.png b/app/doc/png.d/mdrawnotes.png
new file mode 100644
index 0000000..2b0a128
--- /dev/null
+++ b/app/doc/png.d/mdrawnotes.png
Binary files differ
diff --git a/app/doc/png.d/mdrawshapes.png b/app/doc/png.d/mdrawshapes.png
index d7a8a30..7d81c96 100644
--- a/app/doc/png.d/mdrawshapes.png
+++ b/app/doc/png.d/mdrawshapes.png
Binary files differ
diff --git a/app/doc/png.d/mdrawstraight.png b/app/doc/png.d/mdrawstraight.png
index c0767a3..dbf4363 100644
--- a/app/doc/png.d/mdrawstraight.png
+++ b/app/doc/png.d/mdrawstraight.png
Binary files differ
diff --git a/app/doc/png.d/medit.png b/app/doc/png.d/medit.png
index 3b69b83..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/mfile.png b/app/doc/png.d/mfile.png
index 4bbd678..3318d9e 100644
--- a/app/doc/png.d/mfile.png
+++ b/app/doc/png.d/mfile.png
Binary files differ
diff --git a/app/doc/png.d/mhelp.png b/app/doc/png.d/mhelp.png
index e06e37d..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/mhelpdemos.png b/app/doc/png.d/mhelpdemos.png
index 1b935bc..f67ee8e 100644
--- a/app/doc/png.d/mhelpdemos.png
+++ b/app/doc/png.d/mhelpdemos.png
Binary files differ
diff --git a/app/doc/png.d/mjoin.png b/app/doc/png.d/mjoin.png
new file mode 100644
index 0000000..29034d6
--- /dev/null
+++ b/app/doc/png.d/mjoin.png
Binary files differ
diff --git a/app/doc/png.d/mmacro.png b/app/doc/png.d/mmacro.png
index 4bb4203..b88580f 100644
--- a/app/doc/png.d/mmacro.png
+++ b/app/doc/png.d/mmacro.png
Binary files differ
diff --git a/app/doc/png.d/mmanage.png b/app/doc/png.d/mmanage.png
index 8ea36f7..34647cc 100644
--- a/app/doc/png.d/mmanage.png
+++ b/app/doc/png.d/mmanage.png
Binary files differ
diff --git a/app/doc/png.d/mmanageturnoutdesign.png b/app/doc/png.d/mmanageturnoutdesign.png
index 9a1fbec..9473414 100644
--- a/app/doc/png.d/mmanageturnoutdesign.png
+++ b/app/doc/png.d/mmanageturnoutdesign.png
Binary files differ
diff --git a/app/doc/png.d/moptions.png b/app/doc/png.d/moptions.png
index 3548abf..c8dbeb5 100644
--- a/app/doc/png.d/moptions.png
+++ b/app/doc/png.d/moptions.png
Binary files differ
diff --git a/app/doc/png.d/mselect.png b/app/doc/png.d/mselect.png
deleted file mode 100644
index 3d0f78a..0000000
--- a/app/doc/png.d/mselect.png
+++ /dev/null
Binary files differ
diff --git a/app/doc/png.d/mselectcmd.png b/app/doc/png.d/mselectcmd.png
new file mode 100644
index 0000000..07a4c20
--- /dev/null
+++ b/app/doc/png.d/mselectcmd.png
Binary files differ
diff --git a/app/doc/png.d/mselectcontext.png b/app/doc/png.d/mselectcontext.png
new file mode 100644
index 0000000..fe6a34c
--- /dev/null
+++ b/app/doc/png.d/mselectcontext.png
Binary files differ
diff --git a/app/doc/png.d/mselected.png b/app/doc/png.d/mselected.png
deleted file mode 100644
index c6ac4a3..0000000
--- a/app/doc/png.d/mselected.png
+++ /dev/null
Binary files differ
diff --git a/app/doc/png.d/mselectedcontext.png b/app/doc/png.d/mselectedcontext.png
new file mode 100644
index 0000000..607398f
--- /dev/null
+++ b/app/doc/png.d/mselectedcontext.png
Binary files differ
diff --git a/app/doc/png.d/msplit.png b/app/doc/png.d/msplit.png
new file mode 100644
index 0000000..2fe2d48
--- /dev/null
+++ b/app/doc/png.d/msplit.png
Binary files differ
diff --git a/app/doc/png.d/mview.png b/app/doc/png.d/mview.png
index 7bf2037..61fff8c 100644
--- a/app/doc/png.d/mview.png
+++ b/app/doc/png.d/mview.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 ec6b2b8..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/pref.png b/app/doc/png.d/pref.png
index e72b459..57940a6 100644
--- a/app/doc/png.d/pref.png
+++ b/app/doc/png.d/pref.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 6435000..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/sticky.png b/app/doc/png.d/sticky.png
index fbc2316..2683cce 100644
--- a/app/doc/png.d/sticky.png
+++ b/app/doc/png.d/sticky.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 cb115a9..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 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
@@ -42,6 +42,10 @@ The \f{View Menu} shows commands affecting the display of the \f{Main Canvas} (\
\u000
+\dd \f{Pan/Zoom} - move or resize the viewport using the mouse (\K{cmdPan}).
+
+\u000
+
\dd \G{png.d/mzoomscale.png}
\u000
@@ -62,15 +66,34 @@ When zooming in or out, the corresponding highlighted area of the \f{Map Window}
\rule
-\S{cmdGrid} Grid Dialog
+\S{cmdMagneticSnap} Magnetic Snap
+
+The \f{MagneticSnap} 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.
+
+\u000
+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.
+
+\u000
+The \f{MagneticSnap} feature is enabled and disabled using either the magnet icon which is part of the \f{SnapGrid} Toolbar button set, or using the View (\K{viewM}) menu.
+
+For each part of an Add or Move or Rotate operation, the current state of \f{MagneticSnap} can be temporarily inverted using the \f{Alt} key.
+This enables snapping to be inhibited for a single part of an operation (or conversely enabled for just one part).
+
+\rule
-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 controls the position of the cursor during the \f{Curve} (\K{cmdCurve}), \f{Circle} (\K{cmdCircle}), \f{Modify} (\K{cmdModify}), \f{Straight} (\K{cmdStraight}), \f{Line Drawing} (\K{cmdDraw}) and \f{Turntable} (\K{cmdTurntable}) commands.
+\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.
\G{png.d/grid.png}
The \f{Grid} dialog contains controls affecting the horizontal and vertical snap grid lines. Each dimension can be independently controlled.
-\dd The \f{Spacing} value specifies the distance between major grid lines, which are drawn as solid lines on the layout.
+\dd The \f{Spacing} 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 \f{Units} setting in Options->Preferencecs (\K{cmdPref}) menu.
\u000
@@ -78,7 +101,7 @@ The \f{Grid} dialog contains controls affecting the horizontal and vertical snap
\u000
-\dd The Grid can be enabled or disabled in each dimension via the \f{Enable} check box.
+\dd The Grid can be enabled or disabled in each dimension via the \f{Enable} check box. The action of snapping is secondary to \f{Magnetic Snap} if enabled, and is suppressed if \f{Alt} is held.
\u000
@@ -102,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}
@@ -110,7 +133,6 @@ Command button groups displayed on the \f{Tool-bar} are selected using the Tool-
\rule
-
\S{cmdZoom} \i{Zoom}
\G{png.d/bgzoom.png}
@@ -133,6 +155,10 @@ Holding down the Shift key while clicking the \f{Zoom In} or \f{Zoom Out} button
\u000
+\b Key 's' sets the zoom to show the selected set of objects and pans the window to center the highlit area.
+
+\u000
+
\b Key '0' or 'o' keeps the zoom as is, but moves the origin of the bottom left of the window to 0,0
\u000
@@ -147,8 +173,11 @@ 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).
+\e{Note} - 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.
+
+\u000
+
+\dd See \f{Main Window Overview} (\K{mainW}) for details on how to \f{Pan} the \f{Main Canvas}.
\rule
@@ -169,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 357a0cb..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,4 +149,136 @@ 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}
+
+XTrackCAD incorporates the following software:
+
+\c This program uses FreeImage, a free, open source image library supporting all common bitmap formats.
+\e bbbbbbbbb
+\c See http://freeimage.sourceforge.net for details
+
+\u000
+
+\c uthash, utlist
+\e bbbbbb bbbbbb
+\c Copyright (c) 2005-2015, Troy D. Hanson http://troydhanson.github.com/uthash/
+\c All rights reserved.
+
+\u000
+
+\c CJson - https://github.com/DaveGamble/cJSON/blob/master/README.md#license
+\e bbbbb
+\c Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
+
+\u000
+
+\c zlib - https://opensource.org/licenses/zlib-license.php
+\e bbbb
+
+\u000
+
+\c libzip - https://libzip.org/license/
+\e bbbbbb
+\c Copyright (C) 1999-2019 Dieter Baron and Thomas Klausner
+
+\c The authors can be contacted at <libzip@nih.at>
+
+\c Redistribution and use in source and binary forms, with or without
+\c modification, are permitted provided that the following conditions
+\c are met:
+
+\c 1. Redistributions of source code must retain the above copyright
+\c notice, this list of conditions and the following disclaimer.
+
+\c 2. Redistributions in binary form must reproduce the above copyright
+\c notice, this list of conditions and the following disclaimer in
+\c the documentation and/or other materials provided with the
+\c distribution.
+
+\c 3. The names of the authors may not be used to endorse or promote
+\c products derived from this software without specific prior
+\c written permission.
+
+\c THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+\c OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+\c WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+\c ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+\c DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+\c DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+\c GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+\c INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+\c IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+\c OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+\c IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+\u000
+
+\c minixml - https://github.com/michaelrsweet/mxml/commit/f166ad1977f2f13295689772a5d9e442f73d46f1
+\e bbbbbbb
+
+\c Copyright (C) 2003-2019 by Michael R Sweet.
+\c The Mini-XML library is licensed under the Apache License Version 2.0 with an
+\c exception to allow linking against GPL2/LGPL2-only software.
+
+
+
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/cJSON.c b/app/help/cJSON.c
deleted file mode 100644
index 1733811..0000000
--- a/app/help/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/help/cJSON.h b/app/help/cJSON.h
deleted file mode 100644
index 8d45390..0000000
--- a/app/help/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/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 1d6f8af..29e275d 100644
--- a/app/help/genhelp.json
+++ b/app/help/genhelp.json
@@ -1,681 +1,773 @@
-{
- "messages": [
- {"line": "Help", "contents": "Invokes online help for this dialog" },
- {"line": "cancel", "contents": "Cancels this command" },
- {"line": "Close", "contents": "Closes the dialog" },
- {"line": "cmdAbout", "contents": "About program dialog" },
- {"line": "cmdAbove", "contents": "Move selected object to top" },
- {"line": "cmdAddElevations", "contents": "Raise or lower all selected tracks" },
- {"line": "cmdMagneticSnap", "contents": "Turn magnetic snap on or off" },
- {"line": "cmdBelow", "contents": "Move selected object to bottom" },
- {"line": "cmdBlockCreate", "contents": "Create a section of track for automation" },
- {"line": "cmdBlockEdit", "contents": "Edit a block definition " },
- {"line": "cmdCarDesc", "contents": "Create a new Car/Loco description" },
- {"line": "cmdCarInventory", "contents": "Manage your Car and Loco Inventory" },
- {"line": "cmdCircleCenter", "contents": "Create track circle from center" },
- {"line": "cmdCircleFixedRadius", "contents": "Create fixed radius track circle" },
- {"line": "cmdCircleSetCmd", "contents": "Set Circle Track creation mode" },
- {"line": "cmdCircleTangent", "contents": "Create track circle from tangent" },
- {"line": "cmdClearElevations", "contents": "Removes elevation from Selected tracks" },
- {"line": "cmdClone", "contents": "Copy objects to clipboard and duplicate them in exactly the same place" },
- {"line": "cmdCmdopt", "contents": "Command Options dialog" },
- {"line": "cmdColor", "contents": "Controls colors" },
- {"line": "cmdConnect", "contents": "Connect two tracks" },
- {"line": "cmdControl", "contents": "Create a control for layout automation" },
- {"line": "cmdControlElements", "contents": "Select control element to create" },
- {"line": "cmdContmgm", "contents": "Manage control elements" },
- {"line": "cmdConvertSetCmd", "contents": "Set Convert mode" },
- {"line": "cmdConvertTo", "contents": "Convert from Fixed Track to Cornu" },
- {"line": "cmdConvertFrom", "contents": "Convert from Cornu and Bezier to Fixed Track" },
- {"line": "cmdCopy", "contents": "Copy selected objects to clipboard" },
- {"line": "cmdCornu", "contents": "Create Cornu track" },
- {"line": "cmdCurveCenter", "contents": "Create curved track from center" },
- {"line": "cmdCurveChord", "contents": "Create curved track from chord" },
- {"line": "cmdCurveEndPt", "contents": "Create curved track from end-point" },
- {"line": "cmdBezier", "contents": "Create Bezier track" },
- {"line": "cmdCurveSetCmd", "contents": "Set Curve Track creation mode" },
- {"line": "cmdCurveTangent", "contents": "Create curved track from tangent" },
- {"line": "cmdCustmgm", "contents": "Manipulate Custom designer entries" },
- {"line": "cmdCut", "contents": "Moves selected objects to clipboard" },
- {"line": "cmdDelete", "contents": "Delete objects" },
- {"line": "cmdDemo", "contents": "Playback demos" },
- {"line": "cmdDescribe", "contents": "Change Object Properties" },
- {"line": "cmdDescribeMode", "contents": "Change to properties mode" },
- {"line": "cmdDeselectAll", "contents": "Deselect all selected objects" },
- {"line": "cmdDisplay", "contents": "Change Display parameters" },
- {"line": "cmdDrawBench", "contents": "Create benchwork" },
- {"line": "cmdDrawBox", "contents": "Create a box" },
- {"line": "cmdDrawCircleSetCmd", "contents": "Set Circle drawing command" },
- {"line": "cmdDrawCircle", "contents": "Create a circle" },
- {"line": "cmdDrawCircleCenter", "contents": "Draw a circle line from center" },
- {"line": "cmdDrawCircleFixedRadius", "contents": "Draw a fixed radius circle line" },
- {"line": "cmdDrawCircleTangent", "contents": "Draw a circle line from tangent" },
- {"line": "cmdDrawCurveSetCmd", "contents": "Set Curve drawing command" },
- {"line": "cmdDrawCurve", "contents": "Create a curved line" },
- {"line": "cmdDrawCurveEndPt", "contents": "Create a curved line from End" },
- {"line": "cmdDrawCurveCenter", "contents": "Create a curved line from center" },
- {"line": "cmdDrawCurveChord", "contents": "Create a curved line from chord" },
- {"line": "cmdDrawCurveTangent", "contents": "Create a curved line from tangent" },
- {"line": "cmdDrawBezierCurve", "contents": "Create a Bezier line" },
- {"line": "cmdDrawDimLine", "contents": "Create a dimension line" },
- {"line": "cmdDrawFilledBox", "contents": "Create a filled box" },
- {"line": "cmdDrawFilledCurve", "contents": "Create a filled circle" },
- {"line": "cmdDrawFilledCircleCenter", "contents": "Draw a filled circle from center" },
- {"line": "cmdDrawFilledCircleFixedRadius", "contents": "Draw a fixed radius filled circle" },
- {"line": "cmdDrawFilledCircleTangent", "contents": "Draw a filled circle from tangent" },
- {"line": "cmdDrawPolygon", "contents": "Create a polygon" },
- {"line": "cmdDrawFilledPolygon", "contents": "Create a filled polygon" },
- {"line": "cmdDrawPolyline", "contents": "Create a polyline" },
- {"line": "cmdDrawLine", "contents": "Create a straight line" },
- {"line": "cmdDrawLineSetCmd", "contents": "Set Line drawing command" },
- {"line": "cmdDrawShapeSetCmd", "contents": "Set Shape drawing command" },
- {"line": "cmdDrawTableEdge", "contents": "Draw table edge" },
- {"line": "cmdEasement", "contents": "Easement menu" },
- {"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": "cmdExportDXF", "contents": "Export a DXF file" },
- {"line": "cmdFileNote", "contents": "Document" },
- {"line": "cmdFlip", "contents": "Flip selected objects" },
- {"line": "cmdGrid", "contents": "Adjust snap grid" },
- {"line": "cmdGridEnable", "contents": "Enable snap grid" },
- {"line": "cmdGridShow", "contents": "Show snap grid" },
- {"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": "cmdImportModule", "contents": "Import an .xti file as a Module" },
- {"line": "cmdJoinTrack", "contents": "Join two tracks" },
- {"line": "cmdJoinLine", "contents": "Join two lines or polylines" },
- {"line": "cmdJoinSetCmd", "contents": "Set Join mode" },
- {"line": "cmdLayer", "contents": "Change Layers" },
- {"line": "cmdLayerSet", "contents": "Selects the current drawing layer" },
- {"line": "cmdLayout", "contents": "Layout parameters" },
- {"line": "cmdLinkNote", "contents": "Weblink" },
- {"line": "cmdMapShow", "contents": "Show/Hide Map Window" },
- {"line": "cmdModify", "contents": "Modify or extend a track" },
- {"line": "cmdModifyMode", "contents": "Change To modify mode" },
- {"line": "cmdMove", "contents": "Move selected objects" },
- {"line": "cmdMoveLabel", "contents": "Move a label" },
- {"line": "cmdMoveToCurrentLayer", "contents": "Move selected objects to current layer" },
- {"line": "cmdNote", "contents": "Place a note on the layout" },
- {"line": "cmdOutputbitmap", "contents": "Print a bitmap" },
- {"line": "cmdPan", "contents": "Pan or zoom the layout" },
- {"line": "cmdPanMode", "contents": "Change to zoom/pan mode" },
- {"line": "cmdParallelTrack", "contents": "Create a parallel track" },
- {"line": "cmdParallelLine", "contents": "Create a parallel line" },
- {"line": "cmdParallelSetCmd", "contents": "Set Parallel mode" },
- {"line": "cmdParameter", "contents": "Register" },
- {"line": "cmdPaste", "contents": "Copy objects from clipboard" },
- {"line": "cmdPref", "contents": "Perferences dialog" },
- {"line": "cmdPricelist", "contents": "Display prices of turnouts, sectional tracks and structures" },
- {"line": "cmdPrint", "contents": "Print the layout" },
- {"line": "cmdPrmfile", "contents": "Loads and unloads parameter files into/from toolbar" },
- {"line": "cmdProfile", "contents": "Elevation Profile Command" },
- {"line": "cmdProfileDraw", "contents": "Profile" },
- {"line": "cmdRecord", "contents": "Command recorder" },
- {"line": "cmdRedo", "contents": "Redo last undo" },
- {"line": "cmdRefreshCompound", "contents": "Update selected Turnout and Structure definitions" },
- {"line": "cmdRescale", "contents": "Rescale selected objects" },
- {"line": "cmdRotate", "contents": "Rotate selected object(s)" },
- {"line": "cmdRuler", "contents": "Show a ruler" },
- {"line": "cmdSelect", "contents": "Select objects" },
- {"line": "cmdSelectMode", "contents": "Change To Select Mode" },
- {"line": "cmdSelectAll", "contents": "Selects all objects on the layout" },
- {"line": "cmdSelectCurrentLayer", "contents": "Selects all objects in the current Layer" },
- {"line": "cmdSelectInvert", "contents": "Invert current selection" },
- {"line": "cmdSplitTrack", "contents": "Split a track" },
- {"line": "cmdSelectOrphaned", "contents": "Select stranded (unconnected) track pieces" },
- {"line": "cmdSensor", "contents": "Create a sensor (ie. a occupancy detector or a toggle switch)" },
- {"line": "cmdSignal", "contents": "Create a signal for train control" },
- {"line": "cmdSticky", "contents": "Choose which commands are sticky" },
- {"line": "cmdStraight", "contents": "Create straight track" },
- {"line": "cmdStructure", "contents": "Place a structure on the layout" },
- {"line": "cmdSwitchMotorCreate", "contents": "Create a switchmotor for turnout control" },
- {"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": "cmdTip", "contents": "Tip of the Day window" },
- {"line": "cmdTrain", "contents": "Run Trains" },
- {"line": "cmdTrainMode", "contents": "Change To Run Trains Mode" },
- {"line": "cmdTrainPause", "contents": "Pause/Resume Trains" },
- {"line": "cmdTrainNewCar", "contents": "Place a car on the layout" },
- {"line": "cmdTrainExit", "contents": "Exit Trains" },
- {"line": "cmdTunnel", "contents": "Hide/Unhide a track" },
- {"line": "cmdBridge", "contents": "Make/Unmake a track a bridge" },
- {"line": "cmdTurnout", "contents": "Place a turnout or sectional track" },
- {"line": "cmdTurnoutNew", "contents": "Create a new turnout definition" },
- {"line": "cmdTurntable", "contents": "Place a turntable" },
- {"line": "cmdUpdatetitle", "contents": "Updates old source files with 3 part titles" },
- {"line": "cmdUndo", "contents": "Undo last command" },
- {"line": "cmdUngroup", "contents": "Ungroup objects" },
- {"line": "cmdWidth0", "contents": "Draw tracks with thin lines" },
- {"line": "cmdWidth2", "contents": "Draw tracks with medium lines" },
- {"line": "cmdWidth3", "contents": "Draw tracks with thick lines" },
- {"line": "cmdZoom", "contents": "Change drawing scale" },
- {"line": "cmdZoomIn", "contents": "Zoom in" },
- {"line": "cmdZoomOut", "contents": "Zoom out" },
- {"line": "menuFile", "contents": "File Menu" },
- {"line": "menuFile-save", "contents": "Save layout" },
- {"line": "menuFile-saveAs", "contents": "Save layout under a new name " },
- {"line": "menuFile-clear", "contents": "New layout" },
- {"line": "menuFile-enum", "contents": "Generate parts list" },
- {"line": "menuFile-load", "contents": "Load a layout" },
- {"line": "menuFile-quit", "contents": "Exit the program" },
- {"line": "menuFile-revert", "contents": "Revert to last saved state of layout plan" },
- {"line": "editM", "contents": "Edit menu" },
- {"line": "menuEdit-redraw", "contents": "Redraw layout" },
- {"line": "menuEdit-zoomIn", "contents": "Zoom in" },
- {"line": "menuEdit-zoomOut", "contents": "Zoom out" },
- {"line": "toolsM", "contents": "Tools menu" },
- {"line": "menuView", "contents": "View menu" },
- {"line": "menuToolbar", "contents": "Toolbar configuration" },
- {"line": "menuTools", "contents": "Tools menu" },
- {"line": "menuOption", "contents": "Options menu" },
- {"line": "menuMacro", "contents": "Playback/Record commands" },
- {"line": "menuWindow", "contents": "Window menu" },
- {"line": "menuHelp", "contents": "Help menu" },
- {"line": "menuHelpRecentMessages", "contents": "Recent error messages and explanations" },
- {"line": "hotBarLeft", "contents": "Move Hot Bar left" },
- {"line": "hotBarRight", "contents": "Move Hot Bar right" },
- {"line": "infoBarCount", "contents": "Total track count" },
- {"line": "infoBarPosX", "contents": "X Position of cursor" },
- {"line": "infoBarPosY", "contents": "Y Position of cursor" },
- {"line": "infoBarScale", "contents": "Drawing scale" },
- {"line": "infoBarStatus", "contents": "Message and status line" },
- {"line": "main-draw", "contents": "Main layout canvas" },
- {"line": "mainDraw", "contents": "Main layout canvas" },
- {"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-hotbar", "contents": "Turnout and Structure Hot Bar" },
- {"line": "main-layers", "contents": "Active layer list and layer buttons" },
- {"line": "map-draw", "contents": "Map window" },
- {"line": "map-hilight", "contents": "This is the portion of the layout shown in the Main Window canvas" },
- {"line": "addElev-value", "contents": "Raise or Lower all Selected Track" },
- {"line": "block-name", "contents": "Name of block" },
- {"line": "block-script", "contents": "Script that the block will run" },
- {"line": "block-segments", "contents": "List of tracks in the Block" },
- {"line": "carpart-ok", "contents": "Add or Update car object" },
- {"line": "carpart-manuf", "contents": "Manufacturer name" },
- {"line": "carpart-prototype", "contents": "Car Prototype" },
- {"line": "carpart-prototype-list", "contents": "Car Prototype" },
- {"line": "carpart-isLoco", "contents": "Is the Car a Locomotive?" },
- {"line": "carpart-partno-list", "contents": "Part Number and Description" },
- {"line": "carpart-partno", "contents": "Manufacturer Part Number" },
- {"line": "carpart-import", "contents": "Use the Selected figure as the car image" },
- {"line": "carpart-reset", "contents": "Use the default figure as the car image" },
- {"line": "carpart-desc", "contents": "Optional description of the Car Part" },
- {"line": "carpart-flip", "contents": "Flip car image" },
- {"line": "carpart-dispmode", "contents": "Display Car Item information or reporting marks and dimensions" },
- {"line": "carpart-road", "contents": "Full Roadname" },
- {"line": "carpart-type", "contents": "Car Type" },
- {"line": "carpart-protokind-list", "contents": "Car Type" },
- {"line": "carpart-repmark", "contents": "Reporting Marks (Roadname abbreviation)" },
- {"line": "carpart-number", "contents": "Car Number" },
- {"line": "carpart-bodyColor", "contents": "Car body Color" },
- {"line": "carpart-carLength", "contents": "Length of car body" },
- {"line": "carpart-carWidth", "contents": "Width of car body" },
- {"line": "carpart-trkCenter", "contents": "Distance between Trucks " },
- {"line": "carpart-trkCenterOffset", "contents": "Distance Trucks are displaced along Car" },
- {"line": "carpart-cplrMount", "contents": "Coupler are mounted on body or truck" },
- {"line": "carpart-cpldLen", "contents": "Overall Coupled Length" },
- {"line": "carpart-cplrLen", "contents": "Coupler Length from end of car" },
- {"line": "carpart-canvas", "contents": "Diagram of Car" },
- {"line": "carpart-index", "contents": "Item Index Number" },
- {"line": "carpart-purchPrice", "contents": "Original Purchase Price" },
- {"line": "carpart-currPrice", "contents": "Current Price" },
- {"line": "carpart-condition", "contents": "Condition of car" },
- {"line": "carpart-purchDate", "contents": "Original Purchase Date" },
- {"line": "carpart-serviceDate", "contents": "Last Service Date" },
- {"line": "carpart-quantity", "contents": "Number of identical cars to be entered" },
- {"line": "carpart-multinum", "contents": "Do all the cars have the same Number?" },
- {"line": "carpart-notes", "contents": "Notes about the car" },
- {"line": "carpart-new", "contents": "Create a new car Part or Prototype definitions" },
- {"line": "carpart-new-menu", "contents": "Create a new car Part or Prototype definitions" },
- {"line": "carinv-ok", "contents": "Finds the selected Car Item on the layout" },
- {"line": "carinv-sort1", "contents": "Sort the Item list" },
- {"line": "carinv-sort2", "contents": "Sort the Item list" },
- {"line": "carinv-sort3", "contents": "Sort the Item list" },
- {"line": "carinv-sort4", "contents": "Sort the Item list" },
- {"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-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" },
- {"line": "circle-radius", "contents": "Specifies the radius of the circle track" },
- {"line": "cmdopt-preselect", "contents": "Default command is Describe or Select" },
- {"line": "cmdopt-rightclickmode", "contents": "Action to invoke on Right-Click" },
- {"line": "cmdopt-selectmode", "contents": "Replace current selection with clicked object or add clicked object to selection" },
- {"line": "cmdopt-selectzero", "contents": "Clicking into an empty area clears selection if select mode is <add>" },
- {"line": "cmdopt-ok", "contents": "" },
- {"line": "contmgm-inx", "contents": "The list of control elements" },
- {"line": "contmgm-edit", "contents": "Edit the element" },
- {"line": "contmgm-delete", "contents": "Delete the element" },
- {"line": "contents-label", "contents": "Contents Label for new Parameter file" },
- {"line": "custmgm-inx", "contents": "List of custom designed turnouts and structures" },
- {"line": "custmgm-edit", "contents": "Invoke designer editor" },
- {"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-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" },
- {"line": "demo-quit", "contents": "Stops the demonstration and returns you to XTrackCAD" },
- {"line": "demo-speed", "contents": "Select speed of Playback" },
- {"line": "demo-text", "contents": "This is where comments about the demo are displayed" },
- {"line": "describe-F1", "contents": "" },
- {"line": "describe-F2", "contents": "" },
- {"line": "describe-F3", "contents": "" },
- {"line": "describe-F4", "contents": "" },
- {"line": "describe-F5", "contents": "" },
- {"line": "describe-F6", "contents": "" },
- {"line": "describe-F7", "contents": "" },
- {"line": "describe-F8", "contents": "" },
- {"line": "describe-F9", "contents": "" },
- {"line": "describe-F10", "contents": "" },
- {"line": "describe-F11", "contents": "" },
- {"line": "describe-F12", "contents": "" },
- {"line": "describe-F13", "contents": "" },
- {"line": "describe-F14", "contents": "" },
- {"line": "describe-F15", "contents": "" },
- {"line": "describe-F16", "contents": "" },
- {"line": "describe-F17", "contents": "" },
- {"line": "describe-F18", "contents": "" },
- {"line": "describe-F19", "contents": "" },
- {"line": "describe-F20", "contents": "" },
- {"line": "describe-I1", "contents": "" },
- {"line": "describe-I2", "contents": "" },
- {"line": "describe-I3", "contents": "" },
- {"line": "describe-I4", "contents": "" },
- {"line": "describe-I5", "contents": "" },
- {"line": "describe-S1", "contents": "" },
- {"line": "describe-S2", "contents": "" },
- {"line": "describe-S3", "contents": "" },
- {"line": "describe-S4", "contents": "" },
- {"line": "describe-Y1", "contents": "" },
- {"line": "describe-C1", "contents": "" },
- {"line": "describe-L1", "contents": "" },
- {"line": "describe-L2", "contents": "" },
- {"line": "describe-LE1", "contents": "" },
- {"line": "describe-T1", "contents": "" },
- {"line": "describe-P1", "contents": "" },
- {"line": "display-autoPan", "contents": "Move the Main canvas if you drag near the edge" },
- {"line": "display-color-track", "contents": "Color tracks by layer or individually" },
- {"line": "display-color-draw", "contents": "Color draw objects by layer or individually" },
- {"line": "display-tunnels", "contents": "Controls the drawing of hidden tracks" },
- {"line": "display-endpt", "contents": "Controls the drawing of End-Points" },
- {"line": "display-tiedraw", "contents": "How to draw track ties" },
- {"line": "display-centerdraw", "contents": "Show crosshair at center of curves" },
- {"line": "display-tworailscale", "contents": "Drawing scale when to draw tracks with 2 rails" },
- {"line": "display-mapscale", "contents": "Drawing scale of the map window" },
- {"line": "display-livemap", "contents": "Whether the main layout is updated while dragging on the Map" },
- {"line": "display-labelenable", "contents": "Enable labels for Turnouts, Flextrack Lengths and Elevations" },
- {"line": "display-labelscale", "contents": "When to label Turnout, Flextrack Lengths and Elevations" },
- {"line": "display-description-fontsize", "contents": "Font size for labels on layout" },
- {"line": "display-hotbarlabels", "contents": "Label elements on the Hot Bar" },
- {"line": "display-layoutlabels", "contents": "Label elements on layout" },
- {"line": "display-listlabels", "contents": "Label elements for lists" },
- {"line": "display-carhotbarlabels", "contents": "How to group cars on the Train Hot Bar" },
- {"line": "display-trainpause", "contents": "Delay (in mS) between updating train movements" },
- {"line": "display-hideTrainsInTunnels", "contents": "Don't show trains in tunnels when tunnels are hidden" },
- {"line": "display-unconnected-endpt", "contents": "Display unconnected endpoints of track with special marks" },
- {"line": "display-constrainmain", "contents": "Whether the Main Drawing Area shows as much of the room as possible" },
- {"line": "display-ok", "contents": "" },
- {"line": "draw-linewidth", "contents": "Width of the lines" },
- {"line": "draw-linecolor", "contents": "Color of the lines" },
- {"line": "draw-benchlist", "contents": "List of types of Lumber" },
- {"line": "draw-benchcolor", "contents": "Color of Benchwork" },
- {"line": "draw-benchorient", "contents": "Orientation of Benchwork" },
- {"line": "draw-arrowsize", "contents": "Size of Dimension Arrows" },
- {"line": "easement-val", "contents": "This controls the sharpness of the easement curve" },
- {"line": "easement-r", "contents": "Minimum radius" },
- {"line": "easement-x", "contents": "Maximum offset" },
- {"line": "easement-l", "contents": "Easement length" },
- {"line": "easement-radio", "contents": "These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. None turns Easements off" },
- {"line": "easement-ok", "contents": "Complete easement selection" },
- {"line": "elev-mode", "contents": "Type of elevation" },
- {"line": "elev-value", "contents": "Height of End Point" },
- {"line": "elev-computed", "contents": "Compute elevation based on neighbors" },
- {"line": "elev-grade", "contents": "Compute grade based on neighbors" },
- {"line": "elev-station", "contents": "Specify a name for an End-Point" },
- {"line": "elev-ok", "contents": "" },
- {"line": "enum-print", "contents": "Print parts list" },
- {"line": "enum-printsetup", "contents": "Invoke the Print Setup dialog" },
- {"line": "enum-save", "contents": "Save parts list to file" },
- {"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": "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" },
- {"line": "grid-vertspacing", "contents": "Spacing between major grid lines" },
- {"line": "grid-vertdivision", "contents": "Allows the spacing to be subdivided" },
- {"line": "grid-vertenable", "contents": "Specifies if positions are snaped in this direction" },
- {"line": "grid-origx", "contents": "Shows the origin and angle of the grid" },
- {"line": "grid-origy", "contents": "Shows the origin and angle of the grid" },
- {"line": "grid-origa", "contents": "Shows the origin and angle of the grid" },
- {"line": "grid-show", "contents": "Specifies if the grid is shown" },
- {"line": "grid-ok", "contents": "Completes the grid specification" },
- {"line": "group-manuf", "contents": "Manufacturer" },
- {"line": "group-desc", "contents": "Description" },
- {"line": "group-partno", "contents": "Part Number" },
- {"line": "group-segcnt", "contents": "Number of segments in Group" },
- {"line": "group-replace", "contents": "Replace the Selected object with the new definition?" },
- {"line": "group-ok", "contents": "Creates a new Structure (or Turnout)" },
- {"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-grade", "contents": "Grade in helix" },
- {"line": "helix-vertSep", "contents": "Separation between helix layers" },
- {"line": "join-fixed-radius", "contents": "Desired curve radius between straight tracks" },
- {"line": "layer-layer", "contents": "Layer list" },
- {"line": "layer-name", "contents": "Layer Name" },
- {"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-onmap", "contents": "Layer is drawn on Map window" },
- {"line": "layer-button-count", "contents": "Number of layer buttons to show" },
- {"line": "layer-object-count", "contents": "Number of objects in this layer" },
- {"line": "layer-ok", "contents": "" },
- {"line": "layer-reset", "contents": "Load layer configuration from default" },
- {"line": "layer-save", "contents": "Save current layer configuration as default" },
- {"line": "layer-clear", "contents": "Overwrite layer configuration with system default values" },
- {"line": "layout-roomsizeX", "contents": "Specifies the size of the room (in inches or centimeters)" },
- {"line": "layout-roomsizeY", "contents": "Specifies the size of the room (in inches or centimeters)" },
- {"line": "layout-title1", "contents": "Specifies the layout Title that will appear on printouts" },
- {"line": "layout-title2", "contents": "Specifies the layout Subtitle that will appear on printouts" },
- {"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-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" },
- {"line": "layout-backgroundposY", "contents": "Specifies the y offset of the bottom left of the background image" },
- {"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": "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": "" },
- {"line": "outputbitmap-density", "contents": "Specifies number of pixels per inch (or centimeter)" },
- {"line": "outputbitmap-ok", "contents": "" },
- {"line": "outputbitmap-toggles", "contents": "Specifies whether Layout Titles, Borders or Track Centerlines are printed on the BitMap" },
- {"line": "parallel-separation", "contents": "Specifies the separation between the original track and the parallel track/line" },
- {"line": "parallel-factor", "contents": "Specifies the a factor that increases the seperation as the radius of the original track reduces. 0.0 means no increase." },
- {"line": "parameter-name", "contents": "Enter your name as specified in the XTrackCAD Registration Notice" },
- {"line": "parameter-key", "contents": "Enter the key value as specified in the XTrackCAD Registration Notice" },
- {"line": "parameter-ok", "contents": "Validates the name and key. Terminates the registration command" },
- {"line": "pref-anglesystem", "contents": "0� is up or to the right" },
- {"line": "pref-units", "contents": "Choose english (inches) or metric (centimeters)" },
- {"line": "pref-dstfmt", "contents": "How to display length measurements" },
- {"line": "pref-minlength", "contents": "Do not create tracks to be shorter than this value" },
- {"line": "pref-connectdistance", "contents": "Maximum distance between connected end points" },
- {"line": "pref-connectangle", "contents": "Minimum angle between connected End-Points" },
- {"line": "pref-turntable-angle", "contents": "Specifies the minimum angle between tracks connected to a turntable" },
- {"line": "pref-coupling-speed-max", "contents": "Trains will crash above this speed" },
- {"line": "pref-balloonhelp", "contents": "Enable/Disable balloon popup help windows" },
- {"line": "pref-showflextrack", "contents": "Enable/Disable show of flextrack on hotbar" },
- {"line": "pref-dragpixels", "contents": "How far you can move the mouse before its considered a drag" },
- {"line": "pref-dragtimeout", "contents": "How long you can hold a mouse button down before its considered a drag" },
- {"line": "pref-mingridspacing", "contents": "Minimum distance (in pixels) between grid lines/ticks" },
- {"line": "pref-checkpoint", "contents": "Specifies the Check Point frequency; number of modifications made since the last checkpoint." },
- {"line": "pref-autosave", "contents": "Specifies the number of checkpoints after save before auto-saving." },
- {"line": "pref-onstartup", "contents": "Resume work on last layout or start with new layout" },
- {"line": "pref-ok", "contents": "" },
- {"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-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" },
- {"line": "print-scale", "contents": "Controls the reduction (scale) of the printout" },
- {"line": "print-pagew", "contents": "Scaled page width (Scale times physical page width)" },
- {"line": "print-max", "contents": "Sets page size to the maximum (based on scale and physical page size)" },
- {"line": "print-pageh", "contents": "Scaled page height (Scale times physical page height)" },
- {"line": "print-snapshot", "contents": "Sets scale, origin and angle for a one page printout of the layout" },
- {"line": "print-format", "contents": "Print page in Portrait or Landscape format" },
- {"line": "print-order", "contents": "Order of printing pages" },
- {"line": "print-style", "contents": "Print Title, Date, Author and other information at bottom of page?" },
- {"line": "print-physsize", "contents": "Ignore unprintable page margins?" },
- {"line": "print-registrationMarks", "contents": "Print Registration Marks at 1:1?" },
- {"line": "print-grid", "contents": "Print Snap Grid?" },
- {"line": "print-ruler", "contents": "Print Rulers on all page edges?" },
- {"line": "print-roadbed", "contents": "Print Roadbed Outline?" },
- {"line": "print-roadbedWidth", "contents": "Print Roadbed Outline" },
- {"line": "print-origx", "contents": "Origin of the print grid. This is useful if you want to reprint a set of pages" },
- {"line": "print-origy", "contents": "Origin of the print grid. This is useful if you want to reprint a set of pages" },
- {"line": "print-reset", "contents": "Resets the origin and angle to 0" },
- {"line": "print-origa", "contents": "Origin of the print grid. This is useful if you want to reprint a set of pages" },
- {"line": "print-clear", "contents": "Deselects all pages" },
- {"line": "print-setup", "contents": "Invoke the Print Setup dialog" },
- {"line": "print-ok", "contents": "Print selected pages and terminates the print command" },
- {"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-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-selectall", "contents": "Select all parameter files shown" },
- {"line": "profile-canvas", "contents": "Profile of specified path" },
- {"line": "profile-clear", "contents": "Clear the profile" },
- {"line": "profile-print", "contents": "Print the profile" },
- {"line": "profile-ok", "contents": "" },
- {"line": "record-stop", "contents": "Stop recording" },
- {"line": "record-message", "contents": "Insert a message" },
- {"line": "record-end", "contents": "End a message" },
- {"line": "record-text", "contents": "Message body" },
- {"line": "refreshSpecial-list", "contents": "Possible turnouts" },
- {"line": "refreshSpecial-skip", "contents": "Skip this turnout" },
- {"line": "refreshSpecial-ok", "contents": "" },
- {"line": "rename-manuf", "contents": "Manufacturer of Object" },
- {"line": "rename-desc", "contents": "Description of Object" },
- {"line": "rename-partno", "contents": "Part Nuber of Object" },
- {"line": "rename-ok", "contents": "" },
- {"line": "rescale-toggle", "contents": "Rescale by Scale Conversion or by Ratio" },
- {"line": "rescale-fromS", "contents": "Original Scale of the selected objects" },
- {"line": "rescale-fromG", "contents": "Original Gauge of the selected objects" },
- {"line": "rescale-toS", "contents": "New Scale of the selected objects" },
- {"line": "rescale-toG", "contents": "New Gauge of the selected objects" },
- {"line": "rescale-change-dim", "contents": "Change track dimensions to new scale" },
- {"line": "rescale-ratio", "contents": "Change size by this amount" },
- {"line": "rescale-ok", "contents": "" },
- {"line": "rgbcolor-snapgrid", "contents": "Snap Grid Line and Division" },
- {"line": "rgbcolor-marker", "contents": "X and Y position markers" },
- {"line": "rgbcolor-border", "contents": "Border rulers, room boundaries and table edges" },
- {"line": "rgbcolor-crossmajor", "contents": "Primary Axis of grid rotation" },
- {"line": "rgbcolor-crossminor", "contents": "Secondary Axis of grid rotation" },
- {"line": "rgbcolor-normal", "contents": "Unselected tracks" },
- {"line": "rgbcolor-selected", "contents": "Selected tracks" },
- {"line": "rgbcolor-profile", "contents": "Color of tracks on the Profile path" },
- {"line": "rgbcolor-exception", "contents": "Color of Exceptional tracks" },
- {"line": "rgbcolor-tie", "contents": "Color of track ties" },
- {"line": "rgbcolor-ok", "contents": "Updates the colors" },
- {"line": "rotate-rotate", "contents": "Angle in degrees" },
- {"line": "rotate-ok", "contents": "Rotate object(s) by specified amount" },
- {"line": "searchgui-query", "contents": "Enter one or more words as search terms '*' means all" },
- {"line": "searchgui-find", "contents": "Find matching file descriptions" },
- {"line": "searchgui-inx", "contents": "Search Results" },
- {"line": "searchgui-mode", "contents": "Show Descriptions or FileNames in results" },
- {"line": "searchgui-apply", "contents": "Add selected entries into parameter file list" },
- {"line": "searchgui-selectall", "contents": "Select All found entries" },
- {"line": "searchgui-default", "contents": "Reload the system library contents for finding" },
- {"line": "sticky-set", "contents": "Choose commands to be sticky" },
- {"line": "sticky-ok", "contents": "Make the commands sticky" },
- {"line": "structure-list", "contents": "List of available structure" },
- {"line": "structure-canvas", "contents": "Diagram of the selected structure" },
- {"line": "structure-hide", "contents": "Hide Selection window when placing Structure" },
- {"line": "structure-stats", "contents": "Drawing scale and size" },
- {"line": "structure-ok", "contents": "Complete structure placement" },
- {"line": "structure-pier-inx", "contents": "Choose a Pier number" },
- {"line": "switchmotor-name", "contents": "Name of the Motor" },
- {"line": "switchmotor-normal", "contents": "Value when switch is normal" },
- {"line": "switchmotor-reverse", "contents": "Value when the switch is reversed" },
- {"line": "switchmotor-pointSense", "contents": "Value for a positive comfirmation of switch position" },
- {"line": "text-fontsize", "contents": "Controls the size of the entered text" },
- {"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": "train-newcar-index", "contents": "List of Cars" },
- {"line": "train-list", "contents": "List of active trains" },
- {"line": "train-speed", "contents": "Speed" },
- {"line": "train-distance", "contents": "Train odometer" },
- {"line": "train-zeroDistance", "contents": "Reset odometer to 0" },
- {"line": "train-goto", "contents": "Find train on layout" },
- {"line": "train-follow", "contents": "Follow train around layout" },
- {"line": "train-autoreverse", "contents": "Flip direction at End Of Track" },
- {"line": "train-direction", "contents": "Change direction of train" },
- {"line": "train-stop", "contents": "Stop the train" },
- {"line": "turnout-list", "contents": "List of available turnouts for the current scale" },
- {"line": "turnout-canvas", "contents": "Diagram of the currently selected turnout. Click on a End-Point to select the Active End-Point" },
- {"line": "turnout-new", "contents": "A menu list of various type of turnouts and sectional tracks you can define" },
- {"line": "turnout-hide", "contents": "Hide Selection window when placing Turnout" },
- {"line": "turnout-activeEndPoint", "contents": "The selected Active End-Point" },
- {"line": "turnout-current", "contents": "Current selected turnout, (displayed in the diagram window)" },
- {"line": "turnout-endPoint", "contents": "One the End-Points that can be selected" },
- {"line": "turnout-ok", "contents": "" },
- {"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-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" },
- {"line": "turnoutNew-len2", "contents": "Length from the base to the end of the specified track" },
- {"line": "turnoutNew-manuf", "contents": "Manufacturer" },
- {"line": "turnoutNew-off1", "contents": "Offset of the track End-Point from the center line of the turnout" },
- {"line": "turnoutNew-off2", "contents": "Offset of the track End-Point from the center line of the turnout" },
- {"line": "turnoutNew-partno1", "contents": "Part Number" },
- {"line": "turnoutNew-partno2", "contents": "Part Number" },
- {"line": "turnoutNew-print", "contents": "Prints a full size diagram of the turnout for checking" },
- {"line": "turnoutNew-ok", "contents": "Prints a full size diagram of the turnout for checking" },
- {"line": "turnoutNew-color", "contents": "Color of Roadbed lines" },
- {"line": "turnoutNew-roadbedLineWidth", "contents": "Width of Roadbed lines" },
- {"line": "turnoutNew-roadbedWidth", "contents": "Width of Roadbed" },
- {"line": "turnoutNew-printsetup", "contents": "Invoke the Print Setup dialog" },
- {"line": "turnoutNew-done", "contents": "Closes the window and returns to the Turnout Selection window" },
- {"line": "turntable-diameter", "contents": "Specifies the diameter of the turntable" },
- {"line": "updatetitle-old", "contents": "Old Turnout title" },
- {"line": "updatetitle-sel", "contents": "List of available titles" },
- {"line": "updatetitle-ignore", "contents": "Leave the Turnouts' title unchanged" },
- {"line": "updatetitle-load", "contents": "Invoke the Parameter Files dialog" },
- {"line": "updatetitle-list", "contents": "List of available turnouts" },
- {"line": "updatetitle-ok", "contents": "Update the Turnouts' title" },
- {"line": "fontSelCancel", "contents": "Cancel" },
- {"line": "fontSelList", "contents": "List" },
- {"line": "fontSelOk", "contents": "Ok" },
- {"line": "fontSelSample", "contents": "Sample" },
- {"line": "fontSelSize", "contents": "Size" },
- {"line": "fontSelSlant", "contents": "Slant" },
- {"line": "fontSelW", "contents": "Font selection dialog" },
- {"line": "fontSelWeight", "contents": "Weight" },
- {"line": "printAbortW", "contents": "Printer Abort Window" },
- {"line": "printFileName", "contents": "Print to filename" },
- {"line": "printFontAlias", "contents": "Specify Postscript font alias mapping" },
- {"line": "printSetup", "contents": "Displays the Print Setup window to change printers, orientation, paper size, etc." },
- {"line": "printSetupCancel", "contents": "Closes this dialog" },
- {"line": "printSetupFormat", "contents": "Page orientation" },
- {"line": "printSetupMargin", "contents": "Unprintable margins" },
- {"line": "printSetupOk", "contents": "Updates and closes this dialog" },
- {"line": "printSetupPaper", "contents": "Choose paper size" },
- {"line": "printSetupPrinter", "contents": "Choose printer" },
- {"line": "printSetupTest", "contents": "Print test page" },
- {"line": "about", "contents": "No Help" },
- {"line": "about-about", "contents": "No Help" },
- {"line": "about-ok", "contents": "" },
- {"line": "cmdDebug", "contents": "No Help" },
- {"line": "loosen", "contents": "No Help" },
- {"line": "misc-cur-turnout-ep", "contents": "" },
- {"line": "misc-toolbarset", "contents": "No Help" },
- {"line": "misc-showlayout", "contents": "No Help" },
- {"line": "misc-showdisplay", "contents": "No Help" },
- {"line": "misc-showcmdopt", "contents": "No Help" },
- {"line": "misc-showeasement", "contents": "No Help" },
- {"line": "misc-showfontSel", "contents": "No Help" },
- {"line": "misc-showgrid", "contents": "No Help" },
- {"line": "misc-showdebug", "contents": "No Help" },
- {"line": "misc-sticky", "contents": "No Help" },
- {"line": "misc-showpref", "contents": "No Help" },
- {"line": "misc-showcolor", "contents": "No Help" },
- {"line": "misc-showfileClear", "contents": "No Help" },
- {"line": "misc-showparamFile", "contents": "No Help" },
- {"line": "misc-showpriceList", "contents": "No Help" },
- {"line": "misc-showprint", "contents": "No Help" },
- {"line": "misc-showprintSetup", "contents": "No Help" },
- {"line": "misc-showprintBitmap", "contents": "No Help" },
- {"line": "misc-showpartsList", "contents": "No Help" },
- {"line": "misc-shownotes", "contents": "No Help" },
- {"line": "misc-showundo", "contents": "No Help" },
- {"line": "misc-showredo", "contents": "No Help" },
- {"line": "misc-showcut", "contents": "No Help" },
- {"line": "misc-showcopy", "contents": "No Help" },
- {"line": "misc-showpaste", "contents": "No Help" },
- {"line": "misc-showdelete", "contents": "No Help" },
- {"line": "misc-showtunnel", "contents": "No Help" },
- {"line": "misc-showabove", "contents": "No Help" },
- {"line": "misc-showbelow", "contents": "No Help" },
- {"line": "misc-showwidth0", "contents": "No Help" },
- {"line": "misc-showwidth2", "contents": "No Help" },
- {"line": "misc-showwidth3", "contents": "No Help" },
- {"line": "misc-showrecompelev", "contents": "No Help" },
- {"line": "misc-showcardesc", "contents": "No Help" },
- {"line": "misc-showcaradd", "contents": "No Help" },
- {"line": "misc-showselectAll", "contents": "No Help" },
- {"line": "misc-showimport", "contents": "No Help" },
- {"line": "misc-showexport", "contents": "No Help" },
- {"line": "misc-showexportDXF", "contents": "No Help" },
- {"line": "misc-showloosen", "contents": "No Help" },
- {"line": "misc-group-objects", "contents": "No Help" },
- {"line": "misc-ungroup-objects", "contents": "No Help" },
- {"line": "misc-showcustomMgm", "contents": "No Help" },
- {"line": "misc-showlayers", "contents": "No Help" },
- {"line": "misc-showmoveToCurrentLayer", "contents": "No Help" },
- {"line": "misc-showselectCurrentLayer", "contents": "No Help" },
- {"line": "misc-showclearElevations", "contents": "No Help" },
- {"line": "misc-showaddElevations", "contents": "No Help" },
- {"line": "debug-Track", "contents": "No Help" },
- {"line": "debug-EndPt", "contents": "No Help" },
- {"line": "debug-ReadTracks", "contents": "No Help" },
- {"line": "debug-Curve", "contents": "No Help" },
- {"line": "debug-Join", "contents": "No Help" },
- {"line": "debug-Turnout", "contents": "No Help" },
- {"line": "debug-Structure", "contents": "No Help" },
- {"line": "debug-Print", "contents": "No Help" },
- {"line": "debug-ok", "contents": "" },
- {"line": "map-canvas", "contents": "No Help" },
- {"line": "cmdLayerShow0", "contents": "Layer" },
- {"line": "cmdLayerShow1", "contents": "Layer" },
- {"line": "cmdLayerShow2", "contents": "Layer" },
- {"line": "cmdLayerShow3", "contents": "Layer" },
- {"line": "cmdLayerShow4", "contents": "Layer" },
- {"line": "cmdLayerShow5", "contents": "Layer" },
- {"line": "cmdLayerShow6", "contents": "Layer" },
- {"line": "cmdLayerShow7", "contents": "Layer" },
- {"line": "cmdLayerShow8", "contents": "Layer" },
- {"line": "cmdLayerShow9", "contents": "Layer" },
- {"line": "cmdLayerShow10", "contents": "Layer" },
- {"line": "cmdLayerShow11", "contents": "Layer" },
- {"line": "cmdLayerShow12", "contents": "Layer" },
- {"line": "cmdLayerShow13", "contents": "Layer" },
- {"line": "cmdLayerShow14", "contents": "Layer" },
- {"line": "cmdLayerShow15", "contents": "Layer" },
- {"line": "cmdLayerShow16", "contents": "Layer" },
- {"line": "cmdLayerShow17", "contents": "Layer" },
- {"line": "cmdLayerShow18", "contents": "Layer" },
- {"line": "cmdLayerShow19", "contents": "Layer" }
- ]
-}
+{
+ "messages": [
+ {"line": "Help", "contents": "Invokes online help for this dialog" },
+ {"line": "cancel", "contents": "Cancels this command" },
+ {"line": "Close", "contents": "Closes the dialog" },
+ {"line": "cmdAbout", "contents": "About program dialog" },
+ {"line": "cmdAbove", "contents": "Move selected object to top" },
+ {"line": "cmdAddElevations", "contents": "Raise or lower all selected tracks" },
+ {"line": "cmdAngle", "contents": "Show a protractor" },
+ {"line": "cmdMagneticSnap", "contents": "Turn magnetic snap on or off" },
+ {"line": "cmdBackgroundShow", "contents": "Show/Hide Background" },
+ {"line": "cmdBelow", "contents": "Move selected object to bottom" },
+ {"line": "cmdBlockCreate", "contents": "Create a section of track for automation" },
+ {"line": "cmdBlockEdit", "contents": "Edit a block definition " },
+ {"line": "cmdCarDesc", "contents": "Create a new Car/Loco description" },
+ {"line": "cmdCarInventory", "contents": "Manage your Car and Loco Inventory" },
+ {"line": "cmdCircleCenter", "contents": "Create track circle from center" },
+ {"line": "cmdCircleFixedRadius", "contents": "Create fixed radius track circle" },
+ {"line": "cmdCircleSetCmd", "contents": "Set Circle Track creation mode" },
+ {"line": "cmdCircleTangent", "contents": "Create track circle from tangent" },
+ {"line": "cmdClearElevations", "contents": "Removes elevation from Selected tracks" },
+ {"line": "cmdClone", "contents": "Copy objects to clipboard and duplicate them in exactly the same place" },
+ {"line": "cmdCmdopt", "contents": "Command Options dialog" },
+ {"line": "cmdColor", "contents": "Controls colors" },
+ {"line": "cmdConnect", "contents": "Connect two tracks" },
+ {"line": "cmdControl", "contents": "Create a control for layout automation" },
+ {"line": "cmdControlElements", "contents": "Select control element to create" },
+ {"line": "cmdContmgm", "contents": "Manage control elements" },
+ {"line": "cmdConvertSetCmd", "contents": "Set Convert mode" },
+ {"line": "cmdConvertTo", "contents": "Convert from Fixed Track to Cornu" },
+ {"line": "cmdConvertFrom", "contents": "Convert from Cornu and Bezier to Fixed Track" },
+ {"line": "cmdCopy", "contents": "Copy selected objects to clipboard" },
+ {"line": "cmdCornu", "contents": "Create Cornu track" },
+ {"line": "cmdCurveCenter", "contents": "Create curved track from center" },
+ {"line": "cmdCurveChord", "contents": "Create curved track from chord" },
+ {"line": "cmdCurveEndPt", "contents": "Create curved track from end-point" },
+ {"line": "cmdBezier", "contents": "Create Bezier track" },
+ {"line": "cmdCurveSetCmd", "contents": "Set Curve Track creation mode" },
+ {"line": "cmdCurveTangent", "contents": "Create curved track from tangent" },
+ {"line": "cmdCustmgm", "contents": "Manipulate Custom designer entries" },
+ {"line": "cmdCut", "contents": "Moves selected objects to clipboard" },
+ {"line": "cmdDelete", "contents": "Delete objects" },
+ {"line": "cmdDemo", "contents": "Playback demos" },
+ {"line": "cmdDescribe", "contents": "Change Object Properties" },
+ {"line": "cmdDescribeMode", "contents": "Change to properties mode" },
+ {"line": "cmdDeselectAll", "contents": "Deselect all selected objects" },
+ {"line": "cmdDisplay", "contents": "Change Display parameters" },
+ {"line": "cmdDrawBench", "contents": "Create benchwork" },
+ {"line": "cmdDrawBox", "contents": "Create a box" },
+ {"line": "cmdDrawCircleSetCmd", "contents": "Set Circle drawing command" },
+ {"line": "cmdDrawCircle", "contents": "Create a circle" },
+ {"line": "cmdDrawCircleCenter", "contents": "Draw a circle line from center" },
+ {"line": "cmdDrawCircleFixedRadius", "contents": "Draw a fixed radius circle line" },
+ {"line": "cmdDrawCircleTangent", "contents": "Draw a circle line from tangent" },
+ {"line": "cmdDrawCurveSetCmd", "contents": "Set Curve drawing command" },
+ {"line": "cmdDrawCurve", "contents": "Create a curved line" },
+ {"line": "cmdDrawCurveEndPt", "contents": "Create a curved line from End" },
+ {"line": "cmdDrawCurveCenter", "contents": "Create a curved line from center" },
+ {"line": "cmdDrawCurveChord", "contents": "Create a curved line from chord" },
+ {"line": "cmdDrawCurveTangent", "contents": "Create a curved line from tangent" },
+ {"line": "cmdDrawBezierCurve", "contents": "Create a Bezier line" },
+ {"line": "cmdDrawDimLine", "contents": "Create a dimension line" },
+ {"line": "cmdDrawFilledBox", "contents": "Create a filled box" },
+ {"line": "cmdDrawFilledCurve", "contents": "Create a filled circle" },
+ {"line": "cmdDrawFilledCircleCenter", "contents": "Draw a filled circle from center" },
+ {"line": "cmdDrawFilledCircleFixedRadius", "contents": "Draw a fixed radius filled circle" },
+ {"line": "cmdDrawFilledCircleTangent", "contents": "Draw a filled circle from tangent" },
+ {"line": "cmdDrawPolygon", "contents": "Create a polygon" },
+ {"line": "cmdDrawFilledPolygon", "contents": "Create a filled polygon" },
+ {"line": "cmdDrawPolyline", "contents": "Create a polyline" },
+ {"line": "cmdDrawLine", "contents": "Create a straight line" },
+ {"line": "cmdDrawLineSetCmd", "contents": "Set Line drawing command" },
+ {"line": "cmdDrawShapeSetCmd", "contents": "Set Shape drawing command" },
+ {"line": "cmdDrawTableEdge", "contents": "Draw table edge" },
+ {"line": "cmdEasement", "contents": "Easement menu" },
+ {"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 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" },
+ {"line": "cmdGridEnable", "contents": "Enable snap grid" },
+ {"line": "cmdGridShow", "contents": "Show snap grid" },
+ {"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 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" },
+ {"line": "cmdJoinSetCmd", "contents": "Set Join mode" },
+ {"line": "cmdLayer", "contents": "Change Layers" },
+ {"line": "cmdLayerSet", "contents": "Selects the current drawing layer" },
+ {"line": "cmdLayout", "contents": "Layout parameters" },
+ {"line": "cmdLinkNote", "contents": "Weblink" },
+ {"line": "cmdMapShow", "contents": "Show/Hide Map Window" },
+ {"line": "cmdMeasureSetCmd", "contents": "Select Measurement Tool" },
+ {"line": "cmdModify", "contents": "Modify or extend a track" },
+ {"line": "cmdModifyMode", "contents": "Change To modify mode" },
+ {"line": "cmdMove", "contents": "Move selected objects" },
+ {"line": "cmdMoveLabel", "contents": "Move a label" },
+ {"line": "cmdMoveToCurrentLayer", "contents": "Move selected objects to current layer" },
+ {"line": "cmdNote", "contents": "Place a note on the layout" },
+ {"line": "cmdOutputbitmap", "contents": "Print a bitmap" },
+ {"line": "cmdPan", "contents": "Pan or zoom the layout" },
+ {"line": "cmdPanMode", "contents": "Change to zoom/pan mode" },
+ {"line": "cmdParallelTrack", "contents": "Create a parallel track" },
+ {"line": "cmdParallelLine", "contents": "Create a parallel line" },
+ {"line": "cmdParallelSetCmd", "contents": "Set Parallel mode" },
+ {"line": "cmdParameter", "contents": "Register" },
+ {"line": "cmdPaste", "contents": "Copy objects from clipboard" },
+ {"line": "cmdPref", "contents": "Perferences dialog" },
+ {"line": "cmdPricelist", "contents": "Display prices of turnouts, sectional tracks and structures" },
+ {"line": "cmdPrint", "contents": "Print the layout" },
+ {"line": "cmdPrmfile", "contents": "Loads and unloads parameter files into/from toolbar" },
+ {"line": "cmdProfile", "contents": "Elevation Profile Command" },
+ {"line": "cmdProfileDraw", "contents": "Profile" },
+ {"line": "cmdRecord", "contents": "Command recorder" },
+ {"line": "cmdRedo", "contents": "Redo last undo" },
+ {"line": "cmdRefreshCompound", "contents": "Update selected Turnout and Structure definitions" },
+ {"line": "cmdRescale", "contents": "Rescale selected objects" },
+ {"line": "cmdRotate", "contents": "Rotate selected object(s)" },
+ {"line": "cmdRuler", "contents": "Show a ruler" },
+ {"line": "cmdSelect", "contents": "Select objects" },
+ {"line": "cmdSelectMode", "contents": "Change To Select Mode" },
+ {"line": "cmdSelectAll", "contents": "Selects all objects on the layout" },
+ {"line": "cmdSelectCurrentLayer", "contents": "Selects all objects in the current Layer" },
+ {"line": "cmdSelectIndex", "contents": "Choose objects by Index number" },
+ {"line": "cmdSelectInvert", "contents": "Invert current selection" },
+ {"line": "cmdSetup", "contents": "Configure the Printer" },
+ {"line": "cmdSplitSetCmd", "contents": "Set Split mode" },
+ {"line": "cmdSplitTrack", "contents": "Split a track" },
+ {"line": "cmdSplitDraw", "contents": "Split a straight, curved, circle, polygon or polyline Draw Object " },
+ {"line": "cmdSelectOrphaned", "contents": "Select stranded (unconnected) track pieces" },
+ {"line": "cmdSensor", "contents": "Create a sensor (ie. a occupancy detector or a toggle switch)" },
+ {"line": "cmdSignal", "contents": "Create a signal for train control" },
+ {"line": "cmdSticky", "contents": "Choose which commands are sticky" },
+ {"line": "cmdStraight", "contents": "Create straight track" },
+ {"line": "cmdStructure", "contents": "Place a structure on the layout" },
+ {"line": "cmdSwitchMotorCreate", "contents": "Create a switchmotor for turnout control" },
+ {"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": "Text Note"},
+ {"line": "cmdTip", "contents": "Tip of the Day window" },
+ {"line": "cmdTrain", "contents": "Run Trains" },
+ {"line": "cmdTrainMode", "contents": "Change To Run Trains Mode" },
+ {"line": "cmdTrainPause", "contents": "Pause/Resume Trains" },
+ {"line": "cmdTrainNewCar", "contents": "Place a car on the layout" },
+ {"line": "cmdTrainExit", "contents": "Exit Trains" },
+ {"line": "cmdTrimDraw", "contents": "Trim a line, circle or polyline Draw Object using a second Object" },
+ {"line": "cmdTunnel", "contents": "Hide/Unhide a track" },
+ {"line": "cmdBridge", "contents": "Make/Unmake a track a bridge" },
+ {"line": "cmdTurnout", "contents": "Place a turnout or sectional track" },
+ {"line": "cmdTurnoutNew", "contents": "Create a new turnout definition" },
+ {"line": "cmdTurntable", "contents": "Place a turntable" },
+ {"line": "cmdUpdatetitle", "contents": "Updates old source files with 3 part titles" },
+ {"line": "cmdUndo", "contents": "Undo last command" },
+ {"line": "cmdUngroup", "contents": "Ungroup objects" },
+ {"line": "cmdWidth0", "contents": "Draw tracks with thin lines" },
+ {"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" },
+ {"line": "cornuMod-endangle", "contents": "End Angle" },
+ {"line": "cornuMod-endradius", "contents": "End Radius" },
+ {"line": "curvefixed", "contents": "Curved Fixed" },
+ {"line": "curvefixed-radius", "contents": "Preferred Radius" },
+ {"line": "drawMod", "contents": "Modify Draw" },
+ {"line": "drawMod-Angle", "contents": "Angle" },
+ {"line": "drawMod-ArcAngle", "contents": "Arc Angle" },
+ {"line": "drawMod-Height", "contents": "Height" },
+ {"line": "drawMod-Length", "contents": "Length" },
+ {"line": "drawMod-Radius", "contents": "Radius" },
+ {"line": "drawMod-RelAngle", "contents": "Relative Angle" },
+ {"line": "drawMod-RotAngle", "contents": "Rotation Angle" },
+ {"line": "drawMod-RotCenterx", "contents": "Rot Center X" },
+ {"line": "drawMod-RotCentery", "contents": "Rot Center Y" },
+ {"line": "drawMod-Width", "contents": "Width" },
+ {"line": "menuFile", "contents": "File Menu" },
+ {"line": "menuFile-save", "contents": "Save layout" },
+ {"line": "menuFile-saveAs", "contents": "Save layout under a new name " },
+ {"line": "menuFile-clear", "contents": "New layout" },
+ {"line": "menuFile-enum", "contents": "Generate parts list" },
+ {"line": "menuFile-load", "contents": "Load a layout" },
+ {"line": "menuFile-parameter", "contents": "Manage Parameter Files" },
+ {"line": "menuFile-print", "contents": "Print layout" },
+ {"line": "menuFile-quit", "contents": "Exit the program" },
+ {"line": "menuFile-revert", "contents": "Revert to last saved state of layout plan" },
+ {"line": "menuFile-setup", "contents": "Printer Setup" },
+ {"line": "editM", "contents": "Edit menu" },
+ {"line": "menuEdit-redraw", "contents": "Redraw layout" },
+ {"line": "menuEdit-zoomIn", "contents": "Zoom in" },
+ {"line": "menuEdit-zoomOut", "contents": "Zoom out" },
+ {"line": "toolsM", "contents": "Tools menu" },
+ {"line": "menuView", "contents": "View menu" },
+ {"line": "menuToolbar", "contents": "Toolbar configuration" },
+ {"line": "menuTools", "contents": "Tools menu" },
+ {"line": "menuOption", "contents": "Options menu" },
+ {"line": "menuMacro", "contents": "Playback/Record commands" },
+ {"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" },
+ {"line": "infoBarPosX", "contents": "X Position of cursor" },
+ {"line": "infoBarPosY", "contents": "Y Position of cursor" },
+ {"line": "infoBarScale", "contents": "Drawing scale" },
+ {"line": "infoBarStatus", "contents": "Message and status line" },
+ {"line": "main-draw", "contents": "Main layout canvas" },
+ {"line": "mainDraw", "contents": "Main layout canvas" },
+ {"line": "main-canvas", "contents": "Main drawing canvas" },
+ {"line": "main-commandbar", "contents": "Command buttons" },
+ {"line": "main-menubar", "contents": "Menus" },
+ {"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" },
+ {"line": "map-hilight", "contents": "This is the portion of the layout shown in the Main Window canvas" },
+ {"line": "addElev-value", "contents": "Raise or Lower all Selected Track" },
+ {"line": "block-name", "contents": "Name of block" },
+ {"line": "block-script", "contents": "Script that the block will run" },
+ {"line": "block-segments", "contents": "List of tracks in the Block" },
+ {"line": "carpart-ok", "contents": "Add or Update car object" },
+ {"line": "carpart-manuf", "contents": "Manufacturer name" },
+ {"line": "carpart-prototype", "contents": "Car Prototype" },
+ {"line": "carpart-prototype-list", "contents": "Car Prototype" },
+ {"line": "carpart-isLoco", "contents": "Is the Car a Locomotive?" },
+ {"line": "carpart-partno-list", "contents": "Part Number and Description" },
+ {"line": "carpart-partno", "contents": "Manufacturer Part Number" },
+ {"line": "carpart-import", "contents": "Use the Selected figure as the car image" },
+ {"line": "carpart-reset", "contents": "Use the default figure as the car image" },
+ {"line": "carpart-desc", "contents": "Optional description of the Car Part" },
+ {"line": "carpart-flip", "contents": "Flip car image" },
+ {"line": "carpart-dispmode", "contents": "Display Car Item information or reporting marks and dimensions" },
+ {"line": "carpart-road", "contents": "Full Roadname" },
+ {"line": "carpart-type", "contents": "Car Type" },
+ {"line": "carpart-protokind-list", "contents": "Car Type" },
+ {"line": "carpart-repmark", "contents": "Reporting Marks (Roadname abbreviation)" },
+ {"line": "carpart-number", "contents": "Car Number" },
+ {"line": "carpart-bodyColor", "contents": "Car body Color" },
+ {"line": "carpart-carLength", "contents": "Length of car body" },
+ {"line": "carpart-carWidth", "contents": "Width of car body" },
+ {"line": "carpart-trkCenter", "contents": "Distance between Trucks " },
+ {"line": "carpart-trkCenterOffset", "contents": "Distance Trucks are displaced along Car" },
+ {"line": "carpart-cplrMount", "contents": "Coupler are mounted on body or truck" },
+ {"line": "carpart-cpldLen", "contents": "Overall Coupled Length" },
+ {"line": "carpart-cplrLen", "contents": "Coupler Length from end of car" },
+ {"line": "carpart-canvas", "contents": "Diagram of Car" },
+ {"line": "carpart-index", "contents": "Item Index Number" },
+ {"line": "carpart-purchPrice", "contents": "Original Purchase Price" },
+ {"line": "carpart-currPrice", "contents": "Current Price" },
+ {"line": "carpart-condition", "contents": "Condition of car" },
+ {"line": "carpart-purchDate", "contents": "Original Purchase Date - yyyymmdd" },
+ {"line": "carpart-serviceDate", "contents": "Last Service Date - yyyymmdd" },
+ {"line": "carpart-quantity", "contents": "Number of identical cars to be entered" },
+ {"line": "carpart-multinum", "contents": "Do all the cars have the same Number?" },
+ {"line": "carpart-notes", "contents": "Notes about the car" },
+ {"line": "carpart-new", "contents": "Create a new car Part or Prototype definitions" },
+ {"line": "carpart-new-menu", "contents": "Create a new car Part or Prototype definitions" },
+ {"line": "carinv-ok", "contents": "Finds the selected Car Item on the layout" },
+ {"line": "carinv-sort1", "contents": "Sort the Item list" },
+ {"line": "carinv-sort2", "contents": "Sort the Item list" },
+ {"line": "carinv-sort3", "contents": "Sort the Item list" },
+ {"line": "carinv-sort4", "contents": "Sort the Item list" },
+ {"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 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" },
+ {"line": "circle-radius", "contents": "Specifies the radius of the circle track" },
+ {"line": "cmdopt-preselect", "contents": "Default command is Describe or Select" },
+ {"line": "cmdopt-rightclickmode", "contents": "Action to invoke on Right-Click" },
+ {"line": "cmdopt-selectmode", "contents": "Replace current selection with clicked object or add clicked object to selection" },
+ {"line": "cmdopt-selectzero", "contents": "Clicking into an empty area clears selection if select mode is <add>" },
+ {"line": "cmdopt-ok", "contents": "" },
+ {"line": "contmgm-inx", "contents": "The list of control elements" },
+ {"line": "contmgm-edit", "contents": "Edit the element" },
+ {"line": "contmgm-delete", "contents": "Delete the element" },
+ {"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": "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-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" },
+ {"line": "demo-quit", "contents": "Stops the demonstration and returns you to XTrackCAD" },
+ {"line": "demo-speed", "contents": "Select speed of Playback" },
+ {"line": "demo-text", "contents": "This is where comments about the demo are displayed" },
+ {"line": "describe-F1", "contents": "" },
+ {"line": "describe-F2", "contents": "" },
+ {"line": "describe-F3", "contents": "" },
+ {"line": "describe-F4", "contents": "" },
+ {"line": "describe-F5", "contents": "" },
+ {"line": "describe-F6", "contents": "" },
+ {"line": "describe-F7", "contents": "" },
+ {"line": "describe-F8", "contents": "" },
+ {"line": "describe-F9", "contents": "" },
+ {"line": "describe-F10", "contents": "" },
+ {"line": "describe-F11", "contents": "" },
+ {"line": "describe-F12", "contents": "" },
+ {"line": "describe-F13", "contents": "" },
+ {"line": "describe-F14", "contents": "" },
+ {"line": "describe-F15", "contents": "" },
+ {"line": "describe-F16", "contents": "" },
+ {"line": "describe-F17", "contents": "" },
+ {"line": "describe-F18", "contents": "" },
+ {"line": "describe-F19", "contents": "" },
+ {"line": "describe-F20", "contents": "" },
+ {"line": "describe-I1", "contents": "" },
+ {"line": "describe-I2", "contents": "" },
+ {"line": "describe-I3", "contents": "" },
+ {"line": "describe-I4", "contents": "" },
+ {"line": "describe-I5", "contents": "" },
+ {"line": "describe-S1", "contents": "" },
+ {"line": "describe-S2", "contents": "" },
+ {"line": "describe-S3", "contents": "" },
+ {"line": "describe-S4", "contents": "" },
+ {"line": "describe-Y1", "contents": "" },
+ {"line": "describe-C1", "contents": "" },
+ {"line": "describe-L1", "contents": "" },
+ {"line": "describe-L2", "contents": "" },
+ {"line": "describe-LE1", "contents": "" },
+ {"line": "describe-T1", "contents": "" },
+ {"line": "describe-P1", "contents": "" },
+ {"line": "display-autoPan", "contents": "Move the Main canvas if you drag near the edge" },
+ {"line": "display-color-track", "contents": "Color tracks by layer or individually" },
+ {"line": "display-color-draw", "contents": "Color draw objects by layer or individually" },
+ {"line": "display-tunnels", "contents": "Controls the drawing of hidden tracks" },
+ {"line": "display-endpt", "contents": "Controls the drawing of End-Points" },
+ {"line": "display-tiedraw", "contents": "How to draw track ties" },
+ {"line": "display-centerdraw", "contents": "Show crosshair at center of curves" },
+ {"line": "display-tworailscale", "contents": "Drawing scale when to draw tracks with 2 rails" },
+ {"line": "display-mapscale", "contents": "Drawing scale of the map window" },
+ {"line": "display-livemap", "contents": "Whether the main layout is updated while dragging on the Map" },
+ {"line": "display-labelenable", "contents": "Enable labels for Turnouts, Flextrack Lengths and Elevations" },
+ {"line": "display-labelscale", "contents": "When to label Turnout, Flextrack Lengths and Elevations" },
+ {"line": "display-description-fontsize", "contents": "Font size for labels on layout" },
+ {"line": "display-hotbarlabels", "contents": "Label elements on the Hot Bar" },
+ {"line": "display-layoutlabels", "contents": "Label elements on layout" },
+ {"line": "display-listlabels", "contents": "Label elements for lists" },
+ {"line": "display-carhotbarlabels", "contents": "How to group cars on the Train Hot Bar" },
+ {"line": "display-trainpause", "contents": "Delay (in mS) between updating train movements" },
+ {"line": "display-hideTrainsInTunnels", "contents": "Don't show trains in tunnels when tunnels are hidden" },
+ {"line": "display-unconnected-endpt", "contents": "Display unconnected endpoints of track with special marks" },
+ {"line": "display-constrainmain", "contents": "Whether the Main Drawing Area shows as much of the room as possible" },
+ {"line": "display-donthidecursor", "contents": "Don't hide system cursor when program cursors are showing" },
+ {"line": "display-ok", "contents": "" },
+ {"line": "draw-linewidth", "contents": "Width of the lines" },
+ {"line": "draw-linecolor", "contents": "Color of the lines" },
+ {"line": "draw-benchlist", "contents": "List of types of Lumber" },
+ {"line": "draw-benchcolor", "contents": "Color of Benchwork" },
+ {"line": "draw-benchorient", "contents": "Orientation of Benchwork" },
+ {"line": "draw-arrowsize", "contents": "Size of Dimension Arrows" },
+ {"line": "draw-width", "contents": "Width of Box" },
+ {"line": "draw-height", "contents": "Height of Box" },
+ {"line": "draw-angle", "contents": "Angle of Line" },
+ {"line": "draw-radius", "contents": "Radius of Curve" },
+ {"line": "draw-type", "contents": "Line Type" },
+ {"line": "easement-val", "contents": "This controls the sharpness of the easement curve" },
+ {"line": "easement-r", "contents": "Minimum radius" },
+ {"line": "easement-x", "contents": "Maximum offset" },
+ {"line": "easement-l", "contents": "Easement length" },
+ {"line": "easement-radio", "contents": "These radio buttons are a short-cut for Values of 0.0, 0.5, 1.0 and 2.0. None turns Easements off" },
+ {"line": "easement-ok", "contents": "Complete easement selection" },
+ {"line": "elev-mode", "contents": "Type of elevation" },
+ {"line": "elev-value", "contents": "Height of End Point" },
+ {"line": "elev-computed", "contents": "Compute elevation based on neighbors" },
+ {"line": "elev-grade", "contents": "Compute grade based on neighbors" },
+ {"line": "elev-station", "contents": "Specify a name for an End-Point" },
+ {"line": "elev-ok", "contents": "" },
+ {"line": "enum-print", "contents": "Print parts list" },
+ {"line": "enum-printsetup", "contents": "Invoke the Print Setup dialog" },
+ {"line": "enum-save", "contents": "Save parts list to file" },
+ {"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" },
+ {"line": "grid-vertspacing", "contents": "Spacing between major grid lines" },
+ {"line": "grid-vertdivision", "contents": "Allows the spacing to be subdivided" },
+ {"line": "grid-vertenable", "contents": "Specifies if positions are snaped in this direction" },
+ {"line": "grid-origx", "contents": "Shows the origin and angle of the grid" },
+ {"line": "grid-origy", "contents": "Shows the origin and angle of the grid" },
+ {"line": "grid-origa", "contents": "Shows the origin and angle of the grid" },
+ {"line": "grid-show", "contents": "Specifies if the grid is shown" },
+ {"line": "grid-ok", "contents": "Completes the grid specification" },
+ {"line": "group-manuf", "contents": "Manufacturer" },
+ {"line": "group-desc", "contents": "Description" },
+ {"line": "group-partno", "contents": "Part Number" },
+ {"line": "group-segcnt", "contents": "Number of segments in Group" },
+ {"line": "group-replace", "contents": "Replace the Selected object with the new definition?" },
+ {"line": "group-ok", "contents": "Creates a new Structure (or Turnout)" },
+ {"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 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-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-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-ok", "contents": "" },
+ {"line": "layer-reset", "contents": "Load layer configuration from default" },
+ {"line": "layer-save", "contents": "Save current layer configuration as default" },
+ {"line": "layer-clear", "contents": "Overwrite layer configuration with system default values" },
+ {"line": "layout-roomsizeX", "contents": "Specifies the size of the room (in inches or centimeters)" },
+ {"line": "layout-roomsizeY", "contents": "Specifies the size of the room (in inches or centimeters)" },
+ {"line": "layout-title1", "contents": "Specifies the layout Title that will appear on printouts" },
+ {"line": "layout-title2", "contents": "Specifies the layout Subtitle that will appear on printouts" },
+ {"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 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" },
+ {"line": "layout-backgroundposY", "contents": "Specifies the y offset of the bottom left of the background image" },
+ {"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": "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": "" },
+ {"line": "outputbitmap-density", "contents": "Specifies number of pixels per inch (or centimeter)" },
+ {"line": "outputbitmap-ok", "contents": "" },
+ {"line": "outputbitmap-toggles", "contents": "Specifies whether Layout Titles, Borders or Track Centerlines are printed on the BitMap" },
+ {"line": "parallel-separation", "contents": "Specifies the separation between the original track and the parallel track/line" },
+ {"line": "parallel-factor", "contents": "Specifies the a factor that increases the seperation as the radius of the original track reduces. 0.0 means no increase." },
+ {"line": "parameter-name", "contents": "Enter your name as specified in the XTrackCAD Registration Notice" },
+ {"line": "parameter-key", "contents": "Enter the key value as specified in the XTrackCAD Registration Notice" },
+ {"line": "parameter-ok", "contents": "Validates the name and key. Terminates the registration command" },
+ {"line": "pref-anglesystem", "contents": "0 degrees is up or to the right" },
+ {"line": "pref-units", "contents": "Choose english (inches) or metric (centimeters)" },
+ {"line": "pref-dstfmt", "contents": "How to display length measurements" },
+ {"line": "pref-minlength", "contents": "Do not create tracks to be shorter than this value" },
+ {"line": "pref-connectdistance", "contents": "Maximum distance between connected end points" },
+ {"line": "pref-connectangle", "contents": "Minimum angle between connected End-Points" },
+ {"line": "pref-turntable-angle", "contents": "Specifies the minimum angle between tracks connected to a turntable" },
+ {"line": "pref-coupling-speed-max", "contents": "Trains will crash above this speed" },
+ {"line": "pref-balloonhelp", "contents": "Enable/Disable balloon popup help windows" },
+ {"line": "pref-showflextrack", "contents": "Enable/Disable show of flextrack on hotbar" },
+ {"line": "pref-dragpixels", "contents": "How far you can move the mouse before its considered a drag" },
+ {"line": "pref-dragtimeout", "contents": "How long you can hold a mouse button down before its considered a drag" },
+ {"line": "pref-mingridspacing", "contents": "Minimum distance (in pixels) between grid lines/ticks" },
+ {"line": "pref-checkpoint", "contents": "Specifies the Check Point frequency; number of modifications made since the last checkpoint." },
+ {"line": "pref-autosave", "contents": "Specifies the number of checkpoints after save before auto-saving." },
+ {"line": "pref-onstartup", "contents": "Resume work on last layout or start with new layout" },
+ {"line": "pref-ok", "contents": "" },
+ {"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": "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" },
+ {"line": "print-scale", "contents": "Controls the reduction (scale) of the printout" },
+ {"line": "print-pagew", "contents": "Scaled page width (Scale times physical page width)" },
+ {"line": "print-max", "contents": "Sets page size to the maximum (based on scale and physical page size)" },
+ {"line": "print-pageh", "contents": "Scaled page height (Scale times physical page height)" },
+ {"line": "print-snapshot", "contents": "Sets scale, origin and angle for a one page printout of the layout" },
+ {"line": "print-format", "contents": "Print page in Portrait or Landscape format" },
+ {"line": "print-order", "contents": "Order of printing pages" },
+ {"line": "print-style", "contents": "Print Title, Date, Author and other information at bottom of page?" },
+ {"line": "print-physsize", "contents": "Ignore unprintable page margins?" },
+ {"line": "print-registrationMarks", "contents": "Print Registration Marks at 1:1?" },
+ {"line": "print-grid", "contents": "Print Snap Grid?" },
+ {"line": "print-ruler", "contents": "Print Rulers at the layout edge only, or on all page edges, or nowhere?" },
+ {"line": "print-roadbed", "contents": "Print Roadbed Outline?" },
+ {"line": "print-roadbedWidth", "contents": "Print Roadbed Outline" },
+ {"line": "print-origx", "contents": "Origin of the print grid. This is useful if you want to reprint a set of pages" },
+ {"line": "print-origy", "contents": "Origin of the print grid. This is useful if you want to reprint a set of pages" },
+ {"line": "print-reset", "contents": "Resets the origin and angle to 0" },
+ {"line": "print-origa", "contents": "Origin of the print grid. This is useful if you want to reprint a set of pages" },
+ {"line": "print-clear", "contents": "Deselects all pages" },
+ {"line": "print-setup", "contents": "Invoke the Print Setup dialog" },
+ {"line": "print-ok", "contents": "Print selected pages and terminates the print command" },
+ {"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-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-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" },
+ {"line": "profile-ok", "contents": "" },
+ {"line": "record-stop", "contents": "Stop recording" },
+ {"line": "record-message", "contents": "Insert a message" },
+ {"line": "record-end", "contents": "End a message" },
+ {"line": "record-text", "contents": "Message body" },
+ {"line": "refreshSpecial-list", "contents": "Possible turnouts" },
+ {"line": "refreshSpecial-skip", "contents": "Skip this turnout" },
+ {"line": "refreshSpecial-ok", "contents": "" },
+ {"line": "rename-manuf", "contents": "Manufacturer of Object" },
+ {"line": "rename-desc", "contents": "Description of Object" },
+ {"line": "rename-partno", "contents": "Part Nuber of Object" },
+ {"line": "rename-ok", "contents": "" },
+ {"line": "rescale-toggle", "contents": "Rescale by Scale Conversion or by Ratio" },
+ {"line": "rescale-fromS", "contents": "Original Scale of the selected objects" },
+ {"line": "rescale-fromG", "contents": "Original Gauge of the selected objects" },
+ {"line": "rescale-toS", "contents": "New Scale of the selected objects" },
+ {"line": "rescale-toG", "contents": "New Gauge of the selected objects" },
+ {"line": "rescale-change-dim", "contents": "Change track dimensions to new scale" },
+ {"line": "rescale-ratio", "contents": "Change size by this amount" },
+ {"line": "rescale-ok", "contents": "" },
+ {"line": "rgbcolor-snapgrid", "contents": "Snap Grid Line and Division" },
+ {"line": "rgbcolor-marker", "contents": "X and Y position markers" },
+ {"line": "rgbcolor-border", "contents": "Border rulers, room boundaries and table edges" },
+ {"line": "rgbcolor-crossmajor", "contents": "Primary Axis of grid rotation" },
+ {"line": "rgbcolor-crossminor", "contents": "Secondary Axis of grid rotation" },
+ {"line": "rgbcolor-normal", "contents": "Unselected tracks" },
+ {"line": "rgbcolor-selected", "contents": "Selected tracks" },
+ {"line": "rgbcolor-profile", "contents": "Color of tracks on the Profile path" },
+ {"line": "rgbcolor-exception", "contents": "Color of Exceptional tracks" },
+ {"line": "rgbcolor-tie", "contents": "Color of track ties" },
+ {"line": "rgbcolor-ok", "contents": "Updates the colors" },
+ {"line": "rotate-rotate", "contents": "Angle in degrees" },
+ {"line": "rotate-ok", "contents": "Rotate object(s) by specified amount" },
+ {"line": "searchgui-query", "contents": "Enter one or more words as search terms" },
+ {"line": "searchgui-clearfilter", "contents": "Remove the current filter and show all files" },
+ {"line": "searchgui-find", "contents": "Find matching file descriptions" },
+ {"line": "searchgui-inx", "contents": "Search results" },
+ {"line": "searchgui-mode", "contents": "Show descriptions or filenames in results" },
+ {"line": "searchgui-fit", "contents": "Select how well the definitions must fit the current layout scale"},
+ {"line": "searchgui-apply", "contents": "Add selected entries into parameter file list" },
+ {"line": "searchgui-selectall", "contents": "Select All found entries" },
+ {"line": "searchgui-default", "contents": "Reload the system library contents for finding" },
+ {"line": "sticky-set", "contents": "Choose commands to be sticky" },
+ {"line": "sticky-ok", "contents": "Make the commands sticky" },
+ {"line": "structure-list", "contents": "List of available structure" },
+ {"line": "structure-canvas", "contents": "Diagram of the selected structure" },
+ {"line": "structure-hide", "contents": "Hide Selection window when placing Structure" },
+ {"line": "structure-stats", "contents": "Drawing scale and size" },
+ {"line": "structure-ok", "contents": "Complete structure placement" },
+ {"line": "structure-pier-inx", "contents": "Choose a Pier number" },
+ {"line": "switchmotor-name", "contents": "Name of the Motor" },
+ {"line": "switchmotor-normal", "contents": "Value when switch is normal" },
+ {"line": "switchmotor-reverse", "contents": "Value when the switch is reversed" },
+ {"line": "switchmotor-pointSense", "contents": "Value for a positive comfirmation of switch position" },
+ {"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": "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" },
+ {"line": "train-distance", "contents": "Train odometer" },
+ {"line": "train-zeroDistance", "contents": "Reset odometer to 0" },
+ {"line": "train-goto", "contents": "Find train on layout" },
+ {"line": "train-follow", "contents": "Follow train around layout" },
+ {"line": "train-autoreverse", "contents": "Flip direction at End Of Track" },
+ {"line": "train-direction", "contents": "Change direction of train" },
+ {"line": "train-stop", "contents": "Stop the train" },
+ {"line": "turnout-list", "contents": "List of available turnouts for the current scale" },
+ {"line": "turnout-canvas", "contents": "Diagram of the currently selected turnout. Click on a End-Point to select the Active End-Point" },
+ {"line": "turnout-new", "contents": "A menu list of various type of turnouts and sectional tracks you can define" },
+ {"line": "turnout-hide", "contents": "Hide Selection window when placing Turnout" },
+ {"line": "turnout-activeEndPoint", "contents": "The selected Active End-Point" },
+ {"line": "turnout-current", "contents": "Current selected turnout, (displayed in the diagram window)" },
+ {"line": "turnout-endPoint", "contents": "One the End-Points that can be selected" },
+ {"line": "turnout-ok", "contents": "" },
+ {"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": "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" },
+ {"line": "turnoutNew-len2", "contents": "Length from the base to the end of the specified track" },
+ {"line": "turnoutNew-manuf", "contents": "Manufacturer" },
+ {"line": "turnoutNew-off1", "contents": "Offset of the track End-Point from the center line of the turnout" },
+ {"line": "turnoutNew-off2", "contents": "Offset of the track End-Point from the center line of the turnout" },
+ {"line": "turnoutNew-partno1", "contents": "Part Number" },
+ {"line": "turnoutNew-partno2", "contents": "Part Number" },
+ {"line": "turnoutNew-print", "contents": "Prints a full size diagram of the turnout for checking" },
+ {"line": "turnoutNew-ok", "contents": "Prints a full size diagram of the turnout for checking" },
+ {"line": "turnoutNew-color", "contents": "Color of Roadbed lines" },
+ {"line": "turnoutNew-roadbedLineWidth", "contents": "Width of Roadbed lines" },
+ {"line": "turnoutNew-roadbedWidth", "contents": "Width of Roadbed" },
+ {"line": "turnoutNew-printsetup", "contents": "Invoke the Print Setup dialog" },
+ {"line": "turnoutNew-done", "contents": "Closes the window and returns to the Turnout Selection window" },
+ {"line": "turntable-diameter", "contents": "Specifies the diameter of the turntable" },
+ {"line": "updatetitle-old", "contents": "Old Turnout title" },
+ {"line": "updatetitle-sel", "contents": "List of available titles" },
+ {"line": "updatetitle-ignore", "contents": "Leave the Turnouts' title unchanged" },
+ {"line": "updatetitle-load", "contents": "Invoke the Parameter Files dialog" },
+ {"line": "updatetitle-list", "contents": "List of available turnouts" },
+ {"line": "updatetitle-ok", "contents": "Update the Turnouts' title" },
+ {"line": "fontSelCancel", "contents": "Cancel" },
+ {"line": "fontSelList", "contents": "List" },
+ {"line": "fontSelOk", "contents": "Ok" },
+ {"line": "fontSelSample", "contents": "Sample" },
+ {"line": "fontSelSize", "contents": "Size" },
+ {"line": "fontSelSlant", "contents": "Slant" },
+ {"line": "fontSelW", "contents": "Font selection dialog" },
+ {"line": "fontSelWeight", "contents": "Weight" },
+ {"line": "printAbortW", "contents": "Printer Abort Window" },
+ {"line": "printFileName", "contents": "Print to filename" },
+ {"line": "printFontAlias", "contents": "Specify Postscript font alias mapping" },
+ {"line": "printSetup", "contents": "Displays the Print Setup window to change printers, orientation, paper size, etc." },
+ {"line": "printSetupCancel", "contents": "Closes this dialog" },
+ {"line": "printSetupFormat", "contents": "Page orientation" },
+ {"line": "printSetupMargin", "contents": "Unprintable margins" },
+ {"line": "printSetupOk", "contents": "Updates and closes this dialog" },
+ {"line": "printSetupPaper", "contents": "Choose paper size" },
+ {"line": "printSetupPrinter", "contents": "Choose printer" },
+ {"line": "printSetupTest", "contents": "Print test page" },
+ {"line": "about", "contents": "No Help" },
+ {"line": "about-about", "contents": "No Help" },
+ {"line": "about-ok", "contents": "" },
+ {"line": "cmdDebug", "contents": "No Help" },
+ {"line": "loosen", "contents": "No Help" },
+ {"line": "misc-cur-turnout-ep", "contents": "" },
+ {"line": "misc-toolbarset", "contents": "No Help" },
+ {"line": "misc-showlayout", "contents": "No Help" },
+ {"line": "misc-showdisplay", "contents": "No Help" },
+ {"line": "misc-showcmdopt", "contents": "No Help" },
+ {"line": "misc-showeasement", "contents": "No Help" },
+ {"line": "misc-showfontSel", "contents": "No Help" },
+ {"line": "misc-showgrid", "contents": "No Help" },
+ {"line": "misc-showdebug", "contents": "No Help" },
+ {"line": "misc-sticky", "contents": "No Help" },
+ {"line": "misc-showpref", "contents": "No Help" },
+ {"line": "misc-showcolor", "contents": "No Help" },
+ {"line": "misc-showfileClear", "contents": "No Help" },
+ {"line": "misc-showparamFile", "contents": "No Help" },
+ {"line": "misc-showpriceList", "contents": "No Help" },
+ {"line": "misc-showprint", "contents": "No Help" },
+ {"line": "misc-showprintSetup", "contents": "No Help" },
+ {"line": "misc-showprintBitmap", "contents": "No Help" },
+ {"line": "misc-showpartsList", "contents": "No Help" },
+ {"line": "misc-shownotes", "contents": "No Help" },
+ {"line": "misc-showundo", "contents": "No Help" },
+ {"line": "misc-showredo", "contents": "No Help" },
+ {"line": "misc-showcut", "contents": "No Help" },
+ {"line": "misc-showcopy", "contents": "No Help" },
+ {"line": "misc-showpaste", "contents": "No Help" },
+ {"line": "misc-showdelete", "contents": "No Help" },
+ {"line": "misc-showtunnel", "contents": "No Help" },
+ {"line": "misc-showabove", "contents": "No Help" },
+ {"line": "misc-showbelow", "contents": "No Help" },
+ {"line": "misc-showwidth0", "contents": "No Help" },
+ {"line": "misc-showwidth2", "contents": "No Help" },
+ {"line": "misc-showwidth3", "contents": "No Help" },
+ {"line": "misc-showrecompelev", "contents": "No Help" },
+ {"line": "misc-showcardesc", "contents": "No Help" },
+ {"line": "misc-showcaradd", "contents": "No Help" },
+ {"line": "misc-showselectAll", "contents": "No Help" },
+ {"line": "misc-showimport", "contents": "No Help" },
+ {"line": "misc-showexport", "contents": "No Help" },
+ {"line": "misc-showexportDXF", "contents": "No Help" },
+ {"line": "misc-showloosen", "contents": "No Help" },
+ {"line": "misc-group-objects", "contents": "No Help" },
+ {"line": "misc-ungroup-objects", "contents": "No Help" },
+ {"line": "misc-showcustomMgm", "contents": "No Help" },
+ {"line": "misc-showlayers", "contents": "No Help" },
+ {"line": "misc-showmoveToCurrentLayer", "contents": "No Help" },
+ {"line": "misc-showselectCurrentLayer", "contents": "No Help" },
+ {"line": "misc-showclearElevations", "contents": "No Help" },
+ {"line": "misc-showaddElevations", "contents": "No Help" },
+ {"line": "debug-Track", "contents": "No Help" },
+ {"line": "debug-EndPt", "contents": "No Help" },
+ {"line": "debug-ReadTracks", "contents": "No Help" },
+ {"line": "debug-Curve", "contents": "No Help" },
+ {"line": "debug-Join", "contents": "No Help" },
+ {"line": "debug-Turnout", "contents": "No Help" },
+ {"line": "debug-Structure", "contents": "No Help" },
+ {"line": "debug-Print", "contents": "No Help" },
+ {"line": "debug-ok", "contents": "" },
+ {"line": "map-canvas", "contents": "No Help" },
+ {"line": "cmdLayerShow0", "contents": "Layer" },
+ {"line": "cmdLayerShow1", "contents": "Layer" },
+ {"line": "cmdLayerShow2", "contents": "Layer" },
+ {"line": "cmdLayerShow3", "contents": "Layer" },
+ {"line": "cmdLayerShow4", "contents": "Layer" },
+ {"line": "cmdLayerShow5", "contents": "Layer" },
+ {"line": "cmdLayerShow6", "contents": "Layer" },
+ {"line": "cmdLayerShow7", "contents": "Layer" },
+ {"line": "cmdLayerShow8", "contents": "Layer" },
+ {"line": "cmdLayerShow9", "contents": "Layer" },
+ {"line": "cmdLayerShow10", "contents": "Layer" },
+ {"line": "cmdLayerShow11", "contents": "Layer" },
+ {"line": "cmdLayerShow12", "contents": "Layer" },
+ {"line": "cmdLayerShow13", "contents": "Layer" },
+ {"line": "cmdLayerShow14", "contents": "Layer" },
+ {"line": "cmdLayerShow15", "contents": "Layer" },
+ {"line": "cmdLayerShow16", "contents": "Layer" },
+ {"line": "cmdLayerShow17", "contents": "Layer" },
+ {"line": "cmdLayerShow18", "contents": "Layer" },
+ {"line": "cmdLayerShow19", "contents": "Layer" }
+ ]
+}
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 f5bb62b..b4c4559 100644
--- a/app/help/messages.in
+++ b/app/help/messages.in
@@ -2,6 +2,13 @@
# Various messages with help. Sorted by message content
############################################################
+# misc.c
+MESSAGE MSG_BETA_NOTICE
+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!
+HELP
+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!
+END
+
# chndldto.c
MESSAGE MSG_CANT_PLACE_FROGPOINTS
A %s cannot be placed on a turnout, circle or helix.
@@ -41,6 +48,13 @@ A large font has been selected. Large fonts (or changing fonts sizes) may take a
Refer to \k{cmdText} for detail.
END
+#cdraw.c
+MESSAGE MSG_TEXT_TOO_LONG
+The entered text was too long for the text object. It was truncated.
+HELP
+Text objects are limited to about 10k characters.
+END
+
# ctodesgn.c
MESSAGE MSG_TODSGN_DESC_NONBLANK
All description fields present in the Turnout
@@ -113,7 +127,7 @@ END
MESSAGE MSG_BITMAP_TOO_LARGE
Bitmap is too large.
HELP
-A Bitmap must be less than 32000 pixels in height or width. Try increasing the DPI (or DPCM) value.
+A Bitmap must be less than 32000 pixels in height or width. Try increasing the DPI (or DPCM) value.
Refer to \k{cmdOutputbitmap} for detail.
END
@@ -145,18 +159,26 @@ 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
MESSAGE MSG_CANNOT_GROUP_TRACK
-Cannot Group selected track.
+Cannot Group selected track type %s.
HELP
-Group objects are formed from Straight, Curved, Turnout or Sectional track. The selected objects include a track which is not one of these. Reselect the objects, including only track segments of these types.
+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.
Refer to \k{cmdGroup} for detail.
END
@@ -226,6 +248,13 @@ You are trying to \f{Join} a section of track with itself. Different tracks must
Refer to \k{cmdJoin} for detail.
END
+#cjoin.c
+MESSAGE MSG_JOIN_NOTBEZIERORCORNU
+Cannot Join Bezier or Cornu track if Easement is not Cornu
+HELP
+You must change the Easement value to Cornu in order to join Bezier or Cornu Tracks
+END
+
# cjoin.c
MESSAGE MSG_SELECTED_TRACKS_PARALLEL
Cannot Join; Selected tracks are parallel.
@@ -267,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
@@ -533,7 +562,7 @@ No Cars are defined for the current scale.
Do you want to use the Car Inventory dialog?
HELP
-No Cars are defined for the current scale. Use the dialog to select cars of the current scale and add them to the \f{Car Inventory}.
+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 \f{Car Inventory}.
Refer to \k{cmdCarinv} for detail.
END
@@ -603,6 +632,20 @@ HELP
The import module function needs an empty layer to work with, but none could be found. Clear a layer and retry.
END
+# dlayer.c
+MESSAGE MSG_NO_UNFROZEN_LAYER
+No layer was found that wasn't frozen. Layer 0 is unfrozen.
+HELP
+There has to be one layer that isn't frozen, Layer 0 will be unfrozen
+END
+
+# dlayer.c
+MESSAGE MSG_NOT_UNFROZEN_LAYER
+The current layer was defined as frozen. It is now unfrozen.
+HELP
+The current layer has to be unfrozen
+END
+
# dcmpnd.c:refreshCompound
MESSAGE MSG_NO_TURNOUTS_AVAILABLE
No %s are available.
@@ -700,16 +743,23 @@ END
# drawgeom.c
MESSAGE MSG_POLY_SHAPES_3_SIDES
-Poly shapes must have at least 3 sides.
+Polygons must have at least 3 nodes.
HELP
-Polygons and Poly Lines must have at least 3 sides. You're attempting to create a Poly shape with only 2 sides by deleting the third.
+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.
END
# drawgeom.c
MESSAGE MSG_POLY_MULTIPLE_SELECTED
Can't delete multiple points at once
HELP
-Polygons and Poly Lines points can only be deleted one at a time.
+Polygons and Poly Lines points can only be deleted one at a time.
+END
+
+# drawgeom.c
+MESSAGE MSG_POLY_NOTHING_SELECTED
+No Point on a Poly shape selected.
+HELP
+Select a Poly shape and a single point in order to be able to delete it.
END
# dcar.c
@@ -731,20 +781,20 @@ HELP
It's not possible to create a Circle or Helix with a radius of 0\u00B0 or less. Specify a positive value in the \f{Radius} field that appears in the Status Bar.
END
-MESSAGE MSG_RADIUS_GTR_10000
+MESSAGE MSG_RADIUS_GTR_10000
Radius must be less than 10000.
HELP
It's not possible to create a Circle or Helix with a radius of 10000\u00B0 or more. Specify a smaller value in the \f{Radius} field.
END
-MESSAGE MSG_RADIUS_TOO_BIG
+MESSAGE MSG_RADIUS_TOO_BIG
The Circle or Helix will not fit within the layouts room parameters (Height and Width).
HELP
The defined circle can not fit within the defined layout parameters. Either specify a smaller value in the \f{Radius} field, or increase the room parameters in the \f{Layout} dialog.
END
#cselect.c
-MESSAGE MSG_RESCALE_TOO_BIG
+MESSAGE MSG_RESCALE_TOO_BIG
Rescaled tracks do not fit within layouts room parameters
(Height and width). The layouts room parameters should be
set to at least %s by %s.
@@ -821,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
@@ -893,7 +963,7 @@ This error occurs when;
\b no structures are available in the structure selection list or;
-\b the scale setting of the layout and \f{Parameter File}s does not match.
+\b the scale setting of the layout and \f{Parameter File}s does not match.
Using the \f{File>Parameter Files} 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 \f{Group} command.
@@ -912,7 +982,7 @@ This error occurs when;
\b no turnouts are available in the turnouts selection list or;
-\b the scale setting of the layout and \f{Parameter File}s does not match.
+\b the scale setting of the layout and \f{Parameter File}s does not match.
Using the \f{File>Parameter Files} 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 \f{Turnout Designer} command.
@@ -928,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.
@@ -957,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
@@ -1063,7 +1148,7 @@ Critical file damaged!
%s is corrupt.
-Please reinstall software.
+Please reinstall software.
HELP
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.
@@ -1072,7 +1157,7 @@ END
# param.c
MESSAGE MSG_ENTERED_STRING_TRUNCATED
-The entered text is too long. Maximum length is %d.
+The entered text is too long. Maximum length is %d.
HELP
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.
END
@@ -1088,7 +1173,7 @@ END
# dbitmap.c
MESSAGE MSG_BITMAP_SIZE_WARNING
-You have specified a large Bitmap.
+You have specified a large bitmap.
Are you sure you want to continue?
HELP
@@ -1097,7 +1182,11 @@ Bitmaps can use a large amount of system resources. They may also take a long ti
Refer to \k{cmdOutputbitmap} for detail.
END
-
+# doption.c
+MESSAGE MSG_ICON_SIZE_RESTART
+Icon Size change will take effect on next program start.
+#NOHELP
+END
############################################################
# Various messages without help or specific origin.
@@ -1105,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
@@ -1124,25 +1213,25 @@ END
# fileio.c
MESSAGE MSG_DIR_OPEN_FAIL
-Cannot open directory: %s
+Cannot open directory: %s
#NOHELP
END
# fileio.c
MESSAGE MSG_NOT_DIR_FAIL
-Path for deletion is not a directory: %s
+Path for deletion is not a directory: %s
#NOHELP
END
# fileio.c
MESSAGE MSG_OPEN_DIR_FAIL
-Open failed for directory: %s
+Open failed for directory: %s
#NOHELP
END
# fileio.c
MESSAGE MSG_ZIP_DIR_ADD_FAIL
-Can't add directory record %s to zip - %s
+Can't add directory record %s to zip - %s
#NOHELP
END
@@ -1196,13 +1285,13 @@ END
# fileio.c
MESSAGE MSG_UNLINK_FAIL
-Unlink failed for: %s
+Unlink failed for: %s
#NOHELP
END
# fileio.c
MESSAGE MSG_RMDIR_FAIL
-Remove Directory failed for: %s
+Remove Directory failed for: %s
#NOHELP
END
@@ -1232,7 +1321,7 @@ END
# fileio.c
MESSAGE MSG_COPY_OPEN_FAIL
-Cannot open file %s
+Cannot open file %s
#NOHELP
END
@@ -1282,7 +1371,7 @@ END
# cgroup.c:doGroup
MESSAGE MSG_CANT_GROUP_BUMPER2
At least one path for the Turnout T%d does not
-terminate on an endpoint. Such a track cannot be grouped.
+terminate on an endpoint. Such a track cannot be grouped.
The track has been unselected.
#NOHELP
END
@@ -1479,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 e07ed7a..7e245c5 100644
--- a/app/i18n/CMakeLists.txt
+++ b/app/i18n/CMakeLists.txt
@@ -1,129 +1,195 @@
-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
fr_FR
pt_BR
+ ru
)
# 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
new file mode 100644
index 0000000..dbe8a4e
--- /dev/null
+++ b/app/i18n/cy_GB.po
@@ -0,0 +1,16042 @@
+# SOME DESCRIPTIVE TITLE.
+# 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
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \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"
+"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: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 "Parhewch"
+
+#: ../bin/cbezier.c:631
+msgid "Select End-Point - Ctrl unlocks end-point"
+msgstr "Dewiswch ddiweddbwynt; +\"ctrl\" yn datgloi pwynt diwedd"
+
+#: ../bin/cbezier.c:633
+msgid "Select End-Point"
+msgstr "Dewiswch ddiweddbwynt"
+
+#: ../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: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: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: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: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:715
+msgid "Bezier Curve Invalid has three co-incident points"
+msgstr "Mae gan gromlin Bezier Annilys dri phwynt cyd-ddigwyddiad"
+
+#: ../bin/cbezier.c:718
+msgid "Bezier is Straight Line"
+msgstr "Mae cromlin Bezier yn llinell syth"
+
+#: ../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:726
+#, c-format
+msgid "Bezier %s : Min Radius=%s Length=%s"
+msgstr "Bezier %s : Radiws lleiaf=%s Hyd=%s"
+
+#: ../bin/cbezier.c:752
+msgid "No unconnected End Point to lock to"
+msgstr "Dim pwynt terfyn digyswllt i gloi iddo"
+
+#: ../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."
+
+#: ../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: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:783
+msgid "Bezier curve is straight line"
+msgstr "Mae cromlin Bezier yn llinell syth."
+
+#: ../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:806
+#, c-format
+msgid "Invalid Bezier Curve has a %s - Adjust"
+msgstr "Mae gan gromlin Bezier annilys %s - Addasu"
+
+#: ../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:818
+msgid "Create Bezier"
+msgstr "Creu Bezier"
+
+#: ../bin/cbezier.c:900
+#, c-format
+msgid "%s picked - now select a Point"
+msgstr "%s wedi'i ddewis - nawr dewis Pwynt"
+
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
+msgid "No changes made"
+msgstr "Ni wnaed unrhyw newidiadau"
+
+#: ../bin/cbezier.c:943
+msgid "Modify Bezier"
+msgstr "Addasu Bezier"
+
+#: ../bin/cbezier.c:957
+msgid "Modify Bezier Complete"
+msgstr "Addasu Bezier yn gyflawn"
+
+#: ../bin/cbezier.c:961
+msgid "Modify Bezier Cancelled"
+msgstr "Addasu Bezier wedi'i ganslo"
+
+#: ../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: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:1131
+msgid "Drag end of first control arm"
+msgstr "Llusgwch ddiwedd y fraich reoli gyntaf"
+
+#: ../bin/cbezier.c:1139
+msgid "Drag end of second control arm"
+msgstr "Llusgwch ddiwedd yr ail fraich reoli"
+
+#: ../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:1231
+msgid "Control Arm 1 is too short, try again"
+msgstr "Mae braich reoli 1 yn rhy fyr. Ceisio eto."
+
+#: ../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: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:124
+msgid "Segments"
+msgstr "Segmentau"
+
+#: ../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: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: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: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:215
+msgid "Change block"
+msgstr "Newid Bloc"
+
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
+#, c-format
+msgid "(%d): Layer=%u %s"
+msgstr "(%d): Haen=%u %s"
+
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
+msgid "Block"
+msgstr "Bloc"
+
+#: ../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:592 ../bin/cblock.c:826
+msgid "Block must have a name!"
+msgstr "rhaid bod enw ar bloc"
+
+#: ../bin/cblock.c:621
+#, fuzzy
+msgid "Block is discontiguous!"
+msgstr "bloc yn amharchus"
+
+#: ../bin/cblock.c:626
+msgid "Create block"
+msgstr "Creu bloc"
+
+#: ../bin/cblock.c:674
+msgid "Non track object skipped!"
+msgstr "Gwrthrych heb fod yn drac"
+
+#: ../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:692
+msgid "Create Block"
+msgstr "Creu Bloc"
+
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
+msgid "Select a track"
+msgstr "Dewiswch drac"
+
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
+msgid "Not a block!"
+msgstr "Ddim yn floc!"
+
+#: ../bin/cblock.c:767
+#, c-format
+msgid "Really delete block %s?"
+msgstr "Mewn gwirionedd dileu bloc %s?"
+
+#: ../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: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:769
+msgid "Delete Block"
+msgstr "Dileu bloc"
+
+#: ../bin/cblock.c:814
+#, c-format
+msgid "Deleting block %s"
+msgstr "Dileu bloc %s nawr"
+
+#: ../bin/cblock.c:830
+msgid "Modify Block"
+msgstr "Addasu bloc"
+
+#: ../bin/cblock.c:863
+msgid "Edit block"
+msgstr "Golygu bloc"
+
+#: ../bin/cblock.c:869
+#, c-format
+msgid "Edit block %d"
+msgstr "Golygu bloc %d"
+
+#: ../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:247
+msgid " FLEX "
+msgstr "FLEX"
+
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
+msgid "First"
+msgstr "Yn gyntaf"
+
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
+msgid "Second"
+msgstr "Ail"
+
+#: ../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"
+
+#: ../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: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:1142
+msgid "Select Point, or Add Point"
+msgstr "Dewis pwynt neu ychwanegu pwynt"
+
+#: ../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:1336
+msgid "Drag out end of Cornu"
+msgstr "Llusgwch ddiwedd Cornu"
+
+#: ../bin/ccornu.c:1338
+msgid "Drag along end of track"
+msgstr "Llusgwch ar hyd diwedd y trac"
+
+#: ../bin/ccornu.c:1340
+msgid "Drag to move"
+msgstr "Llusgwch i symud"
+
+#: ../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:1348
+msgid "Drag to change end radius"
+msgstr "Llusgwch i newid radiws diwedd"
+
+#: ../bin/ccornu.c:1351
+msgid "Drag to change end angle"
+msgstr "Llusgwch i newid ongl ddiwedd"
+
+#: ../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:1380
+msgid "Track can't be split"
+msgstr "Ni ellir rhannu trac"
+
+#: ../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:1460
+msgid "Can't move end inside a turnout"
+msgstr "Can not move end within railway point"
+
+#: ../bin/ccornu.c:1609
+msgid "Can't extend connected Bezier or Cornu"
+msgstr "Ni all ymestyn Bezier neu Cornu cysylltiedig"
+
+#: ../bin/ccornu.c:1690
+#, c-format
+msgid ""
+"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
+msgstr ""
+"Cornu : Radiws lleiaf=%s CyfraddNewidUchafCrymedd/Graddfa=%s Hyd=%s Arc "
+"Troellog=%s"
+
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
+msgid "Helix Already Connected"
+msgstr "Helix eisoes wedi'i gysylltu"
+
+#: ../bin/ccornu.c:1730
+msgid "No Valid end point on that track"
+msgstr "Dim pwynt gorffen dilys ar y trac hwnnw"
+
+#: ../bin/ccornu.c:1735
+msgid "Track is different scale"
+msgstr "Mae trac ar raddfa wahanol"
+
+#: ../bin/ccornu.c:1794
+msgid ""
+"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:1825
+msgid "Cornu has too complex shape - adjust end pts"
+msgstr "Mae gan Cornu siâp rhy gymhleth - newid pwyntiau gorffen"
+
+#: ../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:1844
+msgid "Create Cornu"
+msgstr "Creu Cornu"
+
+#: ../bin/ccornu.c:2037
+msgid "Now Select or Add (+Shift) a Point"
+msgstr "Nawr Dewiswch neu Ychwanegu (+ Shift) Pwynt"
+
+#: ../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:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
+msgid "Modify Cornu"
+msgstr "Addasu Cornu"
+
+#: ../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:2219
+#, c-format
+msgid "Connected Track End Adjust for end %d failed"
+msgstr "Methodd addasiad trac cysylltiedig ar gyfer diwedd %d "
+
+#: ../bin/ccornu.c:2230
+msgid "Modify Cornu Cancelled"
+msgstr "Addasu Cornu wedi'i ganslo"
+
+#: ../bin/ccornu.c:2396
+msgid "Left click - Start Cornu track"
+msgstr "Cliciwch ar y chwith - dechreuwch Trac Cornu"
+
+#: ../bin/ccornu.c:2398
+msgid "Left click - Place Flextrack"
+msgstr "Cliciwch ar y chwith - rhowch drac hyblyg"
+
+#: ../bin/ccornu.c:2401
+msgid "Left click - join with Cornu track"
+msgstr "Cliciwch ar y chwith - ymunwch â thrac Cornu"
+
+#: ../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:2439
+msgid "No valid open endpoint on that track"
+msgstr "Dim pwynt gorffen agored dilys ar y trac hwnnw"
+
+#: ../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:2487
+msgid "No Unconnected Track End there"
+msgstr "Nid oes pen trac digyswllt yno"
+
+#: ../bin/ccornu.c:2498 ../bin/ccornu.c:2523
+msgid "No Valid Track End there"
+msgstr "Dim diwedd trac dilys yno"
+
+#: ../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: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: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:2628
+msgid "Point not on track 1"
+msgstr "Pwyntiwch ddim ar drac 1"
+
+#: ../bin/ccornu.c:2670
+msgid "Pick other end of Cornu"
+msgstr "Dewiswch ben arall Cornu"
+
+#: ../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: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:2941 ../bin/ccornu.c:3166
+msgid "Not on a Track"
+msgstr "Ddim ar drac"
+
+#: ../bin/ccornu.c:2949
+msgid "Select a Track To Convert"
+msgstr "Dewiswch drac i'w drosi"
+
+#: ../bin/ccornu.c:2952
+msgid "Convert all Selected Tracks to Cornu Tracks?"
+msgstr "Trosi pob trac a ddewiswyd yn draciau Cornu?"
+
+#: ../bin/ccornu.c:2958
+msgid "Convert Cornu"
+msgstr "Trosi Cornu"
+
+#: ../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:3118 ../bin/ccornu.c:3241 ../bin/cturnout.c:352
+#: ../bin/paramfilelist.c:113
+msgid "OK"
+msgstr "Iawn"
+
+#: ../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:3176
+msgid "Convert all Selected Tracks to Fixed Tracks?"
+msgstr "Trosi'r holl draciau a ddewiswyd yn draciau sefydlog?"
+
+#: ../bin/ccornu.c:3187
+msgid "Convert Bezier and Cornu"
+msgstr "Trosi Bezier a Cornu"
+
+#: ../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"
+
+#: ../bin/ccornu.c:3269
+msgid "Convert"
+msgstr "Trosi"
+
+#: ../bin/ccornu.c:3270
+msgid "Convert To Cornu"
+msgstr "Trosi i Cornu"
+
+#: ../bin/ccornu.c:3273
+msgid "Convert From Cornu"
+msgstr "Trosi o Cornu"
+
+#: ../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:167
+msgid "Drag from endpoint in direction of curve"
+msgstr "Llusgwch o'r man terfyn i gyfeiriad y gromlin"
+
+#: ../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:174
+msgid "Drag from endpoint to center"
+msgstr "Llusgwch o'r pwynt terfyn i'r canol"
+
+#: ../bin/ccurve.c:178
+msgid "Drag from center to endpoint"
+msgstr "Llusgwch o'r canol i'r diweddbwynt"
+
+#: ../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:243
+msgid "End locked: Drag out curve start"
+msgstr "Diwedd wedi'i gloi. Llusgwch gychwyn cromlin"
+
+#: ../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:245
+msgid "Drag along curve start"
+msgstr "Llusgwch ar hyd cychwyn cromlin"
+
+#: ../bin/ccurve.c:253
+msgid "End locked: Drag out curve center"
+msgstr "Diwedd wedi'i gloi: Llusgwch y ganolfan gromlin"
+
+#: ../bin/ccurve.c:255
+msgid "Drag out curve center"
+msgstr "Llusgwch y ganolfan gromlin"
+
+#: ../bin/ccurve.c:262
+msgid "Drag out from center to endpoint"
+msgstr "Llusgwch allan o'r canol i'r diweddbwynt"
+
+#: ../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:274
+msgid "Drag to other end of chord"
+msgstr "Llusgwch i ben arall y cord"
+
+#: ../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:333
+#, c-format
+msgid "Drag out curve start - Angle=%0.3f"
+msgstr "Llusgwch gychwyn cromlin - Ongl=%0.3f"
+
+#: ../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:341
+#, c-format
+msgid "Drag out center - Radius=%s Angle=%0.3f"
+msgstr "Canol llusgo allan - Radiws=%s Ongl=%0.3f"
+
+#: ../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: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:357
+#, c-format
+msgid "Drag out chord length=%s angle=%0.3f"
+msgstr "Llusgwch hyd cord=%s ongl=%0.3f"
+
+#: ../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: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:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
+msgid "Back"
+msgstr "Yn ôl"
+
+#: ../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:642 ../bin/cstraigh.c:173
+msgid "Create Straight Track"
+msgstr "Creu trac syth"
+
+#: ../bin/ccurve.c:656
+msgid "Create Curved Track"
+msgstr "Creu trac crwm"
+
+#: ../bin/ccurve.c:726
+msgid "Elevation Difference"
+msgstr "Gwahaniaeth drychiad"
+
+#: ../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:728 ../bin/tcurve.c:402
+msgid "Turns"
+msgstr "Troi"
+
+#: ../bin/ccurve.c:729
+msgid "Angular Separation"
+msgstr "Gwahaniad Ongl"
+
+#: ../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:731
+msgid "Vertical Separation"
+msgstr "Atafaeliad fertigol"
+
+#: ../bin/ccurve.c:733
+msgid "Total Length"
+msgstr "Cyfanswm Hyd"
+
+#: ../bin/ccurve.c:813
+#, c-format
+msgid "Total Length %s"
+msgstr "Cyfanswm Hyd %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 "Radiws Cylch"
+
+#: ../bin/ccurve.c:873
+msgid "Click on Circle Edge"
+msgstr "Cliciwch ar ymyl cylch"
+
+#: ../bin/ccurve.c:877
+msgid "Click on Circle Center"
+msgstr "Cliciwch ar y ganolfan gylch"
+
+#: ../bin/ccurve.c:907
+msgid "Drag to Center"
+msgstr "Llusgwch i'r canol"
+
+#: ../bin/ccurve.c:911
+msgid "Drag to Edge"
+msgstr "Llusgwch i'r ymyl"
+
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
+#, c-format
+msgid "Radius=%s"
+msgstr "Radiws=%s"
+
+#: ../bin/ccurve.c:957
+msgid "Create Helix Track"
+msgstr "Creu trac helix"
+
+#: ../bin/ccurve.c:972
+msgid "Create Circle Track"
+msgstr "Creu trac cylch"
+
+#: ../bin/ccurve.c:1031
+msgid "Curve Track"
+msgstr "Trac cromlin"
+
+#: ../bin/ccurve.c:1031
+msgid "Curve Tracks"
+msgstr "Traciau cromlin"
+
+#: ../bin/ccurve.c:1032
+msgid "Curve from End-Pt"
+msgstr "Cromlin o'r pwynt olaf"
+
+#: ../bin/ccurve.c:1035
+msgid "Curve from Tangent"
+msgstr "Cromlin o tangiad"
+
+#: ../bin/ccurve.c:1038
+msgid "Curve from Center"
+msgstr "Cromlin o'r canol"
+
+#: ../bin/ccurve.c:1041
+msgid "Curve from Chord"
+msgstr "Cromlin o'r cord"
+
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
+msgid "Bezier Curve"
+msgstr "Cromlin Bezier"
+
+#: ../bin/ccurve.c:1047
+msgid "Cornu Curve"
+msgstr "Cromlin Cornu"
+
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
+msgid "Circle Track"
+msgstr "Trac cylch"
+
+#: ../bin/ccurve.c:1052
+msgid "Circle Tracks"
+msgstr "Traciau cylch"
+
+#: ../bin/ccurve.c:1054
+msgid "Fixed Radius Circle"
+msgstr "Cylch Radiws sefydlog"
+
+#: ../bin/ccurve.c:1056
+msgid "Circle from Tangent"
+msgstr "Cylch o tangiad"
+
+#: ../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:553
+msgid "First Point: X,Y"
+msgstr "Pwynt cyntaf: X,Y"
+
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
+msgid "Center: X,Y"
+msgstr "Canol: X,Y"
+
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
+msgid "Angular Length"
+msgstr "Hyd Ongl"
+
+#: ../bin/cdraw.c:556
+msgid "Line Angle"
+msgstr "Ongl Llinell"
+
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
+msgid "CCW Angle"
+msgstr "CCW Ongle"
+
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
+msgid "CW Angle"
+msgstr "CW Ongle"
+
+#: ../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: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:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
+msgid "Pivot"
+msgstr "Phwysbwynt"
+
+#: ../bin/cdraw.c:564
+msgid "Point Count"
+msgstr "Cyfrif Pwynt"
+
+#: ../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: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: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:568
+msgid "Filled"
+msgstr "Wedi'i lenwi"
+
+#: ../bin/cdraw.c:569
+msgid "Open End"
+msgstr "Diwedd Agored"
+
+#: ../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:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
+msgid "Lumber"
+msgstr "Pren"
+
+#: ../bin/cdraw.c:572
+msgid "Orientation"
+msgstr "Cyfeiriadedd"
+
+#: ../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:574
+msgid "Text Origin: X,Y"
+msgstr "Tarddiad Testun: X,Y"
+
+#: ../bin/cdraw.c:575
+msgid "Text Angle"
+msgstr "Ongl y Testun"
+
+#: ../bin/cdraw.c:576 ../bin/ctext.c:65 ../bin/ctext.c:144
+msgid "Font Size"
+msgstr "Maint y Ffont"
+
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:273
+msgid "Text"
+msgstr "Testun"
+
+#: ../bin/cdraw.c:578
+msgid "Lock To Origin"
+msgstr "Cloi i Darddiad"
+
+#: ../bin/cdraw.c:579
+msgid "Rot Origin: X,Y"
+msgstr "Tarddiad cylchdro: X,Y"
+
+#: ../bin/cdraw.c:580
+msgid "Rotate By"
+msgstr "Cylchdroi Erbyn"
+
+#: ../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: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:1167 ../bin/cdraw.c:3190
+msgid "Dimension Line"
+msgstr "Llinell Dimensiwn"
+
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
+msgid "Table Edge"
+msgstr "Ymyl bwrdd"
+
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
+msgid "Circle"
+msgstr "Cylch"
+
+#: ../bin/cdraw.c:1227
+msgid "Curved Line"
+msgstr "Llinell Grom"
+
+#: ../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:1279
+msgid "Filled Rectangle"
+msgstr "Petryal wedi'i lenwi"
+
+#: ../bin/cdraw.c:1279
+msgid "Rectangle"
+msgstr "Petryal"
+
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
+msgid "Polyline"
+msgstr "Polyline"
+
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
+msgid "Filled Polygon"
+msgstr "Polygon wedi'i Llenwi"
+
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
+msgid "Polygon"
+msgstr "Polygon"
+
+#: ../bin/cdraw.c:1330
+#, c-format
+msgid "%s(%d) Layer=%d"
+msgstr "%s(%d) Haen=%d"
+
+#: ../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:1356 ../bin/cdraw.c:2932 ../bin/compound.c:1157
+#: ../bin/doption.c:93 ../bin/tbezier.c:520
+msgid "Dash"
+msgstr "Dash"
+
+#: ../bin/cdraw.c:1357 ../bin/cdraw.c:2931 ../bin/compound.c:1158
+#: ../bin/tbezier.c:521
+msgid "Dot"
+msgstr "Dot"
+
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
+msgid "DashDot"
+msgstr "DashDot"
+
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
+msgid "DashDotDot"
+msgstr "DashDotDot"
+
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
+msgid "CenterDot"
+msgstr "CenterDot"
+
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
+msgid "PhantomDot"
+msgstr "PhantomDot"
+
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
+msgid "Tiny"
+msgstr "Tiny"
+
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
+msgid "Small"
+msgstr "Bach"
+
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
+msgid "Medium"
+msgstr "Canolig"
+
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
+msgid "Large"
+msgstr "Mawr"
+
+#: ../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:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
+msgid "Relative Angle"
+msgstr "Ongl gymharol"
+
+#: ../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:1589
+msgid "Rotate Angle"
+msgstr "Cylchdroi ongl"
+
+#: ../bin/cdraw.c:1592
+msgid "Rot Center X,Y"
+msgstr "Canolfan Rot X,Y"
+
+#: ../bin/cdraw.c:1692
+msgid "Seg Lth"
+msgstr "Hyd Seg"
+
+#: ../bin/cdraw.c:1693
+msgid "Rel Ang"
+msgstr "Ongl Rel"
+
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
+msgid "Lumber Type"
+msgstr "Math o bren"
+
+#: ../bin/cdraw.c:2857
+msgid "Straight"
+msgstr "Syth"
+
+#: ../bin/cdraw.c:2858
+msgid "Dimension"
+msgstr "Dimension"
+
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
+msgid "Curved"
+msgstr "Grom"
+
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
+msgid "Box"
+msgstr "Blwch"
+
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
+msgid "Filled Box"
+msgstr "Blwch wedi'i Llenwi"
+
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
+msgid "Bezier Line"
+msgstr "Llinell Bezier"
+
+#: ../bin/cdraw.c:2925
+#, c-format
+msgid "%s Line Width"
+msgstr "%s Lled Llinell"
+
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694 ../bin/dcar.c:4700
+msgid "Type"
+msgstr "Math"
+
+#: ../bin/cdraw.c:2933
+msgid "Dash-Dot"
+msgstr "Dash-Dot"
+
+#: ../bin/cdraw.c:2934
+msgid "Dash-Dot-Dot"
+msgstr "Dash-Dot-Dot"
+
+#: ../bin/cdraw.c:2947
+#, c-format
+msgid "%s Color"
+msgstr "%s Lliw"
+
+#: ../bin/cdraw.c:2979
+msgid "Dimension Line Size"
+msgstr "Maint Llinell Dimensiwn"
+
+#: ../bin/cdraw.c:2991
+msgid "Drag to create Table Edge"
+msgstr "Llusgwch i greu ymyl bwrdd"
+
+#: ../bin/cdraw.c:3089
+msgid "Seg Length"
+msgstr "Hyd seg"
+
+#: ../bin/cdraw.c:3094
+msgid "Rel Angle"
+msgstr "Ongl Rel"
+
+#: ../bin/cdraw.c:3189
+msgid "Line"
+msgstr "Linell"
+
+#: ../bin/cdraw.c:3189
+msgid "Draw Line"
+msgstr "Tynnu Llinell"
+
+#: ../bin/cdraw.c:3190
+msgid "Draw Dimension Line"
+msgstr "Tynnu Llinell Dimensiwn"
+
+#. 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:3191
+msgid "Draw Benchwork"
+msgstr "Tynnu Baseboard"
+
+#: ../bin/cdraw.c:3192
+msgid "Draw Table Edge"
+msgstr "Tynnwch ymyl bwrdd"
+
+#: ../bin/cdraw.c:3195
+msgid "Curve End"
+msgstr "Diwedd cromlin"
+
+#: ../bin/cdraw.c:3195
+msgid "Draw Curve from End"
+msgstr "Tynnwch y gromlin o'r diwedd"
+
+#: ../bin/cdraw.c:3196
+msgid "Curve Tangent"
+msgstr "Cyffyrddiad cromlin"
+
+#: ../bin/cdraw.c:3196
+msgid "Draw Curve from Tangent"
+msgstr "Tynnwch y gromlin o'r tangiad"
+
+#: ../bin/cdraw.c:3197
+msgid "Curve Center"
+msgstr "Canolfan gromlin"
+
+#: ../bin/cdraw.c:3197
+msgid "Draw Curve from Center"
+msgstr "Tynnwch y gromlin o'r canol"
+
+#: ../bin/cdraw.c:3198
+msgid "Curve Chord"
+msgstr "Cord cromlin"
+
+#: ../bin/cdraw.c:3198
+msgid "Draw Curve from Chord"
+msgstr "Tynnwch gromlin o'r cord"
+
+#: ../bin/cdraw.c:3199
+msgid "Draw Bezier"
+msgstr "Tynnwch gromlin Bezier"
+
+#: ../bin/cdraw.c:3203
+msgid "Circle Center"
+msgstr "Canolfan Gylch"
+
+#: ../bin/cdraw.c:3203
+msgid "Draw Circle from Center"
+msgstr "Tynnwch gylch o'r canol"
+
+#: ../bin/cdraw.c:3204
+msgid "Circle Tangent"
+msgstr "Tangent Cylch"
+
+#: ../bin/cdraw.c:3204
+msgid "Draw Circle from Tangent"
+msgstr "Tynnwch gylch o Tangent"
+
+#: ../bin/cdraw.c:3206
+msgid "Circle Filled Center"
+msgstr "Canolfan wedi'i llenwi â chylch"
+
+#: ../bin/cdraw.c:3206
+msgid "Draw Filled Circle from Center"
+msgstr "Tynnwch gylch wedi'i lenwi o'r canol"
+
+#: ../bin/cdraw.c:3207
+msgid "Circle Filled Tangent"
+msgstr "Tangent Llenwi Cylch"
+
+#: ../bin/cdraw.c:3207
+msgid "Draw Filled Circle from Tangent"
+msgstr "Tynnwch gylch wedi'i lenwi o tangiad"
+
+#: ../bin/cdraw.c:3210
+msgid "Draw Box"
+msgstr "Blwch tynnu llun"
+
+#: ../bin/cdraw.c:3211
+msgid "Draw Filled Box"
+msgstr "Tynnu blwch wedi'i lenwi"
+
+#: ../bin/cdraw.c:3212
+msgid "Draw Polygon"
+msgstr "Tynnu polygon"
+
+#: ../bin/cdraw.c:3213
+msgid "Draw Filled Polygon"
+msgstr "Tynnu polygon wedi'i lenwi"
+
+#: ../bin/cdraw.c:3214
+msgid "PolyLine"
+msgstr "PolyLine"
+
+#: ../bin/cdraw.c:3214
+msgid "Draw PolyLine"
+msgstr "Tynnu polyline"
+
+#: ../bin/cdraw.c:3231
+msgid "Straight Objects"
+msgstr "Gwrthrychau syth"
+
+#: ../bin/cdraw.c:3231
+msgid "Draw Straight Objects"
+msgstr "Tynnwch luniau syth"
+
+#: ../bin/cdraw.c:3232
+msgid "Curved Lines"
+msgstr "Llinellau Crwm"
+
+#: ../bin/cdraw.c:3232
+msgid "Draw Curved Lines"
+msgstr "Tynnwch linellau crwm"
+
+#: ../bin/cdraw.c:3233
+msgid "Circle Lines"
+msgstr "Llinellau Cylch"
+
+#: ../bin/cdraw.c:3233
+msgid "Draw Circles"
+msgstr "Tynnu cylchoedd"
+
+#: ../bin/cdraw.c:3234
+msgid "Shapes"
+msgstr "Siapiau"
+
+#: ../bin/cdraw.c:3234
+msgid "Draw Shapes"
+msgstr "Tynnu siapiau"
+
+#: ../bin/cdraw.c:3536
+msgid "Close Polygon - 'g'"
+msgstr "Polygon agos - 'g'"
+
+#: ../bin/cdraw.c:3538
+msgid "Make PolyLine - 'l'"
+msgstr "Gwneud polyline - 'l'"
+
+#: ../bin/cdraw.c:3540
+msgid "Fill Polygon - 'f'"
+msgstr "Llenwch polyline - 'f'"
+
+#: ../bin/cdraw.c:3542
+msgid "Empty Polygon - 'u'"
+msgstr "Polyline gwag - 'u'"
+
+#: ../bin/cdraw.c:3545
+msgid "Points Mode - 'p'"
+msgstr "modd pwyntiau - 'p'"
+
+#: ../bin/cdraw.c:3548
+msgid "Delete Selected Point - 'Del'"
+msgstr "Dileu pwynt a ddewiswyd - 'Del'"
+
+#: ../bin/cdraw.c:3549
+msgid "Vertex Point - 'v'"
+msgstr "pwynt fertig - 'v'"
+
+#: ../bin/cdraw.c:3551
+msgid "Round Corner - 'r'"
+msgstr "Cornel gron - 'r'"
+
+#: ../bin/cdraw.c:3553
+msgid "Smooth Corner - 's'"
+msgstr "Cornel esmwyth - 's'"
+
+#: ../bin/cdraw.c:3556 ../bin/cselect.c:3734
+msgid "LineType..."
+msgstr "Math o linell ..."
+
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3735
+msgid "Solid Line"
+msgstr "Llinell solet"
+
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3737
+msgid "Dashed Line"
+msgstr "Llinell wedi'i chwalu"
+
+#: ../bin/cdraw.c:3561 ../bin/cselect.c:3739
+msgid "Dotted Line"
+msgstr "Llinell doredig"
+
+#: ../bin/cdraw.c:3563
+msgid "Dash-Dot Line"
+msgstr "Llinell Dash-Dot"
+
+#: ../bin/cdraw.c:3565
+msgid "Dash-Dot-Dot Line"
+msgstr "Llinell Dash-Dot-Dot"
+
+#: ../bin/cdraw.c:3567
+msgid "Center-Dot Line"
+msgstr "Llinell Center-Dot"
+
+#: ../bin/cdraw.c:3569
+msgid "Phantom-Dot Line"
+msgstr "Llinell ffantasi"
+
+#: ../bin/cdraw.c:3572
+msgid "Origin Mode - 'o'"
+msgstr "Modd Tarddiad - 'o'"
+
+#: ../bin/cdraw.c:3574
+msgid "Reset Origin - '0'"
+msgstr "Ailosod tarddiad - '0'"
+
+#: ../bin/cdraw.c:3576
+msgid "Origin to Selected - 'l'"
+msgstr "Tarddiad wedi'i ddewis - 'l'"
+
+#: ../bin/cdraw.c:3578
+msgid "Origin to Middle - 'm'"
+msgstr "Tarddiad i'r canol - 'm'"
+
+#: ../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"
+
+#: ../bin/celev.c:42
+msgid "Defined"
+msgstr "Diffiniedig"
+
+#: ../bin/celev.c:42
+msgid "Hidden"
+msgstr "Cudd"
+
+#: ../bin/celev.c:43
+msgid "Computed"
+msgstr "Wedi'i gyfrifo"
+
+#: ../bin/celev.c:43
+msgid "Station"
+msgstr "Gorsaf"
+
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
+msgid "Ignore"
+msgstr "Anwybyddu"
+
+#: ../bin/celev.c:233
+msgid "Set Elevation"
+msgstr "Drychiad gosod"
+
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
+#, c-format
+msgid "Undefined"
+msgstr "Heb ei ddiffinio"
+
+#: ../bin/celev.c:384 ../bin/celev.c:541
+msgid "Elevation"
+msgstr "Drychiad"
+
+#: ../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:399
+msgid ""
+"Click on end, +Shift to split, +Ctrl to move description, +Alt to show "
+"elevation"
+msgstr ""
+"Cliciwch ar y diwedd, + Shift i hollti, + Ctrl i symud disgrifiad, + Alt i "
+"ddangos drychiad"
+
+#: ../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:424
+msgid "Move to end or track crossing"
+msgstr "Symud i'r diwedd neu groesi trac"
+
+#: ../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: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:453
+#, c-format
+msgid "Click to split here - elevation %0.3f"
+msgstr "Cliciwch i rannu yma - drychiad %0.3f"
+
+#: ../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:461
+#, c-format
+msgid "Track End elevation %0.3f"
+msgstr "Drychiad diwedd trac %0.3f"
+
+#: ../bin/celev.c:463 ../bin/celev.c:466
+msgid ""
+"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
+"Elevation"
+msgstr ""
+"Cliciwch ar End Pt, + Shift i hollti, + Ctrl i symud disgrifiad, + Alt yn "
+"dangos Drychiad"
+
+#: ../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:490
+msgid "Split track"
+msgstr "Trac Hollt"
+
+#: ../bin/celev.c:496
+msgid "Track split!"
+msgstr "Hollt Trac!"
+
+#: ../bin/celev.c:503
+msgid "Point selected!"
+msgstr "Pwynt wedi'i ddewis!"
+
+#: ../bin/cgroup.c:664
+msgid "Ungroup Object"
+msgstr "Gwrthrych grwp"
+
+#: ../bin/cgroup.c:677
+#, c-format
+msgid "%d objects ungrouped"
+msgstr "%d gwrthrychau heb eu grwpio"
+
+#: ../bin/cgroup.c:679
+msgid "No objects ungrouped"
+msgstr "Dim gwrthrychau heb eu grwpio"
+
+#: ../bin/cgroup.c:693
+msgid "Replace with new group?"
+msgstr "Amnewid gyda grŵp newydd?"
+
+#: ../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: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:702 ../bin/dcmpnd.c:485
+msgid "#"
+msgstr "#"
+
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
+msgid "# Segments"
+msgstr "# Segmentau"
+
+#: ../bin/cgroup.c:705
+msgid "Offset X,Y:"
+msgstr "Gwrthbwyso: X,Y"
+
+#: ../bin/cgroup.c:1320
+msgid "No endpts"
+msgstr "Dim pwyntiau diwedd"
+
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
+msgid "Group Tracks"
+msgstr "Traciau grŵp"
+
+#: ../bin/cgroup.c:1866
+msgid "Group Objects"
+msgstr "Gwrthrychau grŵp"
+
+#: ../bin/chndldto.c:68
+msgid "Place frog and drag angle"
+msgstr "Rhowch ongl broga a llusgo"
+
+#: ../bin/chndldto.c:85
+msgid "frog"
+msgstr "Broga"
+
+#: ../bin/chndldto.c:91
+msgid "Drag to set angle"
+msgstr "Llusgwch i ongl osod"
+
+#: ../bin/chndldto.c:132
+#, c-format
+msgid "Angle = %0.2f Frog# = %0.2f"
+msgstr "Ongl = %0.2f Broga# = %0.2f"
+
+#: ../bin/chndldto.c:134
+msgid "Frog angle is too close to 0"
+msgstr "Mae ongl broga yn rhy agos at 0"
+
+#: ../bin/chndldto.c:137
+msgid "Select point position"
+msgstr "Dewiswch safle pwynt rheilffordd"
+
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
+msgid "points"
+msgstr "Pwyntiau rheilffordd"
+
+#: ../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:286
+msgid "Create Hand Laid Turnout"
+msgstr "Creu pwyntiau rheilffordd wedi'u gosod â llaw"
+
+#: ../bin/chndldto.c:381
+msgid "HandLaidTurnout"
+msgstr "Pwyntiau rheilffordd wedi'u gosod â llaw"
+
+#: ../bin/cjoin.c:170
+#, c-format
+msgid "Curved Track: Radius=%s Length=%s"
+msgstr "Trac Crwm: Radiws=%s Hyd=%s"
+
+#: ../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: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: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:431
+msgid "Click on an unselected End-Point"
+msgstr "Cliciwch ar ddiweddbwynt heb ei ddewis"
+
+#: ../bin/cjoin.c:432
+msgid "Click on a selected End-Point"
+msgstr "Cliciwch ar ddiweddbwynt dethol"
+
+#: ../bin/cjoin.c:438
+msgid "unselected"
+msgstr "Heb ei ddewis"
+
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
+msgid "selected"
+msgstr "Wedi'i ddewis"
+
+#: ../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:539 ../bin/cjoin.c:576
+msgid "Not a line - Try again"
+msgstr "Ddim yn llinell - ceisiwch eto"
+
+#: ../bin/cjoin.c:572
+msgid "Left click - Select second object end"
+msgstr "Cliciwch ar y chwith - Dewiswch ddiwedd yr ail wrthrych"
+
+#: ../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:632
+msgid "Create PolyLine"
+msgstr "Creu polyline"
+
+#: ../bin/cjoin.c:913
+msgid "Left click - join with track"
+msgstr "Cliciwch ar y chwith - ymunwch â'r trac"
+
+#: ../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:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
+msgid "Select 2nd track"
+msgstr "Dewiswch 2il drac"
+
+#: ../bin/cjoin.c:1266
+msgid "Beyond end of 2nd track"
+msgstr "Y tu hwnt i ddiwedd yr 2il drac"
+
+#: ../bin/cjoin.c:1302
+msgid "Beyond end of 1st track"
+msgstr "Y tu hwnt i ddiwedd y trac 1af"
+
+#: ../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:1333
+msgid "First "
+msgstr "Yn gyntaf"
+
+#: ../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:1366
+msgid "Second "
+msgstr "Ail"
+
+#: ../bin/cjoin.c:1380 ../bin/track.c:2395 ../bin/track.c:2434
+#: ../bin/track.c:2509
+msgid "Connecting "
+msgstr "Cysylltu"
+
+#: ../bin/cjoin.c:1479
+msgid "Join Tracks"
+msgstr "Ymunwch â thraciau"
+
+#: ../bin/cjoin.c:1575
+msgid "Join"
+msgstr "Ymunwch"
+
+#: ../bin/cjoin.c:1576
+msgid "Join Track"
+msgstr "Ymunwch â'r trac"
+
+#: ../bin/cjoin.c:1579
+msgid "Join Lines"
+msgstr "Ymunwch â llinellau"
+
+#: ../bin/cmisc.c:55
+msgid "Middle"
+msgstr "Canol"
+
+#: ../bin/cmisc.c:55 ../bin/macro.c:70
+msgid "End"
+msgstr "Diwedd"
+
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
+msgid "Lock"
+msgstr "Clo"
+
+#: ../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:691 ../bin/doption.c:245
+msgid "Properties"
+msgstr "Priodweddau"
+
+#: ../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"
+
+#: ../bin/cmodify.c:520
+msgid "Modify Track"
+msgstr "Addasu trac"
+
+#: ../bin/cmodify.c:564
+msgid "Drag to add flex track"
+msgstr "Llusgwch i ychwanegu trac hyblyg"
+
+#: ../bin/cmodify.c:569
+msgid "No track to extend"
+msgstr "Dim trac i ymestyn"
+
+#: ../bin/cmodify.c:574
+msgid "No track selected"
+msgstr "Dim trac wedi'i ddewis"
+
+#: ../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:740
+msgid "Extend Track"
+msgstr "Ymestyn trac"
+
+#: ../bin/cmodify.c:882
+msgid "Modify"
+msgstr "Addasu"
+
+#: ../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: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:897
+msgid "Pan center - 'c'"
+msgstr "Canolfan sosban - 'c'"
+
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
+msgid "Note"
+msgstr "Nodyn"
+
+#: ../bin/cnote.c:73
+msgid "Replace this text with your layout notes"
+msgstr "Amnewid y testun hwn gyda'ch nodiadau cynllun"
+
+#: ../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:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
+msgid "Z1"
+msgstr "Z1"
+
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
+msgid "Z2"
+msgstr "Z2"
+
+#: ../bin/compound.c:730
+msgid "End Pt 3: X,Y"
+msgstr "Pwynt Diwedd 3: X,Y"
+
+#: ../bin/compound.c:734
+msgid "Z3"
+msgstr "Z3"
+
+#: ../bin/compound.c:735
+msgid "End Pt 4: X,Y"
+msgstr "Pwynt Diwedd 4: X,Y"
+
+#: ../bin/compound.c:739
+msgid "Z4"
+msgstr "Z4"
+
+#: ../bin/compound.c:741 ../bin/tease.c:528
+msgid "Origin: X,Y"
+msgstr "Tarddiad"
+
+#: ../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:747
+msgid "LineType"
+msgstr "Math o linell"
+
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
+msgid "Structure"
+msgstr "Strwythur"
+
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
+msgid "Turnout"
+msgstr "Pwynt rheilffordd"
+
+#: ../bin/compound.c:1027
+msgid "Sectional Track"
+msgstr "Trac Adrannol"
+
+#: ../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: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:99
+msgid "Radius Factor"
+msgstr "Ffactor Radiws"
+
+#: ../bin/cparalle.c:141
+msgid "Radius factor"
+msgstr "Ffactor Radiws"
+
+#: ../bin/cparalle.c:155
+msgid " Track/Line doesn't support parallel"
+msgstr "Nid yw Track / Line yn cefnogi'n gyfochrog"
+
+#: ../bin/cparalle.c:230
+msgid "Create Parallel Track"
+msgstr "Creu trac cyfochrog"
+
+#. 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:300
+msgid "Parallel Track"
+msgstr "Trac cyfochrog"
+
+#: ../bin/cparalle.c:303
+msgid "Parallel Line"
+msgstr "Llinell gyfochrog"
+
+#: ../bin/cprint.c:110
+msgid "Portrait"
+msgstr "Portread"
+
+#: ../bin/cprint.c:110
+msgid "Landscape"
+msgstr "Tirwedd"
+
+#: ../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: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:112
+msgid "Engineering Data"
+msgstr "Data Peirianneg"
+
+#: ../bin/cprint.c:113
+msgid "Registration Marks (in 1:1 scale only)"
+msgstr "Marciau Cofrestru (ar raddfa 1:1 yn unig)"
+
+#: ../bin/cprint.c:114
+msgid "Page Numbers"
+msgstr "Rhif Tudalen"
+
+#: ../bin/cprint.c:115
+msgid "Ignore Page Margins"
+msgstr "Anwybyddu Ymylon Tudalennau"
+
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:559
+msgid "Snap Grid"
+msgstr "Grid ffon"
+
+#: ../bin/cprint.c:117
+msgid "Layout Edge"
+msgstr "Cynllun Ymyl"
+
+#: ../bin/cprint.c:117
+msgid "Every Page"
+msgstr "Pob Tudalen"
+
+#: ../bin/cprint.c:118
+msgid "Roadbed Outline"
+msgstr "Amlinelliad gwely ffordd"
+
+#: ../bin/cprint.c:119
+msgid "Centerline below Scale 1:1"
+msgstr "Llinell ganol islaw graddfa 1:1"
+
+#: ../bin/cprint.c:128
+msgid "Print Scale"
+msgstr "Graddfa Argraffu"
+
+#: ../bin/cprint.c:129
+msgid "Page Width"
+msgstr "Lled y dudalen"
+
+#: ../bin/cprint.c:130
+msgid "Max"
+msgstr "Mwyafswm"
+
+#: ../bin/cprint.c:132
+msgid "Snap Shot"
+msgstr "Ciplun"
+
+#: ../bin/cprint.c:133
+msgid "Page Format"
+msgstr "Fformat tudalen"
+
+#: ../bin/cprint.c:134
+msgid "Print Order"
+msgstr "Archeb argraffu"
+
+#: ../bin/cprint.c:135
+msgid "Print "
+msgstr "Argraffu"
+
+#: ../bin/cprint.c:144
+msgid "Rulers:"
+msgstr "Rheolwyr:"
+
+#: ../bin/cprint.c:150
+msgid " Width"
+msgstr "Lled"
+
+#: ../bin/cprint.c:152
+msgid "Margins"
+msgstr "Ymylon"
+
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
+msgid "Origin: X"
+msgstr "Tarddiad: 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 "Ail gychwyn"
+
+#: ../bin/cprint.c:157
+msgid "Setup"
+msgstr "Sefydlu"
+
+#: ../bin/cprint.c:158 ../bin/cselect.c:3675 ../bin/menu.c:974
+msgid "Select All"
+msgstr "Dewiswch y cyfan"
+
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:671
+#: ../bin/misc.c:725
+msgid "Clear"
+msgstr "Clir"
+
+#: ../bin/cprint.c:161
+msgid "0 pages"
+msgstr "0 Tudalennau"
+
+#: ../bin/cprint.c:190
+#, c-format
+msgid "%d page"
+msgstr "%d tudalen"
+
+#: ../bin/cprint.c:190
+#, c-format
+msgid "%d pages"
+msgstr "%d tudalennau"
+
+#: ../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:746
+msgid "Print Margins"
+msgstr "Argraffu Ymylon"
+
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3147
+#: ../bin/denum.c:51
+msgid "Print"
+msgstr "Argraffu"
+
+#: ../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:1574
+msgid "Print..."
+msgstr "Argraffu..."
+
+#. 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:626
+#, c-format
+msgid "%s Profile: %s"
+msgstr "%s Proffil: %s"
+
+#: ../bin/cprofile.c:704 ../bin/menu.c:225
+msgid "Change"
+msgstr "Newid"
+
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
+#, c-format
+msgid "Elev = %0.1f"
+msgstr "Drychiad = %0.1f"
+
+#: ../bin/cprofile.c:763
+#, c-format
+msgid "Elev=%0.2f %0.1f%%"
+msgstr "Drychiad=%0.2f %0.1f%%"
+
+#: ../bin/cprofile.c:768
+#, c-format
+msgid "%0.1f%% Elev = %0.2f"
+msgstr "%0.1f%% Drychiad = %0.2f"
+
+#: ../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:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
+msgid "Profile Command"
+msgstr "Gorchymyn Proffil"
+
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
+msgid "Drag to change Elevation"
+msgstr "Llusgwch i newid drychiad"
+
+#: ../bin/cprofile.c:899
+msgid "Select a Defined Elevation to start Profile"
+msgstr "Dewiswch ddrychiad diffiniedig i gychwyn proffil"
+
+#: ../bin/cprofile.c:901
+msgid "Select a Defined Elevation to extend Profile"
+msgstr "Dewiswch ddrychiad diffiniedig i ymestyn proffil"
+
+#: ../bin/cprofile.c:1456
+msgid "Select a Defined Elevation to start profile"
+msgstr "Dewiswch ddrychiad diffiniedig i gychwyn proffil"
+
+#: ../bin/cprofile.c:1527
+msgid "Define"
+msgstr "Diffinio"
+
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
+#, c-format
+msgid "%d tracks moved"
+msgstr "%d traciau wedi'u symud"
+
+#: ../bin/cpull.c:503
+msgid "Pull Tracks"
+msgstr "Tynnu traciau"
+
+#: ../bin/cpull.c:579
+msgid "Tighten Tracks"
+msgstr "Tynhau traciau"
+
+#: ../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:673
+msgid "Try to Connect all Selected Tracks?"
+msgstr "Ceisiwch gysylltu pob Trac a ddewiswyd?"
+
+#: ../bin/cpull.c:680
+msgid "ReConnect"
+msgstr "Ailgysylltu"
+
+#: ../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 ""
+"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:747
+msgid "Select first endpoint or turntable to connect, +Shift to tighten"
+msgstr "Dewiswch ddiweddbwynt cyntaf neu drofwrdd i gysylltu, + Shift i dynhau"
+
+#: ../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)"
+
+#: ../bin/cpull.c:814
+msgid "Select second endpoint or turntable to connect"
+msgstr "Dewiswch ail ddiweddbwynt neu drofwrdd i gysylltu"
+
+#: ../bin/cpull.c:821
+msgid "Same Track! - please select another"
+msgstr "Yr un trac! - dewiswch un arall"
+
+#: ../bin/cpull.c:918
+msgid "Connect Two Tracks"
+msgstr "Cysylltu dau drac"
+
+#: ../bin/cpull.c:924
+msgid "Connect All Selected - 'S'"
+msgstr "Cysylltu Pob Dewis - 'S'"
+
+#: ../bin/cruler.c:390
+msgid "Measurement"
+msgstr "Mesur"
+
+#. 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:394
+msgid "Protractor"
+msgstr "Gwrthdystiwr"
+
+#: ../bin/cselect.c:688
+msgid "Change Track Width"
+msgstr "Newid lled y trac"
+
+#: ../bin/cselect.c:714
+msgid "Change Line Type"
+msgstr "Newid math llinell"
+
+#: ../bin/cselect.c:739
+msgid "Delete only works in Select Mode"
+msgstr "Dileu dim ond gweithio yn y Modd Dewis"
+
+#: ../bin/cselect.c:755
+msgid "Delete Tracks"
+msgstr "Dileu traciau"
+
+#: ../bin/cselect.c:862
+msgid "Hide Tracks (Tunnel)"
+msgstr "Cuddio Traciau (Twnnel)"
+
+#: ../bin/cselect.c:882
+msgid "Bridge Tracks "
+msgstr "Traciau pont"
+
+#: ../bin/cselect.c:900
+#, fuzzy
+msgid "Roadbed Tracks "
+msgstr "Cylchdroi Traciau"
+
+#: ../bin/cselect.c:918
+msgid "Ties Tracks "
+msgstr "Traciau cysgwyr"
+
+#: ../bin/cselect.c:956 ../bin/menu.c:1118
+msgid "Move To Current Layer"
+msgstr "Symud i'r Haen Bresennol"
+
+#: ../bin/cselect.c:1010 ../bin/menu.c:1303
+msgid "Clear Elevations"
+msgstr "Drychiadau Clir"
+
+#: ../bin/cselect.c:1056
+msgid "Add Elevations"
+msgstr "Ychwanegu Drychiadau"
+
+#: ../bin/cselect.c:1072
+msgid "Refresh Compound"
+msgstr "Adnewyddu Cyfansawdd"
+
+#: ../bin/cselect.c:1471
+msgid "Cornu too tight - it was deleted"
+msgstr "Cornu yn rhy dynn, cafodd ei ddileu"
+
+#: ../bin/cselect.c:1526
+msgid "Move To Join"
+msgstr "Symud i Ymuno"
+
+#: ../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:1756 ../bin/cselect.c:1890 ../bin/cselect.c:2295
+msgid "Move Tracks"
+msgstr "Symud Traciau"
+
+#: ../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: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:1994 ../bin/cselect.c:2370
+msgid "Rotate Tracks"
+msgstr "Cylchdroi Traciau"
+
+#: ../bin/cselect.c:2009
+msgid "Center of Rotation snapped to Turntable center"
+msgstr "Canolfan Cylchdroi yn sownd i ganolfan Turntable"
+
+#: ../bin/cselect.c:2055 ../bin/cselect.c:2090
+#, c-format
+msgid "Angle %0.3f"
+msgstr "Ongle %0.3f"
+
+#: ../bin/cselect.c:2154
+#, c-format
+msgid "Angle %0.3f #%ld"
+msgstr "Ongle %0.3f #%ld"
+
+#: ../bin/cselect.c:2156
+#, c-format
+msgid "Angle %0.3f %s"
+msgstr "Ongle %0.3f %s"
+
+#: ../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:2177
+msgid "Align: Click on the 2nd unselected object"
+msgstr "Alinio: Cliciwch ar yr 2il wrthrych nas dewiswyd"
+
+#: ../bin/cselect.c:2307
+msgid "In module layer:"
+msgstr "Yn haen y modiwl:"
+
+#: ../bin/cselect.c:2315
+msgid "Frozen Layer:"
+msgstr "Haen wedi'i rewi"
+
+#: ../bin/cselect.c:2319
+msgid "Not found"
+msgstr "Heb ei ddarganfod"
+
+#: ../bin/cselect.c:2356
+msgid "Multiple Selected"
+msgstr "Dewis Lluosog"
+
+#: ../bin/cselect.c:2383
+msgid "Toggle Detail"
+msgstr "Toglo Manylion"
+
+#: ../bin/cselect.c:2399
+msgid "Toggle Label"
+msgstr "Label Ymlaen / Diffodd"
+
+#: ../bin/cselect.c:2572
+msgid "Elevation description"
+msgstr "Disgrifiad drychiad"
+
+#: ../bin/cselect.c:2579
+msgid "Hidden description - 's' to Show, 'd' Details"
+msgstr "Disgrifiad cudd - 's' i'w Ddangos, 'd' Manylion"
+
+#: ../bin/cselect.c:2582
+msgid "Shown description - 'h' to Hide"
+msgstr "Disgrifiad wedi'i ddangos - 'h' i'w Cuddio"
+
+#: ../bin/cselect.c:2590
+msgid "Select and drag a description"
+msgstr "Dewis a llusgo disgrifiad"
+
+#: ../bin/cselect.c:2632
+msgid "Hidden Label - Drag to reveal"
+msgstr "Label Cudd - Llusgwch i ddatgelu"
+
+#: ../bin/cselect.c:2634
+msgid "Drag label"
+msgstr "Llusgwch label"
+
+#: ../bin/cselect.c:2644
+msgid "Move Label"
+msgstr "Symud label"
+
+#: ../bin/cselect.c:2683
+msgid "To Hide, use Context Menu"
+msgstr "I Guddio, defnyddiwch Ddewislen Cyd-destun"
+
+#: ../bin/cselect.c:2717 ../bin/cselect.c:3715
+msgid "Show/Hide Description"
+msgstr "Dangos / Cuddio Disgrifiad"
+
+#: ../bin/cselect.c:2720
+msgid "Toggle Detailed Description"
+msgstr "Toglo disgrifiad manwl"
+
+#: ../bin/cselect.c:2804
+msgid "Drag to mark mirror line"
+msgstr "Llusgwch i dynnu llinell ddrych"
+
+#: ../bin/cselect.c:2815
+#, c-format
+msgid "Angle %0.2f"
+msgstr "Ongle %0.2f"
+
+#: ../bin/cselect.c:2818
+msgid "Flip Tracks"
+msgstr "Cefn Traciau"
+
+#: ../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:3188
+msgid "Select track"
+msgstr "Dewiswch Trac"
+
+#. 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:3654 ../bin/cselect.c:3683 ../bin/menu.c:932
+msgid "Undo"
+msgstr "Dadwneud"
+
+#: ../bin/cselect.c:3655 ../bin/cselect.c:3684 ../bin/menu.c:934
+msgid "Redo"
+msgstr "Ail-wneud"
+
+#: ../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:3667 ../bin/draw.c:3522 ../bin/menu.c:1163
+msgid "&Zoom"
+msgstr "&Chwyddo"
+
+#: ../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:3672 ../bin/cselect.c:3692
+msgid "Pan Center Here - 'c'"
+msgstr "Gosod canol yma - 'c'"
+
+#: ../bin/cselect.c:3677 ../bin/menu.c:977 ../bin/menu.c:1126
+msgid "Select Current Layer"
+msgstr "Dewiswch haen gyfredol"
+
+#: ../bin/cselect.c:3690
+msgid "Zoom to selected - 's'"
+msgstr "Chwyddo i ddethol - 's'"
+
+#: ../bin/cselect.c:3696 ../bin/menu.c:979
+msgid "Deselect All"
+msgstr "Dad-ddewiswch bawb"
+
+#: ../bin/cselect.c:3699
+msgid "Properties -'?'"
+msgstr "Priodweddau -'?'"
+
+#: ../bin/cselect.c:3701
+msgid "Modify/Activate Track"
+msgstr "Addasu / Ysgogi trac"
+
+#: ../bin/cselect.c:3704 ../bin/menu.c:965
+msgid "Cut"
+msgstr "Torri"
+
+#: ../bin/cselect.c:3705 ../bin/menu.c:967
+msgid "Copy"
+msgstr "Copi"
+
+#: ../bin/cselect.c:3706 ../bin/fileio.c:1730 ../bin/menu.c:969
+msgid "Paste"
+msgstr "Gludo"
+
+#: ../bin/cselect.c:3707 ../bin/menu.c:971
+msgid "Clone"
+msgstr "Clôn"
+
+#: ../bin/cselect.c:3709
+msgid "Rotate..."
+msgstr "Cylchdroi .."
+
+#: ../bin/cselect.c:3711
+msgid "Align"
+msgstr "Alinio"
+
+#: ../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:3721
+msgid "Bridge/NoBridge"
+msgstr "Pont / Dim Pont"
+
+#: ../bin/cselect.c:3723
+msgid "Roadbed/NoRoadbed"
+msgstr ""
+
+#: ../bin/cselect.c:3725
+msgid "NoTies/Ties"
+msgstr "Cwsgwyr / Dim Cysgu"
+
+#: ../bin/cselect.c:3727
+msgid "Thickness..."
+msgstr "Trwch..."
+
+#: ../bin/cselect.c:3728 ../bin/menu.c:1150
+msgid "Thin Tracks"
+msgstr "Traciau tenau"
+
+#: ../bin/cselect.c:3730 ../bin/menu.c:1152
+msgid "Medium Tracks"
+msgstr "Traciau canolig"
+
+#: ../bin/cselect.c:3732 ../bin/menu.c:1154
+msgid "Thick Tracks"
+msgstr "Traciau trwchus"
+
+#: ../bin/cselect.c:3741
+msgid "Dash-Dotted Line"
+msgstr "Llinell doredig dot"
+
+#: ../bin/cselect.c:3743
+msgid "Dash-Dot-Dotted Line"
+msgstr "Llinell doredig Dash-Dot"
+
+#: ../bin/cselect.c:3746
+msgid "Move To Front"
+msgstr "Symud i'r blaen"
+
+#: ../bin/cselect.c:3747
+msgid "Move To Back"
+msgstr "Symud yn ôl"
+
+#: ../bin/cselect.c:3749
+msgid "Group"
+msgstr "Grŵp"
+
+#: ../bin/cselect.c:3750
+msgid "UnGroup"
+msgstr "Di-grŵp"
+
+#: ../bin/cselect.c:3796
+msgid "Move Description"
+msgstr "Symud Disgrifiad"
+
+#: ../bin/cselect.c:3804 ../bin/menu.c:294 ../bin/menu.c:986
+msgid "Move"
+msgstr "Symud"
+
+#. 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: 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:214
+msgid "Change Sensor"
+msgstr "Newid Synhwyrydd"
+
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
+msgid "Sensor"
+msgstr "Synhwyrydd"
+
+#: ../bin/csensor.c:407
+msgid "Create Sensor"
+msgstr "Creu Synhwyrydd"
+
+#: ../bin/csensor.c:410
+msgid "Modify Sensor"
+msgstr "Addasu Synhwyrydd"
+
+#: ../bin/csensor.c:445
+msgid "Edit sensor"
+msgstr "Golygu Synhwyrydd"
+
+#: ../bin/csensor.c:483
+msgid "Place sensor"
+msgstr "Rhowch Synhwyrydd"
+
+#: ../bin/csnap.c:530
+msgid "Horz"
+msgstr "Llor"
+
+#: ../bin/csnap.c:532
+msgid "Spacing"
+msgstr "Bylchau"
+
+#: ../bin/csnap.c:534
+msgid "Divisions"
+msgstr "Rhaniadau"
+
+#: ../bin/csnap.c:537
+msgid "Enable"
+msgstr "Galluogi"
+
+#: ../bin/csnap.c:538
+msgid "Vert"
+msgstr "Fertigol"
+
+#: ../bin/csnap.c:547 ../bin/dease.c:78
+msgid "X"
+msgstr "X"
+
+#: ../bin/csnap.c:551
+msgid "A"
+msgstr "A"
+
+#: ../bin/csnap.c:554
+msgid "Show"
+msgstr "Ddangos"
+
+#: ../bin/csnap.c:815
+msgid "Change Grid..."
+msgstr "Newid grid ..."
+
+#: ../bin/csplit.c:45
+msgid "Set Block Gaps"
+msgstr "Gosod bylchau bloc"
+
+#: ../bin/csplit.c:137
+#, fuzzy
+msgid "Select track and position for split"
+msgstr "Dewiswch drac i'w hollti"
+
+#: ../bin/csplit.c:161
+msgid "Can't Split that Track Object"
+msgstr "Methu rhannu'r trac hwnnw"
+
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
+msgid "Split Track"
+msgstr "Trac hollt"
+
+#: ../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:188
+msgid "No Track to Split"
+msgstr "Dim Trac i'w Hollti"
+
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
+msgid "Left"
+msgstr "Chwith"
+
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
+msgid "Right"
+msgstr "Reit"
+
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
+msgid "Both"
+msgstr "Y ddau"
+
+#: ../bin/csplit.c:212
+msgid "Top"
+msgstr "Uchaf"
+
+#: ../bin/csplit.c:214
+msgid "Bottom"
+msgstr "Gwaelod"
+
+#: ../bin/csplit.c:307
+msgid "Select draw to split"
+msgstr "Dewiswch dynnu i'w rannu"
+
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
+msgid "Split Draw"
+msgstr "Tynnu Hollt"
+
+#: ../bin/csplit.c:332
+msgid "No Draw to Split"
+msgstr "Dim Tynnu i'w Hollti"
+
+#: ../bin/csplit.c:371
+msgid "Select the draw object to Trim to"
+msgstr "Dewiswch y gwrthrych tynnu i Trimio ag ef"
+
+#: ../bin/csplit.c:387
+msgid "Can't Trim with a Track"
+msgstr "Methu Trimio gyda thrac"
+
+#: ../bin/csplit.c:392
+msgid "Select an intersecting draw object to Trim"
+msgstr "Dewiswch wrthrych tynnu croestoriadol i Trim"
+
+#: ../bin/csplit.c:397
+msgid "No Draw to Trim with"
+msgstr "Dim Tynnu i Drimio gyda"
+
+#: ../bin/csplit.c:404
+msgid "Can't Split a track object"
+msgstr "Methu Rhannu gwrthrych trac"
+
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
+msgid "Trim Draw"
+msgstr "Tynnu trim"
+
+#: ../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:504
+msgid "Split"
+msgstr "Hollti"
+
+#: ../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:105
+msgid "Drag to place 2nd end point"
+msgstr "Llusgwch i osod 2il bwynt gorffen"
+
+#: ../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:204 ../bin/tstraigh.c:245
+msgid "Straight Track"
+msgstr "Trac Syth"
+
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:93
+#: ../bin/doption.c:250
+msgid "Hide"
+msgstr "Cuddio"
+
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
+msgid "Pier Number"
+msgstr "Rhif y Pier"
+
+#: ../bin/cstruct.c:627
+#, c-format
+msgid "Scale %d:1"
+msgstr "Graddfa %d:1"
+
+#: ../bin/cstruct.c:629
+#, c-format
+msgid "Width %s"
+msgstr "Lled %s"
+
+#: ../bin/cstruct.c:631
+#, c-format
+msgid "Height %s"
+msgstr "Uchder %s"
+
+#: ../bin/cstruct.c:779
+msgid "Place Structure"
+msgstr "Strwythur Lle"
+
+#: ../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:921
+msgid "Drag to rotate"
+msgstr "Llusgwch i gylchdroi"
+
+#: ../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 ""
+"Llusg-Chwith i'w gosod, Ctrl + Llusg Chwith neu Llusgwch Dde i Gylchdroi, "
+"Gofod neu Fynd i dderbyn, Esc i Ganslo"
+
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3013
+msgid "Close"
+msgstr "Caewch"
+
+#: ../bin/cstruct.c:1049
+msgid "Select Structure and then drag to place"
+msgstr "Dewiswch Strwythur ac yna llusgwch i'w le"
+
+#: ../bin/cstruct.c:1091
+msgid ""
+"Left drag to move, right drag to rotate, or press Return or click Ok to "
+"finalize"
+msgstr ""
+"Llusgwch chwith i symud, llusgwch y dde i gylchdroi, neu pwyswch Return neu "
+"cliciwch Ok i gwblhau"
+
+#: ../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:231
+msgid "Point Sense"
+msgstr "Synnwyr Pwynt"
+
+#: ../bin/cswitchmotor.c:112
+msgid "Turnout Number"
+msgstr "Rhif Pwynt Rheilffordd"
+
+#: ../bin/cswitchmotor.c:299
+msgid "Change Switch Motor"
+msgstr "Newid modur pwynt"
+
+#: ../bin/cswitchmotor.c:369
+msgid "Switch motor"
+msgstr "Modur pwynt"
+
+#: ../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:570 ../bin/cswitchmotor.c:746
+msgid "Switch motor must have a name!"
+msgstr "Rhaid bod enw i fodur pwynt!"
+
+#: ../bin/cswitchmotor.c:574
+msgid "Create Switch Motor"
+msgstr "Creu modur Point"
+
+#: ../bin/cswitchmotor.c:608
+msgid "Create switch motor"
+msgstr "Creu modur Point"
+
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
+msgid "Select a turnout"
+msgstr "Dewiswch bwynt"
+
+#: ../bin/cswitchmotor.c:632
+msgid "Not a turnout!"
+msgstr "Ddim yn bwynt!"
+
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
+msgid "Not a switch motor!"
+msgstr "Ddim yn fodur pwynt!"
+
+#: ../bin/cswitchmotor.c:700
+#, c-format
+msgid "Really delete switch motor %s?"
+msgstr "Dileu modur switsh mewn gwirionedd %s?"
+
+#: ../bin/cswitchmotor.c:702
+msgid "Delete Switch Motor"
+msgstr "Dileu modur pwynt"
+
+#: ../bin/cswitchmotor.c:750
+msgid "Modify Switch Motor"
+msgstr "Addasu modur pwynt"
+
+#: ../bin/cswitchmotor.c:776
+msgid "Edit switch motor"
+msgstr "Golygu modur pwynt"
+
+#: ../bin/cswitchmotor.c:782
+#, c-format
+msgid "Edit switch motor %d"
+msgstr "Golygu modur pwynt %d"
+
+#: ../bin/cswitchmotor.c:889
+msgid "Switch Motor"
+msgstr "Modur pwynt"
+
+#: ../bin/cswitchmotor.c:903
+#, c-format
+msgid "Deleting Switch Motor %s"
+msgstr "Dileu modur pwynt %s"
+
+#: ../bin/ctext.c:194 ../bin/ctext.c:242
+msgid "Create Text"
+msgstr "Creu Testun"
+
+#: ../bin/ctext.c:277
+msgid "Fonts..."
+msgstr "Ffontiau..."
+
+#: ../bin/ctodesgn.c:139
+msgid "Frog #"
+msgstr "Broga #"
+
+#: ../bin/ctodesgn.c:139
+msgid "Degrees"
+msgstr "Graddau"
+
+#: ../bin/ctodesgn.c:140
+msgid "Dual Path"
+msgstr "Llwybr deuol"
+
+#: ../bin/ctodesgn.c:140
+msgid "Quad Path"
+msgstr "Llwybr cwad"
+
+#: ../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:203 ../bin/ctodesgn.c:3204 ../bin/ctodesgn.c:3205
+msgid "Left Description"
+msgstr "Disgrifiad Chwith"
+
+#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:207
+msgid " #"
+msgstr " #"
+
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:3203
+msgid "Right Description"
+msgstr "Disgrifiad Cywir"
+
+#: ../bin/ctodesgn.c:208
+msgid "Roadbed Width"
+msgstr "Lled gwely ffordd"
+
+#: ../bin/ctodesgn.c:212 ../bin/denum.c:52
+msgid "Print Setup"
+msgstr "Gosodiadau Argraffu"
+
+#: ../bin/ctodesgn.c:242
+msgid "Diverging Length"
+msgstr "Hyd Amrywiol"
+
+#: ../bin/ctodesgn.c:243
+msgid "Diverging Angle"
+msgstr "Ongl Plymio"
+
+#: ../bin/ctodesgn.c:244
+msgid "Diverging Offset"
+msgstr "Gwrthbwyso Amrywiol"
+
+#: ../bin/ctodesgn.c:245
+msgid "Overall Length"
+msgstr "Hyd Cyffredinol"
+
+#: ../bin/ctodesgn.c:257
+msgid "Regular Turnout"
+msgstr "Pwynt Rheolaidd"
+
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:314
+msgid "Inner Length"
+msgstr "Hyd Mewnol"
+
+#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:315
+msgid "Inner Angle"
+msgstr "Ongl Fewnol"
+
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
+msgid "Inner Offset"
+msgstr "Gwrthbwyso Mewnol"
+
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:318
+msgid "Outer Angle"
+msgstr "Ongl Allanol"
+
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:319
+msgid "Outer Offset"
+msgstr "Gwrthbwyso Allanol"
+
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:321
+msgid "Outer Length"
+msgstr "Hyd Allanol"
+
+#: ../bin/ctodesgn.c:302
+msgid "Curved Turnout"
+msgstr "Pwynt Crwm"
+
+#: ../bin/ctodesgn.c:317
+msgid "Inner Radius"
+msgstr "Radiws Mewnol"
+
+#: ../bin/ctodesgn.c:320
+msgid "Outer Radius"
+msgstr "Radiws Allanol"
+
+#: ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:489
+msgid "Toe Radius"
+msgstr "Radiws bysedd traed"
+
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:401
+msgid "Toe Length"
+msgstr "Hyd bysedd traed"
+
+#: ../bin/ctodesgn.c:336
+msgid "Cornu Curved Turnout"
+msgstr "Pwynt crwm Cornu"
+
+#: ../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:349 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:476
+msgid "Left Angle"
+msgstr "Ongle Chwith"
+
+#: ../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:351 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:484
+msgid "Right Offset"
+msgstr "Gwrthbwyso Iawn"
+
+#: ../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:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
+msgid "Right Length"
+msgstr "Hyd Iawn"
+
+#: ../bin/ctodesgn.c:381
+msgid "Wye Turnout"
+msgstr "Pwynt Gwy"
+
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:478
+msgid "Left Radius"
+msgstr "Radiws Chwith"
+
+#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:483
+msgid "Right Radius"
+msgstr "Radiws Cywir"
+
+#: ../bin/ctodesgn.c:414
+msgid "Cornu Wye Turnout"
+msgstr "Pwynt Gwy Cornu"
+
+#: ../bin/ctodesgn.c:463
+msgid "3-way Turnout"
+msgstr "Pwynt 3-ffordd"
+
+#: ../bin/ctodesgn.c:479
+msgid "Center Length"
+msgstr "Hyd y Ganolfan"
+
+#: ../bin/ctodesgn.c:480
+msgid "Center Angle"
+msgstr "Ongl y Ganolfan"
+
+#: ../bin/ctodesgn.c:481 ../bin/dcar.c:2348
+msgid "Center Offset"
+msgstr "Gwrthbwyso'r Ganolfan"
+
+#: ../bin/ctodesgn.c:482
+msgid "Center Radius"
+msgstr "Radiws y Ganolfan"
+
+#: ../bin/ctodesgn.c:487
+msgid "Toe Length Left"
+msgstr "Hyd y Toe Chwith"
+
+#: ../bin/ctodesgn.c:488
+msgid "Toe Length Right"
+msgstr "Hyd y Toe yn iawn"
+
+#: ../bin/ctodesgn.c:502
+msgid "Cornu 3-way Turnout"
+msgstr "Pwynt 3-ffordd Cornu"
+
+#: ../bin/ctodesgn.c:527
+msgid "Crossing"
+msgstr "Groesfan"
+
+#: ../bin/ctodesgn.c:552
+msgid "Single Slipswitch"
+msgstr "Pwynt Llithro Sengl"
+
+#: ../bin/ctodesgn.c:587
+msgid "Double Slipswitch"
+msgstr "Pwynt Llithro Dwbl"
+
+#: ../bin/ctodesgn.c:612
+msgid "Right Crossover"
+msgstr "Croesfan dde"
+
+#: ../bin/ctodesgn.c:638
+msgid "Left Crossover"
+msgstr "Croesfan chwith"
+
+#: ../bin/ctodesgn.c:663
+msgid "Double Crossover"
+msgstr "Croesfan ddwbl"
+
+#: ../bin/ctodesgn.c:685
+msgid "Straight Section"
+msgstr "Adran Syth"
+
+#: ../bin/ctodesgn.c:697
+msgid "Angle (Degrees)"
+msgstr "Ongl (Graddau)"
+
+#: ../bin/ctodesgn.c:708
+msgid "Curved Section"
+msgstr "Adran Grom"
+
+#: ../bin/ctodesgn.c:731
+msgid "Bumper Section"
+msgstr "Adran Clustogi"
+
+#: ../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:743
+msgid "Radius1"
+msgstr "Radiws1"
+
+#: ../bin/ctodesgn.c:744
+msgid "Radius2"
+msgstr "Radiws2"
+
+#: ../bin/ctodesgn.c:827
+msgid "Turntable Section"
+msgstr "Adran Trofwrdd "
+
+#: ../bin/ctodesgn.c:2777
+#, c-format
+msgid "%s Designer"
+msgstr "%s Dylunydd"
+
+#: ../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:2780
+msgid "Page"
+msgstr "Tudalen"
+
+#: ../bin/ctodesgn.c:2788
+msgid "Frog Number"
+msgstr "Rhif broga"
+
+#: ../bin/ctodesgn.c:3147
+msgid "Turnout Designer"
+msgstr "Dylunydd Pwynt"
+
+#: ../bin/ctodesgn.c:3160
+#, c-format
+msgid "%s %s Designer"
+msgstr "%s %s Dylunydd"
+
+#: ../bin/ctrain.c:179 ../bin/dcar.c:2360 ../bin/dcar.c:4694 ../bin/dcar.c:4700
+msgid "Index"
+msgstr "Mynegai"
+
+#: ../bin/ctrain.c:185
+#, fuzzy
+msgid "Report Marks"
+msgstr "Marciau Cynrychiolwyr"
+
+#: ../bin/ctrain.c:273
+msgid "Car"
+msgstr "Car"
+
+#: ../bin/ctrain.c:728
+msgid "Follow"
+msgstr "Dilynwch"
+
+#: ../bin/ctrain.c:729
+msgid "Auto Reverse"
+msgstr "Gwrthdroi Awtomatig"
+
+#: ../bin/ctrain.c:748 ../bin/dcar.c:5686
+msgid "Find"
+msgstr "Chwilio"
+
+#: ../bin/ctrain.c:754 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
+msgid "Forward"
+msgstr "Ymlaen"
+
+#: ../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:952 ../bin/ctrain.c:981
+msgid "Crashed"
+msgstr "Damwain"
+
+#: ../bin/ctrain.c:954
+msgid "Not on Track"
+msgstr "Ddim ar y trywydd iawn"
+
+#: ../bin/ctrain.c:958
+msgid "Trains Paused"
+msgstr "Trenau wedi oedi"
+
+#: ../bin/ctrain.c:960
+msgid "Running"
+msgstr "Rhedeg"
+
+#: ../bin/ctrain.c:965
+msgid "End of Track"
+msgstr "Diwedd y Trac"
+
+#: ../bin/ctrain.c:969
+msgid "Open Turnout"
+msgstr "Pwynt Agored"
+
+#: ../bin/ctrain.c:973
+msgid "Manual Stop"
+msgstr "Stop â Llaw"
+
+#: ../bin/ctrain.c:977
+msgid "No Room"
+msgstr "Dim Lle"
+
+#: ../bin/ctrain.c:985
+msgid "Unknown Status"
+msgstr "Statws Anhysbys"
+
+#: ../bin/ctrain.c:995
+msgid "No trains"
+msgstr "Dim Trenau"
+
+#: ../bin/ctrain.c:1375
+msgid "Train Control XXX"
+msgstr "Rheoli Trên XXX"
+
+#: ../bin/ctrain.c:1376
+#, c-format
+msgid "Train Control %d"
+msgstr "Rheoli Trên %d"
+
+#: ../bin/ctrain.c:1378
+msgid "Train Control"
+msgstr "Rheoli Trên"
+
+#: ../bin/ctrain.c:3198 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
+msgid "Run Trains"
+msgstr "Rhedeg Trenau"
+
+#: ../bin/ctrain.c:3217
+msgid "Uncouple"
+msgstr "Ddadfachwyf"
+
+#: ../bin/ctrain.c:3219
+msgid "Flip Car"
+msgstr "Gwrthdroi Car"
+
+#: ../bin/ctrain.c:3222
+msgid "Clearance Lines On"
+msgstr "Llinellau Clirio Ymlaen"
+
+#: ../bin/ctrain.c:3225
+msgid "Clearance Lines Off"
+msgstr "Llinellau Clirio i ffwrdd"
+
+#: ../bin/ctrain.c:3227
+msgid "Flip Train"
+msgstr "Trên Gwrthdroi"
+
+#. 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:3234
+msgid "Change Direction"
+msgstr "Newid Cyfeiriad"
+
+#: ../bin/ctrain.c:3238
+msgid "Remove Car"
+msgstr "Tynnwch y Car"
+
+#: ../bin/ctrain.c:3241
+msgid "Remove Train"
+msgstr "Tynnwch y Trên"
+
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
+msgid "New"
+msgstr "Newydd"
+
+#: ../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: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)"
+
+#: ../bin/cturnout.c:437
+msgid "Unknown special case"
+msgstr "Achos arbennig anhysbys"
+
+#: ../bin/cturnout.c:564
+msgid "Connect Adjustable Tracks"
+msgstr "Cysylltu traciau addasadwy"
+
+#: ../bin/cturnout.c:1030
+msgid "splitTurnout: can't find segment"
+msgstr "Methu dod o hyd i segment"
+
+#: ../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:1524
+#, c-format
+msgid "Length=%s"
+msgstr "Hyd=%s"
+
+#: ../bin/cturnout.c:1815
+#, c-format
+msgid "Turnout %d Path: %s"
+msgstr "Pwynt %d Llwybr: %s"
+
+#: ../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:2394
+#, c-format
+msgid "0 connections (%s)"
+msgstr "0 cysylltiadau (%s)"
+
+#: ../bin/cturnout.c:2433
+msgid "Place New Turnout"
+msgstr "Rhowch bwynt newydd"
+
+#: ../bin/cturnout.c:2861
+#, c-format
+msgid "Angle = %0.3f (%s)"
+msgstr "Ongle = %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 "Dewis pwynt a diweddbwynt gweithredol, yna ei roi ar y cynllun"
+
+#: ../bin/cturnout.c:3190
+#, fuzzy
+msgid "Fixed-Track"
+msgstr "Ymestyn trac"
+
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
+msgid "Diameter"
+msgstr "Diamedr"
+
+#: ../bin/cturntbl.c:276
+msgid "# EndPt"
+msgstr "# Diweddbwynt"
+
+#: ../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:335 ../bin/cturntbl.c:454
+msgid "Turntable"
+msgstr "Trofwrdd"
+
+#: ../bin/cturntbl.c:670
+msgid "Drag to create stall track"
+msgstr "Llusgwch i greu trac stondinau"
+
+#: ../bin/cturntbl.c:728
+msgid "Connect Turntable Tracks"
+msgstr "Cysylltu traciau trofwrdd"
+
+#: ../bin/cturntbl.c:1058
+msgid "Create Turntable"
+msgstr "Creu Trofwrdd"
+
+#: ../bin/cturntbl.c:1090
+msgid "Custom Turntable"
+msgstr "Pwrpasol Trofwrdd"
+
+#: ../bin/cundo.c:266
+msgid "Undo Trace"
+msgstr "Dadwneud Olrhain"
+
+#: ../bin/cundo.c:741
+#, c-format
+msgid "Undo: %s"
+msgstr "Dadwneud: %s"
+
+#: ../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:749
+#, c-format
+msgid "Redo: %s"
+msgstr "Ail-wneud: %s"
+
+#: ../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:148
+#, c-format
+msgid "%s Turnout Designer"
+msgstr "%s Dylunydd Pwynt"
+
+#: ../bin/custom.c:152
+#, c-format
+msgid "%s Version %s"
+msgstr "%s Fersiwn %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 ""
+"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:166
+#, c-format
+msgid ""
+"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
+"(*)|*"
+msgstr ""
+"%s Cynllun trac (*.xtc)|*.xtc|%s Cynllun Trac Estynedig (*.xtce)|*.xtce|I "
+"gyd Ffeiliau (*)|*"
+
+#: ../bin/custom.c:174
+#, c-format
+msgid "All Files (*)|*"
+msgstr "I gyd Ffeiliau (*)|*"
+
+#: ../bin/custom.c:178
+#, c-format
+msgid "%s Import Files (*.xti)|*.xti"
+msgstr "%s Mewnforio ffeiliau (*.xti)|*.xti"
+
+#: ../bin/custom.c:182
+msgid "Data Exchange Format Files (*.dxf)|*.dxf"
+msgstr "Ffeiliau Fformat Cyfnewid Data (*.dxf)|*.dxf"
+
+#: ../bin/custom.c:186
+msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
+msgstr "Ffeiliau Fformat Graffeg Fector Scalable (*.svg)|*.svg"
+
+#: ../bin/custom.c:190
+#, c-format
+msgid "%s Record Files (*.xtr)|*.xtr"
+msgstr "%s Ffeiliau Cofnodi (*.xtr)|*.xtr"
+
+#: ../bin/custom.c:194
+#, c-format
+msgid "%s Note Files (*.not)|*.not"
+msgstr "%s Nodwch Ffeiliau (*.not)|*.not"
+
+#: ../bin/custom.c:198
+#, c-format
+msgid "%s Log Files (*.log)|*.log"
+msgstr "%s Ffeiliau Log (*.log)|*.log"
+
+#: ../bin/custom.c:202
+#, c-format
+msgid "%s PartsList Files (*.txt)|*.txt"
+msgstr "%s Ffeiliau Rhestr Rhannau (*.txt)|*.txt"
+
+#: ../bin/dbench.c:38
+msgid " L-Girder"
+msgstr "L-trawst"
+
+#: ../bin/dbench.c:38
+msgid " T-Girder"
+msgstr "T-trawst"
+
+#: ../bin/dbench.c:61
+msgid "On Edge"
+msgstr "Ar yr ymyl"
+
+#: ../bin/dbench.c:62
+msgid "Flat"
+msgstr "Gwastad"
+
+#: ../bin/dbench.c:67
+msgid "Left-Down"
+msgstr "Wedi'i adael i lawr"
+
+#: ../bin/dbench.c:68
+msgid "Right-Down"
+msgstr "I lawr"
+
+#: ../bin/dbench.c:69
+msgid "Left-Up"
+msgstr "Chwith i fyny"
+
+#: ../bin/dbench.c:70
+msgid "Right-Up"
+msgstr "I fyny"
+
+#: ../bin/dbench.c:71
+msgid "Left-Inverted"
+msgstr "Chwith Gwrthdro"
+
+#: ../bin/dbench.c:72
+msgid "Right-Inverted"
+msgstr "Gwrthdroi i'r dde"
+
+#: ../bin/dbench.c:78
+msgid "Inverted"
+msgstr "Gwrthdro"
+
+#: ../bin/dbench.c:147
+#, c-format
+msgid ""
+"Bad BenchType for %s:\n"
+"%s"
+msgstr ""
+"Math Mainc Drwg ar gyfer %s:\n"
+"%s"
+
+#: ../bin/dbitmap.c:150
+msgid "Drawing tracks to bitmap"
+msgstr "Tynnu traciau i BitMap"
+
+#: ../bin/dbitmap.c:187
+msgid "Drawn with "
+msgstr "Wedi'i dynnu gyda"
+
+#: ../bin/dbitmap.c:229
+msgid "Writing bitmap to file"
+msgstr "Ysgrifennu BitMap i'w ffeilio"
+
+#: ../bin/dbitmap.c:252
+msgid "Layout Titles"
+msgstr "Teitlau Cynllun"
+
+#: ../bin/dbitmap.c:253
+msgid "Borders"
+msgstr "Ffiniau"
+
+#: ../bin/dbitmap.c:254
+msgid "Centerline of Track"
+msgstr "Canolbwynt y Trac"
+
+#: ../bin/dbitmap.c:255
+msgid "Background Image"
+msgstr "Delwedd Cefndir"
+
+#: ../bin/dbitmap.c:262
+msgid "Include "
+msgstr "Gynnwys"
+
+#: ../bin/dbitmap.c:264
+msgid "Resolution "
+msgstr "Graddfa Datrysiad"
+
+#: ../bin/dbitmap.c:265
+msgid "dpi"
+msgstr "Dotiau y fodfedd"
+
+#: ../bin/dbitmap.c:266
+msgid "Bitmap Size "
+msgstr "Maint didfap"
+
+#: ../bin/dbitmap.c:268
+msgid "99999 by 99999 pixels"
+msgstr "99999 gan 99999 picsel"
+
+#: ../bin/dbitmap.c:269
+msgid "Approximate File Size "
+msgstr "Bras ffeilliau"
+
+#: ../bin/dbitmap.c:271
+msgid "999.9Mb"
+msgstr "999.9Mb"
+
+#: ../bin/dbitmap.c:317
+#, c-format
+msgid "%ld by %ld pixels"
+msgstr "%ld gan %ld picsel"
+
+#: ../bin/dbitmap.c:339
+#, c-format
+msgid "%0.0f"
+msgstr "%0.0f"
+
+#: ../bin/dbitmap.c:341
+#, c-format
+msgid "%0.1fKb"
+msgstr "%0.1f Kb"
+
+#: ../bin/dbitmap.c:343
+#, c-format
+msgid "%0.1fMb"
+msgstr "%0.1fMb"
+
+#: ../bin/dbitmap.c:345
+#, c-format
+msgid "%0.1fGb"
+msgstr "%0.1fGb"
+
+#: ../bin/dbitmap.c:436
+msgid "Save Bitmap"
+msgstr "Arbedwch BitMap"
+
+#: ../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:472
+msgid "Export to bitmap"
+msgstr "Allforio i BitMap"
+
+#: ../bin/dcar.c:45
+msgid "Truck"
+msgstr "Tryc"
+
+#: ../bin/dcar.c:45
+msgid "Body"
+msgstr "Corff"
+
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
+msgid "Unknown"
+msgstr "Anhysbys"
+
+#: ../bin/dcar.c:481
+msgid "Diesel Loco"
+msgstr "Locomotif Diesel"
+
+#: ../bin/dcar.c:482
+msgid "Steam Loco"
+msgstr "Locomotif Stêm"
+
+#: ../bin/dcar.c:483
+msgid "Elect Loco"
+msgstr "Locomotif Trydan"
+
+#: ../bin/dcar.c:484
+msgid "Freight Car"
+msgstr "Wagen cludo nwyddau"
+
+#: ../bin/dcar.c:485
+msgid "Psngr Car"
+msgstr "Cerbyd Teithwyr"
+
+#: ../bin/dcar.c:486
+msgid "M-O-W"
+msgstr "Cerbyd Lluosog"
+
+#: ../bin/dcar.c:487
+msgid "Other"
+msgstr "Arall"
+
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
+msgid "N/A"
+msgstr "Amherthnasol"
+
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
+msgid "Mint"
+msgstr "Cyflwr mintys"
+
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
+msgid "Excellent"
+msgstr "Cyflwr rhagorol"
+
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
+msgid "Good"
+msgstr "Cyflwr da"
+
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
+msgid "Fair"
+msgstr "Cyflwr teg"
+
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
+msgid "Poor"
+msgstr "Cyflwr gwael"
+
+#: ../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:2282 ../wlib/mswlib/mswmisc.c:2057
+msgid "Information"
+msgstr "Gwybodaeth"
+
+#: ../bin/dcar.c:2282
+msgid "Customize"
+msgstr "Addasu"
+
+#: ../bin/dcar.c:2296
+msgid "Sequential"
+msgstr "Dilyniannol"
+
+#: ../bin/dcar.c:2296
+msgid "Repeated"
+msgstr "Ailadroddwyd"
+
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
+msgid "Prototype"
+msgstr "Prototeip"
+
+#: ../bin/dcar.c:2315
+msgid "Part"
+msgstr "Rhan"
+
+#: ../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:2319
+msgid "Loco?"
+msgstr "Loco?"
+
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
+msgid "Import"
+msgstr "mewnforio"
+
+#: ../bin/dcar.c:2330
+msgid "Mode"
+msgstr "Modd"
+
+#: ../bin/dcar.c:2334
+msgid "Road"
+msgstr "Ffordd"
+
+#: ../bin/dcar.c:2336
+msgid "Reporting Mark"
+msgstr "Marc Adrodd"
+
+#: ../bin/dcar.c:2338
+msgid "Number"
+msgstr "Rhif"
+
+#: ../bin/dcar.c:2342
+msgid "Car Length"
+msgstr "Hyd Car"
+
+#: ../bin/dcar.c:2346
+msgid "Truck Centers"
+msgstr "Canolfannau Tryciau"
+
+#: ../bin/dcar.c:2350
+msgid "Coupler Mount"
+msgstr "Ymlyniad Cwplwr"
+
+#: ../bin/dcar.c:2352
+msgid "Coupled Length"
+msgstr "Hyd Cypledig"
+
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
+msgid "Coupler Length"
+msgstr "Hyd y Cwplwr"
+
+#: ../bin/dcar.c:2362
+msgid "Purchase Price"
+msgstr "Pris Prynu"
+
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
+msgid "Current Price"
+msgstr "Pris Cyfredol"
+
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
+msgid "Condition"
+msgstr "Cyflwr"
+
+#: ../bin/dcar.c:2368
+msgid "Purchase Date"
+msgstr "Dyddiad Prynu"
+
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
+msgid "Service Date"
+msgstr "Dyddiad Gwasanaeth"
+
+#: ../bin/dcar.c:2372
+msgid "Quantity"
+msgstr "Nifer"
+
+#: ../bin/dcar.c:2374
+msgid "Numbers"
+msgstr "Rhifau"
+
+#. 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:2383
+msgid "Car Part"
+msgstr "Rhan Car"
+
+#: ../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:2776 ../bin/dcar.c:3143
+msgid "Undecorated"
+msgstr "Heb addurn"
+
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
+msgid "Custom"
+msgstr "Wedi'i addasu"
+
+#: ../bin/dcar.c:3049
+msgid "Undecorated "
+msgstr "Heb addurn"
+
+#: ../bin/dcar.c:3298
+#, c-format
+msgid "New %s Scale Car"
+msgstr "Newydd %s Car Graddfa"
+
+#: ../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:3301
+#, c-format
+msgid "Update %s Scale Car"
+msgstr "Diweddariad %s Car Graddfa"
+
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321 ../bin/dcmpnd.c:178
+msgid "Update"
+msgstr "Diweddariad"
+
+#: ../bin/dcar.c:3307
+#, c-format
+msgid "New %s Scale Car Part"
+msgstr "Newydd %s Rhan Car Graddfa"
+
+#: ../bin/dcar.c:3310
+#, c-format
+msgid "Update %s Scale Car Part"
+msgstr "Diweddariad %s Rhan Car Graddfa"
+
+#: ../bin/dcar.c:3317
+msgid "New Prototype"
+msgstr "Newydd Prototeip"
+
+#: ../bin/dcar.c:3320
+msgid "Update Prototype"
+msgstr "Diweddariad Prototeip"
+
+#: ../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:4070 ../bin/dcar.c:4074
+msgid "Enter a 8 digit numeric date (yyyymmdd)"
+msgstr "Rhowch ddyddiad rhifol 8 digid (yyyymmdd)"
+
+#: ../bin/dcar.c:4077
+msgid "Enter a date between 19000101 and 21991231"
+msgstr "Rhowch ddyddiad rhwng 19000101 a 21991231"
+
+#: ../bin/dcar.c:4083
+msgid "Invalid month"
+msgstr "Mis Annilys"
+
+#: ../bin/dcar.c:4086
+msgid "Invalid day"
+msgstr "Diwrnod Annilys"
+
+#: ../bin/dcar.c:4184
+msgid "Select or Enter a Manufacturer"
+msgstr "Dewiswch neu Rhowch wneuthurwr"
+
+#: ../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:4410
+#, c-format
+msgid "Added %ld new Cars"
+msgstr "Wedi adio %ld ceir newydd"
+
+#: ../bin/dcar.c:4412
+msgid "Added new Car"
+msgstr "Ychwanegwyd car newydd"
+
+#: ../bin/dcar.c:4415
+msgid "Updated Car"
+msgstr "Car wedi'i ddiweddaru"
+
+#: ../bin/dcar.c:4418
+msgid " and Part"
+msgstr "A rhan"
+
+#: ../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:4451 ../bin/dcar.c:4473
+msgid "Added new"
+msgstr "Ychwanegwyd newydd"
+
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
+msgid "Updated"
+msgstr "Wedi'i ddiweddaru"
+
+#: ../bin/dcar.c:4472
+#, c-format
+msgid "%s Prototype: %s%s."
+msgstr "%s Prototeip: %s%s."
+
+#: ../bin/dcar.c:4474
+msgid ". Enter new values or press Close"
+msgstr ". Rhowch werthoedd newydd neu pwyswch Close"
+
+#: ../bin/dcar.c:4598
+msgid "New Car Part"
+msgstr "Rhan Car Newydd"
+
+#: ../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:4695
+msgid "Rep Marks"
+msgstr "Marciau Cynrychiolwyr"
+
+#: ../bin/dcar.c:4695
+msgid "Purc Price"
+msgstr "Pris Prynu"
+
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
+msgid "Curr Price"
+msgstr "Pris Cyfredol"
+
+#: ../bin/dcar.c:4696
+msgid "Purc Date"
+msgstr "Dyddiad Prynu"
+
+#: ../bin/dcar.c:4696
+msgid "Srvc Date"
+msgstr "Dyddiad Gwasanaeth"
+
+#: ../bin/dcar.c:4697
+msgid "Locat'n"
+msgstr "Lleoliad"
+
+#: ../bin/dcar.c:4701
+msgid "RepMarks"
+msgstr "Marciau Adrodd"
+
+#: ../bin/dcar.c:4701
+msgid "Purch Price"
+msgstr "Pris prynu"
+
+#: ../bin/dcar.c:4702
+msgid "Purch Date"
+msgstr "Dyddiad prynu"
+
+#: ../bin/dcar.c:4720
+msgid "Sort By"
+msgstr "Trefnu yn ôl"
+
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
+msgid "Edit"
+msgstr "Golygu"
+
+#: ../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:4736 ../bin/fileio.c:1631
+msgid "Export"
+msgstr "Allforio"
+
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
+msgid "List"
+msgstr "Rhestr"
+
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1416
+msgid "Car Inventory"
+msgstr "Rhestr Car"
+
+#: ../bin/dcar.c:5026
+msgid "List Cars"
+msgstr "Rhestrwch geir"
+
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
+msgid "Import Cars"
+msgstr "Mewnforio Ceir"
+
+#: ../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:5395 ../bin/dcar.c:5452
+msgid "Export Cars"
+msgstr "Allforio ceir"
+
+#: ../bin/dcar.c:5494
+msgid "Shelf"
+msgstr "Silff"
+
+#: ../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:111
+msgid "Updating definitions, please wait"
+msgstr "Diweddaru diffiniadau, arhoswch"
+
+#: ../bin/dcmpnd.c:178
+msgid "Update Title"
+msgstr "Diweddariad Teitl"
+
+#: ../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: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: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:341
+msgid "Skip"
+msgstr "Neidio"
+
+#: ../bin/dcmpnd.c:374
+#, c-format
+msgid "%d Track(s) refreshed"
+msgstr "%d Trac(iau) adnewyddu"
+
+#: ../bin/dcmpnd.c:419
+msgid "Refresh Turnout/Structure"
+msgstr "Adnewyddu Pwynt / Strwythur"
+
+#: ../bin/dcmpnd.c:423
+msgid "Choose a Turnout/Structure to replace:"
+msgstr "Dewiswch Bwynt / Strwythur i'w ddisodli"
+
+#. 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:436
+msgid "Structures"
+msgstr "Strwythurau"
+
+#: ../bin/dcmpnd.c:467
+msgid "Choose another Turnout/Structure to replace:"
+msgstr "Dewiswch Bwynt / Strwythur arall yn lle:"
+
+#: ../bin/dcmpnd.c:582
+msgid "Rename Object"
+msgstr "Ail-enwi Gwrthrych"
+
+#: ../bin/dcustmgm.c:54
+msgid "Create a new "
+msgstr "Creu newydd"
+
+#: ../bin/dcustmgm.c:56
+msgid "Go"
+msgstr "Ewch"
+
+#: ../bin/dcustmgm.c:62
+msgid "Move To"
+msgstr "Symud i"
+
+#: ../bin/dcustmgm.c:98
+msgid "Rename"
+msgstr "Ail-enwi"
+
+#: ../bin/dcustmgm.c:186
+msgid "Label"
+msgstr "Label"
+
+#: ../bin/dcustmgm.c:225
+msgid "Contents Label"
+msgstr "Label Cynnwys"
+
+#: ../bin/dcustmgm.c:284
+msgid "Move To XTP"
+msgstr "Symud i XTP"
+
+#: ../bin/dcustmgm.c:285
+msgid "Parameter File (*.xtp)|*.xtp"
+msgstr "Ffeil Paramedr (*.xtp)|*.xtp"
+
+#: ../bin/dcustmgm.c:407
+msgid "Manage custom designed parts"
+msgstr "Rheoli rhannau wedi'u cynllunio'n benodol"
+
+#: ../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:68
+msgid "Broad"
+msgstr "Eang"
+
+#: ../bin/dease.c:68
+msgid "Cornu"
+msgstr "Cornu"
+
+#: ../bin/dease.c:76
+msgid "Value"
+msgstr "Gwerth"
+
+#: ../bin/dease.c:77 ../bin/tease.c:530
+msgid "R"
+msgstr "R"
+
+#: ../bin/dease.c:79 ../bin/tease.c:531
+msgid "L"
+msgstr "L"
+
+#: ../bin/dease.c:250
+msgid "Easement"
+msgstr "Hawddfraint"
+
+#: ../bin/denum.c:44
+msgid "Prices"
+msgstr "Prisiau"
+
+#: ../bin/denum.c:45 ../bin/denum.c:139
+msgid "Indexes"
+msgstr "Mynegeion"
+
+#: ../bin/denum.c:50
+msgid "Save As ..."
+msgstr "Arbed fel"
+
+#: ../bin/denum.c:135 ../bin/denum.c:198 ../bin/denum.c:236
+msgid "Each"
+msgstr "yr un"
+
+#: ../bin/denum.c:152 ../bin/denum.c:154
+msgid "Parts List"
+msgstr "Rhestr Rhannau"
+
+#: ../bin/denum.c:160
+#, c-format
+msgid ""
+"%s Parts List\n"
+"\n"
+msgstr ""
+"%s Rhestr Rhannau\n"
+"\n"
+
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
+msgid "Extended"
+msgstr "Estynedig"
+
+#: ../bin/denum.c:247 ../bin/denum.c:251
+msgid "Total"
+msgstr "Cyfanswm"
+
+#: ../bin/dlayer.c:541
+msgid "Select Layer:"
+msgstr "Dewiswch Haen:"
+
+#: ../bin/dlayer.c:547
+msgid "Use Color"
+msgstr "Defnyddiwch Lliw"
+
+#: ../bin/dlayer.c:549
+msgid "Visible"
+msgstr "Gweladwy"
+
+#: ../bin/dlayer.c:551
+msgid "Frozen"
+msgstr "Rhewedig"
+
+#: ../bin/dlayer.c:553
+msgid "On Map"
+msgstr "Ar y Map"
+
+#: ../bin/dlayer.c:555
+msgid "Module"
+msgstr "Modiwl"
+
+#: ../bin/dlayer.c:557
+msgid "No Button"
+msgstr "Dim Botwm"
+
+#: ../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:586
+msgid "Settings when Current"
+msgstr "Gosodiadau pan fyddant yn Gyfredol"
+
+#: ../bin/dlayer.c:588
+msgid "Object Count:"
+msgstr "Cyfrif Gwrthrychau"
+
+#: ../bin/dlayer.c:589
+msgid "All Layer Preferences"
+msgstr "Pob Dewis Haen"
+
+#: ../bin/dlayer.c:591 ../bin/macro.c:1431
+msgid "Save"
+msgstr "Arbed"
+
+#: ../bin/dlayer.c:592
+msgid "Defaults"
+msgstr "Diffygion"
+
+#: ../bin/dlayer.c:710 ../bin/dlayer.c:1563 ../bin/dlayer.c:1581
+#: ../bin/dlayer.c:1651
+msgid "Main"
+msgstr "Prif"
+
+#: ../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:2071
+msgid "Layers"
+msgstr "Haenau"
+
+#: ../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:92
+msgid "Auto Pan"
+msgstr "Padell Auto"
+
+#: ../bin/doption.c:94
+msgid "All"
+msgstr "I gyd"
+
+#: ../bin/doption.c:95
+msgid "Thick"
+msgstr "Trwchus"
+
+#: ../bin/doption.c:95
+msgid "Exception"
+msgstr "Eithriad"
+
+#: ../bin/doption.c:96
+msgid "Outline"
+msgstr "Amlinelliad"
+
+#: ../bin/doption.c:97
+msgid "Off"
+msgstr "Bant"
+
+#: ../bin/doption.c:97
+msgid "On"
+msgstr "Ymlaen"
+
+#: ../bin/doption.c:98
+msgid "Track Descriptions"
+msgstr "Disgrifiadau trac"
+
+#: ../bin/doption.c:98
+msgid "Lengths"
+msgstr "Hyd"
+
+#: ../bin/doption.c:98
+msgid "EndPt Elevations"
+msgstr "Drychiadau pwynt diwedd"
+
+#: ../bin/doption.c:98
+msgid "Track Elevations"
+msgstr "Drychiadau trac"
+
+#: ../bin/doption.c:98
+msgid "Cars"
+msgstr "Ceir"
+
+#: ../bin/doption.c:99 ../bin/doption.c:100
+msgid "Descr"
+msgstr "Disgrifiad"
+
+#: ../bin/doption.c:100
+msgid "Manuf"
+msgstr "Gwneuthurwr"
+
+#: ../bin/doption.c:101 ../bin/doption.c:102
+msgid "Object"
+msgstr "Gwrthrych"
+
+#: ../bin/doption.c:103
+msgid "Live Map"
+msgstr "Map Byw"
+
+#: ../bin/doption.c:104
+msgid "Hide Trains On Hidden Track"
+msgstr "Cuddio Trenau ar Drac Cudd"
+
+#: ../bin/doption.c:105
+msgid "Constrain Drawing Area to Room boundaries"
+msgstr "Cyfyngu Ardal Arlunio i ffiniau Ystafelloedd"
+
+#: ../bin/doption.c:106
+msgid "Don't Hide System Cursor when program cursor is active"
+msgstr "Peidiwch â Chuddio Cyrchwr System"
+
+#: ../bin/doption.c:110
+msgid "Color Track"
+msgstr "Trac Lliw"
+
+#: ../bin/doption.c:111
+msgid "Color Draw"
+msgstr "Llun Lliw"
+
+#: ../bin/doption.c:112
+msgid "Draw Tunnel"
+msgstr "Twnnel Tynnu"
+
+#: ../bin/doption.c:113
+msgid "Draw EndPts"
+msgstr "Tynnu Pwyntiau Diwedd"
+
+#: ../bin/doption.c:114
+msgid "Draw Unconnected EndPts"
+msgstr "Tynnu Pwyntiau Diwedd Heb eu Cysylltu"
+
+#: ../bin/doption.c:115
+msgid "Draw Ties"
+msgstr "Tynnu Clymiadau"
+
+#: ../bin/doption.c:116
+msgid "Draw Centers"
+msgstr "Canolfannau Lluniadu"
+
+#: ../bin/doption.c:117
+msgid "Two Rail Scale"
+msgstr "Graddfa Dwy Reilffordd"
+
+#: ../bin/doption.c:118
+msgid "Map Scale"
+msgstr "Graddfa Map"
+
+#: ../bin/doption.c:124
+msgid "Label Enable"
+msgstr "Galluogi Label"
+
+#: ../bin/doption.c:125
+msgid "Label Scale"
+msgstr "Graddfa Label"
+
+#: ../bin/doption.c:126
+msgid "Label Font Size"
+msgstr "Maint Ffont Label"
+
+#: ../bin/doption.c:127
+msgid "Hot Bar Labels"
+msgstr "Label Bar Poeth"
+
+#: ../bin/doption.c:128
+msgid "Layout Labels"
+msgstr "Labeli Cynllun"
+
+#: ../bin/doption.c:129
+msgid "List Labels"
+msgstr "Labeli Rhestr"
+
+#: ../bin/doption.c:132
+msgid "Car Labels"
+msgstr "Labeli Ceir"
+
+#: ../bin/doption.c:133
+msgid "Train Update Delay"
+msgstr "Oedi Diweddaru Trên"
+
+#: ../bin/doption.c:176
+msgid "Turning off AutoSave"
+msgstr "Diffodd Auto-Save"
+
+#: ../bin/doption.c:187
+msgid "Turning on CheckPointing"
+msgstr "Troi ar Checkpointing"
+
+#: ../bin/doption.c:201
+msgid "Display Options"
+msgstr "Dewisiadau Arddangos"
+
+#: ../bin/doption.c:203
+msgid "Proto"
+msgstr "Prototeip"
+
+#: ../bin/doption.c:205
+msgid "Proto/Manuf"
+msgstr "Prototeip / Gwneuthurwr "
+
+#: ../bin/doption.c:208
+msgid "Proto/Manuf/Part Number"
+msgstr "Prototeip / Gwneuthurwr / Rhif Rhan"
+
+#: ../bin/doption.c:210
+msgid "Proto/Manuf/Partno/Item"
+msgstr "Prototeip / Gwneuthurwr / Rhif Rhan / Eitem"
+
+#: ../bin/doption.c:211
+msgid "Manuf/Proto"
+msgstr "Gwneuthurwr / Prototeip "
+
+#: ../bin/doption.c:214
+msgid "Manuf/Proto/Part Number"
+msgstr "Gwneuthurwr / Prototeip / Rhif Rhan"
+
+#: ../bin/doption.c:216
+msgid "Manuf/Proto/Partno/Item"
+msgstr "Gwneuthurwr / Prototeip / Rhif Rhan / Eitem"
+
+#: ../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:246
+msgid "Add to selection, +Ctrl Single item selected"
+msgstr "Ychwanegu at y dewis, + Ctrl Eitem sengl wedi'i dewis"
+
+#: ../bin/doption.c:247
+msgid "Deselect all on select nothing"
+msgstr "Dad-ddewiswch bawb wrth ddewis dim"
+
+#: ../bin/doption.c:252
+msgid "Normal: Command List, Shift: Command Options"
+msgstr "Arferol: Rhestr Reoli, Shift: Dewisiadau Gorchymyn"
+
+#: ../bin/doption.c:252
+msgid "Normal: Command Options, Shift: Command List"
+msgstr "Arferol: Dewisiadau Gorchymyn, Sifft: Rhestr Reoli"
+
+#: ../bin/doption.c:255
+msgid "Default Command"
+msgstr "Gorchymyn Diofyn"
+
+#: ../bin/doption.c:257
+msgid "Hide Selection Window"
+msgstr "Cuddio Ffenestr Dewis"
+
+#: ../bin/doption.c:259
+msgid "Right Click"
+msgstr "Cliciwch ar y dde"
+
+#: ../bin/doption.c:260
+msgid "Select Mode"
+msgstr "Dewiswch Modd"
+
+#: ../bin/doption.c:286
+msgid "Command Options"
+msgstr "Dewisiadau Gorchymyn"
+
+#: ../bin/doption.c:310
+msgid "16 px"
+msgstr "16 px"
+
+#: ../bin/doption.c:310
+msgid "24 px"
+msgstr "24 px"
+
+#: ../bin/doption.c:310
+msgid "32 px"
+msgstr "32 px"
+
+#: ../bin/doption.c:311
+msgid "English"
+msgstr "Ymerodrol"
+
+#: ../bin/doption.c:311
+msgid "Metric"
+msgstr "Metrig"
+
+#: ../bin/doption.c:312
+msgid "Polar"
+msgstr "Pegynol"
+
+#: ../bin/doption.c:312
+msgid "Cartesian"
+msgstr "Cartesaidd"
+
+#: ../bin/doption.c:313
+msgid "Balloon Help"
+msgstr "Cymorth Balŵn"
+
+#: ../bin/doption.c:314
+msgid "Show FlexTrack in HotBar"
+msgstr "Dangos Trac Hyblyg yn HotBar"
+
+#: ../bin/doption.c:315
+msgid "Load Last Layout"
+msgstr "Llwythwch y Cynllun Diwethaf"
+
+#: ../bin/doption.c:315
+msgid "Start New Layout"
+msgstr "Dechreuwch Gynllun Newydd"
+
+#: ../bin/doption.c:318
+msgid "Icon Size"
+msgstr "Maint eicon"
+
+#: ../bin/doption.c:319
+msgid "Angles"
+msgstr "Onglau"
+
+#: ../bin/doption.c:321
+msgid "Units"
+msgstr "Unedau mesur"
+
+#: ../bin/doption.c:323
+msgid "Length Format"
+msgstr "Fformat Hyd"
+
+#: ../bin/doption.c:324
+msgid "Min Track Length"
+msgstr "Hyd Trac Lleiaf"
+
+#: ../bin/doption.c:325
+msgid "Connection Distance"
+msgstr "Pellter Cysylltiad"
+
+#: ../bin/doption.c:326
+msgid "Connection Angle"
+msgstr "Ongl Cysylltiad"
+
+#: ../bin/doption.c:327
+msgid "Turntable Angle"
+msgstr "Ongl Trofwrdd"
+
+#: ../bin/doption.c:328
+msgid "Max Coupling Speed"
+msgstr "Cyflymder Cyplu Uchaf"
+
+#: ../bin/doption.c:331
+msgid "Drag Distance"
+msgstr "Pellter Llusgo"
+
+#: ../bin/doption.c:332
+msgid "Drag Timeout"
+msgstr "Llusgwch Amserlen"
+
+#: ../bin/doption.c:333
+msgid "Min Grid Spacing"
+msgstr "Lleiafswm Grid"
+
+#: ../bin/doption.c:335
+msgid "Check Point Frequency"
+msgstr "Amledd Checkpoint"
+
+#: ../bin/doption.c:337
+msgid "Autosave Checkpoint Frequency"
+msgstr "Amledd pwynt gwirio autosave"
+
+#: ../bin/doption.c:338
+msgid "On Program Startup"
+msgstr "Ar gychwyn rhaglen"
+
+#: ../bin/doption.c:348 ../bin/doption.c:352 ../bin/doption.c:370
+msgid "999.999"
+msgstr "999.999"
+
+#: ../bin/doption.c:349
+msgid "999.999999"
+msgstr "999.999999"
+
+#: ../bin/doption.c:350
+msgid "999.99999"
+msgstr "999.99999"
+
+#: ../bin/doption.c:351
+msgid "999.9999"
+msgstr "999.9999"
+
+#: ../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.999mm"
+
+#: ../bin/doption.c:374
+msgid "999.99mm"
+msgstr "999.99mm"
+
+#: ../bin/doption.c:375
+msgid "999.9mm"
+msgstr "999.9mm"
+
+#: ../bin/doption.c:376
+msgid "999.999cm"
+msgstr "999.999cm"
+
+#: ../bin/doption.c:377
+msgid "999.99cm"
+msgstr "999.99cm"
+
+#: ../bin/doption.c:378
+msgid "999.9cm"
+msgstr "999.9cm"
+
+#: ../bin/doption.c:379
+msgid "999.999m"
+msgstr "999.999m"
+
+#: ../bin/doption.c:380
+msgid "999.99m"
+msgstr "999.99m"
+
+#: ../bin/doption.c:381
+msgid "999.9m"
+msgstr "999.9m"
+
+#: ../bin/doption.c:516
+msgid "Preferences"
+msgstr "Dewisiadau"
+
+#: ../bin/doption.c:560
+msgid "Marker"
+msgstr "Marciwr"
+
+#: ../bin/doption.c:561
+msgid "Border"
+msgstr "Ffin"
+
+#: ../bin/doption.c:562
+msgid "Primary Axis"
+msgstr "Echel Cynradd"
+
+#: ../bin/doption.c:563
+msgid "Secondary Axis"
+msgstr "Echel Eilaidd"
+
+#: ../bin/doption.c:564
+msgid "Normal Track"
+msgstr "Trac Arferol"
+
+#: ../bin/doption.c:565
+msgid "Selected Track"
+msgstr "Trac Dethol"
+
+#: ../bin/doption.c:566
+msgid "Profile Path"
+msgstr "Llwybr Proffil"
+
+#: ../bin/doption.c:567
+msgid "Exception Track"
+msgstr "Trac Eithriad"
+
+#: ../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"
+
+#: ../bin/dpricels.c:56
+msgid "Flex Track"
+msgstr "Trac Hyblyg"
+
+#: ../bin/dpricels.c:57
+msgid "costs"
+msgstr "costau"
+
+#: ../bin/dpricels.c:166
+msgid "Price List"
+msgstr "Rhestr pris"
+
+#: ../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:77
+msgid "Select all"
+msgstr "Dewiswch Bawb"
+
+#: ../bin/dprmfile.c:77
+msgid "Favorite"
+msgstr "Hoff"
+
+#: ../bin/dprmfile.c:80
+msgid "Library..."
+msgstr "Llyfrgell ..."
+
+#: ../bin/dprmfile.c:81
+msgid "Browse..."
+msgstr "Porwch ..."
+
+#: ../bin/dprmfile.c:328
+#, c-format
+msgid "%d parameter files reloaded."
+msgstr "%d ffeiliau paramedr wedi'u hail-lwytho."
+
+#: ../bin/dprmfile.c:330
+msgid "One parameter file reloaded."
+msgstr "ail-lwythwyd un ffeil baramedr."
+
+#: ../bin/dprmfile.c:431
+msgid "Parameter Files"
+msgstr "Ffeiliau paramedr"
+
+#: ../bin/dprmfile.c:434
+msgid "Load Parameters"
+msgstr "Paramedrau llwyth"
+
+#: ../bin/dprmfile.c:434
+msgid "Parameter files (*.xtp)|*.xtp"
+msgstr "Ffeiliau paramedr (*.xtp)|*.xtp"
+
+#: ../bin/draw.c:2352
+msgid "Macro Zoom Mode"
+msgstr "Modd Chwyddo Macro"
+
+#: ../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: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: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:2450
+msgid "At Maximum Zoom Out"
+msgstr "Ar y Chwyddo Uchaf Uchaf"
+
+#: ../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"
+
+#: ../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:3281
+msgid "Map"
+msgstr "Map"
+
+#: ../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 ""
+"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:3330
+msgid "Pan Mode - drag point to new position"
+msgstr "Modd Pan - pwynt llusgo i'w safle newydd"
+
+#: ../bin/draw.c:3337
+msgid "Zoom Mode - drag area to zoom"
+msgstr "Modd Chwyddo - llusgo ardal i chwyddo"
+
+#: ../bin/draw.c:3365
+msgid "Can't move any further in that direction"
+msgstr "Methu symud ymhellach i'r cyfeiriad hwnnw"
+
+#: ../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"
+
+#: ../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 ""
+"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:3486
+msgid "Pan/Zoom"
+msgstr "Pan / Chwyddo "
+
+#: ../bin/draw.c:3502
+msgid "Zoom to 1:1 - '1'"
+msgstr "Chwyddo i 1:1 - '1'"
+
+#: ../bin/draw.c:3504
+msgid "Zoom to 1:2 - '2'"
+msgstr "Chwyddo i 1:2 - '2'"
+
+#: ../bin/draw.c:3506
+msgid "Zoom to 1:3 - '3'"
+msgstr "Chwyddo i 1:3 - '3'"
+
+#: ../bin/draw.c:3508
+msgid "Zoom to 1:4 - '4'"
+msgstr "Chwyddo i 1:4 - '4'"
+
+#: ../bin/draw.c:3510
+msgid "Zoom to 1:5 - '5'"
+msgstr "Chwyddo i 1:5 - '5'"
+
+#: ../bin/draw.c:3512
+msgid "Zoom to 1:6 - '6'"
+msgstr "Chwyddo i 1:6 - '6'"
+
+#: ../bin/draw.c:3514
+msgid "Zoom to 1:7 - '7'"
+msgstr "Chwyddo i 1:7 - '7'"
+
+#: ../bin/draw.c:3516
+msgid "Zoom to 1:8 - '8'"
+msgstr "Chwyddo i 1:8 - '8'"
+
+#: ../bin/draw.c:3518
+msgid "Zoom to 1:9 - '9'"
+msgstr "Chwyddo i 1:9 - '9'"
+
+#: ../bin/draw.c:3524
+msgid "Pan center here - 'c'"
+msgstr "Canolfan sosban yma - 'c'"
+
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
+msgid "Create Lines"
+msgstr "Creu Llinellau"
+
+#: ../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"
+
+#: ../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"
+
+#: ../bin/drawgeom.c:487
+msgid "Drag to set radius"
+msgstr "Llusgwch i osod radiws"
+
+#: ../bin/drawgeom.c:501
+msgid "Drag set box size"
+msgstr "Llusgwch faint blwch gosod"
+
+#: ../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:625 ../bin/drawgeom.c:691
+#, c-format
+msgid "Length = %s, Angle = %0.2f"
+msgstr "Hyd = %s, Ongle = %0.2f"
+
+#: ../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: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:761 ../bin/drawgeom.c:769
+#, c-format
+msgid "Radius = %s"
+msgstr "Radiws = %s"
+
+#: ../bin/drawgeom.c:780
+#, c-format
+msgid "Width = %s, Height = %s"
+msgstr "Lled = %s, Uchder = %s"
+
+#: ../bin/drawgeom.c:841
+msgid "Drag on Red arrows to adjust curve"
+msgstr "Llusgwch saethau coch i addasu'r gromlin"
+
+#: ../bin/drawgeom.c:1298
+msgid "Select points or use context menu"
+msgstr "Dewis pwyntiau neu ddefnyddio dewislen cyd-destun"
+
+#: ../bin/drawgeom.c:1567
+#, c-format
+msgid "Length = %s, Last angle = %0.2f"
+msgstr "Hyd = %s, Ongl olaf = %0.2f"
+
+#: ../bin/drawgeom.c:1736
+msgid "Point Deleted"
+msgstr "Pwynt wedi'i ddileu"
+
+#: ../bin/drawgeom.c:2194
+msgid "Not close to end of line"
+msgstr "Ddim yn agos at ddiwedd y llinell"
+
+#: ../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:2303 ../bin/drawgeom.c:2550
+msgid "Drag to Move Corner Point"
+msgstr "Llusgwch i Symud Pwynt Cornel"
+
+#: ../bin/drawgeom.c:2311
+msgid "Drag to Move Edge "
+msgstr "Llusgwch i Symud Ymyl"
+
+#: ../bin/drawgeom.c:2383
+#, c-format
+msgid "Length = %0.3f Angle = %0.3f"
+msgstr "Hyd = %0.3f Ongle = %0.3f"
+
+#: ../bin/drawgeom.c:2544
+msgid "Drag to Move Edge"
+msgstr "Llusgwch i Symud Ymyl"
+
+#: ../bin/dxfoutput.c:244
+msgid "Export to DXF"
+msgstr "Allforio i DXF"
+
+#: ../bin/fileio.c:223
+msgid ""
+"\n"
+"Do you want to continue?"
+msgstr ""
+"\n"
+"Ydych chi am barhau?"
+
+#: ../bin/fileio.c:595
+#, c-format
+msgid "putTitle: title too long: %s"
+msgstr "putTitle: teitl yn rhy hir: %s"
+
+#: ../bin/fileio.c:627
+msgid "Unnamed Trackplan"
+msgstr "Cynllun Trac Dienw"
+
+#: ../bin/fileio.c:628
+msgid " (R/O)"
+msgstr " (R/O)"
+
+#: ../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:835 ../bin/fileio.c:1022
+msgid "Track"
+msgstr "Trac"
+
+#: ../bin/fileio.c:836
+msgid "Not Found"
+msgstr "Heb ei ddarganfod"
+
+#: ../bin/fileio.c:1265
+msgid "AutoSave Tracks As"
+msgstr "Traciau AutoSave Fel"
+
+#: ../bin/fileio.c:1280
+msgid "Save Tracks"
+msgstr "Arbed Traciau"
+
+#: ../bin/fileio.c:1297
+msgid "Save Tracks As"
+msgstr "Arbed Traciau Fel"
+
+#: ../bin/fileio.c:1309
+msgid "Open Tracks"
+msgstr "Traciau Agored"
+
+#: ../bin/fileio.c:1323
+msgid "Example Tracks"
+msgstr "Traciau Enghreifftiol"
+
+#: ../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:1580 ../bin/fileio.c:1601
+msgid "Import Tracks"
+msgstr "Traciau Mewnforio"
+
+#: ../bin/fileio.c:1601
+#, fuzzy
+msgid "Import Module"
+msgstr "Modiwl Mewnforio"
+
+#: ../bin/fileio.c:1659
+msgid "Export Tracks"
+msgstr "Traciau Allforio"
+
+#: ../bin/fileio.c:1680
+msgid "Clipboard"
+msgstr "Clipfwrdd"
+
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
+msgid "Position X"
+msgstr "Swydd X"
+
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
+msgid "Position Y"
+msgstr "Swydd Y"
+
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
+msgid "Title"
+msgstr "Teitl"
+
+#: ../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:70
+msgid "Select..."
+msgstr "Dewiswch ..."
+
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
+msgid "Open..."
+msgstr "Ar agor .."
+
+#: ../bin/filenoteui.c:134
+msgid "Add Document"
+msgstr "Ychwanegu Dogfen"
+
+#: ../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:297
+#, c-format
+msgid "Document(%d) Layer=%d %-.80s [%s]"
+msgstr "Dogfen(%d) Haed=%d %-.80s [%s]"
+
+#: ../bin/filenoteui.c:318
+#, fuzzy
+msgid "Update Document"
+msgstr "Dogfen Ddiweddaru"
+
+#: ../bin/filenoteui.c:330
+msgid "Describe the file"
+msgstr "Disgrifiwch y ffeil"
+
+#: ../bin/filenoteui.c:338
+#, fuzzy
+msgid "Attach Document"
+msgstr "Atodwch y ddogfen"
+
+#: ../bin/i18n.c:57
+#, c-format
+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:553 ../bin/layout.c:994
+#, c-format
+msgid "Unable to load Image File - %s"
+msgstr "Methu llwytho Ffeil Delwedd - %s"
+
+#: ../bin/layout.c:630
+msgid "Load Background"
+msgstr "Cefndir Llwyth"
+
+#: ../bin/layout.c:657
+msgid "Room Width"
+msgstr "Lled Ystafell"
+
+#: ../bin/layout.c:658
+msgid " Height"
+msgstr " Uchder"
+
+#: ../bin/layout.c:659
+msgid "Layout Title"
+msgstr "Teitl y Cynllun"
+
+#: ../bin/layout.c:660
+msgid "Subtitle"
+msgstr "Is-deitl"
+
+#: ../bin/layout.c:669
+msgid "Background File Path"
+msgstr "Llwybr Ffeil Cefndir"
+
+#: ../bin/layout.c:670
+msgid "Browse ..."
+msgstr "Porwch ..."
+
+#: ../bin/layout.c:673
+msgid "Background PosX,Y"
+msgstr "Sefyllfa Gefndir X,Y"
+
+#: ../bin/layout.c:677
+msgid "Background Size"
+msgstr "Maint Cefndir"
+
+#: ../bin/layout.c:679
+msgid "Background Screen %"
+msgstr "Sgrin Cefndir %"
+
+#: ../bin/layout.c:681
+msgid "Background Angle"
+msgstr "Ongle Cefndir"
+
+#: ../bin/layout.c:682
+msgid "Named Settings File"
+msgstr "Ffeil Gosodiadau a Enwyd"
+
+#: ../bin/layout.c:683
+msgid "Write"
+msgstr "Ysgrifennu"
+
+#: ../bin/layout.c:684
+msgid "Read"
+msgstr "Darllenwch"
+
+#: ../bin/layout.c:818
+msgid "Layout Options"
+msgstr "Opsiynau Cynllun"
+
+#: ../bin/layout.c:1052
+msgid "Read Settings"
+msgstr "Darllenwch Gosodiadau"
+
+#: ../bin/layout.c:1053 ../bin/layout.c:1087
+msgid "Settings File (*.xset)|*.xset"
+msgstr "Ffeil Gosodiadau (*.xset)|*.xset"
+
+#: ../bin/layout.c:1086
+msgid "Write Settings"
+msgstr "Ysgrifennwch Gosodiadau"
+
+#: ../bin/linknoteui.c:56
+msgid "URL"
+msgstr "URL"
+
+#: ../bin/linknoteui.c:230
+#, fuzzy
+msgid "Update Webink"
+msgstr "Diweddariad Dolen"
+
+#: ../bin/linknoteui.c:248
+#, fuzzy
+msgid "Create Weblink"
+msgstr "Creu Cyswllt"
+
+#: ../bin/macro.c:67
+msgid "Message"
+msgstr "Neges"
+
+#: ../bin/macro.c:166
+msgid "Recording"
+msgstr "Recordio"
+
+#: ../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:271
+msgid "Record"
+msgstr "Cofnod"
+
+#: ../bin/macro.c:686
+msgid "Step"
+msgstr "Cam"
+
+#: ../bin/macro.c:689 ../bin/macro.c:1560
+msgid "Next"
+msgstr "Nesaf"
+
+#: ../bin/macro.c:692 ../bin/misc.c:696 ../bin/track.c:1104
+msgid "Quit"
+msgstr "Adael"
+
+#: ../bin/macro.c:695 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
+msgid "Speed"
+msgstr "Cyflymder"
+
+#: ../bin/macro.c:855 ../bin/track.c:1344
+msgid "Regression"
+msgstr "Atchweliad"
+
+#: ../bin/macro.c:1010 ../bin/macro.c:1410
+msgid "Demo"
+msgstr "Arddangos"
+
+#: ../bin/macro.c:1219
+#, c-format
+msgid "Elapsed time %lu\n"
+msgstr "Amser a aeth heibio %lu\n"
+
+#: ../bin/macro.c:1329
+msgid "Playback"
+msgstr "Chwarae"
+
+#: ../bin/macro.c:1414
+msgid "Slowest"
+msgstr "Mwyaf Araf"
+
+#: ../bin/macro.c:1415
+msgid "Slow"
+msgstr "Araf"
+
+#: ../bin/macro.c:1417
+msgid "Fast"
+msgstr "Cyflym"
+
+#: ../bin/macro.c:1418
+msgid "Faster"
+msgstr "Cyflymach"
+
+#: ../bin/macro.c:1419
+msgid "Fastest"
+msgstr "Cyflymaf"
+
+#: ../bin/macro.c:1542
+msgid "Can not find PARAMETER playback proc"
+msgstr "Methu dod o hyd i proc chwarae PARAMETER"
+
+#: ../bin/menu.c:130
+msgid "File Buttons"
+msgstr "Botymau ffeil"
+
+#: ../bin/menu.c:130
+msgid "Print Buttons"
+msgstr "Botymau Argraffu"
+
+#: ../bin/menu.c:130
+msgid "Import/Export Buttons"
+msgstr "Botymau Mewnforio / Allforio"
+
+#: ../bin/menu.c:131
+msgid "Zoom Buttons"
+msgstr "Botymau Chwyddo"
+
+#: ../bin/menu.c:131
+msgid "Undo Buttons"
+msgstr "Dadwneud Botymau"
+
+#: ../bin/menu.c:131
+msgid "Easement Button"
+msgstr "Botwm Rhwyddineb"
+
+#: ../bin/menu.c:131
+msgid "SnapGrid Buttons"
+msgstr "Botwm Snap-Grid"
+
+#: ../bin/menu.c:132
+msgid "Create Track Buttons"
+msgstr "Creu Botymau Trac"
+
+#: ../bin/menu.c:132
+msgid "Layout Control Elements"
+msgstr "Elfennau Rheoli Cynllun"
+
+#: ../bin/menu.c:133
+msgid "Modify Track Buttons"
+msgstr "Addasu Botymau Trac"
+
+#: ../bin/menu.c:133
+msgid "Properties/Select"
+msgstr "Priodweddau / Dewis"
+
+#: ../bin/menu.c:134
+msgid "Track Group Buttons"
+msgstr "Botymau Grŵp Trac "
+
+#: ../bin/menu.c:134
+msgid "Train Group Buttons"
+msgstr "Botymau Grŵp Trên"
+
+#: ../bin/menu.c:135
+msgid "Create Misc Buttons"
+msgstr "Creu Botymau Amrywiol"
+
+#: ../bin/menu.c:135
+msgid "Ruler Button"
+msgstr "Creu Botymau Amrywiol"
+
+#: ../bin/menu.c:136
+msgid "Layer Buttons"
+msgstr "Botymau Haen"
+
+#: ../bin/menu.c:136
+msgid "Hot Bar"
+msgstr "Bar Poeth"
+
+#: ../bin/menu.c:225 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
+msgid "Change Elevations"
+msgstr "Newid Drychiadau"
+
+#: ../bin/menu.c:250
+msgid "Angle:"
+msgstr "Ongle:"
+
+#: ../bin/menu.c:255
+msgid "Indexes:"
+msgstr "Mynegeion:"
+
+#: ../bin/menu.c:262
+msgid "Move X:"
+msgstr "Symud X:"
+
+#: ../bin/menu.c:263
+msgid "Move Y:"
+msgstr "Symud Y:"
+
+#: ../bin/menu.c:282
+msgid "Select Index"
+msgstr "Dewis Mynegai"
+
+#: ../bin/menu.c:330
+msgid "Enter Move ..."
+msgstr "Rhowch Symud ..."
+
+#: ../bin/menu.c:336
+msgid "Select Track Index ..."
+msgstr "Dewiswch Mynegai Trac"
+
+#: ../bin/menu.c:343
+msgid "180 "
+msgstr "180 "
+
+#: ../bin/menu.c:344
+msgid "90 CW"
+msgstr "90 CW"
+
+#: ../bin/menu.c:345
+msgid "45 CW"
+msgstr "45 CW"
+
+#: ../bin/menu.c:346
+msgid "30 CW"
+msgstr "30 CW"
+
+#: ../bin/menu.c:347
+msgid "15 CW"
+msgstr "15 CW"
+
+#: ../bin/menu.c:348
+msgid "15 CCW"
+msgstr "15 CCW"
+
+#: ../bin/menu.c:349
+msgid "30 CCW"
+msgstr "30 CCW"
+
+#: ../bin/menu.c:350
+msgid "45 CCW"
+msgstr "45 CCW"
+
+#: ../bin/menu.c:351
+msgid "90 CCW"
+msgstr "90 CCW"
+
+#: ../bin/menu.c:352
+msgid "Enter Angle ..."
+msgstr "Rhowch Ongle ..."
+
+#: ../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/menu.c:497
+msgid "Debug"
+msgstr "Debug"
+
+#: ../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/menu.c:885
+msgid "&Edit"
+msgstr "&Golygu"
+
+#: ../bin/menu.c:886
+msgid "&View"
+msgstr "G&weld"
+
+#: ../bin/menu.c:887
+msgid "&Add"
+msgstr "&Ychwanegu"
+
+#: ../bin/menu.c:888
+msgid "&Change"
+msgstr "&Newid"
+
+#: ../bin/menu.c:889
+msgid "&Draw"
+msgstr "&Tynnu"
+
+#: ../bin/menu.c:890
+msgid "&Manage"
+msgstr "&Rheoli"
+
+#: ../bin/menu.c:891
+msgid "&Options"
+msgstr "&Opsiynau"
+
+#: ../bin/menu.c:892
+msgid "&Macro"
+msgstr "&Macro"
+
+#: ../bin/menu.c:893
+msgid "&Window"
+msgstr "Ff&enestr"
+
+#: ../bin/menu.c:894
+msgid "&Help"
+msgstr "&Helpu"
+
+#: ../bin/menu.c:930
+msgid "Context Commands"
+msgstr "Gorchmynion Cyd-destun"
+
+#: ../bin/menu.c:931
+msgid "Shift Context Commands"
+msgstr "Gorchmynion Cyd-destun Sifft"
+
+#: ../bin/menu.c:945 ../bin/menu.c:947
+msgid "Zoom Extents"
+msgstr "Maint Chwyddo"
+
+#: ../bin/menu.c:950 ../bin/menu.c:1185
+msgid "Enable SnapGrid"
+msgstr "Galluogi Snap-Grid"
+
+#: ../bin/menu.c:952
+msgid "SnapGrid Show"
+msgstr "Dangos Snap-Grid"
+
+#: ../bin/menu.c:955
+msgid " Enable Magnetic Snap"
+msgstr "Galluogi Snap Magnetig"
+
+#: ../bin/menu.c:957 ../bin/menu.c:1207
+msgid "Show/Hide Map"
+msgstr "Dangos / Cuddio Map"
+
+#: ../bin/menu.c:981 ../bin/menu.c:983
+msgid "Select Track Index..."
+msgstr "Dewiswch Mynegai Trac..."
+
+#: ../bin/menu.c:995 ../bin/menu.c:996
+msgid "Add..."
+msgstr "Ychwanegu ..."
+
+#: ../bin/menu.c:999 ../bin/menu.c:1000
+msgid "More..."
+msgstr "Mwy ..."
+
+#: ../bin/menu.c:1005
+msgid "&New ..."
+msgstr "&Newydd"
+
+#: ../bin/menu.c:1007
+msgid "&Open ..."
+msgstr "&Agor"
+
+#: ../bin/menu.c:1011 ../bin/misc.c:660
+msgid "&Save"
+msgstr "&Arbedwch"
+
+#: ../bin/menu.c:1013
+msgid "Save &As ..."
+msgstr "Arbed &Fel"
+
+#: ../bin/menu.c:1015
+msgid "Revert"
+msgstr "Dychwelwch"
+
+#: ../bin/menu.c:1028
+msgid "P&rint Setup ..."
+msgstr "&Gosodiad Argraffu"
+
+#: ../bin/menu.c:1036
+msgid "&Import"
+msgstr "&Mewnforio"
+
+#: ../bin/menu.c:1038
+msgid "Import &Module"
+msgstr "Modiwl Mewnforio"
+
+#: ../bin/menu.c:1041
+msgid "Export to &Bitmap"
+msgstr "Export to &Bitmap"
+
+#: ../bin/menu.c:1044
+msgid "E&xport"
+msgstr "Allforio"
+
+#: ../bin/menu.c:1046
+msgid "Export D&XF"
+msgstr "Allforio DXF"
+
+#: ../bin/menu.c:1050
+msgid "Export S&VG"
+msgstr "Allforio S&VG"
+
+#: ../bin/menu.c:1056
+msgid "Parameter &Files ..."
+msgstr "&Ffeiliau Paramedr ..."
+
+#: ../bin/menu.c:1058
+msgid "No&tes ..."
+msgstr "Nodiadau"
+
+#: ../bin/menu.c:1065
+msgid "E&xit"
+msgstr "Allanfa"
+
+#: ../bin/menu.c:1102
+msgid "&Undo"
+msgstr "Dadwneud"
+
+#: ../bin/menu.c:1104
+msgid "R&edo"
+msgstr "Ail-wneud"
+
+#: ../bin/menu.c:1107
+msgid "Cu&t"
+msgstr "Torri"
+
+#: ../bin/menu.c:1109
+msgid "&Copy"
+msgstr "Copi"
+
+#: ../bin/menu.c:1111
+msgid "&Paste"
+msgstr "Gludo"
+
+#: ../bin/menu.c:1113
+msgid "C&lone"
+msgstr "Clôn"
+
+#: ../bin/menu.c:1115
+msgid "De&lete"
+msgstr "Dileu"
+
+#: ../bin/menu.c:1123
+msgid "Select &All"
+msgstr "Dewiswch Bawb"
+
+#: ../bin/menu.c:1127
+msgid "Select By Index"
+msgstr "Dewiswch yn ôl Mynegai"
+
+#: ../bin/menu.c:1129
+msgid "&Deselect All"
+msgstr "Dad-ddewis Pawb"
+
+#: ../bin/menu.c:1131
+msgid "&Invert Selection"
+msgstr "Dewis Gwrthdro"
+
+#: ../bin/menu.c:1134
+msgid "Select Stranded Track"
+msgstr "Dewiswch Trac sownd"
+
+#: ../bin/menu.c:1136
+msgid "Tu&nnel"
+msgstr "Twnnel"
+
+#: ../bin/menu.c:1138
+msgid "B&ridge"
+msgstr "Pont"
+
+#: ../bin/menu.c:1140
+#, fuzzy
+msgid "&Roadbed"
+msgstr "Ffordd"
+
+#: ../bin/menu.c:1144
+msgid "Move to &Front"
+msgstr "Symud i'r Blaen"
+
+#: ../bin/menu.c:1146
+msgid "Move to &Back"
+msgstr "Symud Yn Ôl"
+
+#: ../bin/menu.c:1161
+msgid "Zoom &In"
+msgstr "Chwyddo i mewn"
+
+#: ../bin/menu.c:1164
+msgid "Zoom &Out"
+msgstr "Chwyddo allan"
+
+#: ../bin/menu.c:1167
+msgid "Zoom &Extents"
+msgstr "Maint Chwyddo"
+
+#: ../bin/menu.c:1178
+msgid "&Redraw"
+msgstr "Ail-lunio"
+
+#: ../bin/menu.c:1180
+msgid "Redraw All"
+msgstr "Ail-lunio Pawb"
+
+#: ../bin/menu.c:1187
+msgid "Show SnapGrid"
+msgstr "Dangos SnapGrid"
+
+#: ../bin/menu.c:1198
+msgid "Enable Magnetic Snap"
+msgstr "Enable Magnetic Snap"
+
+#: ../bin/menu.c:1213
+msgid "&Tool Bar"
+msgstr "Bar offer"
+
+#: ../bin/menu.c:1247 ../bin/menu.c:1248
+msgid "Control Element"
+msgstr "Elfen Reoli"
+
+#: ../bin/menu.c:1280
+msgid "Change Scale"
+msgstr "Graddfa Newid"
+
+#: ../bin/menu.c:1296
+msgid "Raise/Lower Elevations"
+msgstr "Codi / Drychiadau Is"
+
+#: ../bin/menu.c:1305
+msgid "Recompute Elevations"
+msgstr "Ailgyfrifo Drychiadau"
+
+#: ../bin/menu.c:1323
+msgid "L&ayout ..."
+msgstr "Cynllun ..."
+
+#: ../bin/menu.c:1325
+msgid "&Display ..."
+msgstr "Arddangos ..."
+
+#: ../bin/menu.c:1327
+msgid "Co&mmand ..."
+msgstr "Gorchymyn ..."
+
+#: ../bin/menu.c:1329
+msgid "&Easements ..."
+msgstr "Rhwyddinebau ..."
+
+#: ../bin/menu.c:1332
+msgid "&Fonts ..."
+msgstr "Ffontiau ..."
+
+#: ../bin/menu.c:1334
+msgid "Stic&ky ..."
+msgstr "Gludiog ..."
+
+#: ../bin/menu.c:1339
+msgid "&Debug ..."
+msgstr "Debug"
+
+#: ../bin/menu.c:1342
+msgid "&Preferences ..."
+msgstr "Dewisiadau ..."
+
+#: ../bin/menu.c:1344
+msgid "&Colors ..."
+msgstr "Lliwiau ..."
+
+#: ../bin/menu.c:1350
+msgid "&Record ..."
+msgstr "Cofnod ..."
+
+#: ../bin/menu.c:1352
+msgid "&Play Back ..."
+msgstr "Ailchwarae ..."
+
+#: ../bin/menu.c:1358
+msgid "Main window"
+msgstr "Prif Ffenestr"
+
+#: ../bin/menu.c:1372
+msgid "Recent Messages"
+msgstr "Negeseuon Diweddar"
+
+#: ../bin/menu.c:1379
+msgid "Tip of the Day..."
+msgstr "Blaen y Dydd ..."
+
+#: ../bin/menu.c:1381
+msgid "&Demos"
+msgstr "Demos"
+
+#: ../bin/menu.c:1382
+msgid "Examples..."
+msgstr "Enghreifftiau ..."
+
+#: ../bin/menu.c:1386 ../bin/smalldlg.c:210
+msgid "About"
+msgstr "Ynghylch"
+
+#: ../bin/menu.c:1399
+msgid "Tur&nout Designer..."
+msgstr "Dylunydd Pwynt"
+
+#: ../bin/menu.c:1402
+msgid "Layout &Control Elements"
+msgstr "Elfennau Rheoli Cynllun"
+
+#: ../bin/menu.c:1404
+msgid "&Group"
+msgstr "Grŵp"
+
+#: ../bin/menu.c:1406
+msgid "&Ungroup"
+msgstr "Di-grŵp"
+
+#: ../bin/menu.c:1410
+msgid "Custom defined parts..."
+msgstr "Rhannau wedi'u diffinio'n benodol"
+
+#: ../bin/menu.c:1413
+msgid "Update Turnouts and Structures"
+msgstr "Diweddaru pwyntiau a strwythurau"
+
+#: ../bin/menu.c:1422
+msgid "Layers ..."
+msgstr "Haenau ..."
+
+#: ../bin/menu.c:1426
+msgid "Parts &List ..."
+msgstr "Rhestr Rhannau ..."
+
+#: ../bin/menu.c:1429
+msgid "Price List..."
+msgstr "Rhestr pris ..."
+
+#: ../bin/menu.c:1458 ../bin/menu.c:1459
+msgid "Import/Export"
+msgstr "Mewnforio / Allforio"
+
+#: ../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?"
+msgstr ""
+"Ni ddaeth y rhaglen i ben yn iawn. Ydych chi am ailddechrau gweithio ar y "
+"cynllun blaenorol?"
+
+#: ../bin/misc.c:992
+msgid "Resume"
+msgstr "Ail-ddechrau"
+
+#: ../bin/misc.c:992
+msgid "Resume with New Name"
+msgstr "Ail-ddechrau gydag enw newydd"
+
+#: ../bin/misc.c:992
+msgid "Ignore Checkpoint"
+msgstr "Anwybyddu pwynt gwirio"
+
+#: ../bin/misc.c:995
+#, c-format
+msgid "Reload Checkpoint Selected\n"
+msgstr "Pwynt Gwirio Ail-lwytho wedi'i Ddethol\n"
+
+#: ../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:999
+#, c-format
+msgid "Ignore Checkpoint Selected\n"
+msgstr "Anwybyddu Checkpoint a ddewiswyd\n"
+
+#: ../bin/misc.c:1121
+#, c-format
+msgid "Unnamed Trackplan - %s(%s)"
+msgstr "Cynllun dienw - %s(%s)"
+
+#: ../bin/misc.c:1175
+msgid "Initializing commands"
+msgstr "Cychwyn Gorchmynion"
+
+#: ../bin/misc.c:1184
+msgid "Initializing menus"
+msgstr "Cychwyn Bwydlenni"
+
+#: ../bin/misc.c:1216
+msgid "Reading parameter files"
+msgstr "Darllen Ffeiliau Paramedr"
+
+#: ../bin/misc.c:1260
+msgid "Initialization complete"
+msgstr "Daeth y Cychwyn i ben"
+
+#: ../bin/param.c:76
+msgid "Unexpected End Of String"
+msgstr "Diwedd annisgwyl y llinyn"
+
+#: ../bin/param.c:83
+msgid "Expected digit"
+msgstr "Nifer disgwyliedig"
+
+#: ../bin/param.c:91
+msgid "Overflow"
+msgstr "Gorlif"
+
+#: ../bin/param.c:140
+msgid "Divide by 0"
+msgstr "Rhannwch â 0"
+
+#: ../bin/param.c:148
+msgid "Expected /"
+msgstr "Disgwyliedig /"
+
+#: ../bin/param.c:233
+msgid "Invalid Units Indicator"
+msgstr "Dangosydd Unedau Annilys"
+
+#: ../bin/param.c:261
+msgid "Expected End Of String"
+msgstr "Diwedd disgwyliedig y Llinyn"
+
+#: ../bin/param.c:289 ../bin/param.c:1528
+#, c-format
+msgid "Invalid Number"
+msgstr "Rhif Annilys"
+
+#: ../bin/param.c:349
+msgid "End Of String"
+msgstr "Diwedd y Llinyn"
+
+#: ../bin/param.c:1486
+#, c-format
+msgid "Enter a value > %ld"
+msgstr "Rhowch werth > %ld"
+
+#: ../bin/param.c:1489
+#, c-format
+msgid "Enter a value < %ld"
+msgstr "Rhowch werth < %ld"
+
+#: ../bin/param.c:1491
+#, c-format
+msgid "Enter a value between %ld and %ld"
+msgstr "Rhowch werth rhwng %ld a %ld"
+
+#: ../bin/param.c:1568
+#, c-format
+msgid "Enter a value > %s"
+msgstr "Rhowch werth > %s"
+
+#: ../bin/param.c:1572
+#, c-format
+msgid "Enter a value < %s"
+msgstr "Rhowch werth < %s"
+
+#: ../bin/param.c:1575
+#, c-format
+msgid "Enter a value between %s and %s"
+msgstr "Rhowch werth rhwng %s a %s"
+
+#: ../bin/param.c:1674
+msgid "String cannot be blank"
+msgstr "Ni all llinyn fod yn wag"
+
+#: ../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:3043
+msgid "Help"
+msgstr "Help"
+
+#: ../bin/paramfile.c:258
+msgid "Parameter"
+msgstr "Paramedr"
+
+#: ../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."
+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:126
+#, c-format
+msgid "Updating %s"
+msgstr "Diweddaru %s"
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Any"
+msgstr "Ffitiwch Unrhyw"
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Compatible"
+msgstr "Ffit Cydnaws"
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Exact"
+msgstr "Ffit Union"
+
+#: ../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:307
+#, c-format
+msgid "%d parameter files found. %d Fit Scale"
+msgstr "%d ffeiliau paramedr wedi'u darganfod. %d Graddfa Ffit"
+
+#: ../bin/paramfilesearch_ui.c:317
+msgid "No matches found."
+msgstr "Ni ddarganfuwyd gemau."
+
+#: ../bin/paramfilesearch_ui.c:477
+msgid "Choose parameter files"
+msgstr "Dewiswch ffeiliau paramedr"
+
+#: ../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:739
+msgid "Found: "
+msgstr "Wedi'i ddarganfod:"
+
+#: ../bin/partcatalog.c:740
+msgid "Similar: "
+msgstr "Tebyg:"
+
+#: ../bin/partcatalog.c:741
+msgid "Ignored: "
+msgstr "Anwybyddwyd:"
+
+#: ../bin/partcatalog.c:742
+msgid "Not found: "
+msgstr "Heb ei ddarganfod:"
+
+#: ../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:51
+msgid "Did you know..."
+msgstr "Oeddet ti'n gwybod..."
+
+#: ../bin/smalldlg.c:53
+msgid "Previous Tip"
+msgstr "Awgrym Blaenorol"
+
+#: ../bin/smalldlg.c:54
+msgid "Next Tip"
+msgstr "Awgrym Nesaf"
+
+#: ../bin/smalldlg.c:72
+msgid "Tip of the Day"
+msgstr "Blaen y Dydd"
+
+#: ../bin/smalldlg.c:82
+msgid "No tips are available"
+msgstr "Nid oes unrhyw awgrymiadau ar gael"
+
+#: ../bin/smalldlg.c:187
+msgid ""
+"XTrackCAD is a CAD (computer-aided design) program for designing model "
+"railroad layouts."
+msgstr ""
+"Rhaglen CAD (dylunio gyda chymorth cyfrifiadur) yw XTrackCAD ar gyfer "
+"dylunio cynlluniau model rheilffyrdd."
+
+#: ../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:288
+msgid "Ctl Pt 1: X,Y"
+msgstr "Ctl Pt 1: X,Y"
+
+#: ../bin/tbezier.c:289
+msgid "Ctl Pt 2: X,Y"
+msgstr "Ctl Pt 2: X,Y"
+
+#: ../bin/tbezier.c:295
+msgid "MinRadius"
+msgstr "Radiws Min"
+
+#: ../bin/tbezier.c:300
+msgid "Line Color"
+msgstr "Lliw Llinell"
+
+#: ../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 ""
+"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:514
+msgid "Bezier Track"
+msgstr "Bezier Trac"
+
+#: ../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:321
+msgid "Radius "
+msgstr "Radiws "
+
+#: ../bin/tcornu.c:329
+msgid "Minimum Radius"
+msgstr "Radiws Lleiaf"
+
+#: ../bin/tcornu.c:330
+msgid "Max Rate Of Curve Change/Scale"
+msgstr "Cyfradd Uchaf Newid/Graddfa Cromlin"
+
+#: ../bin/tcornu.c:331
+msgid "Total Winding Angle"
+msgstr "Cyfanswm Ongl Dirwyn"
+
+#: ../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 ""
+"Cornu Trac(%d): Hean=%u MinRadiws=%s Hyd=%s EP=[%0.3f,%0.3f] [%0.3f,%0.3f]"
+
+#: ../bin/tcornu.c:532
+msgid "Cornu Track"
+msgstr "Cornu Trac"
+
+#: ../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:265
+#, c-format
+msgid "Helix: Turns %ld L %0.2f"
+msgstr "Helix: Troi %ld L %0.2f"
+
+#: ../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 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: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 ""
+"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:681
+msgid "Helix Track"
+msgstr "Trac Helix"
+
+#: ../bin/tcurve.c:687
+msgid "Curved Track"
+msgstr "Trac Crwm"
+
+#: ../bin/tcurve.c:1232
+msgid "Merge Curves"
+msgstr "Cyfuno Cromliniau"
+
+#: ../bin/tcurve.c:1306
+msgid "Drag to change angle or create tangent"
+msgstr "Llusgwch i newid ongl neu greu tangiad"
+
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
+msgid "Curved "
+msgstr "Yn grwm"
+
+#: ../bin/tcurve.c:1347
+msgid "Tangent "
+msgstr "Tangiad"
+
+#: ../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: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: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 ""
+"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:629
+msgid "Easement Track"
+msgstr "Trac Hawddfraint"
+
+#: ../bin/tease.c:1407
+msgid "Merge Easements"
+msgstr "Uno Rhwyddinebau"
+
+#: ../bin/tease.c:1481
+msgid "Split Easement Curve"
+msgstr "Cromlin Rhwyddineb Hollti"
+
+#: ../bin/textnoteui.c:175
+#, fuzzy, c-format
+msgid "Text Note(%d) Layer=%d %-.80s"
+msgstr "Dogfen: Haen=%d %-.80s"
+
+#: ../bin/textnoteui.c:189
+#, fuzzy
+msgid "Update Text Note"
+msgstr "Creu nodyn testun"
+
+#: ../bin/textnoteui.c:200
+msgid "Replace this text with your note"
+msgstr "Amnewid y testun hwn gyda'ch nodyn"
+
+#: ../bin/textnoteui.c:206
+msgid "Create Text Note"
+msgstr "Creu nodyn testun"
+
+#: ../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:292
+msgid "No track or structure pieces are selected"
+msgstr "Ni ddewisir unrhyw ddarnau trac na strwythur"
+
+#: ../bin/track.c:1461
+msgid "Move Objects Above"
+msgstr "Symud gwrthrychau uwchben"
+
+#: ../bin/track.c:1481
+msgid "Mode Objects Below"
+msgstr "Symud gwrthrychau isod"
+
+#: ../bin/track.c:1785
+msgid "Audit"
+msgstr "Archwilio"
+
+#: ../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: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: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:2407 ../bin/track.c:2444
+msgid "Inside turnout track"
+msgstr "Trac pwynt y tu mewn"
+
+#: ../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: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:3374
+#, fuzzy, c-format
+msgid "[%0.2f,%0.2f] A%0.2f"
+msgstr "%s[%0.2f,%0.2f] O%0.2f"
+
+#: ../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:52 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:154
+#, fuzzy
+msgid "Text Note"
+msgstr "Creu nodyn testun"
+
+#: ../bin/trknote.c:53
+msgid "Link"
+msgstr "Dolen"
+
+#: ../bin/trknote.c:53 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:105
+msgid "Weblink"
+msgstr "Dolen we"
+
+#: ../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:540
+msgid "New Note"
+msgstr "Nodyn newydd"
+
+#: ../bin/trknote.c:594
+msgid "Add notes"
+msgstr "Ychwanegu nodiadau"
+
+#: ../bin/tstraigh.c:92
+msgid "Track Angle"
+msgstr "Ongl y Trac"
+
+#: ../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 ""
+"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:762
+msgid "Extending Straight Track"
+msgstr "Ymestyn Trac Syth"
+
+#: ../bin/tstraigh.c:845
+msgid "Straight "
+msgstr "Syth"
+
+#: ../bin/svgoutput.c:484
+msgid "Export to SVG"
+msgstr "Allforio i SVG"
+
+#: ../wlib/mswlib/mswmisc.c:188
+msgid "All image files"
+msgstr "Pob ffeil ddelwedd"
+
+#: ../wlib/mswlib/mswmisc.c:190
+msgid "GIF files (*.gif)"
+msgstr "GIF ffeiliau (*.gif)"
+
+#: ../wlib/mswlib/mswmisc.c:192
+msgid "JPEG files (*.jpeg,*.jpg)"
+msgstr "JPEG ffeiliau (*.jpeg,*.jpg)"
+
+#: ../wlib/mswlib/mswmisc.c:194
+msgid "PNG files (*.png)"
+msgstr "PNG ffeiliau (*.png)"
+
+#: ../wlib/mswlib/mswmisc.c:196
+msgid "TIFF files (*.tiff, *.tif)"
+msgstr "TIFF ffeiliau (*.tiff, *.tif)"
+
+#: ../wlib/mswlib/mswmisc.c:198
+msgid "All files (*)"
+msgstr "Pob Ffeil (*)"
+
+#: ../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:2205
+msgid "Co&mmand Context Help"
+msgstr "Cymorth Cyd-destun Gorchymyn"
+
+#: ../../../../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 ""
+"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 "
+"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/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\tNi ellir gosod FrogPoints ar bwynt, cylch na "
+"helics\tNi ellir gosod %s ar y nifer sy'n pleidleisio, cylch na helics."
+
+#: ../../../../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\tMae haen wedi'i rewi yn cynnwys trac dethol. Ni ellir "
+"gweithredu gorchymyn."
+
+#: ../../../../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/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\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/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 ""
+"MSG_TEXT_TOO_LONG\tRoedd y testun a gofnodwyd yn rhy hir ar gyfer gwrthrych "
+"y testun. Cafodd ei gwtogi."
+
+#: ../../../../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\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/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\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/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\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/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/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 ""
+"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/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\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/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/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/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/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\tCannot Enable Grid; spacing must be greater "
+"than 0"
+
+#: ../../../../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/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/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/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/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/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."
+
+#: ../../../../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\tMae trac cyntaf | Ail drac eisoes wedi'i gysylltu."
+"\tMethu Ymuno; %s trac eisoes wedi'i gysylltu."
+
+#: ../../../../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/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/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/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 ""
+"MSG_JOIN_NOTBEZIERORCORNU\tMethu Ymuno â thrac Bezier neu Cornu os nad yw "
+"Easement yn Cornu"
+
+#: ../../../../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/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\tMethu agor Ffeil Paramedr Newydd: FILENAME\tMethu agor "
+"Ffeil Paramedr Newydd:%s"
+
+#: ../../../../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/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/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/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\tMethu ysgrifennu at ffeil paramedr: FILENAME\tMethu "
+"ysgrifennu at ffeil paramedr: %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\tRhif Mynegai Car wedi'i ddyblygu."
+
+#: ../../../../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."
+
+#: ../../../../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/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/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\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/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/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\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/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?"
+
+#: ../../../../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."
+
+#: ../../../../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/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\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/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\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/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 ""
+"MSG_LAYOUT_LINES_SKIPPED\tWrth brosesu'r ffeil Cynllun %s, %d hepgorwyd "
+"llinellau oherwydd na chawsant eu cydnabod."
+
+#: ../../../../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"
+"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"
+"fersiwn %d. Mae angen i chi uwchraddio %s\n"
+"i fersiwn o leiaf %s."
+
+#: ../../../../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"
+"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"
+"fersiwn %d. Mae angen i chi uwchraddio\n"
+"fersiwn o %s"
+
+#: ../../../../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\tWrth brosesu'r ffeil Paramedr %s, %d hepgorwyd "
+"llinellau oherwydd na chawsant eu cydnabod."
+
+#: ../../../../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\tMae ongl broga yn atal gosod pwyntiau. Symud "
+"pwyntiau i ochr arall y broga."
+
+#: ../../../../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/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\tYmuno traciau gyda gwahanol ddrychiadau (N.NNN)\tYmuno "
+"traciau gyda gwahanol ddrychiadau (%0.2f)"
+
+#: ../../../../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/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/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/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\tUchafswm maint y dudalen a ganiateir yw W x H\tUchafswm "
+"maint y dudalen a ganiateir yw %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 ""
+"MSG_NO_PRINTER_SELECTED\tDewiswch argraffydd o'r ymgom Gosod Argraffydd."
+
+#: ../../../../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\tNid oes gan Ffeil Paramedr Newydd CONTENTS llinell: "
+"FILENAME.\tNid oes gan Ffeil Paramedr Newydd CONTENTS llinell: %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\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/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\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/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/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/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/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\tDim Map Ffeil Paramedr ar gyfer CONTENTS\tDim Map Ffeil "
+"Paramedr ar gyfer %s"
+
+#: ../../../../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/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\tNi ddarganfuwyd haen nad oes ganddo gynnwys, felly ni "
+"ellir mewnforio'r modiwl"
+
+#: ../../../../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 ""
+"MSG_NO_UNFROZEN_LAYER\tNi ddarganfuwyd haen nad oedd wedi'i rhewi. Mae haen "
+"0 heb ei rewi."
+
+#: ../../../../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\tDiffiniwyd yr haen gyfredol fel un wedi'i rewi. Mae "
+"bellach heb ei rewi."
+
+#: ../../../../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\tDim Pwyntiau | Mae strwythurau ar gael.\tDim %s "
+"ar gael."
+
+#: ../../../../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\tGwerthoedd rhifol ar y Disgrifiad Car...\tGwerthoedd "
+"rhifol ar y Disgrifiad Car\n"
+"rhaid i'r ymgom fod yn fwy na 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\tMae'r gwrthrych wedi symud y tu hwnt i ffiniau "
+"ystafelloedd."
+
+#: ../../../../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\tRhaid i wahaniad cyfochrog fod yn fwy na 0, neu "
+"rhaid i'r mesurydd newydd fod yn wahanol na'r hen."
+
+#: ../../../../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\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/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"
+
+#: ../../../../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\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/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\tChwarae: gweithredu anhysbys NNN\tChwarae: gweithredu "
+"anhysbys %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\tMae'r pwyntiau i gau at y broga; symud i ffwrdd."
+
+#: ../../../../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/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/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/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\tMae enw prototeip yn bodoli eisoes ....\tMae enw "
+"prototeip yn bodoli eisoes.\n"
+"\n"
+"Ydych chi am ei ddiweddaru?"
+
+#: ../../../../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/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/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 ""
+"MSG_RADIUS_TOO_BIG\tNi fydd y Cylch neu'r Helix yn ffitio o fewn "
+"paramedrau'r ystafell gynlluniau (Uchder a Lled)."
+
+#: ../../../../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\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/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\tPenawdau colofn gofynnol ar goll o'r ffeil "
+"Mewnforio Car."
+
+#: ../../../../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\tRhaid dewis ail drac | heb ei ddewis\t Rhaid i "
+"drac arbennig fod %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\tMae'r dudalen a ddewiswyd allan o ffiniau."
+
+#: ../../../../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/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\tRhaid i siapiau dethol ddiffinio ardal hirsgwar ... "
+"must Rhaid i siapiau dethol ddewis petryal\n"
+"arwynebedd â hyd yn fwy na'r uchder."
+
+#: ../../../../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."
+
+#: ../../../../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/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/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/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\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/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\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/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\tAnwybyddir y golofn ganlynol yn y ffeil Mewnforio "
+"Car: ...\tAnwybyddir y golofn ganlynol yn y ffeil Mewnforio Car:\n"
+"\n"
+"%s"
+
+#: ../../../../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\tNi ellir newid lleoliad y nifer sy'n pleidleisio "
+"na throfwrdd wrth i drên feddiannu."
+
+#: ../../../../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\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/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"
+"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"
+"rhestr ddethol. Gwiriwch eich Graddfa, dewiswch y\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/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/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/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/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/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/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/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/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\tNid yw croestoriad trac yn bosibl; "
+"symud pwyntiau i ffwrdd o'r broga."
+
+#: ../../../../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\tMae'r trac yn rhy fyr erbyn N.NNN\t%sMae'r trac yn rhy "
+"fyr erbyn %0.3f"
+
+#: ../../../../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)."
+
+#: ../../../../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/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/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\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/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/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\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/v_5_3_0_beta1/app/help/messages.h:128
+#, 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\tFfeil feirniadol wedi'i difrodi! ...\tFfeil feirniadol "
+"wedi'i difrodi! ...\n"
+"%s yn llygredig.\n"
+"\n"
+"Ailosod meddalwedd os gwelwch yn dda."
+
+#: ../../../../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 ""
+"MSG_ENTERED_STRING_TRUNCATED\tMae'r testun a gofnodwyd yn rhy hir. Uchafswm "
+"hyd%d."
+
+#: ../../../../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/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"
+"\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"
+"\n"
+"Ydych chi'n siŵr eich bod chi eisiau parhau?"
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:134
+#, c-format
+msgid ""
+"Cannot open %s file:\n"
+"%s:%s"
+msgstr ""
+"Ni all agor %s ffile:\n"
+"%s:%s"
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:136
+#, c-format
+msgid "Cannot open directory: %s"
+msgstr "Methu agor cyfeiriadur:%s"
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/v_5_3_0_beta1/app/help/messages.h:148
+#, c-format
+msgid "Unlink failed for: %s"
+msgstr "Methodd Unlink am: %s"
+
+#: ../../../../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/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/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/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/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/v_5_3_0_beta1/app/help/messages.h:154
+#, c-format
+msgid "Cannot open file %s"
+msgstr "Methu agor ffeil %s"
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:156
+#, c-format
+msgid "Unrecognized Option: %s"
+msgstr "Opsiwn heb ei gydnabod:%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 ""
+"Mae End-Of-Line yn annisgwyl mewn maes a ddyfynnir.\n"
+"%s\n"
+"\n"
+"Ydych chi am barhau i ddarllen y ffeil?"
+
+#: ../../../../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 ""
+"Roedd disgwyl coma ar ôl y maes hwn a ddyfynnwyd.\n"
+"%s\n"
+"\n"
+"Ydych chi am barhau i ddarllen y ffeil?"
+
+#: ../../../../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 ""
+"Gwall \\\\\"%s\\\\\" digwydd wrth ysgrifennu %s.\n"
+"Gwiriwch ofod disg a statws system."
+
+#: ../../../../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"
+"terminate on an endpoint. Such a track cannot be grouped.\n"
+"The track has been unselected."
+msgstr ""
+"O leiaf un llwybr ar gyfer y Pwynt T%d Dim yn\n"
+"terfynu ar ddiweddbwynt. Ni ellir grwpio trac o'r fath.\n"
+"Mae'r trac wedi'i ddewis."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
+msgid "inv-pathEndTrk on Path."
+msgstr "inv-pathEndTrk ar Lwybr."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:162
+msgid "inv-pathStartTrk on Path"
+msgstr "inv-pathStartTrk ar Lwybr"
+
+#: ../../../../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 "pathEndTrk nid ar y Llwybr."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:165
+msgid "pathStartTrk not on Path."
+msgstr "pathStartTrk nid ar y Llwybr."
+
+#: ../../../../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 ""
+"Ni ellir cysylltu'r traciau gyda'i gilydd.\n"
+"\n"
+"Ceisiwch newid rhai traciau i gael ffit agosach\n"
+"neu gynyddu gwerth Angle Cysylltiad ar\n"
+"y dialog Dewisiadau."
+
+#: ../../../../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 ""
+"Ni ellir cysylltu'r traciau gyda'i gilydd.\n"
+"\n"
+"Ceisiwch newid rhai traciau i gael ffit agosach\n"
+"neu gynyddu'r Pellter Cysylltiad a\n"
+"Gwerthoedd ongl ar y dialog Dewisiadau"
+
+#: ../../../../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 ""
+"Ni ellir cysylltu'r traciau gyda'i gilydd.\n"
+"\n"
+"Ceisiwch newid rhai traciau i gael ffit agosach\n"
+"neu gynyddu'r Pellter Cysylltiad"
+
+#: ../../../../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 ""
+"Y trac cyntaf ar gyfer yr Alin\n"
+"Rhaid Dewis gorchymyn cylchdroi."
+
+#: ../../../../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 ""
+"Yr ail drac ar gyfer yr Align\n"
+"Rhaid i orchymyn cylchdroi fod heb ei ddewis."
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:172
+msgid "Select an endpoint between two tracks."
+msgstr "Dewiswch ddiweddbwynt rhwng dau drac."
+
+#: ../../../../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 ""
+"Yn ôl gwerthoedd sydd wedi cael eu nodi mae'r dargyfeiriol\n"
+"nid yw'r trac yn cysylltu â'r trac tangiad. Os gwelwch yn dda\n"
+"gwiriwch y gwerthoedd a gofnodwyd a cheisiwch eto. Gwiriwch yr ongl\n"
+"yn cael ei nodi fel rhif broga neu mewn graddau fel y nodir\n"
+"gan fotymau radio Ongle Mode."
+
+#: ../../../../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/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 ""
+"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/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 ""
+"Rhaid i'r gwerth Hyd Car fod yn fwy\n"
+"na gwerth Lled Car."
+
+#: ../../../../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 ""
+"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/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 ""
+"Rydych wedi newid gwerthoedd ar gyfer y gwrthrych hwn.\n"
+"\n"
+"Ydych chi'n siŵr eich bod chi am gau?"
+
+#: ../../../../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 ""
+"Fersiwn ffeil %ld yn is na'r isafswm\n"
+"fersiwn â chymorth %d. Mae angen i chi ddiweddaru eich\n"
+"ffeil cynllun gan ddefnyddio fersiwn hŷn o %s"
+
+#: ../../../../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"
+msgstr ""
+"Fersiwn ffile %ld yn is na'r isafswm\n"
+"fersiwn â chymorth %d. Dim ond gan ddefnyddio fersiwn hŷn o %s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:181
+#, c-format
+msgid ""
+"%s cannot read the demo file:\n"
+"%s"
+msgstr ""
+"%s methu darllen y ffeil demo:\n"
+"%s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
+#, c-format
+msgid "doDemo: bad number (%d)"
+msgstr "doDemo: rhif drwg (%d)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
+msgid "Playback TIMEEND without TIMESTART"
+msgstr "Chwarae TIMEEND heb TIMESTART"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
+#, c-format
+msgid ""
+"Unknown playback command (%d)\n"
+"%s"
+msgstr ""
+"Gorchymyn chwarae anhysbys (%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 ""
+"Fersiwn ffeil chwarae %ld yn is na'r\n"
+"fersiwn leiaf â chymorth %d.\n"
+"Mae angen i chi ddiweddaru'ch ffeil cynllun gan ddefnyddio\n"
+"fersiwn hŷn o %s"
+
+#: ../../../../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 "Ni all estyn helics"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:189
+msgid "Cannot trim a helix"
+msgstr "Methu trimio helics"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
+msgid "Ignore further audit notices?"
+msgstr "Anwybyddu hysbysiadau archwilio pellach?"
+
+#: ../../../../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 "Erthyliad Archwilio?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
+msgid "Write Audit File?"
+msgstr "Ysgrifennu Ffeil Archwilio?"
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:195
+#, c-format
+msgid "checkTrackLength: unknown type: %d"
+msgstr "checkTrackLength: math anhysbys: %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 "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
+
+#: ../../../../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/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/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/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"
+
+#. 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 ""
+"Mae XTrackCAD yn darparu arddangosiadau ar y rhan fwyaf o nodweddion y "
+"rhaglen. Gellir rhedeg y demos trwy glicio ar y ddewislen Help ar y Brif "
+"ffenestr ac yna dewis Demos."
+
+#. 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."
+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."
+
+#. 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 ""
+"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: 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\"."
+
+#. 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."
+
+#. 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 ""
+"Gallwch newid maint cyffredinol eich cynllun ar y dialog \"Dewisiadau | "
+"Cynllun\"."
+
+#. 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 ""
+"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\"."
+
+#. 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 ""
+"Wrth Dewis traciau, mae'r cysylltiad rhwng traciau Dethol a Heb eu Dewis yn "
+"cael ei farcio gan Goch X. Mae hyn yn nodi pwyntiau lle bydd y cysylltiad "
+"rhwng traciau yn cael ei dorri os byddwch chi'n Symud neu'n Cylchdroi'r "
+"traciau Dethol."
+
+#. 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 ""
+"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: 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 ""
+"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: 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"
+" 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 ""
+"Gallwch greu traciau crwm mewn pedair ffordd trwy lusgo o:\n"
+"y pwynt olaf 1af i gyfeiriad y gromlin\n"
+"canol y gromlin i'r pwynt olaf 1af\n"
+"endpoint i'r ganolfan\n"
+"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."
+
+#. 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 ""
+"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: 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 ""
+"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."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"Mae'r gorchymyn Cyfochrog yn ddefnyddiol i osod iardiau a seidins. Os yw'r "
+"trac Cyfochrog yn ffinio â thrac sy'n bodoli eisoes, caiff ei gysylltu'n "
+"awtomatig."
+
+#. 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 ""
+"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: 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 ""
+"Gallwch symud a chylchdroi'r Grid Snap i alinio â'r trac neu'r gwaith meinc "
+"presennol."
+
+#. 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 ""
+"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."
+
+#. 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 ""
+"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: 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 ""
+"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: 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: 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 ""
+"Gallwch chi roi enw i bob haen (trwy ddefnyddio'r ymgom \"Rheoli | Haen\"). "
+"Bydd yr enw hwn yn cael ei arddangos fel y Cymorth Balŵn ar gyfer y botwm "
+"Haen cyfatebol, os oes gennych Gymorth Balŵn wedi'i alluogi ar y dialog "
+"\"Dewisiadau | Arddangos\"."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"Gallwch ddadlwytho ffeiliau paramedr nad ydych yn eu defnyddio gan y dialog "
+"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: 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 ""
+"De-gliciwch ar y Brif ffenestr yn dangos rhestr ddewislen o orchmynion fel "
+"dewis arall yn lle pwyso'r botymau ar y bar offer neu ddefnyddio'r bysellau "
+"cyflymydd dewislen."
+
+#. 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 ""
+"Bydd dal y fysell Shift i lawr tra'ch De-gliciwch yn dangos opsiynau ar "
+"gyfer y gorchymyn cyfredol (os oes rhai)."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"I adnewyddu'r Brif ffenestr, pwyswch Control-L (daliwch y fysell 'Ctrl' i "
+"lawr ac yna pwyswch y fysell 'l')."
+
+#. 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: 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 "
+"llawn (1: 1) ar gyfer torri gwely ffordd."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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: 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 ""
+"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: 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: 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 ""
+"Gellir newid cyflymder chwarae'r Demos trwy ddefnyddio rhestr ostwng Speed ​​"
+"ar y ffenestr Demo."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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."
+
+#. 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 ""
+"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: 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"
+"\n"
+"Gallwch hefyd ddefnyddio Polygon i gynrychioli eiliau."
+
+#. 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 ""
+"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: 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."
+
+#. 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 ""
+"Gallwch nodi gwerthoedd Metric pan mai'r Saesneg yw'r Unedau diofyn ac i'r "
+"gwrthwyneb."
+
+#. 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."
+
+#. 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 ""
+"Gallwch hefyd wasgu'r allwedd 's' i drosi mesuriad Prototeip i fesuriad "
+"Graddfa trwy rannu â'r gymhareb ar gyfer y raddfa gyfredol."
+
+#. 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: 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 ""
+"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: 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 ""
+"Defnyddiwch y botwm MoveTo ar y dialog Rheoli Custom i symud eich "
+"diffiniadau Pwynt, Strwythur a Char arferol i ffeil paramedr .XTP."
+
+#. 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 ""
+"Os ydych chi'n argraffu sawl tudalen ar argraffydd porthiant parhaus (Dot "
+"Matrix o'r fath) gallwch newid y Gorchymyn Tudalen os oes angen i argraffu "
+"tudalennau mewn trefn gywir."
+
+#. 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 ""
+"Ar y deialogau Eitem Car a Rhan Car, gallwch nodi gwerthoedd arfer ar gyfer "
+"Gwneuthurwr, Rhan a Ffordd trwy deipio'r gwerth newydd yn uniongyrchol i'r "
+"Rhestr Gostwng."
+
+#. 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 ""
+"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: 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 ""
+"Gallwch Allforio eich Rhestr Car i ffeil ar ffurf Gwerth Coma-Separated-"
+"Value y gellir ei ddarllen gan y mwyafrif o raglenni taenlen."
+
+#. 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: 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 ""
+"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: 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 ""
+"Gallwch docio pennau'r nifer sy'n pleidleisio trwy ddal y fysell Shift i "
+"lawr wrth ddefnyddio'r gorchymyn Hollti."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"Gallwch ychwanegu segmentau trac newydd at ddiffiniad a bleidleisiodd neu "
+"greu diffiniad o draciau unigol gan ddefnyddio'r gorchymyn Grŵp."
+
+#. 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 ""
+"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."
+
+#. 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 ""
+"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: 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: 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 ""
+"Gallwch ddefnyddio'r gorchymyn Disgrifio i newid maint labeli Llinell "
+"Dimensiwn."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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."
+
+#. 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 ""
+"Gallwch allforio'r traciau a ddewiswyd i ffeil DXF y gall y mwyafrif o "
+"raglenni CAD eu darllen."
+
+#. 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 "
+"arddangos pellteroedd fel milimetrau, centimetrau neu fetrau. Gweler yr "
+"eitem Fformat Hyd ar y dialog Dewisiadau."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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: 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 ""
+"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."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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 arddangos graddau hefyd mewn mannau gorffen penodol.\n"
+"Os gwelwch yn dda gweler yr help a demo Elevations."
+
+#. 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 ""
+"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: 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."
+
+#. 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 ""
+"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."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"Wrth ddefnyddio'r gorchymyn Cylchdroi, mae Shift-Right-Click yn dangos "
+"dewislen sy'n eich galluogi i gylchdroi yn ôl symiau penodol neu alinio'r "
+"gwrthrychau a ddewiswyd â gwrthrych arall."
+
+#. 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 ""
+"Dyma'r domen olaf. Os oes gennych unrhyw ychwanegiadau neu sylwadau, rhowch "
+"wybod i ni."
+
+#. 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 ""
+"Gellir newid pwyntiau terfyn digyswllt trac syth neu grwm gyda'r gorchymyn "
+"'Modify Track'..\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
+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 ""
+"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: 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"
+
+#. 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"
+
+#. 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/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 ""
+"Os llusgwch y llygoden y tu hwnt i ddechrau'r gromlin, bydd y trac yn fyr "
+"iawn.\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 "Yma fe'ch rhybuddir y bydd y trac yn rhy fyr..\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 ""
+"Os symudwch y cyrchwr i ffwrdd o'r gromlin, byddwch yn creu tangiad trac "
+"syth i'r gromlin.\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 ""
+"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"
+
+#. 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 ""
+"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/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"
+
+#. 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"
+
+#. 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 ""
+"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/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 ""
+"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: 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/v_5_3_0_beta1/app/i18n/custmsg.h:224
+msgid "- rectangular (1x2, 2x4 etc)\n"
+msgstr "- petryal (1x2, 2x4 ac ati)\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
+msgid "- L girders\n"
+msgstr "- L gwregysau\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
+msgid "- T girders\n"
+msgstr "- T gwregysau\n"
+
+#: ../../../../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: 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: 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 ""
+"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/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: 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: 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: 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/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: 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 ""
+"Pan wnaethon ni glicio ar y botwm <Describe> cafodd y gorchymyn cyfredol ei "
+"ganslo.\n"
+
+#: ../../../../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 "
+"priodweddau'r gwrthrych sydd wedi'i glicio arno.\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
+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"
+
+#. 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: 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: 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: 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: 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"
+
+#. 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/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/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: 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: 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: 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 ""
+"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: 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 ""
+"Rydym yn defnyddio'r <Connect> gorchymyn i addasu traciau cyfagos fel bod y "
+"bwlch ar gau.\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 ""
+"Sylwch: dim ond ar draciau sydd â 1 neu 2 gysylltiad yn unig y mae'r "
+"addasiadau'n cael eu gwneud. Yn yr enghraifft hon, ni fyddai'r Pwyntiau'n "
+"cael eu heffeithio.\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 "Ac yn awr mae'r bwlch ar gau.\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 "Mae traciau eraill wedi'u symud ychydig i gau'r bwlch.\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 "Gallwch weld y cam-aliniadau bach hyn.\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 ""
+"Ond ni fyddant yn cael unrhyw effaith pan fydd y cynllun wedi'i adeiladu "
+"mewn gwirionedd.\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 ""
+"Ar ôl gweithio gyda thrac Adrannol efallai y byddwch chi'n cyrraedd pwynt "
+"lle mae'r cam-aliniadau hyn wedi cronni ac rydych chi am gael gwared arnyn "
+"nhw.\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 ""
+"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"
+
+#: ../../../../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: 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: 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/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: 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 ""
+"Gallwn ddefnyddio'r <Connect>gorchymyn i symud y traciau cysylltu ychydig a "
+"chysylltu'r 2 Bwynt Diwedd.\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 "Mae'r ddau Bwynt Diwedd bellach wedi'u halinio a'u cysylltu.\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 "Gwnaed y cysylltiad trwy ychwanegu bylchau bach mewn traciau eraill.\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 "Mae yna sawl ffordd i greu trac Crwm.\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 ""
+"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/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 ""
+"Y cyntaf yw trwy glicio ar y End-Point cyntaf a llusgo i gyfeiriad y "
+"Gromlin.\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 "Fe welwch drac syth gyda saeth Goch â dau ben ar y diwedd.\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 "Cliciwch a llusgwch ar un o'r saethau Coch i gwblhau'r Gromlin.\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 "Y dull nesaf yw clicio ar un End-Point a llusgo i ganol y Gromlin.\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 ""
+"Nawr fe welwch y saeth Goch â dau ben wedi'i chysylltu â chanol y Gromlin "
+"wedi'i nodi gan gylch bach.\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 "Fel o'r blaen, llusgwch ar un o'r saethau Coch i gwblhau'r Gromlin.\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 ""
+"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: 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: 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 ""
+"Mae'r dull olaf yn dechrau trwy dynnu llinell rhwng dau Bwynt Diwedd y "
+"Gromlin. Mae hyn yn ffurfio Cord y Gromlin.\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 "Nawr llusgwch saeth goch i gwblhau'r Gromlin.\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 ""
+"Bydd y demo hwn yn adeiladu panel rheoli ar gyfer rhan o gynllun mwy.\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/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/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: 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: 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/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/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 ""
+"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: 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"
+
+#: ../../../../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/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: 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 ""
+"Sylwch, pan fyddwn yn y safle cywir (ar y grid 1/8\"), y bydd y llinellau "
+"Marciwr ar y pren mesur isaf a chwith yn goleuo'r marciau ticio yn uchel. "
+"Pan fydd y ddau dic yn goleuo'n uchel, pwyswch y bar gofod i gwblhau. y "
+"LED.\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 ""
+"Nawr byddwn yn ychwanegu botymau gwthio i reoli'r nifer sy'n pleidleisio.\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 "Gadewch i ni ychwanegu signalau at ein seidin.\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/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: 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 ""
+"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: 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: 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/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/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/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 ""
+"Nodyn: Nid yw Win95 / Win98 / WinME yn cefnogi tynnu llinellau gyda chapiau "
+"pen gwastad, ond dim ond gyda chapiau pen crwn.\n"
+
+#: ../../../../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: 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/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: 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: 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 ""
+"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/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/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"
+
+#. 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: 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: 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: 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: 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/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: 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 ""
+"Mae pwyso'r botwm <Delete> yn caniatáu ichi ddileu traciau dethol o'r "
+"cynllun.\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 ""
+"Yn gyntaf rydych chi'n dewis y traciau rydych chi am eu dileu, ac yna'n "
+"pwyso'r botwm <Delete>.\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 ""
+"Os ydych chi'n dileu trac sy'n gysylltiedig â chromlin hawddfraint, yna "
+"mae'r gromlin hawddfraint yn cael ei dileu hefyd.\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 "Gallwch ddefnyddio'r <Undo> gorchymyn i danseilio traciau.\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 ""
+"Os ydych chi'n Chwith-Llusgo ar y cynllun gallwch ddewis pob trac o fewn "
+"ardal.\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 ""
+"Sylwch, dim ond traciau yn yr ardal a ddewiswyd sy'n cael eu dileu. Gan fod "
+"cromlin yr hawddfraint wedi'i chysylltu â thrac wedi'i ddileu, caiff ei "
+"ddileu hefyd.\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 ""
+"Mae'r demo hefyd yn efelychu gwerthoedd mewnbynnu a dewis opsiynau ar "
+"ddeialogau amrywiol.\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 ""
+"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: 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 ""
+"Yma, rydyn ni'n mynd i wneud rhai newidiadau i'r ymgom Arddangos. Sylwch ar "
+"sut mae hyn yn cael ei efelychu.\n"
+
+#: ../../../../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: 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: 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: 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 ""
+"Dim ond yn y modd arddangos y defnyddir yr effaith hon. Yn ystod "
+"gweithrediad arferol ni welwch hyn.\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 "Defnyddir Llinellau Dimensiwn i nodi'r pellteroedd rhwng dau bwynt.\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 ""
+"Yma byddwn yn creu Llinell Dimensiwn i ddangos y gwahaniad rhwng dau drac.\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 ""
+"Efallai y byddem hefyd eisiau mesur y pellter rhwng dau strwythur. Yn yr "
+"achos hwn byddwn yn defnyddio llinell ddimensiwn fwy.\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 ""
+"Gallwn ddefnyddio'r <Describe> gorchymyn i newid lleoliad y Llinell "
+"Dimensiwn a maint y rhifau.\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 ""
+"Bydd yr enghraifft hon yn dangos effaith defnyddio hawddfreintiau wrth ymuno "
+"â thraciau.\n"
+
+#: ../../../../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: 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: 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: 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: 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: 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 ""
+"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: 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: 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 ""
+"Rydyn ni wedi dewis hawddfreintiau miniog. Y gromlin radiws lleiaf y gallwn "
+"ei ddefnyddio fydd 9.75\"\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 "Sylwch fod y label ar y botwm Rhwyddineb wedi newid i '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 ""
+"Sylwch nad yw'r gromlin gysylltu yn cwrdd â'r traciau syth yn llwyr. Dyma'r "
+"'Gwrthbwyso'.\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 "Yma mae'r gromlin gysylltu yn rhy fach.\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 ""
+"Mae'r gromlin gysylltu wedi'i gwneud o dri thrac, y gromlin a dau segment "
+"hawddfraint ar bob pen.\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
+msgid ""
+"We have designed part of the layout with a siding, 2 branches and a spiral "
+"loop. We want to set elevations.\n"
+msgstr ""
+"Rydym wedi dylunio rhan o'r cynllun gyda seidin, 2 gangen a dolen troellog. "
+"Rydym am osod drychiadau.\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 ""
+"Nodyn: gwnewch yn siŵr eich bod chi'n gosod drychiadau endpoint ar y dialog "
+"Arddangos.\n"
+
+#. 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: 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/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: 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: 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: 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: 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: 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: 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: 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/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 ""
+"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/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 ""
+"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: 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 ""
+"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/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/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: 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 ""
+"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: 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: 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/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 ""
+"Defnyddiwch Shift-Left-Click i Rhannu'r trac a chreu pwynt terfyn y gallwn "
+"ei ddefnyddio ar gyfer drychiad,\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 "a chreu pwynt Drychiad Cyfrifedig arall.\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
+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: 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"
+
+#. 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: 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: 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 ""
+"Y peth olaf yr ydym am ei wneud yw creu label Gorsaf y byddwn yn ei "
+"defnyddio yn yr <Profile> gorchymyn.\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 "Nawr, gosodwch y Drychiad i'r Orsaf a nodi'r enw.\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 ""
+"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/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 ""
+"Yn yr enghraifft hon mae gennym drac crwm gyda radiws o 9\" a thrac syth "
+"gyda llethr o 3.8 cant.\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 ""
+"Mae'r ymgom Cynllun yn dangos mai'r Radiws Trac Isaf yw 9\" a'r Llethr Trac "
+"Uchaf yw 5 cant.\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 ""
+"Os gwnawn y trac crwm yn fwy craff bydd yn cael ei dynnu yn y lliw "
+"Eithriad.\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 ""
+"Os gwnawn y trac syth yn fwy serth bydd hefyd yn cael ei dynnu yn y lliw "
+"Eithriad.\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 ""
+"Gallwch newid y lliw Eithriad ar y dialog Lliwiau o'r ddewislen Opsiynau.\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
+msgid ""
+"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: 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: 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: 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: 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 "
+"chi'n ymestyn y trac.\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"
+
+#. 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: 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: 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/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: 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 ""
+"Sylwch fod teitl y pwynt wedi'i newid o'r Dde Canolig i'r Chwith Ganolig. "
+"Pan fydd y nifer sy'n pleidleisio yn cael eu fflipio, bydd XTrackCAD yn "
+"ceisio dod o hyd i'r nifer sy'n pleidleisio ac, os canfyddir, bydd yn newid "
+"yr enw.\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 ""
+"Nid oes gan strwythurau fersiynau llaw dde a chwith. Mae eu teitl yn cael ei "
+"newid i nodi iddynt gael eu fflipio.\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 "Gallwch ddefnyddio'r <Describe> gorchymyn i newid eu teitl.\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 ""
+"Mae'r gorchmynion <Group> a <Ungroup> (ar y ddewislen Offer) yn ffordd "
+"bwerus o drin diffiniadau Pwynt a Strwythur.\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 "Byddwn yn dechrau gyda phwynt syml ac yn ychwanegu modur pwynt.\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 ""
+"Nawr ein bod wedi tynnu amlinelliad bras o fodur pwynt byddwn yn ei grwpio "
+"gyda'r diffiniad pwynt.\n"
+
+#: ../../../../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: 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: 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 ""
+"Mae'r ymgom <Group> gorchymyn yn dangos Teitl (Gwneuthurwr, Disgrifiad a "
+"Rhan Rhif) y diffiniad newydd. Daw'r wybodaeth hon o'r gwrthrychau Dethol "
+"rydych chi'n eu grwpio.\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 ""
+"Mae'r 'Amnewid gyda grŵp newydd?' bydd toggle yn disodli'r gwrthrychau "
+"Dethol gyda'r diffiniad newydd.\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 ""
+"Os na fyddwn yn newid y Teitl yna bydd y diffiniad newydd yn disodli'r "
+"diffiniad presennol.\n"
+
+#: ../../../../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: 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: 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: 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 ""
+"Mae'r <Ungroup> gorchymyn yn disodli unrhyw bwyntiau neu strwythurau Dethol "
+"â'u rhannau.\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 ""
+"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/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 ""
+"Byddwn yn Dadgrwpio'r pwynt hwn ac yn gweld sut y gellir newid y rhannau "
+"unigol.\n"
+
+#: ../../../../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: 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/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: 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: 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"
+
+#. 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: 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: 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"
+
+#: ../../../../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 ""
+"Gwneir y pwynt o nifer o segmentau trac syth a chrom. Roedd pedair segment "
+"i'r pwynt hwn:\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 segment syth byr i'r chwith o'r pwyntiau\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 segment hir syth i'r dde o'r pwyntiau\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 segment crwm o'r pwyntiau i'r broga\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/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/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"
+
+#: ../../../../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 ""
+"Yn nes ymlaen, gallwch chi Grwpio'r pwynt hwn gyda'r segmentau syth i ail-"
+"greu'r diffiniad pwynt. Gallwch hefyd ychwanegu segmentau trac eraill at "
+"ddiffiniadau pwynt.\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 "Nawr, crëwch drac a gosod y pwynt newydd arno.\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 ""
+"Nawr mae'n debyg ein bod ni eisiau disodli'r sgwariau du gyda chylchoedd "
+"gwyrdd.\n"
+
+#: ../../../../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: 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: 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: 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"
+
+#. 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: 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: 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 ""
+"Sylwch fod y pwynt yn y HotBar yn ongl yr un peth â'r nifer a bleidleisiodd "
+"ar y cynllun. Sicrhewch fod eich diffiniad newydd yn cylchdroi yn y ffordd "
+"rydych chi ei eisiau.\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 "Gallwn hefyd greu pwyntiau o draciau syth syth a chrom.\n"
+
+#: ../../../../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: 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 ""
+"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: 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/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: 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/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"
+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"
+
+#. 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: 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: 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"
+msgstr ""
+"Yma y Pwynt Terfyn Chwith (nad ydym am ei symud) yw'r Ail Bwynt Diwedd, "
+"felly byddwn yn gwneud y Clo.\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/v_5_3_0_beta1/app/i18n/custmsg.h:599
+msgid "First change the Radius...\n"
+msgstr "Newid y Radiws yn gyntaf...\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 "a'r Hyd Ongl.\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 "Nawr Dewiswch y ddau drac...\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 "a'u Grwpio.\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 ""
+"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: 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/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: 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: 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/v_5_3_0_beta1/app/i18n/custmsg.h:615
+msgid "Now Group the turnout.\n"
+msgstr "Nawr Grwpiwch y pwynt.\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 "Byddwn yn newid y Teitl a Rhan Rhif ar gyfer y diffiniad newydd.\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 ""
+"I Dileu'r diffiniadau, defnyddiwch y dialog Rheoli Custom ar y ddewislen "
+"Offer.\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 "Dewiswch y diffiniadau y gwnaethoch chi eu hychwanegu a'u Dileu.\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 ""
+"Nawr byddwn yn creu helics yng nghornel y cynllun wedi'i gysylltu â 2 drac.\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 ""
+"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: 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: 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/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: 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/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: 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 ""
+"Mae gosod y gwerthoedd hyn yn newid y Radiws i 21.2\" a nifer y Troi i 6.\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 ""
+"Nawr rydym yn nodi'r Gwahaniad Ongl rhwng y fynedfa a'r allanfa i'r helics.\n"
+
+#: ../../../../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: 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/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: 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 ""
+"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/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 ""
+"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: 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 ""
+"Nawr bod paramedrau'r helics wedi'u gosod gallwn ni osod yr helics ar y "
+"cynllun.\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 ""
+"Nesaf, ymunwch â'r 2 drac syth i'r helics yn yr un ffordd ag yr ydym yn "
+"ymuno â chylch.\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 ""
+"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: 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 ""
+"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/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 ""
+"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: 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 ""
+"Rydym wedi gosod y drychiadau i 1\" a 13\" i gynhyrchu llethr o 3.0 cant "
+"gyda 2.8\" rhwng coiliau.\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 ""
+"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"
+
+#. 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: 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/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: 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: 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: 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: 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: 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: 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: 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: 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: 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/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 ""
+"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/v_5_3_0_beta1/app/i18n/custmsg.h:685
+msgid "The controls are:\n"
+msgstr "Mae'r rheolaethau yn:\n"
+
+#: ../../../../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/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/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/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/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: 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 ""
+"Os mai hwn yw'r tro cyntaf i chi ddefnyddio'r demo efallai y byddwch am "
+"aildrefnu'r ffenestri fel nad yw'r ffenestr arddangos yn cuddio'r brif "
+"ffenestr.\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 ""
+"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: 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 ""
+"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/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/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: 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/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"
+
+#: ../../../../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: 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/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: 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 ""
+"Gallwch hefyd ymuno â chylchoedd ac oddi yno. Bydd hyn yn newid y cylchoedd "
+"i gromliniau.\n"
+
+#: ../../../../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: 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 ""
+"Dyma ni wedi dewis pwyntiau ar y ddau gylch. Mae cyfeiriad y cysylltiadau "
+"(boed yn glocwedd neu'n wrthglocwedd) yn cael ei reoli gan ble ar y cylch "
+"rydych chi'n dewis y pwyntiau cysylltu.\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 "Nawr, gadewch i ni roi cynnig ar groes-gysylltiad.\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 ""
+"Sylwch fod y cysylltiad o wahanol 'bennau' y cylch nag yn yr enghraifft "
+"ddiwethaf.\n"
+
+#. 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/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"
+
+#. 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: 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: 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: 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 ""
+"Gall yr <Join> gorchymyn hefyd ymuno â thraciau syth a chrom (yn y naill "
+"drefn neu'r llall).\n"
+
+#: ../../../../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: 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: 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 ""
+"Sylwch fod y trac crwm yn cael ei estyn wrth i'r pwynt cysylltu symud "
+"heibio'r End-Point.\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
+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 ""
+"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/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: 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/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"
+
+#. 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: 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: 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 ""
+"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/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: 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: 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 ""
+"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: 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: 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 ""
+"Sylwch ar yr hyn sy'n digwydd os llusgwch heibio i bwyntiau croestoriad y "
+"ddau drac.\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 "Mae'n debyg nad yw hyn yn beth defnyddiol iawn i'w wneud.\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 "Nawr byddwn yn gwneud hyn gyda Cornu Easements \n"
+
+#: ../../../../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: 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: 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 ""
+"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: 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: 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"
+
+#. 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: 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: 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/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: 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 ""
+"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/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: 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: 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"
+
+#. 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 ""
+"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: 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: 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 ""
+"Defnyddir y Gorchmynion Draw i dynnu llinellau syth a chrom ar y cynllun.\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 ""
+"Tynnir llinellau trwy glicio ar y sefyllfa gychwyn a llusgo i'r safle "
+"terfynol.\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 ""
+"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: 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: 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/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 ""
+"Yma byddwn yn tynnu Cromlin trwy lusgo o un Pwynt Diwedd i'r llall i "
+"ddiffinio cord y Gromlin. Yna byddwn yn llusgo o'r canol i siapio'r "
+"gromlin.\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 "Mae blychau yn ddefnyddiol ar gyfer llunio siapiau hirsgwar.\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 ""
+"Gellir tynnu cylchoedd trwy glicio ar y canol neu'r ymyl a llusgo i osod y "
+"radiws.\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 "Yma byddwn yn llusgo o'r ymyl i'r Ganolfan.\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 "Gellir dileu Llinellau a Siapiau trwy Dewis a Dileu.\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 "Rydym hefyd yn darlunio Polylines a siapiau wedi'u llenwi.\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 "Tynnir Polyline trwy lusgo i osod pob un o'r pwynt yn y Polyline.\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 ""
+"I orffen y Polyline, pwyswch yr <Space> allwedd neu dewiswch fath llun "
+"arall.\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
+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: 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: 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"
+
+#. 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: 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 ""
+"Yn ardal lunio'r brif ffenestr gallwch weld saeth wag tuag i fyny sy'n "
+"cynrychioli cyrchwr y llygoden. Yn y demo hwn bydd y llygoden yn symud o "
+"gwmpas i ddangos gweithredoedd gwahanol orchmynion i chi.\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 ""
+"Mae'r saeth wag yn cynrychioli cyrchwr y llygoden heb i botwm llygoden gael "
+"ei wasgu.\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
+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"
+
+#: ../../../../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 ""
+"Sylwch: dim ond yn ystod y demo i efelychu gweisg botwm llygoden y mae'r "
+"newidiadau lliw hyn yn digwydd.\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: 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 ""
+"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: 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 ""
+"Mae llusgo gyda'r botwm cywir yn cael ei efelychu gan gyrchwr solet glas "
+"sy'n wynebu'r dde.\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
+msgid "Release Right Click\n"
+msgstr "Rhyddhau De-gliciwch\n"
+
+#. 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/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: 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"
+
+#. 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/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 ""
+"Nodir hyn gyda phen saeth wedi'i lenwi ar i fyny gyda'r llythyren C ger y "
+"saeth \n"
+
+#. 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 ""
+"Er bod botwm chwith y llygoden yn cael ei ddal i lawr, mae'n Ctrl-Move ac yn "
+"Ctrl-Left-Drag-Drag. \n"
+
+#: ../../../../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 ""
+"Dynodir hyn gan saeth pen agored sy'n wynebu'r chwith gyda'r llythyren C yn "
+"agos ati.\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 "Gallwch hefyd ddefnyddio'r allwedd Rheoli gyda botwm De'r llygoden. \n"
+
+#: ../../../../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"
+
+#. 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 ""
+"Mae'r brif ardal arlunio yn dangos cyfran o gyfanswm y cynllun. Gallwch chi "
+"chwyddo i mewn neu chwyddo allan trwy ddewis 'Zoom In' neu 'Zoom Out' yn y "
+"ddewislen 'Edit', trwy ddefnyddio'r botymau Zoom ar y bar offer neu trwy "
+"ddefnyddio'r bysellau 'Page Down' a 'Page Up'.\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 "Gallwch weld y cynllun cyfan yn ffenestr y Map.\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 ""
+"Wrth i chi Chwyddo Mae traciau'n cael eu tynnu gydag un llinell yn lle dwy.\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
+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 ""
+"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/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 ""
+"Gallwch Chwith-Llusgwch yr ardal hilighted yn ffenestr y Map i newid y rhan "
+"o'r cynllun sydd wedi'i harddangos.\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 ""
+"Gallwch hefyd Dde-Llusgo ar ffenestr y Map i osod graddfa a lleoliad y Brif "
+"ffenestr.\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 ""
+"Mae'r <Note> gorchymyn yn caniatáu ichi atodi nodiadau i wahanol smotiau ar "
+"y cynllun.\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 ""
+"Pan osodwch nodyn, arddangosir ffenestr golygydd y Nodyn sy'n caniatáu ichi "
+"nodi'r nodyn.\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 ""
+"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 ""
+"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 "Dyma ddiwedd y Demos XTrackCAD.\n"
+
+#: ../../../../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/v_5_3_0_beta1/app/i18n/custmsg.h:880
+msgid "Thanks for watching.\n"
+msgstr "Diolch am wylio.\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 "Mae'r enghraifft hon yn dangos sut i greu traciau cyfochrog.\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 ""
+"Mae'r gwahaniad wedi'i osod yn yr <Parallel Separation> ffenestr. Dylech "
+"osod y gwerth hwn cyn i chi ddechrau dewis traciau.\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 ""
+"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: 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/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 ""
+"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: 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: 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"
+
+#. 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"
+
+#: ../../../../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: 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: 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: 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: 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: 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: 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 ""
+"I ddefnyddio'r <Profile> gorchymyn, yn gyntaf mae angen i chi ddiffinio "
+"Drychiadau ar eich cynllun.\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 ""
+"Yn yr enghraifft hon, byddwn yn defnyddio'r Drychiadau a ddiffiniwyd yn yr "
+"enghraifft ddiwethaf.\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 ""
+"Gallwch chi symud neu newid maint y dialog Proffil nawr os ydych chi "
+"eisiau.\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 ""
+"I ddangos y Proffil mae angen i chi ddewis Llwybr ar draciau eich cynllun.\n"
+
+#: ../../../../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/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: 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 ""
+"Mae'r ail Bwynt ar ben chwith y seidin. Bydd y Llwybr yn cael ei dynnu mewn "
+"Porffor ar y cynllun.\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 "Nawr dewiswch ddiwedd un o'r Canghennau\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 ""
+"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/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 ""
+"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: 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/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 ""
+"Fe gewch neges gwall oherwydd nad oes llwybr i un o bennau'r Llwybr "
+"presennol.\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 ""
+"Yn yr achos hwn, tynnwch ran olaf y Llwybr trwy glicio ar ben cyfredol y "
+"Llwybr ac ail-ddewis y End End.\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 "Sylwch fod y Radd wedi newid ar y Proffil.\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 ""
+"Gallwch Anwybyddu Pwyntiau Terfynol ar y Llwybr trwy ddefnyddio Shift-Right-"
+"Click i arddangos y ddewislen naidlen Opsiynau Proffil a dewis Anwybyddu.\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 ""
+"Nodyn: Ni allwn ddangos y ddewislen yn y modd demo ond byddwn yn dangos "
+"effaith Cliciwch ar y Dde a dewis anwybyddu. Byddwn yn Anwybyddu Pwynt "
+"Diwedd y nifer a bleidleisiodd nad yw ar y Llwybr.\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 "Sylwch fod rhan o'r llinell Proffil wedi'i hail-lunio mewn Glas.\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 ""
+"Hefyd, mae'r Drychiadau Cyfrifedig a'r marciwr Gradd ar ochr dde'r cynllun "
+"wedi'u diweddaru.\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 ""
+"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/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 ""
+"Rydym yn gwneud hyn trwy Shift Right Click i arddangos y ddewislen naidlen "
+"Opsiynau Proffil a dewis Diffinio.\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 ""
+"Rydyn ni newydd ychwanegu pwynt Drychiad Diffiniedig i ganol y gangen isaf. "
+"Sylwch ar yr ychwanegiad ar y dialog Proffil.\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 ""
+"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/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 ""
+"Gallwn Anwybyddu un o'r Pwyntiau Terfynol ar y nifer sy'n pleidleisio i "
+"orfodi'r Llwybr i gymryd y llwybr arall.\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 ""
+"Unwaith eto rydym yn defnyddio Shift-Right-Click i arddangos y ddewislen "
+"Opsiynau Proffil a dewis anwybyddu.\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 "Nawr tynnwch ran gyntaf y Llwybr,\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 "a'i ail-ddewis.\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 ""
+"Nawr mae'r Llwybr yn mynd trwy End-Point yr Orsaf ac mae'r enw'n ymddangos "
+"ar y dialog Proffil.\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 "Nawr mae angen i ni gynyddu'r gwahaniad lle mae'r traciau'n croesi.\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 ""
+"Y ddau Ddrychiad a welwch yma yw Drychiadau Cyfrifedig sy'n golygu bod "
+"XTrackCAD yn cyfrifo'r Drychiad yn ddeinamig yn seiliedig ar Ddrychiadau "
+"traciau cysylltu.\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 ""
+"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 "
+"Proffil.\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 "Nawr, llusgwch y pwynt ar y Dialog Proffil i newid y Drychiad.\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 ""
+"Sylwch y bydd y llethr ar bob ochr i'r pwynt yn cael ei arddangos ar waelod "
+"y dialog Proffil.\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 ""
+"Ar ôl i ni ryddhau mae'r Proffil yn cael ei ddiweddaru i ddangos y Drychiad "
+"a'r Llethr newydd.\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 "Bydd y <Rescale> gorchymyn yn newid maint y gwrthrychau a ddewiswyd.\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 "Yn gyntaf byddwn yn ceisio ail-raddio yn ôl cymhareb.\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: 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: 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/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: 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: 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: 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: 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 ""
+"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/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: 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 ""
+"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: 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 ""
+"Mae yna opsiynau Cylchdroi y gallwch eu cyrchu trwy ddewislen gorchymyn "
+"Shift-Right-Click a dewis 'Rotate ...'.\n"
+
+#: ../../../../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 ""
+"Gallwch chi gylchdroi'r gwrthrych a ddewiswyd trwy gylchdroi sefydlog (15, "
+"30, 45, 90, 180) naill ai'n glocwedd neu'n wrthglocwedd, neu trwy fynd i "
+"mewn i unrhyw ongl â llaw.\n"
+
+#: ../../../../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"
+
+#: ../../../../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: 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 ""
+"Mae'r <Ruler> gorchymyn yn tynnu Pren mesur ar y cynllun y gallwch ei "
+"ddefnyddio i fesur pellteroedd.\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 "Os gwasgwch y <Ruler> gorchymyn eto tynnir y Pren mesur.\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 "Ond gallwch chi ei osod yn rhywle arall.\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 "Defnyddir y <Select> gorchymyn i ddewis trac.\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 ""
+"Gellir symud neu gylchdroi traciau dethol yn ystod y <Select> gorchymyn.\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 "Gellir dileu, cuddio, rhestru ac allforio traciau dethol hefyd.\n"
+
+#: ../../../../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 thick blue lines.\n"
+msgstr ""
+"Pan symudwch y cyrchwr ger trac y gellid ei ddewis, tynnir y trac gyda "
+"llinellau meddwl glas.\n"
+
+#. 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: 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 ""
+"Bydd gan y trac a ddewiswyd X coch wedi'u tynnu lle mae wedi'i gysylltu â "
+"thraciau heb eu dethol. Mae hyn yn nodi lle bydd y trac yn cael ei "
+"ddatgysylltu os bydd y traciau a ddewiswyd yn cael eu symud, eu cylchdroi "
+"neu eu dileu.\n"
+
+#: ../../../../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: 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: 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: 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 ""
+"I arddangos Select Connected, dewiswch ddau drac yn gyntaf ar ddiwedd rhan "
+"i'w dewis \n"
+
+#. 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"
+
+#. 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: 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: 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: 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/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 ""
+"Pan fyddwch chi'n symud traciau dethol sydd wedi'u cysylltu â thraciau heb "
+"eu dethol, bydd y traciau'n cael eu datgysylltu. Mae'r pwyntiau hyn wedi'u "
+"marcio gan groes Goch ar y layout.\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 ""
+"Os yw pwynt gorffen digyswllt trac ac un sy'n cael ei symud yn ddigon agos, "
+"arddangosir dau gylch, sy'n dangos lle bydd y traciau'n cael eu cydio yn ei "
+"gilydd. \n"
+
+#. 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: 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"
+
+#. 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"
+
+#. 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 ""
+"Gallwch ddefnyddio Shift-Left-Click i ddewis pwynt terfyn agored o drac "
+"dethol i ymuno â thrac heb ei ddewis. \n"
+
+#: ../../../../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: 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 ""
+"Yna byddwch yn Chwith-gliciwch ar ddiweddbwynt trac heb ei ddewis i symud y "
+"traciau a ddewiswyd i ymuno. \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 "Defnyddir yr<Split> gorchymyn i rannu a datgysylltu traciau.\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 "Dewiswch y fan a'r lle ar y trac rydych chi am ei rannu.\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 ""
+"Ni allwch rannu pwyntiau (oni bai eich bod yn dal y fysell Shift i lawr).\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 ""
+"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: 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/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/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 ""
+"Mae sut mae'r traciau cudd yn cael eu tynnu (solid, wedi'u chwalu neu "
+"anweledig) yn cael eu rheoli gan y grŵp botwm radio Draw EndPts ar y dialog "
+"Setup.\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: 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"
+
+#. 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: 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: 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 ""
+"Defnyddir Ymylon Tabl i farcio ymylon y cynllun, naill ai ar gyfer eiliau "
+"neu waliau ystafell.\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 ""
+"Mae Edge Table yn cael ei ddenu at wrthrychau eraill, oni bai eich bod yn "
+"dal y fysell Alt i lawr.\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 "Gellir addasu Ymylon Tabl trwy lusgo ar eu pennau.\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
+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"
+
+#. 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 ""
+"Mae'r enghreifftiau hyn yn dangos rhai o'r ffenestri Dylunydd Pwynt "
+"amrywiol. Mae pob ffenestr yn diffinio pwynt gwahanol.\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 ""
+"Ymhob ffenestr mae yna nifer o baramedrau i'w llenwi ac un neu ddwy linell "
+"ddisgrifio.\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 "Gallwch argraffu'r dyluniad i wirio'r dimensiynau cyn eu cadw.\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 "Dyma'r pwynt rheolaidd.\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 ""
+"Yn ogystal â'r dimensiynau, rydych hefyd yn nodi'r Teitl (Gwneuthurwr, "
+"Disgrifiad a Rhan Rhif). Ar gyfer Pwyntiau gyda fersiynau Chwith a De, mae "
+"Disgrifiadau a Rhifau Rhan ar wahân.\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 ""
+"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"
+
+#. 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: 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: 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 ""
+"Gallwch chi roi'r pwynt ar safle mympwyol ar y cynllun. Chwith-llusgwch y "
+"pwynt i'w le ......\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
+#, 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/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"
+
+#. 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 ""
+"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"
+
+#. 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 ""
+"Os llusgwch ar hyd trac sy'n bodoli eisoes bydd y pwynt newydd ynghlwm wrth "
+"y trac.\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 ""
+"Sylwch fod y llinell statws yn dweud wrthych nifer y Pwyntiau Diwedd a "
+"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: 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 ""
+"Trwy symud y cyrchwr o un ochr i'r llall o linell ganol y trac gallwch "
+"fflipio'r pwynt 180 gradd.\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 ""
+"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: 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 ""
+"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: 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/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: 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: 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: 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 ""
+"Mae diwedd y pwynt wedi'i ddisodli gan ddarn o drac fflecs syth y gallwn ei "
+"addasu.\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 "Gallwn geisio rhannu'r goes sy'n dargyfeirio.\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 ""
+"Sylwch fod cynffon y goes sy'n dargyfeirio wedi'i newid i drac crwm...\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 "a thrac syth.\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 ""
+"Mae'r enghraifft hon yn dangos sut i osod iard gan ddefnyddio'r gorchmynion "
+"<Turnout> a<Parallel>.\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 "Yn gyntaf rydyn ni'n gosod pwynt ar y brif reilffordd.\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: 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 ""
+"Nawr crëwch drac sy'n gyfochrog â'r brif linell. Sicrhewch fod y gwahaniad "
+"yn rhesymol ar gyfer eich graddfa.\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/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: 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 ""
+"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: 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 ""
+"Mae'r bar Statws yn dangos nifer y cysylltiadau auto a fydd yn cael eu "
+"gwneud a'r gwrthbwyso uchaf.\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 ""
+"Mae XTrackCAD yn addasu'r safle pwynt ar gyfer y ffit orau i leihau unrhyw "
+"gysylltiadau i ffwrddet\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/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: 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: 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: 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/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: 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/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: 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: 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"
+
+#. 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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 b04c92d..e9c7c49 100644
--- a/app/i18n/de_DE.po
+++ b/app/i18n/de_DE.po
@@ -1,459 +1,418 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2023 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
+# Translators:
+# Adam J M Richards <adamjmrichards@gmail.com>, 2021
+# Martin Fischer <m_fischer@users.sourceforge.net>, 2021
msgid ""
msgstr ""
-"Project-Id-Version: XTrackCAD 5.2.0\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-07-23 19:08+0200\n"
-"PO-Revision-Date: 2020-07-23 19:11+0200\n"
-"Last-Translator: \n"
-"Language-Team: German <m_fischer@users.sourceforge.net>\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\n"
-"X-Generator: Poedit 2.4\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:4999 ../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: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
+"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: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: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:599
+#: ../bin/cbezier.c:631
msgid "Select End-Point - Ctrl unlocks end-point"
msgstr "Endpunkt auswählen - Strg entsperrt den Endpunkt"
-#: ../bin/cbezier.c:601
+#: ../bin/cbezier.c:633
msgid "Select End-Point"
msgstr "Endpunkt auswählen"
-#: ../bin/cbezier.c:633
+#: ../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:639
+#: ../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: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 ""
-"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:672
+#: ../bin/cbezier.c:707
msgid "Bezier Curve Invalid has identical end points Change End Point"
msgstr ""
-"Die Endpunkte der Bezierkurve sind identisch. Bitte einen Endpunkt ändern"
+"Die Bezierkurve ist ungültig, da die Endpunkte identisch sind. Bitte einen "
+"Endpunkt ändern"
-#: ../bin/cbezier.c:675
+#: ../bin/cbezier.c:711
#, c-format
msgid "Bezier Curve Invalid has %s Change End Point"
-msgstr "Ungültige Bezier-Curve (%s). Bitte den Endpunkt ändern"
+msgstr "Ungültige Bezier-Kurve: %s. Bitte den Endpunkt ändern"
-#: ../bin/cbezier.c:678
+#: ../bin/cbezier.c:715
msgid "Bezier Curve Invalid has three co-incident points"
-msgstr ""
-"Die ungültige Bezier-Kurve hat drei übereinstimmende Punkte - bitte anpassen"
+msgstr "Die Bezier-Kurve ist ungültig, da sie drei übereinstimmende Punkte hat"
-#: ../bin/cbezier.c:680
+#: ../bin/cbezier.c:718
msgid "Bezier is Straight Line"
-msgstr "Bezier ist eine gerade Linie"
+msgstr "Die Auswahl ergibt eine gerade Linie anstelle einer Bezier-Kurve"
-#: ../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 ""
-"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:686
+#: ../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:711
+#: ../bin/cbezier.c:752
msgid "No unconnected End Point to lock to"
-msgstr "Es gibt keinen unverbundenen Endpunkt für das Anschliessen"
+msgstr "Anschließen nicht möglich, da kein offener Endpunkt existiert"
-#: ../bin/cbezier.c:729
+#: ../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:732
+#: ../bin/cbezier.c:776
#, c-format
msgid "Bezier curve invalid has %s Change End Point"
-msgstr "Ungültige Bezier-Curve (%s). Bitte den Endpunkt ändern"
+msgstr "Ungültige Bezier-Kurve: %s. Bitte den Endpunkt ändern"
-#: ../bin/cbezier.c:735
+#: ../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:737
+#: ../bin/cbezier.c:783
msgid "Bezier curve is straight line"
msgstr "Bezier Kurve ist eine gerade Linie"
-#: ../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 "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:758
+#: ../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:762
+#: ../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:770
+#: ../bin/cbezier.c:818
msgid "Create Bezier"
msgstr "Bezier erstellen"
-#: ../bin/cbezier.c:858
+#: ../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:888 ../bin/ccornu.c:1952
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
msgid "No changes made"
msgstr "Keine Änderungen durchgeführt"
-#: ../bin/cbezier.c:892
+#: ../bin/cbezier.c:943
msgid "Modify Bezier"
msgstr "Bezier ändern"
-#: ../bin/cbezier.c:910
+#: ../bin/cbezier.c:957
msgid "Modify Bezier Complete"
msgstr "Ändern der Bezier-Kurve abgeschlossen"
-#: ../bin/cbezier.c:914
+#: ../bin/cbezier.c:961
msgid "Modify Bezier Cancelled"
msgstr "Ändern der Bezier-Kurve abgebrochen"
-#: ../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 "Ersten Endpunkt der Bezierkurve festlegen, an %s fangen"
-#: ../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 "Gleis hat andere Spurweite"
-#: ../bin/cbezier.c:1084
+#: ../bin/cbezier.c:1131
msgid "Drag end of first control arm"
msgstr "Das Ende des ersten Kontrolllinie ziehen"
-#: ../bin/cbezier.c:1091
+#: ../bin/cbezier.c:1139
msgid "Drag end of second control arm"
msgstr "Das Ende der zweiten Kontrolllinie ziehen"
-#: ../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 "Das andere Ende der Bezierkurve auswählen, am Ende von %s fangen"
-#: ../bin/cbezier.c:1165
+#: ../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: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:544
msgid "Name"
msgstr "Name"
-#: ../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 "Befehlsskript"
-#: ../bin/cblock.c:125
+#: ../bin/cblock.c:124
msgid "Segments"
msgstr "Segmente"
-#: ../bin/cblock.c:170 ../bin/cdraw.c:523 ../bin/cdraw.c:1433
-#: ../bin/cdraw.c:1579 ../bin/cdraw.c:2234 ../bin/cdraw.c:2460
-#: ../bin/cdraw.c:2497 ../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: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:171 ../bin/cdraw.c:515 ../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 "Endpunkt 1: X,Y"
-#: ../bin/cblock.c:172 ../bin/cdraw.c:516 ../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 "Endpunkt 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:130 ../bin/cdraw.c:2293
-#: ../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:1067 ../bin/cselect.c:1163
-#: ../bin/cselect.c:1984 ../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:173
-#: ../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:2942
-#: ../bin/cturnout.c:3080 ../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:2643 ../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:373 ../bin/layout.c:561 ../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:485
-#: ../bin/misc.c:1810 ../bin/misc.c:1931 ../bin/misc.c:1939 ../bin/misc.c:2017
-#: ../bin/misc.c:2808 ../bin/misc.c:2817 ../bin/misc.c:2837 ../bin/misc.c:2843
-#: ../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: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: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:212
+#: ../bin/cblock.c:215
msgid "Change block"
msgstr "Block ändern"
-#: ../bin/cblock.c:264 ../bin/cswitchmotor.c:342
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
#, c-format
msgid "(%d): Layer=%u %s"
msgstr "(%d): Ebene=%u %s"
-#: ../bin/cblock.c:288 ../bin/cblock.c:1000
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
msgid "Block"
msgstr "Block"
-#: ../bin/cblock.c:491
+#: ../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:575 ../bin/cblock.c:807
+#: ../bin/cblock.c:592 ../bin/cblock.c:826
msgid "Block must have a name!"
msgstr "Der Gleisabschnitt benötigt einen Namen!"
-#: ../bin/cblock.c:604
-msgid "Block is discontigious!"
+#: ../bin/cblock.c:621
+msgid "Block is discontiguous!"
msgstr "Der Block ist nicht zusammenhängend!"
-#: ../bin/cblock.c:609
+#: ../bin/cblock.c:626
msgid "Create block"
msgstr "Block erstellen"
-#: ../bin/cblock.c:656
+#: ../bin/cblock.c:674
msgid "Non track object skipped!"
msgstr "Objekt ist kein Gleis, übersprungen!"
-#: ../bin/cblock.c:660
+#: ../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:674
+#: ../bin/cblock.c:692
msgid "Create Block"
-msgstr "Gleisabschnitt erstellen"
+msgstr "Block erstellen"
-#: ../bin/cblock.c:704 ../bin/cblock.c:736
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
msgid "Select a track"
msgstr "Gleis auswählen"
-#: ../bin/cblock.c:713 ../bin/cblock.c:744
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
msgid "Not a block!"
msgstr "Kein Block!"
-#: ../bin/cblock.c:749
+#: ../bin/cblock.c:767
#, c-format
msgid "Really delete block %s?"
msgstr "Soll der Block %s wirklich gelöscht werden?"
-#: ../bin/cblock.c:749 ../bin/ccornu.c:2745 ../bin/ccornu.c:2956
-#: ../bin/cdraw.c:134 ../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:4889 ../bin/dcontmgm.c:173
-#: ../bin/dcustmgm.c:168 ../bin/misc.c:1239 ../bin/misc.c:1246
-#: ../bin/misc.c:1317 ../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: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:749 ../bin/ccornu.c:2745 ../bin/ccornu.c:2956
-#: ../bin/cdraw.c:134 ../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:4889 ../bin/dcontmgm.c:173 ../bin/dcustmgm.c:168
-#: ../bin/misc.c:1239 ../bin/misc.c:1246 ../bin/misc.c:1317 ../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: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:750
+#: ../bin/cblock.c:769
msgid "Delete Block"
-msgstr "Gleisabschnitt löschen"
+msgstr "Block löschen"
-#: ../bin/cblock.c:795
+#: ../bin/cblock.c:814
#, c-format
msgid "Deleting block %s"
-msgstr "Gleisabschnitt %s löschen"
+msgstr "Block%s löschen"
-#: ../bin/cblock.c:811
+#: ../bin/cblock.c:830
msgid "Modify Block"
-msgstr "Gleisabschnitt bearbeiten"
+msgstr "Block bearbeiten"
-#: ../bin/cblock.c:844
+#: ../bin/cblock.c:863
msgid "Edit block"
msgstr "Block bearbeiten"
-#: ../bin/cblock.c:850
+#: ../bin/cblock.c:869
#, c-format
msgid "Edit block %d"
-msgstr "Gleisabschnitt %d bearbeiten"
-
-#: ../bin/ccontrol.c:172 ../bin/csensor.c:164 ../bin/csignal.c:239
-#: ../bin/ctrain.c:183
-msgid "Position"
-msgstr "Position"
-
-#: ../bin/ccontrol.c:173 ../bin/ccontrol.c:431
-msgid "On Script"
-msgstr "Befehlsskript An"
-
-#: ../bin/ccontrol.c:174 ../bin/ccontrol.c:433
-msgid "Off Script"
-msgstr "Befehlsskript Aus"
-
-#: ../bin/ccontrol.c:240
-msgid "Change Control"
-msgstr "Steuerung ändern"
-
-#: ../bin/ccontrol.c:282 ../bin/csensor.c:252
-#, 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:295 ../bin/ccontrol.c:640
-msgid "Control"
-msgstr "Steuerung"
-
-#: ../bin/ccontrol.c:427
-msgid "Origin X"
-msgstr "Ausgangspunkt X"
-
-#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:513
-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:485
-msgid "Edit control"
-msgstr "Steuerung bearbeiten"
+msgstr "Block%d bearbeiten"
-#: ../bin/ccontrol.c:526
-msgid "Place control"
-msgstr "Steuerung setzen"
-
-#: ../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
#, c-format
msgid "%s FlexTrack"
msgstr "%s Flexgleis"
-#: ../bin/ccornu.c:254
+#: ../bin/ccornu.c:247
msgid " FLEX "
msgstr " FLEX "
-#: ../bin/ccornu.c:903 ../bin/cjoin.c:936 ../bin/cmisc.c:59
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
msgid "First"
msgstr "Erste"
-#: ../bin/ccornu.c:910 ../bin/cjoin.c:944
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
msgid "Second"
msgstr "Zweite"
-#: ../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] "
@@ -462,90 +421,91 @@ 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"
-#: ../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 "Endwinkel"
-#: ../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
msgid "End Radius"
msgstr "Endradius"
-#: ../bin/ccornu.c:1076
+#: ../bin/ccornu.c:1142
msgid "Select Point, or Add Point"
msgstr "Punkt auswählen oder neuen Punkt hinzufügen"
-#: ../bin/ccornu.c:1247
+#: ../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:1253
+#: ../bin/ccornu.c:1336
msgid "Drag out end of Cornu"
msgstr "Ende der Cornu ziehen"
-#: ../bin/ccornu.c:1255
+#: ../bin/ccornu.c:1338
msgid "Drag along end of track"
msgstr "Entlang des Ende des Gleises ziehen"
-#: ../bin/ccornu.c:1257
+#: ../bin/ccornu.c:1340
msgid "Drag to move"
msgstr "Ziehen zum Verschieben"
-#: ../bin/ccornu.c:1260
+#: ../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:1264
+#: ../bin/ccornu.c:1348
msgid "Drag to change end radius"
msgstr "Radius durch Ziehen ändern"
-#: ../bin/ccornu.c:1267
+#: ../bin/ccornu.c:1351
msgid "Drag to change end angle"
msgstr "Ziehen um den Abschlußwinkel zu ändern"
-#: ../bin/ccornu.c:1282
+#: ../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:1294
+#: ../bin/ccornu.c:1380
msgid "Track can't be split"
msgstr "Das Gleis kann nicht getrennt werden"
-#: ../bin/ccornu.c:1356
+#: ../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:1364
+#: ../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:1506
+#: ../bin/ccornu.c:1609
msgid "Can't extend connected Bezier or Cornu"
msgstr "Bezier- oder Cornu-Kurve kann nicht erweitert werden"
-#: ../bin/ccornu.c:1578
+#: ../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:1600 ../bin/ccornu.c:2270
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
msgid "Helix Already Connected"
msgstr "Gleiswendel ist bereits verbunden"
-#: ../bin/ccornu.c:1614
+#: ../bin/ccornu.c:1730
msgid "No Valid end point on that track"
msgstr "Kein gültiger Endpunkt auf diesem Gleis"
-#: ../bin/ccornu.c:1619
+#: ../bin/ccornu.c:1735
msgid "Track is different scale"
msgstr "Das Gleis hat einen anderen Maßstab"
-#: ../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"
@@ -553,1173 +513,1261 @@ msgstr ""
"Einen Punkt auswählen und verschieben - Bestätigen mit Eingabe, Abbrechen "
"mit Esc"
-#: ../bin/ccornu.c:1702
+#: ../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:1713
+#: ../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:1718
+#: ../bin/ccornu.c:1844
msgid "Create Cornu"
msgstr "Cornu-Kurve erstellen"
-#: ../bin/ccornu.c:1907
+#: ../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:1966
+#: ../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:1971
+#: ../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:1986
+#: ../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:2078
+#: ../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:2089
+#: ../bin/ccornu.c:2230
msgid "Modify Cornu Cancelled"
msgstr "Änderung der Cornu-Kurve abbrechen"
-#: ../bin/ccornu.c:2246
+#: ../bin/ccornu.c:2396
msgid "Left click - Start Cornu track"
msgstr "Durch Drücken der linken Maustaste mit einer Cornu beginnen"
-#: ../bin/ccornu.c:2248
+#: ../bin/ccornu.c:2398
msgid "Left click - Place Flextrack"
msgstr "Linke Maustaste - Flexgleis setzen"
-#: ../bin/ccornu.c:2251
+#: ../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:2253
+#: ../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:2284
+#: ../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:2312 ../bin/ccornu.c:2324
+#: ../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:2328
+#: ../bin/ccornu.c:2487
msgid "No Unconnected Track End there"
msgstr "Hier ist kein offenes Gleisende"
-#: ../bin/ccornu.c:2339 ../bin/ccornu.c:2363
+#: ../bin/ccornu.c:2498 ../bin/ccornu.c:2523
msgid "No Valid Track End there"
msgstr "Hier ist kein gültiges Gleisende"
-#: ../bin/ccornu.c:2351
+#: ../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:2375
+#: ../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"
-#: ../bin/ccornu.c:2449
+#: ../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:2454
+#: ../bin/ccornu.c:2628
msgid "Point not on track 1"
msgstr "Der Punkt ist nicht auf Gleis 1"
-#: ../bin/ccornu.c:2492
+#: ../bin/ccornu.c:2670
msgid "Pick other end of Cornu"
msgstr "Anderes Ende der Cornu setzen"
-#: ../bin/ccornu.c:2494
+#: ../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:2498
+#: ../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:2733 ../bin/ccornu.c:2946
+#: ../bin/ccornu.c:2941 ../bin/ccornu.c:3166
msgid "Not on a Track"
msgstr "Nicht auf einem Gleis"
-#: ../bin/ccornu.c:2741
+#: ../bin/ccornu.c:2949
msgid "Select a Track To Convert"
msgstr "Gleis für das Umwandeln auswählen"
-#: ../bin/ccornu.c:2745
+#: ../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:2750
+#: ../bin/ccornu.c:2958
msgid "Convert Cornu"
msgstr "Cornu umwandeln"
-#: ../bin/ccornu.c:2902
+#: ../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:2902 ../bin/ccornu.c:3016
+#: ../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:2952
+#: ../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:2956
+#: ../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:2965
+#: ../bin/ccornu.c:3187
msgid "Convert Bezier and Cornu"
msgstr "Bezier-Kurve oder Cornu umwandeln"
-#: ../bin/ccornu.c:3016
+#: ../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:3044
+#: ../bin/ccornu.c:3269
msgid "Convert"
msgstr "Umwandeln"
-#: ../bin/ccornu.c:3045
+#: ../bin/ccornu.c:3270
msgid "Convert To Cornu"
msgstr "In Cornu erstellen"
-#: ../bin/ccornu.c:3046
+#: ../bin/ccornu.c:3273
msgid "Convert From Cornu"
msgstr "Aus Cornu umwandeln"
-#: ../bin/ccurve.c:169
+#: ../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:171
+#: ../bin/ccurve.c:167
msgid "Drag from endpoint in direction of curve"
msgstr "Vom Endpunkt in Richtung der Kurve ziehen"
-#: ../bin/ccurve.c:175
+#: ../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:177
+#: ../bin/ccurve.c:174
msgid "Drag from endpoint to center"
msgstr "Vom Endpunkt zum Mittelpunkt ziehen"
-#: ../bin/ccurve.c:180
+#: ../bin/ccurve.c:178
msgid "Drag from center to endpoint"
msgstr "Vom Mittelpunkt zum Endpunkt ziehen"
-#: ../bin/ccurve.c:183
+#: ../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:241
+#: ../bin/ccurve.c:243
msgid "End locked: Drag out curve start"
msgstr "Ende fixiert, Anfang der Kurve ziehen"
-#: ../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 "Ende fixiert, Anfang der Kurve mit Umschalt-Taste ziehen"
-#: ../bin/ccurve.c:243
+#: ../bin/ccurve.c:245
msgid "Drag along curve start"
msgstr "Entlang der Anfangs der Kurve ziehen"
-#: ../bin/ccurve.c:251
+#: ../bin/ccurve.c:253
msgid "End locked: Drag out curve center"
msgstr "Ende fixiert, Mittelpunkt der Kurve ziehen"
-#: ../bin/ccurve.c:253
+#: ../bin/ccurve.c:255
msgid "Drag out curve center"
msgstr "Zum Mittelpunkt der Kurve ziehen"
-#: ../bin/ccurve.c:260
+#: ../bin/ccurve.c:262
msgid "Drag out from center to endpoint"
msgstr "Vom Mittelpunkt zum Endpunkt ziehen"
-#: ../bin/ccurve.c:269
+#: ../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:272
+#: ../bin/ccurve.c:274
msgid "Drag to other end of chord"
msgstr "Zum anderen Ende der Sehne ziehen"
-#: ../bin/ccurve.c:327
+#: ../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:328
+#: ../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:334
+#: ../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:335
+#: ../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:341
+#: ../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:347
+#: ../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:348
+#: ../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:403 ../bin/ccurve.c:561 ../bin/drawgeom.c:735
-msgid "Drag on Red arrows to adjust curve"
-msgstr "An den roten Pfeilen ziehen, um die Kurve anzupassen"
+#: ../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:501 ../bin/cjoin.c:210 ../bin/cmodify.c:576
-#: ../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 "Gleisgerade: Länge=%s Winkel=%0.3f"
-#: ../bin/ccurve.c:508 ../bin/cmodify.c:581 ../bin/drawgeom.c:618
-#: ../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:527
+#: ../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:581 ../bin/cstraigh.c:162
+#: ../bin/ccurve.c:642 ../bin/cstraigh.c:173
msgid "Create Straight Track"
msgstr "Erstelle gerades Gleis"
-#: ../bin/ccurve.c:593
+#: ../bin/ccurve.c:656
msgid "Create Curved Track"
msgstr "Erstelle Gleisbogen"
-#: ../bin/ccurve.c:664
+#: ../bin/ccurve.c:726
msgid "Elevation Difference"
msgstr "Höhenunterschied"
-#: ../bin/ccurve.c:665 ../bin/cdraw.c:522 ../bin/cdraw.c:1445
-#: ../bin/cdraw.c:1591 ../bin/cdraw.c:2241 ../bin/cdraw.c:2440
-#: ../bin/cdraw.c:2454 ../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: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:666 ../bin/tcurve.c:370
+#: ../bin/ccurve.c:728 ../bin/tcurve.c:402
msgid "Turns"
msgstr "Windungen"
-#: ../bin/ccurve.c:667
+#: ../bin/ccurve.c:729
msgid "Angular Separation"
msgstr "Winkelabstand"
-#: ../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 "Steigung"
-#: ../bin/ccurve.c:669
+#: ../bin/ccurve.c:731
msgid "Vertical Separation"
msgstr "Vertikaler Abstand"
-#: ../bin/ccurve.c:671
+#: ../bin/ccurve.c:733
msgid "Total Length"
msgstr "Gesamtlänge"
-#: ../bin/ccurve.c:747
+#: ../bin/ccurve.c:813
#, c-format
msgid "Total Length %s"
msgstr "Gesamtlänge %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 "Gleiswendel"
-#: ../bin/ccurve.c:799
+#: ../bin/ccurve.c:868
msgid "Circle Radius"
msgstr "Kreisradius"
-#: ../bin/ccurve.c:804
+#: ../bin/ccurve.c:873
msgid "Click on Circle Edge"
msgstr "Auf den Rand des Kreis klicken"
-#: ../bin/ccurve.c:808
+#: ../bin/ccurve.c:877
msgid "Click on Circle Center"
msgstr "Auf den Mittelpunkt des Kreises klicken"
-#: ../bin/ccurve.c:839
+#: ../bin/ccurve.c:907
msgid "Drag to Center"
msgstr "Zum Mittelpunkt ziehen"
-#: ../bin/ccurve.c:843
+#: ../bin/ccurve.c:911
msgid "Drag to Edge"
msgstr "Zum Rand ziehen"
-#: ../bin/ccurve.c:863 ../bin/ccurve.c:867
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
#, c-format
msgid "Radius=%s"
msgstr "Radius=%s"
-#: ../bin/ccurve.c:888
+#: ../bin/ccurve.c:957
msgid "Create Helix Track"
msgstr "Erstelle Gleiswendel"
-#: ../bin/ccurve.c:903
+#: ../bin/ccurve.c:972
msgid "Create Circle Track"
msgstr "Erstelle Gleiskreis"
-#: ../bin/ccurve.c:958
-msgid "Cornu Curve"
-msgstr "Cornu"
-
-#: ../bin/ccurve.c:960
+#: ../bin/ccurve.c:1031
msgid "Curve Track"
msgstr "Gleisbogen"
-#: ../bin/ccurve.c:960
+#: ../bin/ccurve.c:1031
msgid "Curve Tracks"
msgstr "Gleisbögen"
-#: ../bin/ccurve.c:961
+#: ../bin/ccurve.c:1032
msgid "Curve from End-Pt"
msgstr "Bogen aus Endpunkten"
-#: ../bin/ccurve.c:962
+#: ../bin/ccurve.c:1035
msgid "Curve from Tangent"
msgstr "Bogen an Tangente"
-#: ../bin/ccurve.c:963
+#: ../bin/ccurve.c:1038
msgid "Curve from Center"
msgstr "Bogen um Mittelpunkt"
-#: ../bin/ccurve.c:964
+#: ../bin/ccurve.c:1041
msgid "Curve from Chord"
msgstr "Bogen aus Sehne"
-#: ../bin/ccurve.c:965 ../bin/cdraw.c:2582
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
msgid "Bezier Curve"
msgstr "Bezierkurve"
-#: ../bin/ccurve.c:968 ../bin/tcurve.c:643
+#: ../bin/ccurve.c:1047
+msgid "Cornu Curve"
+msgstr "Cornu"
+
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
msgid "Circle Track"
msgstr "Gleiskreis"
-#: ../bin/ccurve.c:968
+#: ../bin/ccurve.c:1052
msgid "Circle Tracks"
msgstr "Gleiskreise"
-#: ../bin/ccurve.c:969
+#: ../bin/ccurve.c:1054
msgid "Fixed Radius Circle"
msgstr "Kreis mit festem Radius"
-#: ../bin/ccurve.c:970
+#: ../bin/ccurve.c:1056
msgid "Circle from Tangent"
msgstr "Kreis an Tangente"
-#: ../bin/ccurve.c:971
+#: ../bin/ccurve.c:1059
msgid "Circle from Center"
msgstr "Kreis um Mittelpunkt"
-#: ../bin/cdraw.c:130
+#: ../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:517
+#: ../bin/cdraw.c:553
msgid "First Point: X,Y"
msgstr "Erster Punkt: X,Y"
-#: ../bin/cdraw.c:518 ../bin/tcurve.c:368
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
msgid "Center: X,Y"
msgstr "Mittelpunkt: X,Y"
-#: ../bin/cdraw.c:519 ../bin/cdraw.c:540 ../bin/cdraw.c:1435
-#: ../bin/cdraw.c:1580 ../bin/cdraw.c:2239 ../bin/cdraw.c:2461
-#: ../bin/cdraw.c:2481 ../bin/cdraw.c:2485 ../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 "Winkel"
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
+msgid "Angular Length"
+msgstr "Winkellänge"
-#: ../bin/cdraw.c:520 ../bin/tcurve.c:374
+#: ../bin/cdraw.c:556
+msgid "Line Angle"
+msgstr "Linienwinkel"
+
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
msgid "CCW Angle"
-msgstr "Winkel (gegen Uhrzeigersinn)"
+msgstr "Winkel gegen Uhrzeigersinn"
-#: ../bin/cdraw.c:521 ../bin/tcurve.c:375
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
msgid "CW Angle"
-msgstr "Winkel (im Uhrzeigersinn)"
+msgstr "Winkel im Uhrzeigersinn"
-#: ../bin/cdraw.c:524 ../bin/cdraw.c:1442 ../bin/cdraw.c:1564
-#: ../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 "Seitenhöhe"
-#: ../bin/cdraw.c:525 ../bin/cdraw.c:1440 ../bin/cdraw.c:1563
-#: ../bin/cdraw.c:2236 ../bin/cdraw.c:2498 ../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:185
+#: ../bin/dcar.c:2344 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:192
msgid "Width"
msgstr "Breite"
-#: ../bin/cdraw.c:526
-msgid "Keep Origin Relative"
-msgstr "Relativer Bezugspunkt"
-
-#: ../bin/cdraw.c:527
-msgid "Rot Origin: X,Y"
-msgstr "Drehzentrum: X,Y"
-
-#: ../bin/cdraw.c:528 ../bin/cdraw.c:1449
-msgid "Rotate Angle"
-msgstr "Drehwinkel"
+#: ../bin/cdraw.c:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
+msgid "Pivot"
+msgstr "Drehpunkt"
-#: ../bin/cdraw.c:529
+#: ../bin/cdraw.c:564
msgid "Point Count"
msgstr "Anzahl der Punkte"
-#: ../bin/cdraw.c:530 ../bin/cdraw.c:2214 ../bin/ctodesgn.c:207
-#: ../bin/tbezier.c:261
+#: ../bin/cdraw.c:565 ../bin/cdraw.c:2823 ../bin/ctodesgn.c:211
+#: ../bin/tbezier.c:299
msgid "Line Width"
msgstr "Strichdicke"
-#: ../bin/cdraw.c:531 ../bin/cdraw.c:2243 ../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
msgid "Line Type"
msgstr "Linienart"
-#: ../bin/cdraw.c:532 ../bin/cdraw.c:2216 ../bin/cdraw.c:2218
-#: ../bin/cdraw.c:2316 ../bin/cdraw.c:2349 ../bin/cmisc.c:125 ../bin/ctext.c:68
-#: ../bin/ctext.c:147 ../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: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:533
+#: ../bin/cdraw.c:568
msgid "Filled"
msgstr "Gefüllt"
-#: ../bin/cdraw.c:534
+#: ../bin/cdraw.c:569
msgid "Open End"
msgstr "Offenes Ende"
-#: ../bin/cdraw.c:535 ../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:61 ../bin/ctext.c:138
msgid "Boxed"
msgstr "Eingerahmt"
-#: ../bin/cdraw.c:536 ../bin/cdraw.c:1116 ../bin/cdraw.c:2250
+#: ../bin/cdraw.c:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
msgid "Lumber"
msgstr "Holzleiste"
-#: ../bin/cdraw.c:537
+#: ../bin/cdraw.c:572
msgid "Orientation"
msgstr "Ausrichtung"
-#: ../bin/cdraw.c:538 ../bin/cdraw.c:2232
-#: ../../../../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 "Größe"
-#: ../bin/cdraw.c:539 ../bin/compound.c:563 ../bin/tease.c:523
-msgid "Origin: X,Y"
-msgstr "Ausgangspunkt: X,Y"
+#: ../bin/cdraw.c:574
+msgid "Text Origin: X,Y"
+msgstr "Textursprung: X,Y"
+
+#: ../bin/cdraw.c:575
+msgid "Text Angle"
+msgstr "Textwinkel"
-#: ../bin/cdraw.c:541 ../bin/ctext.c:66 ../bin/ctext.c:146
+#: ../bin/cdraw.c:576 ../bin/ctext.c:57 ../bin/ctext.c:136
msgid "Font Size"
msgstr "Schriftgröße"
-#: ../bin/cdraw.c:542 ../bin/cdraw.c:1262 ../bin/ctext.c:263
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:265
msgid "Text"
msgstr "Text"
-#: ../bin/cdraw.c:543 ../bin/cmisc.c:144 ../bin/compound.c:565
-#: ../bin/tcurve.c:377 ../bin/tease.c:530 ../bin/tstraigh.c:92
-msgid "Pivot"
-msgstr "Drehpunkt"
+#: ../bin/cdraw.c:578
+msgid "Lock To Origin"
+msgstr "Am Ursprung sperren"
+
+#: ../bin/cdraw.c:579
+msgid "Rot Origin: X,Y"
+msgstr "Drehzentrum: X,Y"
-#: ../bin/cdraw.c:544 ../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
+msgid "Rotate By"
+msgstr "Drehen um"
+
+#: ../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:1101
+#: ../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:1106 ../bin/cdraw.c:2574
+#: ../bin/cdraw.c:1167 ../bin/cdraw.c:3190
msgid "Dimension Line"
msgstr "Maßlinie"
-#: ../bin/cdraw.c:1127 ../bin/cdraw.c:2251 ../bin/cdraw.c:2576
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
msgid "Table Edge"
msgstr "Tischkante"
-#: ../bin/cdraw.c:1147 ../bin/cdraw.c:2256 ../bin/cdraw.c:2257
-#: ../bin/cdraw.c:2258
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
msgid "Circle"
msgstr "Kreis"
-#: ../bin/cdraw.c:1158
+#: ../bin/cdraw.c:1227
msgid "Curved Line"
msgstr "Gebogene Linie"
-#: ../bin/cdraw.c:1174 ../bin/cdraw.c:2261 ../bin/cdraw.c:2262
-#: ../bin/cdraw.c:2263
+#: ../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:1193
+#: ../bin/cdraw.c:1279
+msgid "Filled Rectangle"
+msgstr "Gefülltes Rechteck"
+
+#: ../bin/cdraw.c:1279
msgid "Rectangle"
msgstr "Rechteck"
-#: ../bin/cdraw.c:1207 ../bin/cdraw.c:2267
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
msgid "Polyline"
msgstr "Polylinie"
-#: ../bin/cdraw.c:1211 ../bin/cdraw.c:2260 ../bin/cdraw.c:2593
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
+msgid "Filled Polygon"
+msgstr "Gefülltes Polygon"
+
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
msgid "Polygon"
msgstr "Vieleck"
-#: ../bin/cdraw.c:1229
-msgid "Filled Rectangle"
-msgstr "Gefülltes Rechteck"
-
-#: ../bin/cdraw.c:1242 ../bin/cdraw.c:2265 ../bin/cdraw.c:2594
-msgid "Filled Polygon"
-msgstr "Gefülltes Ploygon"
-
-#: ../bin/cdraw.c:1268
+#: ../bin/cdraw.c:1330
#, c-format
msgid "%s(%d) Layer=%d"
msgstr "%s (%d) Ebene=%d"
-#: ../bin/cdraw.c:1288 ../bin/cdraw.c:2319 ../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:91 ../bin/tbezier.c:519
msgid "Solid"
msgstr "Gefüllt"
-#: ../bin/cdraw.c:1289 ../bin/cdraw.c:2321 ../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:88 ../bin/tbezier.c:520
msgid "Dash"
msgstr "Gestrichelt"
-#: ../bin/cdraw.c:1290 ../bin/cdraw.c:2320 ../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 "Punkt"
-#: ../bin/cdraw.c:1291 ../bin/compound.c:959 ../bin/tbezier.c:461
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
msgid "DashDot"
msgstr "Strich Punkt"
-#: ../bin/cdraw.c:1292 ../bin/compound.c:960 ../bin/tbezier.c:462
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
msgid "DashDotDot"
msgstr "Strich Punkt Punkt"
-#: ../bin/cdraw.c:1293 ../bin/compound.c:961 ../bin/tbezier.c:463
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
msgid "CenterDot"
msgstr "Mittellinie"
-#: ../bin/cdraw.c:1294 ../bin/compound.c:962 ../bin/tbezier.c:464
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
msgid "PhantomDot"
msgstr "Verborgene Linie"
-#: ../bin/cdraw.c:1299 ../bin/cdraw.c:2367
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
msgid "Tiny"
msgstr "Winzig"
-#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2368
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
msgid "Small"
msgstr "Klein"
-#: ../bin/cdraw.c:1301 ../bin/cdraw.c:2369
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
msgid "Medium"
msgstr "Mittel"
-#: ../bin/cdraw.c:1302 ../bin/cdraw.c:2370
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
msgid "Large"
msgstr "Groß"
-#: ../bin/cdraw.c:1438
+#: ../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:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
msgid "Relative Angle"
msgstr "Relativer Winkel"
-#: ../bin/cdraw.c:1447 ../bin/cdraw.c:1595 ../bin/cdraw.c:2455
+#: ../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:1452
-msgid "Rot Center X"
-msgstr "Drehzentrum X"
+#: ../bin/cdraw.c:1589
+msgid "Rotate Angle"
+msgstr "Drehwinkel"
-#: ../bin/cdraw.c:1454
-msgid "Rot Center Y"
-msgstr "Drehzentrum Y"
+#: ../bin/cdraw.c:1592
+msgid "Rot Center X,Y"
+msgstr "Drehpunkt X, Y"
-#: ../bin/cdraw.c:1551
+#: ../bin/cdraw.c:1692
msgid "Seg Lth"
msgstr "Segment Länge"
-#: ../bin/cdraw.c:1552
+#: ../bin/cdraw.c:1693
msgid "Rel Ang"
msgstr "Rel. Winkel"
-#: ../bin/cdraw.c:2221 ../bin/cdraw.c:2223 ../bin/cdraw.c:2347
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
msgid "Lumber Type"
msgstr "Leistenart"
-#: ../bin/cdraw.c:2248
+#: ../bin/cdraw.c:2857
msgid "Straight"
msgstr "Gerade"
-#: ../bin/cdraw.c:2249
+#: ../bin/cdraw.c:2858
msgid "Dimension"
msgstr "Abmessung"
-#: ../bin/cdraw.c:2252 ../bin/cdraw.c:2253 ../bin/cdraw.c:2254
-#: ../bin/cdraw.c:2255
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
msgid "Curved"
msgstr "Gebogen"
-#: ../bin/cdraw.c:2259 ../bin/cdraw.c:2591
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
msgid "Box"
msgstr "Rechteck"
-#: ../bin/cdraw.c:2264 ../bin/cdraw.c:2592
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
msgid "Filled Box"
msgstr "Gefülltes Rechteck"
-#: ../bin/cdraw.c:2266 ../bin/tbezier.c:455
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
msgid "Bezier Line"
msgstr "Bezierlinie"
-#: ../bin/cdraw.c:2314
+#: ../bin/cdraw.c:2925
#, c-format
msgid "%s Line Width"
msgstr "%s Strichdicke"
-#: ../bin/cdraw.c:2317 ../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 "Typ"
-#: ../bin/cdraw.c:2322
+#: ../bin/cdraw.c:2933
msgid "Dash-Dot"
msgstr "Strichpunktiert"
-#: ../bin/cdraw.c:2323
+#: ../bin/cdraw.c:2934
msgid "Dash-Dot-Dot"
msgstr "Strich-Punkt-Punkt"
-#: ../bin/cdraw.c:2336
+#: ../bin/cdraw.c:2947
#, c-format
msgid "%s Color"
msgstr "%s Farbe"
-#: ../bin/cdraw.c:2365
+#: ../bin/cdraw.c:2979
msgid "Dimension Line Size"
msgstr "Maßliniengröße"
-#: ../bin/cdraw.c:2377
+#: ../bin/cdraw.c:2991
msgid "Drag to create Table Edge"
msgstr "Durch Ziehen die Tischkante erstellen"
-#: ../bin/cdraw.c:2479
+#: ../bin/cdraw.c:3089
msgid "Seg Length"
msgstr "Segmentlänge"
-#: ../bin/cdraw.c:2483
+#: ../bin/cdraw.c:3094
msgid "Rel Angle"
msgstr "Relativer Winkel"
-#: ../bin/cdraw.c:2573
+#: ../bin/cdraw.c:3189
msgid "Line"
msgstr "Linie"
-#: ../bin/cdraw.c:2573
+#: ../bin/cdraw.c:3189
msgid "Draw Line"
msgstr "Zeichne Linie"
-#: ../bin/cdraw.c:2574
+#: ../bin/cdraw.c:3190
msgid "Draw Dimension Line"
msgstr "Zeichne Maßlinie"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:363
-#: ../bin/cdraw.c:2575 ../../../../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 "Unterbau"
-#: ../bin/cdraw.c:2575
+#: ../bin/cdraw.c:3191
msgid "Draw Benchwork"
msgstr "Zeichne Unterbau"
-#: ../bin/cdraw.c:2576
+#: ../bin/cdraw.c:3192
msgid "Draw Table Edge"
msgstr "Zeichne Tischkante"
-#: ../bin/cdraw.c:2578
+#: ../bin/cdraw.c:3195
msgid "Curve End"
msgstr "Kurvenenden"
-#: ../bin/cdraw.c:2578
+#: ../bin/cdraw.c:3195
msgid "Draw Curve from End"
msgstr "Zeichne Kurve durch Enden"
-#: ../bin/cdraw.c:2579
+#: ../bin/cdraw.c:3196
msgid "Curve Tangent"
msgstr "Kurve Tangente"
-#: ../bin/cdraw.c:2579
+#: ../bin/cdraw.c:3196
msgid "Draw Curve from Tangent"
msgstr "Zeichne Kurve an Tangente"
-#: ../bin/cdraw.c:2580
+#: ../bin/cdraw.c:3197
msgid "Curve Center"
msgstr "Kurve um Mittelpunkt"
-#: ../bin/cdraw.c:2580
+#: ../bin/cdraw.c:3197
msgid "Draw Curve from Center"
msgstr "Zeichne Kurve um Mittelpunkt"
-#: ../bin/cdraw.c:2581
+#: ../bin/cdraw.c:3198
msgid "Curve Chord"
msgstr "Kurve durch Sehne"
-#: ../bin/cdraw.c:2581
+#: ../bin/cdraw.c:3198
msgid "Draw Curve from Chord"
msgstr "Zeichne Kurve durch Sehne"
-#: ../bin/cdraw.c:2582
+#: ../bin/cdraw.c:3199
msgid "Draw Bezier"
msgstr "Zeichne Bezier"
-#: ../bin/cdraw.c:2585
-msgid "Circle Tangent"
-msgstr "Kreis an Tangente"
-
-#: ../bin/cdraw.c:2585
-msgid "Draw Circle from Tangent"
-msgstr "Zeichne Kreis an Tangente"
-
-#: ../bin/cdraw.c:2586
+#: ../bin/cdraw.c:3203
msgid "Circle Center"
msgstr "Kreismittelpunkt"
-#: ../bin/cdraw.c:2586
+#: ../bin/cdraw.c:3203
msgid "Draw Circle from Center"
msgstr "Zeichne Kreis um Mittelpunkt"
-#: ../bin/cdraw.c:2588
-msgid "Circle Filled Tangent"
-msgstr "Gefüllter Kreis an Tangente"
+#: ../bin/cdraw.c:3204
+msgid "Circle Tangent"
+msgstr "Kreis an Tangente"
-#: ../bin/cdraw.c:2588
-msgid "Draw Filled Circle from Tangent"
-msgstr "Gefüllter Kreis an Tangente"
+#: ../bin/cdraw.c:3204
+msgid "Draw Circle from Tangent"
+msgstr "Zeichne Kreis an Tangente"
-#: ../bin/cdraw.c:2589
+#: ../bin/cdraw.c:3206
msgid "Circle Filled Center"
msgstr "Gefüllter Kreis Mittelpunkt"
-#: ../bin/cdraw.c:2589
+#: ../bin/cdraw.c:3206
msgid "Draw Filled Circle from Center"
msgstr "Gefüllter Kreis von Mittelpunkt"
-#: ../bin/cdraw.c:2591
+#: ../bin/cdraw.c:3207
+msgid "Circle Filled Tangent"
+msgstr "Gefüllter Kreis an Tangente"
+
+#: ../bin/cdraw.c:3207
+msgid "Draw Filled Circle from Tangent"
+msgstr "Gefüllter Kreis an Tangente"
+
+#: ../bin/cdraw.c:3210
msgid "Draw Box"
msgstr "Zeichne Rechteck"
-#: ../bin/cdraw.c:2592
+#: ../bin/cdraw.c:3211
msgid "Draw Filled Box"
msgstr "Zeichne gefülltes Rechteck"
-#: ../bin/cdraw.c:2593
+#: ../bin/cdraw.c:3212
msgid "Draw Polygon"
msgstr "Zeichne Vieleck"
-#: ../bin/cdraw.c:2594
+#: ../bin/cdraw.c:3213
msgid "Draw Filled Polygon"
msgstr "Gefülltes Polygon zeichnen"
-#: ../bin/cdraw.c:2595
+#: ../bin/cdraw.c:3214
msgid "PolyLine"
msgstr "Polylinie"
-#: ../bin/cdraw.c:2595
+#: ../bin/cdraw.c:3214
msgid "Draw PolyLine"
msgstr "Zeichne Polylinie"
-#: ../bin/cdraw.c:2612
+#: ../bin/cdraw.c:3229
msgid "Straight Objects"
msgstr "Gerade Objekte"
-#: ../bin/cdraw.c:2612
+#: ../bin/cdraw.c:3229
msgid "Draw Straight Objects"
msgstr "Zeichne gerade Objekte"
-#: ../bin/cdraw.c:2613
+#: ../bin/cdraw.c:3230
msgid "Curved Lines"
msgstr "Gebogene Linien"
-#: ../bin/cdraw.c:2613
+#: ../bin/cdraw.c:3230
msgid "Draw Curved Lines"
msgstr "Zeichne gebogene Linien"
-#: ../bin/cdraw.c:2614
+#: ../bin/cdraw.c:3231
msgid "Circle Lines"
msgstr "Kreislinien"
-#: ../bin/cdraw.c:2614
+#: ../bin/cdraw.c:3231
msgid "Draw Circles"
msgstr "Zeichne Kreise"
-#: ../bin/cdraw.c:2615
+#: ../bin/cdraw.c:3232
msgid "Shapes"
msgstr "Formen"
-#: ../bin/cdraw.c:2615
+#: ../bin/cdraw.c:3232
msgid "Draw Shapes"
msgstr "Zeichne Formen"
-#: ../bin/cdraw.c:2903
+#: ../bin/cdraw.c:3534
msgid "Close Polygon - 'g'"
-msgstr "Schliesse Ploygon - 'g'"
+msgstr "Schließe Polygon - 'g'"
-#: ../bin/cdraw.c:2904
+#: ../bin/cdraw.c:3536
msgid "Make PolyLine - 'l'"
-msgstr "Erstelle PolyLine - 'I'"
+msgstr "Erstelle Polylinie - 'I'"
-#: ../bin/cdraw.c:2905
+#: ../bin/cdraw.c:3538
msgid "Fill Polygon - 'f'"
msgstr "Gefülltes Polygon - 'f'"
-#: ../bin/cdraw.c:2906
+#: ../bin/cdraw.c:3540
msgid "Empty Polygon - 'u'"
msgstr "Leeres Polygon - 'u'."
-#: ../bin/cdraw.c:2908
+#: ../bin/cdraw.c:3543
msgid "Points Mode - 'p'"
msgstr "Punkte-Modus - 'p"
-#: ../bin/cdraw.c:2909
+#: ../bin/cdraw.c:3546
msgid "Delete Selected Point - 'Del'"
msgstr "Ausgewählten Punkt löschen - 'Entf'."
-#: ../bin/cdraw.c:2910
+#: ../bin/cdraw.c:3547
msgid "Vertex Point - 'v'"
msgstr "Eckpunkt - 'v"
-#: ../bin/cdraw.c:2911
+#: ../bin/cdraw.c:3549
msgid "Round Corner - 'r'"
msgstr "Runde Ecke - 'r'."
-#: ../bin/cdraw.c:2912
+#: ../bin/cdraw.c:3551
msgid "Smooth Corner - 's'"
msgstr "Abgerundete Ecke - 's"
-#: ../bin/cdraw.c:2914 ../bin/cselect.c:3354
+#: ../bin/cdraw.c:3554 ../bin/cselect.c:3909
msgid "LineType..."
msgstr "Linienart..."
-#: ../bin/cdraw.c:2915 ../bin/cselect.c:3355
+#: ../bin/cdraw.c:3555 ../bin/cselect.c:3910
msgid "Solid Line"
msgstr "Durchgezogene Linie"
-#: ../bin/cdraw.c:2916 ../bin/cselect.c:3356
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3912
msgid "Dashed Line"
msgstr "Gestrichelte Linie"
-#: ../bin/cdraw.c:2917 ../bin/cselect.c:3357
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3914
msgid "Dotted Line"
msgstr "Gepunktete Linie"
-#: ../bin/cdraw.c:2918
+#: ../bin/cdraw.c:3561
msgid "Dash-Dot Line"
msgstr "Strich-Punkt Linie"
-#: ../bin/cdraw.c:2919
+#: ../bin/cdraw.c:3563
msgid "Dash-Dot-Dot Line"
msgstr "Strich-Punkt-Punkt Linie"
-#: ../bin/cdraw.c:2920
+#: ../bin/cdraw.c:3565
msgid "Center-Dot Line"
msgstr "Mittellinie"
-#: ../bin/cdraw.c:2921
+#: ../bin/cdraw.c:3567
msgid "Phantom-Dot Line"
msgstr "Verborgene Linie"
-#: ../bin/cdraw.c:2923
+#: ../bin/cdraw.c:3570
msgid "Origin Mode - 'o'"
msgstr "Bezugs-Modus - \"o\"."
-#: ../bin/cdraw.c:2924
+#: ../bin/cdraw.c:3572
msgid "Reset Origin - '0'"
msgstr "Bezugspunkt zurücksetzen - '0'."
-#: ../bin/cdraw.c:2925
+#: ../bin/cdraw.c:3574
msgid "Origin to Selected - 'l'"
msgstr "Ausgewählter als Bezugspunkt - 'l'."
-#: ../bin/cdraw.c:2926
+#: ../bin/cdraw.c:3576
msgid "Origin to Middle - 'm'"
msgstr "Bezugs-Modus - \"m\"."
-#: ../bin/celev.c:46 ../bin/cprofile.c:1536 ../bin/csplit.c:155
-#: ../bin/csplit.c:160 ../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:89 ../bin/doption.c:91
msgid "None"
msgstr "Kein"
-#: ../bin/celev.c:46
+#: ../bin/celev.c:42
msgid "Defined"
msgstr "Fest"
-#: ../bin/celev.c:46
+#: ../bin/celev.c:42
msgid "Hidden"
msgstr "Versteckt"
-#: ../bin/celev.c:47
+#: ../bin/celev.c:43
msgid "Computed"
msgstr "Berechnet"
-#: ../bin/celev.c:47
+#: ../bin/celev.c:43
msgid "Station"
msgstr "Bahnhof"
-#: ../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 "Ignorieren"
-#: ../bin/celev.c:219
+#: ../bin/celev.c:233
msgid "Set Elevation"
msgstr "Höhe festlegen"
-#: ../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 "Undefiniert"
-#: ../bin/celev.c:378 ../bin/celev.c:514
+#: ../bin/celev.c:384 ../bin/celev.c:541
msgid "Elevation"
msgstr "Höhe"
-#: ../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: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: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 ""
-"Klicken Sie auf ein Ende, +Umschalten zum Teilen, +Strg zum Verschieben der "
-"Beschreibung"
+"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:410
+#: ../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:414
+#: ../bin/celev.c:424
msgid "Move to end or track crossing"
msgstr "Zum Ende oder einer Kreuzung bewegen"
-#: ../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 ""
"Kreuzung - Erstes %0.3f, Zweites %0.3f, Abstand %0.3f - Klicken Sie zum "
"Teilen"
-#: ../bin/celev.c:425
+#: ../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:436
-#, c-format
-msgid "Track End elevation %0.3f"
-msgstr "Höhe des Gleisendpunktes %0.3f"
-
-#: ../bin/celev.c:439
+#: ../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:442
+#: ../bin/celev.c:458
#, c-format
-msgid "Track Point elevation %0.3f"
-msgstr "Höhe der Gleisposition %0.3f"
+msgid "Track End elevation %0.3f - snap End Pt"
+msgstr "Höhe des Endpunkt %0.3f - fange Endpunkt"
-#: ../bin/celev.c:470
-msgid "Point selected!"
-msgstr "Punkt ausgewählt!"
+#: ../bin/celev.c:461
+#, c-format
+msgid "Track End elevation %0.3f"
+msgstr "Höhe des Gleisendpunktes %0.3f"
+
+#: ../bin/celev.c:463 ../bin/celev.c:466
+msgid ""
+"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
+"Elevation"
+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:473
+#: ../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:490
msgid "Split track"
-msgstr "Gleis trennen"
+msgstr "Gleis in zwei auftrennen"
-#: ../bin/celev.c:478
+#: ../bin/celev.c:496
msgid "Track split!"
msgstr "Gleis aufgetrennt!"
-#: ../bin/cgroup.c:592
+#: ../bin/celev.c:503
+msgid "Point selected!"
+msgstr "Punkt ausgewählt!"
+
+#: ../bin/cgroup.c:664
msgid "Ungroup Object"
msgstr "Gruppierung aufheben"
-#: ../bin/cgroup.c:604
+#: ../bin/cgroup.c:677
#, c-format
msgid "%d objects ungrouped"
msgstr "%d Gruppierungen aufgelöst"
-#: ../bin/cgroup.c:606
+#: ../bin/cgroup.c:679
msgid "No objects ungrouped"
msgstr "Keine Gruppierungen aufgelöst"
-#: ../bin/cgroup.c:617
+#: ../bin/cgroup.c:693
msgid "Replace with new group?"
msgstr "Durch neue Gruppe ersetzen?"
-#: ../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:370
-#: ../../../../build/work/app/bin/bllnhlp.c:565
+#: ../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: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:371
+#: ../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:625 ../bin/dcmpnd.c:458
+#: ../bin/cgroup.c:702 ../bin/dcmpnd.c:486
msgid "#"
msgstr "Nr."
-#: ../bin/cgroup.c:626 ../bin/compound.c:570
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
msgid "# Segments"
msgstr "Anzahl Segmente"
-#: ../bin/cgroup.c:628
+#: ../bin/cgroup.c:705
msgid "Offset X,Y:"
msgstr "Abstand X,Y:"
-#: ../bin/cgroup.c:1235
+#: ../bin/cgroup.c:1320
msgid "No endpts"
msgstr "Keine Endpunkte"
-#: ../bin/cgroup.c:1350
-msgid "No paths"
-msgstr "Keine Wege"
-
-#: ../bin/cgroup.c:1619 ../bin/cgroup.c:1669
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
msgid "Group Tracks"
msgstr "Gleise gruppieren"
-#: ../bin/cgroup.c:1729
+#: ../bin/cgroup.c:1866
msgid "Group Objects"
msgstr "Objekte gruppieren"
-#: ../bin/chndldto.c:70
+#: ../bin/chndldto.c:68
msgid "Place frog and drag angle"
msgstr "Herzstück festlegen und auf Winkel ziehen"
-#: ../bin/chndldto.c:87
+#: ../bin/chndldto.c:85
msgid "frog"
msgstr "Herzstück"
-#: ../bin/chndldto.c:93
+#: ../bin/chndldto.c:91
msgid "Drag to set angle"
msgstr "Durch Ziehen den Winkel festlegen"
@@ -1736,172 +1784,160 @@ msgstr "Herzstückwinkel ist zu nahe bei 0"
msgid "Select point position"
msgstr "Position des Punktes auswählen"
-#: ../bin/chndldto.c:149 ../bin/chndldto.c:174
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
msgid "points"
msgstr "Punkte"
-#: ../bin/chndldto.c:271
+#: ../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:274
+#: ../bin/chndldto.c:286
msgid "Create Hand Laid Turnout"
msgstr "Erstelle eine Selbstbauweiche"
-#: ../bin/chndldto.c:358
+#: ../bin/chndldto.c:381
msgid "HandLaidTurnout"
msgstr "Selbstbauweiche"
-#: ../bin/cjoin.c:166
+#: ../bin/cjoin.c:170
#, c-format
msgid "Curved Track: Radius=%s Length=%s"
msgstr "Gleisbogen: Radius=%s Länge=%s"
-#: ../bin/cjoin.c:252
+#: ../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:348
+#: ../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:366
+#: ../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:410
+#: ../bin/cjoin.c:431
msgid "Click on an unselected End-Point"
msgstr "Einen nicht ausgewählten Endpunkt anklicken"
-#: ../bin/cjoin.c:411
+#: ../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:417
+#: ../bin/cjoin.c:438
msgid "unselected"
msgstr "nicht ausgewählt"
-#: ../bin/cjoin.c:417 ../bin/cprint.c:161
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
msgid "selected"
msgstr "ausgewählt"
-#: ../bin/cjoin.c:474
+#: ../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:513 ../bin/cjoin.c:539
+#: ../bin/cjoin.c:539 ../bin/cjoin.c:576
msgid "Not a line - Try again"
msgstr "Keine Linie - Versuchen Sie es erneut"
-#: ../bin/cjoin.c:535
+#: ../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:547
+#: ../bin/cjoin.c:584
msgid "Same draw object and same endpoint - Try again"
msgstr "Gleiches Zeichenobjekt und gleicher Endpunkt - Versuchen Sie es erneut"
-#: ../bin/cjoin.c:581
+#: ../bin/cjoin.c:632
msgid "Create PolyLine"
msgstr "Erstelle Polylinie"
-#: ../bin/cjoin.c:654 ../bin/cjoin.c:901
-msgid "Desired Radius"
-msgstr "Gewünschter Radius"
-
-#: ../bin/cjoin.c:823
+#: ../bin/cjoin.c:913
msgid "Left click - join with track"
msgstr "Linke Maustaste - Verbinden mit neuem Gleis"
-#: ../bin/cjoin.c:825
+#: ../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:896 ../bin/cjoin.c:1304 ../bin/cjoin.c:1311
+#: ../bin/cjoin.c:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
msgid "Select 2nd track"
msgstr "Zweites Gleis auswählen"
-#: ../bin/cjoin.c:1113
+#: ../bin/cjoin.c:1266
msgid "Beyond end of 2nd track"
msgstr "Außerhalb des zweiten Gleises"
-#: ../bin/cjoin.c:1148
+#: ../bin/cjoin.c:1302
msgid "Beyond end of 1st track"
msgstr "Außerhalb des ersten Gleises"
-#: ../bin/cjoin.c:1170
+#: ../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:1177
+#: ../bin/cjoin.c:1333
msgid "First "
msgstr "Erste "
-#: ../bin/cjoin.c:1202
+#: ../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:1209
+#: ../bin/cjoin.c:1366
msgid "Second "
msgstr "Zweite "
-#: ../bin/cjoin.c:1223 ../bin/track.c:2270 ../bin/track.c:2306
-#: ../bin/track.c:2372
+#: ../bin/cjoin.c:1380 ../bin/track.c:2398 ../bin/track.c:2437
+#: ../bin/track.c:2512
msgid "Connecting "
msgstr "Verbinde "
-#: ../bin/cjoin.c:1314
+#: ../bin/cjoin.c:1479
msgid "Join Tracks"
msgstr "Gleise zusammenfügen"
-#: ../bin/cjoin.c:1396
+#: ../bin/cjoin.c:1575
msgid "Join"
msgstr "Verbinden"
-#: ../bin/cjoin.c:1397
+#: ../bin/cjoin.c:1576
msgid "Join Track"
msgstr "Gleise zusammenfügen"
-#: ../bin/cjoin.c:1398
+#: ../bin/cjoin.c:1579
msgid "Join Lines"
msgstr "Linien zusammenfügen"
-#: ../bin/cmisc.c:59
+#: ../bin/cmisc.c:55
msgid "Middle"
msgstr "Mittel"
-#: ../bin/cmisc.c:59 ../bin/macro.c:98
+#: ../bin/cmisc.c:55 ../bin/macro.c:71
msgid "End"
msgstr "Ende"
-#: ../bin/cmisc.c:242 ../bin/cmodify.c:349 ../bin/compound.c:664
-#: ../bin/ctrain.c:218
-msgid "Change Track"
-msgstr "Gleis ändern"
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
+msgid "Lock"
+msgstr "Sperren"
-#: ../bin/cmisc.c:572
-msgid "Select track to describe"
-msgstr "Zu beschreibendes Gleis auswählen"
+#: ../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:653 ../bin/doption.c:235
+#: ../bin/cmisc.c:691 ../bin/doption.c:240
msgid "Properties"
msgstr "Eigenschaften"
-#: ../bin/cmisc2.c:52
-msgid "Bridge"
-msgstr "Brücke"
-
-#: ../bin/cmodify.c:198 ../bin/cmodify.c:467
-msgid "Modify Track"
-msgstr "Gleis bearbeiten"
-
-#: ../bin/cmodify.c:262
+#: ../bin/cmodify.c:276
msgid ""
"Select a track to modify, Left-Click change length, Right-Click to add "
"flextrack"
@@ -1909,118 +1945,148 @@ 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:508
+#: ../bin/cmodify.c:520
+msgid "Modify Track"
+msgstr "Gleis bearbeiten"
+
+#: ../bin/cmodify.c:564
msgid "Drag to add flex track"
msgstr "Ziehen um Flexgleis zu erstellen"
-#: ../bin/cmodify.c:513
+#: ../bin/cmodify.c:569
msgid "No track to extend"
msgstr "Keine Gleise zu erweitern"
-#: ../bin/cmodify.c:518
+#: ../bin/cmodify.c:574
msgid "No track selected"
msgstr "Keine Gleise ausgewählt"
-#: ../bin/cmodify.c:651
+#: ../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:666
+#: ../bin/cmodify.c:740
msgid "Extend Track"
msgstr "Gleis verlängern"
-#: ../bin/cmodify.c:795
+#: ../bin/cmodify.c:882
msgid "Modify"
msgstr "Verändern"
-#: ../bin/cmodify.c:802 ../bin/cselect.c:3311 ../bin/cselect.c:3327
-#: ../bin/misc.c:2201 ../bin/misc.c:2203
+#: ../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:803 ../bin/cselect.c:3315 ../bin/cselect.c:3328
-#: ../bin/misc.c:2205 ../bin/misc.c:2207
+#: ../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:804
+#: ../bin/cmodify.c:897
msgid "Pan center - 'c'"
msgstr "Ausschnitt hier zentrieren - 'c'."
-#: ../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 "Notiz"
-#: ../bin/cnote.c:75
+#: ../bin/cnote.c:73
msgid "Replace this text with your layout notes"
msgstr "Ersetzen Sie diesen Text durch Ihre Notizen"
-#: ../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: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:546 ../bin/tbezier.c:249 ../bin/tcornu.c:298
+#: ../bin/compound.c:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
msgid "Z1"
msgstr "Z1"
-#: ../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 "Z2"
-#: ../bin/compound.c:552
+#: ../bin/compound.c:730
msgid "End Pt 3: X,Y"
msgstr "Endpunkt 3: X,Y"
-#: ../bin/compound.c:556
+#: ../bin/compound.c:734
msgid "Z3"
msgstr "Z3"
-#: ../bin/compound.c:557
+#: ../bin/compound.c:735
msgid "End Pt 4: X,Y"
msgstr "Endpunkt 4: X,Y"
-#: ../bin/compound.c:561
+#: ../bin/compound.c:739
msgid "Z4"
msgstr "Z4"
-#: ../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:741 ../bin/tease.c:528
+msgid "Origin: X,Y"
+msgstr "Ausgangspunkt: X,Y"
+
+#: ../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:569
+#: ../bin/compound.c:747
msgid "LineType"
msgstr "Linienart"
-#: ../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 "Gebäude"
-#: ../bin/compound.c:832 ../bin/cswitchmotor.c:228 ../bin/cturnout.c:1069
-#: ../bin/cturnout.c:2933
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
msgid "Turnout"
msgstr "Weiche"
-#: ../bin/compound.c:832
+#: ../bin/compound.c:1027
msgid "Sectional Track"
msgstr "Festgleise"
-#: ../bin/compound.c:836
+#: ../bin/compound.c:1031
#, c-format
msgid "%s (%d) Layer= %d %s"
msgstr "%s (%d): Ebene=%d %s"
-#: ../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:602 ../bin/ctodesgn.c:628 ../bin/ctodesgn.c:653
+#: ../bin/tcurve.c:403
msgid "Separation"
msgstr "Zwischenraum"
-#: ../bin/cparalle.c:55 ../bin/cparalle.c:101
+#: ../bin/cparalle.c:52 ../bin/cparalle.c:99
msgid "Radius Factor"
msgstr "Radius Faktor"
@@ -2028,24 +2094,25 @@ msgstr "Radius Faktor"
msgid "Radius factor"
msgstr "Radius-Faktor"
-#: ../bin/cparalle.c:154
+#: ../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:228
+#: ../bin/cparalle.c:230
msgid "Create Parallel Track"
msgstr "Erzeuge paralleles Gleis"
-#. 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 "Parallel"
-#: ../bin/cparalle.c:299
+#: ../bin/cparalle.c:300
msgid "Parallel Track"
msgstr "Paralleles Gleis"
-#: ../bin/cparalle.c:300
+#: ../bin/cparalle.c:303
msgid "Parallel Line"
msgstr "Parallele Linie"
@@ -2057,14 +2124,14 @@ msgstr "Hochformat"
msgid "Landscape"
msgstr "Querformat"
-#: ../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:88 ../bin/doption.c:90 ../bin/macro.c:1417
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:1250
+#: ../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"
@@ -2084,229 +2151,232 @@ msgstr "Seitennummern"
msgid "Ignore Page Margins"
msgstr "Übergehe Seitenränder"
-#: ../bin/cprint.c:116 ../bin/csnap.c:705 ../bin/doption.c:530
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:554
msgid "Snap Grid"
msgstr "Fangraster"
#: ../bin/cprint.c:117
-msgid "Rulers"
-msgstr "Lineale"
+msgid "Layout Edge"
+msgstr "Anlagenrand"
+
+#: ../bin/cprint.c:117
+msgid "Every Page"
+msgstr "Jede Seite"
#: ../bin/cprint.c:118
msgid "Roadbed Outline"
-msgstr "Rand des Gleisbett"
+msgstr "Rand des Gleisbettes"
#: ../bin/cprint.c:119
msgid "Centerline below Scale 1:1"
msgstr "Mittellinie bei Maßstab<1:1"
-#: ../bin/cprint.c:127
+#: ../bin/cprint.c:128
msgid "Print Scale"
msgstr "Druckmaßstab"
-#: ../bin/cprint.c:128
+#: ../bin/cprint.c:129
msgid "Page Width"
msgstr "Seitenbreite"
-#: ../bin/cprint.c:129
+#: ../bin/cprint.c:130
msgid "Max"
msgstr "Max."
-#: ../bin/cprint.c:131
+#: ../bin/cprint.c:132
msgid "Snap Shot"
msgstr "Schnappschuss"
-#: ../bin/cprint.c:132
+#: ../bin/cprint.c:133
msgid "Page Format"
msgstr "Seitenformat"
-#: ../bin/cprint.c:133
+#: ../bin/cprint.c:134
msgid "Print Order"
msgstr "Druckreihenfolge"
-#: ../bin/cprint.c:134
+#: ../bin/cprint.c:135
msgid "Print "
msgstr "Drucken "
-#: ../bin/cprint.c:149
+#: ../bin/cprint.c:144
+msgid "Rulers:"
+msgstr "Lineale:"
+
+#: ../bin/cprint.c:150
msgid " Width"
msgstr " Breite"
-#: ../bin/cprint.c:151
+#: ../bin/cprint.c:152
msgid "Margins"
msgstr "Ränder"
-#: ../bin/cprint.c:152 ../bin/cturntbl.c:250
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
msgid "Origin: X"
msgstr "Ausgangspunkt: 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 "Zurücksetzen"
-#: ../bin/cprint.c:156
+#: ../bin/cprint.c:157
msgid "Setup"
msgstr "Einstellungen"
-#: ../bin/cprint.c:157 ../bin/cselect.c:3319 ../bin/misc.c:2232
+#: ../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:158 ../bin/cprofile.c:717 ../bin/layout.c:472
-#: ../bin/misc.c:730
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:672
+#: ../bin/misc.c:726
msgid "Clear"
msgstr "Löschen"
-#: ../bin/cprint.c:160
+#: ../bin/cprint.c:161
msgid "0 pages"
msgstr "0 Seiten"
-#: ../bin/cprint.c:187
+#: ../bin/cprint.c:190
#, c-format
msgid "%d page"
msgstr "Seite %d"
-#: ../bin/cprint.c:187
+#: ../bin/cprint.c:190
#, c-format
msgid "%d pages"
msgstr "%d Seiten"
-#: ../bin/cprint.c:408
+#: ../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:716 ../bin/dbitmap.c:208 ../bin/filenoteui.c:158
-#: ../bin/misc.c:1239 ../bin/misc.c:1317 ../bin/param.c:2622
-#: ../wlib/gtklib/browserhelp.c:88 ../../../../build/work/app/bin/bllnhlp.c:584
-msgid "Cancel"
-msgstr "Abbruch"
-
-#: ../bin/cprint.c:723
+#: ../bin/cprint.c:746
msgid "Print Margins"
msgstr "Druckbegrenzungen"
-#: ../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:3149
+#: ../bin/denum.c:51
msgid "Print"
msgstr "Drucken"
-#: ../bin/cprint.c:1388
+#: ../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:1486
+#: ../bin/cprint.c:1574
msgid "Print..."
msgstr "Drucken..."
-#. 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:122
-#: ../../../../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 "Höhenprofil"
-#: ../bin/cprofile.c:632
+#: ../bin/cprofile.c:626
#, c-format
msgid "%s Profile: %s"
msgstr "%s Höhenprofil: %s"
-#: ../bin/cprofile.c:713 ../bin/misc.c:1898
+#: ../bin/cprofile.c:704 ../bin/menu.c:156
msgid "Change"
msgstr "Ändern"
-#: ../bin/cprofile.c:757 ../bin/cprofile.c:767
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
#, c-format
msgid "Elev = %0.1f"
msgstr "Höhe = %0.1f"
-#: ../bin/cprofile.c:769
+#: ../bin/cprofile.c:763
#, c-format
msgid "Elev=%0.2f %0.1f%%"
msgstr "Höhe=%0.2f %0.1f%%"
-#: ../bin/cprofile.c:774
+#: ../bin/cprofile.c:768
#, c-format
msgid "%0.1f%% Elev = %0.2f"
msgstr "%0.1f%% Höhe = %0.2f"
-#: ../bin/cprofile.c:779
+#: ../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: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 "Höhenprofil bearbeiten"
-#: ../bin/cprofile.c:803 ../bin/cprofile.c:1454
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
msgid "Drag to change Elevation"
msgstr "Ziehen um die Höhe zu ändern"
-#: ../bin/cprofile.c:905
+#: ../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:907
+#: ../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:1462
+#: ../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:1532
+#: ../bin/cprofile.c:1527
msgid "Define"
msgstr "Festlegen"
-#: ../bin/cpull.c:439 ../bin/cpull.c:595
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
#, c-format
msgid "%d tracks moved"
msgstr "%d Gleise verschoben"
-#: ../bin/cpull.c:485
+#: ../bin/cpull.c:503
msgid "Pull Tracks"
msgstr "Gleise ziehen"
-#: ../bin/cpull.c:559
+#: ../bin/cpull.c:579
msgid "Tighten Tracks"
msgstr "Gleise zusammendrücken"
-#: ../bin/cpull.c:646
+#: ../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:649
+#: ../bin/cpull.c:673
msgid "Try to Connect all Selected Tracks?"
msgstr "Sollen alle ausgewählten Gleise verbunden werden?"
-#: ../bin/cpull.c:655
+#: ../bin/cpull.c:680
msgid "ReConnect"
msgstr "Wiederverbinden"
-#: ../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 ""
"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:716
+#: ../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:718
+#: ../bin/cpull.c:750
msgid ""
"Select first endpoint to connect, or Right-Click for connecting selected "
"tracks (not turntable)"
@@ -2315,377 +2385,391 @@ msgstr ""
"mit der rechten Maustaste, um ausgewählte Gleise zu verbinden (nicht "
"Drehscheibe)"
-#: ../bin/cpull.c:777
+#: ../bin/cpull.c:814
msgid "Select second endpoint or turntable to connect"
msgstr "Wählen Sie den zweiten anzuschließenden Endpunkt oder eine Drehscheibe"
-#: ../bin/cpull.c:784
+#: ../bin/cpull.c:821
msgid "Same Track! - please select another"
msgstr "Gleiches Gleis! - Bitte wählen Sie ein anderes aus"
-#: ../bin/cpull.c:872
+#: ../bin/cpull.c:918
msgid "Connect Two Tracks"
msgstr "Zwei Gleise zusammenfügen"
-#: ../bin/cpull.c:874
+#: ../bin/cpull.c:924
msgid "Connect All Selected - 'S'"
msgstr "Alle ausgewählten Gleise verbinden - 'S'"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:361
-#: ../bin/cruler.c:143 ../../../../build/work/app/i18n/custmsg.h:1247
+#: ../bin/cruler.c:390
+msgid "Measurement"
+msgstr "Abmessung"
+
+#. 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/cselect.c:615
+#: ../bin/cruler.c:394
+msgid "Protractor"
+msgstr "Winkelmesser"
+
+#: ../bin/cselect.c:707
msgid "Change Track Width"
msgstr "Gleisbreite ändern"
-#: ../bin/cselect.c:639
+#: ../bin/cselect.c:733
msgid "Change Line Type"
msgstr "Linienstil ändern"
-#: ../bin/cselect.c:668
+#: ../bin/cselect.c:758
+msgid "Delete only works in Select Mode"
+msgstr "Löschen funktioniert nur im Auswahlmodus"
+
+#: ../bin/cselect.c:776
msgid "Delete Tracks"
msgstr "Gleise löschen"
-#: ../bin/cselect.c:744
+#: ../bin/cselect.c:883
msgid "Hide Tracks (Tunnel)"
msgstr "Gleise verbergen (Tunnel)"
-#: ../bin/cselect.c:762
+#: ../bin/cselect.c:903
msgid "Bridge Tracks "
msgstr "Brückengleise "
-#: ../bin/cselect.c:779
+#: ../bin/cselect.c:921
+msgid "Roadbed Tracks "
+msgstr "Gleisbett"
+
+#: ../bin/cselect.c:939
msgid "Ties Tracks "
msgstr "Schwellengleise "
-#: ../bin/cselect.c:816 ../bin/misc.c:2352
+#: ../bin/cselect.c:977 ../bin/menu.c:1050
msgid "Move To Current Layer"
msgstr "Auf aktuelle Ebene verschieben"
-#: ../bin/cselect.c:856 ../bin/misc.c:2502
+#: ../bin/cselect.c:1033 ../bin/menu.c:1236
msgid "Clear Elevations"
msgstr "Höhen löschen"
-#: ../bin/cselect.c:900
+#: ../bin/cselect.c:1079
msgid "Add Elevations"
msgstr "Höhen hinzufügen"
-#: ../bin/cselect.c:915
+#: ../bin/cselect.c:1095
msgid "Refresh Compound"
msgstr "Zusammenstellung aktualisieren"
-#: ../bin/cselect.c:947 ../bin/dcar.c:4366 ../bin/dcar.c:4371
-#: ../bin/dcustmgm.c:60 ../bin/layout.c:463
-msgid "Scale"
-msgstr "Maßstab"
-
-#: ../bin/cselect.c:947 ../bin/cselect.c:972
-msgid "Ratio"
-msgstr "Verhältnis"
-
-#: ../bin/cselect.c:956
-msgid "Do not resize track"
-msgstr "Gleismaße nicht ändern"
-
-#: ../bin/cselect.c:960
-msgid "Rescale by:"
-msgstr "Skalieren um:"
-
-#: ../bin/cselect.c:962
-msgid "From:"
-msgstr "Von:"
-
-#: ../bin/cselect.c:966
-msgid "To: "
-msgstr "Nach:"
-
-#: ../bin/cselect.c:1033
-msgid "Rescale Tracks"
-msgstr "Gleise skalieren"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:357
-#: ../bin/cselect.c:1163 ../../../../build/work/app/i18n/custmsg.h:1239
-msgid "Rescale"
-msgstr "Maßstab ändern"
-
-#: ../bin/cselect.c:1464
+#: ../bin/cselect.c:1506
msgid "Cornu too tight - it was deleted"
msgstr "Cornu ist zu eng und wurde gelöscht"
-#: ../bin/cselect.c:1519
+#: ../bin/cselect.c:1563
msgid "Move To Join"
msgstr "Verbinde durch Verschieben"
-#: ../bin/cselect.c:1711
+#: ../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"
+"Ziehen um die ausgewählten Gleise zu verschieben - mit "
+"Umschalt+Strg+Pfeiltasten um feine Stufen verschieben"
-#: ../bin/cselect.c:1732 ../bin/cselect.c:1852 ../bin/cselect.c:2216
+#: ../bin/cselect.c:1811 ../bin/cselect.c:1954 ../bin/cselect.c:2382
msgid "Move Tracks"
msgstr "Gleise verschieben"
-#: ../bin/cselect.c:1897
+#: ../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:1935
+#: ../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:1951 ../bin/cselect.c:2229
+#: ../bin/cselect.c:2059 ../bin/cselect.c:2463
msgid "Rotate Tracks"
msgstr "Gleise drehen"
-#: ../bin/cselect.c:1964
+#: ../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:2006 ../bin/cselect.c:2037
+#: ../bin/cselect.c:2124 ../bin/cselect.c:2161
#, c-format
msgid "Angle %0.3f"
msgstr "Winkel %0.3f"
-#: ../bin/cselect.c:2093
+#: ../bin/cselect.c:2232
#, c-format
msgid "Angle %0.3f #%ld"
msgstr "Winkel %0.3f #%ld"
-#: ../bin/cselect.c:2095
+#: ../bin/cselect.c:2234
#, c-format
msgid "Angle %0.3f %s"
msgstr "Winkel %0.3f %s"
-#: ../bin/cselect.c:2100
+#: ../bin/cselect.c:2240
msgid "Origin Set. Drag away to set start angle"
msgstr "Ausgangspunkt gesetzt. Zum Einstellen des Startwinkels wegziehen"
-#: ../bin/cselect.c:2114
+#: ../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:2241
+#: ../bin/cselect.c:2394
+msgid "In module layer:"
+msgstr "In Modulebene:"
+
+#: ../bin/cselect.c:2406
+msgid "Frozen Layer:"
+msgstr "Fixierte Ebene:"
+
+#: ../bin/cselect.c:2410
+msgid "Not found"
+msgstr "Nicht gefunden"
+
+#: ../bin/cselect.c:2449
+msgid "Multiple Selected"
+msgstr "Mehrfachauswahl"
+
+#: ../bin/cselect.c:2476
+msgid "Toggle Detail"
+msgstr "Detail umschalten"
+
+#: ../bin/cselect.c:2492
msgid "Toggle Label"
msgstr "Beschriftung umschalten"
-#: ../bin/cselect.c:2360 ../bin/cselect.c:2399
-msgid "Select and drag a description"
-msgstr "Beschreibung auswählen und verschieben"
-
-#: ../bin/cselect.c:2385
+#: ../bin/cselect.c:2689
msgid "Elevation description"
msgstr "Beschreibung der Höhe"
-#: ../bin/cselect.c:2388
-msgid "Hidden description - 's' to Show"
-msgstr "Verborgene Beschreibung - 's' zum Anzeigen"
+#: ../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:2392
+#: ../bin/cselect.c:2699
msgid "Shown description - 'h' to Hide"
msgstr "Sichtbare Beschreibung - Verbergen mit 'h'"
-#: ../bin/cselect.c:2413
+#: ../bin/cselect.c:2707
+msgid "Select and drag a description"
+msgstr "Beschreibung auswählen und verschieben"
+
+#: ../bin/cselect.c:2753
msgid "Hidden Label - Drag to reveal"
msgstr "Verborgene Beschriftung - Ziehen zum Aufdecken"
-#: ../bin/cselect.c:2415
+#: ../bin/cselect.c:2755
msgid "Drag label"
msgstr "Beschriftung ziehen"
-#: ../bin/cselect.c:2417
+#: ../bin/cselect.c:2765
msgid "Move Label"
msgstr "Beschreibung verschieben"
-#: ../bin/cselect.c:2454
+#: ../bin/cselect.c:2804
msgid "To Hide, use Context Menu"
msgstr "Zum Verbergen verwenden Sie das Kontextmenü"
-#: ../bin/cselect.c:2470 ../bin/cselect.c:3345
+#: ../bin/cselect.c:2842 ../bin/cselect.c:3890
msgid "Show/Hide Description"
msgstr "Beschreibung anzeigen/verbergen"
-#: ../bin/cselect.c:2550
+#: ../bin/cselect.c:2845
+msgid "Toggle Detailed Description"
+msgstr "Detaillierte Beschreibung umschalten"
+
+#: ../bin/cselect.c:2929
msgid "Drag to mark mirror line"
msgstr "Ziehen um die Spiegelachse zu erstellen"
-#: ../bin/cselect.c:2561
+#: ../bin/cselect.c:2940
#, c-format
msgid "Angle %0.2f"
msgstr "Winkel %0.2f"
-#: ../bin/cselect.c:2564
+#: ../bin/cselect.c:2943
msgid "Flip Tracks"
msgstr "Gleise spiegeln"
-#: ../bin/cselect.c:2904
-msgid "Select track"
-msgstr "Gleis auswählen"
-
-#: ../bin/cselect.c:2931
+#: ../bin/cselect.c:3145 ../bin/cselect.c:3369
msgid "Track is in Frozen Layer"
msgstr "Das Gleis ist auf einer fixierten Ebene"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:323
-#: ../bin/cselect.c:3285 ../bin/dcar.c:1672 ../bin/doption.c:235
-#: ../../../../build/work/app/i18n/custmsg.h:1171
+#: ../bin/cselect.c:3340
+msgid "Select track"
+msgstr "Gleis auswählen"
+
+#. 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:3304 ../bin/cselect.c:3324 ../bin/misc.c:2196
+#: ../bin/cselect.c:3829 ../bin/cselect.c:3858 ../bin/menu.c:864
msgid "Undo"
msgstr "Rückgängig"
-#: ../bin/cselect.c:3305 ../bin/cselect.c:3325 ../bin/misc.c:2198
+#: ../bin/cselect.c:3830 ../bin/cselect.c:3859 ../bin/menu.c:866
msgid "Redo"
msgstr "Wiederholen"
-#: ../bin/cselect.c:3312 ../bin/draw.c:3124
+#: ../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:3313 ../bin/draw.c:3135 ../bin/misc.c:2379
+#: ../bin/cselect.c:3842 ../bin/draw.c:3523 ../bin/menu.c:1095
msgid "&Zoom"
msgstr "&Zoom"
-#: ../bin/cselect.c:3316 ../bin/draw.c:3134
+#: ../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:3317 ../bin/cselect.c:3329
+#: ../bin/cselect.c:3847 ../bin/cselect.c:3867
msgid "Pan Center Here - 'c'"
msgstr "Hier zentrieren - 'c'."
-#: ../bin/cselect.c:3320 ../bin/misc.c:2235 ../bin/misc.c:2358
+#: ../bin/cselect.c:3852 ../bin/menu.c:909 ../bin/menu.c:1058
msgid "Select Current Layer"
msgstr "Aktuelle Ebene auswählen"
-#: ../bin/cselect.c:3331 ../bin/misc.c:2237
+#: ../bin/cselect.c:3865
+msgid "Zoom to selected - 's'"
+msgstr "Zoom auf Auswahl - 's'"
+
+#: ../bin/cselect.c:3871 ../bin/menu.c:911
msgid "Deselect All"
msgstr "Alles Abwählen"
-#: ../bin/cselect.c:3333
+#: ../bin/cselect.c:3874
msgid "Properties -'?'"
msgstr "Eigenschaften -'?'"
-#: ../bin/cselect.c:3334
+#: ../bin/cselect.c:3876
msgid "Modify/Activate Track"
msgstr "Gleis bearbeiten"
-#: ../bin/cselect.c:3336 ../bin/misc.c:2223
+#: ../bin/cselect.c:3879 ../bin/menu.c:897
msgid "Cut"
msgstr "Ausschneiden"
-#: ../bin/cselect.c:3337 ../bin/misc.c:2225
+#: ../bin/cselect.c:3880 ../bin/menu.c:899
msgid "Copy"
msgstr "Kopiere"
-#: ../bin/cselect.c:3338 ../bin/fileio.c:1620 ../bin/misc.c:2227
+#: ../bin/cselect.c:3881 ../bin/fileio.c:1728 ../bin/menu.c:901
msgid "Paste"
msgstr "Einfügen"
-#: ../bin/cselect.c:3339 ../bin/misc.c:2229
+#: ../bin/cselect.c:3882 ../bin/menu.c:903
msgid "Clone"
msgstr "Klonen"
-#: ../bin/cselect.c:3341
+#: ../bin/cselect.c:3884
msgid "Rotate..."
msgstr "Drehen..."
-#: ../bin/cselect.c:3343
+#: ../bin/cselect.c:3886
msgid "Align"
msgstr "Ausrichten"
-#: ../bin/cselect.c:3347
+#: ../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:3348
+#: ../bin/cselect.c:3896
msgid "Bridge/NoBridge"
msgstr "Brücke"
-#: ../bin/cselect.c:3349
+#: ../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:3350
+#: ../bin/cselect.c:3902
msgid "Thickness..."
msgstr "Dicke..."
-#: ../bin/cselect.c:3351 ../bin/misc.c:2370
+#: ../bin/cselect.c:3903 ../bin/menu.c:1082
msgid "Thin Tracks"
msgstr "Dünne Gleise"
-#: ../bin/cselect.c:3352 ../bin/misc.c:2371
+#: ../bin/cselect.c:3905 ../bin/menu.c:1084
msgid "Medium Tracks"
msgstr "Mittlere Gleise"
-#: ../bin/cselect.c:3353 ../bin/misc.c:2372
+#: ../bin/cselect.c:3907 ../bin/menu.c:1086
msgid "Thick Tracks"
msgstr "Dicke Gleise"
-#: ../bin/cselect.c:3358
+#: ../bin/cselect.c:3916
msgid "Dash-Dotted Line"
msgstr "Gestrichelte Linie"
-#: ../bin/cselect.c:3359
+#: ../bin/cselect.c:3918
msgid "Dash-Dot-Dotted Line"
msgstr "Strich-Punkt-gestrichelte Linie"
-#: ../bin/cselect.c:3361
+#: ../bin/cselect.c:3921
msgid "Move To Front"
msgstr "Nach vorne"
-#: ../bin/cselect.c:3362
+#: ../bin/cselect.c:3922
msgid "Move To Back"
msgstr "Nach hinten"
-#: ../bin/cselect.c:3364
+#: ../bin/cselect.c:3924
msgid "Group"
msgstr "Gruppieren"
-#: ../bin/cselect.c:3365
+#: ../bin/cselect.c:3925
msgid "UnGroup"
msgstr "Gruppierung auflösen"
-#: ../bin/cselect.c:3400
+#: ../bin/cselect.c:3971
msgid "Move Description"
msgstr "Beschreibungen verschieben"
-#: ../bin/cselect.c:3407 ../bin/misc.c:1939 ../bin/misc.c:2240
+#: ../bin/cselect.c:3979 ../bin/menu.c:225 ../bin/menu.c:918
msgid "Move"
msgstr "Verschieben"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:368
-#: ../bin/cselect.c:3409 ../bin/misc.c:1930 ../bin/misc.c:2242
-#: ../../../../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: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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:369
-#: ../bin/cselect.c:3411 ../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:3985 ../bin/dcar.c:2327
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1282
msgid "Flip"
msgstr "Spiegeln"
-#: ../bin/csensor.c:216
+#: ../bin/csensor.c:214
msgid "Change Sensor"
msgstr "Sensor ändern"
-#: ../bin/csensor.c:262 ../bin/csensor.c:596
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
msgid "Sensor"
msgstr "Sensor"
-#: ../bin/csensor.c:391 ../bin/csignal.c:511
-msgid "Orgin X"
-msgstr "Ausgangspunkt: X"
-
#: ../bin/csensor.c:407
msgid "Create Sensor"
msgstr "Sensor erstellen"
@@ -2694,113 +2778,47 @@ msgstr "Sensor erstellen"
msgid "Modify Sensor"
msgstr "Sensor ändern"
-#: ../bin/csensor.c:443
+#: ../bin/csensor.c:445
msgid "Edit sensor"
msgstr "Sensor bearbeiten"
-#: ../bin/csensor.c:481
+#: ../bin/csensor.c:483
msgid "Place sensor"
msgstr "Sensor setzen"
-#: ../bin/csignal.c:241
-msgid "Number Of Heads"
-msgstr "Anzahl der Köpfe"
-
-#: ../bin/csignal.c:280
-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:914
-msgid "Signal"
-msgstr "Signal"
-
-#: ../bin/csignal.c:517
-msgid "Number of Heads"
-msgstr "Anzahl der Köpfe"
-
-#: ../bin/csignal.c:522
-msgid "Edit Aspect"
-msgstr "Signalbild bearbeiten"
-
-#: ../bin/csignal.c:524
-msgid "Add Aspect"
-msgstr "Signalanzeige"
-
-#: ../bin/csignal.c:526
-msgid "Delete Aspect"
-msgstr "Signalbild löschen"
-
-#: ../bin/csignal.c:539
-msgid "Aspect Index"
-msgstr "Nummer der Signalanzeige"
-
-#: ../bin/csignal.c:554
-msgid "Create Signal"
-msgstr "Signal erstellen"
-
-#: ../bin/csignal.c:558
-msgid "Modify Signal"
-msgstr "Signal ändern"
-
-#: ../bin/csignal.c:665
-msgid "Edit aspect"
-msgstr "Signalbild bearbeiten"
-
-#: ../bin/csignal.c:712
-#, 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:733
-msgid "Edit signal"
-msgstr "Signal bearbeiten"
-
-#: ../bin/csignal.c:795
-msgid "Place base of signal"
-msgstr "Basis des Signals festlegen"
-
-#: ../bin/csignal.c:802
-msgid "Drag to orient signal"
-msgstr "Durch Ziehen das Signal ausrichten"
-
-#: ../bin/csnap.c:516
+#: ../bin/csnap.c:530
msgid "Horz"
msgstr "Horiz."
-#: ../bin/csnap.c:518
+#: ../bin/csnap.c:532
msgid "Spacing"
msgstr "Abstand"
-#: ../bin/csnap.c:520
+#: ../bin/csnap.c:534
msgid "Divisions"
msgstr "Zwischenmarkierungen"
-#: ../bin/csnap.c:523
+#: ../bin/csnap.c:537
msgid "Enable"
msgstr "Einschalten"
-#: ../bin/csnap.c:524
+#: ../bin/csnap.c:538
msgid "Vert"
msgstr "Vert."
-#: ../bin/csnap.c:533 ../bin/dease.c:76
+#: ../bin/csnap.c:547 ../bin/dease.c:78
msgid "X"
msgstr "X"
-#: ../bin/csnap.c:537
+#: ../bin/csnap.c:551
msgid "A"
msgstr "A"
-#: ../bin/csnap.c:540
+#: ../bin/csnap.c:554
msgid "Show"
msgstr "Zeige"
-#: ../bin/csnap.c:791
+#: ../bin/csnap.c:815
msgid "Change Grid..."
msgstr "Raster anpassen..."
@@ -2808,762 +2826,888 @@ msgstr "Raster anpassen..."
msgid "Set Block Gaps"
msgstr "Setze Trennstellen"
-#: ../bin/csplit.c:111
-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:132
-msgid "Can't Split that Track"
-msgstr "Dieses Gleis kann nicht getrennt werden"
+#: ../bin/csplit.c:161
+msgid "Can't Split that Track Object"
+msgstr "Dieses Gleisobjekt kann nicht aufgetrennt werden"
-#: ../bin/csplit.c:140 ../bin/csplit.c:232
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
msgid "Split Track"
msgstr "Gleis auftrennen"
-#: ../bin/csplit.c:156 ../bin/dbench.c:69 ../bin/dbench.c:80
+#: ../bin/csplit.c:178 ../bin/csplit.c:322 ../bin/csplit.c:410
+msgid "Can't Split that Draw Object"
+msgstr "Dieses Zeichenobjekt kann nicht aufgetrennt werden"
+
+#: ../bin/csplit.c:188
+msgid "No Track to Split"
+msgstr "Kein auftrennbares Gleis"
+
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
msgid "Left"
msgstr "Links"
-#: ../bin/csplit.c:157 ../bin/dbench.c:70 ../bin/dbench.c:79
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
msgid "Right"
msgstr "Rechts"
-#: ../bin/csplit.c:158 ../bin/csplit.c:163
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
msgid "Both"
msgstr "Beides"
-#: ../bin/csplit.c:161
+#: ../bin/csplit.c:212
msgid "Top"
msgstr "Oben"
-#: ../bin/csplit.c:162
+#: ../bin/csplit.c:214
msgid "Bottom"
msgstr "Unten"
+#: ../bin/csplit.c:307
+msgid "Select draw to split"
+msgstr "Zu trennendes Zeichenelement auswählen"
+
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
+msgid "Split Draw"
+msgstr "Zeichenobjekt auftrennen"
+
+#: ../bin/csplit.c:332
+msgid "No Draw to Split"
+msgstr "Kein aufteilbares Zeichenobjekt"
+
+#: ../bin/csplit.c:371
+msgid "Select the draw object to Trim to"
+msgstr "Wählen Sie das begrenzende Zeichenobjekt aus"
+
+#: ../bin/csplit.c:387
+msgid "Can't Trim with a Track"
+msgstr "Kann nicht mit einem Gleis abschneiden"
+
+#: ../bin/csplit.c:392
+msgid "Select an intersecting draw object to Trim"
+msgstr "Wählen Sie ein sich überschneidendes Zeichenobjekt zum Abschneiden aus"
+
+#: ../bin/csplit.c:397
+msgid "No Draw to Trim with"
+msgstr "Kein begrenzendes Zeichenobjekt vorhanden"
+
+#: ../bin/csplit.c:404
+msgid "Can't Split a track object"
+msgstr "Ein Gleis kann nicht geteilt werden"
+
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
+msgid "Trim Draw"
+msgstr "Zeichenobjekt schneiden"
+
+#: ../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 brechen mit der "
+"Leertaste ab"
+
+#: ../bin/csplit.c:504
+msgid "Split"
+msgstr "Auftrennen"
+
+#: ../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:104
+#: ../bin/cstraigh.c:105
msgid "Drag to place 2nd end point"
msgstr "Ziehen um den zweiten Endpunkt zu setzen"
-#: ../bin/cstraigh.c:140
+#: ../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:191 ../bin/tstraigh.c:267
+#: ../bin/cstraigh.c:204 ../bin/tstraigh.c:245
msgid "Straight Track"
msgstr "Gleisgerade"
-#: ../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:88
+#: ../bin/doption.c:245
msgid "Hide"
msgstr "Verstecken"
-#: ../bin/cstruct.c:449 ../bin/cstruct.c:476
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
msgid "Pier Number"
-msgstr "Gleisanschluß"
+msgstr "Gleisanschluss"
-#: ../bin/cstruct.c:561
+#: ../bin/cstruct.c:627
#, c-format
msgid "Scale %d:1"
msgstr "Maßstab 1:%d"
-#: ../bin/cstruct.c:563
+#: ../bin/cstruct.c:629
#, c-format
msgid "Width %s"
msgstr "Breite %s"
-#: ../bin/cstruct.c:565
+#: ../bin/cstruct.c:631
#, c-format
msgid "Height %s"
msgstr "Höhe %s"
-#: ../bin/cstruct.c:706
+#: ../bin/cstruct.c:779
msgid "Place Structure"
-msgstr "Gebäude plazieren"
+msgstr "Gebäude platzieren"
-#: ../bin/cstruct.c:799 ../bin/cstruct.c:873 ../bin/cstruct.c:1105
-#: ../bin/cturnout.c:2796 ../bin/cturnout.c:2851 ../bin/cturnout.c:2978
-#: ../bin/cturnout.c:3117
-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 "
-"Drehen, Leerzeichen oder Eingabetaste zum Festlegen, Esc zum Abbrechen"
+#: ../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:821
+#: ../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:843
+#: ../bin/cstruct.c:921
msgid "Drag to rotate"
msgstr "Ziehen zum rotieren"
-#: ../bin/cstruct.c:863
-#, c-format
-msgid "Angle = %0.3f"
-msgstr "Winkel = %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 ""
+"Ziehen mit linker Maustaste zum Verschieben, mit Strg-Links oder rechter zum "
+"Drehen, Leerzeichen oder Eingabetaste zum Festlegen, Esc zum Abbrechen"
+
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3014
+msgid "Close"
+msgstr "Schließen"
-#: ../bin/cstruct.c:954
+#: ../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:992
+#: ../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:1075 ../bin/cturnout.c:3084
+#: ../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: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 "Richtung der Weichenzungen"
-#: ../bin/cswitchmotor.c:116
+#: ../bin/cswitchmotor.c:112
msgid "Turnout Number"
msgstr "Weichennummer"
-#: ../bin/cswitchmotor.c:292
+#: ../bin/cswitchmotor.c:299
msgid "Change Switch Motor"
msgstr "Weichenantrieb ändern"
-#: ../bin/cswitchmotor.c:359
+#: ../bin/cswitchmotor.c:369
msgid "Switch motor"
msgstr "Weichenantrieb"
-#: ../bin/cswitchmotor.c:475
+#: ../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:544 ../bin/cswitchmotor.c:714
+#: ../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:548
+#: ../bin/cswitchmotor.c:574
msgid "Create Switch Motor"
msgstr "Weichenantrieb erstellen"
-#: ../bin/cswitchmotor.c:580
+#: ../bin/cswitchmotor.c:608
msgid "Create switch motor"
msgstr "Weichenantrieb erstellen"
-#: ../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 "Wählen Sie eine Weiche aus"
-#: ../bin/cswitchmotor.c:601
+#: ../bin/cswitchmotor.c:632
msgid "Not a turnout!"
msgstr "Keine Weiche!"
-#: ../bin/cswitchmotor.c:634 ../bin/cswitchmotor.c:665
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
msgid "Not a switch motor!"
msgstr "Kein Weichenantrieb!"
-#: ../bin/cswitchmotor.c:670
+#: ../bin/cswitchmotor.c:700
#, c-format
msgid "Really delete switch motor %s?"
msgstr "Soll der Weichenantrieb %s wirklich gelöscht werden?"
-#: ../bin/cswitchmotor.c:671
+#: ../bin/cswitchmotor.c:702
msgid "Delete Switch Motor"
msgstr "Weichenantrieb löschen"
-#: ../bin/cswitchmotor.c:718
+#: ../bin/cswitchmotor.c:750
msgid "Modify Switch Motor"
msgstr "Weichenantrieb ändern"
-#: ../bin/cswitchmotor.c:744
+#: ../bin/cswitchmotor.c:776
msgid "Edit switch motor"
msgstr "Weichenantrieb bearbeiten"
-#: ../bin/cswitchmotor.c:750
+#: ../bin/cswitchmotor.c:782
#, c-format
msgid "Edit switch motor %d"
msgstr "Weichenantrieb %d bearbeiten"
-#: ../bin/cswitchmotor.c:858
+#: ../bin/cswitchmotor.c:889
msgid "Switch Motor"
msgstr "Weichenantrieb"
-#: ../bin/cswitchmotor.c:871
+#: ../bin/cswitchmotor.c:903
#, c-format
msgid "Deleting Switch Motor %s"
msgstr "Weichenantrieb %s löschen"
-#: ../bin/ctext.c:195 ../bin/ctext.c:234
+#: ../bin/ctext.c:186 ../bin/ctext.c:234
msgid "Create Text"
msgstr "Erstelle Text"
-#: ../bin/ctext.c:265
+#: ../bin/ctext.c:269
msgid "Fonts..."
msgstr "Schriftarten..."
-#: ../bin/ctodesgn.c:144
+#: ../bin/ctodesgn.c:141
msgid "Frog #"
msgstr "Herzstück Steigung"
-#: ../bin/ctodesgn.c:144
+#: ../bin/ctodesgn.c:141
msgid "Degrees"
msgstr "Grad"
-#: ../bin/ctodesgn.c:145
+#: ../bin/ctodesgn.c:142
msgid "Dual Path"
msgstr "Zwei Positionen"
-#: ../bin/ctodesgn.c:145
+#: ../bin/ctodesgn.c:142
msgid "Quad Path"
msgstr "Vier Positionen"
-#: ../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: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:201 ../bin/ctodesgn.c:2916 ../bin/ctodesgn.c:2917
+#: ../bin/ctodesgn.c:205 ../bin/ctodesgn.c:3206 ../bin/ctodesgn.c:3207
msgid "Left Description"
msgstr "Beschreibung, links"
-#: ../bin/ctodesgn.c:202 ../bin/ctodesgn.c:205
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:209
msgid " #"
msgstr " Nr."
-#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:2915
+#: ../bin/ctodesgn.c:208 ../bin/ctodesgn.c:3205
msgid "Right Description"
msgstr "Beschreibung, rechts"
-#: ../bin/ctodesgn.c:206
+#: ../bin/ctodesgn.c:210
msgid "Roadbed Width"
-msgstr "Breite des Gleisbetts"
+msgstr "Breite des Gleisbettes"
-#: ../bin/ctodesgn.c:210 ../bin/denum.c:56
+#: ../bin/ctodesgn.c:214 ../bin/denum.c:52
msgid "Print Setup"
msgstr "Druckeinstellungen"
-#: ../bin/ctodesgn.c:241
+#: ../bin/ctodesgn.c:244
msgid "Diverging Length"
msgstr "Länge des Abzweigs"
-#: ../bin/ctodesgn.c:242
+#: ../bin/ctodesgn.c:245
msgid "Diverging Angle"
msgstr "Winkel des Abzweigs"
-#: ../bin/ctodesgn.c:243
+#: ../bin/ctodesgn.c:246
msgid "Diverging Offset"
msgstr "Abstand des Abzweigs"
-#: ../bin/ctodesgn.c:244
+#: ../bin/ctodesgn.c:247
msgid "Overall Length"
msgstr "Gesamtlänge"
-#: ../bin/ctodesgn.c:254
+#: ../bin/ctodesgn.c:259
msgid "Regular Turnout"
msgstr "Normale Weiche"
-#: ../bin/ctodesgn.c:264 ../bin/ctodesgn.c:301
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
msgid "Inner Length"
msgstr "Innenlänge"
-#: ../bin/ctodesgn.c:265 ../bin/ctodesgn.c:302
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:317
msgid "Inner Angle"
msgstr "Innenwinkel"
-#: ../bin/ctodesgn.c:266 ../bin/ctodesgn.c:303
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:318
msgid "Inner Offset"
msgstr "Innenabstand"
-#: ../bin/ctodesgn.c:267 ../bin/ctodesgn.c:305
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:320
msgid "Outer Angle"
msgstr "Außenwinkel"
-#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:306
+#: ../bin/ctodesgn.c:274 ../bin/ctodesgn.c:321
msgid "Outer Offset"
msgstr "Außenabstand"
-#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:308
+#: ../bin/ctodesgn.c:275 ../bin/ctodesgn.c:323
msgid "Outer Length"
msgstr "Außenlänge"
-#: ../bin/ctodesgn.c:291
+#: ../bin/ctodesgn.c:304
msgid "Curved Turnout"
msgstr "Bogenweiche"
-#: ../bin/ctodesgn.c:304
+#: ../bin/ctodesgn.c:319
msgid "Inner Radius"
msgstr "Innenradius"
-#: ../bin/ctodesgn.c:307
+#: ../bin/ctodesgn.c:322
msgid "Outer Radius"
msgstr "Außenradius"
-#: ../bin/ctodesgn.c:309 ../bin/ctodesgn.c:376 ../bin/ctodesgn.c:451
+#: ../bin/ctodesgn.c:324 ../bin/ctodesgn.c:404 ../bin/ctodesgn.c:491
msgid "Toe Radius"
msgstr "Anfangsradius"
-#: ../bin/ctodesgn.c:310 ../bin/ctodesgn.c:375
+#: ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:403
msgid "Toe Length"
msgstr "Anfangslänge"
-#: ../bin/ctodesgn.c:320
+#: ../bin/ctodesgn.c:338
msgid "Cornu Curved Turnout"
msgstr "Cornu-Bogenweiche"
-#: ../bin/ctodesgn.c:330 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:396
-#: ../bin/ctodesgn.c:437
+#: ../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:331 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:397
-#: ../bin/ctodesgn.c:438
+#: ../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:332 ../bin/ctodesgn.c:369 ../bin/ctodesgn.c:398
-#: ../bin/ctodesgn.c:439
+#: ../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:333 ../bin/ctodesgn.c:372 ../bin/ctodesgn.c:400
-#: ../bin/ctodesgn.c:446
+#: ../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:334 ../bin/ctodesgn.c:373 ../bin/ctodesgn.c:401
-#: ../bin/ctodesgn.c:447
+#: ../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:335 ../bin/ctodesgn.c:374 ../bin/ctodesgn.c:402
-#: ../bin/ctodesgn.c:448
+#: ../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:357
+#: ../bin/ctodesgn.c:383
msgid "Wye Turnout"
msgstr "Außenbogenweiche"
-#: ../bin/ctodesgn.c:370 ../bin/ctodesgn.c:440
+#: ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:480
msgid "Left Radius"
msgstr "Linker Radius"
-#: ../bin/ctodesgn.c:371 ../bin/ctodesgn.c:445
+#: ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:485
msgid "Right Radius"
msgstr "Rechter Radius"
-#: ../bin/ctodesgn.c:386
+#: ../bin/ctodesgn.c:416
msgid "Cornu Wye Turnout"
msgstr "Cornu-Außenbogenweiche"
-#: ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:465
msgid "3-way Turnout"
msgstr "Dreiwegweiche"
-#: ../bin/ctodesgn.c:441
+#: ../bin/ctodesgn.c:481
msgid "Center Length"
msgstr "Länge des Mittelgleis"
-#: ../bin/ctodesgn.c:442
+#: ../bin/ctodesgn.c:482
msgid "Center Angle"
msgstr "Winkel des Mittelgleis"
-#: ../bin/ctodesgn.c:443 ../bin/dcar.c:2237
+#: ../bin/ctodesgn.c:483 ../bin/dcar.c:2348
msgid "Center Offset"
msgstr "Abstand des Mittelgleis"
-#: ../bin/ctodesgn.c:444
+#: ../bin/ctodesgn.c:484
msgid "Center Radius"
msgstr "Radius des Mittelgleis"
-#: ../bin/ctodesgn.c:449
+#: ../bin/ctodesgn.c:489
msgid "Toe Length Left"
msgstr "Anfangslänge links"
-#: ../bin/ctodesgn.c:450
+#: ../bin/ctodesgn.c:490
msgid "Toe Length Right"
msgstr "Anfangslänge rechts"
-#: ../bin/ctodesgn.c:462
+#: ../bin/ctodesgn.c:504
msgid "Cornu 3-way Turnout"
msgstr "Cornu-Dreiwegweiche"
-#: ../bin/ctodesgn.c:482
+#: ../bin/ctodesgn.c:529
msgid "Crossing"
msgstr "Kreuzung"
-#: ../bin/ctodesgn.c:503
+#: ../bin/ctodesgn.c:554
msgid "Single Slipswitch"
msgstr "Einfache Kreuzungsweiche"
-#: ../bin/ctodesgn.c:532
+#: ../bin/ctodesgn.c:589
msgid "Double Slipswitch"
msgstr "Doppelte Kreuzungsweiche"
-#: ../bin/ctodesgn.c:552
+#: ../bin/ctodesgn.c:614
msgid "Right Crossover"
msgstr "Rechter Gleiswechsel"
-#: ../bin/ctodesgn.c:572
+#: ../bin/ctodesgn.c:640
msgid "Left Crossover"
msgstr "Linker Gleiswechsel"
-#: ../bin/ctodesgn.c:592
+#: ../bin/ctodesgn.c:665
msgid "Double Crossover"
msgstr "Doppelter Gleiswechsel"
-#: ../bin/ctodesgn.c:610
+#: ../bin/ctodesgn.c:687
msgid "Straight Section"
msgstr "Gerader Abschnitt"
-#: ../bin/ctodesgn.c:621
+#: ../bin/ctodesgn.c:699
msgid "Angle (Degrees)"
msgstr "Winkel (Grad)"
-#: ../bin/ctodesgn.c:629
+#: ../bin/ctodesgn.c:710
msgid "Curved Section"
msgstr "Gebogener Abschnitt"
-#: ../bin/ctodesgn.c:648
+#: ../bin/ctodesgn.c:733
msgid "Bumper Section"
msgstr "Prellbock"
-#: ../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:744 ../bin/denum.c:124 ../bin/denum.c:193
+#: ../bin/denum.c:230 ../bin/denum.c:231
msgid "Count"
msgstr "Anzahl"
-#: ../bin/ctodesgn.c:659
+#: ../bin/ctodesgn.c:745
msgid "Radius1"
msgstr "Radius 1"
-#: ../bin/ctodesgn.c:660
+#: ../bin/ctodesgn.c:746
msgid "Radius2"
msgstr "Radius 2"
-#: ../bin/ctodesgn.c:740
+#: ../bin/ctodesgn.c:829
msgid "Turntable Section"
msgstr "Drehscheibenabschnitt"
-#: ../bin/ctodesgn.c:2543
+#: ../bin/ctodesgn.c:2779
#, c-format
msgid "%s Designer"
msgstr "%s Designer"
-#: ../bin/ctodesgn.c:2547
+#: ../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:2547
+#: ../bin/ctodesgn.c:2782
msgid "Page"
msgstr "Seite"
-#: ../bin/ctodesgn.c:2555
+#: ../bin/ctodesgn.c:2790
msgid "Frog Number"
msgstr "Herzstücksteigung"
-#: ../bin/ctodesgn.c:2869
+#: ../bin/ctodesgn.c:3149
msgid "Turnout Designer"
msgstr "Weichendesigner"
-#: ../bin/ctodesgn.c:2879
+#: ../bin/ctodesgn.c:3162
#, c-format
msgid "%s %s Designer"
msgstr "%s %s Designer"
-#: ../bin/ctrain.c:182 ../bin/dcar.c:2249 ../bin/dcar.c:4366 ../bin/dcar.c:4371
+#: ../bin/ctrain.c:181 ../bin/dcar.c:2360 ../bin/dcar.c:4694 ../bin/dcar.c:4700
msgid "Index"
msgstr "Verzeichnis"
-#: ../bin/ctrain.c:188 ../bin/dcar.c:4367
-msgid "Rep Marks"
-msgstr "Wagennummer"
+#: ../bin/ctrain.c:187
+msgid "Report Marks"
+msgstr "Bahngesellschaft"
-#: ../bin/ctrain.c:272
+#: ../bin/ctrain.c:275
msgid "Car"
msgstr "Wagen"
-#: ../bin/ctrain.c:656
+#: ../bin/ctrain.c:730
msgid "Follow"
msgstr "Folgen"
-#: ../bin/ctrain.c:657
+#: ../bin/ctrain.c:731
msgid "Auto Reverse"
msgstr "Automat. Wenden"
-#: ../bin/ctrain.c:676 ../bin/dcar.c:5256
+#: ../bin/ctrain.c:750 ../bin/dcar.c:5686
msgid "Find"
msgstr "Finden"
-#: ../bin/ctrain.c:682 ../bin/ctrain.c:941 ../bin/ctrain.c:1250
-#: ../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: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: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:882 ../bin/ctrain.c:911
+#: ../bin/ctrain.c:954 ../bin/ctrain.c:983
msgid "Crashed"
msgstr "Entgleist"
-#: ../bin/ctrain.c:884
+#: ../bin/ctrain.c:956
msgid "Not on Track"
msgstr "Nicht auf einem Gleis"
-#: ../bin/ctrain.c:888
+#: ../bin/ctrain.c:960
msgid "Trains Paused"
msgstr "Züge angehalten"
-#: ../bin/ctrain.c:890
+#: ../bin/ctrain.c:962
msgid "Running"
msgstr "Fährt"
-#: ../bin/ctrain.c:895
+#: ../bin/ctrain.c:967
msgid "End of Track"
msgstr "Ende des Gleis"
-#: ../bin/ctrain.c:899
+#: ../bin/ctrain.c:971
msgid "Open Turnout"
msgstr "Weiche ist gesperrt"
-#: ../bin/ctrain.c:903
+#: ../bin/ctrain.c:975
msgid "Manual Stop"
msgstr "Von Hand angehalten"
-#: ../bin/ctrain.c:907
+#: ../bin/ctrain.c:979
msgid "No Room"
msgstr "Kein Platz"
-#: ../bin/ctrain.c:915
+#: ../bin/ctrain.c:987
msgid "Unknown Status"
msgstr "Unbekannter Zustand"
-#: ../bin/ctrain.c:925
+#: ../bin/ctrain.c:997
msgid "No trains"
msgstr "Keine Züge"
-#: ../bin/ctrain.c:1301
+#: ../bin/ctrain.c:1377
msgid "Train Control XXX"
msgstr "Zugsteuerung XXX"
-#: ../bin/ctrain.c:1302
+#: ../bin/ctrain.c:1378
#, c-format
msgid "Train Control %d"
msgstr "Zugsteuerung %d"
-#: ../bin/ctrain.c:1304
+#: ../bin/ctrain.c:1380
msgid "Train Control"
msgstr "Zugsteuerung"
-#: ../bin/ctrain.c:3098
-msgid "Train"
-msgstr "Zug"
+#: ../bin/ctrain.c:3200 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
+msgid "Run Trains"
+msgstr "Zugbetrieb"
-#: ../bin/ctrain.c:3111
+#: ../bin/ctrain.c:3219
msgid "Uncouple"
msgstr "Entkuppeln"
-#: ../bin/ctrain.c:3113
+#: ../bin/ctrain.c:3221
msgid "Flip Car"
msgstr "Wagen umdrehen"
-#: ../bin/ctrain.c:3115
+#: ../bin/ctrain.c:3224
msgid "Clearance Lines On"
msgstr "Begrenzungslinien an"
-#: ../bin/ctrain.c:3117
+#: ../bin/ctrain.c:3227
msgid "Clearance Lines Off"
msgstr "Begrenzungslinien aus"
-#: ../bin/ctrain.c:3119
+#: ../bin/ctrain.c:3229
msgid "Flip Train"
msgstr "Zug umdrehen"
-#: ../bin/ctrain.c:3121
+#. 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:3124
+#: ../bin/ctrain.c:3236
msgid "Change Direction"
msgstr "Richtung ändern"
-#: ../bin/ctrain.c:3128
+#: ../bin/ctrain.c:3240
msgid "Remove Car"
msgstr "Wagen entfernen"
-#: ../bin/ctrain.c:3131
+#: ../bin/ctrain.c:3243
msgid "Remove Train"
msgstr "Zug entfernen"
-#: ../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 "Neu"
-#: ../bin/cturnout.c:370
-#, c-format
-msgid "Turnout path[%d:%d] out of bounds: %d"
-msgstr "Weg durch Weiche[%d:%d] ausserhalb der Grenzen: %d"
-
-#: ../bin/cturnout.c:381 ../bin/cturnout.c:391
+#: ../bin/cturnout.c:371 ../bin/cturnout.c:376
#, c-format
-msgid "Turnout path[%d] %d is not a valid track segment"
-msgstr "Weg durch Weiche[%d] %d ist kein gültiger Gleisabschnitt"
+msgid "CheckPath: Turnout path[%d] %d is not a track segment"
+msgstr "CheckPath: Weichenpfad[%d] %d ist kein Gleissegment"
-#: ../bin/cturnout.c:401 ../bin/cturnout.c:406
+#: ../bin/cturnout.c:385
#, c-format
-msgid "Turnout path[%d] %d is not a track segment"
-msgstr "Weg durch Weiche[%d] % ist kein Gleisabschnitt"
-
-#: ../bin/cturnout.c:414
-#, 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 ""
-"Weg durch Weiche[%d] %d-%d ist nicht verbunden: %0.3f P0(%f,%f) P1(%f,%f)"
+"CheckPath: Weichenpfad[%d] %d-%d nicht verbunden: %0.3f P0(%f,%f) P1(%f,%f)"
-#: ../bin/cturnout.c:452
+#: ../bin/cturnout.c:437
msgid "Unknown special case"
msgstr "Unbekannter Sonderfall"
-#: ../bin/cturnout.c:562
+#: ../bin/cturnout.c:564
msgid "Connect Adjustable Tracks"
msgstr "Veränderbare Gleise verbinden"
-#: ../bin/cturnout.c:1104
+#: ../bin/cturnout.c:1030
msgid "splitTurnout: can't find segment"
msgstr "Weiche auftrennen: Gleissegment nicht gefunden"
-#: ../bin/cturnout.c:1553 ../bin/track.c:2259 ../bin/track.c:2365
-#: ../bin/tstraigh.c:554
+#: ../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:1564
+#: ../bin/cturnout.c:1524
#, c-format
msgid "Length=%s"
msgstr "Länge=%s"
-#: ../bin/cturnout.c:2386
+#: ../bin/cturnout.c:1815
+#, c-format
+msgid "Turnout %d Path: %s"
+msgstr "Weiche%d Pfad: %s"
+
+#: ../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:2391
+#: ../bin/cturnout.c:2394
#, c-format
msgid "0 connections (%s)"
msgstr "Keine Verbindungen (%s)"
-#: ../bin/cturnout.c:2431
+#: ../bin/cturnout.c:2433
msgid "Place New Turnout"
msgstr "Neue Weiche setzen"
-#: ../bin/cturnout.c:2841
+#: ../bin/cturnout.c:2861
#, c-format
msgid "Angle = %0.3f (%s)"
msgstr "Winkel = %0.3f (%s)"
-#: ../bin/cturnout.c:2933 ../bin/param.c:2622
-msgid "Close"
-msgstr "Schliessen"
+#: ../bin/cturnout.c:2962
+msgid "Add Fixed-Track"
+msgstr "Festgleis zufügen"
-#: ../bin/cturnout.c:2950
+#: ../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:3144
-msgid "Predefined Track"
-msgstr "Vordefiniertes Gleis"
+#: ../bin/cturnout.c:3190
+msgid "Fixed-Track"
+msgstr "Festgleis"
-#: ../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 "Durchmesser"
-#: ../bin/cturntbl.c:252
+#: ../bin/cturntbl.c:276
msgid "# EndPt"
msgstr "Anzahl Endpunkte"
-#: ../bin/cturntbl.c:286
+#: ../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:301
+#: ../bin/cturntbl.c:335 ../bin/cturntbl.c:454
msgid "Turntable"
msgstr "Drehscheibe"
-#: ../bin/cturntbl.c:565
+#: ../bin/cturntbl.c:670
msgid "Drag to create stall track"
msgstr "Ziehen um Schuppengleis zu erstellen"
-#: ../bin/cturntbl.c:618
+#: ../bin/cturntbl.c:728
msgid "Connect Turntable Tracks"
msgstr "Drehscheibengleise verbinden"
-#: ../bin/cturntbl.c:885
+#: ../bin/cturntbl.c:1058
msgid "Create Turntable"
msgstr "Drehscheibe setzen"
-#: ../bin/cturntbl.c:916
+#: ../bin/cturntbl.c:1090
msgid "Custom Turntable"
msgstr "Drehscheibe entwerfen"
-#: ../bin/cundo.c:166
+#: ../bin/cundo.c:266
msgid "Undo Trace"
msgstr "Undo Trace"
-#: ../bin/cundo.c:536
+#: ../bin/cundo.c:741
#, c-format
msgid "Undo: %s"
msgstr "Rückgängig: %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 "Letzten Befehl rückgängig machen"
-#: ../bin/cundo.c:544
+#: ../bin/cundo.c:749
#, c-format
msgid "Redo: %s"
msgstr "Wiederholen: %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 "Rückgängig gemachten Befehl wiederholen"
-#: ../bin/custom.c:167
+#: ../bin/custom.c:148
#, c-format
msgid "%s Turnout Designer"
msgstr "%s Weichendesigner"
-#: ../bin/custom.c:172
+#: ../bin/custom.c:152
#, c-format
msgid "%s Version %s"
msgstr "%s Version %s"
-#: ../bin/custom.c:177
+#: ../bin/custom.c:156
#, c-format
msgid ""
"All %s Files (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%s "
@@ -3572,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:188
+#: ../bin/custom.c:166
#, c-format
msgid ""
"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
@@ -3581,81 +3725,85 @@ msgstr ""
"%s Gleisplan (*.xtc)|*.xtc|%s Erweiterter Gleisplan (*.xtce)|*.xtce|Alle "
"Dateien (*)|*"
-#: ../bin/custom.c:197
+#: ../bin/custom.c:174
#, c-format
msgid "All Files (*)|*"
msgstr "Alle Dateien (*)|*"
-#: ../bin/custom.c:202
+#: ../bin/custom.c:178
#, c-format
msgid "%s Import Files (*.xti)|*.xti"
msgstr "%s-Importdateien(*.xti)|*.xti"
-#: ../bin/custom.c:207
+#: ../bin/custom.c:182
msgid "Data Exchange Format Files (*.dxf)|*.dxf"
msgstr "Data Exchange Format Dateien(*.dxf)|*.dxf"
-#: ../bin/custom.c:211
+#: ../bin/custom.c:186
+msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
+msgstr "Scalable Vector Graphics Format Dateien (*.svg)|*.svg"
+
+#: ../bin/custom.c:190
#, c-format
msgid "%s Record Files (*.xtr)|*.xtr"
msgstr "%s-Aufzeichnungsdateien (*.xtr)|*.xtr"
-#: ../bin/custom.c:216
+#: ../bin/custom.c:194
#, c-format
msgid "%s Note Files (*.not)|*.not"
msgstr "%s-Notizen (*.not)|*.not"
-#: ../bin/custom.c:221
+#: ../bin/custom.c:198
#, c-format
msgid "%s Log Files (*.log)|*.log"
msgstr "%s-Protokolldateien (*.log)|*.log"
-#: ../bin/custom.c:226
+#: ../bin/custom.c:202
#, c-format
msgid "%s PartsList Files (*.txt)|*.txt"
msgstr "%s-Stücklisten (*.txt)|*.txt"
-#: ../bin/dbench.c:43
+#: ../bin/dbench.c:38
msgid " L-Girder"
msgstr " L-Träger"
-#: ../bin/dbench.c:43
+#: ../bin/dbench.c:38
msgid " T-Girder"
msgstr " T-Träger"
-#: ../bin/dbench.c:66
+#: ../bin/dbench.c:61
msgid "On Edge"
msgstr "Hochkant"
-#: ../bin/dbench.c:67
+#: ../bin/dbench.c:62
msgid "Flat"
msgstr "Flach"
-#: ../bin/dbench.c:71
+#: ../bin/dbench.c:67
msgid "Left-Down"
msgstr "Links unten"
-#: ../bin/dbench.c:72
+#: ../bin/dbench.c:68
msgid "Right-Down"
msgstr "Rechts unten"
-#: ../bin/dbench.c:73
+#: ../bin/dbench.c:69
msgid "Left-Up"
msgstr "Links oben"
-#: ../bin/dbench.c:74
+#: ../bin/dbench.c:70
msgid "Right-Up"
msgstr "Rechts oben"
-#: ../bin/dbench.c:75
+#: ../bin/dbench.c:71
msgid "Left-Inverted"
msgstr "Links umgekehrt"
-#: ../bin/dbench.c:76
+#: ../bin/dbench.c:72
msgid "Right-Inverted"
msgstr "Rechts umgekehrt"
-#: ../bin/dbench.c:81
+#: ../bin/dbench.c:78
msgid "Inverted"
msgstr "Umgekehrt"
@@ -3668,693 +3816,673 @@ msgstr ""
"Falscher Trägertyp %s:\n"
"%s"
-#: ../bin/dbitmap.c:102 ../bin/dbitmap.c:106
+#: ../bin/dbitmap.c:150
+msgid "Drawing tracks to bitmap"
+msgstr "Gleisplan als Grafik ausgeben"
+
+#: ../bin/dbitmap.c:187
msgid "Drawn with "
msgstr "Gezeichnet mit "
-#: ../bin/dbitmap.c:116
-msgid "Drawing tracks to BitMap"
-msgstr "Gleisplan als Grafik ausgeben"
-
-#: ../bin/dbitmap.c:123
-msgid "Writing BitMap to file"
+#: ../bin/dbitmap.c:229
+msgid "Writing bitmap to file"
msgstr "Grafik in Datei speichern"
-#: ../bin/dbitmap.c:144
-msgid "Print Titles"
-msgstr "Überschriften ausgeben"
+#: ../bin/dbitmap.c:252
+msgid "Layout Titles"
+msgstr "Gleisplantitel"
+
+#: ../bin/dbitmap.c:253
+msgid "Borders"
+msgstr "Rahmen"
+
+#: ../bin/dbitmap.c:254
+msgid "Centerline of Track"
+msgstr "Mittellinie des Gleises"
+
+#: ../bin/dbitmap.c:255
+msgid "Background Image"
+msgstr "Hintergrundbild"
+
+#: ../bin/dbitmap.c:262
+msgid "Include "
+msgstr "Einfügen "
+
+#: ../bin/dbitmap.c:264
+msgid "Resolution "
+msgstr "Auflösung "
-#: ../bin/dbitmap.c:144
-msgid "Print Borders"
-msgstr "Rahmen ausgeben"
+#: ../bin/dbitmap.c:265
+msgid "dpi"
+msgstr "Punkte pro Zoll"
-#: ../bin/dbitmap.c:145
-msgid "Print Centerline"
-msgstr "Mittellinie ausgeben"
+#: ../bin/dbitmap.c:266
+msgid "Bitmap Size "
+msgstr "Bitmap-Größe "
-#: ../bin/dbitmap.c:152
-msgid " dpi"
-msgstr " dpi"
+#: ../bin/dbitmap.c:268
+msgid "99999 by 99999 pixels"
+msgstr "99999 auf 99999 Bildpunkte"
-#: ../bin/dbitmap.c:154
-msgid "Bitmap : 99999 by 99999 pixels"
-msgstr "Grafik : 99999 auf 99999 Bildpunkte"
+#: ../bin/dbitmap.c:269
+msgid "Approximate File Size "
+msgstr "Ungefähre Dateigröße "
-#: ../bin/dbitmap.c:156
-msgid "Approximate file size: 999.9Mb"
-msgstr "Ungefähre Dateigrösse : 999.9Mb"
+#: ../bin/dbitmap.c:271
+msgid "999.9Mb"
+msgstr "999,9Mb"
-#: ../bin/dbitmap.c:186
+#: ../bin/dbitmap.c:317
#, c-format
-msgid "Bitmap : %ld by %ld pixels"
-msgstr "Grafik : %ld auf %ld Bildpunkte"
+msgid "%ld by %ld pixels"
+msgstr "%ld auf %ld Pixel"
-#: ../bin/dbitmap.c:190
+#: ../bin/dbitmap.c:339
#, c-format
-msgid "Approximate file size : %0.0f"
-msgstr "Ungefähre Dateigrösse : %0.0f"
+msgid "%0.0f"
+msgstr "%0.0f"
-#: ../bin/dbitmap.c:192
+#: ../bin/dbitmap.c:341
#, c-format
-msgid "Approximate file size : %0.1fKb"
-msgstr "Ungefähre Dateigrösse : %0.1fKb"
+msgid "%0.1fKb"
+msgstr "%0.1fKb"
-#: ../bin/dbitmap.c:194
+#: ../bin/dbitmap.c:343
#, c-format
-msgid "Approximate file size : %0.1fMb"
-msgstr "Ungefähre Dateigrösse : %0.1fMb"
+msgid "%0.1fMb"
+msgstr "%0.1fMb"
-#: ../bin/dbitmap.c:213
+#: ../bin/dbitmap.c:345
+#, c-format
+msgid "%0.1fGb"
+msgstr "%0.1fGb"
+
+#: ../bin/dbitmap.c:436
msgid "Save Bitmap"
msgstr "Grafik speichern"
-#: ../bin/dbitmap.c:217
-msgid "Bitmap files (*.png)|*.png"
-msgstr "Portable Network Graphics (*.png)|*.png"
+#: ../bin/dbitmap.c:437
+msgid ""
+"Portable Network Graphics format (*.png)|*.png|JPEG format (*.jpg)|*.jpg"
+msgstr ""
+"Portables Netzwerkgrafikformat (*.png)|*.png|JPEG Grafikformat (*.jpg)|*.jpg"
-#: ../bin/dbitmap.c:238
-msgid "BitMap"
-msgstr "Grafik"
+#: ../bin/dbitmap.c:472
+msgid "Export to bitmap"
+msgstr "Als Bitmap exportieren"
-#: ../bin/dcar.c:54
+#: ../bin/dcar.c:45
msgid "Truck"
msgstr "Drehgestell"
-#: ../bin/dcar.c:54
+#: ../bin/dcar.c:45
msgid "Body"
msgstr "Aufbau"
-#: ../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 "Unbekannt"
-#: ../bin/dcar.c:478
+#: ../bin/dcar.c:481
msgid "Diesel Loco"
msgstr "Diesellok"
-#: ../bin/dcar.c:479
+#: ../bin/dcar.c:482
msgid "Steam Loco"
msgstr "Dampflok"
-#: ../bin/dcar.c:480
+#: ../bin/dcar.c:483
msgid "Elect Loco"
msgstr "Elektrolok"
-#: ../bin/dcar.c:481
+#: ../bin/dcar.c:484
msgid "Freight Car"
msgstr "Güterwagen"
-#: ../bin/dcar.c:482
+#: ../bin/dcar.c:485
msgid "Psngr Car"
msgstr "Personenwagen"
-#: ../bin/dcar.c:483
+#: ../bin/dcar.c:486
msgid "M-O-W"
msgstr "Arbeitswagen"
-#: ../bin/dcar.c:484
+#: ../bin/dcar.c:487
msgid "Other"
msgstr "Sonstige"
-#: ../bin/dcar.c:1183 ../bin/dcar.c:5077
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
msgid "N/A"
msgstr "Keine Angabe"
-#: ../bin/dcar.c:1184 ../bin/dcar.c:5082
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
msgid "Mint"
msgstr "Neuwertig"
-#: ../bin/dcar.c:1185 ../bin/dcar.c:5081
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
msgid "Excellent"
msgstr "Exzellent"
-#: ../bin/dcar.c:1186 ../bin/dcar.c:5080
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
msgid "Good"
msgstr "Gut"
-#: ../bin/dcar.c:1187 ../bin/dcar.c:5079
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
msgid "Fair"
msgstr "In Ordnung"
-#: ../bin/dcar.c:1188 ../bin/dcar.c:5078
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
msgid "Poor"
msgstr "Schlecht"
-#: ../bin/dcar.c:1501 ../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 "Gegenstand"
-#: ../bin/dcar.c:2173 ../wlib/gtklib/notice.c:96 ../wlib/mswlib/mswmisc.c:2097
+#: ../bin/dcar.c:2282 ../wlib/mswlib/mswmisc.c:2057
msgid "Information"
msgstr "Information"
-#: ../bin/dcar.c:2173
+#: ../bin/dcar.c:2282
msgid "Customize"
msgstr "Anpassen"
-#: ../bin/dcar.c:2185
+#: ../bin/dcar.c:2296
msgid "Sequential"
msgstr "Aufsteigend"
-#: ../bin/dcar.c:2185
+#: ../bin/dcar.c:2296
msgid "Repeated"
msgstr "Wiederholend"
-#: ../bin/dcar.c:2196 ../bin/dcar.c:2198 ../bin/dcar.c:5407
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
msgid "Prototype"
msgstr "Vorbild"
-#: ../bin/dcar.c:2204
+#: ../bin/dcar.c:2315
msgid "Part"
msgstr "Teil"
-#: ../bin/dcar.c:2206 ../../../../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 "Bestellnummer"
-#: ../bin/dcar.c:2208
+#: ../bin/dcar.c:2319
msgid "Loco?"
msgstr "Lok?"
-#: ../bin/dcar.c:2212 ../bin/dcar.c:4404
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
msgid "Import"
msgstr "Import"
-#: ../bin/dcar.c:2219
+#: ../bin/dcar.c:2330
msgid "Mode"
msgstr "Modus"
-#: ../bin/dcar.c:2223
+#: ../bin/dcar.c:2334
msgid "Road"
msgstr "Gesellschaft"
-#: ../bin/dcar.c:2225
+#: ../bin/dcar.c:2336
msgid "Reporting Mark"
msgstr "Wagennummer"
-#: ../bin/dcar.c:2227
+#: ../bin/dcar.c:2338
msgid "Number"
msgstr "Nummer"
-#: ../bin/dcar.c:2231
+#: ../bin/dcar.c:2342
msgid "Car Length"
msgstr "Wagenlänge"
-#: ../bin/dcar.c:2235
+#: ../bin/dcar.c:2346
msgid "Truck Centers"
msgstr "Drehgestellabstand"
-#: ../bin/dcar.c:2239
+#: ../bin/dcar.c:2350
msgid "Coupler Mount"
msgstr "Kupplungsbefestigung"
-#: ../bin/dcar.c:2241
+#: ../bin/dcar.c:2352
msgid "Coupled Length"
msgstr "Gekuppelte Länge"
-#: ../bin/dcar.c:2243 ../bin/dcar.c:4251
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
msgid "Coupler Length"
msgstr "Kupplungslänge"
-#: ../bin/dcar.c:2251
+#: ../bin/dcar.c:2362
msgid "Purchase Price"
msgstr "Kaufpreis"
-#: ../bin/dcar.c:2253 ../../../../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 "Aktueller Preis"
-#: ../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 "Zustand"
-#: ../bin/dcar.c:2257
+#: ../bin/dcar.c:2368
msgid "Purchase Date"
msgstr "Kaufdatum"
-#: ../bin/dcar.c:2259 ../bin/dcar.c:4373
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
msgid "Service Date"
msgstr "Servicedatum"
-#: ../bin/dcar.c:2261
+#: ../bin/dcar.c:2372
msgid "Quantity"
msgstr "Anzahl"
-#: ../bin/dcar.c:2263
+#: ../bin/dcar.c:2374
msgid "Numbers"
msgstr "Nummern"
-#. 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:590
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1286
msgid "Notes"
msgstr "Notizen"
-#: ../bin/dcar.c:2272
+#: ../bin/dcar.c:2383
msgid "Car Part"
msgstr "Wagenvorlage"
-#: ../bin/dcar.c:2273 ../../../../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 "Wagenvorbild"
-#: ../bin/dcar.c:2635 ../bin/dcar.c:2952
+#: ../bin/dcar.c:2776 ../bin/dcar.c:3143
msgid "Undecorated"
msgstr "Unbeschriftet"
-#: ../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 "Individual"
-#: ../bin/dcar.c:2862
+#: ../bin/dcar.c:3049
msgid "Undecorated "
msgstr "Unbeschriftet "
-#: ../bin/dcar.c:3084
+#: ../bin/dcar.c:3298
#, c-format
msgid "New %s Scale Car"
msgstr "Neuer Wagen in %s"
-#: ../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 "Hinzufügen"
-#: ../bin/dcar.c:3087
+#: ../bin/dcar.c:3301
#, c-format
msgid "Update %s Scale Car"
msgstr "Aktualisiere Wagen in Maßstab %s"
-#: ../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 "Aktualisieren"
-#: ../bin/dcar.c:3093
+#: ../bin/dcar.c:3307
#, c-format
msgid "New %s Scale Car Part"
msgstr "Neue Wagenvorlage in %s"
-#: ../bin/dcar.c:3096
+#: ../bin/dcar.c:3310
#, c-format
msgid "Update %s Scale Car Part"
msgstr "Wagenvorlage in %s aktualisieren"
-#: ../bin/dcar.c:3102
+#: ../bin/dcar.c:3317
msgid "New Prototype"
msgstr "Neues Vorbild"
-#: ../bin/dcar.c:3105
+#: ../bin/dcar.c:3320
msgid "Update Prototype"
msgstr "Aktualisiere Vorbild"
-#: ../bin/dcar.c:3777
-msgid "Enter a 8 digit numeric date"
-msgstr "Geben Sie ein 8-stelliges numerisches Datum ein"
+#: ../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:3780
-msgid "Enter a 8 digit date"
-msgstr "Geben Sie ein 8-stelliges Datum ein"
+#: ../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:3782
+#: ../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:3787
+#: ../bin/dcar.c:4083
msgid "Invalid month"
msgstr "Ungültiger Monat"
-#: ../bin/dcar.c:3789
+#: ../bin/dcar.c:4086
msgid "Invalid day"
msgstr "Ungültiger Kalendertag"
-#: ../bin/dcar.c:3881
-msgid "Enter a Prototype name"
-msgstr "Geben Sie den Namen des Vorbild ein"
-
-#: ../bin/dcar.c:3883
+#: ../bin/dcar.c:4184
msgid "Select or Enter a Manufacturer"
msgstr "Hersteller auswählen oder eingeben"
-#: ../bin/dcar.c:3885
-msgid "Enter a Part Number"
-msgstr "Bestellnummer eingeben"
-
-#: ../bin/dcar.c:3887
-msgid "Enter the Car Length"
-msgstr "Länge des Wagen eingeben"
-
-#: ../bin/dcar.c:3889
-msgid "Enter the Car Width"
-msgstr "Breite des Wagen eingeben"
-
-#: ../bin/dcar.c:3891
-msgid "Enter the Truck Centers"
-msgstr "Drehgestellabstand eingeben"
-
-#: ../bin/dcar.c:3893
-msgid "Truck Center Offset must be greater than 0 or 0"
-msgstr "Abstand der Drehgestelle vom Ende muss größer oder gleich 0 sein"
-
-#: ../bin/dcar.c:3895
-msgid "Truck Centers must be less than Car Length"
-msgstr "Abstand der Drehgestelle muss kleiner als die Wagenlänge sein"
-
-#: ../bin/dcar.c:3897
-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:3899
-msgid "Enter the Coupled Length or Coupler Length"
-msgstr "Geben Sie die gekuppelte Länge oder die Kupplungslänge ein"
-
-#: ../bin/dcar.c:3901
-msgid "Enter the Coupled Length"
-msgstr "Geben Sie die gekuppelte Länge ein"
-
-#: ../bin/dcar.c:3903
-msgid "Enter a item Index"
-msgstr "Geben Sie eine Kennnummer ein"
-
-#: ../bin/dcar.c:3905
-msgid "Purchase Price is not valid"
-msgstr "Kaufpreis ist nicht gültig"
-
-#: ../bin/dcar.c:3907
-msgid "Current Price is not valid"
-msgstr "Aktueller Preis ist nicht gültig"
-
-#: ../bin/dcar.c:3909
-msgid "Purchase Date is not valid"
-msgstr "Kaufdatum ist nicht gültig"
-
-#: ../bin/dcar.c:3911
-msgid "Service Date is not valid"
-msgstr "Servicedatum ist nicht gültig"
-
-#: ../bin/dcar.c:3914
+#: ../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:4110
+#: ../bin/dcar.c:4410
#, c-format
msgid "Added %ld new Cars"
msgstr "%ld neue Wagen hinzugefügt"
-#: ../bin/dcar.c:4112
+#: ../bin/dcar.c:4412
msgid "Added new Car"
msgstr "Neuen Wagen hinzugefügt"
-#: ../bin/dcar.c:4115
+#: ../bin/dcar.c:4415
msgid "Updated Car"
msgstr "Wagen aktualisiert"
-#: ../bin/dcar.c:4118
+#: ../bin/dcar.c:4418
msgid " and Part"
msgstr " und Teil"
-#: ../bin/dcar.c:4145
+#: ../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:4145 ../bin/dcar.c:4162
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Added new"
msgstr "Neu hinzugefügt"
-#: ../bin/dcar.c:4145 ../bin/dcar.c:4162
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
msgid "Updated"
msgstr "Aktualisiert"
-#: ../bin/dcar.c:4161
+#: ../bin/dcar.c:4472
#, c-format
msgid "%s Prototype: %s%s."
msgstr "%s Vorbild: %s%s."
-#: ../bin/dcar.c:4163
+#: ../bin/dcar.c:4474
msgid ". Enter new values or press Close"
msgstr ". Neue Werte eingeben oder Abbruch drücken"
-#: ../bin/dcar.c:4284
+#: ../bin/dcar.c:4598
msgid "New Car Part"
msgstr "Neues Wagenmuster"
-#: ../bin/dcar.c:4367 ../bin/dcar.c:4372
-#: ../../../../build/work/app/bin/bllnhlp.c:410
+#: ../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:4367
+#: ../bin/dcar.c:4695
+msgid "Rep Marks"
+msgstr "Wagennummer"
+
+#: ../bin/dcar.c:4695
msgid "Purc Price"
msgstr "Kaufpreis"
-#: ../bin/dcar.c:4368 ../bin/dcar.c:4373
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
msgid "Curr Price"
msgstr "Akt. Preis"
-#: ../bin/dcar.c:4368
+#: ../bin/dcar.c:4696
msgid "Purc Date"
-msgstr "Kaufdaum"
+msgstr "Kaufdatum"
-#: ../bin/dcar.c:4368
+#: ../bin/dcar.c:4696
msgid "Srvc Date"
msgstr "Servicedatum"
-#: ../bin/dcar.c:4369
+#: ../bin/dcar.c:4697
msgid "Locat'n"
msgstr "Ort"
-#: ../bin/dcar.c:4372
+#: ../bin/dcar.c:4701
msgid "RepMarks"
msgstr "Wagennummer"
-#: ../bin/dcar.c:4372
+#: ../bin/dcar.c:4701
msgid "Purch Price"
msgstr "Kaufpreis"
-#: ../bin/dcar.c:4373
+#: ../bin/dcar.c:4702
msgid "Purch Date"
msgstr "Kaufdatum"
-#: ../bin/dcar.c:4390
+#: ../bin/dcar.c:4720
msgid "Sort By"
msgstr "Sortierung"
-#: ../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 "Bearbeiten"
-#: ../bin/dcar.c:4402 ../bin/dcontmgm.c:101 ../bin/dcustmgm.c:73
-#: ../bin/misc.c:2246
+#: ../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:4406 ../bin/fileio.c:1517
+#: ../bin/dcar.c:4736 ../bin/fileio.c:1629
msgid "Export"
msgstr "Export"
-#: ../bin/dcar.c:4408 ../../../../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 "Auflisten"
-#: ../bin/dcar.c:4519 ../bin/dcar.c:5256 ../bin/misc.c:2622
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1349
msgid "Car Inventory"
msgstr "Wagenverzeichnis"
-#: ../bin/dcar.c:4639
+#: ../bin/dcar.c:5026
msgid "List Cars"
msgstr "Wagen auflisten"
-#: ../bin/dcar.c:4763 ../bin/dcar.c:4928
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
msgid "Import Cars"
msgstr "Wagen importieren"
-#: ../bin/dcar.c:4929 ../bin/dcar.c:5052
+#: ../bin/dcar.c:5323 ../bin/dcar.c:5453
msgid "Comma-Separated-Values (*.csv)|*.csv"
msgstr "Durch-Kommata getrennte Werte(*.csv)|*.csv"
-#: ../bin/dcar.c:4999 ../bin/dcar.c:5051
+#: ../bin/dcar.c:5395 ../bin/dcar.c:5452
msgid "Export Cars"
msgstr "Wagen exportieren"
-#: ../bin/dcar.c:5085
-msgid "Layout"
-msgstr "Anlage"
-
-#: ../bin/dcar.c:5087
+#: ../bin/dcar.c:5494
msgid "Shelf"
msgstr "Regal"
-#: ../bin/dcmpnd.c:77 ../bin/dlayer.c:499 ../bin/misc.c:617 ../bin/misc.c:649
+#: ../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:110
+#: ../bin/dcmpnd.c:111
msgid "Updating definitions, please wait"
msgstr "Bitte warten, Definitionen werden aktualisiert"
-#: ../bin/dcmpnd.c:173
+#: ../bin/dcmpnd.c:178
msgid "Update Title"
msgstr "Ãœberschrift aktualisieren"
-#: ../bin/dcmpnd.c:233
+#: ../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:242
+#: ../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:261
+#: ../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:327
+#: ../bin/dcmpnd.c:341
msgid "Skip"
msgstr "Überspringen"
-#: ../bin/dcmpnd.c:359
+#: ../bin/dcmpnd.c:374
#, c-format
msgid "%d Track(s) refreshed"
msgstr "%d Gleise bearbeitet"
-#: ../bin/dcmpnd.c:399
+#: ../bin/dcmpnd.c:420
msgid "Refresh Turnout/Structure"
msgstr "Weichen/Gebäude neu laden"
-#: ../bin/dcmpnd.c:401
+#: ../bin/dcmpnd.c:424
msgid "Choose a Turnout/Structure to replace:"
msgstr "Zu ersetzende Weiche / Gebäude auswählen:"
-#. 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:437 ../bin/doption.c:89
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1226
msgid "Turnouts"
msgstr "Weichen"
-#: ../bin/dcmpnd.c:411
+#: ../bin/dcmpnd.c:437
msgid "Structures"
msgstr "Gebäude"
-#: ../bin/dcmpnd.c:440
+#: ../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:542
+#: ../bin/dcmpnd.c:583
msgid "Rename Object"
msgstr "Objekt umbenennen"
-#: ../bin/dcontmgm.c:92
-msgid "Tracks"
-msgstr "Gleise"
-
-#: ../bin/dcontmgm.c:173
-#, 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:176
-msgid "Control Elements"
-msgstr "Steuerungselemente"
-
-#: ../bin/dcontmgm.c:299
-msgid "Manage Layout Control Elements"
-msgstr "Steuerungselemente verwalten"
-
-#: ../bin/dcustmgm.c:67
+#: ../bin/dcustmgm.c:54
msgid "Create a new "
msgstr "Erstelle neue(n) "
-#: ../bin/dcustmgm.c:69
+#: ../bin/dcustmgm.c:56
msgid "Go"
msgstr "Los"
-#: ../bin/dcustmgm.c:75
+#: ../bin/dcustmgm.c:62
msgid "Move To"
msgstr "Verschieben nach"
-#: ../bin/dcustmgm.c:108
+#: ../bin/dcustmgm.c:98
msgid "Rename"
msgstr "Umbenennen"
-#: ../bin/dcustmgm.c:189
+#: ../bin/dcustmgm.c:186
msgid "Label"
msgstr "Beschriftung"
-#: ../bin/dcustmgm.c:227
+#: ../bin/dcustmgm.c:225
msgid "Contents Label"
msgstr "Inhaltsbeschriftung"
-#: ../bin/dcustmgm.c:283
+#: ../bin/dcustmgm.c:284
msgid "Move To XTP"
-msgstr "\"In Paramterdatei verschieben"
+msgstr "\"In Parameterdatei verschieben"
-#: ../bin/dcustmgm.c:284
+#: ../bin/dcustmgm.c:285
msgid "Parameter File (*.xtp)|*.xtp"
msgstr "Parameterdateien (*.xtp)|*.xtp"
-#: ../bin/dcustmgm.c:395
+#: ../bin/dcustmgm.c:407
msgid "Manage custom designed parts"
msgstr "Eigene Teile verwalten"
-#: ../bin/dease.c:67
+#: ../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:67
+#: ../bin/dease.c:68
msgid "Broad"
msgstr "Weit"
-#: ../bin/dease.c:67
+#: ../bin/dease.c:68
msgid "Cornu"
msgstr "Cornu"
-#: ../bin/dease.c:74
+#: ../bin/dease.c:76
msgid "Value"
msgstr "Wert"
-#: ../bin/dease.c:75 ../bin/tease.c:525
+#: ../bin/dease.c:77 ../bin/tease.c:530
msgid "R"
msgstr "R"
-#: ../bin/dease.c:77 ../bin/tease.c:526
+#: ../bin/dease.c:79 ../bin/tease.c:531
msgid "L"
msgstr "L"
-#: ../bin/dease.c:242
+#: ../bin/dease.c:250
msgid "Easement"
msgstr "Übergangsbogen"
-#: ../bin/denum.c:49
+#: ../bin/denum.c:44
msgid "Prices"
msgstr "Preise"
-#: ../bin/denum.c:54
+#: ../bin/denum.c:45 ../bin/denum.c:139
+msgid "Indexes"
+msgstr "Verzeichnisse"
+
+#: ../bin/denum.c:50
msgid "Save As ..."
msgstr "Speichern unter..."
-#: ../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 "Je"
-#: ../bin/denum.c:148 ../bin/denum.c:149
+#: ../bin/denum.c:152 ../bin/denum.c:154
msgid "Parts List"
msgstr "Teileliste"
-#: ../bin/denum.c:154
+#: ../bin/denum.c:160
#, c-format
msgid ""
"%s Parts List\n"
@@ -4363,645 +4491,746 @@ msgstr ""
"%s Teileliste\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 "Erweitert"
-#: ../bin/denum.c:235 ../bin/denum.c:238
+#: ../bin/denum.c:247 ../bin/denum.c:251
msgid "Total"
msgstr "Summe"
-#: ../bin/dlayer.c:487
+#: ../bin/dlayer.c:542
+msgid "Select Layer:"
+msgstr "Ebene auswählen:"
+
+#: ../bin/dlayer.c:548
msgid "Use Color"
msgstr "Farbe benutzen"
-#: ../bin/dlayer.c:489
+#: ../bin/dlayer.c:550
msgid "Visible"
msgstr "Sichtbar"
-#: ../bin/dlayer.c:491
+#: ../bin/dlayer.c:552
msgid "Frozen"
msgstr "Fixiert"
-#: ../bin/dlayer.c:493
+#: ../bin/dlayer.c:554
msgid "On Map"
msgstr "Auf der Karte"
-#: ../bin/dlayer.c:495
+#: ../bin/dlayer.c:556
msgid "Module"
msgstr "Modul"
-#: ../bin/dlayer.c:498
-msgid "Personal Preferences"
-msgstr "Persönliche Einstellungen"
+#: ../bin/dlayer.c:558
+msgid "No Button"
+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:576
+msgid "Layer Actions"
+msgstr "Ebenenaktionen"
-#: ../bin/dlayer.c:500 ../bin/macro.c:1421
+#: ../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:587
+msgid "Settings when Current"
+msgstr "Einstellungen wenn aktiv"
+
+#: ../bin/dlayer.c:589
+msgid "Object Count:"
+msgstr "Anzahl der Objekte:"
+
+#: ../bin/dlayer.c:590
+msgid "All Layer Preferences"
+msgstr "Einstellungen für alle Ebenen"
+
+#: ../bin/dlayer.c:592 ../bin/macro.c:1432
msgid "Save"
msgstr "Speichern"
-#: ../bin/dlayer.c:501
+#: ../bin/dlayer.c:593
msgid "Defaults"
msgstr "Standardwerte"
-#: ../bin/dlayer.c:502
-msgid "Number of Layer Buttons"
-msgstr "Anzahl der Ebenenknöpfe"
-
-#: ../bin/dlayer.c:519 ../bin/dlayer.c:987 ../bin/dlayer.c:1000
-#: ../bin/dlayer.c:1051
+#: ../bin/dlayer.c:711 ../bin/dlayer.c:1564 ../bin/dlayer.c:1582
+#: ../bin/dlayer.c:1652
msgid "Main"
msgstr "Haupt"
-#: ../bin/dlayer.c:632 ../bin/dlayer.c:925 ../bin/dlayer.c:1003
-#: ../bin/dlayer.c:1053 ../bin/dlayer.c:1311
+#: ../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:1124
+#: ../bin/dlayer.c:2072
msgid "Layers"
msgstr "Ebenen"
-#: ../bin/doption.c:95
-msgid "Turning off AutoSave"
-msgstr "Automatisches Sichern aus"
-
-#: ../bin/doption.c:104
-msgid "Turning on CheckPointing"
-msgstr "Sicherungskopien aktivieren"
+#: ../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:130
+#: ../bin/doption.c:87
msgid "Auto Pan"
msgstr "Automatischer Ausschnitt"
-#: ../bin/doption.c:132
+#: ../bin/doption.c:89
msgid "All"
msgstr "Alle"
-#: ../bin/doption.c:133
+#: ../bin/doption.c:90
msgid "Thick"
msgstr "Dick"
-#: ../bin/doption.c:133
+#: ../bin/doption.c:90
msgid "Exception"
msgstr "Ausnahmegleis"
-#: ../bin/doption.c:134
+#: ../bin/doption.c:91
msgid "Outline"
msgstr "Umriss"
-#: ../bin/doption.c:135
+#: ../bin/doption.c:92
msgid "Off"
msgstr "Aus"
-#: ../bin/doption.c:135
+#: ../bin/doption.c:92
msgid "On"
msgstr "An"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:93
msgid "Track Descriptions"
msgstr "Gleisbeschreibungen"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:93
msgid "Lengths"
msgstr "Längen"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:93
msgid "EndPt Elevations"
-msgstr "Endpunkthöhen"
+msgstr "Endpunkt höher"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:93
msgid "Track Elevations"
msgstr "Gleishöhen"
-#: ../bin/doption.c:136
+#: ../bin/doption.c:93
msgid "Cars"
msgstr "Wagen"
-#: ../bin/doption.c:137 ../bin/doption.c:138
+#: ../bin/doption.c:94 ../bin/doption.c:95
msgid "Descr"
msgstr "Beschreibung"
-#: ../bin/doption.c:138
+#: ../bin/doption.c:95
msgid "Manuf"
msgstr "Hersteller"
-#: ../bin/doption.c:139 ../bin/doption.c:140
+#: ../bin/doption.c:96 ../bin/doption.c:97
msgid "Object"
msgstr "Objekt"
-#: ../bin/doption.c:141
+#: ../bin/doption.c:98
msgid "Live Map"
msgstr "Dynamische Karte"
-#: ../bin/doption.c:142
+#: ../bin/doption.c:99
msgid "Hide Trains On Hidden Track"
msgstr "Verberge Züge auf verborgenem Gleis"
-#: ../bin/doption.c:143
+#: ../bin/doption.c:100
msgid "Constrain Drawing Area to Room boundaries"
msgstr "Den Zeichenbereich auf die Raumgröße beschränken"
-#: ../bin/doption.c:150
+#: ../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:105
msgid "Color Track"
msgstr "Farbiges Gleis"
-#: ../bin/doption.c:151
+#: ../bin/doption.c:106
msgid "Color Draw"
msgstr "Farbige Objekte"
-#: ../bin/doption.c:152
+#: ../bin/doption.c:107
msgid "Draw Tunnel"
msgstr "Zeichne Tunnel"
-#: ../bin/doption.c:153
+#: ../bin/doption.c:108
msgid "Draw EndPts"
msgstr "Zeichne Endpunkte"
-#: ../bin/doption.c:154
+#: ../bin/doption.c:109
msgid "Draw Unconnected EndPts"
msgstr "Zeichne offene Endpunkte"
-#: ../bin/doption.c:155
+#: ../bin/doption.c:110
msgid "Draw Ties"
msgstr "Schwellen zeichnen"
-#: ../bin/doption.c:156
+#: ../bin/doption.c:111
msgid "Draw Centers"
msgstr "Mittelpunkt zeichnen"
-#: ../bin/doption.c:157
+#: ../bin/doption.c:112
msgid "Two Rail Scale"
msgstr "Maßstab für Gleis"
-#: ../bin/doption.c:158
+#: ../bin/doption.c:113
msgid "Map Scale"
msgstr "Kartenmaßstab"
-#: ../bin/doption.c:162
+#: ../bin/doption.c:119
msgid "Label Enable"
msgstr "Beschriftungen zeigen"
-#: ../bin/doption.c:163
+#: ../bin/doption.c:120
msgid "Label Scale"
msgstr "Maßstab der Beschriftungen"
-#: ../bin/doption.c:164
+#: ../bin/doption.c:121
msgid "Label Font Size"
-msgstr "Grösse für Beschriftungen"
+msgstr "Größe für Beschriftungen"
-#: ../bin/doption.c:165
+#: ../bin/doption.c:122
msgid "Hot Bar Labels"
-msgstr "Teilekatalog Beschriftungen"
+msgstr "Schnellauswahl Beschriftungen"
-#: ../bin/doption.c:166
+#: ../bin/doption.c:123
msgid "Layout Labels"
msgstr "Anlagenbeschriftungen"
-#: ../bin/doption.c:167
+#: ../bin/doption.c:124
msgid "List Labels"
msgstr "Listenüberschriften"
-#: ../bin/doption.c:170
+#: ../bin/doption.c:127
msgid "Car Labels"
msgstr "Wagenbeschriftungen"
-#: ../bin/doption.c:171
+#: ../bin/doption.c:128
msgid "Train Update Delay"
msgstr "Aktualisierungsintervalle"
-#: ../bin/doption.c:199
+#: ../bin/doption.c:171
+msgid "Turning off AutoSave"
+msgstr "Automatisches Sichern aus"
+
+#: ../bin/doption.c:182
+msgid "Turning on CheckPointing"
+msgstr "Sicherungskopien aktivieren"
+
+#: ../bin/doption.c:196
msgid "Display Options"
msgstr "Anzeigeoptionen"
-#: ../bin/doption.c:200
+#: ../bin/doption.c:198
msgid "Proto"
msgstr "Vorbild"
-#: ../bin/doption.c:201
+#: ../bin/doption.c:200
msgid "Proto/Manuf"
msgstr "Vorbild/Hersteller"
-#: ../bin/doption.c:202
+#: ../bin/doption.c:203
msgid "Proto/Manuf/Part Number"
msgstr "Vorbild/Hersteller/Bestellnr."
-#: ../bin/doption.c:203
+#: ../bin/doption.c:205
msgid "Proto/Manuf/Partno/Item"
msgstr "Vorbild/Hersteller/Bestellnr. /lfd. Nr."
-#: ../bin/doption.c:204
+#: ../bin/doption.c:206
msgid "Manuf/Proto"
msgstr "Hersteller/Vorbild"
-#: ../bin/doption.c:205
+#: ../bin/doption.c:209
msgid "Manuf/Proto/Part Number"
msgstr "Hersteller/Vorbild/Bestellnr."
-#: ../bin/doption.c:206
+#: ../bin/doption.c:211
msgid "Manuf/Proto/Partno/Item"
msgstr "Hersteller/Vorbild/Bestellnr./lfd. Nr."
-#: ../bin/doption.c:236
+#: ../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:236
+#: ../bin/doption.c:241
msgid "Add to selection, +Ctrl Single item selected"
msgstr "Auswahl erweitern, +Strg Nur aktuelles Element"
-#: ../bin/doption.c:237
+#: ../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:242
+#: ../bin/doption.c:247
msgid "Normal: Command List, Shift: Command Options"
msgstr "Normal: Befehlsliste, Umschalt: Befehlsoptionen"
-#: ../bin/doption.c:242
+#: ../bin/doption.c:247
msgid "Normal: Command Options, Shift: Command List"
msgstr "Normal: Befehlsoptionen, Umschalt: Befehlsliste"
-#: ../bin/doption.c:245
+#: ../bin/doption.c:250
msgid "Default Command"
msgstr "Standardbefehl"
-#: ../bin/doption.c:247
+#: ../bin/doption.c:252
msgid "Hide Selection Window"
msgstr "Verberge Auswahlfenster"
-#: ../bin/doption.c:249
+#: ../bin/doption.c:254
msgid "Right Click"
-msgstr "Rechte Mausetaste"
+msgstr "Rechte Maustaste"
-#: ../bin/doption.c:250
+#: ../bin/doption.c:255
msgid "Select Mode"
msgstr "Auswahlmodus"
-#: ../bin/doption.c:275
+#: ../bin/doption.c:281
msgid "Command Options"
msgstr "Befehlsoptionen"
-#: ../bin/doption.c:298
+#: ../bin/doption.c:305
+msgid "16 px"
+msgstr "16 px"
+
+#: ../bin/doption.c:305
+msgid "24 px"
+msgstr "24 px"
+
+#: ../bin/doption.c:305
+msgid "32 px"
+msgstr "32 px"
+
+#: ../bin/doption.c:306
msgid "English"
msgstr "Englisch"
-#: ../bin/doption.c:298
+#: ../bin/doption.c:306
msgid "Metric"
msgstr "Metrisch"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:307
msgid "Polar"
msgstr "Polar"
-#: ../bin/doption.c:299
+#: ../bin/doption.c:307
msgid "Cartesian"
msgstr "Kartesisch"
-#: ../bin/doption.c:300
+#: ../bin/doption.c:308
msgid "Balloon Help"
msgstr "Sprechblasen"
-#: ../bin/doption.c:301
+#: ../bin/doption.c:309
msgid "Show FlexTrack in HotBar"
msgstr "Flexgleis in der Auswahlleiste anzeigen"
-#: ../bin/doption.c:302
+#: ../bin/doption.c:310
msgid "Load Last Layout"
msgstr "Letzten Gleisplan laden"
-#: ../bin/doption.c:302
+#: ../bin/doption.c:310
msgid "Start New Layout"
msgstr "Neuen Gleisplan beginnen"
-#: ../bin/doption.c:305
+#: ../bin/doption.c:313
+msgid "Icon Size"
+msgstr "Icon Größe"
+
+#: ../bin/doption.c:314
msgid "Angles"
msgstr "Winkel"
-#: ../bin/doption.c:306
+#: ../bin/doption.c:316
msgid "Units"
msgstr "Einheiten"
-#: ../bin/doption.c:308
+#: ../bin/doption.c:318
msgid "Length Format"
msgstr "Längenformat"
-#: ../bin/doption.c:309
+#: ../bin/doption.c:319
msgid "Min Track Length"
msgstr "Mindestgleislänge"
-#: ../bin/doption.c:310
+#: ../bin/doption.c:320
msgid "Connection Distance"
msgstr "Verbindungs Abstand"
-#: ../bin/doption.c:311
+#: ../bin/doption.c:321
msgid "Connection Angle"
msgstr "Verbindungs Winkel"
-#: ../bin/doption.c:312
+#: ../bin/doption.c:322
msgid "Turntable Angle"
msgstr "Drehscheibenwinkel"
-#: ../bin/doption.c:313
+#: ../bin/doption.c:323
msgid "Max Coupling Speed"
msgstr "Max. Ankuppelgeschwindigkeit"
-#: ../bin/doption.c:316
+#: ../bin/doption.c:326
msgid "Drag Distance"
msgstr "Zeichne Entfernung"
-#: ../bin/doption.c:317
+#: ../bin/doption.c:327
msgid "Drag Timeout"
msgstr "Abriss Zeitverzögerung"
-#: ../bin/doption.c:318
+#: ../bin/doption.c:328
msgid "Min Grid Spacing"
msgstr "Mindestrasterabstand"
-#: ../bin/doption.c:320
+#: ../bin/doption.c:330
msgid "Check Point Frequency"
msgstr "Häufigkeit der Sicherungskopie"
-#: ../bin/doption.c:322
+#: ../bin/doption.c:332
msgid "Autosave Checkpoint Frequency"
msgstr "Häufigkeit der automatischen Sicherung"
-#: ../bin/doption.c:323
+#: ../bin/doption.c:333
msgid "On Program Startup"
msgstr "Beim Programmstart"
-#: ../bin/doption.c:333 ../bin/doption.c:337 ../bin/doption.c:354
+#: ../bin/doption.c:343 ../bin/doption.c:347 ../bin/doption.c:365
msgid "999.999"
msgstr "999.999"
-#: ../bin/doption.c:334
+#: ../bin/doption.c:344
msgid "999.999999"
msgstr "999.999999"
-#: ../bin/doption.c:335
+#: ../bin/doption.c:345
msgid "999.99999"
msgstr "999,999999"
-#: ../bin/doption.c:336
+#: ../bin/doption.c:346
msgid "999.9999"
-msgstr "999,999"
+msgstr "999,9999"
-#: ../bin/doption.c:338 ../bin/doption.c:355
+#: ../bin/doption.c:348 ../bin/doption.c:366
msgid "999.99"
msgstr "999.99"
-#: ../bin/doption.c:339 ../bin/doption.c:356
+#: ../bin/doption.c:349 ../bin/doption.c:367
msgid "999.9"
msgstr "999.9"
-#: ../bin/doption.c:340
+#: ../bin/doption.c:350
msgid "999 7/8"
msgstr "999 7/8"
-#: ../bin/doption.c:341
+#: ../bin/doption.c:351
msgid "999 63/64"
msgstr "999 63/64"
-#: ../bin/doption.c:342
+#: ../bin/doption.c:352
msgid "999' 11.999\""
msgstr "999' 11.999\""
-#: ../bin/doption.c:343
+#: ../bin/doption.c:353
msgid "999' 11.99\""
msgstr "999' 11.99\""
-#: ../bin/doption.c:344
+#: ../bin/doption.c:354
msgid "999' 11.9\""
msgstr "999' 11.9\""
-#: ../bin/doption.c:345
+#: ../bin/doption.c:355
msgid "999' 11 7/8\""
msgstr "999' 11 7/8\""
-#: ../bin/doption.c:346
+#: ../bin/doption.c:356
msgid "999' 11 63/64\""
msgstr "999' 11 63/64\""
-#: ../bin/doption.c:347
+#: ../bin/doption.c:357
msgid "999ft 11.999in"
msgstr "999ft 11.999in"
-#: ../bin/doption.c:348
+#: ../bin/doption.c:358
msgid "999ft 11.99in"
msgstr "999ft 11.99in"
-#: ../bin/doption.c:349
+#: ../bin/doption.c:359
msgid "999ft 11.9in"
msgstr "999ft 11.9in"
-#: ../bin/doption.c:350
+#: ../bin/doption.c:360
msgid "999ft 11 7/8in"
msgstr "999ft 11 7/8in"
-#: ../bin/doption.c:351
+#: ../bin/doption.c:361
msgid "999ft 11 63/64in"
msgstr "999ft 11 63/64in"
-#: ../bin/doption.c:357
+#: ../bin/doption.c:368
msgid "999.999mm"
msgstr "999.999mm"
-#: ../bin/doption.c:358
+#: ../bin/doption.c:369
msgid "999.99mm"
msgstr "999.99mm"
-#: ../bin/doption.c:359
+#: ../bin/doption.c:370
msgid "999.9mm"
msgstr "999.9mm"
-#: ../bin/doption.c:360
+#: ../bin/doption.c:371
msgid "999.999cm"
msgstr "999.999cm"
-#: ../bin/doption.c:361
+#: ../bin/doption.c:372
msgid "999.99cm"
msgstr "999.99cm"
-#: ../bin/doption.c:362
+#: ../bin/doption.c:373
msgid "999.9cm"
msgstr "999.9cm"
-#: ../bin/doption.c:363
+#: ../bin/doption.c:374
msgid "999.999m"
msgstr "999.999m"
-#: ../bin/doption.c:364
+#: ../bin/doption.c:375
msgid "999.99m"
msgstr "999.99m"
-#: ../bin/doption.c:365
+#: ../bin/doption.c:376
msgid "999.9m"
msgstr "999.9m"
-#: ../bin/doption.c:492
+#: ../bin/doption.c:511
msgid "Preferences"
msgstr "Einstellungen"
-#: ../bin/doption.c:531
+#: ../bin/doption.c:555
msgid "Marker"
msgstr "Markierung"
-#: ../bin/doption.c:532
+#: ../bin/doption.c:556
msgid "Border"
msgstr "Rahmen"
-#: ../bin/doption.c:533
+#: ../bin/doption.c:557
msgid "Primary Axis"
msgstr "Hauptachse"
-#: ../bin/doption.c:534
+#: ../bin/doption.c:558
msgid "Secondary Axis"
msgstr "Nebenachse"
-#: ../bin/doption.c:535
+#: ../bin/doption.c:559
msgid "Normal Track"
msgstr "Normales Gleis"
-#: ../bin/doption.c:536
+#: ../bin/doption.c:560
msgid "Selected Track"
msgstr "Ausgewähltes Gleis"
-#: ../bin/doption.c:537
+#: ../bin/doption.c:561
msgid "Profile Path"
msgstr "Höhenlinie"
-#: ../bin/doption.c:538
+#: ../bin/doption.c:562
msgid "Exception Track"
msgstr "Ausnahmegleis"
-#: ../bin/doption.c:539
+#: ../bin/doption.c:563
msgid "Track Ties"
msgstr "Gleisschwellen"
-#: ../bin/dpricels.c:45
+#: ../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"
-#: ../bin/dpricels.c:59
+#: ../bin/dpricels.c:56
msgid "Flex Track"
msgstr "Flexgleis"
-#: ../bin/dpricels.c:60
+#: ../bin/dpricels.c:57
msgid "costs"
msgstr "kostet"
-#: ../bin/dpricels.c:154
+#: ../bin/dpricels.c:166
msgid "Price List"
msgstr "Preisliste"
-#: ../bin/dprmfile.c:73 ../bin/paramfilesearch_ui.c:60
+#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:50
msgid "Show File Names"
msgstr "Dateinamen anzeigen"
-#: ../bin/dprmfile.c:82 ../bin/paramfilesearch_ui.c:76
+#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:77
msgid "Select all"
msgstr "Alles auswählen"
-#: ../bin/dprmfile.c:84
+#: ../bin/dprmfile.c:77
msgid "Favorite"
msgstr "Favorit"
-#: ../bin/dprmfile.c:87
-msgid "Search Library"
-msgstr "Bibliothek durchsuchen"
+#: ../bin/dprmfile.c:80
+msgid "Library..."
+msgstr "Bibliothek..."
-#: ../bin/dprmfile.c:88 ../bin/layout.c:471
-msgid "Browse ..."
+#: ../bin/dprmfile.c:81
+msgid "Browse..."
msgstr "Durchsuchen..."
-#: ../bin/dprmfile.c:331
+#: ../bin/dprmfile.c:328
#, c-format
msgid "%d parameter files reloaded."
msgstr "%d Parameterdateien neu geladen."
-#: ../bin/dprmfile.c:333
+#: ../bin/dprmfile.c:330
msgid "One parameter file reloaded."
msgstr "Eine Parameterdatei neu geladen."
-#: ../bin/dprmfile.c:434
+#: ../bin/dprmfile.c:431
msgid "Parameter Files"
msgstr "Parameterdateien"
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
+#: ../bin/dprmfile.c:434
msgid "Load Parameters"
msgstr "Lade Parameter"
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
+#: ../bin/dprmfile.c:434
msgid "Parameter files (*.xtp)|*.xtp"
msgstr "Parameterdateien (*.xtp)|*.xtp"
-#: ../bin/draw.c:2140
+#: ../bin/draw.c:2353
msgid "Macro Zoom Mode"
msgstr "Makro-Zoom-Modus"
-#: ../bin/draw.c:2147
+#: ../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:2151
+#: ../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:2155
+#: ../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:2195
+#: ../bin/draw.c:2451
msgid "At Maximum Zoom Out"
msgstr "Maximal rausgezoomt"
-#: ../bin/draw.c:2200
+#: ../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:2204
+#: ../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:2911
+#: ../bin/draw.c:3282
msgid "Map"
msgstr "Karte"
-#: ../bin/draw.c:2959
+#: ../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"
msgstr ""
-"Ziehen mit der linken Maustaste um den Ausschnitt zu verschieben, 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"
+"Ziehen mit der linken Maustaste um den Ausschnitt zu verschieben, "
+"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:2966
+#: ../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:2973
+#: ../bin/draw.c:3338
msgid "Zoom Mode - drag area to zoom"
msgstr "Zoom Modus -auf den ausgewählten Bereich zoomen"
-#: ../bin/draw.c:2999
+#: ../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:3001
+#: ../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:3040
+#: ../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"
@@ -5010,153 +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:3114
+#: ../bin/draw.c:3487
msgid "Pan/Zoom"
msgstr "Verschieben/Zoomen"
-#: ../bin/draw.c:3125
+#: ../bin/draw.c:3503
msgid "Zoom to 1:1 - '1'"
msgstr "Auf 1:1 vergrößern - '1'."
-#: ../bin/draw.c:3126
+#: ../bin/draw.c:3505
msgid "Zoom to 1:2 - '2'"
msgstr "Auf 1:2 vergrößern - '2'."
-#: ../bin/draw.c:3127
+#: ../bin/draw.c:3507
msgid "Zoom to 1:3 - '3'"
msgstr "Auf 1:3 vergrößern - '3'."
-#: ../bin/draw.c:3128
+#: ../bin/draw.c:3509
msgid "Zoom to 1:4 - '4'"
msgstr "Auf 1:4 vergrößern - '4'."
-#: ../bin/draw.c:3129
+#: ../bin/draw.c:3511
msgid "Zoom to 1:5 - '5'"
msgstr "Auf 1:5 vergrößern - '5'."
-#: ../bin/draw.c:3130
+#: ../bin/draw.c:3513
msgid "Zoom to 1:6 - '6'"
msgstr "Auf 1:6 vergrößern - '6'."
-#: ../bin/draw.c:3131
+#: ../bin/draw.c:3515
msgid "Zoom to 1:7 - '7'"
msgstr "Auf 1:7 vergrößern - '7'."
-#: ../bin/draw.c:3132
+#: ../bin/draw.c:3517
msgid "Zoom to 1:8 - '8'"
msgstr "Auf 1:8 vergrößern - '8'."
-#: ../bin/draw.c:3133
+#: ../bin/draw.c:3519
msgid "Zoom to 1:9 - '9'"
msgstr "Auf 1:9 vergrößern - '9'."
-#: ../bin/draw.c:3137
+#: ../bin/draw.c:3525
msgid "Pan center here - 'c'"
msgstr "Hier zentrieren - 'c'."
-#: ../bin/drawgeom.c:76 ../bin/drawgeom.c:91
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
msgid "Create Lines"
msgstr "Erstelle Linien"
-#: ../bin/drawgeom.c:291
-msgid "+Shift to lock to nearby objects"
-msgstr "+Umschalt um auf ein naheliegendes Objekt zu fangen"
-
-#: ../bin/drawgeom.c:293
-msgid "+Shift to not lock to nearby objects"
-msgstr "+Umschalt um nicht auf ein naheliegendes Objekt zu fangen"
-
-#: ../bin/drawgeom.c:393
-msgid "Drag to next point, +Shift to lock to object, +Ctrl to lock to 90deg"
+#: ../bin/drawgeom.c:443
+msgid "Drag next point, +Alt reverse Magnetic Snap or +Ctrl lock to 90 deg"
msgstr ""
-"Ziehen Sie zum nächsten Punkt, +Umschalten um aufein Objekt zu fangen, +Strg "
-"um auf 90 Grad zu sperren"
+"Ziehe zum nächsten Punkt, +Alt um den Schnapper umzuschalten oder +Strg um "
+"auf 90° zu begrenzen"
-#: ../bin/drawgeom.c:403
-msgid "Drag to place next end point"
-msgstr "Ziehen um den nächsten Endpunkt zu setzen"
+#: ../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:434
+#: ../bin/drawgeom.c:487
msgid "Drag to set radius"
msgstr "Radius durch Ziehen festlegen"
-#: ../bin/drawgeom.c:447
+#: ../bin/drawgeom.c:501
msgid "Drag set box size"
msgstr "Ziehen um die Größe des Rechteck zu setzen"
-#: ../bin/drawgeom.c:488
-msgid "+Shift - lock to close object, +Ctrl - lock to 90 deg"
-msgstr ""
-"+Umschalt - Fangen auf ein naheliegendes Objekt, +Strg - Fangen auf 90 Grad"
+#: ../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:536 ../bin/drawgeom.c:592
+#: ../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:613
+#: ../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:635
+#: ../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:659
+#: ../bin/drawgeom.c:761 ../bin/drawgeom.c:769
#, c-format
msgid "Radius = %s"
msgstr "Radius = %s"
-#: ../bin/drawgeom.c:669
+#: ../bin/drawgeom.c:780
#, c-format
msgid "Width = %s, Height = %s"
msgstr "Breite = %s, Höhe = %s"
-#: ../bin/drawgeom.c:1132
+#: ../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: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:1387
+#: ../bin/drawgeom.c:1567
#, c-format
msgid "Length = %s, Last angle = %0.2f"
msgstr "Länge = %s, letzter Winkel = %0.2f"
-#: ../bin/drawgeom.c:1541
+#: ../bin/drawgeom.c:1736
msgid "Point Deleted"
msgstr "Punkt gelöscht"
-#: ../bin/drawgeom.c:1937
+#: ../bin/drawgeom.c:2194
msgid "Not close to end of line"
msgstr "Nicht nah am Ende der Linie"
-#: ../bin/drawgeom.c:1990
+#: ../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:2038 ../bin/drawgeom.c:2260
+#: ../bin/drawgeom.c:2303 ../bin/drawgeom.c:2550
msgid "Drag to Move Corner Point"
msgstr "Ziehen um den Eckpunkt zu verschieben"
-#: ../bin/drawgeom.c:2045
+#: ../bin/drawgeom.c:2311
msgid "Drag to Move Edge "
msgstr "Ziehen um die Kante zu verschieben "
-#: ../bin/drawgeom.c:2107
+#: ../bin/drawgeom.c:2383
#, c-format
msgid "Length = %0.3f Angle = %0.3f"
msgstr "Länge = %0.3f Winkel = %0.3f"
-#: ../bin/drawgeom.c:2255
+#: ../bin/drawgeom.c:2544
msgid "Drag to Move Edge"
msgstr "Ziehen um die Kante zu verschieben"
-#: ../bin/dxfoutput.c:232
+#: ../bin/dxfoutput.c:244
msgid "Export to DXF"
msgstr "Export nach DXF"
-#: ../bin/fileio.c:241
+#: ../bin/fileio.c:221
msgid ""
"\n"
"Do you want to continue?"
@@ -5164,95 +5391,107 @@ msgstr ""
"\n"
"Wollen Sie fortsetzen?"
-#: ../bin/fileio.c:608
+#: ../bin/fileio.c:593
#, c-format
msgid "putTitle: title too long: %s"
msgstr "putTitle: Titel ist zu lang: %s"
-#: ../bin/fileio.c:638
+#: ../bin/fileio.c:625
msgid "Unnamed Trackplan"
msgstr "Unbenannter Gleisplan"
-#: ../bin/fileio.c:639
+#: ../bin/fileio.c:626
msgid " (R/O)"
msgstr " (Nur lesen)"
-#: ../bin/fileio.c:659 ../bin/fileio.c:1278
-msgid "Check Pointing"
-msgstr "Schreibe Sicherungskopie"
-
-#: ../bin/fileio.c:789
+#: ../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:1026
+#: ../bin/fileio.c:833 ../bin/fileio.c:1020
msgid "Track"
msgstr "Gleis"
-#: ../bin/fileio.c:1212
+#: ../bin/fileio.c:834
+msgid "Not Found"
+msgstr "Nicht gefunden"
+
+#: ../bin/fileio.c:1263
+msgid "AutoSave Tracks As"
+msgstr "AutoSichern des Gleisplans als"
+
+#: ../bin/fileio.c:1278
msgid "Save Tracks"
msgstr "Gleise speichern"
-#: ../bin/fileio.c:1228
+#: ../bin/fileio.c:1295
msgid "Save Tracks As"
msgstr "Gleise speichern unter"
-#: ../bin/fileio.c:1239
+#: ../bin/fileio.c:1307
msgid "Open Tracks"
msgstr "Gleise einlesen"
-#: ../bin/fileio.c:1253
+#: ../bin/fileio.c:1321
msgid "Example Tracks"
msgstr "Beispielgleise"
-#: ../bin/fileio.c:1461
+#: ../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:1466 ../bin/fileio.c:1486
+#: ../bin/fileio.c:1578 ../bin/fileio.c:1599
msgid "Import Tracks"
msgstr "Gleise importieren"
-#: ../bin/fileio.c:1548
+#: ../bin/fileio.c:1599
+msgid "Import Module"
+msgstr "Modul importieren"
+
+#: ../bin/fileio.c:1657
msgid "Export Tracks"
msgstr "Gleise exportieren"
-#: ../bin/fileio.c:1567
+#: ../bin/fileio.c:1678
msgid "Clipboard"
msgstr "Zwischenablage"
-#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:42
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
msgid "Position X"
msgstr "Position X"
-#: ../bin/filenoteui.c:64 ../bin/linknoteui.c:52 ../bin/textnoteui.c:44
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
msgid "Position Y"
msgstr "Position Y"
-#: ../bin/filenoteui.c:68 ../bin/linknoteui.c:56
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
msgid "Title"
msgstr "Titel"
-#: ../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
msgid "Document"
msgstr "Dokument"
-#: ../bin/filenoteui.c:72
+#: ../bin/filenoteui.c:70
msgid "Select..."
msgstr "Auswählen..."
-#: ../bin/filenoteui.c:74 ../bin/linknoteui.c:60
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
msgid "Open..."
msgstr "&Öffnen..."
-#: ../bin/filenoteui.c:136
+#: ../bin/filenoteui.c:134
msgid "Add Document"
msgstr "Dokument hinzufügen"
-#: ../bin/filenoteui.c:158
+#: ../bin/filenoteui.c:157
msgid "The file doesn't exist or cannot be read!"
msgstr "Die Datei existiert nicht oder kann nicht gelesen werden!"
@@ -5261,1004 +5500,1052 @@ msgstr "Die Datei existiert nicht oder kann nicht gelesen werden!"
msgid "Document(%d) Layer=%d %-.80s [%s]"
msgstr "Dokument(%d) Ebene=%d %-.80s [%s]"
-#: ../bin/filenoteui.c:309
-msgid "Update document"
+#: ../bin/filenoteui.c:318
+msgid "Update Document"
msgstr "Dokument aktualisieren"
-#: ../bin/filenoteui.c:323
+#: ../bin/filenoteui.c:330
msgid "Describe the file"
msgstr "Beschreibung zu der Datei"
-#: ../bin/filenoteui.c:329
-msgid "Attach document"
+#: ../bin/filenoteui.c:338
+msgid "Attach Document"
msgstr "Dokument anhängen"
-#: ../bin/i18n.c:66
+#: ../bin/i18n.c:57
#, c-format
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:373
+#: ../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:436
+#: ../bin/layout.c:631
msgid "Load Background"
msgstr "Hintergrund laden"
-#: ../bin/layout.c:458
+#: ../bin/layout.c:658
msgid "Room Width"
msgstr "Zimmerbreite"
-#: ../bin/layout.c:459
+#: ../bin/layout.c:659
msgid " Height"
msgstr " -länge"
-#: ../bin/layout.c:460
+#: ../bin/layout.c:660
msgid "Layout Title"
msgstr "Gleisplantitel"
-#: ../bin/layout.c:461
+#: ../bin/layout.c:661
msgid "Subtitle"
msgstr "Untertitel"
-#: ../bin/layout.c:465
-msgid " Gauge"
-msgstr " Spurweite"
-
-#: ../bin/layout.c:467
-msgid "Min Track Radius"
-msgstr "Mindestgleisradius"
-
-#: ../bin/layout.c:468
-msgid " Max Track Grade (%)"
-msgstr " Maximale Gleissteigung (%)"
-
-#: ../bin/layout.c:470
+#: ../bin/layout.c:670
msgid "Background File Path"
-msgstr "Hintergrunddatei"
+msgstr "Hintergrundbild"
-#: ../bin/layout.c:474
+#: ../bin/layout.c:671
+msgid "Browse ..."
+msgstr "Durchsuchen..."
+
+#: ../bin/layout.c:674
msgid "Background PosX,Y"
-msgstr "Hintergrund Posistion X,Y"
+msgstr "Hintergrund Position X,Y"
-#: ../bin/layout.c:478
+#: ../bin/layout.c:678
msgid "Background Size"
msgstr "Größe des Hintergrunds"
-#: ../bin/layout.c:480
+#: ../bin/layout.c:680
msgid "Background Screen %"
msgstr "Hintergrund-Transparenz %"
-#: ../bin/layout.c:482
+#: ../bin/layout.c:682
msgid "Background Angle"
msgstr "Winkel des Hintergrund"
-#: ../bin/layout.c:560
+#: ../bin/layout.c:683
+msgid "Named Settings File"
+msgstr "Benannte Einstellungsdatei"
+
+#: ../bin/layout.c:684
+msgid "Write"
+msgstr "Schreiben"
+
+#: ../bin/layout.c:685
+msgid "Read"
+msgstr "Lesen"
+
+#: ../bin/layout.c:819
msgid "Layout Options"
msgstr "Gleisplanoptionen"
-#: ../bin/linknoteui.c:58
-msgid "URL"
-msgstr "URL"
+#: ../bin/layout.c:1053
+msgid "Read Settings"
+msgstr "Einstellungen lesen"
-#: ../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 ""
-"Die eingegebene URL ist zu lang. Die maximal zulässige Länge ist %d. Bitte "
-"bearbeiten Sie den eingegebenen Wert."
+#: ../bin/layout.c:1054 ../bin/layout.c:1088
+msgid "Settings File (*.xset)|*.xset"
+msgstr "Einstellungsdatei (*.xset)|*.xset"
-#: ../bin/linknoteui.c:110
-msgid "Re-edit"
-msgstr "Nochmals bearbeiten"
+#: ../bin/layout.c:1087
+msgid "Write Settings"
+msgstr "Einstellungen speichern"
-#: ../bin/linknoteui.c:241
-msgid "Update link"
+#: ../bin/linknoteui.c:56
+msgid "URL"
+msgstr "URL"
+
+#: ../bin/linknoteui.c:230
+#, fuzzy
+msgid "Update Weblink"
msgstr "Weblink aktualisieren"
-#: ../bin/linknoteui.c:259
-msgid "Create link"
+#: ../bin/linknoteui.c:248
+#, fuzzy
+msgid "Create Weblink"
msgstr "Weblink erstellen"
-#: ../bin/macro.c:95
+#: ../bin/macro.c:68
msgid "Message"
msgstr "Mitteilung"
-#: ../bin/macro.c:179
+#: ../bin/macro.c:167
msgid "Recording"
msgstr "Aufzeichnen"
-#: ../bin/macro.c:214
+#: ../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:278
+#: ../bin/macro.c:272
msgid "Record"
msgstr "Aufzeichnen"
-#: ../bin/macro.c:676
+#: ../bin/macro.c:687
msgid "Step"
msgstr "Schritt"
-#: ../bin/macro.c:679 ../bin/macro.c:1544
+#: ../bin/macro.c:690 ../bin/macro.c:1561
msgid "Next"
msgstr "Nächster"
-#: ../bin/macro.c:682 ../bin/misc.c:703 ../bin/track.c:1116
+#: ../bin/macro.c:693 ../bin/misc.c:697 ../bin/track.c:1107
msgid "Quit"
msgstr "Verlassen"
-#: ../bin/macro.c:685 ../../../../build/work/app/bin/bllnhlp.c:540
+#: ../bin/macro.c:696 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
msgid "Speed"
msgstr "Geschwindigkeit"
-#: ../bin/macro.c:832 ../bin/macro.c:879
+#: ../bin/macro.c:856 ../bin/track.c:1347
msgid "Regression"
msgstr "Regression"
-#: ../bin/macro.c:1045 ../bin/macro.c:1403
+#: ../bin/macro.c:1011 ../bin/macro.c:1411
msgid "Demo"
msgstr "Demo"
-#: ../bin/macro.c:1223
+#: ../bin/macro.c:1220
#, c-format
msgid "Elapsed time %lu\n"
msgstr "Abgelaufene Zeit %lu\n"
-#: ../bin/macro.c:1324
+#: ../bin/macro.c:1330
msgid "Playback"
msgstr "Wiedergabe"
-#: ../bin/macro.c:1406
+#: ../bin/macro.c:1415
msgid "Slowest"
msgstr "Langsamste"
-#: ../bin/macro.c:1407
+#: ../bin/macro.c:1416
msgid "Slow"
msgstr "Langsame"
-#: ../bin/macro.c:1409
+#: ../bin/macro.c:1418
msgid "Fast"
msgstr "Schnelle"
-#: ../bin/macro.c:1410
+#: ../bin/macro.c:1419
msgid "Faster"
msgstr "Schnellere"
-#: ../bin/macro.c:1411
+#: ../bin/macro.c:1420
msgid "Fastest"
msgstr "Schnellste"
-#: ../bin/macro.c:1529
+#: ../bin/macro.c:1543
msgid "Can not find PARAMETER playback proc"
msgstr "Kann die PARAMETER Wiedergabeprozedur nicht finden"
-#: ../bin/misc.c:173
-msgid "No Messages"
-msgstr "Keine Nachrichten"
-
-#: ../bin/misc.c:435 ../bin/misc.c:438
-msgid "ABORT"
-msgstr "ABBRUCH"
-
-#: ../bin/misc.c:437
-msgid ""
-"\n"
-"Do you want to save your layout?"
-msgstr ""
-"\n"
-"Wollen Sie Ihren Gleisplan speichern?"
-
-#: ../bin/misc.c:484
-#, c-format
-msgid "No help for %s"
-msgstr "Hilfe für %s nicht gefunden"
-
-#: ../bin/misc.c:596
-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:598 ../bin/misc.c:2295
-msgid "&Save"
-msgstr "&Speichern"
-
-#: ../bin/misc.c:598 ../bin/misc.c:633
-msgid "&Cancel"
-msgstr "&Abbruch"
-
-#: ../bin/misc.c:598
-msgid "&Don't Save"
-msgstr "&Nicht speichern"
-
-#: ../bin/misc.c:622
-msgid "examples"
-msgstr "Beispiele"
-
-#: ../bin/misc.c:631
-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:633
-msgid "&Revert"
-msgstr "Zurücksetzen"
-
-#: ../bin/misc.c:855
-msgid "XTrackCAD Font"
-msgstr "XTrackCAD Font"
-
-#: ../bin/misc.c:916
-#, c-format
-msgid "No balloon help for %s\n"
-msgstr "Kein Tooltip für %s vorhanden\n"
-
-#: ../bin/misc.c:918 ../../../../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 "Keine Hilfe vorhanden"
-
-#: ../bin/misc.c:1026
-msgid "File AutoSaved"
-msgstr "Automatisch gesichert"
-
-#: ../bin/misc.c:1237 ../bin/misc.c:1244 ../bin/misc.c:1315
-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:1810
-msgid "Sticky Commands"
-msgstr "Wiederholte Befehle"
-
-#: ../bin/misc.c:1823
-msgid "File Buttons"
-msgstr "Dateischaltflächen"
-
-#: ../bin/misc.c:1823
-msgid "Import/Export Buttons"
-msgstr "Import/Export Aktionen"
-
-#: ../bin/misc.c:1823
-msgid "Zoom Buttons"
-msgstr "Lupenknöpfe"
-
-#: ../bin/misc.c:1824
-msgid "Undo Buttons"
-msgstr "Rückgängig/Wiederholen"
-
-#: ../bin/misc.c:1824
-msgid "Easement Button"
-msgstr "Übergangsbogen"
-
-#: ../bin/misc.c:1824
-msgid "SnapGrid Buttons"
-msgstr "Fangraster"
-
-#: ../bin/misc.c:1825
-msgid "Create Track Buttons"
-msgstr "Erstelle Gleise"
-
-#: ../bin/misc.c:1825
-msgid "Layout Control Elements"
-msgstr "Elemente zur Anlagensteuerung"
-
-#: ../bin/misc.c:1826
-msgid "Modify Track Buttons"
-msgstr "Verändere Gleise"
-
-#: ../bin/misc.c:1826
-msgid "Properties/Select"
-msgstr "Eigenschaften/Auswählen"
-
-#: ../bin/misc.c:1827
-msgid "Track Group Buttons"
-msgstr "Objekt Werkzeuge"
-
-#: ../bin/misc.c:1827
-msgid "Train Group Buttons"
-msgstr "Zugbetrieb"
-
-#: ../bin/misc.c:1828
-msgid "Create Misc Buttons"
-msgstr "Zeichnen/Schrift Werkzeuge"
-
-#: ../bin/misc.c:1828
-msgid "Ruler Button"
-msgstr "Linealschaltfläche"
-
-#: ../bin/misc.c:1828
-msgid "Layer Buttons"
-msgstr "Ebenenknöpfe"
-
-#: ../bin/misc.c:1829
-msgid "Hot Bar"
-msgstr "Teilekatalog"
-
-#: ../bin/misc.c:1898 ../../../../build/work/app/bin/bllnhlp.c:80
+#: ../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:1916
+#: ../bin/menu.c:181
msgid "Angle:"
msgstr "Winkel:"
-#: ../bin/misc.c:1923
+#: ../bin/menu.c:186
+msgid "Indexes:"
+msgstr "Kennziffern:"
+
+#: ../bin/menu.c:193
msgid "Move X:"
msgstr "Verschieben X:"
-#: ../bin/misc.c:1924
+#: ../bin/menu.c:194
msgid "Move Y:"
msgstr "Verschieben Y:"
-#: ../bin/misc.c:1971
+#: ../bin/menu.c:213
+msgid "Select Index"
+msgstr "Kennziffer auswählen"
+
+#: ../bin/menu.c:261
msgid "Enter Move ..."
msgstr "Verschiebung eingeben..."
-#: ../bin/misc.c:1977
+#: ../bin/menu.c:267
+msgid "Select Track Index ..."
+msgstr "Gleiskennziffer auswählen ..."
+
+#: ../bin/menu.c:274
msgid "180 "
msgstr "180 "
-#: ../bin/misc.c:1978
+#: ../bin/menu.c:275
msgid "90 CW"
msgstr "90 Uhrzeiger"
-#: ../bin/misc.c:1979
+#: ../bin/menu.c:276
msgid "45 CW"
msgstr "45 Uhrzeiger"
-#: ../bin/misc.c:1980
+#: ../bin/menu.c:277
msgid "30 CW"
msgstr "30 Uhrzeiger"
-#: ../bin/misc.c:1981
+#: ../bin/menu.c:278
msgid "15 CW"
msgstr "15 Uhrzeiger"
-#: ../bin/misc.c:1982
+#: ../bin/menu.c:279
msgid "15 CCW"
msgstr "15 gegen Uhr"
-#: ../bin/misc.c:1983
+#: ../bin/menu.c:280
msgid "30 CCW"
msgstr "30 gehen Uhr"
-#: ../bin/misc.c:1984
+#: ../bin/menu.c:281
msgid "45 CCW"
msgstr "45 gegen Uhr"
-#: ../bin/misc.c:1985
+#: ../bin/menu.c:282
msgid "90 CCW"
msgstr "90 gegen Uhr"
-#: ../bin/misc.c:1986
+#: ../bin/menu.c:283
msgid "Enter Angle ..."
msgstr "Winkel eingeben..."
-#: ../bin/misc.c:2017
+#: ../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/menu.c:428
msgid "Debug"
msgstr "Fehlersuche (Debug)"
-#: ../bin/misc.c:2148
+#: ../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:2149
+#: ../bin/menu.c:817
msgid "&Edit"
msgstr "&Bearbeiten"
-#: ../bin/misc.c:2150
+#: ../bin/menu.c:818
msgid "&View"
msgstr "&Ansicht"
-#: ../bin/misc.c:2151
+#: ../bin/menu.c:819
msgid "&Add"
msgstr "&Hinzufügen"
-#: ../bin/misc.c:2152
+#: ../bin/menu.c:820
msgid "&Change"
msgstr "&Ändern"
-#: ../bin/misc.c:2153
+#: ../bin/menu.c:821
msgid "&Draw"
msgstr "&Zeichnen"
-#: ../bin/misc.c:2154
+#: ../bin/menu.c:822
msgid "&Manage"
msgstr "&Verwalten"
-#: ../bin/misc.c:2155
+#: ../bin/menu.c:823
msgid "&Options"
msgstr "&Optionen"
-#: ../bin/misc.c:2156
+#: ../bin/menu.c:824
msgid "&Macro"
msgstr "&Makro"
-#: ../bin/misc.c:2157
+#: ../bin/menu.c:825
msgid "&Window"
msgstr "&Fenster"
-#: ../bin/misc.c:2158
+#: ../bin/menu.c:826
msgid "&Help"
msgstr "&Hilfe"
-#: ../bin/misc.c:2194
+#: ../bin/menu.c:862
msgid "Context Commands"
msgstr "Kontextbefehle"
-#: ../bin/misc.c:2195
+#: ../bin/menu.c:863
msgid "Shift Context Commands"
msgstr "Umsch+Kontextbefehle"
-#: ../bin/misc.c:2210 ../bin/misc.c:2397
+#: ../bin/menu.c:877 ../bin/menu.c:879
+msgid "Zoom Extents"
+msgstr "Zoom Anpassen"
+
+#: ../bin/menu.c:882 ../bin/menu.c:1117
msgid "Enable SnapGrid"
msgstr "Fangraster aktivieren"
-#: ../bin/misc.c:2212
+#: ../bin/menu.c:884
msgid "SnapGrid Show"
msgstr "Fangraster anzeigen"
-#: ../bin/misc.c:2214
+#: ../bin/menu.c:887
msgid " Enable Magnetic Snap"
msgstr " Ein/Aus Magnetischer Schnapper"
-#: ../bin/misc.c:2216 ../bin/misc.c:2418
+#: ../bin/menu.c:889 ../bin/menu.c:1139
msgid "Show/Hide Map"
msgstr "Karte anzeigen/verbergen"
-#: ../bin/misc.c:2218
-msgid "Show/Hide Background"
-msgstr "Hintergrund zeigen"
+#: ../bin/menu.c:913 ../bin/menu.c:915
+msgid "Select Track Index..."
+msgstr "Gleiskennziffer auswählen..."
-#: ../bin/misc.c:2249 ../bin/misc.c:2250
+#: ../bin/menu.c:927 ../bin/menu.c:928
msgid "Add..."
msgstr "Hinzufügen..."
-#: ../bin/misc.c:2253 ../bin/misc.c:2254
+#: ../bin/menu.c:931 ../bin/menu.c:932
msgid "More..."
msgstr "Weiter..."
-#: ../bin/misc.c:2289
+#: ../bin/menu.c:937
msgid "&New ..."
msgstr "&Neu..."
-#: ../bin/misc.c:2291
+#: ../bin/menu.c:939
msgid "&Open ..."
msgstr "&Öffnen..."
-#: ../bin/misc.c:2297
+#: ../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:2299
+#: ../bin/menu.c:947
msgid "Revert"
msgstr "Neu laden"
-#: ../bin/misc.c:2302
+#: ../bin/menu.c:960
msgid "P&rint Setup ..."
msgstr "Druckereinstellungen..."
-#: ../bin/misc.c:2307
+#: ../bin/menu.c:968
msgid "&Import"
msgstr "Import"
-#: ../bin/misc.c:2309
+#: ../bin/menu.c:970
msgid "Import &Module"
msgstr "Modul importieren"
-#: ../bin/misc.c:2311
+#: ../bin/menu.c:973
msgid "Export to &Bitmap"
msgstr "Export als Bitmap"
-#: ../bin/misc.c:2314
+#: ../bin/menu.c:976
msgid "E&xport"
msgstr "Export"
-#: ../bin/misc.c:2316
+#: ../bin/menu.c:978
msgid "Export D&XF"
msgstr "Export als DXF"
-#: ../bin/misc.c:2321
+#: ../bin/menu.c:982
+msgid "Export S&VG"
+msgstr "S&VG Export"
+
+#: ../bin/menu.c:988
msgid "Parameter &Files ..."
msgstr "Parameterdateien..."
-#: ../bin/misc.c:2323
+#: ../bin/menu.c:990
msgid "No&tes ..."
msgstr "Notizen..."
-#: ../bin/misc.c:2330
+#: ../bin/menu.c:997
msgid "E&xit"
msgstr "Beenden"
-#: ../bin/misc.c:2336
+#: ../bin/menu.c:1034
msgid "&Undo"
msgstr "Rückgängig"
-#: ../bin/misc.c:2338
+#: ../bin/menu.c:1036
msgid "R&edo"
msgstr "Wiederholen"
-#: ../bin/misc.c:2341
+#: ../bin/menu.c:1039
msgid "Cu&t"
msgstr "Ausschneiden"
-#: ../bin/misc.c:2343
+#: ../bin/menu.c:1041
msgid "&Copy"
msgstr "Kopieren"
-#: ../bin/misc.c:2345
+#: ../bin/menu.c:1043
msgid "&Paste"
msgstr "Einfügen"
-#: ../bin/misc.c:2347
+#: ../bin/menu.c:1045
msgid "C&lone"
msgstr "K&lonen"
-#: ../bin/misc.c:2349
+#: ../bin/menu.c:1047
msgid "De&lete"
msgstr "Löschen"
-#: ../bin/misc.c:2357
+#: ../bin/menu.c:1055
msgid "Select &All"
msgstr "Alles auswählen"
-#: ../bin/misc.c:2359
+#: ../bin/menu.c:1059
+msgid "Select By Index"
+msgstr "Kennziffern auswählen"
+
+#: ../bin/menu.c:1061
msgid "&Deselect All"
msgstr "Alles abwählen"
-#: ../bin/misc.c:2360
+#: ../bin/menu.c:1063
msgid "&Invert Selection"
msgstr "Auswahl umkehren"
-#: ../bin/misc.c:2361
+#: ../bin/menu.c:1066
msgid "Select Stranded Track"
msgstr "Vereinzelte Gleise auswählen"
-#: ../bin/misc.c:2363
+#: ../bin/menu.c:1068
msgid "Tu&nnel"
msgstr "Tunnel"
-#: ../bin/misc.c:2364
+#: ../bin/menu.c:1070
msgid "B&ridge"
msgstr "B&rücke"
-#: ../bin/misc.c:2365
-msgid "Ties/NoTies"
-msgstr "Mit / ohne Schwellen"
+#: ../bin/menu.c:1072
+msgid "&Roadbed"
+msgstr "&Gleisbett"
-#: ../bin/misc.c:2366
+#: ../bin/menu.c:1076
msgid "Move to &Front"
msgstr "Nach vorne"
-#: ../bin/misc.c:2367
+#: ../bin/menu.c:1078
msgid "Move to &Back"
msgstr "Nach hinten"
-#: ../bin/misc.c:2377
+#: ../bin/menu.c:1093
msgid "Zoom &In"
msgstr "Zoom größer"
-#: ../bin/misc.c:2380
+#: ../bin/menu.c:1096
msgid "Zoom &Out"
msgstr "Zoom kleiner"
-#: ../bin/misc.c:2390
+#: ../bin/menu.c:1099
+msgid "Zoom &Extents"
+msgstr "Zoom G&esamt"
+
+#: ../bin/menu.c:1110
msgid "&Redraw"
msgstr "Neu zeichnen"
-#: ../bin/misc.c:2392
+#: ../bin/menu.c:1112
msgid "Redraw All"
msgstr "Alles neu zeichnen"
-#: ../bin/misc.c:2399
+#: ../bin/menu.c:1119
msgid "Show SnapGrid"
msgstr "Fangraster zeigen"
-#: ../bin/misc.c:2409
+#: ../bin/menu.c:1130
msgid "Enable Magnetic Snap"
msgstr "Magnetisches Fangen aktivieren"
-#: ../bin/misc.c:2424
-msgid "&Tool Bar"
-msgstr "Werkzeugleiste anpassen"
+#: ../bin/menu.c:1146
+msgid "&Toolbar Options..."
+msgstr "Konfiguration der Werkzeugleiste..."
-#: ../bin/misc.c:2457
+#: ../bin/menu.c:1180 ../bin/menu.c:1181
msgid "Control Element"
msgstr "Steuerungselement"
-#: ../bin/misc.c:2483
-msgid "&Loosen Tracks"
-msgstr "Gleise lockern"
+#: ../bin/menu.c:1213
+msgid "Change Scale"
+msgstr "Maßstab ändern"
-#: ../bin/misc.c:2495
+#: ../bin/menu.c:1229
msgid "Raise/Lower Elevations"
msgstr "Höhen auf/ab"
-#: ../bin/misc.c:2504
+#: ../bin/menu.c:1238
msgid "Recompute Elevations"
msgstr "Höhen neu berechnen"
-#: ../bin/misc.c:2509
-msgid "Change Scale"
-msgstr "Maßstab ändern"
-
-#: ../bin/misc.c:2530
+#: ../bin/menu.c:1256
msgid "L&ayout ..."
msgstr "Gleisplan..."
-#: ../bin/misc.c:2532
+#: ../bin/menu.c:1258
msgid "&Display ..."
msgstr "Anzeige..."
-#: ../bin/misc.c:2534
+#: ../bin/menu.c:1260
msgid "Co&mmand ..."
msgstr "Befehl..."
-#: ../bin/misc.c:2536
+#: ../bin/menu.c:1262
msgid "&Easements ..."
msgstr "Übergangsbögen..."
-#: ../bin/misc.c:2539
+#: ../bin/menu.c:1265
msgid "&Fonts ..."
msgstr "Schri&ftarten..."
-#: ../bin/misc.c:2541
+#: ../bin/menu.c:1267
msgid "Stic&ky ..."
msgstr "Dauerhaft..."
-#: ../bin/misc.c:2546
+#: ../bin/menu.c:1272
msgid "&Debug ..."
msgstr "&Fehlersuche..."
-#: ../bin/misc.c:2549
+#: ../bin/menu.c:1275
msgid "&Preferences ..."
msgstr "Einstellungen..."
-#: ../bin/misc.c:2551
+#: ../bin/menu.c:1277
msgid "&Colors ..."
msgstr "Farben..."
-#: ../bin/misc.c:2557
+#: ../bin/menu.c:1283
msgid "&Record ..."
msgstr "Aufzeichnen..."
-#: ../bin/misc.c:2559
+#: ../bin/menu.c:1285
msgid "&Play Back ..."
msgstr "Wiedergeben..."
-#: ../bin/misc.c:2565
+#: ../bin/menu.c:1291
msgid "Main window"
msgstr "Hauptfenster"
-#: ../bin/misc.c:2579
+#: ../bin/menu.c:1305
msgid "Recent Messages"
msgstr "Letzte Mitteilungen"
-#: ../bin/misc.c:2586
+#: ../bin/menu.c:1312
msgid "Tip of the Day..."
msgstr "Tipp des Tages..."
-#: ../bin/misc.c:2587
+#: ../bin/menu.c:1314
msgid "&Demos"
msgstr "&Demos"
-#: ../bin/misc.c:2588
+#: ../bin/menu.c:1315
msgid "Examples..."
msgstr "Beispiele..."
-#: ../bin/misc.c:2592 ../bin/smalldlg.c:222
+#: ../bin/menu.c:1319 ../bin/smalldlg.c:210
msgid "About"
msgstr "Über"
-#: ../bin/misc.c:2605
+#: ../bin/menu.c:1332
msgid "Tur&nout Designer..."
msgstr "Weichendesigner..."
-#: ../bin/misc.c:2608
+#: ../bin/menu.c:1335
msgid "Layout &Control Elements"
msgstr "Steuerungselemente"
-#: ../bin/misc.c:2610
+#: ../bin/menu.c:1337
msgid "&Group"
msgstr "&Gruppierung"
-#: ../bin/misc.c:2612
+#: ../bin/menu.c:1339
msgid "&Ungroup"
msgstr "Gruppierung aufheben"
-#: ../bin/misc.c:2616
+#: ../bin/menu.c:1343
msgid "Custom defined parts..."
msgstr "Eigene Teile..."
-#: ../bin/misc.c:2619
+#: ../bin/menu.c:1346
msgid "Update Turnouts and Structures"
msgstr "Weichen und Gebäude aktualisieren"
-#: ../bin/misc.c:2628
+#: ../bin/menu.c:1355
msgid "Layers ..."
msgstr "Ebenen..."
-#: ../bin/misc.c:2632
+#: ../bin/menu.c:1359
msgid "Parts &List ..."
msgstr "Teile&liste..."
-#: ../bin/misc.c:2635
+#: ../bin/menu.c:1362
msgid "Price List..."
msgstr "Preisliste..."
-#: ../bin/misc.c:2717
+#: ../bin/menu.c:1391 ../bin/menu.c:1392
msgid "Import/Export"
msgstr "Import/Export"
-#: ../bin/misc.c:2747
+#: ../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:2748
+#: ../bin/misc.c:993
msgid "Resume"
msgstr "Fortsetzen"
-#: ../bin/misc.c:2748
+#: ../bin/misc.c:993
msgid "Resume with New Name"
msgstr "Wiederaufnahme mit neuem Namen"
-#: ../bin/misc.c:2748
+#: ../bin/misc.c:993
msgid "Ignore Checkpoint"
msgstr "Sicherungskopie ignorieren"
-#: ../bin/misc.c:2751
+#: ../bin/misc.c:996
#, c-format
msgid "Reload Checkpoint Selected\n"
msgstr "Ausgewählte Sicherungskopie laden\n"
-#: ../bin/misc.c:2753
+#: ../bin/misc.c:998
#, c-format
msgid "Reload Checkpoint With New Name Selected\n"
msgstr "Sicherungskopie mit neuem Namen laden\n"
-#: ../bin/misc.c:2755
+#: ../bin/misc.c:1000
#, c-format
msgid "Ignore Checkpoint Selected\n"
msgstr "Ausgewählte Sicherungskopie ignorieren\n"
-#: ../bin/misc.c:2868
+#: ../bin/misc.c:1122
#, c-format
msgid "Unnamed Trackplan - %s(%s)"
msgstr "Unbenannter Gleisplan - %s(%s)"
-#: ../bin/misc.c:2954
+#: ../bin/misc.c:1177
msgid "Initializing commands"
msgstr "Initialisiere Befehle"
-#: ../bin/misc.c:2963
+#: ../bin/misc.c:1186
msgid "Initializing menus"
msgstr "Initialisiere Menüs"
-#: ../bin/misc.c:2998
+#: ../bin/misc.c:1218
msgid "Reading parameter files"
msgstr "Einlesen der Parameterdateien"
-#: ../bin/misc.c:3035
+#: ../bin/misc.c:1262
msgid "Initialization complete"
msgstr "Initialisierung beendet"
-#: ../bin/param.c:92
+#: ../bin/param.c:77
msgid "Unexpected End Of String"
msgstr "Unerwartetes Zeichenkettenende"
-#: ../bin/param.c:99
+#: ../bin/param.c:84
msgid "Expected digit"
msgstr "Erwartete Ziffer"
-#: ../bin/param.c:106
+#: ../bin/param.c:92
msgid "Overflow"
-msgstr "Ãœberlau"
+msgstr "Überlauf"
-#: ../bin/param.c:154
+#: ../bin/param.c:141
msgid "Divide by 0"
msgstr "Division durch 0"
-#: ../bin/param.c:162
+#: ../bin/param.c:149
msgid "Expected /"
msgstr "Erwartet /"
-#: ../bin/param.c:248
+#: ../bin/param.c:234
msgid "Invalid Units Indicator"
-msgstr "Ungültige Masseinheit"
+msgstr "Ungültige Maßeinheit"
-#: ../bin/param.c:276
+#: ../bin/param.c:262
msgid "Expected End Of String"
msgstr "Zeichenkettenende erwartet"
-#: ../bin/param.c:302 ../bin/param.c:1406
+#: ../bin/param.c:290 ../bin/param.c:1529
#, c-format
msgid "Invalid Number"
msgstr "Ungültige Zahl"
-#: ../bin/param.c:361
+#: ../bin/param.c:350
msgid "End Of String"
msgstr "Ende der Zeichenkette"
-#: ../bin/param.c:1413
+#: ../bin/param.c:1487
#, c-format
msgid "Enter a value > %ld"
msgstr "Einen Wert größer als %ld eingeben"
-#: ../bin/param.c:1415
+#: ../bin/param.c:1490
#, c-format
msgid "Enter a value < %ld"
msgstr "Einen Wert kleiner als %ld eingeben"
-#: ../bin/param.c:1417
+#: ../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:1473
+#: ../bin/param.c:1569
#, c-format
msgid "Enter a value > %s"
msgstr "Einen Wert größer als %s eingeben"
-#: ../bin/param.c:1476
+#: ../bin/param.c:1573
#, c-format
msgid "Enter a value < %s"
msgstr "Einen Wert kleiner als %s eingeben"
-#: ../bin/param.c:1479
+#: ../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:2647
+#: ../bin/param.c:1675
+msgid "String cannot be blank"
+msgstr "Text kann nicht leer sein"
+
+#: ../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:3044
msgid "Help"
msgstr "Hilfe"
-#: ../bin/paramfile.c:250
+#: ../bin/paramfile.c:258
msgid "Parameter"
msgstr "Parameter"
-#: ../bin/paramfile.c:348
+#: ../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?"
-#: ../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 ""
+"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:126
#, c-format
msgid "Updating %s"
msgstr "Aktualisiere %s"
-#: ../bin/paramfilesearch_ui.c:68
-msgid "Enter at least one search word"
-msgstr "Mindestens ein Suchwort eingeben"
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Any"
+msgstr "Passt immer"
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Compatible"
+msgstr "Kompatibel"
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Exact"
+msgstr "Passt genau"
-#: ../bin/paramfilesearch_ui.c:77
-msgid "Reload Library"
-msgstr "Bibliothek neu laden"
+#: ../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:274
+#: ../bin/paramfilesearch_ui.c:307
#, c-format
-msgid "%d parameter files found."
-msgstr "%d Parameterdateien gefunden."
+msgid "%d parameter files found. %d Fit Scale"
+msgstr "%d Parameterdateien gefunden. %d Maßstab anpassen"
-#: ../bin/paramfilesearch_ui.c:284
+#: ../bin/paramfilesearch_ui.c:317
msgid "No matches found."
msgstr "Keine Übereinstimmungen gefunden."
-#: ../bin/paramfilesearch_ui.c:396
+#: ../bin/paramfilesearch_ui.c:477
msgid "Choose parameter files"
msgstr "Parameterdateien auswählen"
-#: ../bin/paramfilesearch_ui.c:416
+#: ../bin/paramfilesearch_ui.c:495
msgid "No system parameter files found, search is disabled."
msgstr "Keine Parameterdateien gefunden, die Suche ist deaktiviert."
-#: ../bin/smalldlg.c:64
+#: ../bin/partcatalog.c:739
+msgid "Found: "
+msgstr "Gefunden: "
+
+#: ../bin/partcatalog.c:740
+msgid "Similar: "
+msgstr "Ähnlich: "
+
+#: ../bin/partcatalog.c:741
+msgid "Ignored: "
+msgstr "Übersprungen: "
+
+#: ../bin/partcatalog.c:742
+msgid "Not found: "
+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:45
msgid "Show tips at start"
msgstr "Tipps beim Start anzeigen"
-#: ../bin/smalldlg.c:70
+#: ../bin/smalldlg.c:51
msgid "Did you know..."
msgstr "Wussten Sie schon..."
-#: ../bin/smalldlg.c:72
+#: ../bin/smalldlg.c:53
msgid "Previous Tip"
msgstr "Vorheriger Tipp"
-#: ../bin/smalldlg.c:73
+#: ../bin/smalldlg.c:54
msgid "Next Tip"
msgstr "Nächster Tipp"
-#: ../bin/smalldlg.c:90
+#: ../bin/smalldlg.c:72
msgid "Tip of the Day"
msgstr "Tipp des Tages"
-#: ../bin/smalldlg.c:99
+#: ../bin/smalldlg.c:82
msgid "No tips are available"
msgstr "Es sind keine Tipps verfügbar"
-#: ../bin/smalldlg.c:199
+#: ../bin/smalldlg.c:187
msgid ""
"XTrackCAD is a CAD (computer-aided design) program for designing model "
"railroad layouts."
@@ -6266,28 +6553,28 @@ msgstr ""
"XTrackCAD ist ein CAD (Computer-unterstützter Entwurf) Programm\n"
"zum Entwerfen von Modelleisenbahnanlagen."
-#: ../bin/tbezier.c:177
+#: ../bin/tbezier.c:214
#, c-format
-msgid "Bezier: len=%0.2f min_rad=%0.2f"
-msgstr "Bezier Kurve: Länge = %0.2f Kleinster Radius = %0.2f"
+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:250
+#: ../bin/tbezier.c:288
msgid "Ctl Pt 1: X,Y"
msgstr "Kontrollpunkt 1: X,Y"
-#: ../bin/tbezier.c:251
+#: ../bin/tbezier.c:289
msgid "Ctl Pt 2: X,Y"
msgstr "Kontrollpunkt 1: X,Y"
-#: ../bin/tbezier.c:257
+#: ../bin/tbezier.c:295
msgid "MinRadius"
msgstr "Mindestradius"
-#: ../bin/tbezier.c:262
+#: ../bin/tbezier.c:300
msgid "Line Color"
msgstr "Linienfarbe"
-#: ../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,"
@@ -6296,36 +6583,32 @@ 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:453
+#: ../bin/tbezier.c:514
msgid "Bezier Track"
msgstr "Beziergleis"
-#: ../bin/tbezier.c:870
-msgid "Merge Bezier"
-msgstr "Bezierkurven zusammenfassen"
-
-#: ../bin/tcornu.c:222
+#: ../bin/tcornu.c:246
#, c-format
-msgid "Cornu: len=%0.2f min_rad=%0.2f"
-msgstr "Cornu: Länge = %0.2f Kleinster Radius %0.2f"
+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:296
+#: ../bin/tcornu.c:321
msgid "Radius "
msgstr "Radius "
-#: ../bin/tcornu.c:304
+#: ../bin/tcornu.c:329
msgid "Minimum Radius"
msgstr "Mindestradius"
-#: ../bin/tcornu.c:305
+#: ../bin/tcornu.c:330
msgid "Max Rate Of Curve Change/Scale"
msgstr "Maximale Änderungsrate der Kurve"
-#: ../bin/tcornu.c:306
+#: ../bin/tcornu.c:331
msgid "Total Winding Angle"
msgstr "Gesamtwinkel"
-#: ../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,"
@@ -6334,34 +6617,26 @@ msgstr ""
"Cornu-Bogen(%d): Ebene=%u Minimal-Radius=%s Länge=%s EP=[%0.3f,%0.3f] [%0.3f,"
"%0.3f]"
-#: ../bin/tcornu.c:497
+#: ../bin/tcornu.c:532
msgid "Cornu Track"
msgstr "Cornu-Gleis"
-#: ../bin/tcornu.c:1025
-msgid "Merge Cornu"
-msgstr "Cornu-Kurven zusammenfassen"
-
-#: ../bin/tcurve.c:243
+#: ../bin/tcurve.c:259
#, c-format
-msgid "Helix: turns=%ld len=%0.2f grade=%0.1f%% sep=%0.2f"
-msgstr "Gleiswendel: Windungen=%ld Länge=%0.2f Steigung=%0.1f%% Abstand=%0.2f"
+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:249
+#: ../bin/tcurve.c:265
#, c-format
-msgid "Helix: turns=%ld len=%0.2f"
-msgstr "Gleiswendel: Windungen=%ld Länge=%0.2f"
+msgid "Helix: Turns %ld L %0.2f"
+msgstr "Gleiswendel: Windungen %ld L %0.2f"
-#: ../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 "Winkellänge"
-
-#: ../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] "
@@ -6370,318 +6645,350 @@ 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:563
+#: ../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 ""
-"Gleisbogenl(%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]"
+"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:640
+#: ../bin/tcurve.c:681
msgid "Helix Track"
msgstr "Gleiswendel"
-#: ../bin/tcurve.c:646
+#: ../bin/tcurve.c:687
msgid "Curved Track"
msgstr "Gleisbogen"
-#: ../bin/tcurve.c:1013
+#: ../bin/tcurve.c:1232
msgid "Merge Curves"
msgstr "Kurven zusammenfassen"
-#: ../bin/tcurve.c:1082
+#: ../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:1115 ../bin/tcurve.c:1147
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
msgid "Curved "
msgstr "Gebogen "
-#: ../bin/tcurve.c:1121
+#: ../bin/tcurve.c:1347
msgid "Tangent "
msgstr "Tangente "
-#: ../bin/tcurve.c:1130
+#: ../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:1152
+#: ../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: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"
-"%0.3f]"
+"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]"
-#: ../bin/tease.c:615
+#: ../bin/tease.c:629
msgid "Easement Track"
-msgstr "Ügangsbogengleis"
+msgstr "Übergangsbogengleis"
-#: ../bin/tease.c:1235
+#: ../bin/tease.c:1407
msgid "Merge Easements"
msgstr "Übergangsbögen zusammenfassen"
-#: ../bin/tease.c:1303
+#: ../bin/tease.c:1481
msgid "Split Easement Curve"
msgstr "Übergangsbogen auftrennen"
-#: ../bin/textnoteui.c:214
+#: ../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:225
-msgid "Update comment"
-msgstr "Kommentar aktualisieren"
+#: ../bin/textnoteui.c:189
+msgid "Update Text Note"
+msgstr "Textnotiz aktualisieren"
-#: ../bin/textnoteui.c:237
+#: ../bin/textnoteui.c:200
msgid "Replace this text with your note"
msgstr "Ersetzen Sie diesen Text durch Ihre Notizen"
-#: ../bin/textnoteui.c:241
+#: ../bin/textnoteui.c:206
msgid "Create Text Note"
msgstr "Erstelle Textnotiz"
-#: ../bin/track.c:1329
+#: ../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:295
+msgid "No track or structure pieces are selected"
+msgstr "Es werden keine Gleis- oder Gebäudeelemente ausgewählt"
+
+#: ../bin/track.c:1464
msgid "Move Objects Above"
msgstr "Objekte nach oben"
-#: ../bin/track.c:1349
+#: ../bin/track.c:1484
msgid "Mode Objects Below"
msgstr "Objekte nach unten"
-#: ../bin/track.c:1640
+#: ../bin/track.c:1788
msgid "Audit"
msgstr "Protokoll"
-#: ../bin/track.c:1929
+#: ../bin/track.c:1993
#, c-format
-msgid "%d Track(s) loosened"
-msgstr "%d Gleis(e) gelockert"
-
-#: ../bin/track.c:1936
-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:1946 ../bin/track.c:1950
+#: ../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:2005
+#: ../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:2280 ../bin/track.c:2315
+#: ../bin/track.c:2410 ../bin/track.c:2447
msgid "Inside turnout track"
msgstr "Inneres Weichengleis"
-#: ../bin/track.c:2298
+#: ../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:2321 ../bin/track.c:2379 ../bin/tstraigh.c:568
+#: ../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/trknote.c:60
-msgid "Comment"
-msgstr "Kommentar"
+#: ../bin/track.c:3377
+#, c-format
+msgid "[%0.2f,%0.2f] A%0.2f"
+msgstr "[%0.2f,%0.2f] A%0.2f"
+
+#: ../bin/track.c:3381
+#, c-format
+msgid "[%0.2f,%0.2f] A%0.2f\n"
+msgstr ""
+"[%0.2f,%0.2f] A%0.2f\n"
+"\n"
+
+#: ../bin/trknote.c:52 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:154
+msgid "Text Note"
+msgstr "Textnotiz"
-#: ../bin/trknote.c:61
+#: ../bin/trknote.c:53
msgid "Link"
msgstr "Weblink"
-#: ../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 "Weblink"
-#: ../bin/trknote.c:638 ../../../../build/work/app/bin/bllnhlp.c:108
+#: ../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:652
+#: ../bin/trknote.c:536
msgid "New Note"
msgstr "Neue Notiz"
-#: ../bin/trknote.c:708
+#: ../bin/trknote.c:590
msgid "Add notes"
msgstr "Notizen hinzufügen"
-#: ../bin/tstraigh.c:236
+#: ../bin/tstraigh.c:92
+msgid "Track Angle"
+msgstr "Gleiswinkel"
+
+#: ../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]"
+"Straight Track(%d): Layer=%d Length=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f "
+"A%0.3f]"
msgstr ""
-"Gleisgerade(%d): Ebene=%d Länge=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A"
-"%0.3f]"
+"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:481
+#: ../bin/tstraigh.c:762
msgid "Extending Straight Track"
msgstr "Gleisgerade verlängern"
-#: ../bin/tstraigh.c:561
+#: ../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:281
-msgid "Font Select"
-msgstr "Auswahl der Schriftart"
+#: ../bin/toolbar.c:100
+msgid "Import/Export Buttons"
+msgstr "Import/Export Aktionen"
-#: ../wlib/gtklib/help.c:83 ../wlib/mswlib/mswmisc.c:2232
-msgid "&Contents"
-msgstr "Inhalt"
+#: ../bin/toolbar.c:101
+msgid "Zoom Buttons"
+msgstr "Aktionen für Zoom"
-#: ../wlib/gtklib/help.c:84
-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:2102
-#: ../wlib/mswlib/mswmisc.c:2145
-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:2107
-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: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 ""
-"Die notwenidgen Konfigurationsdaten konnten nicht im erwarteten Verzeichnis "
-"gefunden werden.\n"
-"\n"
-"Üblicherweise ist dies ein Instalaltionsproblem. Stellen Sie sicher, dass "
-"diese Dateien in entweder\n"
-" %s/share/xtrkcad oder\n"
-" /usr/lib/%s oder\n"
-" /usr/local/lib/%s\n"
-"gespeichert sind. Sollte das nicht möglich sein, muss die Umgebungsvariable "
-"%s den Namen des korrekten Verzeichnis enthalten."
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:193
-msgid "HOME is not set"
-msgstr "HOME ist nicht gesetzt"
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:157
-#: ../wlib/gtklib/wpref.c:193
-msgid "Exit"
-msgstr "Beenden"
+#: ../bin/toolbar.c:109
+msgid "Track Group Buttons"
+msgstr "Aktionen um Objekte zusammzufassen und zu organisieren"
-#: ../wlib/gtklib/wpref.c:156
-#, 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:103
-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:886
-msgid "Ctrl+"
-msgstr "Strg+"
+#: ../bin/toolbar.c:112
+msgid "Ruler Button"
+msgstr "Lineal"
-#: ../wlib/mswlib/mswmenu.c:891
-msgid "Alt+"
-msgstr "Alt+"
+#: ../bin/toolbar.c:113
+msgid "Layer Buttons"
+msgstr "Ebenen"
-#: ../wlib/mswlib/mswmenu.c:896
-msgid "Shift+"
-msgstr "Umsch+"
+#: ../bin/toolbar.c:114
+msgid "Hot Bar"
+msgstr "Schnellauswahl"
-#: ../wlib/mswlib/mswmenu.c:902
-msgid "Space"
-msgstr "Abstand"
+#: ../bin/toolbar.c:133
+#, fuzzy
+msgid "Invert Selection"
+msgstr "Auswahl umkehren"
-#: ../wlib/mswlib/mswmisc.c:190
+#: ../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:188
msgid "All image files"
msgstr "Alle Grafikdateien"
-#: ../wlib/mswlib/mswmisc.c:192
+#: ../wlib/mswlib/mswmisc.c:190
msgid "GIF files (*.gif)"
msgstr "GIF Dateien (*.gif)"
-#: ../wlib/mswlib/mswmisc.c:194
+#: ../wlib/mswlib/mswmisc.c:192
msgid "JPEG files (*.jpeg,*.jpg)"
msgstr "JPEG Dateien (*.jpeg,*.jpg)"
-#: ../wlib/mswlib/mswmisc.c:196
+#: ../wlib/mswlib/mswmisc.c:194
msgid "PNG files (*.png)"
msgstr "PNG Dateien (*.png)"
-#: ../wlib/mswlib/mswmisc.c:198
+#: ../wlib/mswlib/mswmisc.c:196
msgid "TIFF files (*.tiff, *.tif)"
msgstr "TIFF Dateien (*.tiff, *.tif)"
-#: ../wlib/mswlib/mswmisc.c:200
+#: ../wlib/mswlib/mswmisc.c:198
msgid "All files (*)"
msgstr "Alle Dateien (*)"
-#: ../wlib/mswlib/mswmisc.c:2233
+#: ../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:2234
+#: ../wlib/mswlib/mswmisc.c:2205
msgid "Co&mmand Context Help"
msgstr "Ko&ntexthilfe für Befehle"
-#: ../../../../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 ""
+"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/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 "
@@ -6691,7 +6998,7 @@ msgstr ""
"einen Kreis oder eine Gleiswendel gesetzt werden.\tEin %s kann nicht auf "
"eine Weiche, einen Kreis oder eine Gleiswendel gelegt werden."
-#: ../../../../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."
@@ -6700,13 +7007,13 @@ msgstr ""
"eingefrorene Ebene enthält ausgewählte Gleise.\n"
"Der Befehl kann nicht ausgeführt werden."
-#: ../../../../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\tEine Gleiswendel muss eine oder mehrere Gleiswindung "
-"enthalten."
+"MSG_HELIX_TURNS_GTR_0\tEine Gleiswendel muss eine oder mehrere "
+"Gleiswindungen enthalten."
-#: ../../../../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"
@@ -6714,13 +7021,21 @@ msgid ""
"\n"
"Do you wish to continue?"
msgstr ""
-"MSG_LARGE_FONT\tEine grosse Schriftart wurde ausgewählt...\tEine grosse "
+"MSG_LARGE_FONT\tEine große Schriftart wurde ausgewählt...\tEine Trosse "
"Schriftart wurde ausgewählt.\n"
-"Das Laden grosser Schriften kann lange dauern.\n"
+"Das Laden großer Schriften kann lange dauern.\n"
"\n"
"Wollen Sie den Vorgang fortsetzen?"
-#: ../../../../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 ""
+"MSG_TEXT_TOO_LONG\tDer eingegebene Text war zu lang für das Text-Objekt. Er "
+"wurde abgeschnitten."
+
+#: ../../../../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"
@@ -6732,7 +7047,7 @@ msgstr ""
"müssen korrekt ausgefüllt sein. Bitte falsche Werte \n"
"korrigieren und nochmals versuchen."
-#: ../../../../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"
@@ -6742,7 +7057,7 @@ msgstr ""
"sein...\tAlle Felder im Gruppieren-Dialog müssen ausgefüllt sein.\n"
"Bitte die fehlenden Werte ergänzen und nochmals versuchen."
-#: ../../../../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"
@@ -6752,11 +7067,11 @@ msgstr ""
"\tAlle eingegebenen Werte im Weicheneditor müssen\n"
"größer als 0 sein. Bitte fehlerhafte Werte korrigieren und nochmal versuchen."
-#: ../../../../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 "MSG_CURVE_OUT_OF_RANGE\tDer Winkel muss zwischen 0° und 360° liegen."
-#: ../../../../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 "
@@ -6765,11 +7080,11 @@ msgid ""
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"
+"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/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 "
@@ -6780,21 +7095,21 @@ msgstr ""
"löschen wollen?\tSind Sie sicher, dass Sie %d Definitionen\n"
"löschen wollen?"
-#: ../../../../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\tErzeugen oder Schreiben der Bitmap ist fehlgeschlagen."
-#: ../../../../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 ist zu groß."
-#: ../../../../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\tArt der Höhenfestlegung kann nicht geändert werden."
-#: ../../../../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"
@@ -6802,39 +7117,46 @@ msgstr ""
"MSG_GRID_ENABLE_SPACE_GTR_0\tFangraster kann nicht aktiviert werden. Abstand "
"muss größer als 0 sein"
-#: ../../../../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\tAktuelle Ebene kann nicht eingefroren werden"
-#: ../../../../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 ""
+"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."
msgstr ""
-"Prellbock kann nicht in die Gruppe aufgenommen werden. Das Gleis wurde "
-"abgewählt."
+"MSG_CANT_GROUP_BUMPER1\tPrellbock kann nicht in die Gruppe aufgenommen "
+"werden. Das Gleis wurde abgewählt."
-#: ../../../../build/work/app/help/messages.h:25
-msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track."
-msgstr ""
-"MSG_CANNOT_GROUP_TRACK\tAusgewähltes Gleis kann nicht gruppiert werden."
+#: ../../../../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/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\tAktuelle Ebene kann nicht verborgen werden"
-#: ../../../../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 ""
"MSG_LAYER_HIDE\tAktuelle Ebene kann nicht in ein Modul umgewandelt werden"
-#: ../../../../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\tVerbinden nicht möglich. Übergangsbögen sind nicht "
"ausgerichtet."
-#: ../../../../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; "
@@ -6843,32 +7165,40 @@ msgstr ""
"MSG_TRK_ALREADY_CONN\tErstes|zweites Gleis ist bereits verbunden.\tVerbinden "
"nicht möglich, das %s Gleis ist bereits verbunden."
-#: ../../../../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\tVerbinden von einer Drehscheibe ist nicht möglich, bitte "
"zur Drehscheibe verbinden"
-#: ../../../../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 ""
"MSG_JOIN_CORNU_SAME\tVerbinden nicht möglich, da ausgewählte Endpunkte zum "
"selben Gleis gehören."
-#: ../../../../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\tVerbinden nicht möglich, da ausgewählte Endpunkte zum selben "
"Gleis gehören."
-#: ../../../../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 ""
+"MSG_JOIN_NOTBEZIERORCORNU\tKann nicht mit Bezier oder Cornu verbinden, da "
+"als Übergangsbogen nicht Cornu gewählt ist"
+
+#: ../../../../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."
-#: ../../../../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 "
@@ -6877,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/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\tEine eingefrorene Ebene kann nicht ausgewählt werden"
-#: ../../../../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_ENABLE_SPACE_GTR_0\tFangraster kann nicht angezeigt werden. Abstand "
"muss größer als 0 sein"
-#: ../../../../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 ""
"MSG_CANT_SPLIT_TRK\tTYP Gleis kann nicht aufgetrennt werden\tGleis vom Typ "
"%s kann nicht aufgetrennt werden"
-#: ../../../../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 "
@@ -6905,29 +7236,29 @@ msgstr ""
"MSG_PRMFIL_OPEN_NEW\tDie neue Parameterdatei DATEINAME kann nicht geöffnet "
"werden.\tDie neue Parameterdatei %s kann nicht geöffnet werden"
-#: ../../../../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\tWagenkennzahl ist doppelt."
-#: ../../../../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\tVerbindungseinstellungen auf die Minimalwerte "
"zurückgesetzt."
-#: ../../../../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 ""
"MSG_CONN_PARAMS_TOO_SMALL\tVerbindungseinstellungen auf die Maximalwerte "
"zurückgesetzt."
-#: ../../../../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\tZwischenablage ist leer. Es kann nichts eingefügt werden."
-#: ../../../../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"
@@ -6937,11 +7268,11 @@ msgstr ""
"\tKreuzungslänge ist zu kurz. Unpassende\n"
"Werte verbessern und nochmals versuchen."
-#: ../../../../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\tBogengleis ist zu groß."
-#: ../../../../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"
@@ -6955,22 +7286,22 @@ msgstr ""
"\n"
"Speichern fortsetzen?"
-#: ../../../../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\tWollen Sie die Veränderungen an Ihrem Gleisplan speichern?"
-#: ../../../../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\tDoppelte Spaltenüberschrift in der Wagenimportdatei."
-#: ../../../../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\tDer Endpunkt ist bereits im Pfad enthalten."
-#: ../../../../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 "
@@ -6983,7 +7314,7 @@ msgstr ""
"Version %d. Sie sollten %s mindestens auf Version %s\n"
"aktualisieren."
-#: ../../../../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 "
@@ -6995,7 +7326,7 @@ msgstr ""
"\tDateiversion %ld ist größer als unterstützte\n"
"Version %d. Sie sollten %s aktualisieren"
-#: ../../../../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 "
@@ -7004,7 +7335,7 @@ msgstr ""
"MSG_LAYOUT_LINES_SKIPPED\tBei der Verarbeitung der Gleisplandatei %s wurden "
"%d Zeilen übersprungen, weil sie nicht erkannt wurden."
-#: ../../../../build/work/app/help/messages.h:52
+#: ../../../../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..."
@@ -7017,7 +7348,7 @@ msgstr ""
"Version %d. Sie sollten %s mindestens auf Version %s\n"
"aktualisieren."
-#: ../../../../build/work/app/help/messages.h:53
+#: ../../../../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..."
@@ -7029,7 +7360,7 @@ msgstr ""
"\tDateiversion %ld ist größer als unterstützte\n"
"Version %d. Sie sollten %s aktualisieren"
-#: ../../../../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 "
@@ -7038,7 +7369,7 @@ msgstr ""
"MSG_PARAM_LINES_SKIPPED Bei der Verarbeitung der Parameterdatei %s wurden %d "
"Zeilen übersprungen, weil sie nicht erkannt wurden."
-#: ../../../../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."
@@ -7047,11 +7378,11 @@ msgstr ""
"Weichenwinkel verhindert das Setzen der Weichenzungen.\n"
"Die Weichenzungen auf die andere Seite der Weiche verschieben."
-#: ../../../../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 "MSG_NO_ROOM_BTW_TRKS\tZu wenig Platz zwischen den Drehscheibengleisen."
-#: ../../../../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."
@@ -7060,19 +7391,19 @@ msgstr ""
"MSG_JOIN_DIFFER_ELEV\tZu verbindende Gleise haben unterschiedliche Höhe(N."
"NNN)\tZu verbindende Gleise haben unterschiedliche Höhe(%0.2f)"
-#: ../../../../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 "MSG_DESC_NOT_VISIBLE\tBeschriftung ist nicht sichtbar"
-#: ../../../../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 "MSG_DESC_NOT_VISIBLE\tBeschriftungen sind nicht sichtbar"
-#: ../../../../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 "MSG_OBJECT_TOO_SHORT\tDie Länge des Objektes ist zu kurz."
-#: ../../../../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 "
@@ -7081,14 +7412,14 @@ 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"
-#: ../../../../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 ""
"MSG_NO_PRINTER_SELECTED\tBitte wählen Sie einen Drucker aus dem Dialogfeld "
"Druckereinrichtung."
-#: ../../../../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."
@@ -7097,7 +7428,7 @@ msgstr ""
"MSG_PRMFIL_NO_CONTENTS\tDie neue Parameterdatei enthält keine CONTENTS "
"Zeile: DATEINAME.\tDie neue Parameterdatei enthält keine CONTENTS Zeile: %s"
-#: ../../../../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"
@@ -7109,7 +7440,7 @@ msgstr ""
"\n"
"Soll der Wagenbestandsdialog geöffnet werden?"
-#: ../../../../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"
@@ -7123,21 +7454,20 @@ msgstr ""
"Parameterdatei mit Vorbildern geladen werden oder\n"
"ein Vorbild muß über den Wagenvorbilddialog erstellt werden."
-#: ../../../../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 "MSG_CARIMP_NO_DATA\tDie Wagenimportdatei enthält keine Daten."
-#: ../../../../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 "MSG_PRINT_NO_PAGES\tKeine Seiten zum Drucken ausgewählt."
-#: ../../../../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 ""
-"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/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 "
@@ -7146,19 +7476,35 @@ msgstr ""
"MSG_PRMFIL_OPEN_NEW\tDie neue Parameterdatei DATEINAME kann nicht geöffnet "
"werden.\tDie neue Parameterdatei %s kann nicht geöffnet werden"
-#: ../../../../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 "MSG_NO_SELECTED_TRK\tEs sind keine Gleise ausgewählt!"
-#: ../../../../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 ""
-"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/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 ""
+"MSG_NO_UNFROZEN_LAYER\tEs wurde keine Ebene gefunden, die nicht gefroren "
+"war. Schicht 0 ist nicht gefroren."
+
+#: ../../../../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\tDie aktuelle Ebene wurde als eingefroren definiert. "
+"Es ist jetzt ungefroren."
+
+#: ../../../../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 "
@@ -7167,7 +7513,7 @@ msgstr ""
"MSG_NO_TURNOUTS_AVAILABLE\tEs sind keine Weichern | Gebäude verfügbar.\tEs "
"sind keine %s verfügbar."
-#: ../../../../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"
@@ -7177,12 +7523,12 @@ msgstr ""
"\tNumerische Werte im Wagenbeschreibungsdialog\n"
"müssen größer als 0 sein."
-#: ../../../../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 ""
"MSG_MOVE_OUT_OF_BOUNDS\tObjekt wurde nach außerhalb des Raumes verschoben."
-#: ../../../../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."
@@ -7190,7 +7536,7 @@ msgstr ""
"MSG_PARALLEL_SEP_GTR_0\tParallelabstand muß entweder größer als 0 sein. oder "
"die neue Spurweite muss sich von der alten unterscheiden."
-#: ../../../../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,7 +7548,7 @@ msgstr ""
"\n"
"Wollen Sie den Artikel aktualisieren?"
-#: ../../../../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: "
@@ -7211,7 +7557,7 @@ msgstr ""
"MSG_PLAYBACK_LISTENTRY\tWiedergabe: Der Listeneintrag: NAME kann nicht "
"gefunden werden.\tWiedergabe: der Listeneintrag %s kann nicht gefunden werden"
-#: ../../../../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 "
@@ -7221,10 +7567,10 @@ msgid ""
msgstr ""
"MSG_PLAYBACK_VERSION_UPGRADE\tVersion %ld der Wiedergabedatei ist..."
"\tVersion %ld der Wiedergabedatei\n"
-"ist neuer als due unterstützte Version %d\n"
+"ist neuer als die unterstützte Version %d\n"
"Aktualisierung von %s ist notwendig"
-#: ../../../../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"
@@ -7232,23 +7578,27 @@ msgstr ""
"MSG_DOMOUSE_BAD_OP\tWiedergabe: unbekannte AktionNNN\tWiedergabe: unbekannte "
"Aktion %d"
-#: ../../../../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 ""
"MSG_MOVE_POINTS_AWAY_CLOSE\tWeichenzungen sind zu kurz. In größere "
"Entfernung vom Herzstück setzen."
-#: ../../../../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 ""
-"MSG_POLY_SHAPES_3_SIDES\tEin Vieleck muss mindestens drei Seiten haben.."
+"MSG_POLY_SHAPES_3_SIDES\tPolygone müssen aus mindestens drei Ecken bestehen."
-#: ../../../../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 ""
"MSG_POLY_MULTIPLE_SELECTED\tKann nicht mehrere Punkte auf einmal löschen"
-#: ../../../../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 "MSG_POLY_NOTHING_SELECTED\tKein Punkt auf einem Vieleck ausgewählt."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:90
msgid ""
"MSG_CARPROTO_DUPNAME\tPrototype name already exists....\tPrototype name "
"already exists.\n"
@@ -7260,15 +7610,15 @@ msgstr ""
"\n"
"Wollen Sie dieses Vorbild überschreiben?"
-#: ../../../../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 "MSG_RADIUS_GTR_0\tRadius muss größer als 0 sein.."
-#: ../../../../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 "MSG_RADIUS_GTR_0\tRadius muss kleiner als 10000 sein."
-#: ../../../../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)."
@@ -7276,7 +7626,7 @@ msgstr ""
"MSG_RADIUS_TOO_BIG\tDer Bogen oder die Gleiswendel passen nicht in den Raum "
"(Höhe und Breite)."
-#: ../../../../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 "
@@ -7289,7 +7639,7 @@ msgstr ""
"(Länge und Breite). Die benötigte Größe ist\n"
"mindestens %s auf %s."
-#: ../../../../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."
@@ -7297,7 +7647,7 @@ msgstr ""
"MSG_CARIMP_MISSING_COLUMNS\tDie benötigten Spaltenüberschriften fehlen in "
"der Wagen-ImportDatei."
-#: ../../../../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 "
@@ -7306,18 +7656,18 @@ msgstr ""
"MSG_2ND_TRK_NOT_SEL_UNSEL\tDas zweite Gleis darf (nicht) ausgewählt sein."
"\tDas zweite Gleis muss %s sein."
-#: ../../../../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 ""
"MSG_OUT_OF_BOUNDS\tAusgewählte Dateien sind außerhalb des zulässigen "
"Bereichs."
-#: ../../../../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 ""
-"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/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"
@@ -7327,7 +7677,7 @@ msgstr ""
"\tDie ausgewählten Formen müssen einen rechtwinkligen\n"
"Bereich bilden, wobei die Länge größer als die Breite sein muss."
-#: ../../../../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."
@@ -7336,23 +7686,32 @@ msgstr ""
"\tDie ausgewählten Gleise weichen zu stark ab oder\n"
"sind zu weit voneinander entfernt."
-#: ../../../../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 "MSG_COMMAND_DISABLED\tDieser Befehl ist deaktiviert."
-#: ../../../../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 ""
+"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/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 ""
"MSG_SPLIT_PATH_NOT_UNIQUE\tTrennstelle ist nicht auf einem eindeutigen "
"Verlauf"
-#: ../../../../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 "
@@ -7371,7 +7730,7 @@ msgstr ""
"\n"
"Soll das Einlesen der Wagen fortgesetzt werden?"
-#: ../../../../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 "
@@ -7388,7 +7747,7 @@ msgstr ""
"\n"
"Soll das Einlesen der Wagen fortgesetzt werden?"
-#: ../../../../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 "
@@ -7402,7 +7761,7 @@ msgstr ""
"\n"
"%s"
-#: ../../../../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."
@@ -7411,7 +7770,7 @@ msgstr ""
"Drehscheibe...\tDie Position einer Weiche oder einer Drehscheibe\n"
"kann nicht verändert werden, wenn sich ein Zug darauf befindet."
-#: ../../../../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"
@@ -7421,11 +7780,11 @@ msgid ""
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|"
+"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/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"
@@ -7437,42 +7796,59 @@ 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> "
+"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/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 "MSG_NO_UNCONN_EP\tDieses Gleis hat keine freien Endpunkte"
-#: ../../../../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 ""
+"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."
-#: ../../../../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 "MSG_NO_REDO\tEs gibt nichts wiederherzustellen!"
-#: ../../../../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 "MSG_NO_UNDO\tEs gibt nicht rückgängig zu machen!"
-#: ../../../../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 "MSG_TOOMANYSEGSINGROUP\tIn der Gruppe sind zu viele Teile."
-#: ../../../../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 ""
+"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/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 ""
"MSG_POINT_INSIDE_TURNTABLE\tGleisende befindet sich innerhalb der "
"Drehscheibe."
-#: ../../../../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."
@@ -7480,14 +7856,14 @@ msgstr ""
"MSG_MOVE_POINTS_AWAY_NO_INTERSECTION\tGleiskreuzung ist nicht möglich, "
"Weichenzungen müssen länger sein."
-#: ../../../../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 ""
"MSG_TRK_TOO_SHORT\tGleis ist um N.NNN zu kurz.\t%sgleis ist um %0.3f zu kurz"
-#: ../../../../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 "
@@ -7497,20 +7873,20 @@ msgstr ""
"Übergangsbogen (N.NNN).\tGleisradius (%s) ist kleiner als\n"
"der Mindest-Übergangsbogen (%s)."
-#: ../../../../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 ""
"MSG_CANT_MODIFY_FROZEN_TRK\tGleise in einer gesperrten Ebene können nicht "
"verändert werden."
-#: ../../../../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 ""
"MSG_CANT_MODIFY_FROZEN_TRK\tGleise in einem Modul können nicht verändert "
"werden."
-#: ../../../../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"
@@ -7520,15 +7896,15 @@ msgstr ""
"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/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 ""
-"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/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:"
@@ -7545,7 +7921,7 @@ msgstr ""
"Bitte diesen Fehler an das XTrackCAD Entwicklungsteam in Sourceforge "
"berichten."
-#: ../../../../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"
@@ -7561,7 +7937,7 @@ msgstr ""
"\n"
"Bitte XTrackCAD neu installieren."
-#: ../../../../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 "
@@ -7570,17 +7946,17 @@ msgstr ""
"MSG_ENTERED_STRING_TRUNCATED\tDer eingegebene Text ist zu lang. Die maximal "
"zulässige Länge beträgt %d."
-#: ../../../../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\tAn [X Y]befindet sich kein Gleis\tAn [%s %s] befindet "
"sich kein Gleis."
-#: ../../../../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 ""
@@ -7589,12 +7965,17 @@ msgstr ""
"\n"
"Wollen Sie den Vorgang fortsetzen?"
-#: ../../../../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 "Die Änderung der Icon-Größe wird nach dem Neustart aktiv."
+
+#: ../../../../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/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"
@@ -7603,117 +7984,117 @@ msgstr ""
"%sdatei kann nicht geöffnet werden:\n"
"%s:%s"
-#: ../../../../build/work/app/help/messages.h:124
+#: ../../../../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/work/app/help/messages.h:125
+#: ../../../../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/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 "Zu löschender Pfad %s ist kein Verzeichnis"
-#: ../../../../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 "Fehler beim Öffnen des Verzeichnis %s"
-#: ../../../../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 "Kann Verzeichniseintrag %s nicht zum Zip hinzufügen - %s"
-#: ../../../../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 "Kann den Dateisatz %s nicht zum Zip bei %s - %s hinzufügen"
-#: ../../../../build/work/app/help/messages.h:130
+#: ../../../../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/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 "Fehler beim Schließen der Zip-Datei %s - %s"
-#: ../../../../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 "Umbenennen des Zip von %s in %s - %s fehlgeschlagen"
-#: ../../../../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 "Öffnungsfehler für Zip %s - %s"
-#: ../../../../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 "Indexfehler für Zip %s - %s"
-#: ../../../../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 "Fehler beim Öffnen der Datei zum Lesen %s %s"
-#: ../../../../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 "Fehler beim Öfnen der Datei im Zip %s %s"
+msgstr "Fehler beim Öffnen der Datei im Zip %s %s"
-#: ../../../../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 "Löschen ist fehlgeschlagen bei %s"
-#: ../../../../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 "Verzeichnis entfernen fehlgeschlagen für: %s"
-#: ../../../../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 "Archiv kann nicht in %s aus Verzeichnis %s gespeichert werden"
-#: ../../../../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 "Manifest kann nicht in %s gespeichert werden"
-#: ../../../../build/work/app/help/messages.h:141
+#: ../../../../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/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 "Datei kann nicht entpackt werden: %s für Datei: %s im Verzeichnis: %s"
-#: ../../../../build/work/app/help/messages.h:143
+#: ../../../../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/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 "Datei %s kann nicht in das Verzeichnis %s kopiert werden"
-#: ../../../../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 "Unbekannte Option: %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"
@@ -7726,7 +8107,7 @@ msgstr ""
"\n"
"Soll das Lesen der Datei fortgesetzt werden?"
-#: ../../../../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"
@@ -7739,16 +8120,16 @@ msgstr ""
"\n"
"Soll das Laden der Datei fortgesetzt werden?"
-#: ../../../../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 ""
"Fehler \\\\\"%s\\\\\" aufgetreten beim Speichern von %s.\n"
-"Bitte Plattenplatz und System prüfen."
+"Bitte Speicherplatz und System prüfen."
-#: ../../../../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"
@@ -7759,28 +8140,28 @@ msgstr ""
"an einem Endpunkt. Solche Gleise können nicht gruppiert werden.\n"
"Das Gleis wurde aus der Auswahl entfernt."
-#: ../../../../build/work/app/help/messages.h:150
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
msgid "inv-pathEndTrk on Path."
msgstr "inv-pathEndTrk auf Pfad."
-#: ../../../../build/work/app/help/messages.h:151
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:162
msgid "inv-pathStartTrk on Path"
msgstr "inv-pathStartTrk auf Pfad"
-#: ../../../../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 "%s:%d- %s"
-#: ../../../../build/work/app/help/messages.h:153
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:164
msgid "pathEndTrk not on Path."
msgstr "pathEndTrk nicht auf einem Pfad."
-#: ../../../../build/work/app/help/messages.h:154
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:165
msgid "pathStartTrk not on Path."
msgstr "pathStartTrk nicht auf einem Pfad."
-#: ../../../../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"
@@ -7794,7 +8175,7 @@ msgstr ""
"oder ändern Sie den Verbindungswinkel im\n"
"Einstellungsdialog."
-#: ../../../../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"
@@ -7808,7 +8189,7 @@ msgstr ""
"oder ändern Sie den Verbindungsabstand und -winkel im\n"
"Einstellungsdialog"
-#: ../../../../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"
@@ -7820,7 +8201,7 @@ msgstr ""
"Versuchen Sie einige Gleise enger zusammenzuführen\n"
"oder ändern Sie den Verbindungsabstand im Einstellungsdialog"
-#: ../../../../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."
@@ -7828,7 +8209,7 @@ msgstr ""
"Das erste Gleis für den \"Ausrichten\n"
"Drehen\" Befehl muss ausgewählt sein."
-#: ../../../../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."
@@ -7836,15 +8217,15 @@ msgstr ""
"Das zweite Gleis für den \"Ausrichten\n"
"Drehen\" Befehl darf nicht ausgewählt sein."
-#: ../../../../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 "Zu viele ausgewählte Gleise, nur die Endpunkte werden angezeigt."
-#: ../../../../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 "Einen Endpunkt zwischen zwei Gleisen auswählen."
-#: ../../../../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"
@@ -7858,11 +8239,11 @@ msgstr ""
"Prüfen Sie ob der Abzweigwinkel gemäß der der Auswahl richtig als\n"
"Steigung oder als Winkel eingegeben wurde."
-#: ../../../../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 "Vor das Ende des Tunnels verschoben"
-#: ../../../../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."
@@ -7870,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/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."
@@ -7878,15 +8259,15 @@ msgstr ""
"Die Wagenlänge muss größer als\n"
"die Wagenbreite sein."
-#: ../../../../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 ""
-"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/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"
@@ -7896,7 +8277,7 @@ msgstr ""
"\n"
"Wollen Sie diesen Dialog wirklich beenden?"
-#: ../../../../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"
@@ -7907,7 +8288,7 @@ msgstr ""
"unterstütze Version %d. Konvertieren Sie\n"
"die Gleisplandatei mit einer älteren Version von %s"
-#: ../../../../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"
@@ -7918,7 +8299,7 @@ msgstr ""
"unterstütze Version %d. Diese Parameter-Datei wird nur mit einer älteren "
"Version von %s funktionieren"
-#: ../../../../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"
@@ -7927,16 +8308,16 @@ msgstr ""
"%s kann die Demodatei \":\n"
"%s nicht laden"
-#: ../../../../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 "doDemo: ungültige Zahl (%d)"
-#: ../../../../build/work/app/help/messages.h:172
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
msgid "Playback TIMEEND without TIMESTART"
msgstr "TIMEEND in Wiedergabe ohne TIMESTART"
-#: ../../../../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"
@@ -7945,7 +8326,7 @@ msgstr ""
"Unbekannter Wiedergabebefehl (%d)\n"
"%s"
-#: ../../../../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"
@@ -7958,2151 +8339,100 @@ msgstr ""
"Sie müssen Ihr Layoutdesign mit einer älteren\n"
"Version von %s aktualisieren"
-#: ../../../../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"
-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/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 ""
-"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/work/app/help/messages.h:177
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:188
msgid "Cannot extend a helix"
msgstr "Eine Gleiswendel kann nicht erweitert werden"
-#: ../../../../build/work/app/help/messages.h:178
+#: ../../../../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/work/app/help/messages.h:179
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
msgid "Ignore further audit notices?"
msgstr "Weitere Protokollhinweise ignorieren?"
-#: ../../../../build/work/app/help/messages.h:180
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:191
#, c-format
msgid "%s"
msgstr "%s"
-#: ../../../../build/work/app/help/messages.h:181
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:192
msgid "Audit Abort?"
msgstr "Protokolierung abbrechen?"
-#: ../../../../build/work/app/help/messages.h:182
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
msgid "Write Audit File?"
msgstr "Protokolldatei schreiben?"
-#: ../../../../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 "checkTrackLength: Kurze Gleislänge = %0.3f"
-#: ../../../../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 "checkTrackLength: Unbekannter Typ: %d"
-#: ../../../../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 "connectTracks: T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
-#: ../../../../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 "GetAngleAtPoint: Falscher Typ (%d) für T(%d)"
-#: ../../../../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 "joinTracks: Ungültiger Gleistyp=%d"
-#: ../../../../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 "resolveIndex: T%d[%d]: T%d existiert nicht"
-#: ../../../../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 "Hinter das Ende des Gleises verschoben"
-#: ../../../../build/work/app/bin/bllnhlp.c:9
-msgid "Invokes online help for this dialog"
-msgstr "Aufruf der Kontexthilfe für diesen Dialog"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:10
-msgid "Cancels this command"
-msgstr "Befehl abbrechen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:11
-msgid "Closes the dialog"
-msgstr "Dialogfenster schliessen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:12
-msgid "About program dialog"
-msgstr "Informationen über dieses Programm"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:13
-msgid "Move selected object to top"
-msgstr "Ausgewählte Objekte ganz nach oben verschieben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:14
-msgid "Raise or lower all selected tracks"
-msgstr "Alle ausgewählten Gleise anheben oder absenken"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:15
-msgid "Turn magnetic snap on or off"
-msgstr "Magnetisches Fangen ein/aus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:16
-msgid "Move selected object to bottom"
-msgstr "Ausgewähltes Objekt ganz nach unten verschieben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:17
-msgid "Create a section of track for automation"
-msgstr "Einen Gleisabschnitt für die Automation erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:18
-msgid "Edit a block definition "
-msgstr "Einen Gleisblock bearbeiten "
-
-#: ../../../../build/work/app/bin/bllnhlp.c:19
-msgid "Create a new Car/Loco description"
-msgstr "Erstelle eine neue Wegan/Lok-Beschreibung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:20
-msgid "Manage your Car and Loco Inventory"
-msgstr "Wagen- und Lokbestand verwalten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:21
-msgid "Create track circle from center"
-msgstr "Erstelle Gleiskreis um Mittelpunkt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:22
-msgid "Create fixed radius track circle"
-msgstr "Erstelle Gleiskreis mit festgelegtem Radius"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:23
-msgid "Set Circle Track creation mode"
-msgstr "Wähle Befehl um Gleisbögen zu erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:24
-msgid "Create track circle from tangent"
-msgstr "Erstelle Gleiskreis von Tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:25
-msgid "Removes elevation from Selected tracks"
-msgstr "Entfernt die Höhenangaben von den ausgewählten Gleisen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:26
-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/work/app/bin/bllnhlp.c:27
-msgid "Command Options dialog"
-msgstr "Dialog für die Befehlsoptionen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:28
-msgid "Controls colors"
-msgstr "Steuert die Farben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:29
-msgid "Connect two tracks"
-msgstr "Gleise zusammenfügen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:30
-msgid "Create a control for layout automation"
-msgstr "Erstelle ein Kontrollelement für Automation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:31
-msgid "Select control element to create"
-msgstr "Neues Kontrollelement festlegen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:32
-msgid "Manage control elements"
-msgstr "Steuerungselemente verwalten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:33
-msgid "Set Convert mode"
-msgstr "Konvertierungsmodus einstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:34
-msgid "Convert from Fixed Track to Cornu"
-msgstr "Aus festem Gleis in eine Cornu umwandeln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:35
-msgid "Convert from Cornu and Bezier to Fixed Track"
-msgstr "Von Cornu oder Bezier auf festes Gleis umwandeln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:36
-msgid "Copy selected objects to clipboard"
-msgstr "Ausgewählte Objekte in die Zwischenablage kopieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:37
-msgid "Create Cornu track"
-msgstr "Cornu-Bogen erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:38
-msgid "Create curved track from center"
-msgstr "Erstelle Gleisbogen vom Mittelpunkt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:39
-msgid "Create curved track from chord"
-msgstr "Erstelle Gleisbogen von einer Sehne"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:40
-msgid "Create curved track from end-point"
-msgstr "Erstelle Gleisbogen von Endpunkt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:41
-msgid "Create Bezier track"
-msgstr "Erstelle Bezier-Gleis"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:42
-msgid "Set Curve Track creation mode"
-msgstr "Wähle Befehl um Gleiskreis zu erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:43
-msgid "Create curved track from tangent"
-msgstr "Erstelle Gleisbogen von einer Tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:44
-msgid "Manipulate Custom designer entries"
-msgstr "Bearbeite die eigenen Designs"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:45
-msgid "Moves selected objects to clipboard"
-msgstr "Ausgewählte Objekte in die Zwischenablage verschieben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:46
-msgid "Delete objects"
-msgstr "Objekte löschen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:47
-msgid "Playback demos"
-msgstr "Demos abspielen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:48
-msgid "Change Object Properties"
-msgstr "Eigenschaften des Objektes bearbeiten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:49
-msgid "Change to properties mode"
-msgstr "Zum Modus \"Eigenschaften\""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:50
-msgid "Deselect all selected objects"
-msgstr "Ausgewählte Objekte abwählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:51
-msgid "Change Display parameters"
-msgstr "Anzeigeeigenschaften ändern"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:52
-msgid "Create benchwork"
-msgstr "Unterbau erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:53
-msgid "Create a box"
-msgstr "Ein Viereck erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:54
-msgid "Set Circle drawing command"
-msgstr "Wähle Befehl um Kreise zu zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:55
-msgid "Create a circle"
-msgstr "Einen Kreis erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:56
-msgid "Draw a circle line from center"
-msgstr "Zeichne Kreislinie um Mittelpunkt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:57
-msgid "Draw a fixed radius circle line"
-msgstr "Zeichne einen Kreisbogen mit festen Radius"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:58
-msgid "Draw a circle line from tangent"
-msgstr "Zeichne Kreis von Tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:59
-msgid "Set Curve drawing command"
-msgstr "Wähle Befehl um gebogene Linien zu zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:60
-msgid "Create a curved line"
-msgstr "Eine gebogene Linie erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:61
-msgid "Create a curved line from End"
-msgstr "Gebogene Linie von einem Endpunkt erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:62
-msgid "Create a curved line from center"
-msgstr "Gebogene Linie vom Mittelpunkt aus erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:63
-msgid "Create a curved line from chord"
-msgstr "Gebogene Linie von einer Sehne erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:64
-msgid "Create a curved line from tangent"
-msgstr "Gebogene Linie von einer Tangente erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:65
-msgid "Create a Bezier line"
-msgstr "Eine Bezier-Linie erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:66
-msgid "Create a dimension line"
-msgstr "Zeichne Maßlinie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:67
-msgid "Create a filled box"
-msgstr "Ein gefülltes Viereck erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:68
-msgid "Create a filled circle"
-msgstr "Einen gefüllten Kreis erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:69
-msgid "Draw a filled circle from center"
-msgstr "Zeichne gefüllten Kreis um Mittelpunkt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:70
-msgid "Draw a fixed radius filled circle"
-msgstr "Zeichne einen gefüllten Kreis mit festem Radius"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:71
-msgid "Draw a filled circle from tangent"
-msgstr "Zeichne gefüllten Kreis von Tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:72
-msgid "Create a polygon"
-msgstr "Ein Polygon erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:73
-msgid "Create a filled polygon"
-msgstr "Ein gefültes Polygon erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:74
-msgid "Create a polyline"
-msgstr "Eine Polylinie erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:75
-msgid "Create a straight line"
-msgstr "Eine gerade Linie erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:76
-msgid "Set Line drawing command"
-msgstr "Wähle Befehl um Linien zu zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:77
-msgid "Set Shape drawing command"
-msgstr "Wähle Befehl um Formen zu zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:78
-msgid "Draw table edge"
-msgstr "Tischkante zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:79
-msgid "Easement menu"
-msgstr "Einstellungen für Übergangsbögen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:81
-msgid "Generate a Parts List of selected objects"
-msgstr "Teileliste aus den ausgewählten Objekten erzeugen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:82
-msgid "Set Import/Export mode"
-msgstr "Import-/Exportmodus auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:83
-msgid "Export a .xti file"
-msgstr "Export in XTI Datei"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:84
-msgid "Export a DXF file"
-msgstr "Export nach DXF"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:86
-msgid "Flip selected objects"
-msgstr "Ausgewählte Objekte spiegeln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:87
-msgid "Adjust snap grid"
-msgstr "Fangraster anpassen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:88
-msgid "Enable snap grid"
-msgstr "Fangraster aktivieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:89
-msgid "Show snap grid"
-msgstr "Fangraster anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:90
-msgid "Create a structure from a Group of objects"
-msgstr "Objekte zu einer Gruppierung zusammen fassen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:91
-msgid "Create a hand-laid turnout"
-msgstr "Handgemachte Weiche erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:92
-msgid "Create a track helix"
-msgstr "Eine Gleiswendel erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:93
-msgid "Import a .xti file"
-msgstr "Importieren einer .xti-Datei"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:94
-msgid "Import an .xti file as a Module"
-msgstr "Importieren einer .xti-Datei als Modul"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:95
-msgid "Join two tracks"
-msgstr "Zwei Gleise zusammenfügen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:96
-msgid "Join two lines or polylines"
-msgstr "Verbinden von zwei Linien oder Polylinien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:97
-msgid "Set Join mode"
-msgstr "Verbindungsmodus einstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:98
-msgid "Change Layers"
-msgstr "Ebenen ändern"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:99
-msgid "Selects the current drawing layer"
-msgstr "Auswahl der aktuellen Zeichenebene"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:100
-msgid "Layout parameters"
-msgstr "Gleisplaneinstellungen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:102
-msgid "Show/Hide Map Window"
-msgstr "Übersichtsfenster anzeigen/verbergen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:103
-msgid "Modify or extend a track"
-msgstr "Ändern oder erweitern eines Gleises"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:104
-msgid "Change To modify mode"
-msgstr "Zum Modus \"Auswählen\" wechseln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:105
-msgid "Move selected objects"
-msgstr "Ausgewählte Objekte verschieben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:106
-msgid "Move a label"
-msgstr "Beschreibung verschieben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:107
-msgid "Move selected objects to current layer"
-msgstr "Ausgewählte Objekte auf die aktuelle Ebene verschieben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:109
-msgid "Print a bitmap"
-msgstr "Drucke in eine Grafikdatei"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:110
-msgid "Pan or zoom the layout"
-msgstr "Ausschnitt ändern oder Zoomen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:111
-msgid "Change to zoom/pan mode"
-msgstr "Zum Modus Zoom/Ausschnitt wechseln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:112
-msgid "Create a parallel track"
-msgstr "Ein Parallelgleis erzeugen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:113
-msgid "Create a parallel line"
-msgstr "Eine Parallele erzeugen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:114
-msgid "Set Parallel mode"
-msgstr "Parallelen-Modus einstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:115
-msgid "Register"
-msgstr "Registrierem"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:116
-msgid "Copy objects from clipboard"
-msgstr "Objekte von der Zwischenablage kopieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:117
-msgid "Perferences dialog"
-msgstr "Einstellungen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:118
-msgid "Display prices of turnouts, sectional tracks and structures"
-msgstr "Die Preise von Weichen, Gleisen und Gebäuden anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:119
-msgid "Print the layout"
-msgstr "Gleisplan ausdrucken"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:120
-msgid "Loads and unloads parameter files into/from toolbar"
-msgstr "Parameterdateien zur Werkzeugleiste zufügen oder daraus entfernen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:121
-msgid "Elevation Profile Command"
-msgstr "Höhenprofil bearbeiten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:123
-msgid "Command recorder"
-msgstr "Befehlsaufzeichnung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:125
-msgid "Update selected Turnout and Structure definitions"
-msgstr "Die ausgewählten Gebäude und Weichen aktualisieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:126
-msgid "Rescale selected objects"
-msgstr "Ausgewählte Objekte skalieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:127
-msgid "Rotate selected object(s)"
-msgstr "Ausgewählte Objekte drehen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:128
-msgid "Show a ruler"
-msgstr "Lineal anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:129
-msgid "Select objects"
-msgstr "Objekte auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:130
-msgid "Change To Select Mode"
-msgstr "Zum Modus \"Auswählen\" wechseln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:131
-msgid "Selects all objects on the layout"
-msgstr "Alle Objekte des Gleisplan auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:132
-msgid "Selects all objects in the current Layer"
-msgstr "Alle Objekte der aktuellen Ebene auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:133
-msgid "Invert current selection"
-msgstr "Auswahl umkehren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:134
-msgid "Split a track"
-msgstr "Gleis trennen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:135
-msgid "Select stranded (unconnected) track pieces"
-msgstr "Vereinzelte (nicht verbundene) Gleisstücke auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:136
-msgid "Create a sensor (ie. a occupancy detector or a toggle switch)"
-msgstr ""
-"Erstelle einen Sensor (z.B. eine Besetzterkennung oder einen Umschalter)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:137
-msgid "Create a signal for train control"
-msgstr "Ein Signal für die Zugsteuerung erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:138
-msgid "Choose which commands are sticky"
-msgstr "Auswahl dauerhafter Befehle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:139
-msgid "Create straight track"
-msgstr "Gerades Gleis erzeugen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:140
-msgid "Place a structure on the layout"
-msgstr "Ein Gebäude auf den Gleisplan setzen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:141
-msgid "Create a switchmotor for turnout control"
-msgstr "Einen Motor für die Weichensteuerung erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:142
-msgid "Edit a switchmotor definition"
-msgstr "Einen Weichenantrieb bearbeiten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:143
-msgid "Enter text on the layout"
-msgstr "Text auf den Gleisplan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:144
-#: ../../../../build/work/app/bin/bllnhlp.c:531
-msgid "Controls the size of the entered text"
-msgstr "Auswahl der Schriftgröße für einzugebenden Text"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:145
-msgid "Plain Text"
-msgstr "Einfacher Text"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:146
-msgid "Tip of the Day window"
-msgstr "Tipp des Tages"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:147
-msgid "Run Trains"
-msgstr "Zugbetrieb"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:148
-msgid "Change To Run Trains Mode"
-msgstr "Zum Modus \"Züge fahren\" wechseln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:149
-msgid "Pause/Resume Trains"
-msgstr "Zugbetrieb pausieren/fortsetzen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:150
-msgid "Place a car on the layout"
-msgstr "Einen Wagen auf den Gleisplan setzen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:151
-msgid "Exit Trains"
-msgstr "Zugbetrieb beenden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:152
-msgid "Hide/Unhide a track"
-msgstr "Verbergen/Zeigen eines Gleises"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:153
-msgid "Make/Unmake a track a bridge"
-msgstr "Ein Gleis zu einer Brücke machen/aufheben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:154
-msgid "Place a turnout or sectional track"
-msgstr "Weiche oder Gleis platzieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:155
-msgid "Create a new turnout definition"
-msgstr "Erstelle eine neue Weichendefinition"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:156
-msgid "Place a turntable"
-msgstr "Eine Drehscheibe setzen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:157
-msgid "Updates old source files with 3 part titles"
-msgstr "Aktualisiere alte Dateien mit dreiteiligen Titeln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:159
-msgid "Ungroup objects"
-msgstr "Gruppierung aufheben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:160
-msgid "Draw tracks with thin lines"
-msgstr "Gleise mit dünnen Linien zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:161
-msgid "Draw tracks with medium lines"
-msgstr "Gleise mit mittleren Linien zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:162
-msgid "Draw tracks with thick lines"
-msgstr "Gleise mit dicken Linien zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:163
-msgid "Change drawing scale"
-msgstr "Zeichenmaßstab auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:164
-#: ../../../../build/work/app/bin/bllnhlp.c:176
-msgid "Zoom in"
-msgstr "Zoom größer"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:165
-#: ../../../../build/work/app/bin/bllnhlp.c:177
-msgid "Zoom out"
-msgstr "Zoom kleiner"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:166
-msgid "File Menu"
-msgstr "Dateimenue"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:167
-msgid "Save layout"
-msgstr "Gleisplan speichern"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:168
-msgid "Save layout under a new name "
-msgstr "Gleisplan mit neuem Namen speichern "
-
-#: ../../../../build/work/app/bin/bllnhlp.c:169
-msgid "New layout"
-msgstr "Neuer Gleisplan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:170
-msgid "Generate parts list"
-msgstr "Teileliste erzeugen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:171
-msgid "Load a layout"
-msgstr "Gleisplan laden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:172
-msgid "Exit the program"
-msgstr "Programm beenden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:173
-msgid "Revert to last saved state of layout plan"
-msgstr "Zum letzten gespeicherten Stand zurücksetzen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:174
-msgid "Edit menu"
-msgstr "Bearbeiten Menu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:175
-msgid "Redraw layout"
-msgstr "Gleisplan neu zeichnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:178
-#: ../../../../build/work/app/bin/bllnhlp.c:181
-msgid "Tools menu"
-msgstr "Werkzeug Menu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:179
-msgid "View menu"
-msgstr "Menü für Anzeigefuinktionen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:180
-msgid "Toolbar configuration"
-msgstr "Konfiguration der Werkzeugleiste"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:182
-msgid "Options menu"
-msgstr "Optionen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:183
-msgid "Playback/Record commands"
-msgstr "Aufzeichnungs- und Wiedergabebefehle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:184
-msgid "Window menu"
-msgstr "Fenstermenu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:185
-msgid "Help menu"
-msgstr "Menu für Hilfe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:186
-msgid "Recent error messages and explanations"
-msgstr "Aktuellste Fehlermeldungen und Erläuterungen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:187
-msgid "Move Hot Bar left"
-msgstr "Schnellauswahl nach links bewegen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:188
-msgid "Move Hot Bar right"
-msgstr "Schnellauswahl nach rechts bewegen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:189
-msgid "Total track count"
-msgstr "Gesamtzahl der Gleise"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:190
-msgid "X Position of cursor"
-msgstr "X Position des Zeiger"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:191
-msgid "Y Position of cursor"
-msgstr "Y Position des Zeiger"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:192
-msgid "Drawing scale"
-msgstr "Zeichnungsmaßstab"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:193
-msgid "Message and status line"
-msgstr "Nachrichten- und Statuszeile"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:194
-#: ../../../../build/work/app/bin/bllnhlp.c:195
-msgid "Main layout canvas"
-msgstr "Hauptzeichenbereich"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:196
-msgid "Main drawing canvas"
-msgstr "Hauptzeichenbereich"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:197
-msgid "Command buttons"
-msgstr "Befehle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:198
-msgid "Menus"
-msgstr "Menues"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:199
-msgid "Tile, Filename and Window Manager buttons"
-msgstr "Tile, Filename and Window Manager buttons"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:200
-msgid "Turnout and Structure Hot Bar"
-msgstr "Weichen und Gebäude Auswahlleiste"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:201
-msgid "Active layer list and layer buttons"
-msgstr "Liste der aktiven Ebene und Ebenen-Knöpfe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:202
-msgid "Map window"
-msgstr "Kartenfenster"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:203
-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/work/app/bin/bllnhlp.c:204
-msgid "Raise or Lower all Selected Track"
-msgstr "Anheben oder Absenken der ausgewählten Gleise"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:205
-msgid "Name of block"
-msgstr "Name des Gleisblocks"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:206
-msgid "Script that the block will run"
-msgstr "Auszuführendes Skript"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:207
-msgid "List of tracks in the Block"
-msgstr "Liste der Gleise in einem Gleisblock"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:208
-msgid "Add or Update car object"
-msgstr "Einen Wagen zufügen oder aktualisieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:209
-msgid "Manufacturer name"
-msgstr "Name des Herstellers"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:212
-msgid "Is the Car a Locomotive?"
-msgstr "Ist der Wagen eine Lokomotive?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:213
-msgid "Part Number and Description"
-msgstr "Bestellnr. und Beschreibung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:214
-msgid "Manufacturer Part Number"
-msgstr "Bestellnummer des Herstellers"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:215
-msgid "Use the Selected figure as the car image"
-msgstr "Benutze die ausgewählte Zeichnung als Wagenabbild"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:216
-msgid "Use the default figure as the car image"
-msgstr "Benutze die Standardzeichnung als Wagenabbild"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:217
-msgid "Optional description of the Car Part"
-msgstr "Optionale Beschreibung des Wagenmuster"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:218
-msgid "Flip car image"
-msgstr "Wagenabbild spiegeln"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:219
-msgid "Display Car Item information or reporting marks and dimensions"
-msgstr "Informationen über den Wagen oder Kennzeichen und Abmessungen anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:220
-msgid "Full Roadname"
-msgstr "Bahngesellschaft"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:221
-#: ../../../../build/work/app/bin/bllnhlp.c:222
-msgid "Car Type"
-msgstr "Wagenart"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:223
-msgid "Reporting Marks (Roadname abbreviation)"
-msgstr "Wagenkennzeichen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:224
-#: ../../../../build/work/app/bin/bllnhlp.c:411
-msgid "Car Number"
-msgstr "Wagennummer"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:225
-msgid "Car body Color"
-msgstr "Wagenfarbe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:226
-msgid "Length of car body"
-msgstr "Länge des Aufbau"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:227
-msgid "Width of car body"
-msgstr "Breite des Aufbau"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:228
-msgid "Distance between Trucks "
-msgstr "Abstand zwischen den Drehgestellen "
-
-#: ../../../../build/work/app/bin/bllnhlp.c:229
-msgid "Distance Trucks are displaced along Car"
-msgstr "Abstand der Drehgestelle vom Wagenende"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:230
-msgid "Coupler are mounted on body or truck"
-msgstr "Kupplungen sind am Wagenaufbau oder an den Drehgestellen befestigt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:231
-msgid "Overall Coupled Length"
-msgstr "Gekuppelte Gesamtlänge"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:232
-msgid "Coupler Length from end of car"
-msgstr "Kupplungslänge vom Ende des Wagen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:233
-msgid "Diagram of Car"
-msgstr "Diagram der Lokomotive oder Wagens"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:234
-msgid "Item Index Number"
-msgstr "Laufende Nummer"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:235
-msgid "Original Purchase Price"
-msgstr "Ursprünglicher Kaufpreis"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:237
-msgid "Condition of car"
-msgstr "Zusatnd des Wagen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:238
-msgid "Original Purchase Date"
-msgstr "Ursprüngliches Kaufdatum"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:239
-msgid "Last Service Date"
-msgstr "Letztes Servicedatum"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:240
-msgid "Number of identical cars to be entered"
-msgstr "Anzahl der zusätzlichen, gleichartigen Wagen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:241
-msgid "Do all the cars have the same Number?"
-msgstr "Haben alle Wagen dieselbe Nummer?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:242
-msgid "Notes about the car"
-msgstr "Anmerkungen zu dem Wagen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:243
-#: ../../../../build/work/app/bin/bllnhlp.c:244
-msgid "Create a new car Part or Prototype definitions"
-msgstr "Einen neuen Lokomotiven oder Wagen Prototyp erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:245
-msgid "Finds the selected Car Item on the layout"
-msgstr "Suche den ausgewählten Wagen auf der Anlage"
-
-#: ../../../../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 "Sortierung auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:251
-msgid "Edit the selected Car Item"
-msgstr "Markierte Lokomotive oder Wagen bearbeiten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:252
-msgid "Add a new Car Item"
-msgstr "Neuen Wagen hinzufügen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:253
-msgid "Delete the selected Car Items"
-msgstr "Markierte Lokomotiven oder Wagen löschen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:254
-msgid "Import a Car Item .csv file"
-msgstr "Lokomotiven oder Wagen aus einer .csv Datei importieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:255
-msgid "Export a Car Item .csv file"
-msgstr "Exportieren der markierten Lokomotiven oder Wagen in eine .csv Datei"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:256
-msgid "Create a text list of the Car Items"
-msgstr "Textdatei der Lokomotiven oder Wagen erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:257
-msgid "Specifies the radius of the circle track"
-msgstr "Gibt den Radius des Gleiskreises an"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:258
-msgid "Default command is Describe or Select"
-msgstr "Standardbefehl ist Eigenschaften oder Auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:259
-msgid "Action to invoke on Right-Click"
-msgstr "Festlegen welche Aktion beim Rechtsklick erfolgen soll"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:260
-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/work/app/bin/bllnhlp.c:261
-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/work/app/bin/bllnhlp.c:263
-msgid "The list of control elements"
-msgstr "Die Liste der Steuerungselemente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:264
-msgid "Edit the element"
-msgstr "Das Element bearbeiten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:265
-msgid "Delete the element"
-msgstr "Das Element löschen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:266
-msgid "Contents Label for new Parameter file"
-msgstr "Inhaltsbeschreibung für neue Parameterdatei"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:267
-msgid "List of custom designed turnouts and structures"
-msgstr "Liste der individual entwickelten Weichen und Strukturen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:268
-msgid "Invoke designer editor"
-msgstr "Vorbild bearbeiten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:269
-msgid "Remove selected entries"
-msgstr "Ausgewählte Einträge löschen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:270
-msgid "Copy selected entries to Parameter File"
-msgstr "Ausgewählte Einträge in eine Parameterdatei verschieben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:271
-msgid "Create a New part or prototype"
-msgstr "Neues Teil oder Prototype erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:272
-msgid "Update custom file and close"
-msgstr "Anpassungs Verwaltung speichern und schliessen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:273
-msgid "Executes the next step of the demo"
-msgstr "Nächsten Schritt der momentanen Demo anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:274
-msgid "Skip to next demo"
-msgstr "Zum nächstes Demo Kapitel springen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:275
-msgid "Stops the demonstration and returns you to XTrackCAD"
-msgstr "Demonstrations Modus verlassen und zu XTrackCAD zurückkehren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:276
-msgid "Select speed of Playback"
-msgstr "Wiedergabegeschwindigkeit auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:277
-msgid "This is where comments about the demo are displayed"
-msgstr "Kommentar zu Demos anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:314
-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/work/app/bin/bllnhlp.c:315
-msgid "Color tracks by layer or individually"
-msgstr "Gleise nach Ebene oder einzeln einfärben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:316
-msgid "Color draw objects by layer or individually"
-msgstr "Objekte nach Ebene oder einzeln einfärben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:317
-msgid "Controls the drawing of hidden tracks"
-msgstr "Steuert das Zeichnen von versteckten Gleisen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:318
-msgid "Controls the drawing of End-Points"
-msgstr "Steuert das Zeichnen von Endpunkten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:319
-msgid "How to draw track ties"
-msgstr "Steuert das Zeichnen der Schwellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:320
-msgid "Show crosshair at center of curves"
-msgstr "Mittelpunkt als Fadenkreuz anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:321
-msgid "Drawing scale when to draw tracks with 2 rails"
-msgstr "Mindestmaßstab für die Anzeige von Gleisen mit zwei Schienen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:322
-msgid "Drawing scale of the map window"
-msgstr "Zeichenmaßstab des Kartenfenster"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:323
-msgid "Whether the main layout is updated while dragging on the Map"
-msgstr "Aktualisierung des Gleisplans wenn in der Karte gezogen wird"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:324
-msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
-msgstr "Zeige Beschriftungen für Weichen, Flexgleise und Steigungen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:325
-msgid "When to label Turnout, Flextrack Lengths and Elevations"
-msgstr "Wann sollen Weichen, Gleislängen oder Höhenmaß beschriftet werden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:326
-msgid "Font size for labels on layout"
-msgstr "Zeichengrösse für Beschriftungen im Gleisplan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:327
-msgid "Label elements on the Hot Bar"
-msgstr "Beschriftungselemente des Teilekatalogs"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:328
-msgid "Label elements on layout"
-msgstr "Beschriftungselemente im Gleisplan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:329
-msgid "Label elements for lists"
-msgstr "Beschriftungselemente in den Listen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:330
-msgid "How to group cars on the Train Hot Bar"
-msgstr "Gruppierung der Waggen im Teilekatalog"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:331
-msgid "Delay (in mS) between updating train movements"
-msgstr "Aktualisierungsintervall (in ms) der Zugbewegungen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:332
-msgid "Don't show trains in tunnels when tunnels are hidden"
-msgstr "Zeige keine Züge in Tunnels wenn Tunnel verborgen sind"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:333
-msgid "Display unconnected endpoints of track with special marks"
-msgstr "Unverbundene Endpunkte hervorheben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:334
-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/work/app/bin/bllnhlp.c:336
-msgid "Width of the lines"
-msgstr "Breite der Linien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:337
-msgid "Color of the lines"
-msgstr "Farbe der Linien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:338
-msgid "List of types of Lumber"
-msgstr "Liste der Leistenmaße"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:339
-msgid "Color of Benchwork"
-msgstr "Farbe des Unterbau"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:340
-msgid "Orientation of Benchwork"
-msgstr "Ausrichtung des Unterbau"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:341
-msgid "Size of Dimension Arrows"
-msgstr "Breite der Größenpfeile"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:342
-msgid "This controls the sharpness of the easement curve"
-msgstr "Steuert die Größe des Übergangsradius"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:343
-msgid "Minimum radius"
-msgstr "Mindestgleisradius"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:344
-msgid "Maximum offset"
-msgstr "Maximaler Abstand"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:345
-msgid "Easement length"
-msgstr "Länge des Übergangsbogen"
-
-#: ../../../../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 ""
-"Standardwerte 0,0, 0,5, 1,0 und 2,0 können schnell gesetzt werden. "
-"Übergangsbögen können hier nicht ausgeschaltet werden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:347
-msgid "Complete easement selection"
-msgstr "Auswahl der Übergangsbögen vervollständigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:348
-msgid "Type of elevation"
-msgstr "Typ des Höhendpunktes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:349
-msgid "Height of End Point"
-msgstr "Höhe des Endpunkt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:350
-msgid "Compute elevation based on neighbors"
-msgstr "Berechne das Höhenmaß gemäß der benachbarten Gleise"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:351
-msgid "Compute grade based on neighbors"
-msgstr "Berechne Steigung gemäß der benachbarten Gleise"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:352
-msgid "Specify a name for an End-Point"
-msgstr "Einen Namen für einen Endpunkt vergeben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:354
-msgid "Print parts list"
-msgstr "Stückliste drucken"
-
-#: ../../../../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 "Starte den Druckerkonfigursationsdialog"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:356
-msgid "Save parts list to file"
-msgstr "Stückliste in Datei speichern"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:357
-msgid "This is the list of parts for the layout"
-msgstr "Dies ist die Teileliste für diesen Gleisplan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:358
-msgid "Enable prices on the Parts List"
-msgstr "Preise in der Teileliste anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:359
-#: ../../../../build/work/app/bin/bllnhlp.c:362
-msgid "Spacing between major grid lines"
-msgstr "Abstand der Haupt Raster Linien einstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:360
-#: ../../../../build/work/app/bin/bllnhlp.c:363
-msgid "Allows the spacing to be subdivided"
-msgstr "Stellt die Unterteilung von Zwischenmarkierungen ein"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:361
-#: ../../../../build/work/app/bin/bllnhlp.c:364
-msgid "Specifies if positions are snaped in this direction"
-msgstr "Einschalten des Fangrasters für diese Ausrichtung"
-
-#: ../../../../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 "Gibt den Ausgangspunkt und Winkel des Rasters an"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:368
-msgid "Specifies if the grid is shown"
-msgstr "Anzeige des Rasters an oder aus"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:369
-msgid "Completes the grid specification"
-msgstr "Raster Anpassung speichern und beenden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:373
-msgid "Number of segments in Group"
-msgstr "Anzahl der Segmente in der Gruppe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:374
-msgid "Replace the Selected object with the new definition?"
-msgstr "Soll das ausgewählte Objekt durch die neue Definition ersetzt werden?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:375
-msgid "Creates a new Structure (or Turnout)"
-msgstr "Ein neues Gebäude (oder eine Weiche) erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:376
-msgid "Elevation difference of Helix End-Points"
-msgstr "Höhenunterschied zwischen den Endpunkten der Gleiswendel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:377
-msgid "Helix Radius"
-msgstr "Radius der Gleiswendel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:378
-msgid "Number of turns in the helix"
-msgstr "Anzahl der Umdrehungen in der Wendel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:379
-msgid "Angle betweek helix entrance and exit"
-msgstr "Winkel zwischen Zu- und Ausgang der Wendel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:380
-msgid "Grade in helix"
-msgstr "Steigung in der Wendel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:381
-msgid "Separation between helix layers"
-msgstr "Abstand zwischen den Ebenen der Wendel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:382
-msgid "Desired curve radius between straight tracks"
-msgstr "Gewünschter Radius zwischen geraden Gleisen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:383
-msgid "Layer list"
-msgstr "Liste der Ebenen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:384
-msgid "Layer Name"
-msgstr "Name der Ebene"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:385
-msgid "Color of layer"
-msgstr "Farbe der Ebene"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:386
-msgid "Layer is drawn on Main window"
-msgstr "Ebene im Hauptfenster darstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:387
-msgid "Layer cannot be changed"
-msgstr "Ebene schützen - kann nicht mehr geändert werden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:388
-msgid "Layer is drawn on Map window"
-msgstr "Ebene im Kartenfenster anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:389
-msgid "Number of layer buttons to show"
-msgstr "Anzahl der Ebenenknöpfe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:390
-msgid "Number of objects in this layer"
-msgstr "Anzahl von Objekten in dieser Ebene"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:392
-msgid "Load layer configuration from default"
-msgstr "Persönliche Einstellungen für Ebenen laden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:393
-msgid "Save current layer configuration as default"
-msgstr "Momentane Einstellung für Ebenen speichern"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:394
-msgid "Overwrite layer configuration with system default values"
-msgstr "Einstellung für Ebenen auf Systemvorgabe zurück setzen"
-
-#: ../../../../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 "Größenangabe des Raums (in Zentimeter oder Inch)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:397
-msgid "Specifies the layout Title that will appear on printouts"
-msgstr "Angabe eines Layout Titels welcher auf Ausdrücken erscheint"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:398
-msgid "Specifies the layout Subtitle that will appear on printouts"
-msgstr "Angabe eines Layout Untertitels welcher auf Ausdrücken erscheint"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:399
-msgid "Specifies the Modelling Scale"
-msgstr "Angabe des Modellbahnmaßstabs"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:400
-msgid "Specifies the rail gauge, ie. the distance between the rails"
-msgstr "Angabe der Spurweite, d.h. der Abstand zwischen den Schienen"
-
-#: ../../../../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 ""
-"Angabe des minimalen Gleisradius (in Zentimeter oder Inch). Gleise mit "
-"geringerem Radius werden als Ausnahme angesehen."
-
-#: ../../../../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 ""
-"Angabe der maximalen Gleissteigung in %. Gleise mit größerer Steigung werden "
-"als Ausnahme angesehen."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:403
-msgid "Select the background image"
-msgstr "Das Hintergrundbild auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:404
-msgid "Remove the background image"
-msgstr "Das Hintergrundbild entfernen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:405
-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/work/app/bin/bllnhlp.c:406
-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/work/app/bin/bllnhlp.c:407
-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/work/app/bin/bllnhlp.c:408
-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/work/app/bin/bllnhlp.c:409
-msgid "Specifies the rotation angle of the background image in degrees"
-msgstr "Bestimmt den Winkel des Hintergrndbildes in Grad"
-
-#: ../../../../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 ""
-"Dies ist der Notiztext. Um diesen zu ändern, wählen Sie bitte 'Ändern' aus "
-"dem 'Datei'-Menu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:414
-msgid "Specifies number of pixels per inch (or centimeter)"
-msgstr "Gibt die Anzahl der Bildpunkte pro Inch (oder Zentimeter) an"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:416
-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/work/app/bin/bllnhlp.c:417
-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/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 ""
-"Gibt das Ausmaß der Zunahme des Abstands, basierend auf dem Radius an. Null "
-"ist keine Zunahme."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:419
-msgid "Enter your name as specified in the XTrackCAD Registration Notice"
-msgstr "Enter your name as specified in the XTrackCAD Registration Notice"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:420
-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/work/app/bin/bllnhlp.c:421
-msgid "Validates the name and key. Terminates the registration command"
-msgstr "Validates the name and key. Terminates the registration command"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:422
-msgid "0ᅵ is up or to the right"
-msgstr "0° ist nach oben oder nach rechts"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:423
-msgid "Choose english (inches) or metric (centimeters)"
-msgstr "Einheiten auswählen: Englisch für Inches oder Metrisch für Zentimeter"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:424
-msgid "How to display length measurements"
-msgstr "Längenformat auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:425
-msgid "Do not create tracks to be shorter than this value"
-msgstr "Keine Gleise kürzer als diese Mindestlänge erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:426
-msgid "Maximum distance between connected end points"
-msgstr "Maximale Distanz zwischen verbundenen Endpunkten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:427
-msgid "Minimum angle between connected End-Points"
-msgstr "Kleinster Winkel zwischen verbundenen Endpunkten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:428
-msgid "Specifies the minimum angle between tracks connected to a turntable"
-msgstr "Kleinster Winkel beim Anschluss von Gleisen an eine Drehscheibe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:429
-msgid "Trains will crash above this speed"
-msgstr "Züge entgleisen oberhalb dieser Geschwindigkeit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:430
-msgid "Enable/Disable balloon popup help windows"
-msgstr "Ein-/Ausschalten von Erklärungshilfen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:431
-msgid "Enable/Disable show of flextrack on hotbar"
-msgstr "Anzeige von Flexgleis in der Auswahlleiste ein- und ausschalten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:432
-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/work/app/bin/bllnhlp.c:433
-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/work/app/bin/bllnhlp.c:434
-msgid "Minimum distance (in pixels) between grid lines/ticks"
-msgstr "Mindestabstand (in Pixeln) zwischen Raster und Linien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:435
-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/work/app/bin/bllnhlp.c:436
-msgid "Specifies the number of checkpoints after save before auto-saving."
-msgstr ""
-"Gibt die Anzahl der Sicherungskopien vor einer automatischen Sicherung an."
-
-#: ../../../../build/work/app/bin/bllnhlp.c:437
-msgid "Resume work on last layout or start with new layout"
-msgstr "Letzten Gleisplan bearbeiten, oder einen neuen Gleisplan erstellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:439
-msgid "Updated cost of current selected item"
-msgstr "Aktualisierte Kosten für den ausgewählten Gegenstand"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:441
-msgid "Selection list for prices"
-msgstr "Auswahlliste für Preise"
-
-#: ../../../../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 "Preis für die angegebene Länge des Flex-Gleises"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:446
-msgid "Controls the printing of a centerline of track cmdPrint"
-msgstr "Steuert das Zeichnen der Mittellinie von Gleisen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:447
-msgid "Controls the reduction (scale) of the printout"
-msgstr "Einstellung des Verkleinerungsmaßstabs für den Ausdruck"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:448
-msgid "Scaled page width (Scale times physical page width)"
-msgstr "Seitenbreite angeben (Maßstab mal physikalischer Papierbreite)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:449
-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/work/app/bin/bllnhlp.c:450
-msgid "Scaled page height (Scale times physical page height)"
-msgstr "Seitenhöhe angeben (Maßstab mal physikalischer Papierhöhe)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:451
-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/work/app/bin/bllnhlp.c:452
-msgid "Print page in Portrait or Landscape format"
-msgstr "Drucke im Hochformat oder Querformat"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:453
-msgid "Order of printing pages"
-msgstr "Druckreihenfolge"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:454
-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/work/app/bin/bllnhlp.c:455
-msgid "Ignore unprintable page margins?"
-msgstr "Nicht druckbare Seitenränder ignorieren?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:456
-msgid "Print Registration Marks at 1:1?"
-msgstr "Drucke Positionierungshilfen im 1:1 Maßstab?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:457
-msgid "Print Snap Grid?"
-msgstr "Fangraster drucken?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:458
-msgid "Print Rulers on all page edges?"
-msgstr "Lineale an allen Seitenecken drucken?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:459
-msgid "Print Roadbed Outline?"
-msgstr "Gleisbettung drucken?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:460
-msgid "Print Roadbed Outline"
-msgstr "Gleisbettung drucken"
-
-#: ../../../../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 ""
-"Ursprung des Druckraster. Hilfreich, wenn einige Seiten erneut gedruckt "
-"werden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:463
-msgid "Resets the origin and angle to 0"
-msgstr "Ausrichtung und Winkel auf 0 zurücksetzen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:465
-msgid "Deselects all pages"
-msgstr "Alle Seiten abwählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:467
-msgid "Print selected pages and terminates the print command"
-msgstr "Ausdrucken der ausgewählten Seiten und den Dialog Drucken schließen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:468
-msgid "List of loaded, shown or hidden parameter files"
-msgstr "Liste der geladenen, angezeigten und inaktiven Parameterdateien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:469
-msgid "Show parameter files by names or descriptions"
-msgstr "Zeige Namen oder Beschreibung der Parameter-Dateien an"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:470
-msgid "Toggle the shown status of the selected parameter file"
-msgstr "Ändert den Anzeigestatus für ausgewählte Parameter-Dateien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:471
-msgid "Find extra parameter files from the filesystem"
-msgstr "Suche weitere Parameterdateien auf der Festplatte"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:472
-msgid "Find parameter files from the system library"
-msgstr "Suche Parameterdateien in der Systembibliothek zum Einlesen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:473
-msgid "Update parameter file list"
-msgstr "Aktualisiere die Liste der Parameterdateien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:474
-msgid "Reload parameter file from list"
-msgstr "Parameterdateien erneut einlesen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:475
-msgid "Select all parameter files shown"
-msgstr "Alle angezeigten Parameter-Dateien auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:476
-msgid "Profile of specified path"
-msgstr "Höhenprofil der ausgewählten Verbindung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:477
-msgid "Clear the profile"
-msgstr "Lösche das Höhenprofil"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:478
-msgid "Print the profile"
-msgstr "Höhenprofil drucken"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:480
-msgid "Stop recording"
-msgstr "Aufzeichnung beenden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:481
-msgid "Insert a message"
-msgstr "Eine Nachricht einfügen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:482
-msgid "End a message"
-msgstr "Ende einer Mitteilung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:483
-msgid "Message body"
-msgstr "Mitteilung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:484
-msgid "Possible turnouts"
-msgstr "Mögliche Weichen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:485
-msgid "Skip this turnout"
-msgstr "Diese Weiche überspringen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:487
-msgid "Manufacturer of Object"
-msgstr "Hersteller des Objektes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:488
-msgid "Description of Object"
-msgstr "Beschreibung des Objekte"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:489
-msgid "Part Nuber of Object"
-msgstr "Bestellnummer des Objektes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:491
-msgid "Rescale by Scale Conversion or by Ratio"
-msgstr "Durch Auswahl eines Maßstab oder eines Multiplikators skalieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:492
-msgid "Original Scale of the selected objects"
-msgstr "Ursprünglicher Maßstab der ausgewählten Objekte"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:493
-msgid "Original Gauge of the selected objects"
-msgstr "Ursprüngliche Spurweite der ausgewählten Objekte"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:494
-msgid "New Scale of the selected objects"
-msgstr "Neuer Maßstab der ausgewählten Objekte"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:495
-msgid "New Gauge of the selected objects"
-msgstr "Neu Spurweite der ausgewählten Objekte"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:496
-msgid "Change track dimensions to new scale"
-msgstr "Abmessungen des Gleises auf den neuen Maßstab umrechnen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:497
-msgid "Change size by this amount"
-msgstr "Größe um einen Faktor verändern"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:499
-msgid "Snap Grid Line and Division"
-msgstr "Fangraster Linien und Unterteilungen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:500
-msgid "X and Y position markers"
-msgstr "X und Y Positionsmarkierungen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:501
-msgid "Border rulers, room boundaries and table edges"
-msgstr "Begrenzungslinien, Raumumriß und Anlagenkanten"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:502
-msgid "Primary Axis of grid rotation"
-msgstr "Erste Achse für Rasterdrehung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:503
-msgid "Secondary Axis of grid rotation"
-msgstr "Zweite Achse für Rasterdrehung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:504
-msgid "Unselected tracks"
-msgstr "Nicht ausgewählte Gleise"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:505
-msgid "Selected tracks"
-msgstr "Ausgewählte Gleise"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:506
-msgid "Color of tracks on the Profile path"
-msgstr "Farbe für Gleise auf Höhenverlauf"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:507
-msgid "Color of Exceptional tracks"
-msgstr "Farbe für Gleise außerhalb der Grenzwerte"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:508
-msgid "Color of track ties"
-msgstr "Farbe der Schwellen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:509
-msgid "Updates the colors"
-msgstr "Farben aktualisieren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:510
-msgid "Angle in degrees"
-msgstr "Winkel in Grad"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:511
-msgid "Rotate object(s) by specified amount"
-msgstr "Objekte um einen bestimmten Winkel drehen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:512
-msgid "Enter one or more words as search terms '*' means all"
-msgstr ""
-"Geben Sie ein oder mehrere Wörter als Suchbegriffe ein '*' bedeutet alle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:513
-msgid "Find matching file descriptions"
-msgstr "Passende Inhaltsbeschreibungen finden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:514
-msgid "Search Results"
-msgstr "Suchergebnisse"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:515
-msgid "Show Descriptions or FileNames in results"
-msgstr "Beschreibungen oder Dateinamen in Ergebnissen anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:516
-msgid "Add selected entries into parameter file list"
-msgstr "Ausgewählte Einträge zur Liste der Parameterdateien zufügen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:517
-msgid "Select All found entries"
-msgstr "Alle Suchergebnisse auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:518
-msgid "Reload the system library contents for finding"
-msgstr "Laden Sie den Inhalt der Systembibliothek zum Suchen neu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:519
-msgid "Choose commands to be sticky"
-msgstr "Wiederholte Befehle auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:520
-msgid "Make the commands sticky"
-msgstr "Mache die Befehle wiederholbar"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:521
-msgid "List of available structure"
-msgstr "Liste der verfügbaren Gebäude"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:522
-msgid "Diagram of the selected structure"
-msgstr "Zeichnung des ausgewählten Gebäudes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:523
-msgid "Hide Selection window when placing Structure"
-msgstr "Verberge Auswahlfenster bis das Gebäude plaziert ist"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:524
-msgid "Drawing scale and size"
-msgstr "Zeichnungsmaßstab und Größe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:525
-msgid "Complete structure placement"
-msgstr "Anordnung des Gebäude abschliessen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:526
-msgid "Choose a Pier number"
-msgstr "Bestellnummer eingeben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:527
-msgid "Name of the Motor"
-msgstr "Name des Weichenantriebs"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:528
-msgid "Value when switch is normal"
-msgstr "Werte bei normaler Weichenposition"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:529
-msgid "Value when the switch is reversed"
-msgstr "Wert bei umgekehrter Weichenposition"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:530
-msgid "Value for a positive comfirmation of switch position"
-msgstr "Wert bei positiver Bestätigung der Weichenposition"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:532
-msgid "Useful information about the program"
-msgstr "Nützliche Informationen über das Programm"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:533
-msgid "Show Tip of the Day every time the program starts"
-msgstr "Bei jedem Start den Tipp des Tages anzeigen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:534
-msgid "Show the next Tip of the Day"
-msgstr "Gehe zum nächsten Tipp des Tages"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:535
-msgid "Show the previous Tip of the Day"
-msgstr "Gehe zum vorherigen Tipp des Tages"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:537
-msgid "Controls which Command Buttons are displayed"
-msgstr "Ein- oder Ausblenden von Befehls-Knöpfen in der Werkzeugleiste"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:538
-msgid "List of Cars"
-msgstr "Liste der Wagen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:539
-msgid "List of active trains"
-msgstr "Liste der aktiven Züge"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:541
-msgid "Train odometer"
-msgstr "Entfernungsmesser"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:542
-msgid "Reset odometer to 0"
-msgstr "Kilometerzähler auf 0 zurücksetzen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:543
-msgid "Find train on layout"
-msgstr "Finde einen Zug auf der Anlage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:544
-msgid "Follow train around layout"
-msgstr "Zum Zug über die Anlage folgen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:545
-msgid "Flip direction at End Of Track"
-msgstr "Am Ende des Gleis die Fahrtrichtung umkehren"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:546
-msgid "Change direction of train"
-msgstr "Richtung des Zuges ändern"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:547
-msgid "Stop the train"
-msgstr "Anhalten des Zuges"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:548
-msgid "List of available turnouts for the current scale"
-msgstr "Liste der im aktuellen Maßstab verfügbaren Weichen"
-
-#: ../../../../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 ""
-"Zeichnung der ausgewählten Weiche. Der aktive Endpunkt kann durch Klicken "
-"auf einen Endpunkt gesetzt werden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:550
-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/work/app/bin/bllnhlp.c:551
-msgid "Hide Selection window when placing Turnout"
-msgstr "Auswahlfenster während des Verlegen verbergen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:552
-msgid "The selected Active End-Point"
-msgstr "Der ausgewählte, aktive Endpunkt"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:553
-msgid "Current selected turnout, (displayed in the diagram window)"
-msgstr "Momentan ausgewählte Weiche, (sichtbar im Diagram-Fenster)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:554
-msgid "One the End-Points that can be selected"
-msgstr "Einer der Endpunkte, der ausgewählt werden kann"
-
-#: ../../../../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 "Winkel zwischen dem ausgwählten Gleise und der Mittellinie der Weiche"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:558
-msgid "Specifies if angles are entered as Frog Numbers or in degrees"
-msgstr "Soll der Winkel als Steigung oder in Grad angegeben werden"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:559
-#: ../../../../build/work/app/bin/bllnhlp.c:560
-msgid "Desciption"
-msgstr "Beschreibung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:561
-msgid "Turnout description (Manuf., Size, Part Number, etc)"
-msgstr "Beschrebung der Weiche (Hersteller, Winkel, Teilenummer, etc.)"
-
-#: ../../../../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 "Länge von der Grundlinie zum Ende des ausgewählten Gleis"
-
-#: ../../../../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 "Abstand des Endpunktes von der Mittellinie der Weiche"
-
-#: ../../../../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 "Erstellt einen Probeausdruck der Weiche"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:572
-msgid "Color of Roadbed lines"
-msgstr "Farbe der Gleisbettlinien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:573
-msgid "Width of Roadbed lines"
-msgstr "Abstand des Gleisbettmarkierungen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:574
-msgid "Width of Roadbed"
-msgstr "Breite des Gleisbett"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:576
-msgid "Closes the window and returns to the Turnout Selection window"
-msgstr "Schliesst das Fenster und kehrt zur Weichenauswahl zurück"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:577
-msgid "Specifies the diameter of the turntable"
-msgstr "Legt den Durchmesser der Drehscheibe fest"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:578
-msgid "Old Turnout title"
-msgstr "Alter Bezeichnung der Drehscheibe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:579
-msgid "List of available titles"
-msgstr "Liste der verfügbaren Titel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:580
-msgid "Leave the Turnouts' title unchanged"
-msgstr "Tiitel der Weiche unverändert lassen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:581
-msgid "Invoke the Parameter Files dialog"
-msgstr "Auswahl der Parameterdateien"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:582
-msgid "List of available turnouts"
-msgstr "Liste der verfügbaren Weichen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:583
-msgid "Update the Turnouts' title"
-msgstr "Aktualisiere den Titel des Gleis"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:587
-msgid "Sample"
-msgstr "Beispiel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:589
-msgid "Slant"
-msgstr "Neigung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:590
-msgid "Font selection dialog"
-msgstr "Dialog zur Auswahl der Schriftart"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:591
-msgid "Weight"
-msgstr "Gewicht"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:592
-msgid "Printer Abort Window"
-msgstr "Druck abbrechen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:593
-msgid "Print to filename"
-msgstr "Name der Druckdatei"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:594
-msgid "Specify Postscript font alias mapping"
-msgstr "Zuordnung der Postscript-Schriftarten angeben"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:595
-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/work/app/bin/bllnhlp.c:596
-msgid "Closes this dialog"
-msgstr "Dialogfenster schliessen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:597
-msgid "Page orientation"
-msgstr "Seitenausrichtung"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:598
-msgid "Unprintable margins"
-msgstr "Nicht druckbare Ränder"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:599
-msgid "Updates and closes this dialog"
-msgstr "Dialogfenster aktualisieren und schliessen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:600
-msgid "Choose paper size"
-msgstr "Papierformat auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:601
-msgid "Choose printer"
-msgstr "Drucker auswählen"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:602
-msgid "Print test page"
-msgstr "Drucke Testseite"
-
-#. 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 "
@@ -10112,8 +8442,8 @@ msgstr ""
"abgespielt werden indem im Hilfe Menü des Hauptfensters der Punkt \"Demos\" "
"ausgewählt wird."
-#. 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"
@@ -10127,8 +8457,8 @@ msgstr ""
"auf Datei zu klicken und dann im aufgehenden Untermenü auf die Auswahl Punkt "
"Öffnen."
-#. 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."
@@ -10138,8 +8468,8 @@ msgstr ""
"vorgenommen werden, damit der neu eingestellte Maßstab mit dem Maßstab der "
"geladenen Parameterdatei übereinstimmt."
-#. 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\"."
@@ -10147,8 +8477,8 @@ msgstr ""
"Es werden eine Reihe von Beispiel-Gleisplänen bereitgestellt. Auf diese "
"Dateien kann über \"Hilfe|Beispiele\" zugegriffen werden."
-#. 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 "
@@ -10159,8 +8489,8 @@ msgstr ""
"Zentimeter. Diese Einstellung können Sie über den Dialog \"Optionen|"
"Einstellungen\" ändern, indem Sie zwischen Englisch und Metrisch wechseln."
-#. 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."
@@ -10168,8 +8498,8 @@ msgstr ""
"Die Gesamtgröße Ihres Gleisplans kann über den Dialog \"Optionen|Gleisplan\" "
"eingestellt werden."
-#. 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|"
@@ -10180,8 +8510,8 @@ msgstr ""
"ändern. Dies kann über den Dialog \"Optionen|Befehl\" unter Standardbefehl "
"erfolgen."
-#. 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 "
@@ -10191,8 +8521,8 @@ msgstr ""
"markiert, genau an dieser Stelle wird das Gleis getrennt wenn es verschoben "
"oder gedreht wird."
-#. 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"
@@ -10200,11 +8530,11 @@ msgid ""
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."
+"Umschalt Taste nach links ziehen bewegt das Raster, Umschalt Taste nach "
+"rechts ziehen rotiert das Raster."
-#. 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 "
@@ -10214,13 +8544,13 @@ 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 "
+"halten Sie dann die Umschalt-Taste gedrückt während Sie den Gleisabschnitt "
"verschieben.\n"
-"Wiederhohlen Sie diese Aktion mit diesem neuen Endpunkt um Gleisabschnitte "
+"Wiederholen Sie diese Aktion mit diesem neuen Endpunkt um Gleisabschnitte "
"weiter zu zerlegen."
-#. 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"
@@ -10243,8 +8573,8 @@ msgstr ""
"Sie können auf die kleine Schaltfläche rechts neben der Befehlsschaltfläche "
"Kurve klicken, um die Methode zu ändern."
-#. 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 "
@@ -10256,8 +8586,8 @@ msgstr ""
"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: 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 "
@@ -10283,12 +8613,12 @@ msgstr ""
" 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: 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 "
@@ -10299,23 +8629,23 @@ 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 "
+"Ü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: 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 ""
-"\"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: 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"
@@ -10328,8 +8658,8 @@ msgstr ""
"dazu benutzt werden den kleinstmöglichen Winkel, beim Anschluss solcher "
"Gleise, einzustellen."
-#. 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 "
@@ -10338,23 +8668,23 @@ msgid ""
"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 "
+"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 <Geisplan>.xtc"
+"ckp (im Arbeitsverzeichnis von XTrackCAD) nach <Gleisplan>.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 ""
-"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: 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"
@@ -10362,15 +8692,15 @@ msgid ""
"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 "
+"\"Ändern|Auswählen\" Kommandos ausgewählt werden und dann durch "
+"gleichzeitiges festhalten der Umschalt-Taste und einer Maustaste bewegt "
"werden.\n"
-"Shift und linke Maustaste verschiebt ein Gleis.\n"
-"Shift und rechte Maustaste rotiert ein Gleis.\n"
+"Umschalt und linke Maustaste verschiebt ein Gleis.\n"
+"Umschalt und rechte Maustaste rotiert ein Gleis.\n"
"Steuerung und linke Maustaste verschiebt Beschreibungen."
-#. 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."
@@ -10378,8 +8708,8 @@ msgstr ""
"Das Fangraster kann bewegt oder gedreht werden um es an Gleisen oder "
"Aufbauten ausrichten zu können."
-#. 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 "
@@ -10392,8 +8722,8 @@ msgstr ""
"Die auftauchende Liste zeigt die Länge der ausgewählten Gleise an. Die Länge "
"der Weichen muss hinzugezählt werden."
-#. 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"
@@ -10405,8 +8735,8 @@ msgstr ""
"Stellen Sie sicher das der Auswahlpunkt \"Längen\" im Dialog \"Optionen|"
"Anzeige\" ausgewählt ist."
-#. 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"
@@ -10423,11 +8753,11 @@ msgstr ""
"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."
+"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/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 "
@@ -10436,22 +8766,22 @@ 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: 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 ""
"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: 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 "
@@ -10459,11 +8789,11 @@ msgid ""
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."
+"Anzahl der Schaltflächen für Ebenen wird über den Dialog \"Verwalten|"
+"Ebenen\" eingestellt."
-#. 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). "
@@ -10479,87 +8809,88 @@ msgstr ""
"Kartenmaßstab entweder erhöht oder verkleinert wird.\n"
"XTrackCAD lässt keine zu kleinen/großen Werte für das Kartenfenster zu."
-#. 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 ""
-"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 gleichen Dialog "
-"entladen werden. Hierdurch werden nicht mehr benötigte Weichen/Gleise von "
-"der Schnellauswahl gelöscht was das Programm schneller starten läßt."
+"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ässt."
-#. 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 ""
-"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: 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 ""
-"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: 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"
"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 "
+"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 "
+"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: 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 "
"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 "
+"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: 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 ""
"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: 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 ""
-"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: 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 "
@@ -10568,8 +8899,8 @@ msgstr ""
"Im \"Drucken\" Dialog kann, die Auswahl \"Gleisbettung drucken\" ausgewählt "
"werden, um im (1:1) Maßstab Gleisbettvorlagen ausdrucken zu können."
-#. 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)."
@@ -10578,8 +8909,8 @@ msgstr ""
"automatisch der Standardbefehl aktiviert, (was entweder Eigenschaften oder "
"Auswählen ist)."
-#. 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 "
@@ -10589,12 +8920,13 @@ msgid ""
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."
+"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: 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 "
@@ -10605,8 +8937,8 @@ msgstr ""
"Fangrasters geändert werden um es beim ausdrucken besser sichtbar machen zu "
"können."
-#. 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. "
@@ -10617,12 +8949,13 @@ 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"
+"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 getrente Möglichkeit zur Aktivierung von Farben."
+"für Gleise und Sonstige eine getrennte Möglichkeit zur Aktivierung von "
+"Farben."
-#. 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."
@@ -10630,25 +8963,25 @@ msgstr ""
"Jede Ebene kann im Dialog \"Verwalten|Ebenen\" verborgen oder angezeigt "
"werden."
-#. 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 ""
-"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: 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 ""
"Der Name einer Ebene wird in der Sprechblase der jeweiligen Ebene angezeigt."
-#. 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."
@@ -10656,8 +8989,8 @@ msgstr ""
"Die Wiedergabegeschwindigkeit von Demos kann durch den Auswahlreiter rechts "
"oben im Demo Fenster eingestellt werden."
-#. 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 "
@@ -10668,8 +9001,8 @@ msgstr ""
"angezeigt. Zum Beispiel: Strg+P im Menü \"Datei|Drucke\" ruft den Drucken "
"Dialog auf."
-#. 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"
@@ -10681,8 +9014,8 @@ msgstr ""
"erreicht indem kleine Lücken bei andern Gleisen eingefügt werden damit die "
"beiden Endpunkte miteinander verbunden werden können."
-#. 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 "
@@ -10696,20 +9029,20 @@ msgstr ""
"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: 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 ""
"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: 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-"
@@ -10717,14 +9050,15 @@ msgid ""
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 drücken "
-"der linken Maustaste werden die selektierten Gleise dem Endpunkt hinzugefügt."
+"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: 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 "
@@ -10739,8 +9073,8 @@ msgstr ""
"Die angegebenen Preise werden verwendet um die Gesamtkosten im Dialog "
"\"Verwalten|Teileliste\" auflisten zu können."
-#. 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"
@@ -10752,15 +9086,15 @@ msgid ""
"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"
+"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: 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"
@@ -10772,25 +9106,25 @@ msgstr ""
"können somit im Bedarfsfall sehr leicht versteckt werden, indem man die "
"zugehörige Ebene einfach ein oder ausblendet."
-#. 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 ""
-"Längen können unabhänig der voreingestellten Werte im \"Optionen|"
+"Längen können unabhängig der voreingestellten Werte im \"Optionen|"
"Einstellungen\" Dialog eingegeben werden."
-#. 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 ""
"Metrische Werte können eingegeben werden auch wenn die Einstellung für "
"Einheiten Englisch gewählt ist."
-#. 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."
@@ -10798,8 +9132,8 @@ msgstr ""
"Bei Eingabe von Entfernungen und Längen können Sie '=' Zeichen verwenden um "
"den Wert im voreingestellten Format anzuzeigen."
-#. 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."
@@ -10807,34 +9141,34 @@ 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: 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 "Die Taste 'p' konvertiert eine Maßstab Messung in eine Muster Messung."
-#. 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 ""
-"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: 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 ""
-"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: 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 "
@@ -10844,8 +9178,8 @@ msgstr ""
"Reihenfolge der Seiten ändern um diese in der richtigen Reihenfolge "
"auszudrucken."
-#. 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 "
@@ -10854,8 +9188,8 @@ msgstr ""
"Im Dialog \"Verwalten|Wagenverzeichnis\" können eigene Werte für Hersteller, "
"Artikelnummer und Straße direkt in der angezeigten Liste eingegeben werden."
-#. 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"
@@ -10863,44 +9197,44 @@ msgid ""
"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 "
+"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: 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 ""
-"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: 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 ""
"Benutzen Sie den Zugsteckenzähler um Entfernungen auf dem Gleis messen zu "
"können."
-#. 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"
"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: 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."
@@ -10908,8 +9242,8 @@ msgstr ""
"Durch Benutzung des \"Gleis auftrennen\" Kommandos kann man durch Festhalten "
"der Umschalt-Taste das Ende einer Weiche anpassen."
-#. 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"
@@ -10920,8 +9254,8 @@ msgstr ""
"Abstände können entweder an einem oder beiden Enden eingefügt werden, diese "
"werden durch dicke Linien gekennzeichnet."
-#. 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"
@@ -10936,8 +9270,8 @@ msgstr ""
"eine offene Weiche treffen. \n"
"Entgleiste Züge müssen von Hand wieder auf das Gleis zurück gestellt werden."
-#. 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."
@@ -10946,8 +9280,8 @@ msgstr ""
"Gleis anzuhängen oder einen neue Definition zu erstellen, in der einzelne "
"Gleise zusammengefasst werden."
-#. 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"
@@ -10955,51 +9289,51 @@ msgid ""
"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: 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 ""
"Weichen, Kurven und Gleiswendel Beschreibungen können einzeln an und aus "
-"geschaltet werden. Halten Sie hierzu die Shift Taste gedrückt während Sie "
+"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: 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 ""
"Das Kommando \"Ändern|Eigenschaften\" wird verwendet um die Schriftgröße von "
"Textobjekten zu ändern."
-#. 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 ""
"Das Kommando \"Ändern|Eigenschaften\" wird verwendet um die Größe von "
"Dimensions Linien Beschreibungen zu ändern."
-#. 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"
"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ü "
+"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: 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"
@@ -11011,19 +9345,19 @@ msgstr ""
"Die ausgewählten Objekte werden so rotiert dass der erste Auswahlpunkt "
"parallel zum zweiten Auswahlpunkt erscheint."
-#. 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 ""
-"Speichern als Bitmap ermöglicht das mitspeichern der Gleismitte. \n"
+"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: 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."
@@ -11031,8 +9365,8 @@ msgstr ""
"Sie können markierte Gleise in eine DXF Datei exportieren, welche von den "
"meisten CAD Programmen lesbar ist."
-#. 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 "
@@ -11046,8 +9380,8 @@ msgstr ""
"der Auswahl \"Einheiten\" im Dialog \"Optionen|Einstellungen\" vorgenommen "
"werden."
-#. 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"
@@ -11057,11 +9391,11 @@ msgstr ""
"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: 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 "
@@ -11072,8 +9406,8 @@ msgstr ""
"Falls möglich werden rechte Weichen in linke Weichen umbenannt oder linke in "
"rechte."
-#. 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"
@@ -11086,13 +9420,13 @@ msgstr ""
"Danach benutzen Sie das Kommando \"Verwalten|Gruppieren\" um Ihre neue "
"Definition wieder als Gruppierung zusammen zu fügen."
-#. 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 "Maßlinien zeigen die Entfernung zwischen zwei Punkten an."
-#. 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 "
@@ -11103,21 +9437,21 @@ msgstr ""
"Das Kommando \"Darunter\" im Menü \"Bearbeiten\" wird benutzt um Unterbauten "
"korrekt unter den Gleise darstellen zu können."
-#. 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"
"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: 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"
@@ -11129,8 +9463,8 @@ msgstr ""
"Die Farbe des Fangrasters, Ränder sowohl als auch für normale selektierte "
"und Ausnahme Gleise können angegeben werden."
-#. 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 "
@@ -11145,8 +9479,8 @@ msgstr ""
"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: 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"
@@ -11158,8 +9492,8 @@ msgstr ""
"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: 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."
@@ -11167,8 +9501,8 @@ 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: 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 "
@@ -11177,7 +9511,7 @@ msgid ""
"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"
+"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 "
@@ -11185,8 +9519,8 @@ msgstr ""
"Dann können Sie die Helix platzieren und mit anderen Gleisen verbinden, wie "
"Sie es bei einem Gleiskreis tun würden."
-#. 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"
@@ -11198,8 +9532,8 @@ msgstr ""
"Sie können diese Beschreibungen über den Dialog \"Optionen|Anzeige\" ein "
"oder ausschalten."
-#. 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ᅵ."
@@ -11207,8 +9541,8 @@ msgstr ""
"Durch Festhalten der Strg Taste erfolgt die Rotation beim Drehen Kommando in "
"15° Schritten."
-#. 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 "
@@ -11218,16 +9552,16 @@ msgstr ""
"einem Menü der Drehwinkel des Objektes ausgewählt werden oder das Objekt "
"kann anhand eines anderen Objektes ausgerichtet werden."
-#. 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 ""
"Dies ist der letzte Tipp. Wenn Sie Ergänzungen oder Anmerkungen haben, "
"lassen Sie es uns bitte wissen."
-#. 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"
@@ -11235,17 +9569,17 @@ msgstr ""
"Die nicht verbundenen Endpunkte eines geraden oder eines gebogenen Gleise "
"können mit 'Ändern Gleis' verändert werden.\n"
-#. 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 ""
"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: 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"
@@ -11253,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: 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"
@@ -11263,12 +9597,12 @@ msgstr ""
"Ein gebogenes Gleis wird ausgewählt und der neue Endpunkt durch den Winkel "
"des Mauszeiger festgelegt.\n"
-#. 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 "Es ist beinahe möglich, einen vollständigen Kreis zu erstellen.\n"
-#: ../../../../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"
@@ -11276,13 +9610,22 @@ msgstr ""
"Wenn Sie die Maus über den Startpunkt des Bogen hinaus ziehen, wird das "
"Gleis sehr kurz.\n"
-#. 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 "Jetzt werden Sie gewarnt, dass das Gleis zu kurz wird.\n"
-#. 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 ""
+"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"
@@ -11290,23 +9633,21 @@ msgstr ""
"Wenn Sie den Mauszeiger vom Bogen weg bewegen, erstellen Sie ein gerades "
"Gleis als Tangente an dem Bogen.\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
+#. 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/work/app/i18n/custmsg.h:210
-msgid "a straight or a curve.\n"
-msgstr "eine Gerade oder eine Kurve.\n"
+"Gleis durch ein ähnliches Segment verlängert. Die Erweiterung kann eine "
+"Gerade oder eine Kurve sein.\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
+#. 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"
@@ -11314,7 +9655,7 @@ 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/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"
@@ -11322,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: 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"
@@ -11331,8 +9672,8 @@ msgstr ""
"Dadurch können Sie ein gerades Gleis in ein gebogenes (und umgekehrt) "
"umwandeln und den Radius eines Bogengleises ändern.\n"
-#. 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-"
@@ -11342,7 +9683,7 @@ msgstr ""
"verbunden ist, mit einem Übergangsbogen erweitern, indem Sie bei gedrückter "
"Strg-Taste und gedrücktem linkem Mausknopf ziehen.\n"
-#: ../../../../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"
@@ -11350,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: 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 "Sie können verschiedene Formend es Unterbau zeichnen:\n"
-#: ../../../../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 "- rechteckig (1x2, 2x4 Inch usw.)\n"
+msgstr "- rechteckig (1x2, 2x4 Zoll usw.)\n"
-#: ../../../../build/work/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/work/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/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 "Sie können diese auch in verschiedenen Ausrichtungen zeichnen.\n"
-#. 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 "Wir zeichnen zwei 3x6 Inch Winkelträger.\n"
+msgstr "Wir zeichnen zwei 3x6 Zoll Winkelträger.\n"
-#. 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"
@@ -11386,45 +9727,45 @@ 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/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 "Wir werden den <Beschreiben> Befehl dafür benutzen.\n"
-#. 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 "Ändere die Ausrichtung auf rechts.\n"
-#. 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 "Jetzt sind beide Schmalseiten auf der Innenseite der beiden Träger.\n"
-#. 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 ""
-"Durch Drücken des <Beschreiben> Knopfes wird jeder begonnene Befehl "
+"Durch Drücken der Schaltfläche <Beschreiben> wird jeder begonnene Befehl "
"abgebrochen.\n"
-#: ../../../../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 ""
"In zwei Schritten werden wir mit dem Erstellen eines gebogenen Gleises "
"beginnen.\n"
-#. 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 ""
-"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/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 "
@@ -11434,8 +9775,8 @@ msgstr ""
"in der Statuszeile angezeigt und die Eigenschaften des Objektes werden in "
"einem Dialogfenster angezeigt.\n"
-#. 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"
@@ -11443,28 +9784,28 @@ msgstr ""
"Einige der Eigenschaften des Objektes können geändert werden. In diesem Fall "
"ändern wir die Länge\n"
-#. 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 "Jetzt wollen wir uns die Weiche anschauen...\n"
-#. 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 "und Titel und Bestellnummer der Weiche ändern.\n"
-#. 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 "Sie können den Text ändern...\n"
-#. 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 "und seine Größe.\n"
-#. 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"
@@ -11472,9 +9813,9 @@ msgstr ""
"Wenn Sie eine Notiz auswählen, erscheint ein Dialogfenster, in dem der "
"Inhalt der Notiz angezeigt wird.\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
+#. 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"
@@ -11482,7 +9823,7 @@ msgstr ""
"Wie beim <Bogen> Befehl gibt es mehrere Möglichkeiten, einen Gleiskreis zu "
"erstellen.\n"
-#: ../../../../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"
@@ -11490,18 +9831,18 @@ msgstr ""
"Die Erste ist die Vorgabe eines festen Radius und das Ziehen an die "
"gewünschte Position.\n"
-#: ../../../../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 "Bevor wir weitermachen, ändern wir den Radius.\n"
-#. 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 ""
"Die nächste Methode ist das Ziehen von der Kreislinie zum Mittelpunkt.\n"
-#. 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"
@@ -11509,19 +9850,19 @@ msgstr ""
"Die letzte, aber vergleichbare, Methode ist das Ziehen vom Mittelpunkt zur "
"Kreislinie.\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
+#. 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 ""
-"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: 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"
@@ -11529,39 +9870,39 @@ msgstr ""
"Wir benutzen den <Zusammenfügen> Befehl, um die benachbarten Gleise so "
"auszurichten, dass die Lücke geschlossen ist.\n"
-#: ../../../../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 ""
"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: 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 "Und jetzt ist die Lücke geschlossen.\n"
-#. 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 "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: 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 "Sie können die kleinen Versätze sehen.\n"
-#: ../../../../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 ""
"Aber diese werden keinen Einfluss haben, wenn die Anlage später gebaut "
"wird.\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
+#. 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"
@@ -11569,79 +9910,79 @@ msgstr ""
"Nachdem Sie mit Festgleisen gearbeitet haben, haben sich diese Versätze "
"aufgebaut und Sie wollen diese entfernen.\n"
-#: ../../../../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 ""
"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"
+"Beginnen Sie an einem nicht verbundenen Endpunkt durch gleichzeitiges "
+"Drücken der Umschalt-Taste beim Drücken der Schaltfläche <Zusammenfügen>.\n"
-#: ../../../../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 ""
"Zuerst benutzen Sie den <Trennen> Befehl um die Verbindung der Gleise zu "
"lösen.\n"
-#. 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 ""
-"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: 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 "In diesem Besipiel wird aus Festgleisen eine \"8\" gelegt.\n"
+msgstr "In diesem Beispiel wird aus Festgleisen eine \"8\" gelegt.\n"
-#: ../../../../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 ""
"Wie Sie sehen, sind die Gleise an einer Stelle nicht exakt ausgerichtet.\n"
-#. 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 ""
-"Mit dem <Verbinden> Befehl können wir die zu verbindenden Gleise leicht "
-"verschiebenund die beiden Endpunkte verbinden.\n"
+"Mit dem <Connect> Befehl können wir die zu verbindenden Gleise leicht "
+"verschieben und die beiden Endpunkte verbinden.\n"
-#. 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 "Die beiden Endpunkte sind jetzt ausgerichtet und verbunden.\n"
-#. 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 ""
"Die Verbindung wurde hergestellt, in dem kleine Lücken zwischen andere "
"Gleise eingefügt wurden.\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
+#. 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/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 ""
-"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/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"
@@ -11649,30 +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: 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 ""
"Sie sehen ein gerades Gleis mit einem roten Pfeil mit zwei Spitzen am Ende.\n"
-#: ../../../../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 ""
-"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: 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 ""
"Die nächste Methode ist das Klicken auf einen Endpunkt und das Ziehen zum "
-"Mittelpunkt der Kurzve.\n"
+"Mittelpunkt der Kurve.\n"
-#. 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"
@@ -11681,14 +10022,14 @@ msgstr ""
"Mittelpunkt des Bogen verbunden ist. Dieser ist mit einem kleinen Kreis "
"markiert.\n"
-#: ../../../../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 ""
-"Wie schon vorher beenden Sie den Bogen, indem Sie an einer der Pfeilspitzemn "
+"Wie schon vorher beenden Sie den Bogen, indem Sie an einer der Pfeilspitzen "
"ziehen.\n"
-#. 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"
@@ -11696,14 +10037,14 @@ msgstr ""
"Die nächste Methode ist vergleichbar zur vorherigen, allerdings Ziehen Sie "
"zuerst vom Mittelpunkt zu einem Endpunkt.\n"
-#. 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 ""
"Auch diesmal ziehen Sie an der roten Pfeilspitze um den Bogen zu vollenden.\n"
-#. 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"
@@ -11711,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: 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 "Jetzt ziehen Sie an der roten Pfeilspitze um den Bogen zu erstellen.\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
+#. 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: 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 "Für unser Pult werden wir 1/2\" breite Linien benutzen.\n"
-#: ../../../../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 ""
"Außerdem werden wir ein 1/8\" Raster für die Ausrichtung der "
"Steuerungselemente benutzen.\n"
-#: ../../../../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 ""
"Als erstes stellen wir das Fangraster auf 1\" Rasterlinien und 8 "
"Unterteilungen ein.\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 "Jetzt löschen wir den Entwurf und schalten das Fangraster ein.\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 "Erster Schritte: zeichnen Sie die Linien, die die Gleise darstellen.\n"
-#: ../../../../build/work/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/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/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"
-msgstr ""
-"Um eine 1/4 Inch-breite Linie zu erstellen, teilen Sie die Punkte pro Zoll "
-"(DPI) Ihrer Anzeige durch 4.\n"
-
-#: ../../../../build/work/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/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 ""
-"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: 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 ""
"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: 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 "ZweiterSchritt: hinzufügen der LEDs für die Weichenanzeige.\n"
+msgstr "Zweiter Schritt: hinzufügen der LEDs für die Weichenanzeige.\n"
-#: ../../../../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 "Wir werden T1 rote und grüne LEDs benutzen.\n"
-#: ../../../../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 "Wir zoomen rein, um die Positionierung zu zeigen.\n"
-#. 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. "
@@ -11811,62 +10139,62 @@ msgstr ""
"Sobald beide Markierungen hervorgehoben sind, die LED durch Drücken der "
"Leertaste fixieren.\n"
-#. 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 "Jetzt fügen wir Drucktaster für die Steuerung der Weichen dazu.\n"
-#. 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 "Lassen Sie uns noch Signale an unserem Ausweichgleich aufstellen.\n"
+msgstr "Lassen Sie uns noch Signale an unserem Ausweichgleis aufstellen.\n"
-#: ../../../../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 ""
-"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/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 ""
"Wir wählen ein Signal aus der Auswahlleiste aus und bringen es in Position.\n"
-#. 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 ""
-"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: 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 ""
-"Die Ausfahrt aus dem Ausweichgleich wird durch ein einfaches Signal "
+"Die Ausfahrt aus dem Ausweichgleis wird durch ein einfaches Signal "
"gesichert.\n"
-#. 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 "Nun noch ein paar kleinere Nachbesserungen.\n"
-#: ../../../../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 ""
"Beachten Sie, dass am Berührungspunkt zwischen zwei Linien ein Spalt "
"existiert.\n"
-#: ../../../../build/work/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/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"
@@ -11874,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/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 "Users on those platforms will not see the gap.\n"
-#. 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"
@@ -11887,29 +10215,29 @@ msgstr ""
"Mit einer Pfeilspitze werden die Gleise markiert, die mit dem Rest der "
"Anlage verbunden sind.\n"
-#: ../../../../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 "Der zweite Pfeil wird um 180° umgedreht\"\n"
-#. 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 "Und fügen einige Beschriftungen hinzu.\n"
-#. 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 ""
-"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/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 "Lassen Sie uns das ein bisschen enger zusammen packen.\n"
-#: ../../../../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"
@@ -11917,40 +10245,40 @@ msgstr ""
"Zuerst schalten Sie bitte das Fangraster wieder ein, damit die Objekte beim "
"Verschieben ausgerichtet bleiben.\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 "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: 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 "Jetzt verschieben Sie die rechte Seite des Ausweichgleises.\n"
-#. 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 ""
"Und passen nun die Enden des Hauptgleises und des Ausweichgleises an.\n"
-#. 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 "Anschliessend noch den Titel verschieben.\n"
+msgstr "Anschließend noch den Titel verschieben.\n"
-#. 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 "Jetzt können Sie das Ergebnis drucken.\n"
-#: ../../../../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 ""
"Fadenkreuze markieren die Mittelpunkte der LEDs und Schalter und ermöglichen "
"so ein einfaches Bohren.\n"
-#. 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"
@@ -11958,7 +10286,7 @@ msgstr ""
"Durch Drücken der <Entf>-Taste können Sie die ausgewählten Gleise vom Plan "
"löschen.\n"
-#: ../../../../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"
@@ -11966,8 +10294,8 @@ msgstr ""
"Zuerst wählen Sie die Gleise, die Sie löschen wollen und drücken dann "
"<Entf>.\n"
-#. 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"
@@ -11975,22 +10303,22 @@ msgstr ""
"Wenn Sie ein Gleis löschen, das einen Übergangsbogen besitzt, so wird dieser "
"Übergangsbogen ebenfalls gelöscht.\n"
-#. 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 ""
"Sie können den <Rückgängig>-Befehl nutzen, um ein versehentliches Löschen "
"rückgängig zu machen.\n"
-#. 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 ""
"Durch Ziehen mit der Maus bei gedrückter linker Taste können Sie alle Gleise "
"in einem Bereich markieren.\n"
-#: ../../../../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"
@@ -11999,9 +10327,9 @@ msgstr ""
"werden. Da der Übergangsbogen mit einem gelöschten Gleis verbunden ist, wird "
"dieser ebenfalls gelöscht.\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
+#. 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"
@@ -12009,7 +10337,7 @@ msgstr ""
"Die Demo simuliert die Eingabe von Werten und Auswahl von Optionen in "
"verschiedenen Dialogfenstern.\n"
-#: ../../../../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"
@@ -12017,8 +10345,8 @@ msgstr ""
"Dies wird simuliert, in dem ein Rechteck um das Eingabefeld gezeichnet wird, "
"wenn Werte eingegeben oder geändert werden.\n"
-#. 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"
@@ -12026,22 +10354,22 @@ msgstr ""
"Hier machen wir Änderungen im Anzeige-Dialog. Beachten Sie, wie das "
"simuliert wird.\n"
-#: ../../../../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 "Zuerst setzen wir 'Tunnel zeichnen' auf 'Normal'.\n"
-#. 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 "Jetzt ändern wir 'Schriftartgröße' nach '56'.\n"
-#. 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 "Wir werden einige andere Optionen ändern\n"
-#. 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"
@@ -12049,14 +10377,14 @@ msgstr ""
"Dieser Effekt wird nur im Demonstrations-Modus benutzt. Während der normalen "
"Benutzung werden Sie das nicht sehen.\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
+#. 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/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"
@@ -12064,8 +10392,8 @@ msgstr ""
"Hier erstellen wir eine Maßlinie, um den Abstand zwischen zwei parallelen "
"Gleisen zu zeigen.\n"
-#. 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"
@@ -12073,8 +10401,8 @@ msgstr ""
"Möglicherweise wollen wir auch den Abstand zwischen zwei Gebäuden bestimmen."
"In diesem Fall nutzen wir eine größere Maßlinie.\n"
-#. 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"
@@ -12082,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: 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 ""
"In diesem Beispiel wird die Wirkung der Übergangsbögen während des Verbinden "
"von Gleisen gezeigt.\n"
-#: ../../../../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 "Zuerst schalten wir Übergangsbögen an und wählen Verbinden aus.\n"
-#. 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 "Zuerst wird ein Ende des Gleises ausgewählt\n"
-#. 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 "Und jetzt das Ende eine anderen Gleises\n"
-#. 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 "Sie können die Enden durch Ziehen verschieben \n"
-#. 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 ""
"Wenn Sie zufrieden sind, drücken Sie die Eingabetaste oder die Leertaste, "
"wenn Sie nicht Esc\n"
-#. 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"
@@ -12126,28 +10454,28 @@ msgstr ""
"Die Kurve besteht aus Beziers-Teilen, die die Form auf die beste Weise im "
"verfügbaren Raum glätten.\n"
-#. 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 "Nun werden wir stattdessen traditionelle Übergangsbögen zeigen.\n"
-#. 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 ""
"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/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 ""
-"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: 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"
@@ -12155,13 +10483,13 @@ msgstr ""
"Beachten Sie. dass das Verbindungsgleis das gerade Gleis nicht genau trifft. "
"Das ist der 'Absatz'.\n"
-#. 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 "Jetzt ist der Verbindungsradius zu klein.\n"
-#. 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"
@@ -12169,8 +10497,8 @@ msgstr ""
"Die verbindende Kurve besteht aus drei Gleisen, der Kurve und den "
"Übergangsbögen an jedem Ende.\n"
-#. 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"
@@ -12178,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/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 ""
"Hinweis: Vergewissern Sie sich, dass Sie die Endpunkterhebungen im "
"Dialogfeld Anzeige einstellen.\n"
-#. 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 "Zuerst legen wir die Höhen am Ende der Abzweige fest.\n"
-#. 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 ""
"Wir wählen das Ende des oberen Abzweigs und legen die Höhe auf 4\" fest.\n"
-#: ../../../../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 "Zuerst klicken Sie auf den Endpunkt.\n"
-#. 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 "Als nächstes wählen Sie 'Fest' im Dialogfenster für das Höhenmaß.\n"
-#. 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 "Und setzen die Höhe auf 4.\n"
-#. 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 ""
"Jetzt wählen Sie den anderen Abzweig und legen seine Höhe auf 2\" fest.\n"
-#. 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 ""
"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: 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 "Jetzt legen wir die Höhe an einem Ende des Nebengleises fest.\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
+#. 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 ermitteln, an denen diese sich kreuzen.\n"
+"Wir wollen die Höhen der Gleise, an der Stelle ermitteln, an der diese sich "
+"kreuzen.\n"
-#. 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 "Wir haben einen Endpunkt am oberen Gleis ausgewählt.\n"
-#: ../../../../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"
@@ -12247,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/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"
@@ -12255,8 +10584,8 @@ msgstr ""
"Hier erstellen wir eine 'Berechnete' Höhe, die automatisch angepasst wird, "
"wenn sich andere Höhenangaben ändern.\n"
-#. 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 "
@@ -12268,16 +10597,16 @@ msgstr ""
"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/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 "Wir erreichen das, indem wir einen Abzweig ignorieren.\n"
-#: ../../../../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 "Wir werden den unteren Abzweig ignorieren.\n"
-#. 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"
@@ -12285,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: 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 "Jetzt wollen wir die Höhe des unteren Gleises ermitteln.\n"
-#. 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 "Es gibt hier keinen Endpunkt des unteren Gleises.\n"
-#: ../../../../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 ""
-"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: 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 "Wir erstellen einen neuen berechneten Höhenpunkt.\n"
-#. 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 "Jetzt zeigen wir die Steigung auf diesem Gleisabschnitt an.\n"
-#. 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"
@@ -12323,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: 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 "und erstellen wir eine Steigungsbeschriftung.\n"
-#. 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 ""
"Beachten Sie, dass die Markierung einen Pfeil besitzt, der in Richtung des "
"Anstiegs zeigt.\n"
-#. 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"
@@ -12344,48 +10673,48 @@ msgstr ""
"Als letzten Schritt erstellen wir noch eine Beschriftung für einen Bahnhof, "
"den wir im <Höhenprofil> Befehl benutzen werden.\n"
-#. 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 ""
"Jetzt setzen Sie die Höhenmarkierung auf 'Bahnhof' und geben den Namen "
"ein.\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
+#. 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 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/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 ""
-"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/work/app/i18n/custmsg.h:483
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:482
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
+#. 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: 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"
@@ -12393,8 +10722,8 @@ msgstr ""
"Verringern wir den Radius der Kurve, so wird das Gleis mit der Ausnahmefarbe "
"dargestellt.\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"
@@ -12402,43 +10731,43 @@ msgstr ""
"Vergrößern wir die Steigung des geraden Gleises, so wird das Gleis ebenfalls "
"in der Ausnahmefarbe dargestellt.\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"
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: 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 ""
"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: 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 "Endpunkt auswählen und mit rechter Maustaste ziehen.\n"
-#. 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 "Die Erweiterung kann gerade sein...\n"
-#. 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 "...oder gebogen.\n"
-#. 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"
@@ -12446,39 +10775,39 @@ msgstr ""
"Wenn die Funktion Übergangsbogen aktiv ist, während Sie ein gerades oder "
"gebogenes Flexgleis verändern, so wird ein Übergangsbogen erstellt.\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
+#. 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: 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 ""
"Nach der Auswahl der Objekte, wird eine Linie gezogen die die Spiegelachse "
"bildet.\n"
-#. 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 "Diese Spiegellinie muss nicht horizontal oder vertikal sein.\n"
-#. 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 "Sie können jede beliebige Anzahl von Objekten spiegelen.\n"
+msgstr "Sie können jede beliebige Anzahl von Objekten spiegeln.\n"
-#: ../../../../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 ""
"Achten Sie darauf, was mit den Beschriftungen an Gebäuden und Weichen "
"geschieht.\n"
-#. 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 "
@@ -12488,8 +10817,8 @@ msgstr ""
"Linksweiche wurde. Werden Weichen gespiegelt, versucht XTrackCAD eine "
"passende Weiche zu finden und ersetzt den Namen, wenn dies gelingt.\n"
-#. 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"
@@ -12497,13 +10826,13 @@ msgstr ""
"Gebäude haben keine rechte oder linke Version. Der veränderte Titel zeigt, "
"dass diese gespiegelt wurden.\n"
-#: ../../../../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 "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: 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"
@@ -12511,32 +10840,32 @@ msgstr ""
"Die <Gruppieren> und <Gruppe auflösen> Befehle bilden einen leistungsfähigen "
"Weg, Weichen- oder Gebäude-Definition zu verändern.\n"
-#: ../../../../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 ""
"Wir beginnen mit einer einfachen Weiche zu der wir einen Weichenantrieb "
"zufügen.\n"
-#. 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 ""
-"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/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 "Zuerst wählen wir die Objekte in der neuen Definition aus.\n"
-#. 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 "Und wenden jetzt den <Gruppieren> Befehl an.\n"
-#. 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 "
@@ -12546,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: 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"
@@ -12555,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: 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"
@@ -12564,22 +10893,22 @@ msgstr ""
"Wenn wir den Titel nicht verändern, so ersetzt die neue Definition die "
"bereits vorhandene.\n"
-#: ../../../../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 "Wir geben der Gruppe eine neue Beschreibung.\n"
-#. 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 "Diese Definition ist fertig. Drücken Sie OK.\n"
-#. 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 "Sie sehen das aktualisierte Bild in der Auswahlleiste.\n"
-#. 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"
@@ -12587,7 +10916,7 @@ msgstr ""
"Der Befehl zum Auflösen der Gruppe ersetzt gewählte Weichen oder Gebäude "
"durch ihre Teile.\n"
-#: ../../../../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 "
@@ -12596,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/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"
@@ -12604,29 +10933,28 @@ msgstr ""
"Wir werden diese Weiche in ihre Teile zerlegen und sehen, wie die einzelnen "
"Teile verändert werden können.\n"
-#: ../../../../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 ""
-"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: 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 ""
-"Beachten Sie, dass der Titel jetzt darauf hinweis, dass die Weiche aufgelöst "
+"Beachten Sie, dass der Titel jetzt darauf Hinweis, dass die Weiche aufgelöst "
"ist.\n"
-#: ../../../../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 "Durch Drücken von Escape wird die Auswhl aufgehoben.\n"
+msgstr "Durch Drücken von Esc wird die Auswahl aufgehoben.\n"
-#. 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 "Jetzt wählen Sie die Linien und Quadrate aus.\n"
-#. 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"
@@ -12634,18 +10962,18 @@ msgstr ""
"Wir können diese Objekt ändern oder neue hinzufügen.Diesmal werden wir sie "
"einfach löschen.\n"
-#. 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 "Und die Beschriftung auf die Seite schieben.\n"
-#. 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 "Beachten Sie, dass die Weiche in drei Teile zerfallen ist.\n"
-#. 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"
@@ -12653,7 +10981,7 @@ msgstr ""
"Zwei Endpunkte der Weiche, vom Herzstück zum Ende des abzweigenden Gleis und "
"von den Weichenzungen nach links, sind jetzt gerade Abschnitte.\n"
-#: ../../../../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"
@@ -12661,32 +10989,32 @@ msgstr ""
"Eine Weiche besteht aus einer Anzahl von geraden und gebogenen Gleisstücken. "
"Diese Weiche hat vier Stücke:\n"
-#: ../../../../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 " 1. ein kurzes gerades Stück, links von den Weichenzungen,\n"
-#: ../../../../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 " 2. ein langes gerades Stück, rechts von den Weichenzungen,\n"
-#: ../../../../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 ""
" 3. ein gebogenes Stück von den Weichenzungen bis zum Herzstück, und\n"
-#: ../../../../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 ""
" 4. ein gerades Stück vom Herzstück bis zum Ende des abzweigenden Gleis.\n"
-#: ../../../../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 ""
"Der erste und der letzte Gleisabschnitt wurden in gerade Gleise "
"umgewandelt.\n"
-#: ../../../../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"
@@ -12694,7 +11022,7 @@ msgstr ""
"Der zweite und der dritte Gleisabschnitt bilden den Kern der Weiche und "
"können nicht weiter zerlegt werden.\n"
-#: ../../../../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 "
@@ -12704,57 +11032,57 @@ msgstr ""
"Definition wiederherzustellen. Sie können auch andere Gleisabschnitte zur "
"Weichendefinition zufügen.\n"
-#. 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 "Jetzt erstellen Sie bitte ein Gleis und setzen die Weiche darauf.\n"
-#. 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 ""
"Nehmen wir mal an, wir wollen die schwarzen Quadrate durch grüne Kreise "
"ersetzen.\n"
-#: ../../../../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 "Zuerst wählen wir die Weiche aus.\n"
-#. 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 ""
"Der ersten und der letzte Abschnitt wurden in gerade Gleise umgewandelt.\n"
-#. 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 ""
"Beachten Sie, dass der Name geändert wurde, um anzuzeigen, dass die "
"Gruppierung der Weiche aufgelöst wurde.\n"
-#. 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 ""
-"Jetzt drücken Sie Escape umd die Auswahl zurückzusetzen. Dann wählen Sie die "
+"Jetzt drücken Sie Esc um die Auswahl zurückzusetzen. Dann wählen Sie die "
"zwei Quadrate und löschen diese.\n"
-#. 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 "Jetzt zeichnen Sie die grünen Kreise...\n"
-#. 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 "und gruppieren die neue Definition.\n"
-#. 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"
@@ -12763,151 +11091,152 @@ msgstr ""
"auf der Anlage ist. Stellen Sie sicher, das die neuen Definitionen so "
"ausgerichtet sind, wie Sie es bevorzugen.\n"
-#. 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 ""
"Wir können auch aus einfachen geraden und gebogenen Gleisen Weichen "
"erstellen.\n"
-#: ../../../../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 "Wir erzeugen zwei Gleise mit einem gemeinsamen Endpunkt.\n"
-#. 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 ""
"Wenn wir die Kurve vom Endpunkt der geraden Strecke aus erstellen, müssen "
"wir die Umschalttaste gedrückt halten, um zu verhindern, dass XTrackCAD "
"versucht, die beiden Strecken zu verbinden.\n"
-#. 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 ""
"Zu diesem Zeitpunkt können die Gleise verändern, sofern das notwendig ist.\n"
-#: ../../../../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 ""
"Wir benutzen den Befehl <Beschreiben> um die Eigenschaften der Gleise zu "
"verändern.\n"
-#. 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 "Wir setzen die Länge auf 7,5\".\n"
-#: ../../../../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 ""
-"Wenn wir die Länge verändern, wird jeder Endpunkt erschoben um das Gleis zu "
-"verkürzen.Wir wollen, dass nur der rechte Endpunkt bewegt wird. Um das zu "
-"steuern, stellen Sie den Fixpinkt auf den Ersten. Das bedeutet, dass der "
-"linke Endpunkt unverändert bleibt wenn wir die Länge (oder den Winkel) des "
-"Gleises ändern.\n"
+"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: 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 "Jetzt wird beim Ändern der Länge nur der rechte Endpunkt verschoben.\n"
-#. 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 "Jetzt schauen wir uns das gebogene Gleis an.\n"
-#. 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 ""
"Hier ist der linke Endpunkt, den wir nicht verschieben wollen, der zweite "
"Endpunkt. Also legen wir diesen als Fixpunkt fest.\n"
-#. 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 ""
-"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/work/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: 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 "und den Winkelabstand.\n"
-#. 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 "Jetzt bitte beide Gleise auswählen...\n"
-#. 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 "und gruppieren sie.\n"
-#. 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 ""
"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: 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 ""
"Wir haben eine links abzweigende Weiche erstellt und wollen auch die rechts "
"abzweigende Form.\n"
-#: ../../../../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 "Wir verwenden den Befehl <Spiegeln>\n"
-#. 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 ""
"Ziehen Sie als Spiegelstrich für den Spiegeln Befehl eine horizontale "
"Linie.\n"
-#. 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 ""
"Beachten Sie, dass der Titel auf \"Links gespiegelt\" geändert wurde.\n"
-#: ../../../../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 "Jetzt gruppieren Sie die Weiche\n"
-#. 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 ""
"Wir werden den Titel und die Teilnummer für die neue Definition ändern.\n"
-#. 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"
@@ -12915,14 +11244,14 @@ msgstr ""
"Um Definitionen zu löschen benutzen Sie die \"Anpassungs Verwaltung\" im "
"\"Verwalten\" Menü.\n"
-#. 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 "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: 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"
@@ -12930,42 +11259,41 @@ msgstr ""
"Jetzt erstellen wir in der Ecke der Anlage eine Gleiswendel, die zwei Gleise "
"verbindet.\n"
-#. 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 ""
"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: 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 "Als erstes den Höhenunterschied auf 12\" setzen\n"
-#. 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 "Als nächstes wird der vertikale Abstand auf 2\" gesetzt.\n"
-#: ../../../../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 "Beachten Sie, dass hierfür 6 Windungen benötigt werden.\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 "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/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 "Beachten Sie wie dadruch der Radius verändert wurde.\n"
+msgstr "Beachten Sie wie dadurch der Radius verändert wurde.\n"
-#. 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"
@@ -12973,8 +11301,8 @@ msgstr ""
"Durch Setzen dieser Werte wird der Radius auf 21,2\" und die Anzahl der "
"Windungen auf 6 geändert.\n"
-#. 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"
@@ -12982,32 +11310,32 @@ msgstr ""
"Jetzt ändern wir den Winkel zwischen eingehendem und abgehendem Gleis der "
"Wendel.\n"
-#: ../../../../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 "Beachten Sie, dass dadurch der Radius geringfügig kleiner wurde.\n"
-#. 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 ""
"Als nächstes können wir die Wendel durch Ändern des Radius auf 15\" "
"optimieren.\n"
-#: ../../../../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 "Beachten Sie die Änderung der Steigung.\n"
-#. 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 ""
"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/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 "
@@ -13019,17 +11347,17 @@ msgstr ""
"4,25 Windungen: 4 ganze Windungen und eine viertel Umdrehung für den Winkel "
"zwischen den Zugängen.\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
+#. 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 ""
"Nachdem die Eigenschaften für die Gleiswendel bestimmt sind, setzen wir "
"diese auf die Anlage.\n"
-#. 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"
@@ -13037,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: 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"
@@ -13046,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: 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 ""
"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/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 "
@@ -13066,35 +11394,35 @@ msgstr ""
"festlegen können. XTrackCAD behandelt bei den Höhen eine Wendel als ein "
"durchgängiges Stück Gleis.\n"
-#. 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 ""
-"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/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 ""
-"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: 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 ""
"Mit dem Befehl <Verschiebe Beschriftung> kann die Beschriftung der Wendel "
"verschoben werden.\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
+#. 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"
@@ -13102,62 +11430,62 @@ msgstr ""
"Zusätzlich zu den Weichendefinitionen können Sie auch Selbstbauweichen "
"erstellen.\n"
-#: ../../../../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 "Das ist ein zweistufiger Prozess.\n"
-#. 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 ""
-"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: 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 ""
" Hinweis: Je weiter weg Sie vom Herzstück ziehen, um so genauer lässt sich "
"der Winkel einstellen.\n"
-#. 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 "2. Klicken und ziehen Sie um die Position der Zungen festzulegen.\n"
-#. 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 "Wir können Selbstbauweichen auch auf gebogenen Gleisen erstellen.\n"
-#. 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 "Eine Selbstbauweiche besteht aus mehreren Teilen.\n"
-#. 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 "Die eigentliche Weiche ist ein kleines Stück an den Weichenzungen.\n"
-#. 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 "Die anderen Teile sind verschiedene gerade und gebogene Teilstücke.\n"
-#. 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 "Die neue Bogenweiche besteht ebenfalls aus mehreren Abschnitten.\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
+#. 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/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 "
@@ -13167,33 +11495,33 @@ msgstr ""
"Präsentation zeigen. Dieses Fenster enthält einige Steuerungselements und "
"einen Nachrichtenbereich, den Sie gerade lesen.\n"
-#: ../../../../build/work/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/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 "Einzelschritt - weiter zum nächsten Schritt in der Demo.\n"
-#: ../../../../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 "Nächster - springt zur nächsten Demo.\n"
-#: ../../../../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 "Beenden - verlässt die Demo und kehrt zu XTrackCAD zurück.\n"
-#: ../../../../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 "Geschwindigkeit - steuert die Geschwindigkeit der Demo.\n"
-#: ../../../../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 ""
"Klicken Sie jetzt auf Einzelschritt um zur nächsten Nachricht zu gelangen.\n"
-#. 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"
@@ -13202,7 +11530,7 @@ msgstr ""
"Fensterpositionen festlegen. Achten Sie dabei darauf, dass das Hauptfenster "
"nicht durch das Demofenster verdeckt wird.\n"
-#: ../../../../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"
@@ -13211,8 +11539,8 @@ msgstr ""
"Fensters verschieben. Am besten verschieben Sie es an den oberen Rand des "
"Bildschirms.\n"
-#. 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 "
@@ -13220,56 +11548,56 @@ msgid ""
"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/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 ""
"Durch Klicken auf Verlassen können Sie jederzeit zu XTrackCAD zurückkehren.\n"
-#: ../../../../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 ""
-"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: 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 "Die Demos sind für eine bestimmte Fenstergröße entworfen.\n"
-#: ../../../../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 ""
-"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/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 ""
"Dies können Sie erreichen, in dem Sie an der rechten unteren Ecke des "
"Fensters ziehen.\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
+#. 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/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 ""
"Bitte klicken Sie Einzelschritt für die nächste Demo oder Verlassen, um zu "
"XTrackCAD zurück zu kehren.\n"
-#. 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"
@@ -13277,12 +11605,12 @@ msgstr ""
"Sie können auch Gleise mit Gleiskreisen verbinden. Dadurch werden aus "
"Kreisen Bögen.\n"
-#: ../../../../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 "In diesem Beispiel werden wir zwei Kreise verbinden.\n"
-#. 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 "
@@ -13292,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: 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 "Jetzt versuchen wir eine kreuzweise Verbindung.\n"
-#. 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 ""
"Beachten Sie, dass die Verbindung an anderen Punkten der Kreise ansetzt als "
-"bem letzten Beispiel.\n"
+"beim letzten Beispiel.\n"
-#. 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 ""
"Dieses Beispiel zeigt wir Gleise verbunden werden, die zueinander parallel "
"sind.\n"
-#: ../../../../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"
@@ -13322,27 +11650,27 @@ msgstr ""
"Beachten Sie dass die Endpunkte der beiden Gleise nahe beieinander und "
"parallel, aber nicht verbunden, sind.\n"
-#. 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 ""
"Im ersten Fall werden eine gebogenes und ein gerades Gleis verbunden.\n"
-#. 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 "Im zweiten Fall werden zwei gerade Gleise verbunden.\n"
-#. 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 ""
"Beachten Sie, dass die beiden geraden Gleise zu einem Gleis zusammengefasst "
"wurden.\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
+#. 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"
@@ -13350,17 +11678,17 @@ msgstr ""
"Mit dem Befehl <Verbinden> können gerade und gebogene Gleise (in jeder "
"Reihenfolge) verbunden werden.\n"
-#: ../../../../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 "Zuerst schalten wir Übergangsbögen mit Cornu an.\n"
-#. 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 "Eine Cornu wird zwischen den beiden Gleisen gezeichnet.\n"
-#. 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"
@@ -13368,8 +11696,8 @@ msgstr ""
"Beachten Sie, dass das gebogene Gleis verlängert wird, wenn der "
"Verbindungspunkt über den Endpunkt hinaus verschoben wird.\n"
-#. 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"
@@ -13377,40 +11705,40 @@ msgstr ""
"Hier entsteht durch das Verbinden eine Schleife. Das ist keine sinnvolle "
"Form, da am Ende ein Knick entsteht.\n"
-#: ../../../../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 "Durch Anpassen des Endpunktes wird das verbessert.\n"
-#. 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 ""
"Mit dem Befehl <Verbinden> können Gruppen von Gleisen verschoben werden, um "
"diese mit anderen zu verbinden.\n"
-#: ../../../../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 ""
-"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: 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 ""
"Klicken Sie auf <Verbinden> und klicken dann bei gedrückter Umschalttaste "
"auf die beiden Endpunkte.\n"
-#. 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 "Die ausgewählten Gleise werden an die Position verschoben.\n"
-#. 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 "
@@ -13420,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/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 ""
"Zuerst legen wir keine Übergangsbogen fest, dann wählen wir Verbinden aus.\n"
"\n"
-#. 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 "Jetzt wählen wir zwei Punkte auf den Gleisen aus.\n"
-#. 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"
@@ -13441,16 +11769,16 @@ msgstr ""
"Sie wie dieses neu geformt wird, wenn der Mauszeiger entlang des zweiten "
"Gleises bewegt wird.\n"
-#. 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 ""
-"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: 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"
@@ -13458,30 +11786,30 @@ msgstr ""
"Beachten Sie was passiert, wenn Sie über den Schnittpunkt der beiden Gleise "
"hinaus ziehen.\n"
-#. 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 "Das ist wahrscheinlich keine sinnvolle Lösung.\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
+#. 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/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 ""
"Zuerst legen wir Cornu als Übergangsbogen fest, dann wählen wir Verbinden "
"aus.\n"
-#. 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 "Jetzt wählen wir wieder zwei Punkte auf dem Gleis aus\n"
-#. 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"
@@ -13490,16 +11818,16 @@ msgstr ""
"dieses neu geformt wird, wenn der Mauszeiger entlang des zweiten Gleises "
"bewegt wird.\n"
-#. 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 ""
"Beachten Sie, dass jedes der Gleise verlängert werden kann, wenn Sie denn "
"Mauszeiger über das Ende des Gleises hinaus bewegen.\n"
-#. 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"
@@ -13507,31 +11835,31 @@ msgstr ""
"Beachten Sie was passiert, wenn Sie über den Schnittpunkt der beiden Gleise "
"hinaus ziehen.\n"
-#. 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 ""
"Dies ist nützlicher, weil Sie auch das andere Ende verschieben können.\n"
-#. 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 ""
-"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: 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 "Sie können jedes Gleis mit einer Drehscheibe verbinden.\n"
-#: ../../../../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 "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: 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 "
@@ -13541,17 +11869,17 @@ msgstr ""
"Drehscheibenabgang erstellt werden. Wie klein der Abstand sein darf, wird "
"über den Drehscheibenwinkel in den Einstellungen festgelegt.\n"
-#: ../../../../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 "In diesem Beispiel ist dieser auf 15° eingestellt.\n"
-#. 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 "Sie können den Verbindungspunkt irgendwo an die Drehscheibe ziehen.\n"
-#. 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 "
@@ -13561,31 +11889,31 @@ msgstr ""
"Position des Mauszeiger gezeichnet. Ein Gleisbogen wird vom Mauszeiger zum "
"Verbindungsgleis gezeichnet.\n"
-#. 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 ""
"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: 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 "Fertig.\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: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 ""
"Die Zeichenbefehle werden genutzt, um gerade oder gebogene Gleise auf dem "
"Gleisplan zu erstellen.\n"
-#. 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"
@@ -13593,30 +11921,29 @@ msgstr ""
"Linien werden gezeichnet, indem der Startpunkt durch Klicken festgelegt wird "
"und dann durch Ziehen der zusätzliche Endpunkt erstellt wird.\n"
-#: ../../../../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 ""
"Standardmäßig wird die neue Linie an vorhandenen Objekten gefangen. Halten "
-"Sie die Tasten <Strg> und <Alt> gleichzeitig gedrückt, um dies zu "
-"verhindern.\n"
+"Sie die Tasten <Alt> gleichzeitig gedrückt, um dies zu verhindern.\n"
-#. 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 ""
"Sie können auch mit unterschiedlichen Farben und Liniendicken zeichnen.\n"
-#. 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 ""
"Wie Gleisbögen können auch gebogene Linien mit unterschiedlichen Methoden "
"gezeichnet werden.\n"
-#: ../../../../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 "
@@ -13626,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: 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 ""
"Gefüllte Rechtecke können für das Erstellen rechteckiger Formen benutzt "
"werden.\n"
-#. 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"
@@ -13642,53 +11969,53 @@ msgstr ""
"Kreise werden gezeichnet, indem auf den Rand oder den Mittelpunkt geklickt "
"wird. Danach wird durch Ziehen der Radius festgelegt.\n"
-#: ../../../../build/work/app/i18n/custmsg.h:804
-msgid "Here we will drag from the Center.\n"
-msgstr "Hier beginnen wir vom Mittelpunkt aus.\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 "Hier ziehen wir von der Tischkante zum Mittelpunkt.\n"
-#. 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 ""
"Linien und Formen können durch Auswählen und Löschen entfernt werden.\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: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: 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 ""
-"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: 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 ""
-"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: 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 "Ein ausgefülltes Polygon wird auf die gleiche Weise gezeichnet.\n"
-#. 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 ""
"Wenn Sie fertig sind, drücken Sie die Taste <Leerzeichen> , um das Polygon "
"zu vervollständigen.\n"
-#. 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"
@@ -13696,14 +12023,14 @@ msgstr ""
"Sie können die Befehle Über und Unter benutzen, um Linien und Formen in den "
"Vorder- oder Hintergrund zu verschieben.\n"
-#. 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 "Gefüllte Rechtecke und Kreis werden genauso erstellt.\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: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 "
@@ -13713,14 +12040,14 @@ msgstr ""
"oben anstelle des Mauszeigers. In dieser Demo wird dieser bewegt, um Ihnen "
"die Arbeitsweise verschiedener Befehle zu zeigen.\n"
-#: ../../../../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 "Der leere Pfeil entspricht dem Mauszeiger ohne gedrückte Maustaste.\n"
-#. 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 "
@@ -13730,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/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"
@@ -13738,16 +12065,16 @@ msgstr ""
"Beachten Sie, dass diese Farbänderungen nur in einer Demo auftritt um "
"Tastendrücke anzuzeigen.\n"
-#. 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 ""
"Das Bewegen der Maus während der Mausknopf gedrückt bleibt wird als 'Ziehen' "
"bezeichnet.\n"
-#. 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"
@@ -13755,8 +12082,8 @@ msgstr ""
"Wird der linke Mausknopf wieder losgelassen, blinkt der Mauszeiger und der "
"hohle Pfeil wird wieder hergestellt.\n"
-#. 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"
@@ -13764,28 +12091,28 @@ msgstr ""
"Das Ziehen mit dem gedrückten rechten Mausknopf wird durch einen blauen, "
"nach rechts zeigenden, Mauszeiger dargestellt.\n"
-#. 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
msgid "Release Right Click\n"
-msgstr "Rechte Mausetaste loslassen\n"
+msgstr "Rechte Maustaste loslassen\n"
-#. 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 ""
"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/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 ""
"Dies wird durch einen Pfeilumriss und den Buchstaben S in der Nähe des "
"Pfeils dargestellt.\n"
-#. 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"
@@ -13793,14 +12120,14 @@ msgstr ""
"Für eine Umschalt-Links-Ziehen wird der linke Mausknopf gedrückt während die "
"Umschalt-Taste gedrückt gehalten wird.\n"
-#. 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 ""
"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/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"
@@ -13808,8 +12135,8 @@ msgstr ""
"Dies wird durch eine nach oben gefüllte Pfeilspitze mit dem Buchstaben C in "
"der Nähe des Pfeils angezeigt.\n"
-#. 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"
@@ -13817,30 +12144,30 @@ 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"
-#: ../../../../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 ""
-"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: 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 "Sie können auch die Strg-Taste mit der rechten Maustaste verwenden.\n"
-#: ../../../../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 ""
-"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: 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 "
@@ -13848,25 +12175,25 @@ 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/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 "Den gesamten Gleisplan können Sie im Kartenfenster sehen.\n"
-#. 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 ""
"Wenn Sie die Ansicht verkleinern, werden Gleise durch eine anstelle von zwei "
"Linien dargestellt.\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: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 "
@@ -13878,7 +12205,7 @@ msgstr ""
"hervorgehobener Bereich der Karte (blaue Hervorhebung) zeigt, welcher Teil "
"des Gleisplans im Moment dort gezeigt wird.\n"
-#: ../../../../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"
@@ -13886,8 +12213,8 @@ msgstr ""
"Durch Ziehen des hervorgehobenen Bereichs im Karten-Fenster können Sie den "
"angezeigten Bereich des Gleisplans verändern.\n"
-#. 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"
@@ -13895,76 +12222,107 @@ msgstr ""
"Sie können auch Rechts-Ziehen um den Maßstab und die Position des Gleisplans "
"im Hauptfenster zu bestimmen.\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: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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmnotes.xtr:14
-#: ../../../../build/work/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: 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: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: 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: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/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 "Klicken Sie auf Einzelschritt um zu XTrackCAD zurück zu kehren.\n"
-#: ../../../../build/work/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: 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 "Dieses Besipiel zeigt wie paralle Gleise erstellt werden.\n"
+msgstr "Dieses Beispiel zeigt wie parallele Gleise erstellt werden.\n"
-#. 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 ""
"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: 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 ""
-"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: 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 ""
-"Sobald Sie den Mausknop loslassen, wird das parallele Gleis erstellt.\n"
+"Sobald Sie den Mausknopf loslassen, wird das parallele Gleis erstellt.\n"
-#: ../../../../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"
@@ -13973,13 +12331,13 @@ msgstr ""
"Gleis erstellt haben. Dies wird durch die Einstellungen in Wiederholte "
"Befehle festgelegt.\n"
-#. 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 "Zu einer Weiche können keine Parallelen erstellt werden.\n"
-#. 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"
@@ -13987,56 +12345,56 @@ msgstr ""
"Beachten Sie, dass das neue gebogene Gleis automatisch mit dem kurzen "
"parallelen Gleis verbunden wird.\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: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/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 ""
"Klicken Sie zunächst mit der linken Maustaste auf die Form, die Sie ändern "
"möchten.\n"
-#. 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 "Dann ziehen Sie an dem Punkt, der verschoben werden soll\n"
-#. 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 ""
"Und schließlich drücken Sie die Leertaste, um die Änderung abzuschließen.\n"
-#. 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 ""
"Wenn Sie die Mitte einer Kante auswählen, wird eine neue Ecke erzeugt.\n"
-#. 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 ""
"Um eine Ecke zu löschen, wählen Sie diese aus und drücken dann Löschen oder "
"Rücktaste\n"
-#. 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 ""
-"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: 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"
@@ -14044,67 +12402,67 @@ msgstr ""
"Um den Befehl <Höhenprofil> nutzen zu können, müssen Sie zuerst Höhen auf "
"Ihrem Gleisplan festlegen.\n"
-#: ../../../../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 "In dieser Demo werden wird die Höhen aus der letzten Demo benutzen.\n"
-#: ../../../../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 "Das Höhenprofil Fenster kann nun vergrößert werden.\n"
-#. 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 ""
"Um das Höhenprofil anzeigen zu können muss eine Strecke in Ihrem Plan "
"ausgewählt werden.\n"
-#: ../../../../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 "Eine beliebigen Punkt festgelegen, um das Höhenprofil zu beginnen.\n"
+msgstr "Eine beliebigen Punkt festlegen, um das Höhenprofil zu beginnen.\n"
-#: ../../../../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 "Wir starten am rechten Ende des Abstellgleises.\n"
-#. 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 ""
-"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: 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 "Jetzt wählen Sie das Ende eines der Abzweige aus.\n"
-#. 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 ""
"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"
+"auf diesem Abschnitt des Pfads gibt, die mehr als zwei Verbindungen haben.\n"
-#: ../../../../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 ""
-"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: 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 "Versuchen Sie jetzt, den Endpunkt des anderen Abzweiges auszuwählen.\n"
+msgstr "Versuchen Sie jetzt, den Endpunkt des anderen Abzweigs auszuwählen.\n"
-#: ../../../../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"
@@ -14112,48 +12470,48 @@ msgstr ""
"Sie erhalten eine Fehlermeldung, da es keine Route zu einem der Endpunkte "
"des existieren Pfades gibt.\n"
-#. 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 ""
-"In diesem Fall entfernen Sie den letzten Teil des Pfads indem Sie auf das "
+"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: 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 "Beachten Sie, dass sich die Steigung im Höhenprofil geändert hat.\n"
-#. 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 ""
"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/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 ""
-"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: 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 ""
"Beachten Sie, dass ein Teil des Höhenprofils in blauer Farbe neu gezeichnet "
"wurde.\n"
-#: ../../../../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"
@@ -14161,26 +12519,26 @@ msgstr ""
"Außerdem wurden die berechneten Höhen und die Steigungsmarkierung auf der "
"rechten Seite des Gleisplans aktualisiert.\n"
-#. 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 ""
"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/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 ""
-"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: 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"
@@ -14188,8 +12546,8 @@ 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: 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"
@@ -14198,7 +12556,7 @@ msgstr ""
"nicht auf dem Pfad, da ein Pfad immer den kürzesten Weg zwischen Punkten "
"nutzt.\n"
-#: ../../../../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"
@@ -14206,26 +12564,26 @@ msgstr ""
"Wir können durch Ignorieren eines des der Endpunkte an einer Weiche "
"erzwingen, dass der Pfad die andere Route nimmt.\n"
-#: ../../../../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 ""
-"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: 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 "Jetzt entfernen Sie den ersten Teil des Pfads\n"
-#. 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 "und wählen ihn wieder.\n"
-#. 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"
@@ -14233,14 +12591,14 @@ msgstr ""
"Jetzt führt der Pfad durch den Endpunkt am Bahnhof und der Name erscheint im "
"Höhenprofil.\n"
-#. 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 ""
-"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/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 "
@@ -14249,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/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 ""
"Markieren Sie zuerst den unteren Endpunkt als festgelegt. Dies geschieht "
-"durch Umschalt-Rechtsklick und das Optionsmenu für das Höhenprofil. Sie "
+"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: 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 "Jetzt ziehen Sie den Punkt im Höhenprofil um die Höhe zu ändern.\n"
-#: ../../../../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"
@@ -14273,8 +12631,8 @@ msgstr ""
"Beachten Sie, dass die Steigung auf beiden Seiten des Punktes im "
"Dialogfenster unten angezeigt wird.\n"
-#. 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"
@@ -14282,53 +12640,61 @@ msgstr ""
"Nach dem Loslassen des Mausknopfes wird das Höhenprofil aktualisiert um die "
"neue Höhe und Steigung anzuzeigen.\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: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/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/work/app/i18n/custmsg.h:958
+#: ../../../../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: 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 "Wir vergrößern alles auf 150 Prozent.\n"
-#. 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 "Beachten Sie, dass die Spurweite nicht geändert wurde.\n"
-#. 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 "Lassen Sie uns das nochmals versuchen.\n"
-#: ../../../../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 "Jetzt ändern wir von einem Maßstab zu einem anderen.\n"
-#. 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 "Wir werden alles von Spur N nach Spur H0 umwandeln...\n"
-#. 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 "und die Spurweite gleichzeitig ändern.\n"
-#. 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 "Beachten Sie, dass der Titel der Weiche nicht geändert wurde.\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: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"
@@ -14337,31 +12703,31 @@ msgstr ""
"Klicken Sie zuerst auf das Zentrum der Drehbewegung und ziehen dann, um die "
"Objekte zu drehen.\n"
-#: ../../../../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 ""
"In diesem Beispiel werden wir das Gebäude um seinen Mittelpunkt drehen.\n"
-#. 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 ""
-"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: 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 ""
-"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/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 "
@@ -14371,7 +12737,7 @@ msgstr ""
"180) entweder im oder gegen den Uhrzeigersinn oder durch manuelle Eingabe "
"eines beliebigen Winkels drehen.\n"
-#: ../../../../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"
@@ -14380,13 +12746,13 @@ msgstr ""
"nicht ausgewählten Objekt ausrichten können. Dies ist nützlich, um "
"schienenseitige Gebäude an der Schiene auszurichten.\n"
-#: ../../../../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 "Leider können wir diese Merkmale derzeit nicht demonstrieren.\n"
-#. 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"
@@ -14394,49 +12760,91 @@ msgstr ""
"Mit dem Befehl <Lineal> wird ein Lineal auf den Gleisplan gezeichnet. Dieses "
"kann genutzt werden, um Abstände zu messen.\n"
-#. 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 ""
-"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: 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 "Aber Sie können dieses auch an eine andere Stelle versetzen.\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: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/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 "Ausgewählte Gleise können verschoben und gedreht werden.\n"
-#: ../../../../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 ""
"Ausgewählte Gleise können auch gelöscht, verborgen, aufgelistet und "
"exportiert werden.\n"
-#: ../../../../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 ""
"Wenn Sie den Cursor in die Nähe eines Gleises bewegen, das ausgewählt werden "
-"könnte, wird dieses mit blauen Linien gezeichnet.\n"
+"kann, wird dieses mit dicken blauen Linien gezeichnet.\n"
+
+#. 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"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:997
+#: ../../../../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: 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 "
@@ -14446,27 +12854,27 @@ msgstr ""
"die nicht ausgewählt sind. Diese Verbindungen werden gelöst, wenn das "
"ausgewählte Gleise verschoben, gedreht oder gelöscht wird. \n"
-#: ../../../../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 "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: 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 ""
"Durch erneutes Auswählen eines bereits ausgewählten Gleises bleibt nur "
"dieses ausgewählt.\n"
-#. 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 ""
"Durch Klicken außerhalb des Auswahlbereichs wird die Auswahl der Gleise "
"wieder aufgehoben.\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: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"
@@ -14474,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: 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 ""
-"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: 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 ""
"Seien Sie vorsichtig, denn es ist sehr einfach unbeabsichtigt alle Gleise "
"auszuwählen.\n"
-#. 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 "Mit der Taste <Esc> werden alle Objekte abgewählt.\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: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: 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 ""
-"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/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 "
@@ -14522,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/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 ""
-"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: 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 ""
-"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: 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"
@@ -14548,82 +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: 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 ""
"Als nächstes wählen wir den Befehl <Verbinde Gleise>, um \"Verschieben zum "
"Verbinden\" zu demonstrieren\n"
-#. 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 ""
-"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/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 "Wir werden das Hauptfenster wieder bewegen.\n"
-#. 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 ""
"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: 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 ""
-"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: 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 ""
"Wählen Sie einfach die Stelle des Gleises aus, an der dieses getrennt werden "
"soll.\n"
-#: ../../../../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 ""
"Weichen können nur getrennt werden, wenn Sie die Umschalttaste drücken.\n"
-#. 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 ""
-"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: 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 "Mit dem Befehl <Tunnel> verbergen Sie die ausgewählten Gleise.\n"
-#: ../../../../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 ""
"Ein Tunnelportal wird am Übergang zwischen sichtbarem und verborgenem Gleis "
"gezeichnet.\n"
-#: ../../../../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"
@@ -14631,68 +13037,71 @@ msgstr ""
"Die Darstellung des verborgenen Gleises (durchgezogen, gestrichelt oder "
"unsichtbar) kann in den Einstellungen festgelegt werden.\n"
-#. 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 ""
"Um die Gleise wieder sichtbar zu machen, wählen Sie diese aus und "
"wiederholen den Befehl <Tunnel>.\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: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: 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 ""
-"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: 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 "An diesem Punkt wird der linke Mausknopf los gelassen.\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: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: 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 ""
-"Eine Tischlante wird von den Enden anderer Tischkantenlinien angezogen.\n"
+"Eine Tischkante wird von anderen Objekten angezogen, sofern Sie nicht die "
+"Alt-Taste drücken.\n"
-#. 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 "Tischkanten können durch Ziehen an den Enden geändert werden.\n"
-#. 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 ""
-"Wenn Sie die Strg-Taste während des Ziehens gedrückt halten, wird die "
-"Tischkante von anderen Objekten angezogen.\n"
+"Die Tischkante wird von anderen Objekten angezogen, sofern Sie nicht die Alt-"
+"Taste während des Ziehen gedrückt halten. \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: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"
@@ -14700,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/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"
@@ -14708,18 +13117,18 @@ msgstr ""
"In jedem Dialog müssen einige Parameter und eine oder zwei Zeilen "
"Beschreibungen eingetragen werden.\n"
-#: ../../../../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 ""
-"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: 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 "Dies ist eine normale Weiche.\n"
-#: ../../../../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 "
@@ -14730,51 +13139,38 @@ msgstr ""
"rechten und linken Abzweigen werden die Beschreibung und die Teilenummern "
"getrennt erfasst.\n"
-#: ../../../../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 ""
"Einige Weichen und Festgleise besitzen ein festes Gleisbett. Für diese Teile "
-"können Sie die Breite des Gleisbetts und Dicke und Farbe der "
+"können Sie die Breite des Gleisbetts sowie Dicke und Farbe der "
"Begrenzungslinien festlegen.\n"
-#. 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 ""
"Für eine doppelte Kreuzungsweiche wird durch wenige Daten festgelegt.\n"
-#. 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 ""
"Eine doppelter Gleiswechsel erfordert nur die Gleislänge und den "
"Gleisabstand.\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: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/work/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: 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: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"
@@ -14782,50 +13178,66 @@ msgstr ""
"Sie können die Weiche an eine beliebigen Position auf dem Gleisplan legen. "
"Ziehen Sie die Weiche an den richtigen Platz...\n"
-#. 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: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/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 ""
-"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: 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 ""
"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"
-
-#: ../../../../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 ""
-"Durch Drücken des Schliessen-Knopfes im Dialogfenster können Sie den Befehl "
-"beenden und die Weiche festlegen.\n"
+"drücken Sie Leertaste oder die Eingabetaste um den Befehl abzuschließen.\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: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/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 "
@@ -14836,80 +13248,75 @@ msgstr ""
"ist. Wie wir später sehen werden ist diese Information hilfreich, um "
"komplexe Gleiskonfigurationen zu erstellen.\n"
-#. 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 ""
"Durch Bewegen des Mauszeiger von einer Seite des Gleises auf die andere wird "
"die Weiche um 180° gedreht.\n"
-#. 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 ""
-"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: 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 ""
-"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: 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 "Durch Drücken von <Schliessen> wird der Befehl <Weiche> beendet.\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: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/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 "Dafür benutzen wir den Befehl <Trennen>.\n"
-#. 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 ""
-"Normalerweise bekommen wir eine Fehlermeldung, wenn wir versuchen eine "
+"Normalerweise erhalten wir eine Fehlermeldung, wenn wir versuchen eine "
"Weiche zu trennen.\n"
-#. 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 ""
"Drücken und halten Sie die Umschalten-Taste und versuchen es nochmals.\n"
-#. 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 ""
-"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: 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 "Wir können versuchen, das abzweigende Gleis zu trennen.\n"
+msgstr "Wir können versuchen, das abzweigende Gleis zu trennen.\n"
-#. 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"
@@ -14917,41 +13324,38 @@ msgstr ""
"Beachten Sie, dass das abzweigende Gleis in ein gebogenes Gleis umgewandelt "
"wurde...\n"
-#. 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 "und ein gerades Gleis.\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: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: 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"
-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/work/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: 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"
-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: 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"
@@ -14959,1116 +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: 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 "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/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 "Durch Vergrößern können wir sehen, was passiert.\n"
-#. 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 ""
-"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: 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 ""
-"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/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 ""
-"XTrackCAD verändert die Weichenposition um die beste Einpassung zu "
+"XTrackCAD verändert die Weichenposition, um die beste Einpassung zu "
"erreichen.\n"
-#. 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 ""
"Beachten Sie, dass durch die Weiche das parallele Gleis getrennt wurde.\n"
-#: ../../../../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 "Dieses Reststück müssen wir auswählen und löschen.\n"
-#. 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 "Wiederholen Sie diesen Ablauf für die anderen Gleise der Gleisharfe.\n"
-#. 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 ""
-"Beim letzten Gleis benutzen wir einen Gleisbogen anstelle einer Weiche.\n"
+"Das letzte Gleis verbinden wir mit einem Gleisbogen anstelle einer Weiche.\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: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/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 "Zuerst wählen wir die Gleise der Hauptstrecke aus...\n"
-#. 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 "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/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 ""
"Wir können das Menü Bearbeiten nicht anzeigen, aber wir können die Wirkung "
"zeigen.\n"
-#. 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 ""
-"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: 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 ""
"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: 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 "Dann wird die Drehscheibe an die endgültige Position geschoben.\n"
+msgstr "Dann wird die Drehscheibe an die endgültige Position gezogen.\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: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: 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 "Mausaktionen"
-#. 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 "Dialoge"
-#. 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 "Zoom & Pan"
-#. 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 "Eigenschaften und Auswählen"
+msgstr "Beschreiben und Auswählen"
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:322
-#: ../../../../build/work/app/i18n/custmsg.h:1169
-msgid "Describe"
-msgstr "Beschreibe"
-
-#. 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 "Einfache Gleise"
-#. 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 "Gleisgeraden"
-#. 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 "Gleisbögen"
-#. 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 "Kreise"
-#. 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 "Drehscheiben"
-#. 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 "Gleise bearbeiten"
+msgstr "Gleise ändern"
-#. 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 "Endpunkte ändern "
-#. 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 "Erweitern"
-#. 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 "Mittlere und dicke Gleise"
-#. 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 "Gleise verbinden"
-#. 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 "Gerade zu Gerade"
-#. 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 "Bogen zu Gerade"
-#. 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 "Kreis zu Kreis"
-#. 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 "Mit Drehscheiben verbinden"
-#. 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 "Übergangsbögen"
-#. 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 "Angrenzende Gleise"
-#. 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 "Verbinden durch Verschieben"
-#. 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 "Auswählen und Positionieren"
-#. 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 "Eine Gleisharfe erstellen."
-#. 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 "Weichen entwerfen"
-#. 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 "Zusammenfassen und Zerlegen"
-#. 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 "Weichenenden verändern"
-#. 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 "Selbstbauweichen"
-#. 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 "Höhen und Profil"
-#. 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 "Höhen"
-#. 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 "Verschiedene Gleismodifikationen"
-#. 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 "Löschen und Rückgängig machen"
-#. 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 "Auftrennen und Tunnels"
+msgstr "Auftrennen und Tunnel"
-#. 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 "Gleiswendel"
-#. 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 "Fehlerhafte Gleise"
-#. 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 "Abstellgleis verbinden"
+msgstr "Verbinden und zusammenfügen - Abstellgleis"
-#. 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 "Verbinden und Zusammenfügen"
+msgstr "Verbinden und Zusammenfügen - Gleis 8"
-#. 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 "Sonstige Befehle"
-#. 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 "Tischkanten"
-#. 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 "Maßlinien"
-#. 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 "Linien"
-#. 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 "Polygone"
-#. 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 "Polygone modifizieren"
-#. 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
msgid "Control Panels"
msgstr "Stellpulte"
-#~ msgid "Origin to Centroid - 'c'"
-#~ msgstr "Schwerpunkt als Bezugspunkt - 'c"
+#. 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"
-#~ msgid "Select 2nd track - desired radius %0.3f"
-#~ msgstr "Zweites Gleis auswählen, gewünschter Radius %03.f"
+#: ../../../../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"
-#~ msgid "Pan to origin - 'o'/'0'"
-#~ msgstr "Ausschnitt auf Ursprung zurücksetzen - 'o'/ '0'."
+#: ../../../../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"
-#~ msgid "Zoom keeps lower corner in view"
-#~ msgstr "Linke untere Ecke beim Zoomen festhalten"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1291
+msgid "Instructions:\n"
+msgstr "Anleitungen:\n"
-#~ msgid "Whether zoom is locked to the bottom left corner or the center point"
-#~ msgstr ""
-#~ "Festpunkt beim Zoomen ist die linke untere Ecke oder der Mittelpunkt"
+#: ../../../../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"
-#~ msgid "Expected END not found!"
-#~ msgstr "Erwartete END-Anweisung nicht gefunden!"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1293
+msgid " xtrkcad -d regression=2\n"
+msgstr " xtrkcad -d regression=2\n"
-#~ msgid "Move Origin Mode"
-#~ msgstr "Modus Ursprung verschieben"
+#: ../../../../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"
-#~ msgid "Find ..."
-#~ msgstr "Finden..."
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1295
+msgid " \n"
+msgstr " \n"
-#~ msgid "Output type"
-#~ msgstr "Parallelen-Typ"
+#: ../../../../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"
-#~ msgid "Output Type"
-#~ msgstr "Parallelen-Art"
+#: ../../../../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"
-#~ msgid "Output type:"
-#~ msgstr "Parallelen-Typ:"
+#. 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"
-#~ msgid "Specifies the type of the parallel object"
-#~ msgstr "Legt den Type des erstellten, parallelen Objekts fest"
+#: ../../../../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"
-#~ msgid "Lock Origin Offset"
-#~ msgstr "Sperre Bezugspunkt"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1303
+msgid "Run Regression Checks\n"
+msgstr "Regressionstests ausführen\n"
-#, fuzzy
-#~ msgid "Type:"
-#~ msgstr "Typ"
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1306
+msgid "Remove the parameter definitions\n"
+msgstr "Entfernt die arameter Definitionen\n"
-#, fuzzy
-#~ msgid "cmdSelectMode"
-#~ msgstr "Auswählen"
+#: ../../../../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"
-#, fuzzy
-#~ msgid "cmdModifyMode"
-#~ msgstr "Verändern"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:10
+msgid "Cancels this command"
+msgstr "Bricht den aktuellen Befehl ab"
-#, fuzzy
-#~ msgid "cmdPanMode"
-#~ msgstr "cmdPanMode"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:11
+msgid "Closes the dialog"
+msgstr "Schließt das Dialogfenster"
-#, fuzzy
-#~ msgid "cmdDescribeMode"
-#~ msgstr "Beschreibe"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:12
+msgid "About program dialog"
+msgstr "Informationen über dieses Programm"
-#, fuzzy
-#~ msgid "Place 1st end point of Bezier - snap to %s end"
-#~ msgstr ""
-#~ "Ersten Endpunkt der Bezier setzen, mit Umschalt das %s Ende benutzen"
+#: ../../../../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"
-#~ msgid "SnapGrid Enable"
-#~ msgstr "Fangraster aktivieren"
+#: ../../../../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"
-#, fuzzy
-#~ msgid "Drag to move, +Shift to drag out end track from Cornu"
-#~ msgstr ""
-#~ "Ziehen zum Verschieben, +Umschalten zum Herausziehen der Endspur aus Cornu"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:15
+msgid "Show a protractor"
+msgstr "Zeige einen Winkelmesser an"
-#~ msgid ""
-#~ "Place 2nd end point of Cornu track on track with an unconnected end-point"
-#~ msgstr ""
-#~ "Setze den zweiten Endpunkt des Cornu-Gleis auf ein Gleis mit einem "
-#~ "unverbundenen Endpunkt"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:16
+msgid "Turn magnetic snap on or off"
+msgstr "Magnetisches Fangen ein/aus"
-#, fuzzy
-#~ msgid "Position End"
-#~ msgstr "Position X"
+#: ../../../../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"
-#~ msgid "Origin Angle"
-#~ msgstr "Ausgangswinkel"
+#: ../../../../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"
-#~ msgid "%s: Layer=%d"
-#~ msgstr "%s: Ebene=%d"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:20
+msgid "Edit a block definition "
+msgstr "Einen Blockabschnitt bearbeiten "
-#~ msgid "Drag to set size, +Shift to change radius"
-#~ msgstr ""
-#~ "Größe durch Ziehen festlegen, mit der Umschalttaste den Radius ändern"
+#: ../../../../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"
-#~ msgid "# End Pts"
-#~ msgstr "Anzahl der Endpunkte"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:22
+msgid "Manage your Car and Loco Inventory"
+msgstr "Wagen- und Lokbestand verwalten"
-#~ msgid "Draw moving track normally"
-#~ msgstr "Bewegte Gleise normal zeichnen"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:23
+msgid "Create track circle from center"
+msgstr "Erstelle Gleiskreis um gegebenen Mittelpunkt"
-#~ msgid "Draw moving track simply"
-#~ msgstr "Bewegte Gleise vereinfacht zeichnen"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:24
+msgid "Create fixed radius track circle"
+msgstr "Erstelle Gleiskreis mit festgelegtem Radius"
-#~ msgid "Draw moving track as end-points"
-#~ msgstr "Bewegte Gleise als Endpunkte zeichnen"
+#: ../../../../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"
-#~ msgid " Angle %0.3f"
-#~ msgstr " Winkel %0.3f"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:26
+msgid "Create track circle from tangent"
+msgstr "Erstelle Gleiskreis an einer Tangente"
-#~ msgid "Simple"
-#~ msgstr "Einfach"
+#: ../../../../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"
-#~ msgid "End Points"
-#~ msgstr "Endpunkte"
+#: ../../../../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"
-#~ msgid "Bitmap files (*.bmp)|*.bmp"
-#~ msgstr "Windows Bitmapdaiteien (+.bmp)|*.bmp"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:29
+msgid "Command Options dialog"
+msgstr "Dialog für die Befehlsoptionen"
-#~ msgid "Color Layers"
-#~ msgstr "Ebenenfarben"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:30
+msgid "Controls colors"
+msgstr "Steuert die Farben"
-#~ msgid "End-Points"
-#~ msgstr "Endpunkte"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:31
+msgid "Connect two tracks"
+msgstr "Gleise zusammenfügen"
-#~ msgid "Draw Moving Tracks"
-#~ msgstr "Zeichne bewegte Gleise"
+#: ../../../../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"
-#~ msgid "Unload"
-#~ msgstr "Entladen"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:33
+msgid "Select control element to create"
+msgstr "Neues Kontrollelement festlegen"
-#~ msgid "Use Shift+PageDwn to jump to preset Zoom In"
-#~ msgstr ""
-#~ "Mit Umschalt+Bild runter den gespeicherten unteren Zoom-Faktor verwenden"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:34
+msgid "Manage control elements"
+msgstr "Steuerungselemente verwalten"
-#~ msgid "Use Shift+PageUp to jump to preset Zoom Out"
-#~ msgstr ""
-#~ "Mit Umschalt+Bild hoch den gespeicherten oberen Zoom-Faktor verwenden"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:35
+msgid "Set Convert mode"
+msgstr "Konvertierungsmodus einstellen"
-#~ msgid "Commands"
-#~ msgstr "Befehle"
+#: ../../../../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"
-#~ msgid "Tunnel"
-#~ msgstr "Tunnel"
+#: ../../../../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"
-#~ msgid "How to draw track being moved/rotated"
-#~ msgstr ""
-#~ "Festlegen wie Gleise gezeichnet werden, sobald sie bewegt/rotiert werden"
+#: ../../../../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"
-#~ msgid "First turn off the Snap Grid.\n"
-#~ msgstr "Zuerst schalten Sie bitte das Fangraster aus.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:39
+msgid "Create Cornu track"
+msgstr "Cornu-Bogen erstellen"
-#~ msgid "Rotate the signals and move them to the proper locations.\n"
-#~ msgstr ""
-#~ "Rotieren Sie die Signale und setzen diese dann an die richtige Stelle.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:40
+msgid "Create curved track from center"
+msgstr "Erstelle Gleisbogen um einen gegebenen Mittelpunkt"
-#~ msgid "Rotate the arrow head by 180° and move into position.\n"
-#~ msgstr ""
-#~ "Rotieren Sie die Pfeilspitze um 180° und bringen Sie diese in die "
-#~ "richtige Position.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:41
+msgid "Create curved track from chord"
+msgstr "Erstelle Gleisbogen von einer Sehne"
-#~ 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 ""
-#~ "Wird beim Zeichnen die Umschalttaste festgehalten wird der letzte "
-#~ "Endpunkt als Startpunkt für das neue Gleis benutzt. Dadurch wird das "
-#~ "Zeichnen verbundener Linien vereinfacht.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:42
+msgid "Create curved track from end-point"
+msgstr "Erstelle Gleisbogen von Endpunkt"
-#~ msgid ""
-#~ "If you drag a Corner to another Corner the two are merged and the Edge "
-#~ "between them is removed.\n"
-#~ msgstr ""
-#~ "Wenn Sie eine Ecke auf eine andere Ecke ziehen, werden diese "
-#~ "zusammengefasst und die Kante dazwischen wird entfernt.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:43
+msgid "Create Bezier track"
+msgstr "Erstelle Bezier-Gleis"
-#~ 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 ""
-#~ "Umschalten-Rechts-Klick öffnet ein Auswahlmenu, das Sie nutzen können um "
-#~ "vorgegebene Werte für die Drehung (15°, 30°, 45°, 90° or 180°) "
-#~ "auszuwählen. Diese Demonstration kann das Auswahlmenu nicht darstellen, "
-#~ "aber sie zeigt den Effekt.\n"
+#: ../../../../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"
-#~ msgid "Here we will rotate by 90° clockwise (CW).\n"
-#~ msgstr "Jetzt drehen wir um 90° im Uhrzeigersinn.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:45
+msgid "Create curved track from tangent"
+msgstr "Erstelle Gleisbogen an einer Tangente"
-#~ msgid ""
-#~ "Another option of the <Rotate> command popup-menu is to Align the "
-#~ "Selected object with some other object.\n"
-#~ msgstr ""
-#~ "Der Befehl <Rotate> bietet auch die Möglichkeit, die ausgewählten Objekt "
-#~ "an anderen Objekten auszurichten.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:46
+msgid "Manipulate Custom designer entries"
+msgstr "Bearbeite die eigenen Designs"
-#~ 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 ""
-#~ "Zuerst klicken wir auf eine Linie des asgewählten Objektes. Diese Linie "
-#~ "wird als Grundllinie für die Ausrichtung benutzt.\n"
+#: ../../../../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"
-#~ 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 ""
-#~ "Dann klicken wir auf ein Objekt, das nicht ausgewählt ist. Das "
-#~ "ausgewählte Gebäude wird so gedreht, dass die gewählte Linie parallel zu "
-#~ "dem geraden Gleis ist.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:48
+msgid "Delete objects"
+msgstr "Objekte löschen"
-#~ 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 ""
-#~ "Wenn wir die Maus auf die andere Seite des Gleises ziehen, wird das "
-#~ "Gebäude um 180° gedreht. Dies ist vergleichbar zu dem Setzen von "
-#~ "Weichen.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:49
+msgid "Playback demos"
+msgstr "Demos abspielen"
-#~ 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 ""
-#~ "Wir können auch an gebogenen Elementen ausrichten. Das ausgewählte Objekt "
-#~ "wird so gedreht, dass es parallel dem Punkt der Kurve ist, der sich unter "
-#~ "dem Mauszeiger befindet.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:50
+msgid "Change Object Properties"
+msgstr "Eigenschaften des Objektes bearbeiten"
-#~ msgid ""
-#~ "As we drag along the curved track the Selected object rotates to follow "
-#~ "the curve.\n"
-#~ msgstr ""
-#~ "Während wir entlang des gebogenen Gleises ziehen, dreht sich das "
-#~ "ausgewählte Objekt um der Kurve zu folgen.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:51
+msgid "Change to properties mode"
+msgstr "Zum Modus \"Eigenschaften\""
-#~ msgid "Again, if we drag across the track we can flip the stucture.\n"
-#~ msgstr ""
-#~ "Auch hier können wir das Gebäude spiegeln, indem wir auf die andere Seite "
-#~ "ziehen.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:52
+msgid "Deselect all selected objects"
+msgstr "Ausgewählte Objekte abwählen"
-#~ msgid "We can also Align to another Structure or any object.\n"
-#~ msgstr ""
-#~ "Wir können auch an anderen Gebäuden oder jedem anderen Objekt "
-#~ "ausrichten.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:53
+msgid "Change Display parameters"
+msgstr "Anzeigeeigenschaften ändern"
-#~ msgid "Shift used, but no Unconnected Track End there"
-#~ msgstr ""
-#~ "Umschalte-Taste gedrückt, aber es befindet sich hier kein offenes "
-#~ "Gleisende"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:54
+msgid "Create benchwork"
+msgstr "Unterbau erstellen"
-#~ msgid "Shift used, but no Line End there"
-#~ msgstr ""
-#~ "Umschalt-Taste gedrückt, aber hier befindet sich kein Linienendpunkt"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:55
+msgid "Create a box"
+msgstr "Ein Viereck erstellen"
-#~ msgid "Track picked - now select a Point"
-#~ msgstr "Gleis ausgewählt - jetzt einen Punkt auswählen"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:56
+msgid "Set Circle drawing command"
+msgstr "Wähle Befehl um Kreise zu zeichnen"
-#~ msgid ""
-#~ "No unconnected end-point on track - Try again or release Shift and click"
-#~ msgstr ""
-#~ "Dieses Gleis hat keinen unverbundenen Endpunkt, nochmal versuchen oder "
-#~ "Umschalttaste lösen und dann klicken"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:57
+msgid "Create a circle"
+msgstr "Einen Kreis erstellen"
-#~ msgid "Not on a track - Try again or release Shift and click"
-#~ msgstr ""
-#~ "Nicht auf einem Gleis, nochmal versuchen oder Umschalttaste lösen und "
-#~ "Klicken"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:58
+msgid "Draw a circle line from center"
+msgstr "Zeichne Kreislinie um gegebenen Mittelpunkt"
-#~ msgid "End Locked: Drag out to center"
-#~ msgstr "Ende fixiert, zum Mittelpunkt ziehen"
+#: ../../../../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"
-#~ msgid "Radius=%s Angle=%0.3f"
-#~ msgstr "Radius=%s Winkel=%0.3f"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:60
+msgid "Draw a circle line from tangent"
+msgstr "Zeichne Kreis an Tangente"
-#~ msgid "Length=%s Angle=%0.3f"
-#~ msgstr "Länge=%s Winkel=%0.3f"
+#: ../../../../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"
-#~ msgid "Polygonal Line"
-#~ msgstr "Vieleck"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:62
+msgid "Create a curved line"
+msgstr "Eine gebogene Linie erstellen"
-#~ msgid "There are no reachable Defined Elevations"
-#~ msgstr "Ziehen um die Höhe zu ändern"
+#: ../../../../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"
-#~ msgid "Dist = %s"
-#~ msgstr "Entfernung = %s"
+#: ../../../../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"
-#~ msgid "Select track to modify"
-#~ msgstr "Zu bearbeitendes Gleis auswählen"
+#: ../../../../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"
-#~ msgid "Drag to create new track segment"
-#~ msgstr "Ziehen um einen neuen Gleisabschnitt zu 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"
-#~ msgid "Print Registration Marks"
-#~ msgstr "Drucke Positionierungshilfen"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:67
+msgid "Create a Bezier line"
+msgstr "Eine Bezier-Linie erstellen"
-#~ msgid "Print Snap Grid"
-#~ msgstr "Fangraster drucken"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:68
+msgid "Create a dimension line"
+msgstr "Zeichne Maßlinie"
-#~ msgid "Print Rulers"
-#~ msgstr "Maßlinien drucken"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:69
+msgid "Create a filled box"
+msgstr "Ein gefülltes Viereck erstellen"
-#~ msgid "Cornu selected too tight after move - it was left alone"
-#~ msgstr ""
-#~ "Die ausgewählte Klothoide ist nach dem Verschieben zu eng und wurde daher "
-#~ "nicht verändert"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:70
+msgid "Create a filled circle"
+msgstr "Einen gefüllten Kreis erstellen"
-#~ msgid "TURNOUT "
-#~ msgstr "WEICHE "
+#: ../../../../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"
-#~ msgid "%s Files|*.xtc"
-#~ msgstr "%s-Gleispläne|*.xtc"
+#: ../../../../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"
-#~ msgid "Bitmap files|*.xpm"
-#~ msgstr "Grafikdateien|*.xpm"
+#: ../../../../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"
-#, fuzzy
-#~ msgid "Describe link"
-#~ msgstr "Beschreibe"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:74
+msgid "Create a polygon"
+msgstr "Ein Polygon erstellen"
-#~ msgid "A&bove"
-#~ msgstr "Darüber"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:75
+msgid "Create a filled polygon"
+msgstr "Ein gefülltes Polygon erstellen"
-#~ msgid "Belo&w"
-#~ msgstr "Darunter"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:76
+msgid "Create a polyline"
+msgstr "Eine Polylinie erstellen"
-#~ msgid "Note: "
-#~ msgstr "Notiz: "
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:77
+msgid "Create a straight line"
+msgstr "Eine gerade Linie erstellen"
-#~ msgid "All files"
-#~ msgstr "Alle Dateien"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:78
+msgid "Set Line drawing command"
+msgstr "Wähle Befehl um Linien zu zeichnen"
-#~ msgid "General note about the layout"
-#~ msgstr "Allgemeine Notiz zur Anlage"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:79
+msgid "Set Shape drawing command"
+msgstr "Wähle Befehl um Formen zu zeichnen"
-#, fuzzy
-#~ msgid "Select a note type"
-#~ msgstr "Wählen Sie eine Weiche aus"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:80
+msgid "Draw table edge"
+msgstr "Tischkante zeichnen"
-#, fuzzy
-#~ msgid "Place a weblink on the layout"
-#~ msgstr "Eine Notiz auf den Gleisplan setzen"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:81
+msgid "Easement menu"
+msgstr "Einstellungen für Übergangsbögen"
-#, fuzzy
-#~ msgid "Place a text note on the layout"
-#~ msgstr "Eine Notiz auf den Gleisplan setzen"
+#: ../../../../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"
-#~ 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 ""
-#~ "Einige Beispiel Gleisplänen stehen zu Ihrer Verfügung, diese wurden im "
-#~ "Unterverzeichnis 'examples' im Haupverzeichnis von XTrackCAD installiert. "
-#~ "Über den Dialog \"Datei|Öffnen\" können diese geladen werden."
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:84
+msgid "Set Import/Export mode"
+msgstr "Import-/Exportmodus auswählen"
-#~ msgid ""
-#~ "The length of the straight track is determined by the distance from the "
-#~ "far End-Point and the cursor.\n"
-#~ msgstr ""
-#~ "Die Länge des geraden Gleises wird durch den Abstand zwischen dem "
-#~ "entfernten Endpunkt und dem Mauszeiger festgelegt.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:85
+msgid "Export an .xti file"
+msgstr "Export in eine XTI-Datei (XTrackCAD Importdatei)"
-#~ 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 ""
-#~ "Jetzt wird der Mauszeiger über den anderen, entfernten, Endpunkt des "
-#~ "geraden Gleises verschoben. Sie erhalten einen Hinweis und das "
-#~ "Verbindungsgleis wird rot.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:86
+msgid "Export a Bitmap image"
+msgstr "Als Bitmap exportieren"
-#~ msgid "And Right-Drag de-selects all tracks within an area.\n"
-#~ msgstr ""
-#~ "Und Ziehen mit rechter gedrückter Maustaste entfernt alle Objekte in "
-#~ "einem Bereich aus der Auswahl.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:87
+msgid "Export a DXF file"
+msgstr "Export in eine DXF-Datei"
-#~ msgid ""
-#~ "Drawing the tracks while moving can be very time-consuming. We had just "
-#~ "used the \"Normal\" method of drawing tracks.\n"
-#~ msgstr ""
-#~ "Das Zeichnen der Gleise während des Verschieben kann die Bewegung sehr "
-#~ "verzögern. Gerade haben wir die \"normale\" Methode des Zeichnen "
-#~ "benutzt.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:88
+msgid "Export an SVG file"
+msgstr "Export in eine SVG-Datei"
-#~ 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 ""
-#~ "Im Dialogfenster Befehlsoptionen (aus dem Einstellungen Menu) können Sie "
-#~ "die Zeichenmethode ändern.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:90
+msgid "Flip selected objects"
+msgstr "Ausgewählte Objekte spiegeln"
-#~ 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 ""
-#~ "Sie können das Befehlsoptionen Menu auch aufrufen, indem sie Umschalt-"
-#~ "Rechts-Klick betätigen. Diese Optionen sind auch für die Befehle "
-#~ "Verschieben und Drehen vorhnden.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:91
+msgid "Adjust snap grid"
+msgstr "Fangraster anpassen"
-#~ 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 ""
-#~ "Die nächste Methode ist \"einfaches\" Zeichnen. Hier werden Gleise durch "
-#~ "eine Linie dargestellt, Endpunkte und Linien werden nicht gezeichnet. "
-#~ "Gebäude werden während der Operation durch ein Rechteck ersetzt.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:92
+msgid "Enable snap grid"
+msgstr "Fangraster aktivieren"
-#~ msgid ""
-#~ "Note: you can move the Command Options dialog if it obscures the main "
-#~ "window.\n"
-#~ msgstr ""
-#~ "Beachten Sie, dass Sie die das Dialogfenster Befehlsoptionen verschieben "
-#~ "können, wenn es das Hauptfenster verdeckt.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:93
+msgid "Show snap grid"
+msgstr "Fangraster anzeigen"
-#~ msgid ""
-#~ "The next method is to just draw the End-Points of the selected tracks.\n"
-#~ msgstr ""
-#~ "Die nächste Methode ist das einfache Zeichnen der Endpunkte der "
-#~ "ausgewählten Gleise.\n"
+#: ../../../../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"
-#~ msgid ""
-#~ "Unconnected End-Points are indicated by Red crosses, and connected End-"
-#~ "Points are indicated by Red lines.\n"
-#~ msgstr ""
-#~ "Nicht verbundene Endpunkte werden durch ein rotes Kreuz markiert, "
-#~ "verbundene Endpunkte durch eine rote Linie.\n"
+#: ../../../../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"
-#~ msgid "Now we will go back to using the Normal method again.\n"
-#~ msgstr "Jetzt gehen wir zu der normalen Methode zurück.\n"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:97
+msgid "Import an .xti file"
+msgstr "Importieren einer .xti-Datei"
-#~ 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 ""
-#~ "Beachten Sie dass der Befehl \"Verbinden durch Bewegen\" in der Demo "
-#~ "nicht gezeigt werden kann.\n"
+#: ../../../../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"
-#~ msgid "Modify Bezier Complete - select another"
-#~ msgstr "Ändern der Bezier-Kurve bendet, bitte eine neue auswählen"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:99
+msgid "Join two tracks"
+msgstr "Verbinden von zwei Gleisen"
-#~ msgid "Freeform"
-#~ msgstr "Freeform"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:100
+msgid "Join two lines or polylines"
+msgstr "Verbinden von zwei Linien oder Polylinien"
-#~ msgid "1 page"
-#~ msgstr "1 Seite"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:101
+msgid "Set Join mode"
+msgstr "Verbindungsmodus einstellen"
-#~ msgid "Is Cornu End -> Not Selectable"
-#~ msgstr ""
-#~ "Dies ist das Ende einer Cornu und kann daher nicht ausgewählt werden."
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:102
+msgid "Change Layers"
+msgstr "Ebenen ändern"
-#~ msgid "Must be on the %s Track"
-#~ msgstr "Muss auf dem %s Gleis sein"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:103
+msgid "Selects the current drawing layer"
+msgstr "Auswahl der aktuellen Zeichenebene"
-#~ msgid "Select other end of Bezier, +Shift -> snaps to %s end"
-#~ msgstr ""
-#~ "Das andere Ender der Bezier wählen, mit Umschalt-Taste an %s Endpunkt "
-#~ "verbinden"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:104
+msgid "Layout parameters"
+msgstr "Einstellungen des Gleisplans"
-#~ msgid ""
-#~ "No Unconnected end-point on track - Try again or release shift and click"
-#~ msgstr ""
-#~ "Dieses Gleis hat keinen offenen Endpunkt, nochmal versuchen oder "
-#~ "Umschalttaste lösen und dann klicken"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:106
+msgid "Show/Hide Map Window"
+msgstr "Übersichtsfenster anzeigen/verbergen"
-#~ msgid "Not on a Track - Try again or release shift and click"
-#~ msgstr "Nicht auf einem Gleis, nochmal versuchen or "
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:107
+msgid "Select Measurement Tool"
+msgstr "Messwerkzeug auswählen"
-#, fuzzy
-#~ msgid ""
-#~ "Place 1st end point of Cornu track on track with an unconnected end-point"
-#~ msgstr "Ersten Endpunkt der Gleisgerade setzen"
+#: ../../../../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"
-#~ msgid "Connect Sectional Tracks"
-#~ msgstr "Gleisstücke verbinden"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:111
+msgid "Move a label"
+msgstr "Beschreibung verschieben"
-#~ msgid "Drag to move selected tracks"
-#~ msgstr "Ausgewählte Gleise durch Ziehen 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"
-#, fuzzy
-#~ msgid "End Angle 2"
-#~ msgstr "Winkel eingeben..."
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:114
+msgid "Print a bitmap"
+msgstr "Drucke in eine Grafikdatei"
-#, fuzzy
-#~ msgid "Elev 1"
-#~ msgstr "Höhe = %s"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:115
+msgid "Pan or zoom the layout"
+msgstr "Ausschnitt ändern oder Zoomen"
-#, fuzzy
-#~ msgid "End Radius Center 1: X"
-#~ msgstr "Endpunkt 1: X"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:116
+msgid "Change to zoom/pan mode"
+msgstr "Zum Modus Zoom/Ausschnitt wechseln"
-#, fuzzy
-#~ msgid "Elev 2"
-#~ msgstr "Höhe = %s"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:117
+msgid "Create a parallel track"
+msgstr "Ein paralleles Gleis erstellen"
-#, fuzzy
-#~ msgid "Radius 2"
-#~ msgstr "Radius 2"
+#: ../../../../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 "End Radius Center 2: X"
-#~ msgstr "Endpunkt 2: X"
+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"
-#~ msgid "Angle=%0.3f"
-#~ msgstr "Winkel=%0.3f"
+#: ../../../../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"
-#~ msgid "Place circle center"
-#~ msgstr "Setze Kreismittelpunkt"
+#: ../../../../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"
-#~ msgid "Place circle"
-#~ msgstr "Platziere Kreis"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:394
+msgid "Save parts list to file"
+msgstr "Teileliste in Datei speichern"
-#~ msgid "Draw"
-#~ msgstr "Zeichne"
+#: ../../../../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"
-#~ msgid "Show Map"
-#~ msgstr "Karte anzeigen"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:396
+msgid "Enable prices on the Parts List"
+msgstr "Preise in der Teileliste anzeigen"
-#~ msgid "Blocks"
-#~ msgstr "Gleisabschnitte"
+#: ../../../../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"
-#~ msgid "SwitchMotor"
-#~ msgstr "Weichenantrieb"
+#: ../../../../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"
-#~ msgid "Switch Motors"
-#~ msgstr "Weichenatriebe"
+#: ../../../../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"
-#~ msgid "Black"
-#~ msgstr "Schwarz"
+#: ../../../../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"
-#~ msgid "Dark Blue"
-#~ msgstr "Dunkelblau"
+#: ../../../../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"
-#~ msgid "Steel Blue"
-#~ msgstr "Stahlblau"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:416
+msgid "Completes the grid specification"
+msgstr "Rasteranpassung speichern und beenden"
-#~ msgid "Royal Blue"
-#~ msgstr "Königsblau"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:420
+msgid "Number of segments in Group"
+msgstr "Anzahl der Segmente in der Gruppe"
-#~ msgid "Blue"
-#~ msgstr "Blau"
+#: ../../../../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?"
-#~ msgid "Deep Sky Blue"
-#~ msgstr "Dunkles Himmelblau"
+#: ../../../../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"
-#~ msgid "Light Sky Blue"
-#~ msgstr "Helles Himmelblau"
+#: ../../../../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"
-#~ msgid "Powder Blue"
-#~ msgstr "Hellblau"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:424
+msgid "Helix Radius"
+msgstr "Radius der Gleiswendel"
-#~ msgid "Dark Aqua"
-#~ msgstr "Dunkelaquamarin"
+#: ../../../../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"
-#~ msgid "Aquamarine"
-#~ msgstr "Aquamarin"
+#: ../../../../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"
-#~ msgid "Aqua"
-#~ msgstr "Wasserblau"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:427
+msgid "Grade in helix"
+msgstr "Steigung in der Gleiswendel"
-#~ msgid "Dark Green"
-#~ msgstr "Dunkelgrün"
+#: ../../../../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."
-#~ msgid "Forest Green"
-#~ msgstr "Waldgrün"
+#: ../../../../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"
-#~ msgid "Lime Green"
-#~ msgstr "Limonengrün"
+#: ../../../../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"
-#~ msgid "Green"
-#~ msgstr "Grün"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:431
+msgid "Layer list"
+msgstr "Liste der Ebenen"
-#~ msgid "Lawn Green"
-#~ msgstr "Rasengrün"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:432
+msgid "Layer Name"
+msgstr "Name der Ebene"
-#~ msgid "Pale Green"
-#~ msgstr "Blassgrün"
+#: ../../../../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"
-#~ msgid "Dark Yellow"
-#~ msgstr "Dunkelgelb"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:434
+msgid "Color of layer"
+msgstr "Farbe für die Elemente in dieser Ebene"
-#~ msgid "Coral"
-#~ msgstr "Koralle"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:435
+msgid "Layer is drawn on Main window"
+msgstr "Ebene im Hauptfenster darstellen"
-#~ msgid "Orange"
-#~ msgstr "Orange"
+#: ../../../../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"
-#~ msgid "Yellow"
-#~ msgstr "Gelb"
+#: ../../../../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"
-#~ msgid "Saddle Brown"
-#~ msgstr "Lederbraun"
+#: ../../../../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"
-#~ msgid "Brown"
-#~ msgstr "Braun"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:439
+msgid "Layer is a Module"
+msgstr "Ebene ist ein Modul"
-#~ msgid "Chocolate"
-#~ msgstr "Schokolade"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:440
+msgid "Layer is drawn on Map window"
+msgstr "Ebene wird im Kartenfenster angezeigt"
-#~ msgid "Rosy Brown"
-#~ msgstr "Braun Rosa"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:441
+msgid "Layer inherits settings from Layout"
+msgstr "Ebene übernimmt die Einstellungen vom Gleisplan"
-#~ msgid "Tan"
-#~ msgstr "Loh"
+#: ../../../../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"
-#~ msgid "Beige"
-#~ msgstr "Beige"
+#: ../../../../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"
-#~ msgid "Dark Red"
-#~ msgstr "Dunkelrot"
+#: ../../../../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."
-#~ msgid "Tomato"
-#~ msgstr "Tomatenrot"
+#: ../../../../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."
-#~ msgid "Red"
-#~ msgstr "Rot"
+#: ../../../../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."
-#~ msgid "Hot Pink"
-#~ msgstr "Knallrosa"
+#: ../../../../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."
-#~ msgid "Pink"
-#~ msgstr "Rosa"
+#: ../../../../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."
-#~ msgid "Dark Purple"
-#~ msgstr "Dunkelpurpur"
+#: ../../../../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"
-#~ msgid "Maroon"
-#~ msgstr "Kastanie"
+#: ../../../../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."
-#~ msgid "Purple2"
-#~ msgstr "Purpur 2"
+#: ../../../../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"
-#~ msgid "Purple"
-#~ msgstr "Purpur"
+#: ../../../../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"
-#~ msgid "Violet"
-#~ msgstr "Violett"
+#: ../../../../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"
-#~ msgid "Dark Gray"
-#~ msgstr "Dunkelgrau"
+#: ../../../../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"
-#~ msgid "Gray"
-#~ msgstr "Grau"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:456
+msgid "Load layer configuration from default"
+msgstr "Standardeinstellungen für Ebenen laden"
-#~ msgid "Light Gray"
-#~ msgstr "Hellgrau"
+#: ../../../../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"
-#~ msgid "Describe objects"
-#~ msgstr "Objekte beschreiben"
+#: ../../../../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"
-#~ msgid "Page %d"
-#~ msgstr "Seite %d"
+#: ../../../../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)"
-#~ msgid "Print to file ..."
-#~ msgstr "In Datei drucken..."
+#: ../../../../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"
-#~ msgid "No file name specified"
-#~ msgstr "Kein Dateiname angegeben"
+#: ../../../../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"
-#~ msgid "%s exists"
-#~ msgstr "%s existiert bereits"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:463
+msgid "Specifies the Modelling Scale"
+msgstr "Angabe des Modellmaßstabs"
-#~ msgid "Overwrite"
-#~ msgstr "Ãœberschreiben"
+#: ../../../../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"
-#~ msgid ": cannot open"
-#~ msgstr ": kann nicht geöffnet werden"
+#: ../../../../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."
-#~ msgid "Page 1"
-#~ msgstr "Seite 1"
+#: ../../../../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."
-#~ msgid "Enter both printer name and command"
-#~ msgstr "Druckername und Befehl eingeben"
+#: ../../../../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."
-#~ msgid "Can not save New Printer definition"
-#~ msgstr "Neue Druckerdefinition kann nicht gespeichert werden"
+#: ../../../../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."
-#~ msgid "Enter printer name"
-#~ msgstr "Druckername eingeben"
+#: ../../../../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."
-#~ msgid "Can not save New Margin definition"
-#~ msgstr "Seitendefinition kann nicht gespeichert werden"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:470
+msgid "Select the background image"
+msgstr "Eine Bitmap als Hintergrund laden"
-#~ msgid "Paper Size"
-#~ msgstr "Papiergrösse"
+#: ../../../../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"
-#~ msgid "Printer"
-#~ msgstr "Drucker"
+#: ../../../../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"
-#~ msgid "Format"
-#~ msgstr "Format"
+#: ../../../../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"
-#~ msgid "X Font"
-#~ msgstr "X Schriftart"
+#: ../../../../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"
-#~ msgid "PS Font"
-#~ msgstr "PS Schriftart"
+#: ../../../../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)"
-#~ msgid "Factor"
-#~ msgstr "Faktor"
+#: ../../../../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"
-#~ msgid "Print Test Page"
-#~ msgstr "Drucke Testseite"
+#: ../../../../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"
-#~ msgid "Name: "
-#~ msgstr "Name: "
+#: ../../../../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"
-#~ msgid "Command: "
-#~ msgstr "Befehl: "
+#: ../../../../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"
-#~ msgid "Add Margin"
-#~ msgstr "Rand hinzufügen"
+#: ../../../../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"
-#~ msgid "Print To File"
-#~ msgstr "In Datei drucken"
+#: ../../../../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"
-#~ msgid "File Name? "
-#~ msgstr "Dateiname? "
+#: ../../../../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"
-#~ msgid "Font Alias"
-#~ msgstr "Alias für Schriftart"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:486
+msgid "Move by X"
+msgstr "Um X verschieben"
-#~ msgid "Enter a post-script font name for:"
-#~ msgstr "Eingabe der Postscript Schriftart für:"
+#: ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:487
+msgid "Move by Y"
+msgstr "Um Y verschieben"
-#~ msgid "Printing"
-#~ msgstr "Drucke"
+#: ../../../../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."
-#~ msgid "Now printing"
-#~ msgstr "Druck läuft"
+#: ../../../../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"
-#~ msgid "Abort Print"
-#~ msgstr "Druck abbrechen"
+#: ../../../../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 ""
-#~ " exists\n"
-#~ "Do you want to overwrite it?"
+#~ "The entered URL is too long. The maximum allowed length is %d. Please "
+#~ "edit the entered value."
#~ msgstr ""
-#~ "existiert.\n"
-#~ "Wollen Sie diese überschreiben?"
+#~ "Die eingegebene URL ist zu lang. Die maximal zulässige Länge ist %d. "
+#~ "Bitte bearbeiten Sie den eingegebenen Wert."
-#, fuzzy
-#~ msgid "Delete Switch motor"
-#~ msgstr "Weichenantrieb löschen"
+#~ msgid "Re-edit"
+#~ msgstr "Nochmals bearbeiten"
-#~ msgid "Not a SwitchMotor!"
-#~ msgstr "Kein Weichenantrieb!"
+#~ msgid "Update comment"
+#~ msgstr "Kommentar aktualisieren"
-#~ msgid "Custom Update"
-#~ msgstr "Anpassungen hinzufügen"
+#~ msgid "Comment"
+#~ msgstr "Kommentar"
-#~ msgid "No fonts"
-#~ msgstr "Keine Schriftarten"
+#~ msgid "Scale index (%d) is not valid"
+#~ msgstr "Maßstab (%d) ist nicht gültig"
#~ msgid ""
-#~ "Can't find standard Serif font.\n"
-#~ "Please choose a font"
+#~ "Scale %s is not valid\n"
+#~ "Please check your %s.xtq file"
#~ msgstr ""
-#~ "Die Standardschriftart für Serif kann nicht gefunden werden.\n"
-#~ "Bitte wählen Sie eine Schriftart aus"
+#~ "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 ""
-#~ "Can't find standard San-Serif font.\n"
-#~ "Please choose a font"
+#~ "To create a 1/4\" line, divide the dots-per-inch (DPI) of your display by "
+#~ "4.\n"
#~ msgstr ""
-#~ "Die Standardschriftart für Sans-Serif kann nicht gefunden werden.\n"
-#~ "Bitte wählen Sie eine Schriftart aus"
+#~ "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 "XTrackCAD Help"
-#~ msgstr "XTrackCAD Hilfe"
+#~ msgid "&Loosen Tracks"
+#~ msgstr "Gleise lockern"
-#~ msgid "Now printing %s"
-#~ msgstr "Drucke %s"
+#~ msgid "%d Track(s) loosened"
+#~ msgstr "%d Gleis(e) gelockert"
-#~ msgid "Creating %s"
-#~ msgstr "Erzeuge %s"
+#~ msgid "No tracks loosened"
+#~ msgstr "Keine Gleise gelockert"
-#~ msgid "Scale / Gauge"
-#~ msgstr "Maßstab / Spurweite"
+#~ msgid "Save format:"
+#~ msgstr "Speicherformat:"
-#~ msgid "load last layout"
-#~ msgstr "Letzten Plan laden"
+#~ msgid "Image files"
+#~ msgstr "Grafikdateien"
-#~ msgid "start with blank layout"
-#~ msgstr "Mit leerem Plan beginnen"
+#~ 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 b9afa90..6e429f1 100644
--- a/app/i18n/fr_FR.po
+++ b/app/i18n/fr_FR.po
@@ -1,16142 +1,16534 @@
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xtrkcad 5.2.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-07-11 09:01+0200\n"
-"PO-Revision-Date: 2020-07-11 08:53+0200\n"
-"Last-Translator: zileg31 <zileg31@users.sourceforge.net>\n"
-"Language-Team: French <zileg31@users.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr_FR\n"
-"X-Generator: Poedit 2.3\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 "Continuez"
-
-#: ../bin/cbezier.c:599
-msgid "Select End-Point - Ctrl unlocks end-point"
-msgstr "Sélectionner le point de fin - Ctrl déverrouille ce dernier"
-
-#: ../bin/cbezier.c:601
-msgid "Select End-Point"
-msgstr "Sélectionnez le point de fin"
-
-#: ../bin/cbezier.c:633
-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"
-
-#: ../bin/cbezier.c:639
-#, 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:648 ../bin/cbezier.c:739 ../bin/cbezier.c:741
-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:672
-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"
-
-#: ../bin/cbezier.c:675
-#, 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:678
-msgid "Bezier Curve Invalid has three co-incident points"
-msgstr "Courbe de Bézier non valide sur trois points correspondants"
-
-#: ../bin/cbezier.c:680
-msgid "Bezier is Straight Line"
-msgstr "Bézier est une voie droite"
-
-#: ../bin/cbezier.c:682
-#, 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:686
-#, c-format
-msgid "Bezier %s : Min Radius=%s Length=%s"
-msgstr "Bezier %s : Rayon Min=%s Longueur=%s"
-
-#: ../bin/cbezier.c:711
-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:729
-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"
-
-#: ../bin/cbezier.c:732
-#, 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:735
-msgid "Bezier curve invalid has three co-incident points"
-msgstr "Courbe de Bézier non valide sur trois points correspondants"
-
-#: ../bin/cbezier.c:737
-msgid "Bezier curve is straight line"
-msgstr "La courbe de Bézier est une voie droite"
-
-#: ../bin/cbezier.c:751 ../bin/cbezier.c:765
-msgid "Invalid Bezier Track - end points are identical"
-msgstr "Courbe de Bezier invalide - les points de fin sont identiques"
-
-#: ../bin/cbezier.c:758
-#, c-format
-msgid "Invalid Bezier Curve has a %s - Adjust"
-msgstr "Courbe de Bézier non valide a %s - Ajuster"
-
-#: ../bin/cbezier.c:762
-msgid "Invalid Bezier Curve has three coincident points - Adjust"
-msgstr "Courbe de Bézier non valide avec trois points de coïncidence - Ajuster"
-
-#: ../bin/cbezier.c:770
-msgid "Create Bezier"
-msgstr "Créer une Bézier"
-
-#: ../bin/cbezier.c:858
-#, c-format
-msgid "%s picked - now select a Point"
-msgstr "%s choisi - maintenant sélectionnez un point"
-
-#: ../bin/cbezier.c:888 ../bin/ccornu.c:1953
-msgid "No changes made"
-msgstr "Aucune modification apportée"
-
-#: ../bin/cbezier.c:892
-msgid "Modify Bezier"
-msgstr "Modifier une Bézier"
-
-#: ../bin/cbezier.c:910
-msgid "Modify Bezier Complete"
-msgstr "Modifier une Bézier terminée"
-
-#: ../bin/cbezier.c:914
-msgid "Modify Bezier Cancelled"
-msgstr "Annuler modifier une Bézier"
-
-#: ../bin/cbezier.c:1038 ../bin/cbezier.c:1129
-#, 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"
-
-#: ../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 "La voie à un écartement différent"
-
-#: ../bin/cbezier.c:1084
-msgid "Drag end of first control arm"
-msgstr "Faites glisser l'extrémité du premier bras de commande"
-
-#: ../bin/cbezier.c:1091
-msgid "Drag end of second control arm"
-msgstr "Faites glisser l'extrémité du second bras de commande"
-
-#: ../bin/cbezier.c:1133 ../bin/cbezier.c:1170
-#, 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:1165
-msgid "Control Arm 1 is too short, try again"
-msgstr "Le bras de commande 1 est trop court, veuillez réessayer"
-
-#: ../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 "Nom"
-
-#: ../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 "Script"
-
-#: ../bin/cblock.c:125
-msgid "Segments"
-msgstr "Segments"
-
-#: ../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 "Longueur"
-
-#: ../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
-msgid "End Pt 1: X,Y"
-msgstr "Bout 1: X,Y"
-
-#: ../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
-msgid "End Pt 2: X,Y"
-msgstr "Bout 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: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
-msgid "Change block"
-msgstr "Changer de bloc"
-
-#: ../bin/cblock.c:264 ../bin/cswitchmotor.c:342
-#, fuzzy, c-format
-msgid "(%d): Layer=%u %s"
-msgstr "(%d): Calque=%d %s"
-
-#: ../bin/cblock.c:288 ../bin/cblock.c:1000
-msgid "Block"
-msgstr "Bloc"
-
-#: ../bin/cblock.c:491
-#, 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:575 ../bin/cblock.c:807
-msgid "Block must have a name!"
-msgstr "La section de voie doit avoir un nom !"
-
-#: ../bin/cblock.c:604
-msgid "Block is discontigious!"
-msgstr "La section de voie est discontinue !"
-
-#: ../bin/cblock.c:609
-msgid "Create block"
-msgstr "Créer un bloc"
-
-#: ../bin/cblock.c:656
-msgid "Non track object skipped!"
-msgstr "Pas de voies manquante!"
-
-#: ../bin/cblock.c:660
-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:674
-msgid "Create Block"
-msgstr "Créer un Bloc"
-
-#: ../bin/cblock.c:704 ../bin/cblock.c:736
-msgid "Select a track"
-msgstr "Sélectionner une voie"
-
-#: ../bin/cblock.c:713 ../bin/cblock.c:744
-msgid "Not a block!"
-msgstr "Pas un bloc!"
-
-#: ../bin/cblock.c:749
-#, c-format
-msgid "Really delete block %s?"
-msgstr "Voulez-vous vraiment supprimer le bloc %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
-msgid "Yes"
-msgstr "Oui"
-
-#: ../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 "Non"
-
-#: ../bin/cblock.c:750
-msgid "Delete Block"
-msgstr "Supprimer la section de voie"
-
-#: ../bin/cblock.c:795
-#, c-format
-msgid "Deleting block %s"
-msgstr "Supprimer la section de voie %s"
-
-#: ../bin/cblock.c:811
-msgid "Modify Block"
-msgstr "Modifier le bloc"
-
-#: ../bin/cblock.c:844
-msgid "Edit block"
-msgstr "Editer le bloc"
-
-#: ../bin/cblock.c:850
-#, c-format
-msgid "Edit block %d"
-msgstr "Editer le bloc %d"
-
-#: ../bin/ccontrol.c:172 ../bin/csensor.c:164 ../bin/csignal.c:239
-#: ../bin/ctrain.c:183
-msgid "Position"
-msgstr "Position"
-
-#: ../bin/ccontrol.c:173 ../bin/ccontrol.c:431
-msgid "On Script"
-msgstr "Script On"
-
-#: ../bin/ccontrol.c:174 ../bin/ccontrol.c:433
-msgid "Off Script"
-msgstr "Script Off"
-
-#: ../bin/ccontrol.c:240
-msgid "Change Control"
-msgstr "Changer le contrôle"
-
-#: ../bin/ccontrol.c:282 ../bin/csensor.c:252
-#, fuzzy, c-format
-msgid "(%d [%s]): Layer=%u, at %0.3f,%0.3f"
-msgstr "(%d [%s]): Calque=%d, à %0.3f,%0.3f"
-
-#: ../bin/ccontrol.c:295 ../bin/ccontrol.c:640
-msgid "Control"
-msgstr "Contrôle"
-
-#: ../bin/ccontrol.c:427
-msgid "Origin X"
-msgstr "Origine X"
-
-#: ../bin/ccontrol.c:429 ../bin/csensor.c:393 ../bin/csignal.c:513
-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:485
-msgid "Edit control"
-msgstr "Editer un contrôle"
-
-#: ../bin/ccontrol.c:526
-msgid "Place control"
-msgstr "Placer un contrôle"
-
-#: ../bin/ccornu.c:200 ../bin/ccornu.c:203 ../bin/ccornu.c:206
-#: ../bin/ccornu.c:260
-#, c-format
-msgid "%s FlexTrack"
-msgstr "Voie flexible %s"
-
-#: ../bin/ccornu.c:254
-msgid " FLEX "
-msgstr ""
-
-#: ../bin/ccornu.c:903 ../bin/cjoin.c:894 ../bin/cmisc.c:59
-msgid "First"
-msgstr "Premier"
-
-#: ../bin/ccornu.c:910 ../bin/cjoin.c:899
-msgid "Second"
-msgstr "Second"
-
-#: ../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 ""
-"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: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
-msgid "End Angle"
-msgstr "Fin d'angle"
-
-#: ../bin/ccornu.c:1023 ../bin/ccornu.c:1639 ../bin/ccornu.c:1658
-msgid "End Radius"
-msgstr "Rayon final"
-
-#: ../bin/ccornu.c:1076
-msgid "Select Point, or Add Point"
-msgstr "Sélectionner un point, ou ajouter un point"
-
-#: ../bin/ccornu.c:1248
-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"
-
-#: ../bin/ccornu.c:1254
-msgid "Drag out end of Cornu"
-msgstr "Faire glisser l'extrémité de la Cornu"
-
-#: ../bin/ccornu.c:1256
-msgid "Drag along end of track"
-msgstr "Faites glisser vers le bout de la voie"
-
-#: ../bin/ccornu.c:1258
-msgid "Drag to move"
-msgstr "Faites glisser pour déplacer"
-
-#: ../bin/ccornu.c:1261
-msgid "Drag point to new location, Delete to remove"
-msgstr "Déplacer le point vers sa nouvelle position, supprimer avec Suppr"
-
-#: ../bin/ccornu.c:1265
-msgid "Drag to change end radius"
-msgstr "Faites glisser pour modifier le rayon de fin"
-
-#: ../bin/ccornu.c:1268
-msgid "Drag to change end angle"
-msgstr "Faites glisser pour changer l'angle de fin"
-
-#: ../bin/ccornu.c:1283
-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:1295
-msgid "Track can't be split"
-msgstr "La voie ne peut pas être divisée"
-
-#: ../bin/ccornu.c:1357
-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:1365
-msgid "Can't move end inside a turnout"
-msgstr "Impossible de se déplacer à l'intérieur d'un aiguillage"
-
-#: ../bin/ccornu.c:1507
-msgid "Can't extend connected Bezier or Cornu"
-msgstr "Impossible d'étendre la connection Bézier ou Cornu"
-
-#: ../bin/ccornu.c:1579
-#, c-format
-msgid ""
-"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
-msgstr ""
-"Cornu : Rayon Min =%s Taux de changement de rayon maximal =%s Longueur =%s "
-"Arc =%s"
-
-#: ../bin/ccornu.c:1601 ../bin/ccornu.c:2271
-msgid "Helix Already Connected"
-msgstr "Hélicoïde déjà connectée"
-
-#: ../bin/ccornu.c:1615
-msgid "No Valid end point on that track"
-msgstr "Aucun point de fin valable sur cette voie"
-
-#: ../bin/ccornu.c:1620
-msgid "Track is different scale"
-msgstr "La voie a une échelle différente"
-
-#: ../bin/ccornu.c:1673
-msgid ""
-"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:1703
-msgid "Cornu has too complex shape - adjust end pts"
-msgstr "Cornu d'une forme trop complexe - ajustez les points finaux"
-
-#: ../bin/ccornu.c:1714
-#, 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:1719
-msgid "Create Cornu"
-msgstr "Créer une Cornu"
-
-#: ../bin/ccornu.c:1908
-msgid "Now Select or Add (+Shift) a Point"
-msgstr "Maintenant, sélectionnez ou ajoutez (+Maj) un point"
-
-#: ../bin/ccornu.c:1967
-#, 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:1972
-msgid "Modify Cornu"
-msgstr "Modifier une Cornu"
-
-#: ../bin/ccornu.c:1987
-#, 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:2079
-#, 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:2090
-msgid "Modify Cornu Cancelled"
-msgstr "Annuler modifier une Cornu"
-
-#: ../bin/ccornu.c:2247
-msgid "Left click - Start Cornu track"
-msgstr "Commencez par une cornu en appuyant sur le bouton gauche de la souris"
-
-#: ../bin/ccornu.c:2249
-msgid "Left click - Place Flextrack"
-msgstr "Clic gauche - Positionner la voie flexible"
-
-#: ../bin/ccornu.c:2252
-msgid "Left click - join with Cornu track"
-msgstr "Clic gauche - raccorder avec une voie Cornu"
-
-#: ../bin/ccornu.c:2254
-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"
-
-#: ../bin/ccornu.c:2285
-msgid "No valid open endpoint on that track"
-msgstr "Aucun point de fin non connecté sur cette voie"
-
-#: ../bin/ccornu.c:2313 ../bin/ccornu.c:2325
-msgid "Drag arm in the direction of track"
-msgstr "Tirez le bras de commande dans la direction de la voie"
-
-#: ../bin/ccornu.c:2329
-msgid "No Unconnected Track End there"
-msgstr "Il n'y a aucune voie non connectée"
-
-#: ../bin/ccornu.c:2340 ../bin/ccornu.c:2364
-msgid "No Valid Track End there"
-msgstr "Il n'y a aucune voie non connectée"
-
-#: ../bin/ccornu.c:2352
-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:2376
-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
-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
-msgid "Point not on track 1"
-msgstr "Les aiguilles ne sont pas sur la bonne voie 1"
-
-#: ../bin/ccornu.c:2493
-msgid "Pick other end of Cornu"
-msgstr "Choisissez l'autre extrémité de la Cornu"
-
-#: ../bin/ccornu.c:2495
-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"
-
-#: ../bin/ccornu.c:2499
-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:2717 ../bin/ccornu.c:2930
-msgid "Not on a Track"
-msgstr "Pas sur la voie"
-
-#: ../bin/ccornu.c:2725
-msgid "Select a Track To Convert"
-msgstr "Sélectionner une voie à convertir"
-
-#: ../bin/ccornu.c:2729
-msgid "Convert all Selected Tracks to Cornu Tracks?"
-msgstr "Convertir toutes les voies sélectionnées en une voie Cornu ?"
-
-#: ../bin/ccornu.c:2734
-msgid "Convert Cornu"
-msgstr "Convertir une Cornu"
-
-#: ../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 "OK"
-
-#: ../bin/ccornu.c:2936
-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:2940
-msgid "Convert all Selected Tracks to Fixed Tracks?"
-msgstr "Convertir toutes les voies sélectionnées en voies fixes ?"
-
-#: ../bin/ccornu.c:2949
-msgid "Convert Bezier and Cornu"
-msgstr "Convertir des Bezier et Cornu"
-
-#: ../bin/ccornu.c:3000
-#, c-format
-msgid "Tracks Counts: %d converted %d unconvertible %d deleted"
-msgstr ""
-
-#: ../bin/ccornu.c:3028
-msgid "Convert"
-msgstr "Convertir"
-
-#: ../bin/ccornu.c:3029
-msgid "Convert To Cornu"
-msgstr "Convertir en Cornu"
-
-#: ../bin/ccornu.c:3030
-msgid "Convert From Cornu"
-msgstr "Convertir depuis une Cornu"
-
-#: ../bin/ccurve.c:169
-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:171
-msgid "Drag from endpoint in direction of curve"
-msgstr "Faites glisser depuis l'extrémité dans le sens de la courbe"
-
-#: ../bin/ccurve.c:175
-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:177
-msgid "Drag from endpoint to center"
-msgstr "Faire glisser de l'extrémité de voie vers le centre"
-
-#: ../bin/ccurve.c:180
-msgid "Drag from center to endpoint"
-msgstr "Faites glisser du centre vers l'extrémité"
-
-#: ../bin/ccurve.c:183
-msgid "Drag from one to other end of chord"
-msgstr "Faites glisser d'un bout à l'autre de la corde"
-
-#: ../bin/ccurve.c:241
-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:242
-msgid "Drag along curve start"
-msgstr "Faire glisser le long du début de courbe"
-
-#: ../bin/ccurve.c:250
-msgid "End locked: Drag out curve center"
-msgstr "Point de fin fixé, faites glisser pour dessiner le centre de la courbe"
-
-#: ../bin/ccurve.c:251
-msgid "Drag out curve center"
-msgstr "Faire glisser vers le centre de la courbe"
-
-#: ../bin/ccurve.c:258
-msgid "Drag out from center to endpoint"
-msgstr "Glisser du centre au point de fin"
-
-#: ../bin/ccurve.c:267
-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:269
-msgid "Drag to other end of chord"
-msgstr "Tirez à l'autre bout de la corde"
-
-#: ../bin/ccurve.c:324
-#, 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"
-
-#: ../bin/ccurve.c:325
-#, 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:331
-#, 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:332
-#, c-format
-msgid "Drag out center - Radius=%s Angle=%0.3f"
-msgstr "Faire glisser le centre - Rayon =%s Angle =%0.3f"
-
-#: ../bin/ccurve.c:338
-#, 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:344
-#, 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:345
-#, 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:399 ../bin/ccurve.c:557 ../bin/drawgeom.c:735
-msgid "Drag on Red arrows to adjust curve"
-msgstr "Faites glisser les flèches rouges pour ajuster la courbe"
-
-#: ../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 "Voie droite : Longueur = %s Angle =%0.3f"
-
-#: ../bin/ccurve.c:504 ../bin/cmodify.c:585 ../bin/drawgeom.c:618
-#: ../wlib/gtklib/ixhelp.c:235
-msgid "Back"
-msgstr "Arrière"
-
-#: ../bin/ccurve.c:523
-#, 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:577 ../bin/cstraigh.c:162
-msgid "Create Straight Track"
-msgstr "Créer une voie Droite"
-
-#: ../bin/ccurve.c:589
-msgid "Create Curved Track"
-msgstr "Créer une voie courbe"
-
-#: ../bin/ccurve.c:660
-msgid "Elevation Difference"
-msgstr "Différence d'élévation"
-
-#: ../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 "Rayon"
-
-#: ../bin/ccurve.c:662 ../bin/tcurve.c:370
-msgid "Turns"
-msgstr "Tours"
-
-#: ../bin/ccurve.c:663
-msgid "Angular Separation"
-msgstr "Séparation angulaire"
-
-#: ../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 "Pente"
-
-#: ../bin/ccurve.c:665
-msgid "Vertical Separation"
-msgstr "Séparation verticale"
-
-#: ../bin/ccurve.c:667
-msgid "Total Length"
-msgstr "Longueur totale"
-
-#: ../bin/ccurve.c:743
-#, c-format
-msgid "Total Length %s"
-msgstr "Longueur totale %s"
-
-#: ../bin/ccurve.c:781 ../bin/ccurve.c:985 ../bin/tcurve.c:809
-msgid "Helix"
-msgstr "Hélicoïde"
-
-#: ../bin/ccurve.c:795
-msgid "Circle Radius"
-msgstr "Rayon du cercle"
-
-#: ../bin/ccurve.c:800
-msgid "Click on Circle Edge"
-msgstr "Cliquez sur le bord du cercle"
-
-#: ../bin/ccurve.c:804
-msgid "Click on Circle Center"
-msgstr "Cliquez sur le centre du cercle"
-
-#: ../bin/ccurve.c:835
-msgid "Drag to Center"
-msgstr "Glisser vers le centre"
-
-#: ../bin/ccurve.c:839
-msgid "Drag to Edge"
-msgstr "Glisser vers le bord"
-
-#: ../bin/ccurve.c:859 ../bin/ccurve.c:863
-#, c-format
-msgid "Radius=%s"
-msgstr "Rayon=%s"
-
-#: ../bin/ccurve.c:884
-msgid "Create Helix Track"
-msgstr "Créer une voie hélicoïdale"
-
-#: ../bin/ccurve.c:899
-msgid "Create Circle Track"
-msgstr "Créer une voie circulaire"
-
-#: ../bin/ccurve.c:954
-msgid "Cornu Curve"
-msgstr "Spirale de Cornu"
-
-#: ../bin/ccurve.c:956
-msgid "Curve Track"
-msgstr "Voie courbe"
-
-#: ../bin/ccurve.c:956
-msgid "Curve Tracks"
-msgstr "Voies courbes"
-
-#: ../bin/ccurve.c:957
-msgid "Curve from End-Pt"
-msgstr "Point de fin de la courbe"
-
-#: ../bin/ccurve.c:958
-msgid "Curve from Tangent"
-msgstr "Tangente de la courbe"
-
-#: ../bin/ccurve.c:959
-msgid "Curve from Center"
-msgstr "Centre de la courbe"
-
-#: ../bin/ccurve.c:960
-msgid "Curve from Chord"
-msgstr "Corde de la courbe"
-
-#: ../bin/ccurve.c:961 ../bin/cdraw.c:2572
-msgid "Bezier Curve"
-msgstr "Courbe de Bezier"
-
-#: ../bin/ccurve.c:964 ../bin/tcurve.c:643
-msgid "Circle Track"
-msgstr "Voie circulaire"
-
-#: ../bin/ccurve.c:964
-msgid "Circle Tracks"
-msgstr "Voies circulaires"
-
-#: ../bin/ccurve.c:965
-msgid "Fixed Radius Circle"
-msgstr "Cercle de rayon fixe"
-
-#: ../bin/ccurve.c:966
-msgid "Circle from Tangent"
-msgstr "Cercle de la tangente"
-
-#: ../bin/ccurve.c:967
-msgid "Circle from Center"
-msgstr "Cercle autour du centre"
-
-#: ../bin/cdraw.c:130
-msgid "Font Size must be > 0"
-msgstr "La taille de la police doit être >0"
-
-#: ../bin/cdraw.c:509
-msgid "First Point: X,Y"
-msgstr "D'abord, Point: X,Y"
-
-#: ../bin/cdraw.c:510 ../bin/tcurve.c:368
-msgid "Center: X,Y"
-msgstr "Centre : X,Y"
-
-#: ../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 "Angle"
-
-#: ../bin/cdraw.c:512 ../bin/tcurve.c:374
-msgid "CCW Angle"
-msgstr "Angle CCW"
-
-#: ../bin/cdraw.c:513 ../bin/tcurve.c:375
-msgid "CW Angle"
-msgstr "Angle CW"
-
-#: ../bin/cdraw.c:516 ../bin/cdraw.c:1434 ../bin/cdraw.c:1556
-#: ../bin/cprint.c:130
-msgid "Height"
-msgstr "Hauteur"
-
-#: ../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 "Largeur"
-
-#: ../bin/cdraw.c:518
-msgid "Keep Origin Relative"
-msgstr "Conserver l'origine relative"
-
-#: ../bin/cdraw.c:519
-msgid "Rot Origin: X,Y"
-msgstr "Centre de rotation : X,Y"
-
-#: ../bin/cdraw.c:520 ../bin/cdraw.c:1441
-msgid "Rotate Angle"
-msgstr "Angle de rotation"
-
-#: ../bin/cdraw.c:521
-msgid "Point Count"
-msgstr "Nombre de points"
-
-#: ../bin/cdraw.c:522 ../bin/cdraw.c:2204 ../bin/ctodesgn.c:202
-#: ../bin/tbezier.c:261
-msgid "Line Width"
-msgstr "Épaisseur de trait"
-
-#: ../bin/cdraw.c:523 ../bin/cdraw.c:2233 ../bin/tbezier.c:260
-msgid "Line Type"
-msgstr "Type de ligne"
-
-#: ../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 "Couleur"
-
-#: ../bin/cdraw.c:525
-msgid "Filled"
-msgstr "Plein"
-
-#: ../bin/cdraw.c:526
-msgid "Open End"
-msgstr "Côté ouvert"
-
-#: ../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
-msgid "Boxed"
-msgstr "En boîte"
-
-#: ../bin/cdraw.c:528 ../bin/cdraw.c:1108 ../bin/cdraw.c:2240
-msgid "Lumber"
-msgstr "Structure"
-
-#: ../bin/cdraw.c:529
-msgid "Orientation"
-msgstr "Orientation"
-
-#: ../bin/cdraw.c:530 ../bin/cdraw.c:2222
-#: ../../../../build/work/app/bin/bllnhlp.c:588
-msgid "Size"
-msgstr "Dimension"
-
-#: ../bin/cdraw.c:531 ../bin/compound.c:563 ../bin/tease.c:523
-msgid "Origin: X,Y"
-msgstr "Origine : X,Y"
-
-#: ../bin/cdraw.c:533 ../bin/ctext.c:66 ../bin/ctext.c:146
-msgid "Font Size"
-msgstr "Taille police"
-
-#: ../bin/cdraw.c:534 ../bin/cdraw.c:1254 ../bin/ctext.c:262
-msgid "Text"
-msgstr "Texte"
-
-#: ../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 "Pivot"
-
-#: ../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 "Calque"
-
-#: ../bin/cdraw.c:1093
-msgid "Straight Line"
-msgstr "Ligne droite"
-
-#: ../bin/cdraw.c:1098 ../bin/cdraw.c:2564
-msgid "Dimension Line"
-msgstr "Ligne de cote"
-
-#: ../bin/cdraw.c:1119 ../bin/cdraw.c:2241 ../bin/cdraw.c:2566
-msgid "Table Edge"
-msgstr "Bord de table"
-
-#: ../bin/cdraw.c:1139 ../bin/cdraw.c:2246 ../bin/cdraw.c:2247
-#: ../bin/cdraw.c:2248
-msgid "Circle"
-msgstr "Cercle"
-
-#: ../bin/cdraw.c:1150
-msgid "Curved Line"
-msgstr "Ligne courbe"
-
-#: ../bin/cdraw.c:1166 ../bin/cdraw.c:2251 ../bin/cdraw.c:2252
-#: ../bin/cdraw.c:2253
-msgid "Filled Circle"
-msgstr "Cercle plein"
-
-#: ../bin/cdraw.c:1185
-msgid "Rectangle"
-msgstr "Rectangle"
-
-#: ../bin/cdraw.c:1199 ../bin/cdraw.c:2257
-msgid "Polyline"
-msgstr "Polyligne"
-
-#: ../bin/cdraw.c:1203 ../bin/cdraw.c:2250 ../bin/cdraw.c:2583
-msgid "Polygon"
-msgstr "Polygone"
-
-#: ../bin/cdraw.c:1221
-msgid "Filled Rectangle"
-msgstr "Rectangle plein"
-
-#: ../bin/cdraw.c:1234 ../bin/cdraw.c:2255 ../bin/cdraw.c:2584
-msgid "Filled Polygon"
-msgstr "Polygone plein"
-
-#: ../bin/cdraw.c:1260
-#, c-format
-msgid "%s(%d) Layer=%d"
-msgstr "%s(%d) Calque=%d"
-
-#: ../bin/cdraw.c:1280 ../bin/cdraw.c:2309 ../bin/compound.c:956
-#: ../bin/doption.c:134 ../bin/tbezier.c:458
-msgid "Solid"
-msgstr "Solide"
-
-#: ../bin/cdraw.c:1281 ../bin/cdraw.c:2311 ../bin/compound.c:957
-#: ../bin/doption.c:131 ../bin/tbezier.c:459
-msgid "Dash"
-msgstr "Tiret"
-
-#: ../bin/cdraw.c:1282 ../bin/cdraw.c:2310 ../bin/compound.c:958
-#: ../bin/tbezier.c:460
-msgid "Dot"
-msgstr "Pointillé"
-
-#: ../bin/cdraw.c:1283 ../bin/compound.c:959 ../bin/tbezier.c:461
-msgid "DashDot"
-msgstr "Tiret point"
-
-#: ../bin/cdraw.c:1284 ../bin/compound.c:960 ../bin/tbezier.c:462
-msgid "DashDotDot"
-msgstr "Tiret pointillés"
-
-#: ../bin/cdraw.c:1285 ../bin/compound.c:961 ../bin/tbezier.c:463
-#, fuzzy
-msgid "CenterDot"
-msgstr "Décalage interne"
-
-#: ../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 "Minuscule"
-
-#: ../bin/cdraw.c:1292 ../bin/cdraw.c:2358
-msgid "Small"
-msgstr "Petit"
-
-#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2359
-msgid "Medium"
-msgstr "Moyen"
-
-#: ../bin/cdraw.c:1294 ../bin/cdraw.c:2360
-msgid "Large"
-msgstr "Grand"
-
-#: ../bin/cdraw.c:1430
-msgid "Relative Angle"
-msgstr "Angle relatif"
-
-#: ../bin/cdraw.c:1439 ../bin/cdraw.c:1587 ../bin/cdraw.c:2445
-msgid "Arc Angle"
-msgstr "Angle de l'arc"
-
-#: ../bin/cdraw.c:1444
-msgid "Rot Center X"
-msgstr "Centre de rotation X"
-
-#: ../bin/cdraw.c:1446
-msgid "Rot Center Y"
-msgstr "Centre de rotation Y"
-
-#: ../bin/cdraw.c:1543
-msgid "Seg Lth"
-msgstr "Long. segmt"
-
-#: ../bin/cdraw.c:1544
-msgid "Rel Ang"
-msgstr "Angle Rel"
-
-#: ../bin/cdraw.c:2211 ../bin/cdraw.c:2213 ../bin/cdraw.c:2337
-msgid "Lumber Type"
-msgstr "Type de structure"
-
-#: ../bin/cdraw.c:2238
-msgid "Straight"
-msgstr "Trait"
-
-#: ../bin/cdraw.c:2239
-msgid "Dimension"
-msgstr "Dimension"
-
-#: ../bin/cdraw.c:2242 ../bin/cdraw.c:2243 ../bin/cdraw.c:2244
-#: ../bin/cdraw.c:2245
-msgid "Curved"
-msgstr "Courbe"
-
-#: ../bin/cdraw.c:2249 ../bin/cdraw.c:2581
-msgid "Box"
-msgstr "Boite"
-
-#: ../bin/cdraw.c:2254 ../bin/cdraw.c:2582
-msgid "Filled Box"
-msgstr "Boîte pleine"
-
-#: ../bin/cdraw.c:2256 ../bin/tbezier.c:455
-msgid "Bezier Line"
-msgstr "Ligne Bézier"
-
-#: ../bin/cdraw.c:2304
-#, c-format
-msgid "%s Line Width"
-msgstr "%s épaisseur"
-
-#: ../bin/cdraw.c:2307 ../bin/dcar.c:2203 ../bin/dcar.c:4367
-#: ../bin/dcar.c:4372
-msgid "Type"
-msgstr "Type"
-
-#: ../bin/cdraw.c:2312
-msgid "Dash-Dot"
-msgstr "En pointillés"
-
-#: ../bin/cdraw.c:2313
-msgid "Dash-Dot-Dot"
-msgstr "Petits pointillés"
-
-#: ../bin/cdraw.c:2326
-#, c-format
-msgid "%s Color"
-msgstr "%s Couleur"
-
-#: ../bin/cdraw.c:2355
-msgid "Dimension Line Size"
-msgstr "Dimension des voies"
-
-#: ../bin/cdraw.c:2367
-msgid "Drag to create Table Edge"
-msgstr "Faites glisser pour créer un bord de table"
-
-#: ../bin/cdraw.c:2469
-msgid "Seg Length"
-msgstr "Longueur du segment"
-
-#: ../bin/cdraw.c:2473
-msgid "Rel Angle"
-msgstr "Angle Rel"
-
-#: ../bin/cdraw.c:2563
-msgid "Line"
-msgstr "Ligne"
-
-#: ../bin/cdraw.c:2563
-msgid "Draw Line"
-msgstr "Dessiner un trait"
-
-#: ../bin/cdraw.c:2564
-msgid "Draw Dimension Line"
-msgstr "Tracer une ligne de cote"
-
-#. 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 "Plan de travail"
-
-#: ../bin/cdraw.c:2565
-msgid "Draw Benchwork"
-msgstr "Dessinez un chassis"
-
-#: ../bin/cdraw.c:2566
-msgid "Draw Table Edge"
-msgstr "Dessiner un bord de Table"
-
-#: ../bin/cdraw.c:2568
-msgid "Curve End"
-msgstr "Fin de courbe"
-
-#: ../bin/cdraw.c:2568
-msgid "Draw Curve from End"
-msgstr "Dessiner une courbe depuis l'extrémité"
-
-#: ../bin/cdraw.c:2569
-msgid "Curve Tangent"
-msgstr "Courbe tangente"
-
-#: ../bin/cdraw.c:2569
-msgid "Draw Curve from Tangent"
-msgstr "Dessiner une courbe depuis la tangente"
-
-#: ../bin/cdraw.c:2570
-msgid "Curve Center"
-msgstr "Centre de la courbe"
-
-#: ../bin/cdraw.c:2570
-msgid "Draw Curve from Center"
-msgstr "Dessiner une courbe à partir du centre"
-
-#: ../bin/cdraw.c:2571
-msgid "Curve Chord"
-msgstr "Corde de la Courbe"
-
-#: ../bin/cdraw.c:2571
-msgid "Draw Curve from Chord"
-msgstr "Dessiner une courbe à partir de la corde"
-
-#: ../bin/cdraw.c:2572
-msgid "Draw Bezier"
-msgstr "Dessinez une Bézier"
-
-#: ../bin/cdraw.c:2575
-msgid "Circle Tangent"
-msgstr "Cercle tangent"
-
-#: ../bin/cdraw.c:2575
-msgid "Draw Circle from Tangent"
-msgstr "Dessiner un cercle à partir de la tangente"
-
-#: ../bin/cdraw.c:2576
-msgid "Circle Center"
-msgstr "Centre du cercle"
-
-#: ../bin/cdraw.c:2576
-msgid "Draw Circle from Center"
-msgstr "Tracer un cercle à partir du centre"
-
-#: ../bin/cdraw.c:2578
-msgid "Circle Filled Tangent"
-msgstr "Cercle rempli Tangent"
-
-#: ../bin/cdraw.c:2578
-msgid "Draw Filled Circle from Tangent"
-msgstr "Dessiner un cercle plein à partir de la tangente"
-
-#: ../bin/cdraw.c:2579
-msgid "Circle Filled Center"
-msgstr "Cercle rempli au centre"
-
-#: ../bin/cdraw.c:2579
-msgid "Draw Filled Circle from Center"
-msgstr "Dessiner un cercle plein à partir du centre"
-
-#: ../bin/cdraw.c:2581
-msgid "Draw Box"
-msgstr "Dessinez une Boite"
-
-#: ../bin/cdraw.c:2582
-msgid "Draw Filled Box"
-msgstr "Dessiner une boîte pleine"
-
-#: ../bin/cdraw.c:2583
-msgid "Draw Polygon"
-msgstr "Dessiner un polygone"
-
-#: ../bin/cdraw.c:2584
-msgid "Draw Filled Polygon"
-msgstr "Dessiner un polygone plein"
-
-#: ../bin/cdraw.c:2585
-msgid "PolyLine"
-msgstr "Polyligne"
-
-#: ../bin/cdraw.c:2585
-msgid "Draw PolyLine"
-msgstr "Dessiner une polyligne"
-
-#: ../bin/cdraw.c:2602
-msgid "Straight Objects"
-msgstr "Objets droits"
-
-#: ../bin/cdraw.c:2602
-msgid "Draw Straight Objects"
-msgstr "Dessiner des objets droits"
-
-#: ../bin/cdraw.c:2603
-msgid "Curved Lines"
-msgstr "Lignes courbes"
-
-#: ../bin/cdraw.c:2603
-msgid "Draw Curved Lines"
-msgstr "Tracer des voies courbes"
-
-#: ../bin/cdraw.c:2604
-msgid "Circle Lines"
-msgstr "Lignes circulaires"
-
-#: ../bin/cdraw.c:2604
-msgid "Draw Circles"
-msgstr "Dessinez des cercles"
-
-#: ../bin/cdraw.c:2605
-msgid "Shapes"
-msgstr "Formes"
-
-#: ../bin/cdraw.c:2605
-msgid "Draw Shapes"
-msgstr "Dessiner des formes"
-
-#: ../bin/cdraw.c:2893
-msgid "Close Polygon - 'c'"
-msgstr "Fermer le polygone - 'c'"
-
-#: ../bin/cdraw.c:2894
-msgid "Make PolyLine - 'l'"
-msgstr "Créer une polyligne - 'l'"
-
-#: ../bin/cdraw.c:2895
-msgid "Fill Polygon - 'f'"
-msgstr "Remplir le polygone - 'f'"
-
-#: ../bin/cdraw.c:2896
-msgid "Empty Polygon - 'e'"
-msgstr "Polygone vide - 'e'"
-
-#: ../bin/cdraw.c:2898
-msgid "Points Mode - 'p'"
-msgstr "Mode Points - 'p'"
-
-#: ../bin/cdraw.c:2899
-msgid "Delete Selected Point - 'Del'"
-msgstr "Supprimer le point sélectionné - 'Suppr'"
-
-#: ../bin/cdraw.c:2900
-msgid "Vertex Point - 'v'"
-msgstr "Point du sommet - 'v'"
-
-#: ../bin/cdraw.c:2901
-msgid "Round Corner - 'r'"
-msgstr "Coin rond - 'r"
-
-#: ../bin/cdraw.c:2902
-msgid "Smooth Corner - 's'"
-msgstr "Coin lisse - 's'"
-
-#: ../bin/cdraw.c:2904 ../bin/cselect.c:3348
-msgid "LineType..."
-msgstr "Type de ligne ..."
-
-#: ../bin/cdraw.c:2905 ../bin/cselect.c:3349
-msgid "Solid Line"
-msgstr "Ligne continue"
-
-#: ../bin/cdraw.c:2906 ../bin/cselect.c:3350
-msgid "Dashed Line"
-msgstr "Ligne en pointillés"
-
-#: ../bin/cdraw.c:2907 ../bin/cselect.c:3351
-msgid "Dotted Line"
-msgstr "Ligne en pointillé"
-
-#: ../bin/cdraw.c:2908
-msgid "Dash-Dot Line"
-msgstr "Ligne en pointillé"
-
-#: ../bin/cdraw.c:2909
-msgid "Dash-Dot-Dot Line"
-msgstr "Ligne en petits pointillés"
-
-#: ../bin/cdraw.c:2910
-#, fuzzy
-msgid "Center-Dot Line"
-msgstr "Créer des lignes"
-
-#: ../bin/cdraw.c:2911
-#, fuzzy
-msgid "Phantom-Dot Line"
-msgstr "Ligne en pointillé"
-
-#: ../bin/cdraw.c:2913
-msgid "Origin Mode - 'o'"
-msgstr "Mode origine - 'o'"
-
-#: ../bin/cdraw.c:2914
-msgid "Reset Origin - '0'"
-msgstr "Réinitialiser l'origine - '0'"
-
-#: ../bin/cdraw.c:2915
-msgid "Origin to Selected - 'l'"
-msgstr "Origine de la sélection - 'l'"
-
-#: ../bin/cdraw.c:2916
-msgid "Origin to Centroid - 'c'"
-msgstr "Origine de Centroid - 'c'"
-
-#: ../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 "Aucun"
-
-#: ../bin/celev.c:46
-msgid "Defined"
-msgstr "Défini(e)"
-
-#: ../bin/celev.c:46
-msgid "Hidden"
-msgstr "Caché"
-
-#: ../bin/celev.c:47
-msgid "Computed"
-msgstr "Calculé"
-
-#: ../bin/celev.c:47
-msgid "Station"
-msgstr "Gare"
-
-#: ../bin/celev.c:47 ../bin/cprofile.c:1533 ../bin/dcmpnd.c:75
-msgid "Ignore"
-msgstr "Ignoré"
-
-#: ../bin/celev.c:203
-msgid "Set Elevation"
-msgstr "Définir l'élévation"
-
-#: ../bin/celev.c:296 ../bin/celev.c:303 ../bin/celev.c:306
-#, c-format
-msgid "Undefined"
-msgstr "Non défini"
-
-#: ../bin/celev.c:362 ../bin/celev.c:495
-msgid "Elevation"
-msgstr "Élévation"
-
-#: ../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 "Valider"
-
-#: ../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 ""
-"Cliquez sur fin, +Maj pour segmenter, +Ctrl pour déplacer la description"
-
-#: ../bin/celev.c:394
-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:398
-msgid "Move to end or track crossing"
-msgstr "Déplacez en fin ou à l'intersection de la voie"
-
-#: ../bin/celev.c:407
-#, fuzzy, c-format
-msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f - Click to Split"
-msgstr ""
-"Croisement - ElevBasse %0.3f, Haute %0.3f, Clearance %0.3f- Cliquez pour "
-"segmenter"
-
-#: ../bin/celev.c:409
-#, fuzzy, c-format
-msgid "Crossing - First %0.3f, Second %0.3f, Clearance %0.3f"
-msgstr "Croisement - ElevBasse %0.3f, Haute %0.3f, Clearance %0.3f"
-
-#: ../bin/celev.c:420
-#, c-format
-msgid "Track elevation %0.3f"
-msgstr "Elévation de voie %0.3f"
-
-#: ../bin/celev.c:423
-#, c-format
-msgid "Click to split here - elevation %0.3f"
-msgstr "Cliquez ici pour segmenter - élévation %0.3f"
-
-#: ../bin/celev.c:451
-msgid "Point selected!"
-msgstr "Point sélectionné !"
-
-#: ../bin/celev.c:454
-msgid "Split track"
-msgstr "Segmenter une voie"
-
-#: ../bin/celev.c:459
-msgid "Track split!"
-msgstr "La voie est coupée !"
-
-#: ../bin/cgroup.c:592
-msgid "Ungroup Object"
-msgstr "Dissocier l'Objet"
-
-#: ../bin/cgroup.c:604
-#, c-format
-msgid "%d objects ungrouped"
-msgstr "%d objets dissociés"
-
-#: ../bin/cgroup.c:606
-msgid "No objects ungrouped"
-msgstr "Aucun objet dégroupé"
-
-#: ../bin/cgroup.c:617
-msgid "Replace with new group?"
-msgstr "Remplacer par un nouveau groupe ?"
-
-#: ../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 "Fabricant"
-
-#: ../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 "Description"
-
-#: ../bin/cgroup.c:625 ../bin/dcmpnd.c:458
-msgid "#"
-msgstr "#"
-
-#: ../bin/cgroup.c:626 ../bin/compound.c:570
-msgid "# Segments"
-msgstr "# Série"
-
-#: ../bin/cgroup.c:628
-msgid "Offset X,Y:"
-msgstr "Décalage X, Y:"
-
-#: ../bin/cgroup.c:1235
-msgid "No endpts"
-msgstr "Pas de pts de fin"
-
-#: ../bin/cgroup.c:1350
-msgid "No paths"
-msgstr "Pas de chemins"
-
-#: ../bin/cgroup.c:1619 ../bin/cgroup.c:1669
-msgid "Group Tracks"
-msgstr "Voies du groupe"
-
-#: ../bin/cgroup.c:1729
-msgid "Group Objects"
-msgstr "Objets du groupe"
-
-#: ../bin/chndldto.c:70
-msgid "Place frog and drag angle"
-msgstr "Placer le cœur et l'angle de déviation"
-
-#: ../bin/chndldto.c:87
-msgid "frog"
-msgstr "coeur"
-
-#: ../bin/chndldto.c:93
-msgid "Drag to set angle"
-msgstr "Faites glisser pour définir l'angle"
-
-#: ../bin/chndldto.c:132
-#, c-format
-msgid "Angle = %0.2f Frog# = %0.2f"
-msgstr "Angle = %0.2f Coeur# = %0.2f"
-
-#: ../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:137
-msgid "Select point position"
-msgstr "Sélectionnez la position du point"
-
-#: ../bin/chndldto.c:149 ../bin/chndldto.c:174
-msgid "points"
-msgstr "aiguilles"
-
-#: ../bin/chndldto.c:271
-#, 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:274
-msgid "Create Hand Laid Turnout"
-msgstr "Créer un aiguillage paramétré à la main"
-
-#: ../bin/chndldto.c:358
-msgid "HandLaidTurnout"
-msgstr "Aiguillage de conception libre"
-
-#: ../bin/cjoin.c:166
-#, c-format
-msgid "Curved Track: Radius=%s Length=%s"
-msgstr "Voie courbe : Rayon =%s Longueur =%s"
-
-#: ../bin/cjoin.c:252
-#, 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:348
-#, 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:366
-#, 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:410
-msgid "Click on an unselected End-Point"
-msgstr "Cliquez sur un point d'extrémité non sélectionné"
-
-#: ../bin/cjoin.c:411
-msgid "Click on a selected End-Point"
-msgstr "Cliquez sur un point d'extrémité sélectionné"
-
-#: ../bin/cjoin.c:417
-msgid "unselected"
-msgstr "non sélectionné"
-
-#: ../bin/cjoin.c:417 ../bin/cprint.c:161
-msgid "selected"
-msgstr "sélectionnée(s)"
-
-#: ../bin/cjoin.c:474
-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:513 ../bin/cjoin.c:539
-msgid "Not a line - Try again"
-msgstr "Pas de ligne - Réessayez"
-
-#: ../bin/cjoin.c:535
-msgid "Left click - Select second object end"
-msgstr "Clic gauche - Sélectionnez la deuxième extrémité de l'objet"
-
-#: ../bin/cjoin.c:547
-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:581
-msgid "Create PolyLine"
-msgstr "Créer une polyligne"
-
-#: ../bin/cjoin.c:654 ../bin/cjoin.c:863
-#, fuzzy
-msgid "Desired Radius"
-msgstr "Rayon du cercle"
-
-#: ../bin/cjoin.c:804
-msgid "Left click - join with track"
-msgstr "Clic gauche - raccorder avec la voie"
-
-#: ../bin/cjoin.c:806
-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:856
-#, fuzzy, c-format
-msgid "Select 2nd track - desired radius %0.3f"
-msgstr "Sélectionnez la voie à décrire"
-
-#: ../bin/cjoin.c:858 ../bin/cjoin.c:1256 ../bin/cjoin.c:1263
-msgid "Select 2nd track"
-msgstr "Sélectionner une 2nd voie"
-
-#: ../bin/cjoin.c:1065
-msgid "Beyond end of 2nd track"
-msgstr "Au-delà de la fin de la 2ème voie"
-
-#: ../bin/cjoin.c:1100
-msgid "Beyond end of 1st track"
-msgstr "Au-delà de la fin de la 1ère voie"
-
-#: ../bin/cjoin.c:1122
-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:1129
-msgid "First "
-msgstr "Premier "
-
-#: ../bin/cjoin.c:1154
-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:1161
-msgid "Second "
-msgstr "Second "
-
-#: ../bin/cjoin.c:1175 ../bin/track.c:2270 ../bin/track.c:2306
-#: ../bin/track.c:2372
-msgid "Connecting "
-msgstr "Se connecter "
-
-#: ../bin/cjoin.c:1266
-msgid "Join Tracks"
-msgstr "Raccorder les voies"
-
-#: ../bin/cjoin.c:1348
-msgid "Join"
-msgstr "Raccorder"
-
-#: ../bin/cjoin.c:1349
-msgid "Join Track"
-msgstr "Raccorder une voie"
-
-#: ../bin/cjoin.c:1350
-msgid "Join Lines"
-msgstr "Raccorder des lignes"
-
-#: ../bin/cmisc.c:59
-msgid "Middle"
-msgstr "Milieu"
-
-#: ../bin/cmisc.c:59 ../bin/macro.c:98
-msgid "End"
-msgstr "Fin"
-
-#: ../bin/cmisc.c:242 ../bin/cmodify.c:353 ../bin/compound.c:664
-#: ../bin/ctrain.c:218
-msgid "Change Track"
-msgstr "Changer de voie"
-
-#: ../bin/cmisc.c:572
-msgid "Select track to describe"
-msgstr "Sélectionnez la voie à décrire"
-
-#: ../bin/cmisc.c:650 ../bin/doption.c:235
-msgid "Properties"
-msgstr "Propriétés"
-
-#: ../bin/cmisc2.c:52
-msgid "Bridge"
-msgstr "Pont"
-
-#: ../bin/cmodify.c:203 ../bin/cmodify.c:471
-msgid "Modify Track"
-msgstr "Modifier la voie"
-
-#: ../bin/cmodify.c:266
-msgid ""
-"Select a track to modify, Left-Click change length, Right-Click to add "
-"flextrack"
-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:512
-msgid "Drag to add flex track"
-msgstr "Faites glisser pour créer une voie flexible"
-
-#: ../bin/cmodify.c:517
-msgid "No track to extend"
-msgstr "Pas de voies à prolonger"
-
-#: ../bin/cmodify.c:522
-msgid "No track selected"
-msgstr "Aucune voie sélectionnée"
-
-#: ../bin/cmodify.c:655
-#, 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:670
-msgid "Extend Track"
-msgstr "Prolonger la voie"
-
-#: ../bin/cmodify.c:794
-msgid "Modify"
-msgstr "Modifier"
-
-#: ../bin/cmodify.c:801 ../bin/cselect.c:3305 ../bin/cselect.c:3321
-#: ../bin/misc.c:2197 ../bin/misc.c:2199
-msgid "Zoom In"
-msgstr "Zoom Avant"
-
-#: ../bin/cmodify.c:802 ../bin/cselect.c:3309 ../bin/cselect.c:3322
-#: ../bin/misc.c:2201 ../bin/misc.c:2203
-msgid "Zoom Out"
-msgstr "Zoom Arrière"
-
-#: ../bin/cmodify.c:803
-msgid "Pan center - 'c'"
-msgstr "Centre du panoramique - 'c'"
-
-#: ../bin/cnote.c:69 ../bin/textnoteui.c:48 ../bin/trknote.c:60
-msgid "Note"
-msgstr "Remarque"
-
-#: ../bin/cnote.c:75
-msgid "Replace this text with your layout notes"
-msgstr "Remplacez ce texte par vos notes de plan"
-
-#: ../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
-msgid "Center X,Y"
-msgstr "Centre X,Y"
-
-#: ../bin/compound.c:546 ../bin/tbezier.c:249 ../bin/tcornu.c:298
-msgid "Z1"
-msgstr "Z1"
-
-#: ../bin/compound.c:551 ../bin/tbezier.c:256 ../bin/tcornu.c:303
-msgid "Z2"
-msgstr "Z2"
-
-#: ../bin/compound.c:552
-msgid "End Pt 3: X,Y"
-msgstr "Bout 3: X,Y"
-
-#: ../bin/compound.c:556
-msgid "Z3"
-msgstr "Z3"
-
-#: ../bin/compound.c:557
-msgid "End Pt 4: X,Y"
-msgstr "Bout 4: X,Y"
-
-#: ../bin/compound.c:561
-msgid "Z4"
-msgstr "Z4"
-
-#: ../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 "Référence N°"
-
-#: ../bin/compound.c:569
-msgid "LineType"
-msgstr "Type de Ligne"
-
-#: ../bin/compound.c:830 ../bin/cstruct.c:935 ../bin/cstruct.c:1126
-msgid "Structure"
-msgstr "Structure"
-
-#: ../bin/compound.c:832 ../bin/cswitchmotor.c:228 ../bin/cturnout.c:1063
-#: ../bin/cturnout.c:2888
-msgid "Turnout"
-msgstr "Aiguillage"
-
-#: ../bin/compound.c:832
-msgid "Sectional Track"
-msgstr "Section de voie"
-
-#: ../bin/compound.c:836
-#, c-format
-msgid "%s (%d) Layer= %d %s"
-msgstr "%s (%d) Calque= %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 "Séparation"
-
-#: ../bin/cparalle.c:55 ../bin/cparalle.c:101
-msgid "Radius Factor"
-msgstr "Facteur de Rayon"
-
-#: ../bin/cparalle.c:141
-msgid "Radius factor"
-msgstr "Facteur de rayon"
-
-#: ../bin/cparalle.c:154
-#, fuzzy
-msgid " Track/Line doesn't support parallel"
-msgstr " Aucun parallèle ne peut être créé pour cette voie"
-
-#: ../bin/cparalle.c:226
-msgid "Create Parallel Track"
-msgstr "Créer une voie parallèle"
-
-#. 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 "Parallèle"
-
-#: ../bin/cparalle.c:297
-msgid "Parallel Track"
-msgstr "Voie parallèle"
-
-#: ../bin/cparalle.c:298
-msgid "Parallel Line"
-msgstr "Ligne parallèle"
-
-#: ../bin/cprint.c:110
-msgid "Portrait"
-msgstr "Portrait"
-
-#: ../bin/cprint.c:110
-msgid "Landscape"
-msgstr "Paysage"
-
-#: ../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 "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
-msgid "Reverse"
-msgstr "Inversé"
-
-#: ../bin/cprint.c:112
-msgid "Engineering Data"
-msgstr "Données d'ingénierie"
-
-#: ../bin/cprint.c:113
-msgid "Registration Marks (in 1:1 scale only)"
-msgstr "Aides au positionnement (à l'échelle 1:1 uniquement)"
-
-#: ../bin/cprint.c:114
-msgid "Page Numbers"
-msgstr "Numéro de page"
-
-#: ../bin/cprint.c:115
-msgid "Ignore Page Margins"
-msgstr "Impression sans marge"
-
-#: ../bin/cprint.c:116 ../bin/csnap.c:705 ../bin/doption.c:530
-msgid "Snap Grid"
-msgstr "Grille magnétique"
-
-#: ../bin/cprint.c:117
-msgid "Rulers"
-msgstr "Règles"
-
-#: ../bin/cprint.c:118
-msgid "Roadbed Outline"
-msgstr "Rayon droit"
-
-#: ../bin/cprint.c:119
-msgid "Centerline below Scale 1:1"
-msgstr "Imprimer l'axe central (en dessous de l'échelle 1:1)"
-
-#: ../bin/cprint.c:127
-msgid "Print Scale"
-msgstr "Echelle d'impression"
-
-#: ../bin/cprint.c:128
-msgid "Page Width"
-msgstr "Largeur de page"
-
-#: ../bin/cprint.c:129
-msgid "Max"
-msgstr "Max"
-
-#: ../bin/cprint.c:131
-msgid "Snap Shot"
-msgstr "Copie Ecran"
-
-#: ../bin/cprint.c:132
-msgid "Page Format"
-msgstr "Format de la page"
-
-#: ../bin/cprint.c:133
-msgid "Print Order"
-msgstr "Ordre d'impression"
-
-#: ../bin/cprint.c:134
-msgid "Print "
-msgstr "Imprimer "
-
-#: ../bin/cprint.c:149
-msgid " Width"
-msgstr " Largeur"
-
-#: ../bin/cprint.c:151
-#, fuzzy
-msgid "Margins"
-msgstr "Principal"
-
-#: ../bin/cprint.c:152 ../bin/cturntbl.c:250
-msgid "Origin: X"
-msgstr "Origine : 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 "Remise à zéro"
-
-#: ../bin/cprint.c:156
-msgid "Setup"
-msgstr "Configuration"
-
-#: ../bin/cprint.c:157 ../bin/cselect.c:3313 ../bin/misc.c:2228
-msgid "Select All"
-msgstr "Tout sélectionner"
-
-#: ../bin/cprint.c:158 ../bin/cprofile.c:717 ../bin/layout.c:472
-#: ../bin/misc.c:726
-msgid "Clear"
-msgstr "Effacer"
-
-#: ../bin/cprint.c:160
-msgid "0 pages"
-msgstr "0 pages"
-
-#: ../bin/cprint.c:187
-#, c-format
-msgid "%d page"
-msgstr "pages %d"
-
-#: ../bin/cprint.c:187
-#, c-format
-msgid "%d pages"
-msgstr "pages %d"
-
-#: ../bin/cprint.c:408
-#, 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 %s Fichier %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 "Annuler"
-
-#: ../bin/cprint.c:723
-#, fuzzy
-msgid "Print Margins"
-msgstr "Page de test pour les marges d'impression"
-
-#: ../bin/cprint.c:1367 ../bin/cprofile.c:719 ../bin/ctodesgn.c:2864
-#: ../bin/denum.c:55
-msgid "Print"
-msgstr "Imprimer"
-
-#: ../bin/cprint.c:1388
-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:1485
-msgid "Print..."
-msgstr "Imprimer ..."
-
-#. 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 "Profil"
-
-#: ../bin/cprofile.c:632
-#, c-format
-msgid "%s Profile: %s"
-msgstr "%s Profil: %s"
-
-#: ../bin/cprofile.c:713 ../bin/misc.c:1894
-msgid "Change"
-msgstr "Modifier"
-
-#: ../bin/cprofile.c:757 ../bin/cprofile.c:767
-#, c-format
-msgid "Elev = %0.1f"
-msgstr "Élév = %0.1f"
-
-#: ../bin/cprofile.c:769
-#, c-format
-msgid "Elev=%0.2f %0.1f%%"
-msgstr "Élév =%0.2f %0.1f%%"
-
-#: ../bin/cprofile.c:774
-#, c-format
-msgid "%0.1f%% Elev = %0.2f"
-msgstr "%0.1f%% Elev = %0.2f"
-
-#: ../bin/cprofile.c:779
-#, 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
-msgid "Profile Command"
-msgstr "Commande de profil"
-
-#: ../bin/cprofile.c:803 ../bin/cprofile.c:1454
-msgid "Drag to change Elevation"
-msgstr "Faites glisser pour modifier l'élévation"
-
-#: ../bin/cprofile.c:905
-msgid "Select a Defined Elevation to start Profile"
-msgstr "Sélectionnez une élévation définie pour démarrer le Profil"
-
-#: ../bin/cprofile.c:907
-msgid "Select a Defined Elevation to extend Profile"
-msgstr "Sélectionnez une élévation définie pour étendre le profil"
-
-#: ../bin/cprofile.c:1462
-msgid "Select a Defined Elevation to start profile"
-msgstr "Sélectionnez une élévation définie pour démarrer le profil"
-
-#: ../bin/cprofile.c:1531
-msgid "Define"
-msgstr "Définir"
-
-#: ../bin/cpull.c:439 ../bin/cpull.c:595
-#, c-format
-msgid "%d tracks moved"
-msgstr "%d Voies déplacées"
-
-#: ../bin/cpull.c:485
-msgid "Pull Tracks"
-msgstr "Voies de service"
-
-#: ../bin/cpull.c:559
-msgid "Tighten Tracks"
-msgstr "Resserrer les voies"
-
-#: ../bin/cpull.c:645
-msgid "Connect Multiple Tracks - Select multiple tracks to join first"
-msgstr ""
-"Connecter plusieurs voies - Sélectionnez plusieurs voies à raccorder en "
-"premier"
-
-#: ../bin/cpull.c:648
-msgid "Try to Connect all Selected Tracks?"
-msgstr "Toutes les voies sélectionnées doivent-elles être connectées?"
-
-#: ../bin/cpull.c:654
-msgid "ReConnect"
-msgstr "Reconnecter"
-
-#: ../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 ""
-"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:715
-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:717
-msgid ""
-"Select first endpoint to connect, or Right-Click for connecting selected "
-"tracks (not turntable)"
-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:776
-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:783
-msgid "Same Track! - please select another"
-msgstr "Même voie ! - veuillez en choisir une autre"
-
-#: ../bin/cpull.c:870
-msgid "Connect Two Tracks"
-msgstr "Connecter deux Voies"
-
-#: ../bin/cpull.c:872
-msgid "Connect All Selected - 'S'"
-msgstr "Connecter tous les éléments sélectionnés - 'S'"
-
-#. 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 "Règle"
-
-#: ../bin/cselect.c:616
-msgid "Change Track Width"
-msgstr "Changer la largeur de la voie"
-
-#: ../bin/cselect.c:640
-msgid "Change Line Type"
-msgstr "Changer le type de ligne"
-
-#: ../bin/cselect.c:669
-msgid "Delete Tracks"
-msgstr "Supprimer des voies"
-
-#: ../bin/cselect.c:745
-msgid "Hide Tracks (Tunnel)"
-msgstr "Masquer les voies (tunnel)"
-
-#: ../bin/cselect.c:763
-msgid "Bridge Tracks "
-msgstr "Raccorder les voies "
-
-#: ../bin/cselect.c:780
-msgid "Ties Tracks "
-msgstr "Voies groupées "
-
-#: ../bin/cselect.c:817 ../bin/misc.c:2348
-msgid "Move To Current Layer"
-msgstr "Déplacer vers le calque actuel"
-
-#: ../bin/cselect.c:857 ../bin/misc.c:2498
-msgid "Clear Elevations"
-msgstr "Effacer les élévations"
-
-#: ../bin/cselect.c:901
-msgid "Add Elevations"
-msgstr "Ajouter des élévations"
-
-#: ../bin/cselect.c:916
-msgid "Refresh Compound"
-msgstr "Mettre à jour la compilation"
-
-#: ../bin/cselect.c:948 ../bin/dcar.c:4367 ../bin/dcar.c:4372
-#: ../bin/dcustmgm.c:60 ../bin/layout.c:463
-msgid "Scale"
-msgstr "Échelle"
-
-#: ../bin/cselect.c:948 ../bin/cselect.c:973
-msgid "Ratio"
-msgstr "Rapport"
-
-#: ../bin/cselect.c:957
-msgid "Do not resize track"
-msgstr "Ne pas redimensionner la voie"
-
-#: ../bin/cselect.c:961
-msgid "Rescale by:"
-msgstr "Changer d'échelle par :"
-
-#: ../bin/cselect.c:963
-msgid "From:"
-msgstr "De :"
-
-#: ../bin/cselect.c:967
-msgid "To: "
-msgstr "À : "
-
-#: ../bin/cselect.c:1034
-msgid "Rescale Tracks"
-msgstr "Changer d'échelle les voies"
-
-#. 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 "Changer d'échelle"
-
-#: ../bin/cselect.c:1465
-msgid "Cornu too tight - it was deleted"
-msgstr "Cornu trop serrée - elle a été supprimée"
-
-#: ../bin/cselect.c:1520
-msgid "Move To Join"
-msgstr "Déplacer pour Raccorder"
-
-#: ../bin/cselect.c:1714
-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:1735 ../bin/cselect.c:1848 ../bin/cselect.c:2205
-msgid "Move Tracks"
-msgstr "Déplacer des voies"
-
-#: ../bin/cselect.c:1893
-msgid "Align: Click on a selected object to be aligned"
-msgstr "Aligner : cliquez sur un objet sélectionné à aligner"
-
-#: ../bin/cselect.c:1931
-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:1947 ../bin/cselect.c:2218
-msgid "Rotate Tracks"
-msgstr "Faire pivoter les voies"
-
-#: ../bin/cselect.c:1960
-msgid "Center of Rotation snapped to Turntable center"
-msgstr "Le centre de rotation est aligné sur le centre du pont tournant"
-
-#: ../bin/cselect.c:2002 ../bin/cselect.c:2033
-#, c-format
-msgid "Angle %0.3f"
-msgstr "Angle %0.3f"
-
-#: ../bin/cselect.c:2089
-#, c-format
-msgid "Angle %0.3f #%ld"
-msgstr "Angle %0.3f #%ld"
-
-#: ../bin/cselect.c:2091
-#, c-format
-msgid "Angle %0.3f %s"
-msgstr "Angle %0.3f %s"
-
-#: ../bin/cselect.c:2096
-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:2110
-msgid "Align: Click on the 2nd unselected object"
-msgstr "Aligner : Cliquez sur le 2ème objet non sélectionné"
-
-#: ../bin/cselect.c:2230
-msgid "Toggle Label"
-msgstr "Modifie l'étiquette"
-
-#: ../bin/cselect.c:2349 ../bin/cselect.c:2388
-msgid "Select and drag a description"
-msgstr "Sélectionnez et faites glisser une description"
-
-#: ../bin/cselect.c:2374
-msgid "Elevation description"
-msgstr "Description de l'élévation"
-
-#: ../bin/cselect.c:2377
-msgid "Hidden description - 's' to Show"
-msgstr "Description cachée - 's' à afficher"
-
-#: ../bin/cselect.c:2381
-msgid "Shown description - 'h' to Hide"
-msgstr "Description visible - Cacher avec 'h'"
-
-#: ../bin/cselect.c:2402
-msgid "Hidden Label - Drag to reveal"
-msgstr "Étiquette cachée - Faites glisser pour afficher"
-
-#: ../bin/cselect.c:2404
-msgid "Drag label"
-msgstr "Faites glisser l'étiquette pour la positionner"
-
-#: ../bin/cselect.c:2406
-msgid "Move Label"
-msgstr "Déplacer l'étiquette"
-
-#: ../bin/cselect.c:2443
-msgid "To Hide, use Context Menu"
-msgstr "Pour masquer, utilisez le menu contextuel"
-
-#: ../bin/cselect.c:2459 ../bin/cselect.c:3339
-msgid "Show/Hide Description"
-msgstr "Montrer/cacher la description"
-
-#: ../bin/cselect.c:2538
-msgid "Drag to mark mirror line"
-msgstr "Faites glisser pour créer la voie d'axe du miroir"
-
-#: ../bin/cselect.c:2549
-#, c-format
-msgid "Angle %0.2f"
-msgstr "Angle %0.2f"
-
-#: ../bin/cselect.c:2552
-msgid "Flip Tracks"
-msgstr "Voies en miroir"
-
-#: ../bin/cselect.c:2899
-msgid "Select track"
-msgstr "Sélectionner une voie"
-
-#: ../bin/cselect.c:2927
-msgid "Track is in Frozen Layer"
-msgstr "La voie est sur une couche bloquée"
-
-#. 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 "Sélectionner"
-
-#: ../bin/cselect.c:3298 ../bin/cselect.c:3318 ../bin/misc.c:2192
-msgid "Undo"
-msgstr "Annuler"
-
-#: ../bin/cselect.c:3299 ../bin/cselect.c:3319 ../bin/misc.c:2194
-msgid "Redo"
-msgstr "Refaire"
-
-#: ../bin/cselect.c:3306 ../bin/draw.c:3112
-msgid "Zoom to extents - 'e'"
-msgstr "Zoom sur les extensions - 'e'"
-
-#: ../bin/cselect.c:3307 ../bin/draw.c:3123 ../bin/misc.c:2375
-msgid "&Zoom"
-msgstr "&Zoom"
-
-#: ../bin/cselect.c:3310 ../bin/draw.c:3122
-#, fuzzy
-msgid "Pan to Origin - 'o'/'0'"
-msgstr "Pan à l'origine - 'o'"
-
-#: ../bin/cselect.c:3311 ../bin/cselect.c:3323
-msgid "Pan Center Here - 'c'"
-msgstr "Centre du Panoramique ici - 'c'"
-
-#: ../bin/cselect.c:3314 ../bin/misc.c:2231 ../bin/misc.c:2354
-msgid "Select Current Layer"
-msgstr "Sélectionner le calque actuel"
-
-#: ../bin/cselect.c:3325 ../bin/misc.c:2233
-msgid "Deselect All"
-msgstr "Tout désélectionner"
-
-#: ../bin/cselect.c:3327
-msgid "Properties -'?'"
-msgstr "Propriétés -'?'"
-
-#: ../bin/cselect.c:3328
-msgid "Modify/Activate Track"
-msgstr "Modifier/Activer la voie"
-
-#: ../bin/cselect.c:3330 ../bin/misc.c:2219
-msgid "Cut"
-msgstr "Couper"
-
-#: ../bin/cselect.c:3331 ../bin/misc.c:2221
-msgid "Copy"
-msgstr "Copier"
-
-#: ../bin/cselect.c:3332 ../bin/fileio.c:1620 ../bin/misc.c:2223
-msgid "Paste"
-msgstr "Coller"
-
-#: ../bin/cselect.c:3333 ../bin/misc.c:2225
-#, fuzzy
-msgid "Clone"
-msgstr "Fermer"
-
-#: ../bin/cselect.c:3335
-msgid "Rotate..."
-msgstr "Rotation ..."
-
-#: ../bin/cselect.c:3337
-msgid "Align"
-msgstr "Aligner"
-
-#: ../bin/cselect.c:3341
-msgid "Hide/NoHide"
-msgstr "Masqué/Affiché"
-
-#: ../bin/cselect.c:3342
-msgid "Bridge/NoBridge"
-msgstr "Raccordé/Non raccordé"
-
-#: ../bin/cselect.c:3343
-msgid "NoTies/Ties"
-msgstr "Non connectés/connectés"
-
-#: ../bin/cselect.c:3344
-msgid "Thickness..."
-msgstr "Épaisseur..."
-
-#: ../bin/cselect.c:3345 ../bin/misc.c:2366
-msgid "Thin Tracks"
-msgstr "Voies fines"
-
-#: ../bin/cselect.c:3346 ../bin/misc.c:2367
-msgid "Medium Tracks"
-msgstr "Voies moyennes"
-
-#: ../bin/cselect.c:3347 ../bin/misc.c:2368
-msgid "Thick Tracks"
-msgstr "Voies épaisses"
-
-#: ../bin/cselect.c:3352
-msgid "Dash-Dotted Line"
-msgstr "Ligne tiret-pointillé"
-
-#: ../bin/cselect.c:3353
-msgid "Dash-Dot-Dotted Line"
-msgstr "Ligne en pointillé"
-
-#: ../bin/cselect.c:3355
-msgid "Move To Front"
-msgstr "Déplacer vers l'avant"
-
-#: ../bin/cselect.c:3356
-msgid "Move To Back"
-msgstr "Déplacer vers l'arrière"
-
-#: ../bin/cselect.c:3358
-msgid "Group"
-msgstr "Grouper"
-
-#: ../bin/cselect.c:3359
-msgid "UnGroup"
-msgstr "Dissocier"
-
-#: ../bin/cselect.c:3394
-msgid "Move Description"
-msgstr "Déplacer l'étiquette"
-
-#: ../bin/cselect.c:3401 ../bin/misc.c:1935 ../bin/misc.c:2236
-msgid "Move"
-msgstr "Déplacer"
-
-#. 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 "Rotation"
-
-#. 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 "Miroir"
-
-#: ../bin/csensor.c:216
-msgid "Change Sensor"
-msgstr "Changer de capteur"
-
-#: ../bin/csensor.c:262 ../bin/csensor.c:596
-msgid "Sensor"
-msgstr "Capteur"
-
-#: ../bin/csensor.c:391 ../bin/csignal.c:511
-msgid "Orgin X"
-msgstr "Origine X"
-
-#: ../bin/csensor.c:407
-msgid "Create Sensor"
-msgstr "Créer un capteur"
-
-#: ../bin/csensor.c:410
-msgid "Modify Sensor"
-msgstr "Modifier le capteur"
-
-#: ../bin/csensor.c:443
-msgid "Edit sensor"
-msgstr "Editer un capteur"
-
-#: ../bin/csensor.c:481
-msgid "Place sensor"
-msgstr "Mettre un capteur"
-
-#: ../bin/csignal.c:241
-msgid "Number Of Heads"
-msgstr "Nombre De têtes"
-
-#: ../bin/csignal.c:280
-msgid "Change Signal"
-msgstr "Changer le signal"
-
-#: ../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]): Calque=%d, %d entêtes à %0.3f,%0.3f A%0.3f"
-
-#: ../bin/csignal.c:325 ../bin/csignal.c:914
-msgid "Signal"
-msgstr "Signal"
-
-#: ../bin/csignal.c:517
-msgid "Number of Heads"
-msgstr "Nombre de têtes"
-
-#: ../bin/csignal.c:522
-msgid "Edit Aspect"
-msgstr "Modifier un état"
-
-#: ../bin/csignal.c:524
-msgid "Add Aspect"
-msgstr "Ajouter un état"
-
-#: ../bin/csignal.c:526
-msgid "Delete Aspect"
-msgstr "Effacer un état"
-
-#: ../bin/csignal.c:539
-msgid "Aspect Index"
-msgstr "Numéro d'affichage du signal"
-
-#: ../bin/csignal.c:554
-msgid "Create Signal"
-msgstr "Créer un signal"
-
-#: ../bin/csignal.c:558
-msgid "Modify Signal"
-msgstr "Modifier le signal"
-
-#: ../bin/csignal.c:665
-msgid "Edit aspect"
-msgstr "Modifier l'état"
-
-#: ../bin/csignal.c:712
-#, 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:733
-msgid "Edit signal"
-msgstr "Editer un signal"
-
-#: ../bin/csignal.c:795
-msgid "Place base of signal"
-msgstr "Réglez la base du signal"
-
-#: ../bin/csignal.c:802
-msgid "Drag to orient signal"
-msgstr "Faites glisser pour orienter le signal"
-
-#: ../bin/csnap.c:516
-msgid "Horz"
-msgstr "Horz"
-
-#: ../bin/csnap.c:518
-msgid "Spacing"
-msgstr "Espacement"
-
-#: ../bin/csnap.c:520
-msgid "Divisions"
-msgstr "Divisions"
-
-#: ../bin/csnap.c:523
-msgid "Enable"
-msgstr "Activer"
-
-#: ../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 "A"
-
-#: ../bin/csnap.c:540
-msgid "Show"
-msgstr "Afficher"
-
-#: ../bin/csnap.c:790
-msgid "Change Grid..."
-msgstr "Modifier la grille ..."
-
-#: ../bin/csplit.c:44
-msgid "Set Block Gaps"
-msgstr "Définir des points de séparation"
-
-#: ../bin/csplit.c:105
-msgid "Select track to split"
-msgstr "Sélectionnez la voie à scinder"
-
-#: ../bin/csplit.c:125
-msgid "Can't Split that Track"
-msgstr "Impossible de scinder cette voie"
-
-#: ../bin/csplit.c:133 ../bin/csplit.c:221
-msgid "Split Track"
-msgstr "Segmentation de Voie"
-
-#: ../bin/csplit.c:149 ../bin/dbench.c:69 ../bin/dbench.c:80
-msgid "Left"
-msgstr "Gauche"
-
-#: ../bin/csplit.c:150 ../bin/dbench.c:70 ../bin/dbench.c:79
-msgid "Right"
-msgstr "Droit"
-
-#: ../bin/csplit.c:151 ../bin/csplit.c:156
-msgid "Both"
-msgstr "Les deux"
-
-#: ../bin/csplit.c:154
-msgid "Top"
-msgstr "Haut"
-
-#: ../bin/csplit.c:155
-msgid "Bottom"
-msgstr "Bas"
-
-#: ../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:104
-msgid "Drag to place 2nd end point"
-msgstr "Faites glisser pour placer la 2ème extrémité"
-
-#: ../bin/cstraigh.c:140
-#, c-format
-msgid "Straight Track Length=%s Angle=%0.3f"
-msgstr "Longueur de voie droite = %s Angle = %0.3f"
-
-#: ../bin/cstraigh.c:191 ../bin/tstraigh.c:267
-msgid "Straight Track"
-msgstr "Voie droite"
-
-#: ../bin/cstruct.c:71 ../bin/cturnout.c:84 ../bin/doption.c:131
-#: ../bin/doption.c:240
-msgid "Hide"
-msgstr "Cacher"
-
-#: ../bin/cstruct.c:449 ../bin/cstruct.c:476
-msgid "Pier Number"
-msgstr "Travaux de voie d'évitement"
-
-#: ../bin/cstruct.c:561
-#, c-format
-msgid "Scale %d:1"
-msgstr "Echelle %d :1"
-
-#: ../bin/cstruct.c:563
-#, c-format
-msgid "Width %s"
-msgstr "Largeur %s"
-
-#: ../bin/cstruct.c:565
-#, c-format
-msgid "Height %s"
-msgstr "Hauteur %s"
-
-#: ../bin/cstruct.c:706
-msgid "Place Structure"
-msgstr "Mettre un bâtiment"
-
-#: ../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
-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"
-
-#: ../bin/cstruct.c:820
-msgid "Drag to place"
-msgstr "Faites glisser pour positionner"
-
-#: ../bin/cstruct.c:842
-msgid "Drag to rotate"
-msgstr "Faites glisser pour faire pivoter"
-
-#: ../bin/cstruct.c:862
-#, c-format
-msgid "Angle = %0.3f"
-msgstr "Angle = %0.3f"
-
-#: ../bin/cstruct.c:952
-msgid "Select Structure and then drag to place"
-msgstr "Sélectionnez le bâtiment et déplacez-vous vers la position"
-
-#: ../bin/cstruct.c:990
-msgid ""
-"Left drag to move, right drag to rotate, or press Return or click Ok to "
-"finalize"
-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:1073 ../bin/cturnout.c:3039
-#, c-format
-msgid "Place %s and draw into position"
-msgstr "Placer %s et mettre en position"
-
-#: ../bin/cswitchmotor.c:96 ../bin/cswitchmotor.c:115
-#: ../bin/cswitchmotor.c:227
-msgid "Point Sense"
-msgstr "Sens des aiguilles"
-
-#: ../bin/cswitchmotor.c:116
-msgid "Turnout Number"
-msgstr "Numéro d'angle d'aiguillage"
-
-#: ../bin/cswitchmotor.c:292
-msgid "Change Switch Motor"
-msgstr "Changer de moteur d'aiguillage"
-
-#: ../bin/cswitchmotor.c:359
-msgid "Switch motor"
-msgstr "Moteur d'aiguillage"
-
-#: ../bin/cswitchmotor.c:475
-#, 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:544 ../bin/cswitchmotor.c:714
-msgid "Switch motor must have a name!"
-msgstr "Le moteur d'aiguillage doit avoir un nom !"
-
-#: ../bin/cswitchmotor.c:548
-msgid "Create Switch Motor"
-msgstr "Créer un moteur d'aiguillage"
-
-#: ../bin/cswitchmotor.c:580
-msgid "Create switch motor"
-msgstr "Créer un moteur d'aiguillage"
-
-#: ../bin/cswitchmotor.c:594 ../bin/cswitchmotor.c:625
-#: ../bin/cswitchmotor.c:657
-msgid "Select a turnout"
-msgstr "Sélectionner un aiguillage"
-
-#: ../bin/cswitchmotor.c:601
-msgid "Not a turnout!"
-msgstr "Pas d'aiguillage !"
-
-#: ../bin/cswitchmotor.c:634 ../bin/cswitchmotor.c:665
-msgid "Not a switch motor!"
-msgstr "Pas de moteur d'aiguillage !"
-
-#: ../bin/cswitchmotor.c:670
-#, c-format
-msgid "Really delete switch motor %s?"
-msgstr "Voulez-vous vraiment supprimer le moteur d'aiguillage %s ?"
-
-#: ../bin/cswitchmotor.c:671
-msgid "Delete Switch Motor"
-msgstr "Supprimer le Moteur d'aiguillage"
-
-#: ../bin/cswitchmotor.c:718
-msgid "Modify Switch Motor"
-msgstr "Modifier le moteur d'aiguillage"
-
-#: ../bin/cswitchmotor.c:744
-msgid "Edit switch motor"
-msgstr "Editer le moteur d'aiguillage"
-
-#: ../bin/cswitchmotor.c:750
-#, c-format
-msgid "Edit switch motor %d"
-msgstr "Editer le moteur d'aiguillage %d"
-
-#: ../bin/cswitchmotor.c:858
-msgid "Switch Motor"
-msgstr "Moteur d'aiguillage"
-
-#: ../bin/cswitchmotor.c:871
-#, c-format
-msgid "Deleting Switch Motor %s"
-msgstr "Suppression du moteur d'aiguillage %s"
-
-#: ../bin/ctext.c:195 ../bin/ctext.c:234
-msgid "Create Text"
-msgstr "Créer un texte"
-
-#: ../bin/ctext.c:264
-msgid "Fonts..."
-msgstr "Polices ..."
-
-#: ../bin/ctodesgn.c:139
-msgid "Frog #"
-msgstr "N° #"
-
-#: ../bin/ctodesgn.c:139
-msgid "Degrees"
-msgstr "Degrés"
-
-#: ../bin/ctodesgn.c:140
-msgid "Dual Path"
-msgstr "Double voie"
-
-#: ../bin/ctodesgn.c:140
-msgid "Quad Path"
-msgstr "Quadruple voie"
-
-#: ../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 "Écart"
-
-#: ../bin/ctodesgn.c:196 ../bin/ctodesgn.c:2911 ../bin/ctodesgn.c:2912
-msgid "Left Description"
-msgstr "Description gauche"
-
-#: ../bin/ctodesgn.c:197 ../bin/ctodesgn.c:200
-msgid " #"
-msgstr " #"
-
-#: ../bin/ctodesgn.c:199 ../bin/ctodesgn.c:2910
-msgid "Right Description"
-msgstr "Description droite"
-
-#: ../bin/ctodesgn.c:201
-msgid "Roadbed Width"
-msgstr "Largeur de balast"
-
-#: ../bin/ctodesgn.c:205 ../bin/denum.c:56
-msgid "Print Setup"
-msgstr "Réglages Imp"
-
-#: ../bin/ctodesgn.c:236
-msgid "Diverging Length"
-msgstr "Longueur voie déviée"
-
-#: ../bin/ctodesgn.c:237
-msgid "Diverging Angle"
-msgstr "Angle voie déviée"
-
-#: ../bin/ctodesgn.c:238
-msgid "Diverging Offset"
-msgstr "Décalage voie déviée"
-
-#: ../bin/ctodesgn.c:239
-msgid "Overall Length"
-msgstr "Longueur totale"
-
-#: ../bin/ctodesgn.c:249
-msgid "Regular Turnout"
-msgstr "Aiguillage droit"
-
-#: ../bin/ctodesgn.c:259 ../bin/ctodesgn.c:296
-msgid "Inner Length"
-msgstr "Longueur intérieure"
-
-#: ../bin/ctodesgn.c:260 ../bin/ctodesgn.c:297
-msgid "Inner Angle"
-msgstr "Angle Intérieur"
-
-#: ../bin/ctodesgn.c:261 ../bin/ctodesgn.c:298
-msgid "Inner Offset"
-msgstr "Décalage interne"
-
-#: ../bin/ctodesgn.c:262 ../bin/ctodesgn.c:300
-msgid "Outer Angle"
-msgstr "Angle extérieur"
-
-#: ../bin/ctodesgn.c:263 ../bin/ctodesgn.c:301
-msgid "Outer Offset"
-msgstr "Décalage extérieur"
-
-#: ../bin/ctodesgn.c:264 ../bin/ctodesgn.c:303
-msgid "Outer Length"
-msgstr "Longueur extérieure"
-
-#: ../bin/ctodesgn.c:286
-msgid "Curved Turnout"
-msgstr "Aiguillage courbe"
-
-#: ../bin/ctodesgn.c:299
-msgid "Inner Radius"
-msgstr "Rayon intérieur"
-
-#: ../bin/ctodesgn.c:302
-msgid "Outer Radius"
-msgstr "Rayon extérieur"
-
-#: ../bin/ctodesgn.c:304 ../bin/ctodesgn.c:371 ../bin/ctodesgn.c:446
-msgid "Toe Radius"
-msgstr "Rayon initial"
-
-#: ../bin/ctodesgn.c:305 ../bin/ctodesgn.c:370
-msgid "Toe Length"
-msgstr "Longueur initiale"
-
-#: ../bin/ctodesgn.c:315
-msgid "Cornu Curved Turnout"
-msgstr "Aiguillage courbe Cornu"
-
-#: ../bin/ctodesgn.c:325 ../bin/ctodesgn.c:362 ../bin/ctodesgn.c:391
-#: ../bin/ctodesgn.c:432
-msgid "Left Length"
-msgstr "Longueur à gauche"
-
-#: ../bin/ctodesgn.c:326 ../bin/ctodesgn.c:363 ../bin/ctodesgn.c:392
-#: ../bin/ctodesgn.c:433
-msgid "Left Angle"
-msgstr "Angle gauche"
-
-#: ../bin/ctodesgn.c:327 ../bin/ctodesgn.c:364 ../bin/ctodesgn.c:393
-#: ../bin/ctodesgn.c:434
-msgid "Left Offset"
-msgstr "Décalage gauche"
-
-#: ../bin/ctodesgn.c:328 ../bin/ctodesgn.c:367 ../bin/ctodesgn.c:395
-#: ../bin/ctodesgn.c:441
-msgid "Right Offset"
-msgstr "Bon offset"
-
-#: ../bin/ctodesgn.c:329 ../bin/ctodesgn.c:368 ../bin/ctodesgn.c:396
-#: ../bin/ctodesgn.c:442
-msgid "Right Angle"
-msgstr "Angle droit"
-
-#: ../bin/ctodesgn.c:330 ../bin/ctodesgn.c:369 ../bin/ctodesgn.c:397
-#: ../bin/ctodesgn.c:443
-msgid "Right Length"
-msgstr "Bonne longueur"
-
-#: ../bin/ctodesgn.c:352
-msgid "Wye Turnout"
-msgstr "Aiguillage symétrique"
-
-#: ../bin/ctodesgn.c:365 ../bin/ctodesgn.c:435
-msgid "Left Radius"
-msgstr "Rayon gauche"
-
-#: ../bin/ctodesgn.c:366 ../bin/ctodesgn.c:440
-msgid "Right Radius"
-msgstr "Rayon droit"
-
-#: ../bin/ctodesgn.c:381
-msgid "Cornu Wye Turnout"
-msgstr "Aiguillage symétrique Cornu"
-
-#: ../bin/ctodesgn.c:422
-msgid "3-way Turnout"
-msgstr "Aiguillage 3-voies"
-
-#: ../bin/ctodesgn.c:436
-msgid "Center Length"
-msgstr "Longueur intérieure"
-
-#: ../bin/ctodesgn.c:437
-msgid "Center Angle"
-msgstr "Angle Intérieur"
-
-#: ../bin/ctodesgn.c:438 ../bin/dcar.c:2238
-msgid "Center Offset"
-msgstr "Décalage interne"
-
-#: ../bin/ctodesgn.c:439
-msgid "Center Radius"
-msgstr "Rayon du cercle"
-
-#: ../bin/ctodesgn.c:444
-msgid "Toe Length Left"
-msgstr "Longueur initiale gauche"
-
-#: ../bin/ctodesgn.c:445
-msgid "Toe Length Right"
-msgstr "Longueur initiale droite"
-
-#: ../bin/ctodesgn.c:457
-msgid "Cornu 3-way Turnout"
-msgstr "Aiguillage 3-voies Cornu"
-
-#: ../bin/ctodesgn.c:477
-msgid "Crossing"
-msgstr "Croisement"
-
-#: ../bin/ctodesgn.c:498
-msgid "Single Slipswitch"
-msgstr "Traversée jonction simple"
-
-#: ../bin/ctodesgn.c:527
-msgid "Double Slipswitch"
-msgstr "Traversée jonction double"
-
-#: ../bin/ctodesgn.c:547
-msgid "Right Crossover"
-msgstr "Traversée droite"
-
-#: ../bin/ctodesgn.c:567
-msgid "Left Crossover"
-msgstr "Traversée gauche"
-
-#: ../bin/ctodesgn.c:587
-msgid "Double Crossover"
-msgstr "Traversée double"
-
-#: ../bin/ctodesgn.c:605
-msgid "Straight Section"
-msgstr "Section droite"
-
-#: ../bin/ctodesgn.c:616
-msgid "Angle (Degrees)"
-msgstr "Angle (Degrés)"
-
-#: ../bin/ctodesgn.c:624
-msgid "Curved Section"
-msgstr "Section courbe"
-
-#: ../bin/ctodesgn.c:643
-msgid "Bumper Section"
-msgstr "Section Butoir"
-
-#: ../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 "Qté"
-
-#: ../bin/ctodesgn.c:654
-msgid "Radius1"
-msgstr "Rayon1"
-
-#: ../bin/ctodesgn.c:655
-msgid "Radius2"
-msgstr "Rayon2"
-
-#: ../bin/ctodesgn.c:735
-msgid "Turntable Section"
-msgstr "Section de pont tournant"
-
-#: ../bin/ctodesgn.c:2538
-#, c-format
-msgid "%s Designer"
-msgstr "%s Designer"
-
-#: ../bin/ctodesgn.c:2542
-#, c-format
-msgid "%s %d x %d (of %d x %d)"
-msgstr "%s %d x %d (de %d x %d)"
-
-#: ../bin/ctodesgn.c:2542
-msgid "Page"
-msgstr "Page"
-
-#: ../bin/ctodesgn.c:2550
-msgid "Frog Number"
-msgstr "N° de coeur"
-
-#: ../bin/ctodesgn.c:2864
-msgid "Turnout Designer"
-msgstr "Conception d'aiguillage"
-
-#: ../bin/ctodesgn.c:2874
-#, c-format
-msgid "%s %s Designer"
-msgstr "%s concepteur de %s"
-
-#: ../bin/ctrain.c:182 ../bin/dcar.c:2250 ../bin/dcar.c:4367
-#: ../bin/dcar.c:4372
-msgid "Index"
-msgstr "Index"
-
-#: ../bin/ctrain.c:188 ../bin/dcar.c:4368
-msgid "Rep Marks"
-msgstr "Numéros de voiture"
-
-#: ../bin/ctrain.c:272
-msgid "Car"
-msgstr "Véhicule"
-
-#: ../bin/ctrain.c:656
-msgid "Follow"
-msgstr "Suivre"
-
-#: ../bin/ctrain.c:657
-msgid "Auto Reverse"
-msgstr "Inversion automatique"
-
-#: ../bin/ctrain.c:676 ../bin/dcar.c:5257
-msgid "Find"
-msgstr "Chercher"
-
-#: ../bin/ctrain.c:682 ../bin/ctrain.c:941 ../bin/ctrain.c:1248
-#: ../wlib/gtklib/ixhelp.c:239
-msgid "Forward"
-msgstr "Avant"
-
-#: ../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 "Stop"
-
-#: ../bin/ctrain.c:882 ../bin/ctrain.c:911
-msgid "Crashed"
-msgstr "Dérailler"
-
-#: ../bin/ctrain.c:884
-msgid "Not on Track"
-msgstr "Pas sur la voie"
-
-#: ../bin/ctrain.c:888
-msgid "Trains Paused"
-msgstr "Trains en pause"
-
-#: ../bin/ctrain.c:890
-msgid "Running"
-msgstr "Marche"
-
-#: ../bin/ctrain.c:895
-msgid "End of Track"
-msgstr "Fin de voie"
-
-#: ../bin/ctrain.c:899
-msgid "Open Turnout"
-msgstr "Aiguillage ouvert"
-
-#: ../bin/ctrain.c:903
-msgid "Manual Stop"
-msgstr "Arrêt manuel"
-
-#: ../bin/ctrain.c:907
-msgid "No Room"
-msgstr "Pas d'espace de travail"
-
-#: ../bin/ctrain.c:915
-msgid "Unknown Status"
-msgstr "Statut inconnu"
-
-#: ../bin/ctrain.c:925
-msgid "No trains"
-msgstr "Pas de trains"
-
-#: ../bin/ctrain.c:1299
-msgid "Train Control XXX"
-msgstr "Contrôle du train XXX"
-
-#: ../bin/ctrain.c:1300
-#, c-format
-msgid "Train Control %d"
-msgstr "Contrôle du train %d"
-
-#: ../bin/ctrain.c:1302
-msgid "Train Control"
-msgstr "Panneau de commande"
-
-#: ../bin/ctrain.c:3096
-msgid "Train"
-msgstr "Train"
-
-#: ../bin/ctrain.c:3109
-msgid "Uncouple"
-msgstr "Découpler"
-
-#: ../bin/ctrain.c:3111
-msgid "Flip Car"
-msgstr "Inverser un véhicule"
-
-#: ../bin/ctrain.c:3113
-#, fuzzy
-msgid "Clearance Lines On"
-msgstr "Créer des lignes"
-
-#: ../bin/ctrain.c:3115
-#, fuzzy
-msgid "Clearance Lines Off"
-msgstr "Créer des lignes"
-
-#: ../bin/ctrain.c:3117
-msgid "Flip Train"
-msgstr "Inverser le train"
-
-#: ../bin/ctrain.c:3119
-msgid "MU Master"
-msgstr "MU Master"
-
-#: ../bin/ctrain.c:3122
-msgid "Change Direction"
-msgstr "Changer de direction"
-
-#: ../bin/ctrain.c:3126
-msgid "Remove Car"
-msgstr "Supprimer un véhicule"
-
-#: ../bin/ctrain.c:3129
-msgid "Remove Train"
-msgstr "Supprimer le train"
-
-#: ../bin/cturnout.c:95 ../bin/dcar.c:2272 ../bin/dcar.c:2276
-msgid "New"
-msgstr "Nouveau"
-
-#: ../bin/cturnout.c:368
-#, c-format
-msgid "Turnout path[%d:%d] out of bounds: %d"
-msgstr "Aiguillage [%d:%d] hors limites : %d"
-
-#: ../bin/cturnout.c:379 ../bin/cturnout.c:389
-#, c-format
-msgid "Turnout path[%d] %d is not a valid track segment"
-msgstr "L'accès à l'aiguillage [%d] %d n'est pas un segment de voie valide"
-
-#: ../bin/cturnout.c:399 ../bin/cturnout.c:404
-#, c-format
-msgid "Turnout path[%d] %d is not a track segment"
-msgstr "L'aiguillage [%d] %d n'est pas un segment de voie"
-
-#: ../bin/cturnout.c:412
-#, c-format
-msgid "Turnout path[%d] %d-%d not connected: %0.3f P0(%f,%f) P1(%f,%f)"
-msgstr ""
-"Accès à l'aiguillage [%d] %d-%d non connecté : %0.3f P0(%f,%f) P1(%f,%f)"
-
-#: ../bin/cturnout.c:450
-msgid "Unknown special case"
-msgstr "Cas spécial inconnu"
-
-#: ../bin/cturnout.c:560
-msgid "Connect Adjustable Tracks"
-msgstr "Connecter les voies ajustables"
-
-#: ../bin/cturnout.c:1096
-msgid "splitTurnout: can't find segment"
-msgstr "aiguillage fractionné : impossible de trouver le segment"
-
-#: ../bin/cturnout.c:1522 ../bin/track.c:2259 ../bin/track.c:2365
-#: ../bin/tstraigh.c:554
-msgid "Drag to change track length"
-msgstr "Faites glisser pour changer la longueur de la voie"
-
-#: ../bin/cturnout.c:1533
-#, c-format
-msgid "Length=%s"
-msgstr "Longueur = %s"
-
-#: ../bin/cturnout.c:2344
-#, c-format
-msgid "%d connections, max distance %0.3f (%s)"
-msgstr "%d connections, distance max %0.3f (%s)"
-
-#: ../bin/cturnout.c:2349
-#, c-format
-msgid "0 connections (%s)"
-msgstr "0 connections (%s)"
-
-#: ../bin/cturnout.c:2389
-msgid "Place New Turnout"
-msgstr "Mettre un nouvel aiguillage"
-
-#: ../bin/cturnout.c:2798
-#, c-format
-msgid "Angle = %0.3f (%s)"
-msgstr "Angle = %0.3f (%s)"
-
-#: ../bin/cturnout.c:2888 ../bin/param.c:2618
-msgid "Close"
-msgstr "Fermer"
-
-#: ../bin/cturnout.c:2905
-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:3099
-msgid "Predefined Track"
-msgstr "Voie sélectionnée"
-
-#: ../bin/cturntbl.c:52 ../bin/cturntbl.c:251 ../bin/cturntbl.c:857
-#: ../bin/cturntbl.c:871
-msgid "Diameter"
-msgstr "Diamètre"
-
-#: ../bin/cturntbl.c:252
-msgid "# EndPt"
-msgstr "# Bout"
-
-#: ../bin/cturntbl.c:286
-#, 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:301
-msgid "Turntable"
-msgstr "Pont tournant"
-
-#: ../bin/cturntbl.c:565
-msgid "Drag to create stall track"
-msgstr "Faites glisser pour créer une voie de dépassement"
-
-#: ../bin/cturntbl.c:618
-msgid "Connect Turntable Tracks"
-msgstr "Connecter les voies du pont tournant"
-
-#: ../bin/cturntbl.c:885
-msgid "Create Turntable"
-msgstr "Créer un pont tournant"
-
-#: ../bin/cturntbl.c:916
-msgid "Custom Turntable"
-msgstr "Pont tournant prototype"
-
-#: ../bin/cundo.c:166
-msgid "Undo Trace"
-msgstr "Annuler la trace"
-
-#: ../bin/cundo.c:536
-#, c-format
-msgid "Undo: %s"
-msgstr "Annuler : %s"
-
-#: ../bin/cundo.c:539 ../../../../build/work/app/bin/bllnhlp.c:158
-msgid "Undo last command"
-msgstr "Annuler la dernière commande"
-
-#: ../bin/cundo.c:544
-#, c-format
-msgid "Redo: %s"
-msgstr "Refaire : %s"
-
-#: ../bin/cundo.c:547 ../../../../build/work/app/bin/bllnhlp.c:124
-msgid "Redo last undo"
-msgstr "Refaire la dernière annulation"
-
-#: ../bin/custom.c:167
-#, c-format
-msgid "%s Turnout Designer"
-msgstr "%s Conception d'aiguillage"
-
-#: ../bin/custom.c:172
-#, c-format
-msgid "%s Version %s"
-msgstr "%s Version %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 ""
-"Tous les fichiers %s (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|%"
-"s Trackplan étendu (*.xtce)|*.xtce|Tous les fichiers (*)|*"
-
-#: ../bin/custom.c:188
-#, c-format
-msgid ""
-"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
-"(*)|*"
-msgstr ""
-"%s Trackplan (*.xtc)|*.xtc|%s Trackplan étendu (*.xtce)|*.xtce|Tous les "
-"fichiers (*)|*"
-
-#: ../bin/custom.c:197
-#, c-format
-msgid "All Files (*)|*"
-msgstr "Tous les fichiers (*)|*"
-
-#: ../bin/custom.c:202
-#, c-format
-msgid "%s Import Files (*.xti)|*.xti"
-msgstr "%s Fichiers (*.xti) importés|*.xti"
-
-#: ../bin/custom.c:207
-msgid "Data Exchange Format Files (*.dxf)|*.dxf"
-msgstr "Fichiers de format d'échange de données (*.dxf)|*.dxf"
-
-#: ../bin/custom.c:211
-#, c-format
-msgid "%s Record Files (*.xtr)|*.xtr"
-msgstr "%s Fichiers d'enregistrement (*.xtr)|*.xtr"
-
-#: ../bin/custom.c:216
-#, c-format
-msgid "%s Note Files (*.not)|*.not"
-msgstr "Pas de fichiers %s (*.not)|*.not"
-
-#: ../bin/custom.c:221
-#, c-format
-msgid "%s Log Files (*.log)|*.log"
-msgstr "Fichiers Log %s (*.log)|*.log"
-
-#: ../bin/custom.c:226
-#, c-format
-msgid "%s PartsList Files (*.txt)|*.txt"
-msgstr "Fichiers de nomenclature %s (*.txt|*.txt"
-
-#: ../bin/dbench.c:43
-msgid " L-Girder"
-msgstr " L-Support"
-
-#: ../bin/dbench.c:43
-msgid " T-Girder"
-msgstr " T-Support"
-
-#: ../bin/dbench.c:66
-msgid "On Edge"
-msgstr "Sur le bord"
-
-#: ../bin/dbench.c:67
-msgid "Flat"
-msgstr "Plat"
-
-#: ../bin/dbench.c:71
-msgid "Left-Down"
-msgstr "En bas à gauche"
-
-#: ../bin/dbench.c:72
-msgid "Right-Down"
-msgstr "En bas à droite"
-
-#: ../bin/dbench.c:73
-msgid "Left-Up"
-msgstr "En haut à gauche"
-
-#: ../bin/dbench.c:74
-msgid "Right-Up"
-msgstr "En haut à droite"
-
-#: ../bin/dbench.c:75
-msgid "Left-Inverted"
-msgstr "Inversé à gauche"
-
-#: ../bin/dbench.c:76
-msgid "Right-Inverted"
-msgstr "Inversé à droite"
-
-#: ../bin/dbench.c:81
-msgid "Inverted"
-msgstr "Inversé"
-
-#: ../bin/dbench.c:147
-#, c-format
-msgid ""
-"Bad BenchType for %s:\n"
-"%s"
-msgstr ""
-"Mauvais type de support pour%s:\n"
-"%s"
-
-#: ../bin/dbitmap.c:102 ../bin/dbitmap.c:106
-msgid "Drawn with "
-msgstr "Dessiné avec "
-
-#: ../bin/dbitmap.c:116
-msgid "Drawing tracks to BitMap"
-msgstr "Afficher le plan de voies dans BitMap"
-
-#: ../bin/dbitmap.c:123
-msgid "Writing BitMap to file"
-msgstr "Enregistrer en Bitmap dans un fichier"
-
-#: ../bin/dbitmap.c:144
-msgid "Print Titles"
-msgstr "Impression des titres"
-
-#: ../bin/dbitmap.c:144
-msgid "Print Borders"
-msgstr "Imprimer les bordures"
-
-#: ../bin/dbitmap.c:145
-msgid "Print Centerline"
-msgstr "Imprimer la voie d'axe"
-
-#: ../bin/dbitmap.c:152
-msgid " dpi"
-msgstr " ppp"
-
-#: ../bin/dbitmap.c:154
-msgid "Bitmap : 99999 by 99999 pixels"
-msgstr "Bitmap : 99999 par 99999 pixels"
-
-#: ../bin/dbitmap.c:156
-msgid "Approximate file size: 999.9Mb"
-msgstr "Taille approchée du fichier : 999.9Mb"
-
-#: ../bin/dbitmap.c:186
-#, c-format
-msgid "Bitmap : %ld by %ld pixels"
-msgstr "Bitmap : %ld par %ld pixels"
-
-#: ../bin/dbitmap.c:190
-#, c-format
-msgid "Approximate file size : %0.0f"
-msgstr "Taille approchée du fichier : %0.0f"
-
-#: ../bin/dbitmap.c:192
-#, c-format
-msgid "Approximate file size : %0.1fKb"
-msgstr "Taille approchée du fichier : %0.1fKb"
-
-#: ../bin/dbitmap.c:194
-#, c-format
-msgid "Approximate file size : %0.1fMb"
-msgstr "Taille approchée du fichier : %0.1fMb"
-
-#: ../bin/dbitmap.c:213
-msgid "Save Bitmap"
-msgstr "Enregistrer le bitmap"
-
-#: ../bin/dbitmap.c:217
-msgid "Bitmap files (*.png)|*.png"
-msgstr "Fichiers Bitmap (*.png)|*.png"
-
-#: ../bin/dbitmap.c:238
-msgid "BitMap"
-msgstr "BitMap"
-
-#: ../bin/dcar.c:54
-msgid "Truck"
-msgstr "Bogies"
-
-#: ../bin/dcar.c:54
-msgid "Body"
-msgstr "Structure"
-
-#: ../bin/dcar.c:156 ../bin/dcar.c:2702 ../bin/dcar.c:2706
-msgid "Unknown"
-msgstr "Inconnu"
-
-#: ../bin/dcar.c:478
-msgid "Diesel Loco"
-msgstr "Loco Diesel"
-
-#: ../bin/dcar.c:479
-msgid "Steam Loco"
-msgstr "Loco vapeur"
-
-#: ../bin/dcar.c:480
-msgid "Elect Loco"
-msgstr "Loco Elect"
-
-#: ../bin/dcar.c:481
-msgid "Freight Car"
-msgstr "Wagon march"
-
-#: ../bin/dcar.c:482
-msgid "Psngr Car"
-msgstr "Voiture voy"
-
-#: ../bin/dcar.c:483
-msgid "M-O-W"
-msgstr "Chariot"
-
-#: ../bin/dcar.c:484
-msgid "Other"
-msgstr "Autres"
-
-#: ../bin/dcar.c:1183 ../bin/dcar.c:5078
-msgid "N/A"
-msgstr "Non applicable"
-
-#: ../bin/dcar.c:1184 ../bin/dcar.c:5083
-msgid "Mint"
-msgstr "Mint"
-
-#: ../bin/dcar.c:1185 ../bin/dcar.c:5082
-msgid "Excellent"
-msgstr "Excellent"
-
-#: ../bin/dcar.c:1186 ../bin/dcar.c:5081
-msgid "Good"
-msgstr "Bon"
-
-#: ../bin/dcar.c:1187 ../bin/dcar.c:5080
-msgid "Fair"
-msgstr "Juste"
-
-#: ../bin/dcar.c:1188 ../bin/dcar.c:5079
-msgid "Poor"
-msgstr "Mauvais"
-
-#: ../bin/dcar.c:1502 ../bin/dpricels.c:45
-#: ../../../../build/work/app/bin/bllnhlp.c:440
-msgid "Item"
-msgstr "Objet"
-
-#: ../bin/dcar.c:2174 ../wlib/gtklib/notice.c:96 ../wlib/mswlib/mswmisc.c:2097
-msgid "Information"
-msgstr "Information"
-
-#: ../bin/dcar.c:2174
-msgid "Customize"
-msgstr "Personnaliser"
-
-#: ../bin/dcar.c:2186
-msgid "Sequential"
-msgstr "Séquentiel"
-
-#: ../bin/dcar.c:2186
-msgid "Repeated"
-msgstr "Répété"
-
-#: ../bin/dcar.c:2197 ../bin/dcar.c:2199 ../bin/dcar.c:5408
-msgid "Prototype"
-msgstr "Prototype"
-
-#: ../bin/dcar.c:2205
-msgid "Part"
-msgstr "Référence"
-
-#: ../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 "Référence N°"
-
-#: ../bin/dcar.c:2209
-msgid "Loco?"
-msgstr "Loco ?"
-
-#: ../bin/dcar.c:2213 ../bin/dcar.c:4405
-msgid "Import"
-msgstr "Importation"
-
-#: ../bin/dcar.c:2220
-msgid "Mode"
-msgstr "Mode"
-
-#: ../bin/dcar.c:2224
-msgid "Road"
-msgstr "Compagnie ferroviaire"
-
-#: ../bin/dcar.c:2226
-msgid "Reporting Mark"
-msgstr "Sigle"
-
-#: ../bin/dcar.c:2228
-msgid "Number"
-msgstr "Nombre"
-
-#: ../bin/dcar.c:2232
-msgid "Car Length"
-msgstr "Longueur hors tampons"
-
-#: ../bin/dcar.c:2236
-msgid "Truck Centers"
-msgstr "Centre des bogies"
-
-#: ../bin/dcar.c:2240
-msgid "Coupler Mount"
-msgstr "Support d'attelage"
-
-#: ../bin/dcar.c:2242
-msgid "Coupled Length"
-msgstr "Longueur de couplage"
-
-#: ../bin/dcar.c:2244 ../bin/dcar.c:4252
-msgid "Coupler Length"
-msgstr "Longueur de l'attelage"
-
-#: ../bin/dcar.c:2252
-msgid "Purchase Price"
-msgstr "Prix d'achat"
-
-#: ../bin/dcar.c:2254 ../../../../build/work/app/bin/bllnhlp.c:236
-msgid "Current Price"
-msgstr "Prix actuel"
-
-#: ../bin/dcar.c:2256 ../bin/dcar.c:4369 ../bin/dcar.c:4374
-msgid "Condition"
-msgstr "Condition"
-
-#: ../bin/dcar.c:2258
-msgid "Purchase Date"
-msgstr "Date d'achat"
-
-#: ../bin/dcar.c:2260 ../bin/dcar.c:4374
-msgid "Service Date"
-msgstr "Date de service"
-
-#: ../bin/dcar.c:2262
-msgid "Quantity"
-msgstr "Quantité"
-
-#: ../bin/dcar.c:2264
-msgid "Numbers"
-msgstr "Nombres"
-
-#. 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 "Remarques"
-
-#: ../bin/dcar.c:2273
-msgid "Car Part"
-msgstr "Partie de véhicule"
-
-#: ../bin/dcar.c:2274 ../../../../build/work/app/bin/bllnhlp.c:210
-#: ../../../../build/work/app/bin/bllnhlp.c:211
-msgid "Car Prototype"
-msgstr "Prototype de véhicule"
-
-#: ../bin/dcar.c:2636 ../bin/dcar.c:2953
-msgid "Undecorated"
-msgstr "Sans étiquette"
-
-#: ../bin/dcar.c:2694 ../bin/dcar.c:2698 ../bin/paramfilelist.c:376
-msgid "Custom"
-msgstr "Personnalisé"
-
-#: ../bin/dcar.c:2863
-msgid "Undecorated "
-msgstr "Sans étiquette "
-
-#: ../bin/dcar.c:3085
-#, c-format
-msgid "New %s Scale Car"
-msgstr "Nouveau véhicule à l'échelle %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
-msgid "Add"
-msgstr "Ajouter"
-
-#: ../bin/dcar.c:3088
-#, c-format
-msgid "Update %s Scale Car"
-msgstr "Mettre à jour le véhicule à l'échelle %s"
-
-#: ../bin/dcar.c:3089 ../bin/dcar.c:3098 ../bin/dcar.c:3107
-#: ../bin/dcmpnd.c:173
-msgid "Update"
-msgstr "Mise à jour"
-
-#: ../bin/dcar.c:3094
-#, c-format
-msgid "New %s Scale Car Part"
-msgstr "Nouvelle fiche véhicule à l'échelle %s"
-
-#: ../bin/dcar.c:3097
-#, c-format
-msgid "Update %s Scale Car Part"
-msgstr "Mettre à jour %s la pièce de véhicule à l'échelle"
-
-#: ../bin/dcar.c:3103
-msgid "New Prototype"
-msgstr "Nouveau prototype"
-
-#: ../bin/dcar.c:3106
-msgid "Update Prototype"
-msgstr "Mettre à jour le prototype"
-
-#: ../bin/dcar.c:3778
-msgid "Enter a 8 digit numeric date"
-msgstr "Entrez une date numérique à 8 chiffres"
-
-#: ../bin/dcar.c:3781
-msgid "Enter a 8 digit date"
-msgstr "Entrez une date à 8 chiffres"
-
-#: ../bin/dcar.c:3783
-msgid "Enter a date between 19000101 and 21991231"
-msgstr "Entrez une date comprise entre 19000101 et 21991231"
-
-#: ../bin/dcar.c:3788
-msgid "Invalid month"
-msgstr "Mois invalide"
-
-#: ../bin/dcar.c:3790
-msgid "Invalid day"
-msgstr "Jour invalide"
-
-#: ../bin/dcar.c:3882
-msgid "Enter a Prototype name"
-msgstr "Entrez le nom du prototype"
-
-#: ../bin/dcar.c:3884
-msgid "Select or Enter a Manufacturer"
-msgstr "Sélectionnez ou entrez un fabricant"
-
-#: ../bin/dcar.c:3886
-msgid "Enter a Part Number"
-msgstr "Entrez un numéro d'article"
-
-#: ../bin/dcar.c:3888
-msgid "Enter the Car Length"
-msgstr "Entrez la longueur du véhicule"
-
-#: ../bin/dcar.c:3890
-msgid "Enter the Car Width"
-msgstr "Entrez la largeur du véhicule"
-
-#: ../bin/dcar.c:3892
-msgid "Enter the Truck Centers"
-msgstr "Entrez la distance entre les bogies"
-
-#: ../bin/dcar.c:3894
-#, fuzzy
-msgid "Truck Center Offset must be greater than 0 or 0"
-msgstr "L'écartement des bogies doit être inférieur à la longueur du véhicule"
-
-#: ../bin/dcar.c:3896
-msgid "Truck Centers must be less than Car Length"
-msgstr "L'écartement des bogies doit être inférieur à la longueur du véhicule"
-
-#: ../bin/dcar.c:3898
-#, fuzzy
-msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
-msgstr "L'écartement des bogies doit être inférieur à la longueur du véhicule"
-
-#: ../bin/dcar.c:3900
-msgid "Enter the Coupled Length or Coupler Length"
-msgstr "Entrez la longueur couplée ou la longueur de l'attelage"
-
-#: ../bin/dcar.c:3902
-msgid "Enter the Coupled Length"
-msgstr "Entrez la longueur couplé"
-
-#: ../bin/dcar.c:3904
-msgid "Enter a item Index"
-msgstr "Entrez un numéro d'identification"
-
-#: ../bin/dcar.c:3906
-msgid "Purchase Price is not valid"
-msgstr "Le prix d'achat n'est pas valide"
-
-#: ../bin/dcar.c:3908
-msgid "Current Price is not valid"
-msgstr "Le prix actuel n'est pas valide"
-
-#: ../bin/dcar.c:3910
-msgid "Purchase Date is not valid"
-msgstr "La date d'achat n'est pas valide"
-
-#: ../bin/dcar.c:3912
-msgid "Service Date is not valid"
-msgstr "La date de service n'est pas valide"
-
-#: ../bin/dcar.c:3915
-#, 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:4111
-#, c-format
-msgid "Added %ld new Cars"
-msgstr "Ajout de %ld nouveaux matériels roulants"
-
-#: ../bin/dcar.c:4113
-msgid "Added new Car"
-msgstr "Ajout d'un nouveau véhicule"
-
-#: ../bin/dcar.c:4116
-msgid "Updated Car"
-msgstr "Véhicule mis à jour"
-
-#: ../bin/dcar.c:4119
-msgid " and Part"
-msgstr " et une partie"
-
-#: ../bin/dcar.c:4146
-#, c-format
-msgid "%s Part: %s %s %s %s %s %s"
-msgstr "%s Partie : %s %s %s %s %s %s"
-
-#: ../bin/dcar.c:4146 ../bin/dcar.c:4163
-msgid "Added new"
-msgstr "Ajout d'un nouveau"
-
-#: ../bin/dcar.c:4146 ../bin/dcar.c:4163
-msgid "Updated"
-msgstr "Mis à jour"
-
-#: ../bin/dcar.c:4162
-#, c-format
-msgid "%s Prototype: %s%s."
-msgstr "%s Prototype: %s%s."
-
-#: ../bin/dcar.c:4164
-msgid ". Enter new values or press Close"
-msgstr ". Entrez de nouvelles valeurs ou appuyez sur Fermer"
-
-#: ../bin/dcar.c:4285
-msgid "New Car Part"
-msgstr "Nouvelle fiche de véhicule"
-
-#: ../bin/dcar.c:4368 ../bin/dcar.c:4373
-#: ../../../../build/work/app/bin/bllnhlp.c:410
-msgid "Roadname"
-msgstr "Compagnie ferroviaire"
-
-#: ../bin/dcar.c:4368
-msgid "Purc Price"
-msgstr "Prix d'achat"
-
-#: ../bin/dcar.c:4369 ../bin/dcar.c:4374
-msgid "Curr Price"
-msgstr "Prix act"
-
-#: ../bin/dcar.c:4369
-msgid "Purc Date"
-msgstr "Date d'achat"
-
-#: ../bin/dcar.c:4369
-msgid "Srvc Date"
-msgstr "Date de service"
-
-#: ../bin/dcar.c:4370
-msgid "Locat'n"
-msgstr "Lieu"
-
-#: ../bin/dcar.c:4373
-msgid "RepMarks"
-msgstr "Sigles"
-
-#: ../bin/dcar.c:4373
-msgid "Purch Price"
-msgstr "Prix d'achat"
-
-#: ../bin/dcar.c:4374
-msgid "Purch Date"
-msgstr "Date d'achat"
-
-#: ../bin/dcar.c:4391
-msgid "Sort By"
-msgstr "Trier par"
-
-#: ../bin/dcar.c:4399 ../bin/dcontmgm.c:99 ../bin/dcustmgm.c:71
-#: ../bin/dcustmgm.c:108
-msgid "Edit"
-msgstr "Editer"
-
-#: ../bin/dcar.c:4403 ../bin/dcontmgm.c:101 ../bin/dcustmgm.c:73
-#: ../bin/misc.c:2242
-msgid "Delete"
-msgstr "Effacer"
-
-#: ../bin/dcar.c:4407 ../bin/fileio.c:1517
-msgid "Export"
-msgstr "Exporter"
-
-#: ../bin/dcar.c:4409 ../../../../build/work/app/bin/bllnhlp.c:585
-msgid "List"
-msgstr "Liste"
-
-#: ../bin/dcar.c:4520 ../bin/dcar.c:5257 ../bin/misc.c:2618
-msgid "Car Inventory"
-msgstr "Inventaire des véhicules"
-
-#: ../bin/dcar.c:4640
-msgid "List Cars"
-msgstr "Liste de véhicules"
-
-#: ../bin/dcar.c:4764 ../bin/dcar.c:4929
-msgid "Import Cars"
-msgstr "Importer du véhicule"
-
-#: ../bin/dcar.c:4930 ../bin/dcar.c:5053
-msgid "Comma-Separated-Values (*.csv)|*.csv"
-msgstr "Valeurs séparées par des virgules (*.csv)|*.csv"
-
-#: ../bin/dcar.c:5000 ../bin/dcar.c:5052
-msgid "Export Cars"
-msgstr "Exporter le véhicule"
-
-#: ../bin/dcar.c:5086
-msgid "Layout"
-msgstr "Plan"
-
-#: ../bin/dcar.c:5088
-msgid "Shelf"
-msgstr "Étagère"
-
-#: ../bin/dcmpnd.c:77 ../bin/dlayer.c:499 ../bin/misc.c:613 ../bin/misc.c:645
-msgid "Load"
-msgstr "Charger"
-
-#: ../bin/dcmpnd.c:110
-msgid "Updating definitions, please wait"
-msgstr "Mise à jour des définitions, veuillez patienter"
-
-#: ../bin/dcmpnd.c:173
-msgid "Update Title"
-msgstr "Mettre à jour le titre"
-
-#: ../bin/dcmpnd.c:233
-#, 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:242
-#, 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:261
-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:327
-msgid "Skip"
-msgstr "Ignorer"
-
-#: ../bin/dcmpnd.c:359
-#, c-format
-msgid "%d Track(s) refreshed"
-msgstr "%d Voie(s) revues"
-
-#: ../bin/dcmpnd.c:399
-msgid "Refresh Turnout/Structure"
-msgstr "Actualiser les aiguillages/les bâtiments"
-
-#: ../bin/dcmpnd.c:401
-msgid "Choose a Turnout/Structure to replace:"
-msgstr "Choisissez un aiguillage/bâtiment à remplacer :"
-
-#. 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 "Aiguillages"
-
-#: ../bin/dcmpnd.c:411
-msgid "Structures"
-msgstr "Structures"
-
-#: ../bin/dcmpnd.c:440
-msgid "Choose another Turnout/Structure to replace:"
-msgstr "Choisissez un autre aiguillage/bâtiment à remplacer :"
-
-#: ../bin/dcmpnd.c:542
-msgid "Rename Object"
-msgstr "Renommer un objet"
-
-#: ../bin/dcontmgm.c:92
-msgid "Tracks"
-msgstr "Voies"
-
-#: ../bin/dcontmgm.c:173
-#, 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:176
-msgid "Control Elements"
-msgstr "Éléments de contrôle"
-
-#: ../bin/dcontmgm.c:299
-msgid "Manage Layout Control Elements"
-msgstr "Gérer les contrôles du plan"
-
-#: ../bin/dcustmgm.c:67
-msgid "Create a new "
-msgstr "Créer un nouveau "
-
-#: ../bin/dcustmgm.c:69
-msgid "Go"
-msgstr "Go"
-
-#: ../bin/dcustmgm.c:75
-msgid "Move To"
-msgstr "Déplacer vers"
-
-#: ../bin/dcustmgm.c:108
-msgid "Rename"
-msgstr "Renommer"
-
-#: ../bin/dcustmgm.c:189
-msgid "Label"
-msgstr "Étiquette"
-
-#: ../bin/dcustmgm.c:227
-msgid "Contents Label"
-msgstr "Contenu de l'étiquette"
-
-#: ../bin/dcustmgm.c:283
-msgid "Move To XTP"
-msgstr "Déplacer vers le fichier de paramètres"
-
-#: ../bin/dcustmgm.c:284
-msgid "Parameter File (*.xtp)|*.xtp"
-msgstr "Fichier de Paramètres (*.xtp)|*.xtp"
-
-#: ../bin/dcustmgm.c:395
-msgid "Manage custom designed parts"
-msgstr "Gérer les matériels prototypes"
-
-#: ../bin/dease.c:67
-msgid "Sharp"
-msgstr "Etroit"
-
-#: ../bin/dease.c:67
-msgid "Broad"
-msgstr "Large"
-
-#: ../bin/dease.c:67
-msgid "Cornu"
-msgstr "Cornu"
-
-#: ../bin/dease.c:74
-msgid "Value"
-msgstr "Valeur"
-
-#: ../bin/dease.c:75 ../bin/tease.c:525
-msgid "R"
-msgstr "R"
-
-#: ../bin/dease.c:77 ../bin/tease.c:526
-msgid "L"
-msgstr "L"
-
-#: ../bin/dease.c:242
-msgid "Easement"
-msgstr "Courbe de transition (Easement)"
-
-#: ../bin/denum.c:49
-msgid "Prices"
-msgstr "Prix"
-
-#: ../bin/denum.c:54
-msgid "Save As ..."
-msgstr "Sauver sous ..."
-
-#: ../bin/denum.c:134 ../bin/denum.c:189 ../bin/denum.c:224
-msgid "Each"
-msgstr "L'unité"
-
-#: ../bin/denum.c:148 ../bin/denum.c:149
-msgid "Parts List"
-msgstr "Nomenclature"
-
-#: ../bin/denum.c:154
-#, c-format
-msgid ""
-"%s Parts List\n"
-"\n"
-msgstr ""
-"%s Nomenclature\n"
-"\n"
-
-#: ../bin/denum.c:189 ../bin/denum.c:226 ../bin/denum.c:235
-msgid "Extended"
-msgstr "L'ensemble"
-
-#: ../bin/denum.c:235 ../bin/denum.c:238
-msgid "Total"
-msgstr "Total"
-
-#: ../bin/dlayer.c:487
-msgid "Use Color"
-msgstr "Utiliser la couleur"
-
-#: ../bin/dlayer.c:489
-msgid "Visible"
-msgstr "Visible"
-
-#: ../bin/dlayer.c:491
-msgid "Frozen"
-msgstr "Gelé"
-
-#: ../bin/dlayer.c:493
-msgid "On Map"
-msgstr "Sur la carte"
-
-#: ../bin/dlayer.c:495
-msgid "Module"
-msgstr "Module"
-
-#: ../bin/dlayer.c:498
-msgid "Personal Preferences"
-msgstr "Préférences personnelles"
-
-#: ../bin/dlayer.c:500 ../bin/macro.c:1419
-msgid "Save"
-msgstr "Sauver"
-
-#: ../bin/dlayer.c:501
-msgid "Defaults"
-msgstr "Defauts"
-
-#: ../bin/dlayer.c:502
-msgid "Number of Layer Buttons"
-msgstr "Nombre de boutons de calques"
-
-#: ../bin/dlayer.c:519 ../bin/dlayer.c:987 ../bin/dlayer.c:1000
-#: ../bin/dlayer.c:1051
-msgid "Main"
-msgstr "Principal"
-
-#: ../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 "Afficher/masquer le calque"
-
-#: ../bin/dlayer.c:1124
-msgid "Layers"
-msgstr "Calques"
-
-#: ../bin/doption.c:95
-msgid "Turning off AutoSave"
-msgstr ""
-
-#: ../bin/doption.c:104
-#, fuzzy
-msgid "Turning on CheckPointing"
-msgstr "Écrire une sauvegarde"
-
-#: ../bin/doption.c:130
-msgid "Auto Pan"
-msgstr "Panoramique auto"
-
-#: ../bin/doption.c:132
-msgid "All"
-msgstr "Tout"
-
-#: ../bin/doption.c:133
-msgid "Thick"
-msgstr "Épais"
-
-#: ../bin/doption.c:133
-msgid "Exception"
-msgstr "Exception"
-
-#: ../bin/doption.c:134
-msgid "Outline"
-msgstr "Contour"
-
-#: ../bin/doption.c:135
-msgid "Off"
-msgstr "De"
-
-#: ../bin/doption.c:135
-msgid "On"
-msgstr "On"
-
-#: ../bin/doption.c:136
-msgid "Track Descriptions"
-msgstr "Descriptions de voies"
-
-#: ../bin/doption.c:136
-msgid "Lengths"
-msgstr "Longueurs"
-
-#: ../bin/doption.c:136
-msgid "EndPt Elevations"
-msgstr "Elévations des bouts de voies"
-
-#: ../bin/doption.c:136
-msgid "Track Elevations"
-msgstr "Elévations de voies"
-
-#: ../bin/doption.c:136
-msgid "Cars"
-msgstr "Véhicules"
-
-#: ../bin/doption.c:137 ../bin/doption.c:138
-msgid "Descr"
-msgstr "Descr"
-
-#: ../bin/doption.c:138
-msgid "Manuf"
-msgstr "Fabric"
-
-#: ../bin/doption.c:139 ../bin/doption.c:140
-msgid "Object"
-msgstr "Objet"
-
-#: ../bin/doption.c:141
-msgid "Live Map"
-msgstr "Carte en direct"
-
-#: ../bin/doption.c:142
-msgid "Hide Trains On Hidden Track"
-msgstr "Masquer les trains sur voie cachée"
-
-#: ../bin/doption.c:143
-msgid "Constrain Drawing Area to Room boundaries"
-msgstr ""
-
-#: ../bin/doption.c:150
-msgid "Color Track"
-msgstr "Couleur de la voie"
-
-#: ../bin/doption.c:151
-msgid "Color Draw"
-msgstr "Dessin en couleur"
-
-#: ../bin/doption.c:152
-msgid "Draw Tunnel"
-msgstr "Dessin des tunnels"
-
-#: ../bin/doption.c:153
-msgid "Draw EndPts"
-msgstr "Dessin des bouts de voie"
-
-#: ../bin/doption.c:154
-msgid "Draw Unconnected EndPts"
-msgstr "Dessin des voies non connectées"
-
-#: ../bin/doption.c:155
-msgid "Draw Ties"
-msgstr "Dessin des traverses"
-
-#: ../bin/doption.c:156
-msgid "Draw Centers"
-msgstr "Dessin des centres"
-
-#: ../bin/doption.c:157
-msgid "Two Rail Scale"
-msgstr "Échelle pour 2 voies"
-
-#: ../bin/doption.c:158
-msgid "Map Scale"
-msgstr "Échelle de la carte de navigation"
-
-#: ../bin/doption.c:162
-msgid "Label Enable"
-msgstr "Étiquettes activées"
-
-#: ../bin/doption.c:163
-msgid "Label Scale"
-msgstr "Échelle d'étiquette"
-
-#: ../bin/doption.c:164
-msgid "Label Font Size"
-msgstr "Taille de police des étiquettes"
-
-#: ../bin/doption.c:165
-msgid "Hot Bar Labels"
-msgstr "Etiquettes barre rapide"
-
-#: ../bin/doption.c:166
-msgid "Layout Labels"
-msgstr "Etiquettes de calques"
-
-#: ../bin/doption.c:167
-msgid "List Labels"
-msgstr "Liste des étiquettes"
-
-#: ../bin/doption.c:170
-msgid "Car Labels"
-msgstr "Etiquettes des véhicules"
-
-#: ../bin/doption.c:171
-msgid "Train Update Delay"
-msgstr "Délai de mise à jour du train"
-
-#: ../bin/doption.c:199
-msgid "Display Options"
-msgstr "Options d'affichage"
-
-#: ../bin/doption.c:200
-msgid "Proto"
-msgstr "Proto"
-
-#: ../bin/doption.c:201
-msgid "Proto/Manuf"
-msgstr "Proto/Fabric"
-
-#: ../bin/doption.c:202
-msgid "Proto/Manuf/Part Number"
-msgstr "Proto/Fabric/N° de référence"
-
-#: ../bin/doption.c:203
-msgid "Proto/Manuf/Partno/Item"
-msgstr "Proto/Fabric/N° de référence/Objet"
-
-#: ../bin/doption.c:204
-msgid "Manuf/Proto"
-msgstr "Fabricant/Proto"
-
-#: ../bin/doption.c:205
-msgid "Manuf/Proto/Part Number"
-msgstr "Fabricant/Proto/N° de référence"
-
-#: ../bin/doption.c:206
-msgid "Manuf/Proto/Partno/Item"
-msgstr "Fabricant/Proto/N° de référence/Objet"
-
-#: ../bin/doption.c:236
-msgid "Single item selected, +Ctrl Add to selection"
-msgstr "Élément unique sélectionné, +Ctrl Ajouter à la sélection"
-
-#: ../bin/doption.c:236
-msgid "Add to selection, +Ctrl Single item selected"
-msgstr "Ajouter à la sélection, +Ctrl Élément unique sélectionné"
-
-#: ../bin/doption.c:237
-msgid "Deselect all on select nothing"
-msgstr "Désélectionner tout / ne rien sélectionner"
-
-#: ../bin/doption.c:242
-msgid "Normal: Command List, Shift: Command Options"
-msgstr "Normal : Liste de cde, Maj. : Options de cde"
-
-#: ../bin/doption.c:242
-msgid "Normal: Command Options, Shift: Command List"
-msgstr "Normal : Options de cde, Maj.: Liste de cde"
-
-#: ../bin/doption.c:245
-msgid "Default Command"
-msgstr "Commande par défaut"
-
-#: ../bin/doption.c:247
-msgid "Hide Selection Window"
-msgstr "Masquer la fenêtre de sélection"
-
-#: ../bin/doption.c:249
-msgid "Right Click"
-msgstr "Clic droit"
-
-#: ../bin/doption.c:250
-msgid "Select Mode"
-msgstr "Mode sélection"
-
-#: ../bin/doption.c:275
-msgid "Command Options"
-msgstr "Options de commande"
-
-#: ../bin/doption.c:298
-msgid "English"
-msgstr "Anglais"
-
-#: ../bin/doption.c:298
-msgid "Metric"
-msgstr "Métrique"
-
-#: ../bin/doption.c:299
-msgid "Polar"
-msgstr "Polaire"
-
-#: ../bin/doption.c:299
-msgid "Cartesian"
-msgstr "Cartésien"
-
-#: ../bin/doption.c:300
-msgid "Balloon Help"
-msgstr "Bulle d'aide"
-
-#: ../bin/doption.c:301
-msgid "Show FlexTrack in HotBar"
-msgstr ""
-
-#: ../bin/doption.c:302
-msgid "Load Last Layout"
-msgstr "Charger le dernier plan"
-
-#: ../bin/doption.c:302
-msgid "Start New Layout"
-msgstr "Commencer un nouveau plan"
-
-#: ../bin/doption.c:305
-msgid "Angles"
-msgstr "Angles"
-
-#: ../bin/doption.c:306
-msgid "Units"
-msgstr "Unités"
-
-#: ../bin/doption.c:308
-msgid "Length Format"
-msgstr "Format de longueur"
-
-#: ../bin/doption.c:309
-msgid "Min Track Length"
-msgstr "Longueur de voie min"
-
-#: ../bin/doption.c:310
-msgid "Connection Distance"
-msgstr "Distance de connexion"
-
-#: ../bin/doption.c:311
-msgid "Connection Angle"
-msgstr "Angle de connexion"
-
-#: ../bin/doption.c:312
-msgid "Turntable Angle"
-msgstr "Angle de pont tournant"
-
-#: ../bin/doption.c:313
-msgid "Max Coupling Speed"
-msgstr "Vitesse maximale de couplage"
-
-#: ../bin/doption.c:316
-msgid "Drag Distance"
-msgstr "Distance du glissé du curseur"
-
-#: ../bin/doption.c:317
-msgid "Drag Timeout"
-msgstr "Ajuster le délai d'attente"
-
-#: ../bin/doption.c:318
-msgid "Min Grid Spacing"
-msgstr "Pas min. de la grille"
-
-#: ../bin/doption.c:320
-#, fuzzy
-msgid "Check Point Frequency"
-msgstr "Sauvegarde"
-
-#: ../bin/doption.c:322
-msgid "Autosave Checkpoint Frequency"
-msgstr ""
-
-#: ../bin/doption.c:323
-msgid "On Program Startup"
-msgstr "Au démarrage du programme"
-
-#: ../bin/doption.c:333 ../bin/doption.c:337 ../bin/doption.c:354
-msgid "999.999"
-msgstr "999.999"
-
-#: ../bin/doption.c:334
-msgid "999.999999"
-msgstr "999.999999"
-
-#: ../bin/doption.c:335
-msgid "999.99999"
-msgstr "999.99999"
-
-#: ../bin/doption.c:336
-msgid "999.9999"
-msgstr "999.9999"
-
-#: ../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.999mm"
-
-#: ../bin/doption.c:358
-msgid "999.99mm"
-msgstr "999.99mm"
-
-#: ../bin/doption.c:359
-msgid "999.9mm"
-msgstr "999.9mm"
-
-#: ../bin/doption.c:360
-msgid "999.999cm"
-msgstr "999.999cm"
-
-#: ../bin/doption.c:361
-msgid "999.99cm"
-msgstr "999.99cm"
-
-#: ../bin/doption.c:362
-msgid "999.9cm"
-msgstr "999.9cm"
-
-#: ../bin/doption.c:363
-msgid "999.999m"
-msgstr "999.999m"
-
-#: ../bin/doption.c:364
-msgid "999.99m"
-msgstr "999.99m"
-
-#: ../bin/doption.c:365
-msgid "999.9m"
-msgstr "999.9m"
-
-#: ../bin/doption.c:492
-msgid "Preferences"
-msgstr "Préférences"
-
-#: ../bin/doption.c:531
-msgid "Marker"
-msgstr "Marqueur"
-
-#: ../bin/doption.c:532
-msgid "Border"
-msgstr "Bordure"
-
-#: ../bin/doption.c:533
-msgid "Primary Axis"
-msgstr "Axe primaire"
-
-#: ../bin/doption.c:534
-msgid "Secondary Axis"
-msgstr "Axe secondaire"
-
-#: ../bin/doption.c:535
-msgid "Normal Track"
-msgstr "Voie normale"
-
-#: ../bin/doption.c:536
-msgid "Selected Track"
-msgstr "Voie sélectionnée"
-
-#: ../bin/doption.c:537
-msgid "Profile Path"
-msgstr "Profil de voie"
-
-#: ../bin/doption.c:538
-msgid "Exception Track"
-msgstr "Voie non conforme"
-
-#: ../bin/doption.c:539
-msgid "Track Ties"
-msgstr "Traverses de voies"
-
-#: ../bin/dpricels.c:45
-msgid "Price"
-msgstr "Prix"
-
-#: ../bin/dpricels.c:59
-msgid "Flex Track"
-msgstr "Voie flexible"
-
-#: ../bin/dpricels.c:60
-msgid "costs"
-msgstr "coûts"
-
-#: ../bin/dpricels.c:154
-msgid "Price List"
-msgstr "Liste de prix"
-
-#: ../bin/dprmfile.c:73 ../bin/paramfilesearch_ui.c:60
-msgid "Show File Names"
-msgstr "Montrer les noms de fichiers"
-
-#: ../bin/dprmfile.c:82 ../bin/paramfilesearch_ui.c:76
-msgid "Select all"
-msgstr "Tt sélectionner"
-
-#: ../bin/dprmfile.c:84
-msgid "Favorite"
-msgstr "Préféré"
-
-#: ../bin/dprmfile.c:87
-msgid "Search Library"
-msgstr ""
-
-#: ../bin/dprmfile.c:88 ../bin/layout.c:471
-msgid "Browse ..."
-msgstr "Parcourir ..."
-
-#: ../bin/dprmfile.c:331
-#, fuzzy, c-format
-msgid "%d parameter files reloaded."
-msgstr "Lecture des fichiers de paramètres %d ."
-
-#: ../bin/dprmfile.c:333
-#, fuzzy
-msgid "One parameter file reloaded."
-msgstr "Trouver un fichier de paramètres à charger"
-
-#: ../bin/dprmfile.c:434
-msgid "Parameter Files"
-msgstr "Fichiers de paramètres"
-
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
-msgid "Load Parameters"
-msgstr "Chargers des paramètres d'objets"
-
-#: ../bin/dprmfile.c:437 ../bin/paramfilesearch_ui.c:405
-msgid "Parameter files (*.xtp)|*.xtp"
-msgstr "Fichier de paramètres (*.xtp)|*.xtp"
-
-#: ../bin/draw.c:2134
-msgid "Macro Zoom Mode"
-msgstr "Mode zoom macro"
-
-#: ../bin/draw.c:2141
-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:2145
-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:2149
-#, 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"
-
-#: ../bin/draw.c:2187
-msgid "At Maximum Zoom Out"
-msgstr "Au zoom maximum"
-
-#: ../bin/draw.c:2192
-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"
-
-#: ../bin/draw.c:2196
-#, 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:2893
-msgid "Map"
-msgstr "Carte de navigation"
-
-#: ../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 ""
-"Faites glisser à gauche pour recadrer, Ctrl + glisser vers la gauche pour "
-"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:2948
-msgid "Pan Mode - drag point to new position"
-msgstr ""
-"Sélectionner une section - faites glisser le point vers la nouvelle position"
-
-#: ../bin/draw.c:2955
-msgid "Zoom Mode - drag area to zoom"
-msgstr "Mode Zoom - faites glisser la zone pour zoomer"
-
-#: ../bin/draw.c:2981
-msgid "Can't move any further in that direction"
-msgstr "Je ne peux plus avancer dans cette direction"
-
-#: ../bin/draw.c:2983
-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: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 ""
-"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:3102
-msgid "Pan/Zoom"
-msgstr "Pan./Zoom"
-
-#: ../bin/draw.c:3113
-msgid "Zoom to 1:1 - '1'"
-msgstr "Zoom sur 1:1 - '1'"
-
-#: ../bin/draw.c:3114
-msgid "Zoom to 1:2 - '2'"
-msgstr "Zoom sur 1:2 - '2'"
-
-#: ../bin/draw.c:3115
-msgid "Zoom to 1:3 - '3'"
-msgstr "Zoom sur 1:3 - '3'"
-
-#: ../bin/draw.c:3116
-msgid "Zoom to 1:4 - '4'"
-msgstr "Zoom sur 1:4 - '4'"
-
-#: ../bin/draw.c:3117
-msgid "Zoom to 1:5 - '5'"
-msgstr "Zoom sur 1:5 - '5'"
-
-#: ../bin/draw.c:3118
-msgid "Zoom to 1:6 - '6'"
-msgstr "Zoom sur 1:6 - '6'"
-
-#: ../bin/draw.c:3119
-msgid "Zoom to 1:7 - '7'"
-msgstr "Zoom sur 1:7 - '7'"
-
-#: ../bin/draw.c:3120
-msgid "Zoom to 1:8 - '8'"
-msgstr "Zoom sur 1:8 - '8'"
-
-#: ../bin/draw.c:3121
-msgid "Zoom to 1:9 - '9'"
-msgstr "Zoom sur 1:9 - '9'"
-
-#: ../bin/draw.c:3125
-msgid "Pan center here - 'c'"
-msgstr "Centre du panoramique ici - 'c'"
-
-#: ../bin/drawgeom.c:76 ../bin/drawgeom.c:91
-msgid "Create Lines"
-msgstr "Créer des lignes"
-
-#: ../bin/drawgeom.c:291
-msgid "+Shift to lock to nearby objects"
-msgstr "+Maj pour verrouiller les objets à proximité"
-
-#: ../bin/drawgeom.c:293
-msgid "+Shift to not lock to nearby objects"
-msgstr "+Maj pour ne pas verrouiller les objets à proximité"
-
-#: ../bin/drawgeom.c:393
-msgid "Drag to next point, +Shift to lock to object, +Ctrl to lock to 90deg"
-msgstr ""
-"Faites glisser vers le point suivant, +Maj pour verrouiller sur l'objet, "
-"+Ctrl pour verrouiller à 90 degrés"
-
-#: ../bin/drawgeom.c:403
-msgid "Drag to place next end point"
-msgstr "Faites glisser pour placer la prochaine extrémité"
-
-#: ../bin/drawgeom.c:434
-msgid "Drag to set radius"
-msgstr "Faites glisser pour définir le rayon"
-
-#: ../bin/drawgeom.c:447
-msgid "Drag set box size"
-msgstr "Faites glisser pour définir la taille du rectangle"
-
-#: ../bin/drawgeom.c:488
-msgid "+Shift - lock to close object, +Ctrl - lock to 90 deg"
-msgstr "+Maj - verrouille pour fermer l'objet, +Ctrl - verrouille à 90 degrés"
-
-#: ../bin/drawgeom.c:536 ../bin/drawgeom.c:592
-#, c-format
-msgid "Length = %s, Angle = %0.2f"
-msgstr "Longueur = %s, Angle = %0.2f"
-
-#: ../bin/drawgeom.c:613
-#, c-format
-msgid "Straight Line: Length=%s Angle=%0.3f"
-msgstr "Ligne droite : Longueur=%s Angle=%0.3f"
-
-#: ../bin/drawgeom.c:635
-#, 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:659
-#, c-format
-msgid "Radius = %s"
-msgstr "Rayon = %s"
-
-#: ../bin/drawgeom.c:669
-#, c-format
-msgid "Width = %s, Height = %s"
-msgstr "Largeur = %s, Hauteur = %s"
-
-#: ../bin/drawgeom.c:1132
-msgid "Select points or use context menu"
-msgstr "Sélectionnez des points ou utilisez le menu contextuel"
-
-#: ../bin/drawgeom.c:1387
-#, c-format
-msgid "Length = %s, Last angle = %0.2f"
-msgstr "Longueur = %s, Dernier angle = %0.2f"
-
-#: ../bin/drawgeom.c:1538
-msgid "Point Deleted"
-msgstr "Point supprimé"
-
-#: ../bin/drawgeom.c:1934
-msgid "Not close to end of line"
-msgstr "Aucun point de fin à proximité"
-
-#: ../bin/drawgeom.c:1987
-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:2035 ../bin/drawgeom.c:2257
-msgid "Drag to Move Corner Point"
-msgstr "Faites glisser pour déplacer le sommet"
-
-#: ../bin/drawgeom.c:2042
-msgid "Drag to Move Edge "
-msgstr "Faites glisser pour déplacer le bord "
-
-#: ../bin/drawgeom.c:2104
-#, c-format
-msgid "Length = %0.3f Angle = %0.3f"
-msgstr "Longueur = %0.3f angle = %0.3f"
-
-#: ../bin/drawgeom.c:2252
-msgid "Drag to Move Edge"
-msgstr "Faites glisser pour déplacer le bord"
-
-#: ../bin/dxfoutput.c:232
-msgid "Export to DXF"
-msgstr "Exporter en DXF"
-
-#: ../bin/fileio.c:240
-msgid ""
-"\n"
-"Do you want to continue?"
-msgstr ""
-"\n"
-"Voulez-vous continuer?"
-
-#: ../bin/fileio.c:607
-#, c-format
-msgid "putTitle: title too long: %s"
-msgstr "poser le titre : titre trop long : %s"
-
-#: ../bin/fileio.c:637
-msgid "Unnamed Trackplan"
-msgstr "Plan de voie sans nom"
-
-#: ../bin/fileio.c:638
-msgid " (R/O)"
-msgstr " (R/O)"
-
-#: ../bin/fileio.c:658 ../bin/fileio.c:1277
-msgid "Check Pointing"
-msgstr "Écrire une sauvegarde"
-
-#: ../bin/fileio.c:788
-msgid "Unknown layout file object - skip until next good object?"
-msgstr ""
-
-#: ../bin/fileio.c:1025
-msgid "Track"
-msgstr "Voie"
-
-#: ../bin/fileio.c:1211
-msgid "Save Tracks"
-msgstr "Sauver le réseau"
-
-#: ../bin/fileio.c:1227
-msgid "Save Tracks As"
-msgstr "Enregistrer les voies sous"
-
-#: ../bin/fileio.c:1238
-msgid "Open Tracks"
-msgstr "Ouvrir un réseau"
-
-#: ../bin/fileio.c:1252
-msgid "Example Tracks"
-msgstr "Exemples de voies"
-
-#: ../bin/fileio.c:1460
-#, c-format
-msgid "Module - %s"
-msgstr "Module - %s"
-
-#: ../bin/fileio.c:1465 ../bin/fileio.c:1486
-msgid "Import Tracks"
-msgstr "Importer des voies"
-
-#: ../bin/fileio.c:1548
-msgid "Export Tracks"
-msgstr "Exporter les voies"
-
-#: ../bin/fileio.c:1567
-msgid "Clipboard"
-msgstr "Presse-papiers"
-
-#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:42
-msgid "Position X"
-msgstr "Position X"
-
-#: ../bin/filenoteui.c:64 ../bin/linknoteui.c:52 ../bin/textnoteui.c:44
-msgid "Position Y"
-msgstr "Position Y"
-
-#: ../bin/filenoteui.c:68 ../bin/linknoteui.c:56
-msgid "Title"
-msgstr "Titre"
-
-#: ../bin/filenoteui.c:70 ../bin/trknote.c:62
-#: ../../../../build/work/app/bin/bllnhlp.c:85
-msgid "Document"
-msgstr "Document"
-
-#: ../bin/filenoteui.c:72
-msgid "Select..."
-msgstr "Sélectionner ..."
-
-#: ../bin/filenoteui.c:74 ../bin/linknoteui.c:60
-msgid "Open..."
-msgstr "Ouvert ..."
-
-#: ../bin/filenoteui.c:136
-msgid "Add Document"
-msgstr "Ajouter un document"
-
-#: ../bin/filenoteui.c:158
-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:297
-#, c-format
-msgid "Document(%d) Layer=%d %-.80s [%s]"
-msgstr "Document(%d) Calque=%d %-.80s [%s]"
-
-#: ../bin/filenoteui.c:309
-msgid "Update document"
-msgstr "Mettre à jour le document"
-
-#: ../bin/filenoteui.c:323
-msgid "Describe the file"
-msgstr "Décrivez le fichier"
-
-#: ../bin/filenoteui.c:329
-msgid "Attach document"
-msgstr "Joindre un document"
-
-#: ../bin/i18n.c:66
-#, 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"
-
-#: ../bin/layout.c:373
-#, c-format
-msgid "Unable to load Image File - %s"
-msgstr "Impossible de charger le fichier image -%s"
-
-#: ../bin/layout.c:436
-msgid "Load Background"
-msgstr "Charger l'arrière-plan"
-
-#: ../bin/layout.c:458
-msgid "Room Width"
-msgstr "Largeur du plan"
-
-#: ../bin/layout.c:459
-msgid " Height"
-msgstr " Hauteur"
-
-#: ../bin/layout.c:460
-msgid "Layout Title"
-msgstr "Titre du plan"
-
-#: ../bin/layout.c:461
-msgid "Subtitle"
-msgstr "Sous-titre"
-
-#: ../bin/layout.c:465
-msgid " Gauge"
-msgstr " Ecartement"
-
-#: ../bin/layout.c:467
-msgid "Min Track Radius"
-msgstr "Rayon de voie min"
-
-#: ../bin/layout.c:468
-msgid " Max Track Grade (%)"
-msgstr " Pente maximale de la voie (%)"
-
-#: ../bin/layout.c:470
-msgid "Background File Path"
-msgstr "Chemin d'accès au fichier d'arrière-plan"
-
-#: ../bin/layout.c:474
-msgid "Background PosX,Y"
-msgstr "Arrière-plan, PosX,Y"
-
-#: ../bin/layout.c:478
-msgid "Background Size"
-msgstr "Taille de l'arrière-plan"
-
-#: ../bin/layout.c:480
-msgid "Background Screen %"
-msgstr "Niveau de noir de l'arrière-plan %"
-
-#: ../bin/layout.c:482
-msgid "Background Angle"
-msgstr "Angle de l'arrière-plan"
-
-#: ../bin/layout.c:560
-msgid "Layout Options"
-msgstr "Options du plan"
-
-#: ../bin/linknoteui.c:58
-msgid "URL"
-msgstr "URL"
-
-#: ../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 ""
-"L'URL saisie est trop longue. La longueur maximale autorisée est %d. "
-"Veuillez modifier la valeur entrée."
-
-#: ../bin/linknoteui.c:110
-msgid "Re-edit"
-msgstr "Modifier à nouveau"
-
-#: ../bin/linknoteui.c:241
-msgid "Update link"
-msgstr "Mise à jour le lien"
-
-#: ../bin/linknoteui.c:259
-msgid "Create link"
-msgstr "Créer un lien"
-
-#: ../bin/macro.c:95
-msgid "Message"
-msgstr "Message"
-
-#: ../bin/macro.c:179
-msgid "Recording"
-msgstr "Enregistrement"
-
-#: ../bin/macro.c:214
-msgid "End of Playback. Hit Step to exit\n"
-msgstr "Fin de la lecture. Appuyez sur Step pour quitter\n"
-
-#: ../bin/macro.c:278
-msgid "Record"
-msgstr "Enregistrer"
-
-#: ../bin/macro.c:676
-msgid "Step"
-msgstr "Pas à pas"
-
-#: ../bin/macro.c:679 ../bin/macro.c:1542
-msgid "Next"
-msgstr "Suivant"
-
-#: ../bin/macro.c:682 ../bin/misc.c:699 ../bin/track.c:1116
-msgid "Quit"
-msgstr "Quitter"
-
-#: ../bin/macro.c:685 ../../../../build/work/app/bin/bllnhlp.c:540
-msgid "Speed"
-msgstr "Vitesse"
-
-#: ../bin/macro.c:832 ../bin/macro.c:877
-msgid "Regression"
-msgstr "Régression"
-
-#: ../bin/macro.c:1043 ../bin/macro.c:1401
-msgid "Demo"
-msgstr "Demo"
-
-#: ../bin/macro.c:1221
-#, c-format
-msgid "Elapsed time %lu\n"
-msgstr "Temps écoulé %lu\n"
-
-#: ../bin/macro.c:1322
-msgid "Playback"
-msgstr "Lecture"
-
-#: ../bin/macro.c:1404
-msgid "Slowest"
-msgstr "Le plus lent"
-
-#: ../bin/macro.c:1405
-msgid "Slow"
-msgstr "Lent"
-
-#: ../bin/macro.c:1407
-msgid "Fast"
-msgstr "Rapide"
-
-#: ../bin/macro.c:1408
-msgid "Faster"
-msgstr "Plus rapide"
-
-#: ../bin/macro.c:1409
-msgid "Fastest"
-msgstr "Le plus rapide"
-
-#: ../bin/macro.c:1527
-msgid "Can not find PARAMETER playback proc"
-msgstr "Vous ne trouvez pas la procédure de lecture PARAMETER"
-
-#: ../bin/misc.c:169
-msgid "No Messages"
-msgstr "Pas de message"
-
-#: ../bin/misc.c:431 ../bin/misc.c:434
-msgid "ABORT"
-msgstr "ANNULER"
-
-#: ../bin/misc.c:433
-msgid ""
-"\n"
-"Do you want to save your layout?"
-msgstr ""
-"\n"
-"Voulez-vous enregistrer votre plan ?"
-
-#: ../bin/misc.c:480
-#, c-format
-msgid "No help for %s"
-msgstr "Aucune aide pour %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 ""
-"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:594 ../bin/misc.c:2291
-msgid "&Save"
-msgstr "&Sauver"
-
-#: ../bin/misc.c:594 ../bin/misc.c:629
-msgid "&Cancel"
-msgstr "&Annuler"
-
-#: ../bin/misc.c:594
-msgid "&Don't Save"
-msgstr "&Ne pas enregistrer"
-
-#: ../bin/misc.c:618
-msgid "examples"
-msgstr "exemple"
-
-#: ../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 ""
-"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:629
-msgid "&Revert"
-msgstr "&Revenir"
-
-#: ../bin/misc.c:851
-msgid "XTrackCAD Font"
-msgstr "XTrackCAD Font"
-
-#: ../bin/misc.c:912
-#, c-format
-msgid "No balloon help for %s\n"
-msgstr "Aucune bulle d'aide pour %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 "Pas d'aide"
-
-#: ../bin/misc.c:1022
-#, fuzzy
-msgid "File AutoSaved"
-msgstr "Boutons de fichier"
-
-#: ../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 ""
-"L'annulation de la commande en cours annulera les \n"
-"modifications en cours. Voulez-vous mettre à jour?"
-
-#: ../bin/misc.c:1806
-msgid "Sticky Commands"
-msgstr "Commandes maintenues"
-
-#: ../bin/misc.c:1819
-msgid "File Buttons"
-msgstr "Boutons de fichier"
-
-#: ../bin/misc.c:1819
-msgid "Import/Export Buttons"
-msgstr "Boutons Import/Export"
-
-#: ../bin/misc.c:1819
-msgid "Zoom Buttons"
-msgstr "Boutons de zoom"
-
-#: ../bin/misc.c:1820
-msgid "Undo Buttons"
-msgstr "Annuler les boutons"
-
-#: ../bin/misc.c:1820
-msgid "Easement Button"
-msgstr "Bouton Aide de courbes de transition"
-
-#: ../bin/misc.c:1820
-msgid "SnapGrid Buttons"
-msgstr "Bouton Grille magnétique"
-
-#: ../bin/misc.c:1821
-msgid "Create Track Buttons"
-msgstr "Créer des boutons de voie"
-
-#: ../bin/misc.c:1821
-msgid "Layout Control Elements"
-msgstr "Éléments de contrôle du plan"
-
-#: ../bin/misc.c:1822
-msgid "Modify Track Buttons"
-msgstr "Modifier les boutons de voie"
-
-#: ../bin/misc.c:1822
-msgid "Properties/Select"
-msgstr "Propriétés/Sélectionner"
-
-#: ../bin/misc.c:1823
-msgid "Track Group Buttons"
-msgstr "Boutons de groupe de voies"
-
-#: ../bin/misc.c:1823
-msgid "Train Group Buttons"
-msgstr "Boutons d'exploitation des trains"
-
-#: ../bin/misc.c:1824
-msgid "Create Misc Buttons"
-msgstr "Créer divers boutons"
-
-#: ../bin/misc.c:1824
-msgid "Ruler Button"
-msgstr "Bouton Règle"
-
-#: ../bin/misc.c:1824
-msgid "Layer Buttons"
-msgstr "Boutons de calques"
-
-#: ../bin/misc.c:1825
-msgid "Hot Bar"
-msgstr "Barre rapide"
-
-#: ../bin/misc.c:1894 ../../../../build/work/app/bin/bllnhlp.c:80
-msgid "Change Elevations"
-msgstr "Modifier les élévations"
-
-#: ../bin/misc.c:1912
-msgid "Angle:"
-msgstr "Angle:"
-
-#: ../bin/misc.c:1919
-msgid "Move X:"
-msgstr "Déplacer X :"
-
-#: ../bin/misc.c:1920
-msgid "Move Y:"
-msgstr "Déplacer Y :"
-
-#: ../bin/misc.c:1967
-msgid "Enter Move ..."
-msgstr "Entrez le déplacement ..."
-
-#: ../bin/misc.c:1973
-msgid "180 "
-msgstr "180 "
-
-#: ../bin/misc.c:1974
-msgid "90 CW"
-msgstr "90 CW"
-
-#: ../bin/misc.c:1975
-msgid "45 CW"
-msgstr "45 CW"
-
-#: ../bin/misc.c:1976
-msgid "30 CW"
-msgstr "30 CW"
-
-#: ../bin/misc.c:1977
-msgid "15 CW"
-msgstr "15 CW"
-
-#: ../bin/misc.c:1978
-msgid "15 CCW"
-msgstr "15 CCW"
-
-#: ../bin/misc.c:1979
-msgid "30 CCW"
-msgstr "30 CCW"
-
-#: ../bin/misc.c:1980
-msgid "45 CCW"
-msgstr "45 CCW"
-
-#: ../bin/misc.c:1981
-msgid "90 CCW"
-msgstr "90 CCW"
-
-#: ../bin/misc.c:1982
-msgid "Enter Angle ..."
-msgstr "Entrez l'angle ..."
-
-#: ../bin/misc.c:2013
-msgid "Debug"
-msgstr "Debug"
-
-#: ../bin/misc.c:2144
-msgid "&File"
-msgstr "&Fichier"
-
-#: ../bin/misc.c:2145
-msgid "&Edit"
-msgstr "&Editer"
-
-#: ../bin/misc.c:2146
-msgid "&View"
-msgstr "&Affichage"
-
-#: ../bin/misc.c:2147
-msgid "&Add"
-msgstr "&Ajouter"
-
-#: ../bin/misc.c:2148
-msgid "&Change"
-msgstr "&Modifier"
-
-#: ../bin/misc.c:2149
-msgid "&Draw"
-msgstr "&Dessiner"
-
-#: ../bin/misc.c:2150
-msgid "&Manage"
-msgstr "&Gérer"
-
-#: ../bin/misc.c:2151
-msgid "&Options"
-msgstr "&Options"
-
-#: ../bin/misc.c:2152
-msgid "&Macro"
-msgstr "&Macro"
-
-#: ../bin/misc.c:2153
-msgid "&Window"
-msgstr "&Fenêtre"
-
-#: ../bin/misc.c:2154
-msgid "&Help"
-msgstr "&Aide"
-
-#: ../bin/misc.c:2190
-msgid "Context Commands"
-msgstr "Commandes contextuelles"
-
-#: ../bin/misc.c:2191
-msgid "Shift Context Commands"
-msgstr "Commandes de changement de contexte"
-
-#: ../bin/misc.c:2206 ../bin/misc.c:2393
-msgid "Enable SnapGrid"
-msgstr "Activer la Grille magnétique"
-
-#: ../bin/misc.c:2208
-msgid "SnapGrid Show"
-msgstr "Montrer la grille magnétique"
-
-#: ../bin/misc.c:2210
-msgid " Enable Magnetic Snap"
-msgstr " Activer la Grille magnétique"
-
-#: ../bin/misc.c:2212 ../bin/misc.c:2414
-msgid "Show/Hide Map"
-msgstr "Afficher/Masquer la carte de navigation"
-
-#: ../bin/misc.c:2214
-msgid "Show/Hide Background"
-msgstr "Montrer/cacher l'image d'arrière plan"
-
-#: ../bin/misc.c:2245 ../bin/misc.c:2246
-msgid "Add..."
-msgstr "Ajouter ..."
-
-#: ../bin/misc.c:2249 ../bin/misc.c:2250
-msgid "More..."
-msgstr "Plus ..."
-
-#: ../bin/misc.c:2285
-msgid "&New ..."
-msgstr "&Nouveau ..."
-
-#: ../bin/misc.c:2287
-msgid "&Open ..."
-msgstr "&Ouvrir ..."
-
-#: ../bin/misc.c:2293
-msgid "Save &As ..."
-msgstr "Sauver &Sous ..."
-
-#: ../bin/misc.c:2295
-msgid "Revert"
-msgstr "Revenir"
-
-#: ../bin/misc.c:2298
-msgid "P&rint Setup ..."
-msgstr "R&églages d'impression ..."
-
-#: ../bin/misc.c:2303
-msgid "&Import"
-msgstr "&Importer"
-
-#: ../bin/misc.c:2305
-msgid "Import &Module"
-msgstr "Importation d'un &Module"
-
-#: ../bin/misc.c:2307
-msgid "Export to &Bitmap"
-msgstr "Exporter en &bitmap"
-
-#: ../bin/misc.c:2310
-msgid "E&xport"
-msgstr "E&xporter"
-
-#: ../bin/misc.c:2312
-msgid "Export D&XF"
-msgstr "Exporter en D&XF"
-
-#: ../bin/misc.c:2317
-msgid "Parameter &Files ..."
-msgstr "&Fichiers de paramètres ..."
-
-#: ../bin/misc.c:2319
-msgid "No&tes ..."
-msgstr "R&emarques ..."
-
-#: ../bin/misc.c:2326
-msgid "E&xit"
-msgstr "Q&uitter"
-
-#: ../bin/misc.c:2332
-msgid "&Undo"
-msgstr "&Annuler"
-
-#: ../bin/misc.c:2334
-msgid "R&edo"
-msgstr "R&efaire"
-
-#: ../bin/misc.c:2337
-msgid "Cu&t"
-msgstr "C&ouper"
-
-#: ../bin/misc.c:2339
-msgid "&Copy"
-msgstr "&Copier"
-
-#: ../bin/misc.c:2341
-msgid "&Paste"
-msgstr "&Coller"
-
-#: ../bin/misc.c:2343
-#, fuzzy
-msgid "C&lone"
-msgstr "Fermer"
-
-#: ../bin/misc.c:2345
-msgid "De&lete"
-msgstr "E&ffacer"
-
-#: ../bin/misc.c:2353
-msgid "Select &All"
-msgstr "T&out sélectionner"
-
-#: ../bin/misc.c:2355
-msgid "&Deselect All"
-msgstr "&Tout désélectionner"
-
-#: ../bin/misc.c:2356
-msgid "&Invert Selection"
-msgstr "&Inverser la sélection"
-
-#: ../bin/misc.c:2357
-msgid "Select Stranded Track"
-msgstr "Sélectionnez une voie isolée"
-
-#: ../bin/misc.c:2359
-msgid "Tu&nnel"
-msgstr "Tu&nnel"
-
-#: ../bin/misc.c:2360
-msgid "B&ridge"
-msgstr "P&ont"
-
-#: ../bin/misc.c:2361
-msgid "Ties/NoTies"
-msgstr "Groupées/non groupées"
-
-#: ../bin/misc.c:2362
-msgid "Move to &Front"
-msgstr "Déplacer vers &l'avant"
-
-#: ../bin/misc.c:2363
-msgid "Move to &Back"
-msgstr "Déplacer vers &l'arrière"
-
-#: ../bin/misc.c:2373
-msgid "Zoom &In"
-msgstr "Zoom &avant"
-
-#: ../bin/misc.c:2376
-msgid "Zoom &Out"
-msgstr "Zoom &Arrière"
-
-#: ../bin/misc.c:2386
-msgid "&Redraw"
-msgstr "&Redessiner"
-
-#: ../bin/misc.c:2388
-msgid "Redraw All"
-msgstr "Tout redessiner"
-
-#: ../bin/misc.c:2395
-msgid "Show SnapGrid"
-msgstr "Afficher la Grille magnétique"
-
-#: ../bin/misc.c:2405
-msgid "Enable Magnetic Snap"
-msgstr "Activer la grille Magnétique"
-
-#: ../bin/misc.c:2420
-msgid "&Tool Bar"
-msgstr "&Barre d'outils"
-
-#: ../bin/misc.c:2453
-msgid "Control Element"
-msgstr "Éléments de contrôle"
-
-#: ../bin/misc.c:2479
-msgid "&Loosen Tracks"
-msgstr "&Desserrer les voies"
-
-#: ../bin/misc.c:2491
-msgid "Raise/Lower Elevations"
-msgstr "Monter/Descendre les Elévations"
-
-#: ../bin/misc.c:2500
-msgid "Recompute Elevations"
-msgstr "Recalculer les élévations"
-
-#: ../bin/misc.c:2505
-msgid "Change Scale"
-msgstr "Modifier l'échelle"
-
-#: ../bin/misc.c:2526
-msgid "L&ayout ..."
-msgstr "P&lan ..."
-
-#: ../bin/misc.c:2528
-msgid "&Display ..."
-msgstr "&Affichage ..."
-
-#: ../bin/misc.c:2530
-msgid "Co&mmand ..."
-msgstr "Co&mmande ..."
-
-#: ../bin/misc.c:2532
-msgid "&Easements ..."
-msgstr "&Courbes de transition ..."
-
-#: ../bin/misc.c:2535
-msgid "&Fonts ..."
-msgstr "&Polices ..."
-
-#: ../bin/misc.c:2537
-msgid "Stic&ky ..."
-msgstr "M&aintient ..."
-
-#: ../bin/misc.c:2542
-msgid "&Debug ..."
-msgstr "&Déboguer ..."
-
-#: ../bin/misc.c:2545
-msgid "&Preferences ..."
-msgstr "&Préférences ..."
-
-#: ../bin/misc.c:2547
-msgid "&Colors ..."
-msgstr "&Couleurs ..."
-
-#: ../bin/misc.c:2553
-msgid "&Record ..."
-msgstr "&Enregistrer ..."
-
-#: ../bin/misc.c:2555
-msgid "&Play Back ..."
-msgstr "&Lecture ..."
-
-#: ../bin/misc.c:2561
-msgid "Main window"
-msgstr "Fenêtre principale"
-
-#: ../bin/misc.c:2575
-msgid "Recent Messages"
-msgstr "Messages récents"
-
-#: ../bin/misc.c:2582
-msgid "Tip of the Day..."
-msgstr "Astuce du jour ..."
-
-#: ../bin/misc.c:2583
-msgid "&Demos"
-msgstr "&Demos"
-
-#: ../bin/misc.c:2584
-msgid "Examples..."
-msgstr "Exemples ..."
-
-#: ../bin/misc.c:2588 ../bin/smalldlg.c:222
-msgid "About"
-msgstr "À propos"
-
-#: ../bin/misc.c:2601
-msgid "Tur&nout Designer..."
-msgstr "Conception d'a&iguillage ..."
-
-#: ../bin/misc.c:2604
-msgid "Layout &Control Elements"
-msgstr "Éléments de &contrôle du plan"
-
-#: ../bin/misc.c:2606
-msgid "&Group"
-msgstr "Grouper"
-
-#: ../bin/misc.c:2608
-msgid "&Ungroup"
-msgstr "&Dissocier"
-
-#: ../bin/misc.c:2612
-msgid "Custom defined parts..."
-msgstr "Matériels prototypes ..."
-
-#: ../bin/misc.c:2615
-msgid "Update Turnouts and Structures"
-msgstr "Mise à jour des aiguillages et structures"
-
-#: ../bin/misc.c:2624
-msgid "Layers ..."
-msgstr "Calques ..."
-
-#: ../bin/misc.c:2628
-msgid "Parts &List ..."
-msgstr "N&omenclature ..."
-
-#: ../bin/misc.c:2631
-msgid "Price List..."
-msgstr "Liste de prix ..."
-
-#: ../bin/misc.c:2713
-msgid "Import/Export"
-msgstr "Import/Export"
-
-#: ../bin/misc.c:2743
-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?"
-
-#: ../bin/misc.c:2744
-msgid "Resume"
-msgstr "Résumé"
-
-#: ../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 "Plan de voie sans nom -%s(%s)"
-
-#: ../bin/misc.c:2945
-msgid "Initializing commands"
-msgstr "Initialisation des commandes"
-
-#: ../bin/misc.c:2954
-msgid "Initializing menus"
-msgstr "Initialisation des menus"
-
-#: ../bin/misc.c:2989
-msgid "Reading parameter files"
-msgstr "Lecture des fichiers de paramètres"
-
-#: ../bin/misc.c:3026
-msgid "Initialization complete"
-msgstr "Initialisation terminée"
-
-#: ../bin/param.c:92
-msgid "Unexpected End Of String"
-msgstr "Fin de chaîne inattendue"
-
-#: ../bin/param.c:99
-msgid "Expected digit"
-msgstr "Chiffre attendu"
-
-#: ../bin/param.c:106
-msgid "Overflow"
-msgstr "Débordement"
-
-#: ../bin/param.c:154
-msgid "Divide by 0"
-msgstr "Diviser par 0"
-
-#: ../bin/param.c:162
-msgid "Expected /"
-msgstr "Attendu /"
-
-#: ../bin/param.c:248
-msgid "Invalid Units Indicator"
-msgstr "Indicateur d'unités non valide"
-
-#: ../bin/param.c:276
-msgid "Expected End Of String"
-msgstr "Fin de chaîne attendue"
-
-#: ../bin/param.c:302 ../bin/param.c:1406
-#, c-format
-msgid "Invalid Number"
-msgstr "Nombre invalide"
-
-#: ../bin/param.c:361
-msgid "End Of String"
-msgstr "Fin de chaîne"
-
-#: ../bin/param.c:1413
-#, c-format
-msgid "Enter a value > %ld"
-msgstr "Entrez une valeur > %ld"
-
-#: ../bin/param.c:1415
-#, c-format
-msgid "Enter a value < %ld"
-msgstr "Entrez une valeur < %ld"
-
-#: ../bin/param.c:1417
-#, c-format
-msgid "Enter a value between %ld and %ld"
-msgstr "Entrez une valeur entre %ld et %ld"
-
-#: ../bin/param.c:1473
-#, c-format
-msgid "Enter a value > %s"
-msgstr "Entrez une valeur > %s"
-
-#: ../bin/param.c:1476
-#, c-format
-msgid "Enter a value < %s"
-msgstr "Entrez une valeur < %s"
-
-#: ../bin/param.c:1479
-#, c-format
-msgid "Enter a value between %s and %s"
-msgstr "Entrez une valeur entre %s et %s"
-
-#: ../bin/param.c:2643
-msgid "Help"
-msgstr "Aide"
-
-#: ../bin/paramfile.c:250
-msgid "Parameter"
-msgstr "Paramètre"
-
-#: ../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 "Mise à jour de %s"
-
-#: ../bin/paramfilesearch_ui.c:68
-#, fuzzy
-msgid "Enter at least one search word"
-msgstr "Entrez un seul mot de recherche"
-
-#: ../bin/paramfilesearch_ui.c:77
-#, fuzzy
-msgid "Reload Library"
-msgstr "Recharger"
-
-#: ../bin/paramfilesearch_ui.c:274
-#, c-format
-msgid "%d parameter files found."
-msgstr "Lecture des fichiers de paramètres %d ."
-
-#: ../bin/paramfilesearch_ui.c:284
-msgid "No matches found."
-msgstr "Aucun résultat."
-
-#: ../bin/paramfilesearch_ui.c:396
-#, fuzzy
-msgid "Choose parameter files"
-msgstr "Chercher des fichiers de paramètres"
-
-#: ../bin/paramfilesearch_ui.c:416
-#, fuzzy
-msgid "No system parameter files found, search is disabled."
-msgstr "Aucun fichier de paramètres trouvé, la recherche est désactivée."
-
-#: ../bin/smalldlg.c:64
-msgid "Show tips at start"
-msgstr "Afficher les conseils au démarrage"
-
-#: ../bin/smalldlg.c:70
-msgid "Did you know..."
-msgstr "Saviez-vous que ..."
-
-#: ../bin/smalldlg.c:72
-msgid "Previous Tip"
-msgstr "Précédent"
-
-#: ../bin/smalldlg.c:73
-msgid "Next Tip"
-msgstr "Conseil suivant"
-
-#: ../bin/smalldlg.c:90
-msgid "Tip of the Day"
-msgstr "Astuce du jour"
-
-#: ../bin/smalldlg.c:99
-msgid "No tips are available"
-msgstr "Pas de conseils disponibles"
-
-#: ../bin/smalldlg.c:199
-msgid ""
-"XTrackCAD is a CAD (computer-aided design) program for designing model "
-"railroad layouts."
-msgstr ""
-"XTrackCAD est un programme de CAO (conception assistée par ordinateur) pour "
-"concevoir des plans de chemin de fer miniature."
-
-#: ../bin/tbezier.c:177
-#, c-format
-msgid "Bezier: len=%0.2f min_rad=%0.2f"
-msgstr "Courbe de Bézier : longueur =%0.2f rayon min =%0.2f"
-
-#: ../bin/tbezier.c:250
-msgid "Ctl Pt 1: X,Y"
-msgstr "Ctl Pt 1: X,Y"
-
-#: ../bin/tbezier.c:251
-msgid "Ctl Pt 2: X,Y"
-msgstr "Ctl Pt 2: X,Y"
-
-#: ../bin/tbezier.c:257
-msgid "MinRadius"
-msgstr "RayonMin"
-
-#: ../bin/tbezier.c:262
-msgid "Line Color"
-msgstr "Couleur de ligne"
-
-#: ../bin/tbezier.c:379
-#, 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 ""
-"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:453
-msgid "Bezier Track"
-msgstr "Voie Bézier"
-
-#: ../bin/tbezier.c:870
-msgid "Merge Bezier"
-msgstr "Fusionner des Bézier"
-
-#: ../bin/tcornu.c:222
-#, c-format
-msgid "Cornu: len=%0.2f min_rad=%0.2f"
-msgstr "Spirale de Cornu : longueur =%0.2f rayon mini =%0.2f"
-
-#: ../bin/tcornu.c:296
-msgid "Radius "
-msgstr "Rayon "
-
-#: ../bin/tcornu.c:304
-msgid "Minimum Radius"
-msgstr "Rayon Minimum"
-
-#: ../bin/tcornu.c:305
-msgid "Max Rate Of Curve Change/Scale"
-msgstr "Taux maximum de variation de courbe/échelle"
-
-#: ../bin/tcornu.c:306
-msgid "Total Winding Angle"
-msgstr "Angle total"
-
-#: ../bin/tcornu.c:444
-#, c-format
-msgid ""
-"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:497
-msgid "Cornu Track"
-msgstr "Voie de Cornu"
-
-#: ../bin/tcornu.c:1025
-msgid "Merge Cornu"
-msgstr "Fusionner des Cornu"
-
-#: ../bin/tcurve.c:243
-#, c-format
-msgid "Helix: turns=%ld len=%0.2f grade=%0.1f%% sep=%0.2f"
-msgstr ""
-"Hélicoïde : Tours =%ld Longueur =%0.2f Pente =%0.1f%% séparation vert.=%0.2f"
-
-#: ../bin/tcurve.c:249
-#, c-format
-msgid "Helix: turns=%ld len=%0.2f"
-msgstr "Hélicoïde : Tours =%ld Longueur =%0.2f"
-
-#: ../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 "Longueur angulaire"
-
-#: ../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 ""
-"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]"
-
-#: ../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 ""
-"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:640
-msgid "Helix Track"
-msgstr "Voie de l'hélicoïde"
-
-#: ../bin/tcurve.c:646
-msgid "Curved Track"
-msgstr "Voie courbe"
-
-#: ../bin/tcurve.c:1011
-msgid "Merge Curves"
-msgstr "Fusionner des courbes"
-
-#: ../bin/tcurve.c:1078
-msgid "Drag to change angle or create tangent"
-msgstr "Faites glisser pour changer d'angle ou créer une tangente"
-
-#: ../bin/tcurve.c:1111 ../bin/tcurve.c:1143
-msgid "Curved "
-msgstr "Courbe "
-
-#: ../bin/tcurve.c:1117
-msgid "Tangent "
-msgstr "Tangente "
-
-#: ../bin/tcurve.c:1126
-#, c-format
-msgid "Tangent track: Length %s Angle %0.3f"
-msgstr "Voie tangente : Longueur %s Angle %0.3f"
-
-#: ../bin/tcurve.c:1148
-#, c-format
-msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
-msgstr "Courbé : Rayon =%s Longueur =%s Angle =%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 ""
-"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:615
-msgid "Easement Track"
-msgstr "Voie courbe de transition"
-
-#: ../bin/tease.c:1235
-msgid "Merge Easements"
-msgstr "Fusionner des courbes de transition"
-
-#: ../bin/tease.c:1300
-msgid "Split Easement Curve"
-msgstr "Courbe de transition fractionnée"
-
-#: ../bin/textnoteui.c:214
-#, c-format
-msgid "Note: Layer=%d %-.80s"
-msgstr "Remarque : Calque=%d %-.80s"
-
-#: ../bin/textnoteui.c:225
-msgid "Update comment"
-msgstr "Mettre à jour le commentaire"
-
-#: ../bin/textnoteui.c:237
-msgid "Replace this text with your note"
-msgstr "Remplacez ce texte par votre note"
-
-#: ../bin/textnoteui.c:241
-msgid "Create Text Note"
-msgstr "Créer une note texte"
-
-#: ../bin/track.c:1329
-msgid "Move Objects Above"
-msgstr "Déplacer les objets ci-dessus"
-
-#: ../bin/track.c:1349
-msgid "Mode Objects Below"
-msgstr "Objets ci-dessous"
-
-#: ../bin/track.c:1640
-msgid "Audit"
-msgstr "Vérification"
-
-#: ../bin/track.c:1929
-#, c-format
-msgid "%d Track(s) loosened"
-msgstr "%d Voie(s) détachées"
-
-#: ../bin/track.c:1936
-msgid "No tracks loosened"
-msgstr "Pas de voies détachées"
-
-#: ../bin/track.c:1946 ../bin/track.c:1950
-#, c-format
-msgid "Connecting a non-track(%d) to (%d)"
-msgstr "Connecter un autre objet (%d) à une voie (%d)"
-
-#: ../bin/track.c:2005
-msgid "Join Abutting Tracks"
-msgstr "Raccorder les voies adjacentes"
-
-#: ../bin/track.c:2280 ../bin/track.c:2315
-msgid "Inside turnout track"
-msgstr "Voie d'aiguillage intérieure"
-
-#: ../bin/track.c:2298
-#, 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:2321 ../bin/track.c:2379 ../bin/tstraigh.c:568
-#, c-format
-msgid "Straight: Length=%s Angle=%0.3f"
-msgstr "Droit : Longueur = %s Angle = %0.3f"
-
-#: ../bin/trknote.c:60
-msgid "Comment"
-msgstr "Commentaire"
-
-#: ../bin/trknote.c:61
-msgid "Link"
-msgstr "Lien"
-
-#: ../bin/trknote.c:61 ../../../../build/work/app/bin/bllnhlp.c:101
-msgid "Weblink"
-msgstr "Lien Web"
-
-#: ../bin/trknote.c:638 ../../../../build/work/app/bin/bllnhlp.c:108
-msgid "Place a note on the layout"
-msgstr "Mettre une note sur le plan"
-
-#: ../bin/trknote.c:652
-msgid "New Note"
-msgstr "Nouvelle note"
-
-#: ../bin/trknote.c:708
-msgid "Add notes"
-msgstr "Ajouter des notes"
-
-#: ../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 ""
-"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:481
-msgid "Extending Straight Track"
-msgstr "Extension d'une voie droite"
-
-#: ../bin/tstraigh.c:561
-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:281
-msgid "Font Select"
-msgstr "Sélection de police"
-
-#: ../wlib/gtklib/help.c:83
-msgid "&Contents"
-msgstr "&Sommaire"
-
-#: ../wlib/gtklib/help.c:84
-msgid "Co&mmand Context help"
-msgstr ""
-
-#: ../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:2102
-#: ../wlib/mswlib/mswmisc.c:2145
-msgid "Warning"
-msgstr "Attention"
-
-#: ../wlib/gtklib/notice.c:106 ../wlib/mswlib/mswmisc.c:2107
-msgid "Error"
-msgstr "Erreur"
-
-#: ../wlib/gtklib/text.c:300
-#, c-format
-msgid "%d of %d"
-msgstr "%d de %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 ""
-"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"
-" %s/share/xtrkcad or\n"
-" /usr/lib/%s or\n"
-" /usr/local/lib/%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:148 ../wlib/gtklib/wpref.c:193
-msgid "HOME is not set"
-msgstr "HOME n'est pas défini"
-
-#: ../wlib/gtklib/wpref.c:148 ../wlib/gtklib/wpref.c:157
-#: ../wlib/gtklib/wpref.c:193
-msgid "Exit"
-msgstr "Quitter"
-
-#: ../wlib/gtklib/wpref.c:156
-#, c-format
-msgid "Cannot create %s"
-msgstr "Impossible de créer %s"
-
-#: ../wlib/mswlib/backgnd.c:103
-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:886
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
-#: ../wlib/mswlib/mswmenu.c:891
-msgid "Alt+"
-msgstr "Alt+"
-
-#: ../wlib/mswlib/mswmenu.c:896
-msgid "Shift+"
-msgstr "Maj+"
-
-#: ../wlib/mswlib/mswmenu.c:902
-msgid "Space"
-msgstr "Espace"
-
-#: ../wlib/mswlib/mswmisc.c:190
-msgid "All image files"
-msgstr "Tous les fichiers image"
-
-#: ../wlib/mswlib/mswmisc.c:192
-msgid "GIF files (*.gif)"
-msgstr "Fichiers GIF (*.gif)"
-
-#: ../wlib/mswlib/mswmisc.c:194
-msgid "JPEG files (*.jpeg,*.jpg)"
-msgstr "Fichier JPEG (*.jpeg,*.jpg)"
-
-#: ../wlib/mswlib/mswmisc.c:196
-msgid "PNG files (*.png)"
-msgstr "Fichier PNG (*.png)"
-
-#: ../wlib/mswlib/mswmisc.c:198
-msgid "TIFF files (*.tiff, *.tif)"
-msgstr "Fichiers TIFF (*.tiff, *.tif)"
-
-#: ../wlib/mswlib/mswmisc.c:200
-msgid "All files (*)"
-msgstr "Tous les fichiers (*)"
-
-#: ../../../../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\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/work/app/help/messages.h:10
-msgid ""
-"MSG_SEL_TRK_FROZEN\tA frozen layer contains selected track. Command cannot "
-"be executed."
-msgstr ""
-"MSG_SEL_TRK_FROZEN\tUn calque gelé contient la voie sélectionnée. La "
-"commande ne peut pas être exécutée."
-
-#: ../../../../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\tUne hélice doit avoir une ou plusieurs boucles de "
-"voie."
-
-#: ../../../../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\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/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\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/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\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/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\tToutes les valeurs spécifiées dans l'éditeur "
-"d'aiguillage doivent ...\tToutes les valeurs spécifiées dans Turnout "
-"Designer \n"
-"doivent être supérieures à 0. Corrigez les valeurs inappropriées et "
-"réessayez."
-
-#: ../../../../build/work/app/help/messages.h:16
-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/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 ""
-"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/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\tÊtes-vous sûr de vouloir supprimer la ou les "
-"définitions NNN ?\tÊtes-vous sûr de vouloir supprimer le\n"
-"%d définition(s)?"
-
-#: ../../../../build/work/app/help/messages.h:19
-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/work/app/help/messages.h:20
-msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
-msgstr "MSG_BITMAP_TOO_LARGE\tLe bitmap est trop volumineux."
-
-#: ../../../../build/work/app/help/messages.h:21
-msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
-msgstr "MSG_CHANGE_ELEV_MODE\tImpossible de changer le mode d'élevation."
-
-#: ../../../../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\tImpossible d'activer la grille; l'espacement "
-"doit être supérieur à 0"
-
-#: ../../../../build/work/app/help/messages.h:23
-msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
-msgstr "MSG_LAYER_FREEZE\tImpossible de geler le calque actuel"
-
-#: ../../../../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\tImpossible de regrouper la voie exceptionnelle. La "
-"voie a été désélectionnée."
-
-#: ../../../../build/work/app/help/messages.h:25
-msgid "MSG_CANNOT_GROUP_TRACK\tCannot Group selected track."
-msgstr "MSG_CANNOT_GROUP_TRACK\tImpossible de grouper la voie sélectionnée."
-
-#: ../../../../build/work/app/help/messages.h:26
-msgid "MSG_LAYER_HIDE\tCannot hide current layer"
-msgstr "MSG_LAYER_HIDE\tImpossible de masquer le calque actuel"
-
-#: ../../../../build/work/app/help/messages.h:27
-msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
-msgstr "MSG_LAYER_MODULE\tImpossible de transformer le calque actuel en module"
-
-#: ../../../../build/work/app/help/messages.h:28
-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/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\tLa première|seconde voie est déjà connectée."
-"\tImpossible de raccorder; La voie %s est déjà connectée."
-
-#: ../../../../build/work/app/help/messages.h:30
-msgid "MSG_JOIN_TURNTABLE\tCannot join from a turntable, try to a turntable"
-msgstr ""
-"MSG_JOIN_TURNTABLE\tImpossible de raccorder un pont tournant, essayez de "
-"vous raccorder à lui"
-
-#: ../../../../build/work/app/help/messages.h:31
-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."
-
-#: ../../../../build/work/app/help/messages.h:32
-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/work/app/help/messages.h:33
-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/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\tImpossible d'ouvrir le nouveau fichier de paramètres : "
-"FILENAME\tImpossible d'ouvrir le nouveau fichier de paramètres : %s"
-
-#: ../../../../build/work/app/help/messages.h:35
-msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
-msgstr "MSG_LAYER_SEL_FROZEN\tImpossible de sélectionner un calque gelé"
-
-#: ../../../../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\tImpossible d'afficher la grille; l'espacement "
-"doit être supérieur à 0"
-
-#: ../../../../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\tImpossible de scinder la voie TYPE\tImpossible de "
-"scinder la voie %s"
-
-#: ../../../../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\tImpossible d'écrire dans le fichier de paramètres : "
-"FILENAME\tImpossible d'écrire dans le fichier de paramètres : %s"
-
-#: ../../../../build/work/app/help/messages.h:39
-msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
-msgstr "MSG_CARIMP_DUP_INDEX\tNuméro de véhicule dupliqué."
-
-#: ../../../../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\tLes paramètres de connexion sont réinitialisés "
-"aux valeurs minimales."
-
-#: ../../../../build/work/app/help/messages.h:41
-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/work/app/help/messages.h:42
-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/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\tLa longueur de croisement est trop courte. "
-"Corrigez...\tLa longueur de croisement est trop \n"
-"courte. Corrigez les valeurs inappropriées et réessayez."
-
-#: ../../../../build/work/app/help/messages.h:44
-msgid "MSG_CURVE_TOO_LARGE\tCurved track is too large."
-msgstr "MSG_CURVE_TOO_LARGE\tLa voie courbe est trop grande."
-
-#: ../../../../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\tLe nom de la définition est déjà utilisé. "
-"L'enregistrement...\tLe nom de la définition est déjà utilisé. "
-"L'enregistrement de cette définition \n"
-"remplace la définition existante.\n"
-"\n"
-"Voulez-vous continuer?"
-
-#: ../../../../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\tVoulez-vous enregistrer les modifications apportées à "
-"votre plan?"
-
-#: ../../../../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\tIl y a des en-têtes de colonne en double trouvées "
-"dans le fichier d'importation de véhicule."
-
-#: ../../../../build/work/app/help/messages.h:48
-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/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\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/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\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/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\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/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\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/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
-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."
-
-#: ../../../../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\tEspace insuffisant entre les voies de manœuvre "
-"existantes."
-
-#: ../../../../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\tJonction de voies d’élévation différentes (N.NNN)"
-"\tJonction de voies d’élévation différentes (%0.2f)"
-
-#: ../../../../build/work/app/help/messages.h:58
-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/work/app/help/messages.h:59
-msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
-msgstr "MSG_DESC_NOT_VISIBLE\tDescriptions d'étiquettes non visibles"
-
-#: ../../../../build/work/app/help/messages.h:60
-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/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\tLa taille de page maximale autorisée est W x H\tLa "
-"taille de page maximale autorisée est %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\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/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\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/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\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/work/app/help/messages.h:66
-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/work/app/help/messages.h:67
-msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
-msgstr "MSG_PRINT_NO_PAGES\tAucune page sélectionnée pour l'impression."
-
-#: ../../../../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\tIl n'y a pas de connexion entre le profil de la grotte et "
-"le point final sélectionné."
-
-#: ../../../../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\tAucun fichier de paramètre de carte pour CONTENTS\tLe "
-"nouveau fichier de paramètres %s ne peut pas être ouvert"
-
-#: ../../../../build/work/app/help/messages.h:70
-msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
-msgstr "MSG_NO_SELECTED_TRK\tAucune voie(s) sélectionnée!"
-
-#: ../../../../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 ""
-"MSG_NO_EMPTY_LAYER\tAucune couche n'a été trouvée sans contenu, le module ne "
-"peut donc pas être importé"
-
-#: ../../../../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\tAucun aiguillages|bâtiments sont disponibles."
-"\tAucun %s n'est disponible."
-
-#: ../../../../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\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/work/app/help/messages.h:74
-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/work/app/help/messages.h:75
-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."
-
-#: ../../../../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\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/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\tLecture : entrée de liste introuvable : NOM"
-"\tLecture : entrée de liste introuvable : %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\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/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\tLecture : action inconnue NNN\tLecture : action inconnue "
-"%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\tLes points sont trop proches du cœur; s'éloigner."
-
-#: ../../../../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\tLes Polyformes doivent avoir au moins 3 côtés."
-
-#: ../../../../build/work/app/help/messages.h:82
-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/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\tLe nom du prototype existe déjà....\tLe nom du "
-"prototype existe déjà.\n"
-"\n"
-"Voulez-vous le mettre à jour?"
-
-#: ../../../../build/work/app/help/messages.h:84
-msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
-msgstr "MSG_RADIUS_GTR_0\tLe rayon doit être supérieur à 0."
-
-#: ../../../../build/work/app/help/messages.h:85
-msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
-msgstr "MSG_RADIUS_GTR_10000\tLe rayon doit être inférieur à 10000."
-
-#: ../../../../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 ""
-"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/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\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/work/app/help/messages.h:88
-msgid ""
-"MSG_CARIMP_MISSING_COLUMNS\tRequired column headers missing from Car Import "
-"file."
-msgstr ""
-"MSG_CARIMP_MISSING_COLUMNS\tLes en-têtes de colonne requises sont absentes "
-"du fichier d'importation de véhicule."
-
-#: ../../../../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\t La deuxième voie peut être sélectionnée ou non\t "
-"La deuxième voie doit être %s."
-
-#: ../../../../build/work/app/help/messages.h:90
-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/work/app/help/messages.h:91
-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/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\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/work/app/help/messages.h:93
-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\tLes voies sélectionnées s'écartent trop ou sont "
-"trop éloignées les unes des autres."
-
-#: ../../../../build/work/app/help/messages.h:94
-msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
-msgstr "MSG_COMMAND_DISABLED\tCommande spécifiée désactivée."
-
-#: ../../../../build/work/app/help/messages.h:95
-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/work/app/help/messages.h:96
-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/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\tLe véhicule suivant n'a pas de dimensions et une..."
-"\tLe véhicule suivant n'a pas de dimensions et une\n"
-"Une description de véhicule n'existe pas.\n"
-"\n"
-"%s\n"
-"\n"
-"Souhaitez-vous continuer à importer d'autres véhicule ?"
-
-#: ../../../../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\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/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\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/work/app/help/messages.h:100
-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."
-
-#: ../../../../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\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/work/app/help/messages.h:102
-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\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/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\tIl n'y a pas de points de fin non connectés pour cette voie"
-
-#: ../../../../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\tIl y a trop peu de sections dans cette boucle."
-
-#: ../../../../build/work/app/help/messages.h:105
-msgid "MSG_NO_REDO\tThere is nothing to redo!"
-msgstr "MSG_NO_REDO\tIl n'y a rien à refaire!"
-
-#: ../../../../build/work/app/help/messages.h:106
-msgid "MSG_NO_UNDO\tThere is nothing to undo!"
-msgstr "MSG_NO_UNDO\tIl n'y a rien à défaire!"
-
-#: ../../../../build/work/app/help/messages.h:107
-msgid "MSG_TOOMANYSEGSINGROUP\tToo many segments in Group."
-msgstr "MSG_TOOMANYSEGSINGROUP\tTrop de segments dans le groupe."
-
-#: ../../../../build/work/app/help/messages.h:108
-msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
-msgstr "MSG_CANNOT_CHANGE\tLa voie ne peut pas être modifiée."
-
-#: ../../../../build/work/app/help/messages.h:109
-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/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\tIntersection de la voie impossible; "
-"éloignez les points du cœur."
-
-#: ../../../../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\tLa voie est trop courte autour de N.NNN\tLa voie %s est "
-"trop courte de %0.3f"
-
-#: ../../../../build/work/app/help/messages.h:112
-#, 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\tLe rayon de la voie (N.NNN) est inférieur à l'arc "
-"de transition minimum (N.NNN).\tLe rayon de la voie (%s) est inférieur à "
-"l'arc de transition minimum (%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\tLes voies d'un calque gelé ne peuvent pas être "
-"modifiées."
-
-#: ../../../../build/work/app/help/messages.h:114
-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/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\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/work/app/help/messages.h:116
-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."
-
-#: ../../../../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\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."
-
-#: ../../../../build/work/app/help/messages.h:118
-#, 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\tFichier critique endommagé!...\tFichier critique "
-"endommagé!\n"
-"\n"
-"% s est corrompu.\n"
-"\n"
-"Veuillez réinstaller le logiciel."
-
-#: ../../../../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 ""
-"MSG_ENTERED_STRING_TRUNCATED\tLe texte saisi est trop long. La longueur "
-"maximale est %d."
-
-#: ../../../../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] n'est pas une voie\t[%s %s] n'est pas une voie."
-
-#: ../../../../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\tVous avez spécifié un bitmap volumineux....\tVous "
-"avez spécifié un bitmap volumineux.\n"
-"\n"
-"Etes-vous sur de vouloir continuer ?"
-
-#: ../../../../build/work/app/help/messages.h:122
-#, c-format
-msgid "Are you sure you want to delete these %d car(s)?"
-msgstr "Êtes-vous sûr de vouloir supprimer ces %d matériels roulants ?"
-
-#: ../../../../build/work/app/help/messages.h:123
-#, c-format
-msgid ""
-"Cannot open %s file:\n"
-"%s:%s"
-msgstr ""
-"Impossible d'ouvrir le fichier %s :\n"
-"%s : %s"
-
-#: ../../../../build/work/app/help/messages.h:124
-#, c-format
-msgid "Cannot create directory: %s - %s"
-msgstr "Impossible de créer le répertoire : %s -%s"
-
-#: ../../../../build/work/app/help/messages.h:125
-#, c-format
-msgid "Cannot open directory: %s"
-msgstr "Impossible d'ouvrir le répertoire : %s"
-
-#: ../../../../build/work/app/help/messages.h:126
-#, c-format
-msgid "Path for deletion is not a directory: %s"
-msgstr "Le chemin de suppression n'est pas un répertoire : %s"
-
-#: ../../../../build/work/app/help/messages.h:127
-#, c-format
-msgid "Open failed for directory: %s"
-msgstr "Échec de l'ouverture du répertoire : %s"
-
-#: ../../../../build/work/app/help/messages.h:128
-#, 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/work/app/help/messages.h:129
-#, 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/work/app/help/messages.h:130
-#, c-format
-msgid "Can't create zip %s - %s"
-msgstr "Impossible de créer le zip %s - %s"
-
-#: ../../../../build/work/app/help/messages.h:131
-#, c-format
-msgid "Close failure for zip %s - %s"
-msgstr "Échec de fermeture pour le zip %s - %s"
-
-#: ../../../../build/work/app/help/messages.h:132
-#, 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/work/app/help/messages.h:133
-#, c-format
-msgid "Open failure for zip %s - %s"
-msgstr "Échec d'ouverture du zip %s -%s"
-
-#: ../../../../build/work/app/help/messages.h:134
-#, c-format
-msgid "Index failure for zip %s - %s"
-msgstr "Echec de l'index pour les zip %s - %s"
-
-#: ../../../../build/work/app/help/messages.h:135
-#, c-format
-msgid "Open read file failure %s %s"
-msgstr "Échec de l'ouverture du fichier pour la lecture de %s %s"
-
-#: ../../../../build/work/app/help/messages.h:136
-#, c-format
-msgid "Open file in zip failure %s %s"
-msgstr "Erreur lors de l'ouverture du fichier dans le zip %s %s"
-
-#: ../../../../build/work/app/help/messages.h:137
-#, c-format
-msgid "Unlink failed for: %s"
-msgstr "La déconnexion a échoué pour : %s"
-
-#: ../../../../build/work/app/help/messages.h:138
-#, c-format
-msgid "Remove Directory failed for: %s"
-msgstr "Échec de la suppression du répertoire pour : %s"
-
-#: ../../../../build/work/app/help/messages.h:139
-#, c-format
-msgid "Cannot save archive to %s from directory: %s"
-msgstr "Impossible d'enregistrer l'archive dans %s à partir du répertoire : %s"
-
-#: ../../../../build/work/app/help/messages.h:140
-#, c-format
-msgid "Cannot save manifest file to %s"
-msgstr "Impossible d'enregistrer le fichier manifeste dans %s"
-
-#: ../../../../build/work/app/help/messages.h:141
-#, c-format
-msgid "Cannot open manifest file %s"
-msgstr "Impossible d'ouvrir le fichier manifeste %s"
-
-#: ../../../../build/work/app/help/messages.h:142
-#, 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/work/app/help/messages.h:143
-#, c-format
-msgid "Cannot open file %s"
-msgstr "Impossible d'ouvrir le fichier %s"
-
-#: ../../../../build/work/app/help/messages.h:144
-#, c-format
-msgid "Cannot copy file %s into directory %s"
-msgstr "Impossible de copier le fichier %s dans le répertoire %s"
-
-#: ../../../../build/work/app/help/messages.h:145
-#, c-format
-msgid "Unrecognized Option: %s"
-msgstr "Option non reconnue : %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 ""
-"Fin de voie inattendue entre guillemets.\n"
-"%s\n"
-"\n"
-"Voulez-vous continuer à lire le fichier?"
-
-#: ../../../../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 ""
-"Une virgule attendue après ce champ est manquante.\n"
-"%s\n"
-"\n"
-"Voulez-vous continuer à charger le fichier?"
-
-#: ../../../../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 ""
-"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/work/app/help/messages.h:149
-#, 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 ""
-"Au moins un chemin pour l'aiguillage T%d ne se\n"
-"termine pas sur un bout. Une telle voie ne peut pas être groupée.\n"
-"La voie a été désélectionnée."
-
-#: ../../../../build/work/app/help/messages.h:150
-msgid "inv-pathEndTrk on Path."
-msgstr "tracé invalide de fin de voie."
-
-#: ../../../../build/work/app/help/messages.h:151
-msgid "inv-pathStartTrk on Path"
-msgstr "tracé invalide de début de voie"
-
-#: ../../../../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 "tracé de fin de voie invalide."
-
-#: ../../../../build/work/app/help/messages.h:154
-msgid "pathStartTrk not on Path."
-msgstr "tracé invalide de début de voie."
-
-#: ../../../../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 ""
-"Les voies ne peuvent pas être connectées ensemble.\n"
-"\n"
-"Essayez de changer certaines voies pour un ajustement plus serré\n"
-"ou augmentez la valeur Angle de connexion sur\n"
-"la boîte de dialogue \"Options|Préférences\"."
-
-#: ../../../../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 ""
-"Les voies ne peuvent pas être connectées ensemble.\n"
-"\n"
-"Essayez de changer certaines voies pour un ajustement plus serré\n"
-"ou augmentez la distance de connexion et\n"
-"Valeurs d'angle dans la boîte de dialogue \"Options|Préférences\""
-
-#: ../../../../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 ""
-"Les voies ne peuvent pas être connectées ensemble.\n"
-"\n"
-"Essayez de changer certaines voies pour un ajustement plus serré\n"
-"ou augmentez la distance de connexion sur\n"
-"la boîte de dialogue \"Options|Préférences\""
-
-#: ../../../../build/work/app/help/messages.h:158
-msgid ""
-"The first track for the Align\n"
-"Rotate command must be Selected."
-msgstr ""
-"Première voie pour \"Alignement\n"
-"La commande \"Rotation\" doit être sélectionnée."
-
-#: ../../../../build/work/app/help/messages.h:159
-msgid ""
-"The second track for the Align\n"
-"Rotate command must be Unselected."
-msgstr ""
-"La deuxième voie pour l'Aligner\n"
-"La commande de rotation doit être désélectionnée."
-
-#: ../../../../build/work/app/help/messages.h:160
-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/work/app/help/messages.h:161
-msgid "Select an endpoint between two tracks."
-msgstr "Sélectionnez un point de fin entre deux voies."
-
-#: ../../../../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 ""
-"Avec les valeurs entrées, la voie divergente ne se connecte \n"
-"pas à la voie tangente. Svp vérifiez les valeurs saisies et \n"
-"réessayez. Vérifiez que l'angle est entré en numéro de \n"
-"cœur ou en degrés, comme spécifié par les boutons \n"
-"radio du mode Angle."
-
-#: ../../../../build/work/app/help/messages.h:163
-msgid "Moved before the end of the turnout"
-msgstr "Déplacé avant la fin de l'aiguillage"
-
-#: ../../../../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 ""
-"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/work/app/help/messages.h:165
-msgid ""
-"The Car Length value must be greater\n"
-"than the Car Width value."
-msgstr ""
-"La longueur du véhicule doit \n"
-"être supérieure à sa largeur."
-
-#: ../../../../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 ""
-"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/work/app/help/messages.h:167
-msgid ""
-"You have changed values for this object.\n"
-"\n"
-"Are you sure you want to Close?"
-msgstr ""
-"Vous avez apporté des modifications à cet objet\n"
-"\n"
-"Voulez-vous vraiment fermer cette boîte de dialogue?"
-
-#: ../../../../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 ""
-"La version du fichier %ld est plus ancienne que \n"
-"plus ancienne celle prise en charge %d. Vous \n"
-"devez mettre à jour votre fichier du projet \n"
-"utilisant une ancienne version de %s"
-
-#: ../../../../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 ""
-"La version du fichier %ld est plus ancienne que \n"
-"plus ancienne celle prise en charge %d. Vous \n"
-"devez mettre à jour votre fichier du projet \n"
-"utilisant une ancienne version de %s"
-
-#: ../../../../build/work/app/help/messages.h:170
-#, c-format
-msgid ""
-"%s cannot read the demo file:\n"
-"%s"
-msgstr ""
-"%s ne peut pas lire le fichier de démonstration:\n"
-"%s"
-
-#: ../../../../build/work/app/help/messages.h:171
-#, c-format
-msgid "doDemo: bad number (%d)"
-msgstr "doDemo : nombre invalide (%d)"
-
-#: ../../../../build/work/app/help/messages.h:172
-msgid "Playback TIMEEND without TIMESTART"
-msgstr "TIMEEND en lecture sans TIMESTART"
-
-#: ../../../../build/work/app/help/messages.h:173
-#, c-format
-msgid ""
-"Unknown playback command (%d)\n"
-"%s"
-msgstr ""
-"Commande de lecture inconnue (%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 ""
-"La version du fichier de lecture %ld est inférieure \n"
-"à la version minimale prise en charge %d.\n"
-"Vous devez mettre à jour votre fichier de plan \n"
-"en utilisant une ancienne version de %s"
-
-#: ../../../../build/work/app/help/messages.h:175
-#, c-format
-msgid "Scale index (%d) is not valid"
-msgstr "L'indice d'échelle (%d) n'est pas valide"
-
-#: ../../../../build/work/app/help/messages.h:176
-#, c-format
-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"
-
-#: ../../../../build/work/app/help/messages.h:177
-msgid "Cannot extend a helix"
-msgstr "Impossible d'étendre une hélicoïde"
-
-#: ../../../../build/work/app/help/messages.h:178
-msgid "Cannot trim a helix"
-msgstr "Impossible de couper une hélicoïde"
-
-#: ../../../../build/work/app/help/messages.h:179
-msgid "Ignore further audit notices?"
-msgstr "Ignorer les autres indications de protocole?"
-
-#: ../../../../build/work/app/help/messages.h:180
-#, c-format
-msgid "%s"
-msgstr "%s"
-
-#: ../../../../build/work/app/help/messages.h:181
-msgid "Audit Abort?"
-msgstr "Abandonner la vérification ?"
-
-#: ../../../../build/work/app/help/messages.h:182
-msgid "Write Audit File?"
-msgstr "Écrire un fichier journal?"
-
-#: ../../../../build/work/app/help/messages.h:183
-#, c-format
-msgid "checkTrackLength: Short track length = %0.3f"
-msgstr "vérifier la longueur de voie : longueur voie courte =%0.3f"
-
-#: ../../../../build/work/app/help/messages.h:184
-#, c-format
-msgid "checkTrackLength: unknown type: %d"
-msgstr "vérifier la longueur de voie : type inconnu :%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 "connecter des voies : T%d[%d] T%d[%d] d=%0.3f a=%0.3f"
-
-#: ../../../../build/work/app/help/messages.h:186
-#, c-format
-msgid "GetAngleAtPoint: bad type(%d) for T(%d)"
-msgstr "Obtenir l'angle à un point : type incorrect (%d) pour T (%d)"
-
-#: ../../../../build/work/app/help/messages.h:187
-#, c-format
-msgid "joinTracks: invalid track type=%d"
-msgstr "raccorder des voies : type de voie non valide =%d"
-
-#: ../../../../build/work/app/help/messages.h:188
-#, 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/work/app/help/messages.h:189
-msgid "Moved beyond the end of the track"
-msgstr "Déplacé au-delà de la fin de voie"
-
-#: ../../../../build/work/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/work/app/bin/bllnhlp.c:10
-msgid "Cancels this command"
-msgstr "Annule cette commande"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:11
-msgid "Closes the dialog"
-msgstr "Fermer la fenêtre de dialogue"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:12
-msgid "About program dialog"
-msgstr "Boîte de dialogue \"A propos de\""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:13
-msgid "Move selected object to top"
-msgstr "Déplacer l'objet sélectionné vers le haut"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:14
-msgid "Raise or lower all selected tracks"
-msgstr "Elever ou abaisser toute les voies sélectionnées"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:15
-msgid "Turn magnetic snap on or off"
-msgstr "Activer ou désactiver la grille magnétique"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:16
-msgid "Move selected object to bottom"
-msgstr "Déplacer l'objet sélectionné vers le bas"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:17
-msgid "Create a section of track for automation"
-msgstr "Créer une section de voie pour l'automatisation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:18
-msgid "Edit a block definition "
-msgstr "Editer une définition de bloc "
-
-#: ../../../../build/work/app/bin/bllnhlp.c:19
-msgid "Create a new Car/Loco description"
-msgstr "Créer une nouvelle description de wagon/voiture/loco"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:20
-msgid "Manage your Car and Loco Inventory"
-msgstr "Gérez votre inventaire de véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:21
-msgid "Create track circle from center"
-msgstr "Créer un cercle de voie à partir du centre"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:22
-msgid "Create fixed radius track circle"
-msgstr "Créer une voie circulaire d'un rayon donné"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:23
-msgid "Set Circle Track creation mode"
-msgstr "Choisissez la commande pour créer des courbes de voie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:24
-msgid "Create track circle from tangent"
-msgstr "Créer une voie circulaire à partir de la tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:25
-msgid "Removes elevation from Selected tracks"
-msgstr "Supprime l'élévation des voies sélectionnées"
-
-#: ../../../../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 "Boîte de dialogue pour les options de commande"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:28
-msgid "Controls colors"
-msgstr "Ajuste les couleurs"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:29
-msgid "Connect two tracks"
-msgstr "Connecter deux voies"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:30
-msgid "Create a control for layout automation"
-msgstr "Créer un contrôle pour l'automatisation du réseau"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:31
-msgid "Select control element to create"
-msgstr "Sélectionner l'élément de contrôle à créer"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:32
-msgid "Manage control elements"
-msgstr "Gérer les contrôles"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:33
-msgid "Set Convert mode"
-msgstr "Définir le mode de conversion"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:34
-msgid "Convert from Fixed Track to Cornu"
-msgstr "Convertir depuis des voies fixes en Cornu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:35
-msgid "Convert from Cornu and Bezier to Fixed Track"
-msgstr "Convertir depuis des Cornu et Bezier en voies fixes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:36
-msgid "Copy selected objects to clipboard"
-msgstr "Copier les objets sélectionnés du presse-papiers"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:37
-msgid "Create Cornu track"
-msgstr "Créer une voie Cornu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:38
-msgid "Create curved track from center"
-msgstr "Créer une voie courbe à partir du centre"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:39
-msgid "Create curved track from chord"
-msgstr "Créer une voie courbe à partir d'une corde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:40
-msgid "Create curved track from end-point"
-msgstr "Créer une voie courbe à partir de l'extrémité"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:41
-msgid "Create Bezier track"
-msgstr "Créer une voie de Bézier"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:42
-msgid "Set Curve Track creation mode"
-msgstr "Définir le mode de création de voie de courbe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:43
-msgid "Create curved track from tangent"
-msgstr "Créer une voie courbe à partir de la tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:44
-msgid "Manipulate Custom designer entries"
-msgstr "Éditez vos propres dessins"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:45
-msgid "Moves selected objects to clipboard"
-msgstr "Déplace les objets sélectionnés vers le presse-papiers"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:46
-msgid "Delete objects"
-msgstr "Supprimer des objets"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:47
-msgid "Playback demos"
-msgstr "Lecture des démos"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:48
-msgid "Change Object Properties"
-msgstr "Modifier les propriétés d'un objet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:49
-msgid "Change to properties mode"
-msgstr "Passer en mode propriétés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:50
-msgid "Deselect all selected objects"
-msgstr "Désélectionner tous les objets"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:51
-msgid "Change Display parameters"
-msgstr "Modifier les paramètres d'affichage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:52
-msgid "Create benchwork"
-msgstr "Tracer un plateau de travail"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:53
-msgid "Create a box"
-msgstr "Tracer une boite"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:54
-msgid "Set Circle drawing command"
-msgstr "Définir la commande de dessin du cercle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:55
-msgid "Create a circle"
-msgstr "Créer un cercle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:56
-msgid "Draw a circle line from center"
-msgstr "Tracer un Cercle à partir du centre"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:57
-msgid "Draw a fixed radius circle line"
-msgstr "Trace un cercle d'un rayon donné"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:58
-msgid "Draw a circle line from tangent"
-msgstr "Tracer un Cercle à partir de la tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:59
-msgid "Set Curve drawing command"
-msgstr "Choisissez la commande pour dessiner des lignes courbes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:60
-msgid "Create a curved line"
-msgstr "Créer une ligne courbe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:61
-msgid "Create a curved line from End"
-msgstr "Tracer une courbe à partir de l'extrémité"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:62
-msgid "Create a curved line from center"
-msgstr "Tracer une courbe à partir du centre"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:63
-msgid "Create a curved line from chord"
-msgstr "Tracer une courbe à partir de la corde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:64
-msgid "Create a curved line from tangent"
-msgstr "Tracer une courbe à partir de la tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:65
-msgid "Create a Bezier line"
-msgstr "Tracer une ligne de Bézier"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:66
-msgid "Create a dimension line"
-msgstr "Tracer une ligne de cote"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:67
-msgid "Create a filled box"
-msgstr "Tracer une boite pleine"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:68
-msgid "Create a filled circle"
-msgstr "Créer un cercle rempli"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:69
-msgid "Draw a filled circle from center"
-msgstr "Tracer un Cercle plein autour du centre"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:70
-msgid "Draw a fixed radius filled circle"
-msgstr "Trace un cercle plein d'un rayon donné"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:71
-msgid "Draw a filled circle from tangent"
-msgstr "Tracer un Cercle plein depuis la tangente"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:72
-msgid "Create a polygon"
-msgstr "Tracer un polygone"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:73
-msgid "Create a filled polygon"
-msgstr "Tracer un polygone plein"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:74
-msgid "Create a polyline"
-msgstr "Tracer une polyligne"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:75
-msgid "Create a straight line"
-msgstr "Tracer une ligne droite"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:76
-msgid "Set Line drawing command"
-msgstr "Choisissez la commande pour dessiner des lignes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:77
-msgid "Set Shape drawing command"
-msgstr "Choisir la commande pour dessiner des formes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:78
-msgid "Draw table edge"
-msgstr "Tracer le bord de table"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:79
-msgid "Easement menu"
-msgstr "Menu courbes de transition"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:81
-msgid "Generate a Parts List of selected objects"
-msgstr "Créer une liste de pièces à partir des objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:82
-msgid "Set Import/Export mode"
-msgstr "Définir le mode Import/Export"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:83
-msgid "Export a .xti file"
-msgstr "Exporter un fichier *.xti"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:84
-msgid "Export a DXF file"
-msgstr "Exporter dans un fichier DXF"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:86
-msgid "Flip selected objects"
-msgstr "Retourner les objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:87
-msgid "Adjust snap grid"
-msgstr "Ajuster la grille magnétique"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:88
-msgid "Enable snap grid"
-msgstr "Activer la grille magnétique"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:89
-msgid "Show snap grid"
-msgstr "Afficher la grille magnétique"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:90
-msgid "Create a structure from a Group of objects"
-msgstr "Créer une bâtiment à partir d'un groupe d'objets"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:91
-msgid "Create a hand-laid turnout"
-msgstr "Créer un aiguillage conçu en manuel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:92
-msgid "Create a track helix"
-msgstr "Créer une voie hélicoïdale"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:93
-msgid "Import a .xti file"
-msgstr "Importer un fichier *.xti"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:94
-msgid "Import an .xti file as a Module"
-msgstr "Importez un fichier .xti en tant que module"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:95
-msgid "Join two tracks"
-msgstr "Raccorder deux voies"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:96
-msgid "Join two lines or polylines"
-msgstr "Raccorder deux lignes ou polylignes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:97
-msgid "Set Join mode"
-msgstr "Définir le mode Raccorder"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:98
-msgid "Change Layers"
-msgstr "Changer de calques"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:99
-msgid "Selects the current drawing layer"
-msgstr "Sélectionne le calque courant du dessin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:100
-msgid "Layout parameters"
-msgstr "Paramètres de calques"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:102
-msgid "Show/Hide Map Window"
-msgstr "Afficher/Masquer la fenêtre de navigation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:103
-msgid "Modify or extend a track"
-msgstr "Modifier ou prolonger une voie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:104
-msgid "Change To modify mode"
-msgstr "Changer pour Modifier le mode"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:105
-msgid "Move selected objects"
-msgstr "Déplacer les objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:106
-msgid "Move a label"
-msgstr "Déplacer une étiquette"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:107
-msgid "Move selected objects to current layer"
-msgstr "Déplacer les objets sélectionnés vers le calque actuel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:109
-msgid "Print a bitmap"
-msgstr "Imprimer un BitMap"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:110
-msgid "Pan or zoom the layout"
-msgstr "Panoramique ou zoom sur le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:111
-msgid "Change to zoom/pan mode"
-msgstr "Passer en mode zoom/pan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:112
-msgid "Create a parallel track"
-msgstr "Créer une voie parallèle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:113
-msgid "Create a parallel line"
-msgstr "Tracer une ligne parallèle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:114
-msgid "Set Parallel mode"
-msgstr "Définir le mode parallèle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:115
-msgid "Register"
-msgstr "Registre"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:116
-msgid "Copy objects from clipboard"
-msgstr "Copier les objets du presse-papiers"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:117
-msgid "Perferences dialog"
-msgstr "Boîte de dialogue des préférences"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:118
-msgid "Display prices of turnouts, sectional tracks and structures"
-msgstr ""
-"Affichage des prix des aiguillages, des sections de voies et des bâtiments"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:119
-msgid "Print the layout"
-msgstr "Imprimer le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:120
-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/work/app/bin/bllnhlp.c:121
-msgid "Elevation Profile Command"
-msgstr "Commande de profil d'élévation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:123
-msgid "Command recorder"
-msgstr "Enregistrement de commande"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:125
-msgid "Update selected Turnout and Structure definitions"
-msgstr ""
-"Mettre à jour les définitions sélectionnées d'aiguillage et de bâtiment"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:126
-msgid "Rescale selected objects"
-msgstr "Changer d'échelle les objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:127
-msgid "Rotate selected object(s)"
-msgstr "Faire pivoter le ou les objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:128
-msgid "Show a ruler"
-msgstr "Afficher une règle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:129
-msgid "Select objects"
-msgstr "Sélectionnez des objets"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:130
-msgid "Change To Select Mode"
-msgstr "Passer en mode sélection"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:131
-msgid "Selects all objects on the layout"
-msgstr "Sélectionne tous les objets du plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:132
-msgid "Selects all objects in the current Layer"
-msgstr "Sélectionne tous les objets du calque actuel"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:133
-msgid "Invert current selection"
-msgstr "Inverser la sélection actuelle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:134
-msgid "Split a track"
-msgstr "Segmenter une voie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:135
-msgid "Select stranded (unconnected) track pieces"
-msgstr "Sélectionner des segments de voie isolés (non connectés)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:136
-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/work/app/bin/bllnhlp.c:137
-msgid "Create a signal for train control"
-msgstr "Créer un signal pour le contrôle du train"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:138
-msgid "Choose which commands are sticky"
-msgstr "Choisissez les commandes qui sont maintenues (sticky)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:139
-msgid "Create straight track"
-msgstr "Créer une voie droite"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:140
-msgid "Place a structure on the layout"
-msgstr "Mettre une bâtiment sur le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:141
-msgid "Create a switchmotor for turnout control"
-msgstr "Créer un moteur pour le contrôle d'un aiguillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:142
-msgid "Edit a switchmotor definition"
-msgstr "Editer une définition de moteur d'aiguillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:143
-msgid "Enter text on the layout"
-msgstr "Entrer du texte sur le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:144
-#: ../../../../build/work/app/bin/bllnhlp.c:531
-msgid "Controls the size of the entered text"
-msgstr "Ajuste la taille du texte saisi"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:145
-msgid "Plain Text"
-msgstr "Texte simple"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:146
-msgid "Tip of the Day window"
-msgstr "Fenêtre d'astuce du jour"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:147
-msgid "Run Trains"
-msgstr "Mode Trains"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:148
-msgid "Change To Run Trains Mode"
-msgstr "Passer en mode Trains"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:149
-msgid "Pause/Resume Trains"
-msgstr "Pause/Go Trains"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:150
-msgid "Place a car on the layout"
-msgstr "Mettre un véhicule sur le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:151
-msgid "Exit Trains"
-msgstr "Quitter \"Trains\""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:152
-msgid "Hide/Unhide a track"
-msgstr "Masquer/afficher une voie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:153
-msgid "Make/Unmake a track a bridge"
-msgstr "Construire/défaire une voie un pont"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:154
-msgid "Place a turnout or sectional track"
-msgstr "Placer un aiguillage ou une section de voie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:155
-msgid "Create a new turnout definition"
-msgstr "Créer une nouvelle définition d'aiguillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:156
-msgid "Place a turntable"
-msgstr "Mettre un pont tournant"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:157
-msgid "Updates old source files with 3 part titles"
-msgstr "Met à jour les anciens fichiers source avec des titres en 3 parties"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:159
-msgid "Ungroup objects"
-msgstr "Dissocier l'objet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:160
-msgid "Draw tracks with thin lines"
-msgstr "Tracez des voies avec des voies fines"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:161
-msgid "Draw tracks with medium lines"
-msgstr "Tracez des voies avec des voies moyennes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:162
-msgid "Draw tracks with thick lines"
-msgstr "Tracez des voies avec des voies épaisses"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:163
-msgid "Change drawing scale"
-msgstr "Changer l'échelle de dessin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:164
-#: ../../../../build/work/app/bin/bllnhlp.c:176
-msgid "Zoom in"
-msgstr "Zoom avant"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:165
-#: ../../../../build/work/app/bin/bllnhlp.c:177
-msgid "Zoom out"
-msgstr "Zoom arrière"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:166
-msgid "File Menu"
-msgstr "Menu fichier"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:167
-msgid "Save layout"
-msgstr "Enregistrer le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:168
-msgid "Save layout under a new name "
-msgstr "Enregistrer le plan sous un nouveau nom "
-
-#: ../../../../build/work/app/bin/bllnhlp.c:169
-msgid "New layout"
-msgstr "Nouveau plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:170
-msgid "Generate parts list"
-msgstr "Créer une liste de pièces"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:171
-msgid "Load a layout"
-msgstr "Charger un plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:172
-msgid "Exit the program"
-msgstr "Quitter le programme"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:173
-msgid "Revert to last saved state of layout plan"
-msgstr "Revenir au dernier état enregistré du plan de réseau"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:174
-msgid "Edit menu"
-msgstr "Menu d'édition"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:175
-msgid "Redraw layout"
-msgstr "Redessiner le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:178
-#: ../../../../build/work/app/bin/bllnhlp.c:181
-msgid "Tools menu"
-msgstr "Menu d'outils"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:179
-msgid "View menu"
-msgstr "Afficher le menu"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:180
-msgid "Toolbar configuration"
-msgstr "Configuration de la barre d'outils"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:182
-msgid "Options menu"
-msgstr "Menu d'options"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:183
-msgid "Playback/Record commands"
-msgstr "Commandes de Lecture/Enregistrement"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:184
-msgid "Window menu"
-msgstr "Menu fenêtre"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:185
-msgid "Help menu"
-msgstr "Menu d'aide"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:186
-msgid "Recent error messages and explanations"
-msgstr "Messages d'erreur récents et explications"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:187
-msgid "Move Hot Bar left"
-msgstr "Faire défiler la Hot Bar à gauche"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:188
-msgid "Move Hot Bar right"
-msgstr "Faire défiler la Hot Bar à droite"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:189
-msgid "Total track count"
-msgstr "Nombre total de voies"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:190
-msgid "X Position of cursor"
-msgstr "Position X du curseur"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:191
-msgid "Y Position of cursor"
-msgstr "Position Y du curseur"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:192
-msgid "Drawing scale"
-msgstr "Échelle du dessin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:193
-msgid "Message and status line"
-msgstr "Message et ligne d'état"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:194
-#: ../../../../build/work/app/bin/bllnhlp.c:195
-msgid "Main layout canvas"
-msgstr "Zone de dessin principale"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:196
-msgid "Main drawing canvas"
-msgstr "Zone de travail principale"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:197
-msgid "Command buttons"
-msgstr "Boutons de commande"
-
-#: ../../../../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 "Boutons, Nom de fichier et Gestionnaire de fenêtres"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:200
-msgid "Turnout and Structure Hot Bar"
-msgstr "Barre de sélection des aiguillages et bâtiments"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:201
-msgid "Active layer list and layer buttons"
-msgstr "Liste de calques actifs et boutons de calque"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:202
-msgid "Map window"
-msgstr "Fenêtre principale"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:203
-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/work/app/bin/bllnhlp.c:204
-msgid "Raise or Lower all Selected Track"
-msgstr "Elever ou abaisser toute la voie sélectionnée"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:205
-msgid "Name of block"
-msgstr "Nom du bloc"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:206
-msgid "Script that the block will run"
-msgstr "Script d'exécution du bloc"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:207
-msgid "List of tracks in the Block"
-msgstr "Liste des voies du bloc"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:208
-msgid "Add or Update car object"
-msgstr "Ajouter ou mettre à jour un objet véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:209
-msgid "Manufacturer name"
-msgstr "Nom du fabricant"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:212
-msgid "Is the Car a Locomotive?"
-msgstr "Le véhicule est-il une locomotive?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:213
-msgid "Part Number and Description"
-msgstr "Référence N° et description"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:214
-msgid "Manufacturer Part Number"
-msgstr "Référence fabricant"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:215
-msgid "Use the Selected figure as the car image"
-msgstr "Utilisez la figure sélectionnée comme image de véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:216
-msgid "Use the default figure as the car image"
-msgstr "Utilisez la figure par défaut comme image de véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:217
-msgid "Optional description of the Car Part"
-msgstr "Description facultative du modèle de véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:218
-msgid "Flip car image"
-msgstr "Effet miroir d'un véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:219
-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/work/app/bin/bllnhlp.c:220
-msgid "Full Roadname"
-msgstr "Nom complet de la route"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:221
-#: ../../../../build/work/app/bin/bllnhlp.c:222
-msgid "Car Type"
-msgstr "Type de véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:223
-msgid "Reporting Marks (Roadname abbreviation)"
-msgstr "Sigles (abréviation du nom du réseau)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:224
-#: ../../../../build/work/app/bin/bllnhlp.c:411
-msgid "Car Number"
-msgstr "N° de véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:225
-msgid "Car body Color"
-msgstr "Couleur de carrosserie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:226
-msgid "Length of car body"
-msgstr "Longueur du chaudron"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:227
-msgid "Width of car body"
-msgstr "Largeur du chaudron"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:228
-msgid "Distance between Trucks "
-msgstr "Distance entre les bogies "
-
-#: ../../../../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 "Les attelages sont montés sur les chassis ou les bogies"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:231
-msgid "Overall Coupled Length"
-msgstr "Longueur totale couplée"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:232
-msgid "Coupler Length from end of car"
-msgstr "Longueur de l'attelage à partir du bout du wagon"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:233
-msgid "Diagram of Car"
-msgstr "Schéma de véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:234
-msgid "Item Index Number"
-msgstr "Numéro d'index de l'objet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:235
-msgid "Original Purchase Price"
-msgstr "Prix d'achat d'origine"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:237
-msgid "Condition of car"
-msgstr "Etat du véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:238
-msgid "Original Purchase Date"
-msgstr "Date d'achat d'origine"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:239
-msgid "Last Service Date"
-msgstr "Date du dernier service"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:240
-msgid "Number of identical cars to be entered"
-msgstr "Nombre de matériels roulants identiques à inscrire"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:241
-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/work/app/bin/bllnhlp.c:242
-msgid "Notes about the car"
-msgstr "Notes sur le véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:243
-#: ../../../../build/work/app/bin/bllnhlp.c:244
-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/work/app/bin/bllnhlp.c:245
-msgid "Finds the selected Car Item on the layout"
-msgstr "Trouve l'article de véhicule sélectionné sur le plan"
-
-#: ../../../../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 "Trier la liste d'articles"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:251
-msgid "Edit the selected Car Item"
-msgstr "Modifier le titre du véhicule sélectionné"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:252
-msgid "Add a new Car Item"
-msgstr "Ajouter un nouveau nom de véhicule"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:253
-msgid "Delete the selected Car Items"
-msgstr "Supprimer les wagons ou locomotives sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:254
-msgid "Import a Car Item .csv file"
-msgstr "Importer du véhicule à partir d'un fichier .csv"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:255
-msgid "Export a Car Item .csv file"
-msgstr "Exporter un fichier Car Item .csv"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:256
-msgid "Create a text list of the Car Items"
-msgstr "Créer la liste des noms de matériels roulants"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:257
-msgid "Specifies the radius of the circle track"
-msgstr "Spécifie le rayon de la voie circulaire"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:258
-msgid "Default command is Describe or Select"
-msgstr "La commande par défaut est \"Propriétés\" ou \"Sélectionner\""
-
-#: ../../../../build/work/app/bin/bllnhlp.c:259
-msgid "Action to invoke on Right-Click"
-msgstr "Action à appeler lors d'un clic droit"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:260
-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/work/app/bin/bllnhlp.c:261
-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/work/app/bin/bllnhlp.c:263
-msgid "The list of control elements"
-msgstr "La liste des éléments de contrôle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:264
-msgid "Edit the element"
-msgstr "Editer l'élément"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:265
-msgid "Delete the element"
-msgstr "Supprimer l'élément"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:266
-msgid "Contents Label for new Parameter file"
-msgstr "Contenu de l'étiquette du nouveau fichier de paramètres"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:267
-msgid "List of custom designed turnouts and structures"
-msgstr "Liste des aiguillages et des bâtiments conçus sur mesure"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:268
-msgid "Invoke designer editor"
-msgstr "Ouvre l'éditeur de modélisation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:269
-msgid "Remove selected entries"
-msgstr "Supprimer les entrées sélectionnées"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:270
-msgid "Copy selected entries to Parameter File"
-msgstr "Copier les entrées sélectionnées dans le fichier de paramètres"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:271
-msgid "Create a New part or prototype"
-msgstr "Créer une nouvelle pièce ou un prototype"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:272
-msgid "Update custom file and close"
-msgstr "Mettre à jour le fichier personnalisé et fermer"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:273
-msgid "Executes the next step of the demo"
-msgstr "Exécute la prochaine étape de la démo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:274
-msgid "Skip to next demo"
-msgstr "Passer à la prochaine démo"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:275
-msgid "Stops the demonstration and returns you to XTrackCAD"
-msgstr "Arrêt de la démonstration et retour à XTrackCAD"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:276
-msgid "Select speed of Playback"
-msgstr "Sélectionnez la vitesse de lecture"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:277
-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/work/app/bin/bllnhlp.c:314
-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/work/app/bin/bllnhlp.c:315
-msgid "Color tracks by layer or individually"
-msgstr "Voies en couleur par calque ou individuellement"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:316
-msgid "Color draw objects by layer or individually"
-msgstr "Dessiner en couleur des objets par couche ou individuellement"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:317
-msgid "Controls the drawing of hidden tracks"
-msgstr "Ajuste le dessin des voies cachées"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:318
-msgid "Controls the drawing of End-Points"
-msgstr "Ajuste le dessin des points d'extrémité"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:319
-msgid "How to draw track ties"
-msgstr "Comment dessiner des traverses"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:320
-msgid "Show crosshair at center of curves"
-msgstr "Afficher le réticule au centre des courbes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:321
-msgid "Drawing scale when to draw tracks with 2 rails"
-msgstr "Échelle minimale pour dessiner les voies avec 2 rails"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:322
-msgid "Drawing scale of the map window"
-msgstr "Échelle de dessin de la fenêtre de navigation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:323
-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/work/app/bin/bllnhlp.c:324
-msgid "Enable labels for Turnouts, Flextrack Lengths and Elevations"
-msgstr ""
-"Afficher les étiquettes pour les aiguillages, les voies flexibles et les "
-"élévations"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:325
-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/work/app/bin/bllnhlp.c:326
-msgid "Font size for labels on layout"
-msgstr "Taille de police des étiquettes sur le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:327
-msgid "Label elements on the Hot Bar"
-msgstr "Éléments d'étiquetage sur la barre d'objets"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:328
-msgid "Label elements on layout"
-msgstr "Éléments d'étiquetage sur le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:329
-msgid "Label elements for lists"
-msgstr "Éléments d'étiquetage pour les listes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:330
-msgid "How to group cars on the Train Hot Bar"
-msgstr "Regroupement des matériels roulants dans le catalogue de pièces"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:331
-msgid "Delay (in mS) between updating train movements"
-msgstr "Intervalle de mise à jour (en ms) des mouvements de train"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:332
-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/work/app/bin/bllnhlp.c:333
-msgid "Display unconnected endpoints of track with special marks"
-msgstr "Mettez en surbrillance les extrémités non connectées"
-
-#: ../../../../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 "Largeur des lignes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:337
-msgid "Color of the lines"
-msgstr "Couleur des voies"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:338
-msgid "List of types of Lumber"
-msgstr "Liste des types d'éléments de structure"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:339
-msgid "Color of Benchwork"
-msgstr "Couleur de la sous-bâtiment"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:340
-msgid "Orientation of Benchwork"
-msgstr "Orientation de la sous-bâtiment"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:341
-msgid "Size of Dimension Arrows"
-msgstr "Largeur des Flèches de cotation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:342
-msgid "This controls the sharpness of the easement curve"
-msgstr "Cela contrôle la netteté et la taille de la courbe de transition"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:343
-msgid "Minimum radius"
-msgstr "Rayon minimum"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:344
-msgid "Maximum offset"
-msgstr "Décalage maximum"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:345
-msgid "Easement length"
-msgstr "Longueur de la courbe de transition"
-
-#: ../../../../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 ""
-"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/work/app/bin/bllnhlp.c:347
-msgid "Complete easement selection"
-msgstr "Terminer la sélection des courbes de transition"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:348
-msgid "Type of elevation"
-msgstr "Type d'élévation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:349
-msgid "Height of End Point"
-msgstr "Hauteur du point de fin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:350
-msgid "Compute elevation based on neighbors"
-msgstr "Calculer la hauteur en fonction des voies adjacentes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:351
-msgid "Compute grade based on neighbors"
-msgstr "Calculer la pente en fonction des voies adjacentes"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:352
-msgid "Specify a name for an End-Point"
-msgstr "Spécifiez un nom pour un point de fin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:354
-msgid "Print parts list"
-msgstr "Imprimer la nomenclature"
-
-#: ../../../../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 "Ouvre la boîte de dialogue Configuration d'impression"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:356
-msgid "Save parts list to file"
-msgstr "Enregistrer la nomenclature dans un fichier"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:357
-msgid "This is the list of parts for the layout"
-msgstr "Voici la liste des pièces pour ce plan de voie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:358
-msgid "Enable prices on the Parts List"
-msgstr "Activer les prix sur la liste des pièces"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:359
-#: ../../../../build/work/app/bin/bllnhlp.c:362
-msgid "Spacing between major grid lines"
-msgstr "Espacement entre les lignes principales de la grille"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:360
-#: ../../../../build/work/app/bin/bllnhlp.c:363
-msgid "Allows the spacing to be subdivided"
-msgstr "Permet de diviser l'espacement"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:361
-#: ../../../../build/work/app/bin/bllnhlp.c:364
-msgid "Specifies if positions are snaped in this direction"
-msgstr "Activez la grille magnétique pour cette orientation"
-
-#: ../../../../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 "Affiche l'origine et l'angle de la grille"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:368
-msgid "Specifies if the grid is shown"
-msgstr "Spécifie si la grille est affichée"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:369
-msgid "Completes the grid specification"
-msgstr "Enregistrer le réglage de la grille et quitter"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:373
-msgid "Number of segments in Group"
-msgstr "Nombre de segments dans le groupe"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:374
-msgid "Replace the Selected object with the new definition?"
-msgstr "Faut-il remplacer l'objet sélectionné par la nouvelle définition?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:375
-msgid "Creates a new Structure (or Turnout)"
-msgstr "Crée une nouvelle bâtiment (ou aiguillage)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:376
-msgid "Elevation difference of Helix End-Points"
-msgstr "Différence d'élévation des bouts de l'hélicoïde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:377
-msgid "Helix Radius"
-msgstr "Rayon de l'hélicoïde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:378
-msgid "Number of turns in the helix"
-msgstr "Nombre de tours de l'hélicoïde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:379
-msgid "Angle betweek helix entrance and exit"
-msgstr "Angle entre l'entrée et la sortie de l'hélicoïde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:380
-msgid "Grade in helix"
-msgstr "Pente de l'hélicoïde"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:381
-msgid "Separation between helix layers"
-msgstr "Séparation entre couches hélicoïdales"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:382
-#, fuzzy
-msgid "Desired curve radius between straight tracks"
-msgstr "Créer une voie droite"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:383
-msgid "Layer list"
-msgstr "Liste des calques"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:384
-msgid "Layer Name"
-msgstr "Nom du calque"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:385
-msgid "Color of layer"
-msgstr "Couleur de la couche"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:386
-msgid "Layer is drawn on Main window"
-msgstr "La couche est dessinée dans la fenêtre principale"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:387
-msgid "Layer cannot be changed"
-msgstr "Le calque ne peut pas être modifié"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:388
-msgid "Layer is drawn on Map window"
-msgstr "La couche est dessinée dans la fenêtre de navigation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:389
-msgid "Number of layer buttons to show"
-msgstr "Nombre de boutons de calques à afficher"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:390
-msgid "Number of objects in this layer"
-msgstr "Nombre d'objets dans cette couche"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:392
-msgid "Load layer configuration from default"
-msgstr "Charger la configuration de la couche par défaut"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:393
-msgid "Save current layer configuration as default"
-msgstr "Enregistrer la configuration actuelle comme couche par défaut"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:394
-msgid "Overwrite layer configuration with system default values"
-msgstr "Réinitialiser le réglage des couches aux valeurs par défaut du système"
-
-#: ../../../../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 "Spécifie la taille de la pièce (en pouces ou en centimètres)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:397
-msgid "Specifies the layout Title that will appear on printouts"
-msgstr "Spécifie le titre du plan qui apparaîtra sur les impressions"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:398
-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/work/app/bin/bllnhlp.c:399
-msgid "Specifies the Modelling Scale"
-msgstr "Spécifie l'échelle de modélisation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:400
-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/work/app/bin/bllnhlp.c:401
-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/work/app/bin/bllnhlp.c:402
-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/work/app/bin/bllnhlp.c:403
-msgid "Select the background image"
-msgstr "Sélectionnez l'image d'arrière-plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:404
-msgid "Remove the background image"
-msgstr "Supprimer l'image de fond"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:405
-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/work/app/bin/bllnhlp.c:406
-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/work/app/bin/bllnhlp.c:407
-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/work/app/bin/bllnhlp.c:408
-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/work/app/bin/bllnhlp.c:409
-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/work/app/bin/bllnhlp.c:412
-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/work/app/bin/bllnhlp.c:414
-msgid "Specifies number of pixels per inch (or centimeter)"
-msgstr "Spécifie le nombre de pixels par pouce (ou centimètre)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:416
-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/work/app/bin/bllnhlp.c:417
-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/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 ""
-"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/work/app/bin/bllnhlp.c:419
-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/work/app/bin/bllnhlp.c:420
-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/work/app/bin/bllnhlp.c:421
-msgid "Validates the name and key. Terminates the registration command"
-msgstr "Valide le nom et la clé. Met fin à la commande d'enregistrement"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:422
-msgid "0ᅵ is up or to the right"
-msgstr "0ï¿œ est en haut ou à droite"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:423
-msgid "Choose english (inches) or metric (centimeters)"
-msgstr "Choisissez anglais (pouces) ou métrique (cm)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:424
-msgid "How to display length measurements"
-msgstr "Comment afficher les mesures de longueur"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:425
-msgid "Do not create tracks to be shorter than this value"
-msgstr "Ne créez pas de voies plus courtes que cette valeur"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:426
-msgid "Maximum distance between connected end points"
-msgstr "Distance maximale entre des extrémités connectées"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:427
-msgid "Minimum angle between connected End-Points"
-msgstr "Angle minimal entre les extrémités connectées"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:428
-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/work/app/bin/bllnhlp.c:429
-msgid "Trains will crash above this speed"
-msgstr "Les trains dérailleront au-dessus de cette vitesse"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:430
-msgid "Enable/Disable balloon popup help windows"
-msgstr "Activer/Désactiver les bulles d'aide contextuelles"
-
-#: ../../../../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 ""
-"Jusqu'où vous pouvez déplacer la souris avant que ce soit considéré comme un "
-"glisser"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:433
-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/work/app/bin/bllnhlp.c:434
-msgid "Minimum distance (in pixels) between grid lines/ticks"
-msgstr "Distance minimale (en pixels) entre les lignes/marques de quadrillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:435
-#, fuzzy
-msgid ""
-"Specifies the Check Point frequency; number of modifications made since the "
-"last checkpoint."
-msgstr ""
-"Nombre de modifications avant qu'une nouvelle sauvegarde automatique n'ait "
-"lieu."
-
-#: ../../../../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 "Modifier le dernier plan de voies ou en créer un nouveau"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:439
-msgid "Updated cost of current selected item"
-msgstr "Coût actualisé de l'élément actuellement sélectionné"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:441
-msgid "Selection list for prices"
-msgstr "Liste de sélection des prix"
-
-#: ../../../../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 "Prix d'une longueur spécifiée de voie flexible"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:446
-msgid "Controls the printing of a centerline of track cmdPrint"
-msgstr "Ajuste le dessin de l’axe des voies"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:447
-msgid "Controls the reduction (scale) of the printout"
-msgstr "Ajuste la réduction (d'échelle) pour l'impression"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:448
-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/work/app/bin/bllnhlp.c:449
-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/work/app/bin/bllnhlp.c:450
-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/work/app/bin/bllnhlp.c:451
-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/work/app/bin/bllnhlp.c:452
-msgid "Print page in Portrait or Landscape format"
-msgstr "Imprimer la page au format Portrait ou Paysage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:453
-msgid "Order of printing pages"
-msgstr "Ordre des pages d'impression"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:454
-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/work/app/bin/bllnhlp.c:455
-msgid "Ignore unprintable page margins?"
-msgstr "Ignorer les marges non imprimables?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:456
-msgid "Print Registration Marks at 1:1?"
-msgstr "Imprimer les aides au positionnement à l'échelle 1:1 ?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:457
-msgid "Print Snap Grid?"
-msgstr "Imprimer la grille magnétique ?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:458
-msgid "Print Rulers on all page edges?"
-msgstr "Imprimer des règles sur tous les bords de page ?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:459
-msgid "Print Roadbed Outline?"
-msgstr "Imprimer le contour du ballast ?"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:460
-msgid "Print Roadbed Outline"
-msgstr "Imprimer le contour du ballast"
-
-#: ../../../../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 ""
-"Origine de la grille d'impression. Utile si certaines pages sont réimprimées"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:463
-msgid "Resets the origin and angle to 0"
-msgstr "Réinitialise à 0 l'alignement et l'angle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:465
-msgid "Deselects all pages"
-msgstr "Désélectionner toutes les pages"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:467
-msgid "Print selected pages and terminates the print command"
-msgstr "Imprime les pages sélectionnées et termine la commande d'impression"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:468
-#, fuzzy
-msgid "List of loaded, shown or hidden parameter files"
-msgstr "Liste des fichiers de paramètres chargés et non chargés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:469
-msgid "Show parameter files by names or descriptions"
-msgstr "Afficher les fichiers de paramètres par noms ou descriptions"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:470
-#, fuzzy
-msgid "Toggle the shown status of the selected parameter file"
-msgstr "Modifie l'état des fichiers de paramètres sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:471
-#, fuzzy
-msgid "Find extra parameter files from the filesystem"
-msgstr "Trouver un fichier de paramètres à charger"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:472
-#, fuzzy
-msgid "Find parameter files from the system library"
-msgstr "Trouver un fichier de paramètres à charger"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:473
-msgid "Update parameter file list"
-msgstr "Mettre à jour la liste des fichiers de paramètres"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:474
-#, fuzzy
-msgid "Reload parameter file from list"
-msgstr "Lecture des fichiers de paramètres"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:475
-msgid "Select all parameter files shown"
-msgstr "Sélectionnez tous les fichiers de paramètres affichés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:476
-msgid "Profile of specified path"
-msgstr "Profil de la voie spécifiée"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:477
-msgid "Clear the profile"
-msgstr "Effacer le profil de hauteur"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:478
-msgid "Print the profile"
-msgstr "Imprimer le profil"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:480
-msgid "Stop recording"
-msgstr "Arrêt d'enregistrement"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:481
-msgid "Insert a message"
-msgstr "Insérer un message"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:482
-msgid "End a message"
-msgstr "Fin du message"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:483
-msgid "Message body"
-msgstr "Corps du message"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:484
-msgid "Possible turnouts"
-msgstr "Aiguillages possibles"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:485
-msgid "Skip this turnout"
-msgstr "Ignorer cette participation"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:487
-msgid "Manufacturer of Object"
-msgstr "Marque de l'objet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:488
-msgid "Description of Object"
-msgstr "Description d'objet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:489
-msgid "Part Nuber of Object"
-msgstr "Référence de l'objet"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:491
-msgid "Rescale by Scale Conversion or by Ratio"
-msgstr "Redimensionner par conversion d'échelle ou rapport"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:492
-msgid "Original Scale of the selected objects"
-msgstr "Échelle d'origine des objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:493
-msgid "Original Gauge of the selected objects"
-msgstr "Ecartement de voies d'origine des objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:494
-msgid "New Scale of the selected objects"
-msgstr "Nouvelle échelle des objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:495
-msgid "New Gauge of the selected objects"
-msgstr "Nouvel écartement de voies des objets sélectionnés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:496
-msgid "Change track dimensions to new scale"
-msgstr "Convertir les dimensions de la voie à la nouvelle échelle"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:497
-msgid "Change size by this amount"
-msgstr "Changer la taille d'un facteur"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:499
-msgid "Snap Grid Line and Division"
-msgstr "Grille magnétique voie et division"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:500
-msgid "X and Y position markers"
-msgstr "Repères de position X et Y"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:501
-msgid "Border rulers, room boundaries and table edges"
-msgstr "Règles de bordures, limites de pièce et bords de table"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:502
-msgid "Primary Axis of grid rotation"
-msgstr "Axe principal de rotation de la grille"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:503
-msgid "Secondary Axis of grid rotation"
-msgstr "Axe secondaire de rotation de la grille"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:504
-msgid "Unselected tracks"
-msgstr "Voies non sélectionnées"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:505
-msgid "Selected tracks"
-msgstr "Voies sélectionnées"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:506
-msgid "Color of tracks on the Profile path"
-msgstr "Couleur des voies sur le profil de hauteur"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:507
-msgid "Color of Exceptional tracks"
-msgstr "Couleur des voies exceptionnelles (hors limites)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:508
-msgid "Color of track ties"
-msgstr "Couleur des traverses"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:509
-msgid "Updates the colors"
-msgstr "Met à jour les couleurs"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:510
-msgid "Angle in degrees"
-msgstr "Angle en degrés"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:511
-msgid "Rotate object(s) by specified amount"
-msgstr "Faire pivoter le ou les objets d'un certain angle"
-
-#: ../../../../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 "Description de l'élévation"
-
-#: ../../../../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 "Copier les entrées sélectionnées dans le fichier de paramètres"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:517
-#, fuzzy
-msgid "Select All found entries"
-msgstr "Liste de sélection des prix"
-
-#: ../../../../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 "Choisissez les commandes à maintenir (sticky)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:520
-msgid "Make the commands sticky"
-msgstr "Rendre les commandes collantes (sticky)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:521
-msgid "List of available structure"
-msgstr "Liste des bâtiments disponibles"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:522
-msgid "Diagram of the selected structure"
-msgstr "Schéma de la bâtiment sélectionnée"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:523
-msgid "Hide Selection window when placing Structure"
-msgstr "Masquer la fenêtre de sélection lors du placement de la bâtiment"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:524
-msgid "Drawing scale and size"
-msgstr "Échelle et taille du dessin"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:525
-msgid "Complete structure placement"
-msgstr "Placement complet de la bâtiment"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:526
-msgid "Choose a Pier number"
-msgstr "Choisissez un numéro de colonne"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:527
-msgid "Name of the Motor"
-msgstr "Nom du moteur"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:528
-msgid "Value when switch is normal"
-msgstr "Valeur lorsque l'aiguillage est normal"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:529
-msgid "Value when the switch is reversed"
-msgstr "Valeur lorsque l'aiguillage est dévié"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:530
-msgid "Value for a positive comfirmation of switch position"
-msgstr "Valeur pour une confirmation positive de la position de l'aiguillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:532
-msgid "Useful information about the program"
-msgstr "Informations utiles sur le programme"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:533
-msgid "Show Tip of the Day every time the program starts"
-msgstr "Montrer le conseil du jour à chaque démarrage du programme"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:534
-msgid "Show the next Tip of the Day"
-msgstr "Montrer le prochain conseil du jour"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:535
-msgid "Show the previous Tip of the Day"
-msgstr "Montrer le précédent conseil du jour"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:537
-msgid "Controls which Command Buttons are displayed"
-msgstr "Afficher ou masquer les boutons de commande dans la barre d'outils"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:538
-msgid "List of Cars"
-msgstr "Liste des matériels roulants"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:539
-msgid "List of active trains"
-msgstr "Liste des trains actifs"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:541
-msgid "Train odometer"
-msgstr "Compteur de distance"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:542
-msgid "Reset odometer to 0"
-msgstr "Remise à 0"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:543
-msgid "Find train on layout"
-msgstr "Chercher la train sur le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:544
-msgid "Follow train around layout"
-msgstr "Suivre le train sur le plan"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:545
-msgid "Flip direction at End Of Track"
-msgstr "Inverser la direction à la fin de la voie"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:546
-msgid "Change direction of train"
-msgstr "Inverser la direction du train"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:547
-msgid "Stop the train"
-msgstr "Arrêt du train"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:548
-msgid "List of available turnouts for the current scale"
-msgstr "Liste des aiguilles disponibles pour l'échelle actuelle"
-
-#: ../../../../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 ""
-"Schéma de l'aiguillage actuellement sélectionné. Cliquez sur une extrémité "
-"pour sélectionner l'extrémité active"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:550
-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/work/app/bin/bllnhlp.c:551
-msgid "Hide Selection window when placing Turnout"
-msgstr "Masquer la fenêtre de sélection lorsque vous placez l'aiguillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:552
-msgid "The selected Active End-Point"
-msgstr "Le point de fin actif sélectionné"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:553
-msgid "Current selected turnout, (displayed in the diagram window)"
-msgstr ""
-"Aiguillage sélectionné actuellement, (affiché dans la fenêtre du diagramme)"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:554
-msgid "One the End-Points that can be selected"
-msgstr "L'un des points d'extrémité pouvant être sélectionnés"
-
-#: ../../../../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 "Angle de la voie spécifiée par rapport à l'axe de l'aiguillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:558
-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/work/app/bin/bllnhlp.c:559
-#: ../../../../build/work/app/bin/bllnhlp.c:560
-msgid "Desciption"
-msgstr "Desciption"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:561
-msgid "Turnout description (Manuf., Size, Part Number, etc)"
-msgstr "Description de l'aiguillage (fabricant, angle, numéro de pièce, etc.)"
-
-#: ../../../../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 "Longueur de la ligne de base à la fin de la voie sélectionnée"
-
-#: ../../../../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 ""
-"Décalage du point de fin de la voie par rapport à l'axe central de "
-"l'aiguillage"
-
-#: ../../../../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 ""
-"Imprime un diagramme en taille réelle de l'aiguillage pour vérification"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:572
-msgid "Color of Roadbed lines"
-msgstr "Couleur des voies de balast"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:573
-msgid "Width of Roadbed lines"
-msgstr "Largeur des lignes de ballast"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:574
-msgid "Width of Roadbed"
-msgstr "Largeur du ballast"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:576
-msgid "Closes the window and returns to the Turnout Selection window"
-msgstr "Ferme la fenêtre et retourne à la sélection d'aiguillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:577
-msgid "Specifies the diameter of the turntable"
-msgstr "Spécifie le diamètre du pont tournant"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:578
-msgid "Old Turnout title"
-msgstr "Ancien titre de l'aiguillage"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:579
-msgid "List of available titles"
-msgstr "Liste des titres disponibles"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:580
-msgid "Leave the Turnouts' title unchanged"
-msgstr "Laisser le titre d'aiguillage inchangé"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:581
-msgid "Invoke the Parameter Files dialog"
-msgstr "Ouvre la boîte de dialogue Fichier de paramètres"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:582
-msgid "List of available turnouts"
-msgstr "Liste des aiguillages disponibles"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:583
-msgid "Update the Turnouts' title"
-msgstr "Mettre à jour le titre des aiguillages"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:587
-msgid "Sample"
-msgstr "Exemple"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:589
-msgid "Slant"
-msgstr "Incliner"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:590
-msgid "Font selection dialog"
-msgstr "Boite de dialogue de sélection de police"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:591
-msgid "Weight"
-msgstr "Poids"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:592
-msgid "Printer Abort Window"
-msgstr "Annuler l'impression"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:593
-msgid "Print to filename"
-msgstr "Nom du fichier d'impression"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:594
-msgid "Specify Postscript font alias mapping"
-msgstr "Spécifier l'affectation des polices Postscript"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:595
-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/work/app/bin/bllnhlp.c:596
-msgid "Closes this dialog"
-msgstr "Ferme cette boîte de dialogue"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:597
-msgid "Page orientation"
-msgstr "Orientation de la page"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:598
-msgid "Unprintable margins"
-msgstr "Marges non imprimables"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:599
-msgid "Updates and closes this dialog"
-msgstr "Met à jour et ferme cette boîte de dialogue"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:600
-msgid "Choose paper size"
-msgstr "Choisissez le format de papier"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:601
-msgid "Choose printer"
-msgstr "Choisissez une imprimante"
-
-#: ../../../../build/work/app/bin/bllnhlp.c:602
-msgid "Print test page"
-msgstr "Impression de la page de test"
-
-#. 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 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: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:3
-#: ../../../../build/work/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."
-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."
-
-#. 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 ""
-"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: 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 ""
-"Un certain nombre d'exemples de plans sont fournis. Ces fichiers sont "
-"accessibles par \"Aide|Exemples\"."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:10
-#: ../../../../build/work/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 ""
-"Une fois installés, les unités de longueur sont définies en fonction de "
-"votre pays : pouces pour les États-Unis ou le Canada et centimètres "
-"ailleurs. Vous pouvez changer cela dans la boîte de dialogue \"Options | "
-"Préférences\" en choisissant entre métrique et anglais."
-
-#. 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 ""
-"Vous pouvez modifier la taille globale de votre plan dans la boîte de "
-"dialogue \"Options|Plan\"."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:14
-#: ../../../../build/work/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 ""
-"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\"."
-
-#. 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 ""
-"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."
-
-#. 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 ""
-"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: 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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:25
-#: ../../../../build/work/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"
-" 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 ""
-"Les voies courbes peuvent être créées de quatre manières différentes:\n"
-" à partir du premier 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 premier au deuxième point de fin\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."
-
-#. 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 ""
-"Lors de la création d'une voie droite ou courbe en faisant glisser depuis le "
-"premier 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: 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 ""
-"Les cercles de voies offrent un moyen rapide de voir quelle disposition des "
-"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."
-
-#. 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 ""
-"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: 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 ""
-"\"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:51
-#: ../../../../build/work/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/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 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 \"C:\\Users\\Nom\\AppData\\Roaming\\XTrackCad\") vers "
-"le répertoire de travail où se trouvent les fichiers \"file.xtc\""
-
-#. 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 ""
-"La commande Parallèle est utile pour créer des dépôts et des voies "
-"d'évitement. Si une voie parallèle touche presque une voie existante, elle "
-"se connecte automatiquement."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"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/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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"Vous pouvez décharger les fichiers de paramètres que vous n'utilisez pas "
-"dans la boîte de dialogue \"Fichiers de paramètres\". Cela supprime les "
-"définitions d'aiguillage et de structure inutilisées de la barre dynamique "
-"et accélère le démarrage du programme."
-
-#. 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 ""
-"Comme alternative à la barre d'outils ou aux touches de menu, un autre menu "
-"de commande peut être utilisé en cliquant avec le bouton droit dans la "
-"fenêtre principale."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"Pour actualiser la fenêtre principale, appuyez sur Ctrl+L (maintenez "
-"enfoncée la touche «Ctrl», puis appuyez sur la touche «l»)."
-
-#. 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 ""
-"Le menu Fichier contient une liste des 5 derniers plans sur lesquels vous "
-"travailliez."
-
-#. 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 ""
-"Dans la boîte de dialogue \"Imprimer\", l'option \"Imprimer le contour du "
-"ballast\" peut être sélectionnée afin de pouvoir imprimer des modèles de "
-"ballast à l'échelle (1:1)."
-
-#. 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 ""
-"Appuyez sur la touche «ESC» pour annuler la commande en cours et activer "
-"automatiquement la commande par défaut (qui est soit Propriétés, soit "
-"Sélectionner)."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"Chaque calque peut être affiché ou masqué par la bascule 'Visible' dans la "
-"boîte de dialogue Gérer|Calques."
-
-#. 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 ""
-"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: 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 ""
-"Le nom d'un calque est affiché dans la bulle de dialogue de chaque calque "
-"respectif."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:124
-#: ../../../../build/work/app/i18n/custmsg.h:98
-#, fuzzy
-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 ""
-"Pour copier un groupe d'objets : sélectionnez-les, appuyez sur Ctrl+C (ou "
-"choisissez Copier dans le menu Editer), appuyez sur Ctrl+V (ou choisissez "
-"Coller dans le menu Editer ).\n"
-"Les objets copiés sont insérés sur le plan de voie et peuvent ensuite être "
-"déplacés ou tournés et ainsi mis en position."
-
-#. 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 ""
-"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: 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 ""
-"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 "
-"sélectionnées sont ajoutées au point de fin."
-
-#. 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 ""
-"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/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 ""
-"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: 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 ""
-"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: 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 ""
-"Les longueurs peuvent être saisies indépendamment des valeurs prédéfinies "
-"dans la boîte de dialogue \"Options|Paramètres\"."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"La touche «p» convertira une mesure d'échelle en une mesure de prototype."
-
-#. 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 ""
-"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: 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 ""
-"Utilisez le bouton \"Déplacer vers\" dans le menu \"Gérer|Eléments définis "
-"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: 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 ""
-"Si vous utilisez une imprimante avec du papier listing, vous pouvez modifier "
-"l'ordre des pages pour les imprimer dans le bon ordre."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"Utilisez le compteur de la commande du train pour mesurer les distances de "
-"la voie."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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: 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 ""
-"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 sue la voie à la main."
-
-#. 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 ""
-"Vous pouvez ajouter de nouveaux segments de voie à une définition "
-"d'aiguillage ou pour créer une nouvelle définition dans laquelle des voies "
-"individuelles sont combinées."
-
-#. 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 ""
-"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."
-
-#. 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 ""
-"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: 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 ""
-"La commande \"Modifier|Propriétés\" permet de modifier la taille de police "
-"des objets texte."
-
-#. 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 ""
-"La commande \"Modifier|Propriétés\" permet de modifier la taille des "
-"descriptions de ligne de cote."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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."
-
-#. 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 ""
-"Vous pouvez exporter les voies sélectionnées dans un fichier DXF qui peut "
-"être lu par la plupart des programmes de CAO."
-
-#. 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 ""
-"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\"."
-
-#. 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 ""
-"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."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 "Les voies de cote indiquent la distance entre deux points."
-
-#. 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 ""
-"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: 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 ""
-"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: 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 ""
-"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ée ou non conformes."
-
-#. 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 ""
-"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"
-"Veuillez consulter l'aide et la démonstration pour les Elévations."
-
-#. 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 ""
-"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: 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 ""
-"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\"."
-
-#. 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 ""
-"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."
-
-#. 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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/help/xtrkcad.tip:243
-#: ../../../../build/work/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 ""
-"Si vous maintenez la touche Ctrl enfoncée lorsque vous utilisez la commande "
-"Rotation, la rotation diminue par incréments de 15°."
-
-#. 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 ""
-"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: 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 ""
-"C'est le dernier conseil. Si vous avez des ajouts ou des commentaires, "
-"veuillez nous en faire part."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:25
-#: ../../../../build/work/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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:31
-#: ../../../../build/work/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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:48
-#: ../../../../build/work/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"
-
-#. 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
-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"
-"\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 "Il est presque possible de créer un cercle complet.\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 ""
-"Si vous déplacez la souris au-delà du point de départ de l'arc, le tracé "
-"devient très court.\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 "Ici, vous êtes averti que la voie sera trop courte.\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 ""
-"Lorsque vous éloignez le curseur de l'arc, vous créez une voie droite "
-"tangente à l'arc.\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
-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/work/app/i18n/custmsg.h:210
-msgid "a straight or a curve.\n"
-msgstr ""
-"droite ou courbe.\n"
-"\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
-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 ""
-"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/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 ""
-"L'ancre de la croix bleue montre que c'est possible lorsque shift est "
-"maintenu enfoncé sans boutons.\n"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:209
-#: ../../../../build/work/app/i18n/custmsg.h:216
-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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmadjend.xtr:252
-#: ../../../../build/work/app/i18n/custmsg.h:218
-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 ""
-"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/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 ""
-"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: 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 "Vous pouvez dessiner différentes formes de chassis :\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:223
-msgid "- rectangular (1x2, 2x4 etc)\n"
-msgstr "- rectangulaire (1x2, 2x4 etc.)\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:224
-msgid "- L girders\n"
-msgstr "- L Supports\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:225
-msgid "- T girders\n"
-msgstr "- T Supports\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:226
-msgid "You can also draw them in different orientations.\n"
-msgstr "Vous pouvez également les dessiner dans différentes orientations.\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 "Nous dessinons deux équerres de 3x6 pouces.\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 ""
-"La bride des équerres supérieures se trouve sur le bord extérieur du "
-"support. Nous voulons changer le support afin que les deux brides soient à "
-"l'intérieur.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:231
-msgid "We will use the <Describe> command for this.\n"
-msgstr "Pour cela nous utiliserons la commande <Propriétés>.\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 "Changer l'orientation à droite.\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 "Maintenant, les deux rebords sont à l'intérieur des deux longerons.\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 ""
-"Appuyez sur le bouton <Propriétés> pour annuler toute autre commande en "
-"cours.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:238
-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: 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 ""
-"La commande démarrée a été annulée en appuyant sur le bouton <Decrire>.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:241
-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"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:57
-#: ../../../../build/work/app/i18n/custmsg.h:243
-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"
-"\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 "Regardons l'aiguillage ...\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:73
-#: ../../../../build/work/app/i18n/custmsg.h:247
-msgid "and change the turnout name and part no.\n"
-msgstr ""
-"et changez le nom d'aiguillage et son numéro.\n"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:84
-#: ../../../../build/work/app/i18n/custmsg.h:249
-msgid "You can change the contents of text...\n"
-msgstr ""
-"Vous pouvez modifier le contenu du texte …\n"
-"\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 "et sa taille.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmcancel.xtr:100
-#: ../../../../build/work/app/i18n/custmsg.h:253
-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"
-"\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 ""
-"Comme pour la commande de voie <Courbe>, il existe plusieurs façons de créer "
-"une voie circulaire.\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 ""
-"La première possibilité consiste à définir un rayon fixe et à faire glisser "
-"vers la position souhaitée.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:258
-msgid "We will change the Radius before proceeding.\n"
-msgstr "Nous allons changer le rayon avant de continuer.\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 ""
-"La méthode suivante consiste à faire glisser le bord du cercle vers le "
-"centre.\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 ""
-"La dernière méthode, comparable, consiste à dessiner du centre vers le "
-"cercle.\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 ""
-"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: 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 ""
-"Nous utilisons la commande <Connecter deux voies> pour aligner les voies "
-"voisines afin que l'écart soit fermé.\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 ""
-"Remarque : les réglages ne sont effectués que sur les voies ne comportant "
-"que 1 ou 2 connexions. Dans cet exemple, l'aiguillage ne serait pas "
-"affecté.\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 "Et maintenant, l'écart est comblé.\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 "D'autres voies ont été légèrement décalées pour combler l'écart.\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 "Vous pouvez voir les petits décalages.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:275
-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"
-
-#. 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 ""
-"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/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 ""
-"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 <Connecter>.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:280
-msgid "First use the <Split> command to disconnect the tracks.\n"
-msgstr ""
-"Commencez par utiliser la commande <Segmenter> pour déconnecter les voies.\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 ""
-"Ensuite, vous pouvez activer la commande <Connecter> et cliquer sur les deux "
-"points d'extrémité tout en maintenant la touche Maj enfoncée.\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 ""
-"L'exemple montre le plan d'une simple figure-8 utilisant une section de "
-"voie.\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 ""
-"Comme vous pouvez le voir, les voies ne sont pas exactement alignées au même "
-"point.\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 ""
-"Avec la commande <Connecter deux voies>, nous pouvons facilement déplacer "
-"les voies à connecter et connecter les 2 points de fin.\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 "Les deux points d'extrémité sont maintenant alignés et connectés.\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 ""
-"La connexion a été établie en ajoutant de petits espaces dans d'autres "
-"voies.\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 "Il existe plusieurs façons de créer une voie courbe.\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 ""
-"Vous pouvez faire votre choix en cliquant sur le petit bouton à gauche du "
-"bouton de commande <Courbe>, si la Courbe actuelle n'est pas celle que vous "
-"souhaitez.\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 ""
-"La première possibilité consiste à sélectionner le premier point de fin et à "
-"le faire glisser en direction de la courbe.\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 ""
-"Vous verrez une voie droite avec une flèche rouge avec deux pointes à la "
-"fin.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:300
-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: 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 ""
-"La méthode suivante consiste à cliquer sur un point de fin et à faire "
-"glisser vers le centre de la courbe.\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 ""
-"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/work/app/i18n/custmsg.h:305
-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: 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 ""
-"La méthode suivante est similaire à la précédente, mais commencez par "
-"glisser du point milieu vers un point de fin.\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 "Encore une fois, tirez sur une flèche rouge pour terminer la courbe.\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 ""
-"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: 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 "Maintenant, faites glisser la flèche rouge pour compléter la courbe.\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 ""
-"Cette démo crée un panneau de contrôle pour une partie d'une installation "
-"plus grande.\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 ""
-"Pour notre panneau de contrôle, nous utiliserons des lignes de 1/2\"de "
-"large.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:319
-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/work/app/i18n/custmsg.h:320
-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"
-
-#. 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 ""
-"Maintenant, nous supprimons le brouillon et activons la grille "
-"d'accrochage.\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 "Première étape : tracez les voies représentant les voies.\n"
-
-#: ../../../../build/work/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/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 ""
-"Pour créer une ligne large de 1/4 pouce, la résolution de l'écran (DPI) est "
-"divisée par 4.\n"
-"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:327
-msgid ""
-"For MS-Windows the DPI is usually 98, so choose: 98/4 = 24 (approximately).\n"
-msgstr ""
-"Pour MS-Windows, le ppp (DPI) est généralement de 98; choisissez donc: "
-"(98/4) = 24 (environ).\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:328
-msgid "For Linux, the DPI is usually 72, so choose: 72/4 = 18.\n"
-msgstr ""
-"Pour Linux, le ppp (DPI) est généralement de 72, choisissez donc : (72/4) = "
-"18.\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 ""
-"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: 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 ""
-"Deuxième étape : ajouter des LED pour les indicateurs de position "
-"d'aiguillage.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:333
-msgid "We will use T1 red and green LEDs.\n"
-msgstr "Nous allons utiliser des LED rouges et vertes T1.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:334
-msgid "We will zoom in to show positioning.\n"
-msgstr "Nous allons zoomer pour afficher le positionnement.\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 ""
-"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: 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 ""
-"Maintenant, nous allons ajouter des boutons pour contrôler les aiguillages.\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 "Ajoutons des signaux à notre voie d’évitement.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:341
-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/work/app/i18n/custmsg.h:342
-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: 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 ""
-"Nous faisons pivoter les signaux par un Maj-clic droit et sélectionnons 90° "
-"CW dans le menu contextuel. Nous ne pouvons pas afficher le menu contextuel "
-"en mode démo, mais simulerons l'effet.\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 ""
-"Les sorties du parement seront protégées par des signaux à une seule tête.\n"
-"\n"
-"\n"
-"La sortie de la voie de garage est sécurisée par un simple signal.\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 "Maintenant quelques améliorations mineures.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:349
-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/work/app/i18n/custmsg.h:350
-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/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 ""
-"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/work/app/i18n/custmsg.h:352
-msgid "Users on those platforms will not see the gap.\n"
-msgstr "Les utilisateurs de ces plateformes ne verront pas l'écart.\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 ""
-"Ajoutez une flèche pour indiquer les voies qui se connectent sur le reste du "
-"plan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:355
-msgid "The second arrow will be flipped 180°\"\n"
-msgstr ""
-"La deuxième flèche sera tournée de 180°\"\n"
-"\n"
-
-#. 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 "Et ajoutez des étiquettes.\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 ""
-"Nous aimerions imprimer le panneau de commande sur une page de 8\"x11\", "
-"mais il est trop large.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:360
-msgid "Lets tighten it up a bit.\n"
-msgstr "Permet de resserrer un peu.\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 ""
-"Commencez par réactiver la grille magnétique afin que les objets restent "
-"alignés lors de leurs déplacements.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmctlpnl.xtr:840
-#: ../../../../build/work/app/i18n/custmsg.h:363
-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: 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 "Maintenant déplacez le côté droit de la voie d’évitement.\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 ""
-"Maintenant, ajustez les extrémités des voies principale et d’évitement.\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 "Et déplacez aussi le titre.\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 "Maintenant, vous pouvez l'imprimer.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:372
-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: 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 ""
-"Appuyez sur le bouton <Suppr> pour supprimer les voies sélectionnées sur le "
-"plan.\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 ""
-"Commencez par sélectionner les voies à supprimer, puis appuyez sur la touche "
-"<Suppr>.\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 ""
-"Si vous supprimez une voie comportant un arc de transition, cet arc de "
-"transition sera également supprimé.\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 "Vous pouvez utiliser la commande <Annuler> pour restaurer les voies.\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 ""
-"En faisant glisser avec la souris tout en maintenant le bouton gauche "
-"enfoncé, vous pouvez marquer toutes les voies d'une zone.\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 ""
-"Remarque : seules les voies de la zone sélectionnée sont supprimées. Mais "
-"comme la courbe de transition est connectée à une voie supprimée, elle sera "
-"également supprimée.\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 ""
-"La démo simule également la saisie de valeurs et la sélection d'options dans "
-"diverses boîtes de dialogue.\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 ""
-"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"
-
-#. 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 ""
-"Ici, nous apportons des modifications dans la boîte de dialogue d'affichage. "
-"Remarquez comment cela est simulé.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:389
-msgid "First we are setting 'Draw Tunnel' to 'Normal'\n"
-msgstr ""
-"D'abord, nous paramétrons «Dessiner un tunnel» sur «Normal»\n"
-"\n"
-
-#. 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 ""
-"Maintenant, nous changeons 'Taille de la police de l'étiquette' en «56»\n"
-
-#. 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 "Nous allons changer quelques autres options\n"
-
-#. 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 ""
-"Cet effet n'est utilisé qu'en mode démonstration. Pendant le fonctionnement "
-"normal, vous ne le verrez pas.\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 "Les voies de cote servent à marquer les distances entre deux points.\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 ""
-"Ici, nous créons une ligne de cote pour montrer la distance entre deux voies "
-"parallèles.\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 ""
-"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: 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 ""
-"La commande <Propriétés> peut être utilisée pour modifier la position de la "
-"ligne de cote et la taille des nombres.\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 ""
-"Cet exemple montrera l'effet de l'utilisation de courbes de transition lors "
-"de la jonction de voies.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:407
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:28
-#: ../../../../build/work/app/i18n/custmsg.h:409
-msgid "First select one end of the track\n"
-msgstr ""
-"Sélectionnez d'abord une fin de voie\n"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:39
-#: ../../../../build/work/app/i18n/custmsg.h:411
-msgid "Now the end of different track\n"
-msgstr "Et maintenant, la fin d'une autre voie\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmease.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:413
-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: 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 ""
-"Lorsque vous êtes satisfait, appuyez sur Entrée ou Espace, sinon utilisez "
-"Esc\n"
-
-#. 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 ""
-"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: 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 ""
-"Maintenant, nous allons plutôt montrer les easements traditionnelles.\n"
-
-#. 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 ""
-"Nous avons choisi des courbes de transition serrées. Le rayon minimum que "
-"nous pouvons utiliser est de 9,75 \".\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:422
-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"
-
-#. 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 ""
-"Notez que la courbe de connexion ne rencontre pas tout à fait les voies "
-"droites. C'est le \"décalage\".\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 "Ici, le rayon de connexion est trop petit.\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 ""
-"La courbe de connexion est composée de trois voies, la courbe et deux "
-"segments de courbes de transition à chaque extrémité.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:430
-msgid ""
-"We have designed part of the layout with a siding, 2 branches and a spiral "
-"loop. We want to set elevations.\n"
-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/work/app/i18n/custmsg.h:431
-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"
-"\n"
-
-#. 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 "Nous allons d’abord définir les élévations au bout des branches.\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 ""
-"Nous allons sélectionner la fin de la branche supérieure et définir "
-"l'élévation à 4\"\n"
-"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:436
-msgid "First, click on the End-Point.\n"
-msgstr "Tout d'abord, cliquez sur le point de fin.\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 "Ensuite, sélectionnez 'Valider' dans la boîte de dialogue Élévation.\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 "Et définissez l'élévation à 4.\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 ""
-"Maintenant, sélectionnez l’autre branche et réglez son élévation sur 2\"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:170
-#: ../../../../build/work/app/i18n/custmsg.h:444
-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: 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 ""
-"Maintenant, nous fixons l’élévation à une extrémité de la voie d’évitement.\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 "Nous voulons déterminer les élévations où les 2 voies se croisent.\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 "Nous avons sélectionné un point de fin sur la voie supérieure.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:452
-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 a calculé l'élévation (2,33\") en ce point en fonction de "
-"l'élévation à la voie d'évitement et d'une combinaison des premières "
-"élévations.\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 ""
-"Nous créons ici une élévation calculée qui dépend automatiquement des autres "
-"élévations modifiables.\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 ""
-"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/work/app/i18n/custmsg.h:456
-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/work/app/i18n/custmsg.h:457
-msgid "We'll ignore the lower branch.\n"
-msgstr "Nous ignorerons la branche inférieure.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:258
-#: ../../../../build/work/app/i18n/custmsg.h:459
-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"
-"\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 ""
-"Nous voulons maintenant connaître l’élévation de la voie la plus basse.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:274
-#: ../../../../build/work/app/i18n/custmsg.h:463
-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/work/app/i18n/custmsg.h:464
-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"
-
-#. 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 "et créez un autre point de calcul d'élévation.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:302
-#: ../../../../build/work/app/i18n/custmsg.h:468
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:311
-#: ../../../../build/work/app/i18n/custmsg.h:470
-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"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmelev.xtr:321
-#: ../../../../build/work/app/i18n/custmsg.h:472
-msgid "and create a grade marker.\n"
-msgstr ""
-"et créez une balise de pente.\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 "Notez que le marqueur a une flèche pointant vers le haut.\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 ""
-"Comme étape finale, nous allons créer une étiquette pour une station que "
-"nous utiliserons dans la commande <Profil> d'élévation.\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 ""
-"Maintenant, placez maintenant le marqueur d'élévation sur 'Station' et "
-"entrez le nom.\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 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/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 ""
-"Dans cet exemple, nous avons une voie courbe avec un rayon de 9\" et une "
-"voie droite avec une pente de 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
-msgid ""
-"The Layout dialog shows the Minimum Track Radius is 9\" and the Maximum "
-"Track Grade is 5%.\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"
-
-#. 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 ""
-"Si nous réduisons le rayon de la courbe, la voie est affichée avec la "
-"couleur de l'exception.\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 ""
-"Si nous élargissons la pente de la voie droite, la voie est également "
-"affichée dans la couleur exceptionnelle.\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 ""
-"Vous pouvez modifier la couleur des Voies non conformes dans la boîte de "
-"dialogue Couleurs du menu Options.\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
-msgid ""
-"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 <Modifier> en faisant glisser avec le bouton droit "
-"de la souris enfoncé.\n"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:496
-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"
-"\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 "L'extension de voie peut être droite …\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 "... ou courbé.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmextend.xtr:51
-#: ../../../../build/work/app/i18n/custmsg.h:502
-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"
-"\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 ""
-"La commande <Miroir> génère une image miroir des objets sélectionnés.\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 ""
-"Après avoir sélectionné l'objet, tracez la voie d'axe de l'effet miroir.\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 "La ligne de miroir n'a pas besoin d'être verticale ou horizontale.\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 "Vous pouvez mettre en miroir n'importe quel nombre d'objets.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:512
-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: 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 ""
-"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"
-
-#. 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 ""
-"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/work/app/i18n/custmsg.h:517
-msgid "You can use the <Describe> command to change their title.\n"
-msgstr ""
-"Vous pouvez utiliser la commande <Propriete> pour modifier leur titre.\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 ""
-"Les commandes <Grouper> et <Dissocier> (dans le menu Gérer) sont un moyen "
-"puissant de manipuler les définitions d'aiguillage et structure.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:521
-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: 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 ""
-"Maintenant que nous avons tracé les grandes lignes d’un aiguillage, nous "
-"allons les regrouper avec une définition d'aiguillage.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:524
-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: 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 "Et maintenant, appliquez la commande <Groupe>.\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 ""
-"La boîte de dialogue de commande <Grouper> affiche le titre (fabricant, "
-"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: 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 ""
-"Le commutateur \"Remplacer par un nouveau groupe?\" remplacera les objets "
-"sélectionnés par la nouvelle définition.\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 ""
-"Si nous ne changeons pas le titre, la nouvelle définition remplacera la "
-"définition existante.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:533
-msgid "We'll give this definition a new Description.\n"
-msgstr "Nous donnons au groupe une nouvelle description.\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 "Nous en avons fini avec cette définition. Appuyer sur 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 "Vous verrez l'image mise à jour sur la barre de contrôle.\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 ""
-"La commande <Dissocier> remplace tous les aiguillages ou structures "
-"sélectionnés par leurs pièces.\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 ""
-"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/work/app/i18n/custmsg.h:541
-msgid ""
-"We will Ungroup this turnout and see how the individual parts can be "
-"changed.\n"
-msgstr ""
-"Nous dissocierons cet aiguillage et verrons comment les différentes parties "
-"peuvent être modifiées.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:542
-msgid "First Select the turnout and then Ungroup it.\n"
-msgstr "Sélectionnez d'abord l'aiguillage, puis dissociez-le.\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 "Notez que le titre indique maintenant que l'aiguillage est dissocié.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:545
-msgid "Hit Escape to deselect everything.\n"
-msgstr "Appuyez sur Echap pour tout désélectionner.\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 "Maintenant, sélectionnez les lignes et les carrés.\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 ""
-"Nous pouvons changer cet objet ou en ajouter de nouveaux, cette fois nous "
-"allons juste les supprimer.\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 "Et déplacez l'étiquette hors de la voie.\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 "Notez que l'aiguillage a été divisé en trois parties.\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 ""
-"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/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 ""
-"Un aiguillage se compose d'un certain nombre de pièces de voies droites et "
-"courbes. Cet aiguillage comprend quatre pièces :\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:557
-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/work/app/i18n/custmsg.h:558
-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/work/app/i18n/custmsg.h:559
-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/work/app/i18n/custmsg.h:560
-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/work/app/i18n/custmsg.h:561
-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/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 ""
-"Les deuxième et troisième segments forment le corps de l'aiguillage et ne "
-"peuvent plus être dissociés.\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 ""
-"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"
-
-#. 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 "Maintenant, créez une voie et placez le nouvel aiguillage dessus.\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 ""
-"Supposons que nous voulions remplacer les carrés noirs par des cercles "
-"verts.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:568
-msgid "First we Select the turnout.\n"
-msgstr "Nous sélectionnons d'abord l'aiguillage.\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 "Et maintenant, dissociez-le (à partir du menu Gérer)\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 ""
-"Notez que le nom a changé pour indiquer que l'aiguillage a été dissocié.\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 ""
-"Maintenant, appuyez sur 'Ech' pour tout désélectionner, puis sélectionnez et "
-"supprimez les 2 carrés.\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 "Maintenant, dessinez les cercles verts…\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 "et Groupez la nouvelle définition.\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 ""
-"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: 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 ""
-"Nous pouvons également créer des aiguillages à partir de simples voies "
-"droites et courbes.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:583
-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: 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 ""
-"Lorsque nous créons la courbe à partir du point de fin de la voie droite, "
-"nous devons maintenir la touche Maj enfoncée pour empêcher XTrckCAD "
-"d'essayer de joindre les deux voies.\n"
-
-#. 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 "À ce stade, nous pouvons modifier les voies si nécessaire.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:588
-msgid "We will use the <Describe> command to change the tracks.\n"
-msgstr ""
-"Nous utiliserons la commande <Propriétés> pour changer les propriétés des "
-"voies.\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 "Nous avons réglé la longueur à 7,5\".\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 ""
-"Lorsque nous modifions la longueur, chaque extrémité est poussée pour "
-"raccourcir la voie, nous souhaitons que seule l'extrémité correcte soit "
-"déplacée. Pour contrôler cela, réglez le pivot sur la Premiere. Cela "
-"signifie que l'extrémité gauche reste inchangée si nous changeons la "
-"longueur (ou l'angle) de la voie.\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 ""
-"Maintenant, lorsque vous modifiez la longueur, seul le point final droit se "
-"déplace.\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 "Regardons maintenant la voie incurvée.\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 ""
-"Voici le point d'extrémité gauche que nous ne voulons pas déplacer, il est "
-"le deuxième point d'extrémité. Nous allons donc en faire un point fixe comme "
-"pivot.\n"
-
-#. 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"
-msgstr ""
-"Nous voulons que la courbe ait un rayon de 20\" et un angle de 17,5°.\n"
-"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:600
-msgid "First change the Radius...\n"
-msgstr "Tout d'abord changer le rayon …\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 "et la longueur angulaire.\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 "Maintenant, sélectionnez les deux voies…\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 "et groupez les.\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 ""
-"Si les deux voies ont une extrémité commune, vous obtiendrez un aiguillage "
-"qui peut être contrôlé en mode de fonctionnement. Sinon, il s'agira "
-"simplement de deux voies groupées.\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 ""
-"Nous avons créé un aiguillage gauche et nous voulons également une version à "
-"droite.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:611
-msgid "We'll use the <Flip> command.\n"
-msgstr "Nous utilisons la commande <miroir>\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 ""
-"Faites glisser une voie horizontale qui sera l'axe de miroir de la commande "
-"<Flip>.\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 "Notez que le titre a été changé en \"Gauche en miroir\".\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:616
-msgid "Now Group the turnout.\n"
-msgstr ""
-"Maintenant, regroupez l'aiguillage\n"
-"\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 ""
-"Nous allons changer le titre et le numéro de pièce pour la nouvelle "
-"définition.\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 ""
-"Pour supprimer des définitions, utilisez le \"Eléments définis sur mesure\" "
-"dans le menu \"Gérer\".\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 ""
-"Sélectionnez les définitions que vous avez ajoutées et supprimez-les.\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 ""
-"Dans le coin du plan, nous allons maintenant créer une hélicoïde connectée à "
-"2 voies.\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 ""
-"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"
-
-#. 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 "Réglez d'abord la différence d'élévation à 12 \"\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 "Ensuite, réglez la séparation verticale sur 2\"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:632
-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: 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 "Ensuite définir la pente à 1,5%\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:635
-msgid "Notice how this causes the Radius to change.\n"
-msgstr "Remarquez comment cela provoque le changement de rayon.\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 ""
-"La définition de ces valeurs modifie le rayon à 21,2\" et le nombre de tours "
-"à 6.\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 ""
-"Nous modifions maintenant l'angle entre les voies entrante et sortante de "
-"l'hélicoïde.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:640
-msgid "Note: this will decrease the Radius slightly.\n"
-msgstr "Remarque : cela diminuera légèrement le rayon.\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 ""
-"Ensuite, nous pouvons affiner l’hélicoïde en diminuant le rayon à 15\".\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:643
-msgid "Note the change to the Grade.\n"
-msgstr "Notez le changement de pente.\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 ""
-"Pour finir, changez la séparation verticale à 2.5\", le nombre de virages "
-"passera à 4 et la pente augmentera à près de 3%.\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 ""
-"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"
-
-#. 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 ""
-"Maintenant que les paramètres d'hélicoïde sont définis, nous pouvons placer "
-"l'hélicoïde sur le plan.\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 ""
-"Ensuite, reliez les deux voies droites à l'hélicoïde juste comme nous "
-"connectons les voies à un cercle.\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 ""
-"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: 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 ""
-"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/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 ""
-"Remarque : nous pourrions définir les élévations n’importe où le long des "
-"voies de connexion. Pour les élévations, XTrackCAD traite une hélicoïde "
-"comme une seule longueur de voie.\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 ""
-"Nous avons réglé les élévations sur 1\"et 13\" pour créer une pente de 3% "
-"avec 2,8\"entre les virages.\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 ""
-"Vous pouvez utiliser la commande <Propriete> 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"
-
-#. 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 ""
-"Avec la commande <Deplacer la description> l'étiquette de l'hélicoïde peut "
-"être déplacée.\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 ""
-"En plus d'utiliser les définitions d'aiguillage, vous pouvez créer "
-"'aiguillage paramétré à la main'.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:665
-msgid "This is two step process:\n"
-msgstr ""
-"Il s'agit d'un processus en deux étapes :\n"
-"\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 - cliquez sur le cœur et faites glisser pour définir son angle\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 ""
-" Astuce : plus vous vous éloignez du cœur, plus l'angle est précis.\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 - cliquez et faites glisser pour définir la position des points\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 ""
-"Nous pouvons créer des aiguillages paramétrés à la main sur des voies "
-"courbes.\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 "Un aiguillage de conception libre se compose de plusieurs parties.\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 "L'aiguillage actuel à ses aiguilles incomplètes.\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 "Les autres parties sont divers segments droits et courbes.\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 ""
-"La nouvel aiguillage incurvée est également composée de plusieurs segments.\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 "Bienvenue dans la démonstration d'XTrackCAD.\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 ""
-"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"
-
-#: ../../../../build/work/app/i18n/custmsg.h:686
-msgid "The controls are:\n"
-msgstr "Les contrôles sont :\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:687
-msgid "Step - advances to the next step of the demo.\n"
-msgstr "Pas à pas - passe à l'étape suivante de la démo.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:688
-msgid "Next - skips ahead to the next demo.\n"
-msgstr "Suivant - passe à la démo suivante.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:689
-msgid "Quit - exits the demo and returns to XTrackCAD.\n"
-msgstr "Quitter - quitter la démo et revenir à XTrackCAD.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:690
-msgid "Speed - controls the speed of the demo.\n"
-msgstr "Vitesse- contrôle la vitesse de la démo.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:691
-msgid "Click Step now for the next message.\n"
-msgstr "Cliquez sur Pas à pas pour passer au message suivant.\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 ""
-"Si vous utilisez la démo pour la première fois, vous devez définir les "
-"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/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 ""
-"Vous pouvez maintenant déplacer la fenêtre de démonstration en y faisant "
-"glisser la barre de titre. Il est préférable de le déplacer vers le haut de "
-"l'écran.\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 ""
-"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 "
-"est désactivé. Lorsque la démonstration est en pause, le bouton Étape est "
-"activé et vous pouvez cliquer dessus lorsque vous êtes prêt à afficher la "
-"partie suivante de la démonstration.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:697
-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/work/app/i18n/custmsg.h:698
-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: 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 ""
-"Les démos sont conçues pour tenir dans une fenêtre d'une certaine taille.\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 ""
-"Pour de meilleurs résultats, modifiez la taille de la fenêtre principale "
-"XTrackCAD pour que le rectangle soit complètement visible.\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 ""
-"Vous pouvez le faire en faisant glisser le coin inférieur droit de la "
-"fenêtre.\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 "C'est la fin de la démonstration d'introduction.\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 ""
-"Veuillez cliquer sur étape suivante pour la prochaine démonstration ou "
-"quitter pour revenir à XTrackCAD.\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 ""
-"Vous pouvez également connecter des voies avec des cercles de voie. Cela "
-"transforme les cercles en arcs.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:709
-msgid "In this example we will join two circles.\n"
-msgstr "Dans cet exemple, nous allons connecter deux cercles.\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 ""
-"Ici, nous avons sélectionné des points sur deux cercles. La direction des "
-"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: 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 "Essayons maintenant une connexion croisée.\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 ""
-"Notez que la connexion provient d'«extrémités» différentes du cercle qu'avec "
-"le dernier exemple.\n"
-
-#. 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 ""
-"Cet exemple montre comment joindre des voies dont les extrémités sont "
-"alignées.\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 ""
-"Notez que les 2 paires de voies ont des extrémités qui sont proches et "
-"alignées mais non connectées.\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 ""
-"Dans le premier cas, une voie courbe et une voie droite sont connectées.\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 "Dans le second cas, deux voies droites sont connectées.\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 "Notez que les deux voies droites ont été fusionnées en une voie.\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
-msgid ""
-"The <Join> command can also join straight and curved tracks (in either "
-"order).\n"
-msgstr ""
-"La commande <Raccorder> peut être utilisée pour connecter des voies droites "
-"et courbes (dans n'importe quel ordre).\n"
-"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:729
-msgid "We will enable Cornu easements\n"
-msgstr "Nous activerons les courbes de transition Cornu.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:731
-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: 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 ""
-"Notez que la voie incurvée est étendue lorsque le point de connexion passe "
-"au-delà du point de fin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjncs.xtr:54
-#: ../../../../build/work/app/i18n/custmsg.h:735
-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"
-"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:736
-msgid "Adjusting the end point will fix it. \n"
-msgstr ""
-"Le réglage du point de fin le corrigera.\n"
-"\n"
-
-#. 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 ""
-"La commande <Raccorder> peut être utilisée pour déplacer des groupes de "
-"voies pour les connecter à d'autres.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:740
-msgid ""
-"First <Select> the tracks you want to move with Ctrl so that they are both "
-"selected.\n"
-msgstr ""
-"Avec Ctrl, commencez par <Selectionner> les deux voies que vous souhaitez "
-"déplacer. \n"
-"\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 ""
-"Cliquez sur <Raccorder> puis maintenez la touche Maj enfoncée + clic gauche "
-"sur les deux points d'extrémité.\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 "Les voies sélectionnées sont déplacées vers la position.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:14
-#: ../../../../build/work/app/i18n/custmsg.h:746
-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 ""
-"Deux voies droites peuvent être jointes en sélectionnant les deux "
-"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/work/app/i18n/custmsg.h:747
-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"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:26
-#: ../../../../build/work/app/i18n/custmsg.h:749
-msgid "Now we select two points on the tracks\n"
-msgstr "Maintenant, nous sélectionnons deux points sur les voies\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 ""
-"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: 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 ""
-"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: 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 ""
-"Remarquez ce qui se passe si vous glissez au-delà des points d'intersection "
-"des deux voies.\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 "Ce n'est probablement pas une solution sensée.\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 ""
-"Maintenant, nous allons le faire avec une Courbe de transition Cornu\n"
-"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:761
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:102
-#: ../../../../build/work/app/i18n/custmsg.h:763
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:112
-#: ../../../../build/work/app/i18n/custmsg.h:765
-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"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:123
-#: ../../../../build/work/app/i18n/custmsg.h:767
-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"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjnss.xtr:131
-#: ../../../../build/work/app/i18n/custmsg.h:769
-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"
-"\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 ""
-"C'est plus utile car vous pouvez également déplacer l'autre extrémité.\n"
-
-#. 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 ""
-"Vous pouvez vous connecter depuis n'importe quelle voie vers un pont "
-"tournant\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:775
-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: 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 ""
-"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"
-
-#: ../../../../build/work/app/i18n/custmsg.h:778
-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: 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 ""
-"Vous pouvez faire glisser le point de connexion tout autour du pont "
-"tournant.\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 ""
-"Lorsque vous vous éloignez du pont tournant, une voie droite est dessinée "
-"vers la position du curseur et une courbe est dessinée entre le curseur et "
-"la voie de connexion.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmjntt.xtr:111
-#: ../../../../build/work/app/i18n/custmsg.h:784
-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"
-"\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 "Terminé.\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 ""
-"Les commandes de dessin sont utilisées pour dessiner des lignes droites et "
-"courbes sur le plan.\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 ""
-"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/work/app/i18n/custmsg.h:792
-#, fuzzy
-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 ""
-"Par défaut, la nouvelle ligne s'accrochera aux objets existants. Maintenez "
-"la touche <Maj> enfoncée pour éviter que cela ne se produise.\n"
-"\n"
-
-#. 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 ""
-"Vous pouvez également dessiner avec différentes couleurs et épaisseurs de "
-"ligne.\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 ""
-"Comme les voies courbes, les lignes courbes peuvent être tracées de "
-"différentes façons.\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 ""
-"Ici, nous dessinons une courbe en faisant glisser d’un point d’extrémité à "
-"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: 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 "Les boîtes sont utiles pour dessiner des formes rectangulaires.\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 ""
-"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/work/app/i18n/custmsg.h:802
-msgid "Here we will drag from the Center.\n"
-msgstr "Ici nous partons du centre.\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 ""
-"Les lignes et les formes peuvent être supprimées par une sélection et une "
-"suppression.\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 "Nous pouvons également créer des polylignes et des formes remplies.\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 ""
-"Une polyligne est dessinée en faisant glisser le curseur pour placer chacun "
-"de ses points.\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 ""
-"Pour terminer la polyligne, appuyez sur la touche <Espace> ou choisissez un "
-"autre type de dessin.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmlines2.xtr:132
-#: ../../../../build/work/app/i18n/custmsg.h:813
-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: 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 ""
-"Lorsque vous avez terminé, appuyez sur la touche <Espace> pour terminer le "
-"polygone.\n"
-
-#. 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 ""
-"Vous pouvez utiliser les commandes \"Editer|Au-dessus\" et \"Editer|Au-"
-"dessous\" pour déplacer des lignes et des formes vers l'avant ou l'arrière "
-"du dessin.\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 ""
-"Les boîtes et cercles pleins fonctionnent comme les boîtes et cercles "
-"vides.\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
-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"
-"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:823
-msgid ""
-"The hollow arrow represents the mouse cursor without a mouse button being "
-"pressed.\n"
-msgstr ""
-"La flèche vide correspond au pointeur de la souris sans appuyer sur le "
-"bouton.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:16
-#: ../../../../build/work/app/i18n/custmsg.h:825
-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 ""
-"Lorsque le bouton gauche de la souris est enfoncé, le curseur de la souris "
-"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/work/app/i18n/custmsg.h:826
-msgid ""
-"Note: these color changes occur only during the demo to simulate mouse "
-"button presses.\n"
-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: 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 ""
-"Déplacer la souris en maintenant le bouton de la souris enfoncé s'appelle "
-"«glisser».\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:32
-#: ../../../../build/work/app/i18n/custmsg.h:830
-msgid ""
-"When the left mouse button is released, the mouse cursor flashes and the "
-"hollow up black arrow is restored.\n"
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:40
-#: ../../../../build/work/app/i18n/custmsg.h:832
-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"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:49
-#: ../../../../build/work/app/i18n/custmsg.h:834
-msgid "Release Right Click\n"
-msgstr "Relâcher le clic droit\n"
-
-#. 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
-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/work/app/i18n/custmsg.h:838
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:71
-#: ../../../../build/work/app/i18n/custmsg.h:840
-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"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmmouse.xtr:86
-#: ../../../../build/work/app/i18n/custmsg.h:842
-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"
-"\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 ""
-"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: 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 ""
-"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/work/app/i18n/custmsg.h:846
-msgid ""
-"This is indicated by an an left-facing open-headed arrow with the letter C "
-"near it.\n"
-msgstr ""
-"Ceci est indiqué par une flèche à tête ouverte tournée vers la gauche, avec "
-"la lettre C à côté.\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 ""
-"Vous pouvez également utiliser la touche Contrôle avec le bouton droit de la "
-"souris.\n"
-
-#: ../../../../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 ""
-"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: 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 ""
-"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"
-
-#: ../../../../build/work/app/i18n/custmsg.h:853
-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"
-
-#. 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 ""
-"Lorsque vous effectuez un zoom arrière, les voies sont dessinées avec une "
-"voie au lieu de deux.\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
-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 ""
-"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/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 ""
-"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: 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 ""
-"Vous pouvez également faire glisser vers la droite dans la fenêtre de "
-"navigation pour déterminer l'échelle et la position du dessin dans la "
-"fenêtre principale.\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 ""
-"La commande <Remarque> permet de placer des notes à différents points du "
-"plan de tracé.\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 ""
-"Lorsque vous créez une note, l'éditeur de notes s'ouvre, ce qui vous permet "
-"de saisir un texte.\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 "Si vous cliquez sur une note en mode <Describe>, l'éditeur apparaît.\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 "C'est la fin des démos XTrackCAD.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:871
-msgid "Click Step to return to XTrackCAD.\n"
-msgstr "Cliquez sur Pas à Pas pour revenir à XTrackCAD.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:872
-msgid "Thanks for watching.\n"
-msgstr "Merci d'avoir regardé.\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 "Cet exemple montre comment créer des voies parallèles.\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 ""
-"La séparation est définie dans la fenêtre <Separation parallèle>. Vous devez "
-"définir cette valeur avant de commencer à sélectionner des voies.\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 ""
-"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: 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 ""
-"Dès que vous relâchez le bouton de la souris, la voie parallèle est créée.\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 ""
-"Notez que la commande <Parallele> reste active après la création de la voie. "
-"Ceci est contrôlé par la boîte de dialogue Sticky dans le menu "
-"'Options>Sticky'.\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 "Vous ne pouvez pas créer une voie parallèle à un aiguillage.\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 ""
-"Notez que la nouvelle voie incurvée est automatiquement connectée à la voie "
-"parallèle courte.\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
-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 <Dessiner>) peuvent "
-"être modifiés en faisant glisser leurs angles ou leurs bords.\n"
-"\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:889
-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"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmplymod.xtr:29
-#: ../../../../build/work/app/i18n/custmsg.h:891
-msgid "Then drag on the point you want to move\n"
-msgstr "Faites ensuite glisser le point que vous souhaitez déplacer\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 ""
-"Et enfin, appuyez sur la barre espace pour terminer la modification\n"
-"\n"
-
-#. 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 ""
-"Si vous sélectionnez le centre d'une arête, un nouveau coin est créé.\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 ""
-"Pour supprimer un coin, sélectionnez et appuyez ensuite sur Supprimer ou "
-"Retour arrière\n"
-
-#. 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 "Mais vous ne pouvez pas avoir une polyforme avec moins de 3 côtés.\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 ""
-"Pour utiliser la commande <Profil>, vous devez d'abord définir des "
-"élévations sur votre plan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:903
-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/work/app/i18n/custmsg.h:904
-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: 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 ""
-"Pour afficher le profil d'élévation, vous devez sélectionner un itinéraire "
-"sur votre plan.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:907
-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/work/app/i18n/custmsg.h:908
-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: 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 ""
-"Le deuxième point est à l'extrémité gauche du revêtement. Le chemin sera "
-"indiqué en violet sur le plan.\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 "Maintenant, sélectionnez le bout d'une des branches.\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 ""
-"Le profil d'élévation est dessiné en rouge. Cela signifie qu'il existe des "
-"aiguillages sur cette section du chemin d'accès qui ont plus de 2 "
-"connexions.\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 ""
-"La pente de cette partie du chemin est une valeur moyenne et peut être "
-"influencée par d'autres élévations telles que l'extrémité de la branche "
-"inférieure.\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 ""
-"Essayez maintenant de sélectionner le point de fin de l'autre branche.\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 ""
-"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: 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 ""
-"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: 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 "Notez que la pente a changé dans le profil d'élévation.\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 ""
-"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/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 ""
-"Remarque : nous ne pouvons pas afficher le menu en mode démo, mais nous "
-"montrerons l'effet d'un Maj+clic droit avec la sélection 'ignorer'. Nous "
-"ignorerons le point de fin de l'aiguillage qui ne se trouve pas sur le "
-"chemin.\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 ""
-"Notez qu'une partie de la ligne de profil d'élévation est redessinée en "
-"bleu.\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 ""
-"En outre, les calculs de marqueurs d'élévations et de niveaux situés à "
-"droite du plan ont été mis à jour.\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 ""
-"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/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 ""
-"Pour ce faire, cliquez sur le bouton droit de la souris pour afficher le "
-"menu contextuel \"Elévation\" et sélectionnez l'élément de voie puis \"Défini"
-"(e)\".\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 ""
-"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: 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 ""
-"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/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 ""
-"En ignorant l'un des points d'extrémité d'un aiguillage, nous pouvons forcer "
-"le chemin à emprunter l'autre route.\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 ""
-"Encore une fois, nous utilisons Maj-Clic-Droit pour afficher les options du "
-"menu profil puis sélectionner Ignorer.\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 "Maintenant, supprimez la première section du chemin,\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 "et resélectionnez-le.\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 ""
-"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: 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 "Nous devons maintenant augmenter la distance qui sépare les voies.\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 ""
-"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/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 ""
-"Tout d'abord marquer l'extrémité inférieure. Pour ce faire, cliquez avec le "
-"bouton droit de la souris sur le menu d’options du profil de hauteur "
-"(Modifier>Profil). Vous verrez que l'extrémité choisie est maintenant marqué "
-"d'un point doré. Le profil de hauteur a été ajouté une nouvelle voie.\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 ""
-"Maintenant, faites glisser le point dans la boîte de dialogue 'Profil' pour "
-"modifier l’élévation.\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 ""
-"Notez que la pente de chaque côté du point apparaîtra en bas de la boîte de "
-"dialogue Profil.\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 ""
-"Après validation le profil affiche les nouvelles élévations et angles.\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 "La commande <Echelle> modifie la taille des objets sélectionnés.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:956
-msgid "First we will try rescaling by ratio.\n"
-msgstr "Nous allons d’abord essayer de redimensionner le ratio.\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 "Nous augmentons tout à 150%.\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 "Notez que l'écartement de voie n'a pas changé.\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 "Essayons à nouveau.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:963
-msgid "Now we are going to convert from one scale to another.\n"
-msgstr "Nous passons maintenant d'une échelle à une autre.\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 "Nous allons tout convertir de N en H0 …\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 "et changez également l'écartement de voie.\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 "Notez que le titre de l'aiguillage n'a pas changé.\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 ""
-"La commande <Rotation> 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/work/app/i18n/custmsg.h:973
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmrotate.xtr:135
-#: ../../../../build/work/app/i18n/custmsg.h:975
-msgid ""
-"The <Rotate> command will restrict the rotation to increments of 15° if you "
-"hold down the <Shift> and <Ctrl> keys.\n"
-msgstr ""
-"La commande <Rotation> limitera la rotation à des incréments de 15 ° si vous "
-"maintenez les touches <Maj> et <Ctrl> enfoncées.\n"
-"\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 ""
-"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/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 ""
-"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/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 ""
-"L'autre option est 'Aligner' qui vous permet d'aligner les objets "
-"sélectionnés avec un objet non sélectionné. C'est utile pour aligner les "
-"bâtiments ferroviaires avec la voie.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:980
-msgid "Unfortunately, we can not currently demonstrate these features.\n"
-msgstr ""
-"Malheureusement, nous ne pouvons actuellement pas démontrer ces "
-"fonctionnalités.\n"
-
-#. 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 ""
-"La commande <Regle> dessine une règle sur le plan de voie. Cela peut être "
-"utilisé pour mesurer des distances.\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 ""
-"Si vous cliquez à nouveau sur la commande <Règle>, la règle sera supprimée.\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 "Mais vous pouvez le placer ailleurs.\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 "La commande <Selectionner> est utilisée pour sélectionner les voies.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:991
-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 <Selectionner>.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:992
-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/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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:184
-#: ../../../../build/work/app/i18n/custmsg.h:995
-msgid "A Left-Click selects a track\n"
-msgstr ""
-"Un simple clic gauche sélectionne une voie.\n"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:192
-#: ../../../../build/work/app/i18n/custmsg.h:997
-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 ""
-"La voie sélectionnée aura des X rouges dessinés là où elle est connectée à "
-"des voies non sélectionnées. Cela désigne l'endroit où la voie sera "
-"déconnectée si les voies sélectionnées sont déplacées, tournées ou "
-"supprimées.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:998
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:211
-#: ../../../../build/work/app/i18n/custmsg.h:1000
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:219
-#: ../../../../build/work/app/i18n/custmsg.h:1002
-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: 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 ""
-"Pour démontrer Sélectionner Connecté, sélectionner d'abord deux voies à la "
-"fin d'une partie à sélectionner\n"
-
-#. 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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:260
-#: ../../../../build/work/app/i18n/custmsg.h:1009
-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"
-"\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 "La touche <Ech> désélectionnera tous les objets.\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 "Glisser-gauche sert à sélectionner tous les objets d'une zone.\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 ""
-"Maj+glisser à gauche est utilisé pour déplacer les voies sélectionnées.\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 ""
-"Si vous déplacez des voies connectées vers des voies non sélectionnées, la "
-"connexion sera annulée. Ces points sont marqués d'une croix rouge sur le "
-"plan de voie.\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 ""
-"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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:313
-#: ../../../../build/work/app/i18n/custmsg.h:1020
-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: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:320
-#: ../../../../build/work/app/i18n/custmsg.h:1022
-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"
-"\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 ""
-"Ensuite, nous sélectionnons la commande <Raccorder les voies> pour montrer "
-"\"Move To Join\"\n"
-"\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:392
-#: ../../../../build/work/app/i18n/custmsg.h:1027
-msgid ""
-"You can use Shift-Left-Click to select an open endpoint of a selected track "
-"to join with an unselected track. \n"
-msgstr ""
-"Ensuite, nous sélectionnons la commande <Connecter deux voies>. 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/work/app/i18n/custmsg.h:1028
-msgid "We'll move the Main window again.\n"
-msgstr "Nous allons à nouveau déplacer la fenêtre principale.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmselect.xtr:415
-#: ../../../../build/work/app/i18n/custmsg.h:1030
-msgid ""
-"You then Left-Click on an endpoint of a unselected track to move the "
-"selected tracks to join. \n"
-msgstr ""
-"Ensuite, nous sélectionnons la commande <Connecter deux voies>. 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: 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 ""
-"La commande <Segmentation de voie> est utilisée pour diviser et déconnecter "
-"les voies.\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 ""
-"Sélectionnez simplement l'endroit de la voie que vous souhaitez "
-"fractionner.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1036
-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: 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 ""
-"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: 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 "La commande <Tunnel> marque les voies sélectionnées comme masquées.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1042
-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/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 ""
-"La manière dont les voies cachées sont dessinées (pleines, en pointillés ou "
-"invisibles) est contrôlée par le groupe de boutons radio de la boîte de "
-"dialogue Options d'affichage.\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 ""
-"Pour «masquer» une voie, sélectionnez-la à nouveau et cliquez sur le bouton "
-"Tunnel.\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 ""
-"Les voies droites sont créées en sélectionnant le premier point de fin de la "
-"voie.\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 ""
-"Ensuite, l'autre point d'extrémité est déplacé vers sa position correcte.\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 "À ce stade, le bouton gauche de la souris est relâché.\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 ""
-"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: 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 ""
-"Un bord de plateau est attiré vers les extrémités des autres bords de "
-"plateau.\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 ""
-"Les bords de table peuvent être modifiés en faisant glisser leurs "
-"extrémités.\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 ""
-"Si vous maintenez la touche Ctrl enfoncée tout en faisant glisser le bord de "
-"table, celui-ci sera attiré par d'autres objets.\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 ""
-"Ces exemples présentent certaines des différentes fenêtres de conception "
-"d'aiguillage. Chaque fenêtre est utilisée pour un type d'aiguillage "
-"différent.\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 ""
-"Chaque fenêtre de dialogue contient un certain nombre de paramètres à "
-"renseigner et une ou deux lignes de description.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1066
-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: 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 "Il s'agit d'un aiguillage normal.\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 ""
-"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/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 ""
-"Certains aiguillages et sections de rails sont pré-montés sur un ballast. "
-"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: 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 ""
-"La traversée de jonction double n'est décrit que par quelques paramètres.\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 ""
-"La traversée-jonction double n'a besoin que d'une longueur et d'une "
-"séparation des rails.\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 ""
-"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/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 ""
-"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: 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 ""
-"Vous pouvez placer l'aiguillage à une position arbitraire du plan. Faites le "
-"glisser au bon endroit …\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 ""
-"Vous pouvez ensuite faire pivoter l'aiguillage en faisant glisser avec le "
-"bouton droit de la souris.\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 ""
-"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: 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 ""
-"Lorsque vous êtes satisfait de la position et de l'orientation de "
-"l'aiguillage, appuyez sur la barre d'espace ou sur la touche \"Entr\" du "
-"clavier pour terminer la commande.\n"
-
-#: ../../../../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 ""
-"Vous pouvez également quitter la commande <Aiguillage> et valider son "
-"positionnement en appuyant sur le bouton OK dans la boîte de dialogue.\n"
-"\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 ""
-"Si vous faites glisser l'aiguillage sur une voie existante, il sera connecté "
-"à la voie.\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 ""
-"Notez que la ligne d'état vous indique le nombre de points d'extrémité qui "
-"seraient connectés ainsi que la distance maximale entre eux. Ce sera utile "
-"lors de la construction de voies complexes, comme nous le verrons plus "
-"tard.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtosel.xtr:220
-#: ../../../../build/work/app/i18n/custmsg.h:1092
-msgid ""
-"By moving the cursor from one side to the other of the track centerline you "
-"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"
-"\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 ""
-"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: 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 ""
-"Si vous appuyez sur la barre d'espace ou sur la touche Entrée alors que "
-"l'aiguillage est sur une voie, cette voie est déconnectée et l'aiguillage "
-"est automatiquement connecté.\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 "Appuyez sur Fermer pour mettre fin à la commande <Aiguillage>.\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 ""
-"Il est parfois utile de modifier les aiguillages en coupant l'une des "
-"extrémités.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1103
-msgid "We use the <Split> command for this.\n"
-msgstr "Pour cela, nous utilisons la commande <Segmentation de voie>.\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 ""
-"Normalement, si nous essayons de scinder un aiguillage, nous obtenons un "
-"message d'erreur.\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 ""
-"Appuyez sur Echap pour tout désélectionner. Maintenez la touche Maj enfoncée "
-"et réessayez.\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 ""
-"La fin de l'aiguillage a été remplacée par un morceau de voie flexible "
-"droite que nous pouvons modifier.\n"
-"\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 "Nous pouvons essayer de scinder la voie déviée.\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 "Notez que la voie déviée a été changée en voie incurvée ...\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 "et une voie droite.\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 ""
-"Cet exemple montre comment aménager un grill à l'aide des commandes "
-"<Aiguillage> et <Parallele>.\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 ""
-"Vous pouvez redimensionner et déplacer la boîte de dialogue Sélection "
-"d'aiguillage si elle masque d'autres fenêtres.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1121
-msgid "First we place a turnout on the main line.\n"
-msgstr "Plaçons d’abord l'aiguillage sur la voie principale.\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 "Ensuite, étendez l'aiguillage avec la commande <Modifier>.\n"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/demos/dmtoyard.xtr:46
-#: ../../../../build/work/app/i18n/custmsg.h:1125
-msgid ""
-"Now create a track parallel to the main line. Make sure the separation is "
-"reasonable for your scale.\n"
-msgstr ""
-"Créez maintenant une voie parallèle à la ligne principale. Assurez-vous que "
-"la séparation est raisonnable pour votre échelle.\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 "Et placez un aiguillage à connecter à la nouvelle voie.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1128
-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: 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 ""
-"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: 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 ""
-"La barre d'état affiche le nombre de points de terminaison connectés et le "
-"décalage maximum.\n"
-"\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 ajuste la position de l'aiguillage pour obtenir un meilleur "
-"ajustement afin de minimiser tout décalage de connexion\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 "Notez que placer l'aiguillage déconnecte la voie parallèle.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1136
-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: 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 "Répétez le processus pour les autres voies du dépôt.\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 ""
-"Pour la dernière voie, nous allons raccorder une courbe au lieu d’un "
-"aiguillage.\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 ""
-"Nous pouvons mettre en évidence l'itinéraire principal en dessinant les "
-"voies plus épaisses.\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1144
-msgid "First we select the mainline tracks...\n"
-msgstr "Nous choisissons d’abord les voies principales ...\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 "Et puis sélectionnez \"Voies moyennes\" dans le menu \"Editer\".\n"
-
-#: ../../../../build/work/app/i18n/custmsg.h:1147
-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"
-"\n"
-
-#. 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 ""
-"Nous pouvons rendre la voie plus épaisse en sélectionnant \"Épais\" (Wide "
-"Line.).\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 ""
-"Lors de la création de ponts tournants, le rayon doit être saisi dans une "
-"boîte de dialogue sur la barre d'état. Le rayon doit être modifié avant les "
-"étapes suivantes.\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 "Ensuite, le pont tournant est déplacé vers son emplacement final.\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 "Introduction"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:318
-#: ../../../../build/work/app/i18n/custmsg.h:1159
-msgid "Mouse Actions"
-msgstr "Actions de la souris"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:319
-#: ../../../../build/work/app/i18n/custmsg.h:1161
-msgid "Dialogs"
-msgstr "Dialogues"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:320
-#: ../../../../build/work/app/i18n/custmsg.h:1163
-msgid "Moving about"
-msgstr "Se déplacer"
-
-#. 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 "Décrire et sélectionner"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:322
-#: ../../../../build/work/app/i18n/custmsg.h:1167
-msgid "Describe"
-msgstr "Décrire"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:324
-#: ../../../../build/work/app/i18n/custmsg.h:1171
-msgid "Simple tracks"
-msgstr "Simples voies"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:325
-#: ../../../../build/work/app/i18n/custmsg.h:1173
-msgid "Straight tracks"
-msgstr "Voies droites"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:326
-#: ../../../../build/work/app/i18n/custmsg.h:1175
-msgid "Curved tracks"
-msgstr "Voies courbes"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:327
-#: ../../../../build/work/app/i18n/custmsg.h:1177
-msgid "Circles"
-msgstr "Cercles"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:328
-#: ../../../../build/work/app/i18n/custmsg.h:1179
-msgid "Turntables"
-msgstr "Ponts tournants"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:329
-#: ../../../../build/work/app/i18n/custmsg.h:1181
-msgid "Modifying tracks"
-msgstr "Modification des voies"
-
-#. 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 "Modification des points de fin "
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:331
-#: ../../../../build/work/app/i18n/custmsg.h:1185
-msgid "Extending"
-msgstr "Extension"
-
-#. 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 "Voies moyennes et épaisses"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:333
-#: ../../../../build/work/app/i18n/custmsg.h:1189
-msgid "Joining Tracks"
-msgstr "Raccorder des voies"
-
-#. 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 "Tout droit"
-
-#. 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 "Courbe à droite"
-
-#. 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 "Cercle à cercle"
-
-#. 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 "Raccorder à un pont tournant"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:338
-#: ../../../../build/work/app/i18n/custmsg.h:1199
-msgid "Easements"
-msgstr "Courbes de transition (Easements)"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:339
-#: ../../../../build/work/app/i18n/custmsg.h:1201
-msgid "Abutting tracks"
-msgstr "Voies contiguës"
-
-#. 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 "Déplacer pour raccorder"
-
-#. 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 "Sélectionner et positionner"
-
-#. 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 "Construire une entrée de dépôt."
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:344
-#: ../../../../build/work/app/i18n/custmsg.h:1211
-msgid "Designing turnouts"
-msgstr "Concevoir des aiguillages"
-
-#. 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 "Grouper et dissocier"
-
-#. 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 "Modifier les points de fin d'un aiguillage"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:347
-#: ../../../../build/work/app/i18n/custmsg.h:1217
-msgid "Handlaid Turnouts"
-msgstr "Aiguillages de conception libre"
-
-#. 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 "Élévations et profil"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:349
-#: ../../../../build/work/app/i18n/custmsg.h:1221
-msgid "Elevations"
-msgstr "Élévations"
-
-#. 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 "Diverses commandes de voie"
-
-#. 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 "Supprimer et annuler"
-
-#. 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 "Fractionnement et tunnels"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:355
-#: ../../../../build/work/app/i18n/custmsg.h:1233
-msgid "Helix tracks"
-msgstr "Voies hélicoïdales"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:356
-#: ../../../../build/work/app/i18n/custmsg.h:1235
-msgid "Exception Tracks"
-msgstr "Voies non conformes"
-
-#. 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 "Connecter et ajuster - un revêtement"
-
-#. 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 "Connecter et ajuster - figure 8"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:360
-#: ../../../../build/work/app/i18n/custmsg.h:1243
-msgid "Other commands"
-msgstr "Autres commandes"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:362
-#: ../../../../build/work/app/i18n/custmsg.h:1247
-msgid "Table Edges"
-msgstr "Bords de table"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:364
-#: ../../../../build/work/app/i18n/custmsg.h:1251
-msgid "Dimension Lines"
-msgstr "Lignes de cotes"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:365
-#: ../../../../build/work/app/i18n/custmsg.h:1253
-msgid "Lines"
-msgstr "Lignes"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:366
-#: ../../../../build/work/app/i18n/custmsg.h:1255
-msgid "Poly-Shapes"
-msgstr "Poly-formes"
-
-#. 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 "Modification des poly formes"
-
-#. i18n: C:/Users/mf/Documents/XTrackCAD/src/work/app/lib/xtrkcad.xtq:370
-#: ../../../../build/work/app/i18n/custmsg.h:1263
-msgid "Control Panels"
-msgstr "Panneaux de contrôle"
-
-#, fuzzy
-#~ msgid "Pan to origin - 'o'/'0'"
-#~ msgstr "Pan à l'origine - 'o'"
-
-#~ msgid "Zoom keeps lower corner in view"
-#~ msgstr "Le zoom garde le coin inférieur en vue"
-
-#~ msgid "Whether zoom is locked to the bottom left corner or the center point"
-#~ msgstr ""
-#~ "Si le zoom est verrouillé dans le coin inférieur gauche ou au point "
-#~ "central"
-
-#~ msgid "Find ..."
-#~ msgstr "Chercher ..."
-
-#~ msgid "Move Origin Mode"
-#~ msgstr "Déplacer le mode d'origine"
-
-#~ msgid "Expected END statement not found!"
-#~ msgstr "Instruction END attendue introuvable!"
-
-#~ msgid "Modify Bezier Complete - select another"
-#~ msgstr "Modifier une Bézier terminé - en sélectionner une autre"
-
-#~ msgid "Shift used, but no Unconnected Track End there"
-#~ msgstr "Maj utilisée, mais il n'y a pas de fin de voie non connectée"
-
-#~ msgid "Shift used, but no Line End there"
-#~ msgstr "Maj utilisé, mais il n'y a pas de point de fin de ligne"
-
-#~ msgid "Track picked - now select a Point"
-#~ msgstr "Piste sélectionnée - sélectionnez maintenant un point"
-
-#~ msgid ""
-#~ "Place 2nd end point of Cornu track on track with an unconnected end-point"
-#~ msgstr ""
-#~ "Placer le 2e point de fin de la voie de Cornu sur la bonne voie avec un "
-#~ "point de fin non connecté"
-
-#~ msgid ""
-#~ "No unconnected end-point on track - Try again or release Shift and click"
-#~ msgstr ""
-#~ "Aucun point de fin non connecté sur la voie - Réessayez ou relâchez Shift "
-#~ "et cliquez"
-
-#~ msgid "Not on a track - Try again or release Shift and click"
-#~ msgstr "Pas sur une voie - Réessayez ou relâchez Shift et cliquez"
-
-#~ msgid "End Locked: Drag out to center"
-#~ msgstr "Extrémité fixe : tirez vers le centre"
-
-#~ msgid "Radius=%s Angle=%0.3f"
-#~ msgstr "Rayon=%s Angle=%0.3f"
-
-#~ msgid "Length=%s Angle=%0.3f"
-#~ msgstr "Longueur = %s Angle = %0.3f"
-
-#~ msgid "Freeform"
-#~ msgstr "Forme libre"
-
-#~ msgid "Polygonal Line"
-#~ msgstr "Ligne polygonale"
-
-#~ msgid "%s: Layer=%d"
-#~ msgstr "%s: Calque=%d"
-
-#~ msgid "There are no reachable Defined Elevations"
-#~ msgstr ""
-#~ "Il n'y a pas d'élévations définies accessibles, faites glisser pour "
-#~ "changer la hauteur"
-
-#~ msgid "Dist = %s"
-#~ msgstr "Dist = %s"
-
-#~ msgid "Select track to modify"
-#~ msgstr "Sélectionnez la voie à modifier"
-
-#~ msgid "Drag to create new track segment"
-#~ msgstr "Faites glisser pour créer une nouvelle section de voie"
-
-#~ msgid "Note: "
-#~ msgstr "Remarque : "
-
-#~ msgid "# End Pts"
-#~ msgstr "# Bouts"
-
-#~ msgid "Print Registration Marks"
-#~ msgstr "Imprimer les marques de repérage"
-
-#~ msgid "Print Snap Grid"
-#~ msgstr "Imprimer la grille magnétique"
-
-#~ msgid "Print Rulers"
-#~ msgstr "Imprimer les règles"
-
-#~ msgid "1 page"
-#~ msgstr "1 page"
-
-#~ msgid "Draw moving track normally"
-#~ msgstr "Tracez la voie en mouvement normalement"
-
-#~ msgid "Draw moving track simply"
-#~ msgstr "Tracez la voie en mouvement simplement"
-
-#~ msgid "Draw moving track as end-points"
-#~ msgstr "Tracez la voie en mouvement comme points de terminaison"
-
-#~ msgid "Cornu selected too tight after move - it was left alone"
-#~ msgstr ""
-#~ "Cornu choisi trop serrée après le déplacement - elle a été laissé seule"
-
-#~ msgid " Angle %0.3f"
-#~ msgstr " Angle %0.3f"
-
-#~ msgid "Simple"
-#~ msgstr "Simple"
-
-#~ msgid "End Points"
-#~ msgstr "Bouts de voie"
-
-#~ msgid "Tunnel"
-#~ msgstr "Tunnel"
-
-#~ msgid "TURNOUT "
-#~ msgstr "AIGUILLAGE "
-
-#~ msgid "%s Files|*.xtc"
-#~ msgstr "%s Fichiers|*.xtc"
-
-#~ msgid "Bitmap files|*.xpm"
-#~ msgstr "Fichiers Bitmap|*.xpm"
-
-#~ msgid "Color Layers"
-#~ msgstr "Couleur des calques"
-
-#~ msgid "End-Points"
-#~ msgstr "Bouts de voie"
-
-#~ msgid "Draw Moving Tracks"
-#~ msgstr "Tracez les voies en mouvement"
-
-#~ msgid "Unload"
-#~ msgstr "Désélectionner"
-
-#~ msgid "Use Shift+PageDwn to jump to preset Zoom In"
-#~ msgstr ""
-#~ "Utilisez Maj+Pg.Suiv pour passer à un facteur de zoom avant prédéfini"
-
-#~ msgid "Use Shift+PageUp to jump to preset Zoom Out"
-#~ msgstr ""
-#~ "Utilisez Maj+Pg.Préc pour passer à un facteur de zoom arrière prédéfini"
-
-#~ msgid "Commands"
-#~ msgstr "Commandes"
-
-#~ msgid "SnapGrid Enable"
-#~ msgstr "Valider la grille magnétique"
-
-#~ msgid "A&bove"
-#~ msgstr "A&u-dessus"
-
-#~ msgid "Belo&w"
-#~ msgstr "A&u-dessous"
-
-#~ msgid "General note about the layout"
-#~ msgstr "Note générale sur le plan"
-
-#~ msgid "How to draw track being moved/rotated"
-#~ msgstr "Comment dessiner une voie en cours de déplacement/rotation"
-
-#~ 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 ""
-#~ "Un certain nombre d'exemples de réseaux sont fournis. Ils sont dans le "
-#~ "répertoire \"exemples\" où vous avez installé XTrackCAD. Ceux-ci peuvent "
-#~ "être chargés via la boîte de dialogue \"Fichier | Ouvrir\"."
-
-#~ msgid ""
-#~ "The length of the straight track is determined by the distance from the "
-#~ "far End-Point and the cursor.\n"
-#~ msgstr ""
-#~ "La longueur de la voie droite est déterminée par la distance entre le "
-#~ "point d'extrémité distant et le pointeur de la souris.\n"
-
-#~ msgid "First turn off the Snap Grid.\n"
-#~ msgstr "Commencez par désactiver la grille magnétique.\n"
-
-#~ msgid "Rotate the signals and move them to the proper locations.\n"
-#~ msgstr "Faites pivoter les signaux, puis placez-les au bon endroit.\n"
-
-#~ msgid "Rotate the arrow head by 180° and move into position.\n"
-#~ msgstr ""
-#~ "Faites pivoter la pointe de la flèche de 180° et placez-la dans la bonne "
-#~ "position.\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 ""
-#~ "Maintenant, le curseur est sur le point d'être déplacé au-delà de l'autre "
-#~ "point de fin (le plus éloigné) de la voie droite. Vous recevrez un "
-#~ "avertissement et la voie de connexion deviendra rouge.\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 ""
-#~ "Si vous maintenez la touche Maj enfoncée pendant le tracé, le dernier "
-#~ "point de fin est utilisé comme point de départ pour la nouvelle voie. "
-#~ "Cela simplifie le tracé des voies connectées.\n"
-
-#~ msgid ""
-#~ "If you drag a Corner to another Corner the two are merged and the Edge "
-#~ "between them is removed.\n"
-#~ msgstr ""
-#~ "Si vous faites glisser un coin vers un autre coin, celui-ci sera regroupé "
-#~ "et le bord situé entre ceux-ci sera supprimé.\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 ""
-#~ "Maj+Clic droit affichera un menu contextuel que vous pouvez utiliser pour "
-#~ "faire pivoter d'une quantité fixe (15°, 30°, 45°, 90° ou 180°). La "
-#~ "démonstration ne peut pas afficher le menu contextuel mais elle en peut "
-#~ "montrer les effets.\n"
-
-#~ msgid "Here we will rotate by 90° clockwise (CW).\n"
-#~ msgstr ""
-#~ "Ici, nous allons tourner à 90 ° dans le sens des aiguilles d'une montre "
-#~ "(CW).\n"
-
-#~ msgid ""
-#~ "Another option of the <Rotate> command popup-menu is to Align the "
-#~ "Selected object with some other object.\n"
-#~ msgstr ""
-#~ "Une autre option du menu contextuel de la commande <Rotation> consiste à "
-#~ "avoir l'objet sélectionné sur un autre objet.\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 ""
-#~ "Nous allons d'abord cliquer sur une ligne de l'objet sélectionné. Cette "
-#~ "ligne sert de base à l'alignement.\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 ""
-#~ "Ensuite, nous cliquons sur un objet non sélectionné. La bâtiment "
-#~ "sélectionnée sera pivotée de sorte que la ligne sur laquelle vous avez "
-#~ "cliqué soit parallèle à la voie droite.\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 ""
-#~ "Si nous faisons glisser la souris sur la voie, nous pouvons retourner la "
-#~ "bâtiment de 180 °. Ceci est similaire à la façon dont nous plaçons les "
-#~ "aiguillages.\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 ""
-#~ "Nous pouvons également nous aligner sur des formes courbes. L'objet "
-#~ "sélectionné sera pivoté de façon à être parallèle au point de la courbe "
-#~ "qui se trouve sous le pointeur de la souris.\n"
-
-#~ msgid ""
-#~ "As we drag along the curved track the Selected object rotates to follow "
-#~ "the curve.\n"
-#~ msgstr ""
-#~ "Lorsque vous faites glisser le long de la voie incurvée, l'objet "
-#~ "sélectionné pivote pour suivre la courbe.\n"
-
-#~ msgid "Again, if we drag across the track we can flip the stucture.\n"
-#~ msgstr ""
-#~ "Encore une fois, si nous glissons sur la voie, nous pouvons retourner la "
-#~ "bâtiment.\n"
-
-#~ msgid "We can also Align to another Structure or any object.\n"
-#~ msgstr ""
-#~ "Nous pouvons également nous aligner sur d'autres bâtiments ou tout autre "
-#~ "objet.\n"
-
-#~ msgid "And Right-Drag de-selects all tracks within an area.\n"
-#~ msgstr ""
-#~ "Et faites un clic droit pour désélectionner toutes les voies d'une zone.\n"
-
-#~ msgid ""
-#~ "Drawing the tracks while moving can be very time-consuming. We had just "
-#~ "used the \"Normal\" method of drawing tracks.\n"
-#~ msgstr ""
-#~ "Dessiner des voies en mouvement peut prendre beaucoup de temps. Nous "
-#~ "venions d'utiliser la méthode \"normale\" de dessin de voies.\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 ""
-#~ "La boîte de dialogue Options de commande (dans le menu Options) contient "
-#~ "un groupe de boutons que vous pouvez utiliser pour modifier la méthode de "
-#~ "dessin.\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 ""
-#~ "Vous pouvez également faire apparaître le menu Options de commande en "
-#~ "appuyant sur Maj + clic droit, ce qui inclut des options pour définir la "
-#~ "méthode de dessin. Ces options sont également disponibles pour les "
-#~ "commandes Déplacer et Rotation.\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 ""
-#~ "La méthode suivante est le dessin \"simple\". Ici, les voies sont "
-#~ "représentées par une ligne, les extrémités et les lignes ne sont pas "
-#~ "dessinées. Les bâtiments sont remplacés par un rectangle pendant "
-#~ "l'opération.\n"
-
-#~ msgid ""
-#~ "Note: you can move the Command Options dialog if it obscures the main "
-#~ "window.\n"
-#~ msgstr ""
-#~ "Remarque : vous pouvez déplacer la boîte de dialogue Options de commande "
-#~ "si elle masque la fenêtre principale.\n"
-
-#~ msgid ""
-#~ "The next method is to just draw the End-Points of the selected tracks.\n"
-#~ msgstr ""
-#~ "La méthode suivante consiste à simplement dessiner les extrémités des "
-#~ "voies sélectionnées.\n"
-
-#~ msgid ""
-#~ "Unconnected End-Points are indicated by Red crosses, and connected End-"
-#~ "Points are indicated by Red lines.\n"
-#~ msgstr ""
-#~ "Les points d'extrémité non connectés sont marqués par une croix rouge, "
-#~ "les points d'extrémité connectés par une ligne rouge.\n"
-
-#~ msgid "Now we will go back to using the Normal method again.\n"
-#~ msgstr ""
-#~ "Maintenant , nous allons revenir à l’utilisation de la méthode Normale.\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 ""
-#~ "Remarque : en raison de différences de résolution d'affichage, il est "
-#~ "possible que le clic de souris suivant ne soit pas correctement "
-#~ "positionné dans cette démo et que l'opération \"Move-To-Join\" ne puisse "
-#~ "pas être démontrée.\n"
-
-#~ msgid "Is Cornu End -> Not Selectable"
-#~ msgstr "Fin de Cornu -> Non sélectionnable"
-
-#~ msgid "Must be on the %s Track"
-#~ msgstr "Doit être sur la voie %s"
-
-#~ msgid "Select other end of Bezier, +Shift -> snaps to %s end"
-#~ msgstr ""
-#~ "Sélectionnez l’autre extrémité de la Bézier, +Maj pour vous connecter à "
-#~ "la fin de %s"
-
-#~ msgid ""
-#~ "No Unconnected end-point on track - Try again or release shift and click"
-#~ msgstr ""
-#~ "Aucune extrémité de voie non connectée - Réessayez ou relâchez shift puis "
-#~ "cliquez"
-
-#~ msgid "Not on a Track - Try again or release shift and click"
-#~ msgstr "Pas sur une voie - Réessayez ou relâchez shift et cliquez"
-
-#~ msgid ""
-#~ "Place 1st end point of Cornu track on track with an unconnected end-point"
-#~ msgstr "Placez le premier extrémité de la voie, en voie droite"
-
-#~ msgid "Connect Sectional Tracks"
-#~ msgstr "Connectez des sections de voies"
-
-#~ msgid "Drag to move selected tracks"
-#~ msgstr "Faites glisser pour déplacer la voie sélectionnée"
-
-#~ msgid "End Angle 2"
-#~ msgstr "Fin Angle 2"
-
-#~ msgid "Elev 1"
-#~ msgstr "Elév 1"
-
-#~ msgid "End Radius Center 1: X"
-#~ msgstr "Centre du rayon de fin 1 : X"
-
-#~ msgid "Elev 2"
-#~ msgstr "Elév 2"
-
-#~ msgid "Radius 2"
-#~ msgstr "Rayon 2"
-
-#~ msgid "End Radius Center 2: X"
-#~ msgstr "Centre du rayon de fin 2 : X"
-
-#~ msgid "Angle=%0.3f"
-#~ msgstr "Angle =%0.3f"
-
-#~ msgid "Place circle center"
-#~ msgstr "Définir le centre du cercle"
-
-#~ msgid "Place circle"
-#~ msgstr "Placez le cercle"
-
-#~ msgid "Draw"
-#~ msgstr "Dessiner"
-
-#~ msgid "Show Map"
-#~ msgstr "Montrer le plan"
-
-#~ msgid "Blocks"
-#~ msgstr "Sections de voies"
-
-#~ msgid "SwitchMotor"
-#~ msgstr "Moteur d'aiguillage"
-
-#~ msgid "Switch Motors"
-#~ msgstr "Moteurs d'aiguillages"
-
-#~ msgid "Black"
-#~ msgstr "Noir"
-
-#~ msgid "Dark Blue"
-#~ msgstr "Bleu foncé"
-
-#~ msgid "Steel Blue"
-#~ msgstr "Bleu acier"
-
-#~ msgid "Royal Blue"
-#~ msgstr "Bleu royal"
-
-#~ msgid "Blue"
-#~ msgstr "Bleu"
-
-#~ msgid "Deep Sky Blue"
-#~ msgstr "Bleu ciel foncé"
-
-#~ msgid "Light Sky Blue"
-#~ msgstr "Bleu ciel"
-
-#~ msgid "Powder Blue"
-#~ msgstr "Poudre Bleue"
-
-#~ msgid "Dark Aqua"
-#~ msgstr "Bleu vert foncé"
-
-#~ msgid "Aquamarine"
-#~ msgstr "Bleu vert"
-
-#~ msgid "Aqua"
-#~ msgstr "Eau bleue"
-
-#~ msgid "Dark Green"
-#~ msgstr "Vert foncé"
-
-#~ msgid "Forest Green"
-#~ msgstr "Vert forêt"
-
-#~ msgid "Lime Green"
-#~ msgstr "Citron vert"
-
-#~ msgid "Green"
-#~ msgstr "Vert"
-
-#~ msgid "Lawn Green"
-#~ msgstr "Vert pelouse"
-
-#~ msgid "Pale Green"
-#~ msgstr "Vert pâle"
-
-#~ msgid "Dark Yellow"
-#~ msgstr "Jaune foncé"
-
-#~ msgid "Coral"
-#~ msgstr "Corail"
-
-#~ msgid "Orange"
-#~ msgstr "Orange"
-
-#~ msgid "Yellow"
-#~ msgstr "Jaune"
-
-#~ msgid "Saddle Brown"
-#~ msgstr "Cuir marron"
-
-#~ msgid "Brown"
-#~ msgstr "Marron"
-
-#~ msgid "Chocolate"
-#~ msgstr "Chocolat"
-
-#~ msgid "Rosy Brown"
-#~ msgstr "Marron rose"
-
-#~ msgid "Tan"
-#~ msgstr "Ocre"
-
-#~ msgid "Beige"
-#~ msgstr "Beige"
-
-#~ msgid "Dark Red"
-#~ msgstr "Rouge foncé"
-
-#~ msgid "Tomato"
-#~ msgstr "Tomate"
-
-#~ msgid "Red"
-#~ msgstr "Rouge"
-
-#~ msgid "Hot Pink"
-#~ msgstr "Rose vif"
-
-#~ msgid "Pink"
-#~ msgstr "Rose"
-
-#~ msgid "Dark Purple"
-#~ msgstr "Violet foncé"
-
-#~ msgid "Maroon"
-#~ msgstr "Bordeaux"
-
-#~ msgid "Purple2"
-#~ msgstr "Violet 2"
-
-#~ msgid "Purple"
-#~ msgstr "Violet"
-
-#~ msgid "Violet"
-#~ msgstr "Violette"
-
-#~ msgid "Dark Gray"
-#~ msgstr "Gris foncé"
-
-#~ msgid "Gray"
-#~ msgstr "Gris"
-
-#~ msgid "Light Gray"
-#~ msgstr "Gris clair"
-
-#~ msgid "Describe objects"
-#~ msgstr "Décrire des objets"
-
-#~ msgid "Page %d"
-#~ msgstr "Page %d"
-
-#~ msgid "Print to file ..."
-#~ msgstr "Imprimer dans un fichier ..."
-
-#~ msgid "No file name specified"
-#~ msgstr "Aucun nom de fichier spécifié"
-
-#~ msgid "%s exists"
-#~ msgstr "%s existe déjà"
-
-#~ msgid "Overwrite"
-#~ msgstr "Remplacer"
-
-#~ msgid ": cannot open"
-#~ msgstr ": ne peut pas être ouvert"
-
-#~ msgid "Page 1"
-#~ msgstr "Page 1"
-
-#~ msgid "Enter both printer name and command"
-#~ msgstr "Entrez le nom de l'imprimante et la commande"
-
-#~ msgid "Can not save New Printer definition"
-#~ msgstr "La nouvelle définition d'imprimante ne peut pas être enregistrée"
-
-#~ msgid "Enter printer name"
-#~ msgstr "Entrez le nom de l'imprimante"
-
-#~ msgid "Can not save New Margin definition"
-#~ msgstr "Impossible de sauvegarder la définition de la nouvelle marge"
-
-#~ msgid "Paper Size"
-#~ msgstr "Taille du papier"
-
-#~ msgid "Printer"
-#~ msgstr "Imprimante"
-
-#~ msgid "Format"
-#~ msgstr "Format"
-
-#~ msgid "X Font"
-#~ msgstr "Police X"
-
-#~ msgid "PS Font"
-#~ msgstr "Police PS"
-
-#~ msgid "Factor"
-#~ msgstr "Facteur"
-
-#~ msgid "Print Test Page"
-#~ msgstr "Impression de la page de Test"
-
-#~ msgid "Name: "
-#~ msgstr "Nom : "
-
-#~ msgid "Command: "
-#~ msgstr "Commande : "
-
-#~ msgid "Add Margin"
-#~ msgstr "Ajouter une marge"
-
-#~ msgid "Print To File"
-#~ msgstr "Imprimer dans un fichier"
-
-#~ msgid "File Name? "
-#~ msgstr "Nom du fichier ? "
-
-#~ msgid "Font Alias"
-#~ msgstr "Alias pour la police"
-
-#~ msgid "Enter a post-script font name for:"
-#~ msgstr "Entrez la police PostScript pour :"
-
-#~ msgid "Printing"
-#~ msgstr "Impression"
-
-#~ msgid "Now printing"
-#~ msgstr "L'impression est en cours"
-
-#~ msgid "Abort Print"
-#~ msgstr "Annuler l'impression"
-
-#~ msgid ""
-#~ " exists\n"
-#~ "Do you want to overwrite it?"
-#~ msgstr ""
-#~ " existe\n"
-#~ "Voulez-vous l'écraser ?"
-
-#~ msgid "Delete Switch motor"
-#~ msgstr "Supprimer le moteur d'aiguillage"
-
-#~ msgid "Not a SwitchMotor!"
-#~ msgstr "Pas de Moteur d'aiguillage !"
-
-#~ msgid "Custom Update"
-#~ msgstr "Ajouter des personnalisations"
-
-#~ msgid "No fonts"
-#~ msgstr "Pas de polices"
-
-#~ msgid ""
-#~ "Can't find standard Serif font.\n"
-#~ "Please choose a font"
-#~ msgstr ""
-#~ "La police par défaut Serif est introuvable.\n"
-#~ "Veuillez sélectionner une police"
-
-#~ msgid ""
-#~ "Can't find standard San-Serif font.\n"
-#~ "Please choose a font"
-#~ msgstr ""
-#~ "La police par défaut sans-serif est introuvable.\n"
-#~ "Veuillez sélectionner une police"
-
-#~ msgid "XTrackCAD Help"
-#~ msgstr "Aide XTrackCAD"
-
-#~ msgid "Now printing %s"
-#~ msgstr "Imprime %s"
-
-#~ msgid "Creating %s"
-#~ msgstr "Création %s"
-
-#~ msgid "Scale / Gauge"
-#~ msgstr "Échelle / écartement"
-
-#~ msgid "load last layout"
-#~ msgstr "charger le dernier plan"
-
-#~ msgid "start with blank layout"
-#~ msgstr "commencez avec un plan vide"
+# SOME DESCRIPTIVE TITLE.
+# 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
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \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"
+"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 "Continuer"
+
+#: ../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:633
+msgid "Select End-Point"
+msgstr "Sélectionnez le point-de-fin"
+
+#: ../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"
+
+#: ../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: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: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"
+
+#: ../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:715
+msgid "Bezier Curve Invalid has three co-incident points"
+msgstr "Courbe de Bézier non valide sur trois points correspondants"
+
+#: ../bin/cbezier.c:718
+msgid "Bezier is Straight Line"
+msgstr "Bézier est une voie droite"
+
+#: ../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:726
+#, c-format
+msgid "Bezier %s : Min Radius=%s Length=%s"
+msgstr "Bezier %s : Rayon Min=%s Longueur=%s"
+
+#: ../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: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"
+
+#: ../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:780
+msgid "Bezier curve invalid has three co-incident points"
+msgstr "Courbe de Bézier non valide sur trois points correspondants"
+
+#: ../bin/cbezier.c:783
+msgid "Bezier curve is straight line"
+msgstr "La courbe de Bézier est une voie droite"
+
+#: ../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:806
+#, c-format
+msgid "Invalid Bezier Curve has a %s - Adjust"
+msgstr "Courbe de Bézier non valide a %s - Ajuster"
+
+#: ../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"
+
+#: ../bin/cbezier.c:818
+msgid "Create Bezier"
+msgstr "Créer une Bézier"
+
+#: ../bin/cbezier.c:900
+#, c-format
+msgid "%s picked - now select a Point"
+msgstr "%s choisi - maintenant sélectionnez un point"
+
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
+msgid "No changes made"
+msgstr "Aucune modification apportée"
+
+#: ../bin/cbezier.c:943
+msgid "Modify Bezier"
+msgstr "Modifier une Bézier"
+
+#: ../bin/cbezier.c:957
+msgid "Modify Bezier Complete"
+msgstr "Modifier une Bézier terminée"
+
+#: ../bin/cbezier.c:961
+msgid "Modify Bezier Cancelled"
+msgstr "Annuler modifier une Bézier"
+
+#: ../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"
+
+#: ../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:1131
+msgid "Drag end of first control arm"
+msgstr "Faites glisser l'extrémité du premier bras de commande"
+
+#: ../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: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: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: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: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:124
+msgid "Segments"
+msgstr "Segments"
+
+#: ../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: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: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: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
+msgid "Change block"
+msgstr "Changer de bloc"
+
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
+#, c-format
+msgid "(%d): Layer=%u %s"
+msgstr "(%d): Calque=%u %s"
+
+#: ../bin/cblock.c:293 ../bin/cblock.c:1027
+msgid "Block"
+msgstr "Bloc"
+
+#: ../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:592 ../bin/cblock.c:826
+msgid "Block must have a name!"
+msgstr "La section de voie doit avoir un nom !"
+
+#: ../bin/cblock.c:621
+#, fuzzy
+msgid "Block is discontiguous!"
+msgstr "La section de voie est discontinue !"
+
+#: ../bin/cblock.c:626
+msgid "Create block"
+msgstr "Créer un bloc"
+
+#: ../bin/cblock.c:674
+msgid "Non track object skipped!"
+msgstr "Pas de voies manquante!"
+
+#: ../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:692
+msgid "Create Block"
+msgstr "Créer un Bloc"
+
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
+msgid "Select a track"
+msgstr "Sélectionner une voie"
+
+#: ../bin/cblock.c:731 ../bin/cblock.c:762
+msgid "Not a block!"
+msgstr "Pas un bloc!"
+
+#: ../bin/cblock.c:767
+#, c-format
+msgid "Really delete block %s?"
+msgstr "Voulez-vous vraiment supprimer le bloc %s ?"
+
+#: ../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: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:769
+msgid "Delete Block"
+msgstr "Supprimer la section de voie"
+
+#: ../bin/cblock.c:814
+#, c-format
+msgid "Deleting block %s"
+msgstr "Supprimer la section de voie %s"
+
+#: ../bin/cblock.c:830
+msgid "Modify Block"
+msgstr "Modifier le bloc"
+
+#: ../bin/cblock.c:863
+msgid "Edit block"
+msgstr "Editer le bloc"
+
+#: ../bin/cblock.c:869
+#, c-format
+msgid "Edit block %d"
+msgstr "Editer le bloc %d"
+
+#: ../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:247
+msgid " FLEX "
+msgstr " FLEX "
+
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
+msgid "First"
+msgstr "Premier"
+
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
+msgid "Second"
+msgstr "Second"
+
+#: ../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"
+
+#: ../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: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:1142
+msgid "Select Point, or Add Point"
+msgstr "Sélectionner un point, ou ajouter un point"
+
+#: ../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"
+
+#: ../bin/ccornu.c:1336
+msgid "Drag out end of Cornu"
+msgstr "Faire glisser l'extrémité de la Cornu"
+
+#: ../bin/ccornu.c:1338
+msgid "Drag along end of track"
+msgstr "Faites glisser vers le bout de la voie"
+
+#: ../bin/ccornu.c:1340
+msgid "Drag to move"
+msgstr "Faites glisser pour déplacer"
+
+#: ../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:1348
+msgid "Drag to change end radius"
+msgstr "Faites glisser pour modifier le rayon de fin"
+
+#: ../bin/ccornu.c:1351
+msgid "Drag to change end angle"
+msgstr "Faites glisser pour changer l'angle de fin"
+
+#: ../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:1380
+msgid "Track can't be split"
+msgstr "La voie ne peut pas être divisée"
+
+#: ../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:1460
+msgid "Can't move end inside a turnout"
+msgstr "Impossible de se déplacer à l'intérieur d'un aiguillage"
+
+#: ../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:1690
+#, c-format
+msgid ""
+"Cornu : Min Radius=%s MaxRateofCurveChange/Scale=%s Length=%s Winding Arc=%s"
+msgstr ""
+"Cornu : Rayon Min =%s Taux de changement de rayon maximal =%s Longueur =%s "
+"Arc =%s"
+
+#: ../bin/ccornu.c:1714 ../bin/ccornu.c:2423
+msgid "Helix Already Connected"
+msgstr "Hélicoïde déjà connectée"
+
+#: ../bin/ccornu.c:1730
+msgid "No Valid end point on that track"
+msgstr "Aucun point de fin valable sur cette voie"
+
+#: ../bin/ccornu.c:1735
+msgid "Track is different scale"
+msgstr "La voie a une échelle différente"
+
+#: ../bin/ccornu.c:1794
+msgid ""
+"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:1825
+msgid "Cornu has too complex shape - adjust end pts"
+msgstr "Cornu d'une forme trop complexe - ajustez les points finaux"
+
+#: ../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:1844
+msgid "Create Cornu"
+msgstr "Créer une Cornu"
+
+#: ../bin/ccornu.c:2037
+msgid "Now Select or Add (+Shift) a Point"
+msgstr "Maintenant, sélectionnez ou ajoutez (+Maj) un point"
+
+#: ../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:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
+msgid "Modify Cornu"
+msgstr "Modifier une Cornu"
+
+#: ../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: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:2230
+msgid "Modify Cornu Cancelled"
+msgstr "Annuler modifier une Cornu"
+
+#: ../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:2398
+msgid "Left click - Place Flextrack"
+msgstr "Clic gauche - Positionner la voie flexible"
+
+#: ../bin/ccornu.c:2401
+msgid "Left click - join with Cornu track"
+msgstr "Clic gauche - raccorder avec une voie Cornu"
+
+#: ../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"
+
+#: ../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: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:2487
+msgid "No Unconnected Track End there"
+msgstr "Aucune voie non connectée ne s'arrête là"
+
+#: ../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: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: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: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:2628
+msgid "Point not on track 1"
+msgstr "Les aiguilles ne sont pas sur la bonne voie 1"
+
+#: ../bin/ccornu.c:2670
+msgid "Pick other end of Cornu"
+msgstr "Choisissez l'autre extrémité de la Cornu"
+
+#: ../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"
+
+#: ../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:2941 ../bin/ccornu.c:3166
+msgid "Not on a Track"
+msgstr "Pas sur la voie"
+
+#: ../bin/ccornu.c:2949
+msgid "Select a Track To Convert"
+msgstr "Sélectionner une voie à convertir"
+
+#: ../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:2958
+msgid "Convert Cornu"
+msgstr "Convertir une Cornu"
+
+#: ../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:3118 ../bin/ccornu.c:3241 ../bin/cturnout.c:352
+#: ../bin/paramfilelist.c:113
+msgid "OK"
+msgstr "OK"
+
+#: ../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:3176
+msgid "Convert all Selected Tracks to Fixed Tracks?"
+msgstr "Convertir toutes les voies sélectionnées en voies fixes ?"
+
+#: ../bin/ccornu.c:3187
+msgid "Convert Bezier and Cornu"
+msgstr "Convertir des Bezier et Cornu"
+
+#: ../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:3269
+msgid "Convert"
+msgstr "Convertir"
+
+#: ../bin/ccornu.c:3270
+msgid "Convert To Cornu"
+msgstr "Convertir en Cornu"
+
+#: ../bin/ccornu.c:3273
+msgid "Convert From Cornu"
+msgstr "Convertir depuis une Cornu"
+
+#: ../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: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: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:174
+msgid "Drag from endpoint to center"
+msgstr "Faire glisser de l'extrémité de voie vers le centre"
+
+#: ../bin/ccurve.c:178
+msgid "Drag from center to endpoint"
+msgstr "Faites glisser du centre vers l'extrémité"
+
+#: ../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: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: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:245
+msgid "Drag along curve start"
+msgstr "Faire glisser le long du début de courbe"
+
+#: ../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:255
+msgid "Drag out curve center"
+msgstr "Faire glisser vers le centre de la courbe"
+
+#: ../bin/ccurve.c:262
+msgid "Drag out from center to endpoint"
+msgstr "Glisser du centre au point de fin"
+
+#: ../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:274
+msgid "Drag to other end of chord"
+msgstr "Glisser vers l'autre bout de la corde"
+
+#: ../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"
+
+#: ../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: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: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: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: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: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:433 ../bin/ccurve.c:615 ../bin/cjoin.c:714
+#: ../bin/cjoin.c:1017
+msgid "Desired Radius"
+msgstr "Rayon souhaité"
+
+#: ../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:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
+msgid "Back"
+msgstr "Arrière"
+
+#: ../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:642 ../bin/cstraigh.c:173
+msgid "Create Straight Track"
+msgstr "Créer une voie Droite"
+
+#: ../bin/ccurve.c:656
+msgid "Create Curved Track"
+msgstr "Créer une voie courbe"
+
+#: ../bin/ccurve.c:726
+msgid "Elevation Difference"
+msgstr "Différence d'élévation"
+
+#: ../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:728 ../bin/tcurve.c:402
+msgid "Turns"
+msgstr "Tours"
+
+#: ../bin/ccurve.c:729
+msgid "Angular Separation"
+msgstr "Séparation angulaire"
+
+#: ../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:731
+msgid "Vertical Separation"
+msgstr "Séparation verticale"
+
+#: ../bin/ccurve.c:733
+msgid "Total Length"
+msgstr "Longueur totale"
+
+#: ../bin/ccurve.c:813
+#, c-format
+msgid "Total Length %s"
+msgstr "Longueur totale %s"
+
+#: ../bin/ccurve.c:852 ../bin/ccurve.c:1079 ../bin/tcurve.c:1008
+msgid "Helix"
+msgstr "Hélicoïde"
+
+#: ../bin/ccurve.c:868
+msgid "Circle Radius"
+msgstr "Rayon du cercle"
+
+#: ../bin/ccurve.c:873
+msgid "Click on Circle Edge"
+msgstr "Cliquez sur le bord du cercle"
+
+#: ../bin/ccurve.c:877
+msgid "Click on Circle Center"
+msgstr "Cliquez sur le centre du cercle"
+
+#: ../bin/ccurve.c:907
+msgid "Drag to Center"
+msgstr "Glisser vers le centre"
+
+#: ../bin/ccurve.c:911
+msgid "Drag to Edge"
+msgstr "Glisser vers le bord"
+
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
+#, c-format
+msgid "Radius=%s"
+msgstr "Rayon=%s"
+
+#: ../bin/ccurve.c:957
+msgid "Create Helix Track"
+msgstr "Créer une voie hélicoïdale"
+
+#: ../bin/ccurve.c:972
+msgid "Create Circle Track"
+msgstr "Créer une voie circulaire"
+
+#: ../bin/ccurve.c:1031
+msgid "Curve Track"
+msgstr "Voie courbe"
+
+#: ../bin/ccurve.c:1031
+msgid "Curve Tracks"
+msgstr "Voies courbes"
+
+#: ../bin/ccurve.c:1032
+msgid "Curve from End-Pt"
+msgstr "Point de fin de la courbe"
+
+#: ../bin/ccurve.c:1035
+msgid "Curve from Tangent"
+msgstr "Tangente de la courbe"
+
+#: ../bin/ccurve.c:1038
+msgid "Curve from Center"
+msgstr "Centre de la courbe"
+
+#: ../bin/ccurve.c:1041
+msgid "Curve from Chord"
+msgstr "Corde de la courbe"
+
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
+msgid "Bezier Curve"
+msgstr "Courbe de Bezier"
+
+#: ../bin/ccurve.c:1047
+msgid "Cornu Curve"
+msgstr "Spirale de Cornu"
+
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
+msgid "Circle Track"
+msgstr "Voie circulaire"
+
+#: ../bin/ccurve.c:1052
+msgid "Circle Tracks"
+msgstr "Voies circulaires"
+
+#: ../bin/ccurve.c:1054
+msgid "Fixed Radius Circle"
+msgstr "Cercle de rayon fixe"
+
+#: ../bin/ccurve.c:1056
+msgid "Circle from Tangent"
+msgstr "Cercle à partir de la Tangente"
+
+#: ../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:553
+msgid "First Point: X,Y"
+msgstr "D'abord, Point: X,Y"
+
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
+msgid "Center: X,Y"
+msgstr "Centre : X,Y"
+
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
+msgid "Angular Length"
+msgstr "Longueur angulaire"
+
+#: ../bin/cdraw.c:556
+msgid "Line Angle"
+msgstr "Angle de la ligne"
+
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
+msgid "CCW Angle"
+msgstr "Angle CCW"
+
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
+msgid "CW Angle"
+msgstr "Angle CW"
+
+#: ../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: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:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
+msgid "Pivot"
+msgstr "Pivot"
+
+#: ../bin/cdraw.c:564
+msgid "Point Count"
+msgstr "Nombre de points"
+
+#: ../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: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: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:568
+msgid "Filled"
+msgstr "Plein"
+
+#: ../bin/cdraw.c:569
+msgid "Open End"
+msgstr "Côté ouvert"
+
+#: ../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:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
+msgid "Lumber"
+msgstr "Structure"
+
+#: ../bin/cdraw.c:572
+msgid "Orientation"
+msgstr "Orientation"
+
+#: ../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:574
+msgid "Text Origin: X,Y"
+msgstr "Origine du texte: X,Y"
+
+#: ../bin/cdraw.c:575
+msgid "Text Angle"
+msgstr "Angle du texte"
+
+#: ../bin/cdraw.c:576 ../bin/ctext.c:65 ../bin/ctext.c:144
+msgid "Font Size"
+msgstr "Taille police"
+
+#: ../bin/cdraw.c:577 ../bin/cdraw.c:1324 ../bin/ctext.c:273
+msgid "Text"
+msgstr "Texte"
+
+#: ../bin/cdraw.c:578
+msgid "Lock To Origin"
+msgstr "Verrouiller à l'origine"
+
+#: ../bin/cdraw.c:579
+msgid "Rot Origin: X,Y"
+msgstr "Centre de rotation : X,Y"
+
+#: ../bin/cdraw.c:580
+msgid "Rotate By"
+msgstr "Faire pivoter par"
+
+#: ../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: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:1167 ../bin/cdraw.c:3190
+msgid "Dimension Line"
+msgstr "Ligne de cote"
+
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
+msgid "Table Edge"
+msgstr "Bord de table"
+
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
+msgid "Circle"
+msgstr "Cercle"
+
+#: ../bin/cdraw.c:1227
+msgid "Curved Line"
+msgstr "Ligne courbe"
+
+#: ../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:1279
+msgid "Filled Rectangle"
+msgstr "Rectangle plein"
+
+#: ../bin/cdraw.c:1279
+msgid "Rectangle"
+msgstr "Rectangle"
+
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
+msgid "Polyline"
+msgstr "Polyligne"
+
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
+msgid "Filled Polygon"
+msgstr "Polygone plein"
+
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2869 ../bin/cdraw.c:3212
+msgid "Polygon"
+msgstr "Polygone"
+
+#: ../bin/cdraw.c:1330
+#, c-format
+msgid "%s(%d) Layer=%d"
+msgstr "%s(%d) Calque=%d"
+
+#: ../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:1356 ../bin/cdraw.c:2932 ../bin/compound.c:1157
+#: ../bin/doption.c:93 ../bin/tbezier.c:520
+msgid "Dash"
+msgstr "Tiret"
+
+#: ../bin/cdraw.c:1357 ../bin/cdraw.c:2931 ../bin/compound.c:1158
+#: ../bin/tbezier.c:521
+msgid "Dot"
+msgstr "Pointillé"
+
+#: ../bin/cdraw.c:1358 ../bin/compound.c:1159 ../bin/tbezier.c:522
+msgid "DashDot"
+msgstr "Tiret point"
+
+#: ../bin/cdraw.c:1359 ../bin/compound.c:1161 ../bin/tbezier.c:523
+msgid "DashDotDot"
+msgstr "Tiret point point"
+
+#: ../bin/cdraw.c:1360 ../bin/compound.c:1163 ../bin/tbezier.c:524
+msgid "CenterDot"
+msgstr "Axe"
+
+#: ../bin/cdraw.c:1361 ../bin/compound.c:1165 ../bin/tbezier.c:525
+msgid "PhantomDot"
+msgstr "Axe invisible"
+
+#: ../bin/cdraw.c:1366 ../bin/cdraw.c:2981
+msgid "Tiny"
+msgstr "Minuscule"
+
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
+msgid "Small"
+msgstr "Petit"
+
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
+msgid "Medium"
+msgstr "Moyen"
+
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
+msgid "Large"
+msgstr "Grand"
+
+#: ../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:1578 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:188
+msgid "Relative Angle"
+msgstr "Angle relatif"
+
+#: ../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:1589
+msgid "Rotate Angle"
+msgstr "Angle de rotation"
+
+#: ../bin/cdraw.c:1592
+msgid "Rot Center X,Y"
+msgstr "Rot Centre X,Y"
+
+#: ../bin/cdraw.c:1692
+msgid "Seg Lth"
+msgstr "Long. segmt"
+
+#: ../bin/cdraw.c:1693
+msgid "Rel Ang"
+msgstr "Angle Rel"
+
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
+msgid "Lumber Type"
+msgstr "Type de structure"
+
+#: ../bin/cdraw.c:2857
+msgid "Straight"
+msgstr "Trait"
+
+#: ../bin/cdraw.c:2858
+msgid "Dimension"
+msgstr "Dimension"
+
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
+msgid "Curved"
+msgstr "Courbe"
+
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
+msgid "Box"
+msgstr "Boite"
+
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
+msgid "Filled Box"
+msgstr "Boîte pleine"
+
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
+msgid "Bezier Line"
+msgstr "Ligne Bézier"
+
+#: ../bin/cdraw.c:2925
+#, c-format
+msgid "%s Line Width"
+msgstr "%s épaisseur"
+
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694 ../bin/dcar.c:4700
+msgid "Type"
+msgstr "Type"
+
+#: ../bin/cdraw.c:2933
+msgid "Dash-Dot"
+msgstr "Tiret-point"
+
+#: ../bin/cdraw.c:2934
+msgid "Dash-Dot-Dot"
+msgstr "Tiret-point-point"
+
+#: ../bin/cdraw.c:2947
+#, c-format
+msgid "%s Color"
+msgstr "%s Couleur"
+
+#: ../bin/cdraw.c:2979
+msgid "Dimension Line Size"
+msgstr "Dimension des voies"
+
+#: ../bin/cdraw.c:2991
+msgid "Drag to create Table Edge"
+msgstr "Faites glisser pour créer un bord de table"
+
+#: ../bin/cdraw.c:3089
+msgid "Seg Length"
+msgstr "Longueur du segment"
+
+#: ../bin/cdraw.c:3094
+msgid "Rel Angle"
+msgstr "Angle Rel"
+
+#: ../bin/cdraw.c:3189
+msgid "Line"
+msgstr "Ligne"
+
+#: ../bin/cdraw.c:3189
+msgid "Draw Line"
+msgstr "Dessiner un trait"
+
+#: ../bin/cdraw.c:3190
+msgid "Draw Dimension Line"
+msgstr "Tracer une ligne de cote"
+
+#. 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:3191
+msgid "Draw Benchwork"
+msgstr "Dessinez un chassis"
+
+#: ../bin/cdraw.c:3192
+msgid "Draw Table Edge"
+msgstr "Dessiner un bord de Table"
+
+#: ../bin/cdraw.c:3195
+msgid "Curve End"
+msgstr "Fin de courbe"
+
+#: ../bin/cdraw.c:3195
+msgid "Draw Curve from End"
+msgstr "Dessiner une courbe depuis l'extrémité"
+
+#: ../bin/cdraw.c:3196
+msgid "Curve Tangent"
+msgstr "Courbe tangente"
+
+#: ../bin/cdraw.c:3196
+msgid "Draw Curve from Tangent"
+msgstr "Dessiner une courbe depuis la tangente"
+
+#: ../bin/cdraw.c:3197
+msgid "Curve Center"
+msgstr "Centre de la courbe"
+
+#: ../bin/cdraw.c:3197
+msgid "Draw Curve from Center"
+msgstr "Dessiner une courbe à partir du centre"
+
+#: ../bin/cdraw.c:3198
+msgid "Curve Chord"
+msgstr "Corde de la Courbe"
+
+#: ../bin/cdraw.c:3198
+msgid "Draw Curve from Chord"
+msgstr "Dessiner une courbe à partir de la corde"
+
+#: ../bin/cdraw.c:3199
+msgid "Draw Bezier"
+msgstr "Dessinez une Bézier"
+
+#: ../bin/cdraw.c:3203
+msgid "Circle Center"
+msgstr "Centre du cercle"
+
+#: ../bin/cdraw.c:3203
+msgid "Draw Circle from Center"
+msgstr "Tracer un cercle à partir du centre"
+
+#: ../bin/cdraw.c:3204
+msgid "Circle Tangent"
+msgstr "Cercle tangent"
+
+#: ../bin/cdraw.c:3204
+msgid "Draw Circle from Tangent"
+msgstr "Dessiner un cercle à partir de la tangente"
+
+#: ../bin/cdraw.c:3206
+msgid "Circle Filled Center"
+msgstr "Centre du cercle plein"
+
+#: ../bin/cdraw.c:3206
+msgid "Draw Filled Circle from Center"
+msgstr "Dessiner un cercle plein à partir du centre"
+
+#: ../bin/cdraw.c:3207
+msgid "Circle Filled Tangent"
+msgstr "Tangent à un cercle plein"
+
+#: ../bin/cdraw.c:3207
+msgid "Draw Filled Circle from Tangent"
+msgstr "Dessiner un cercle plein à partir de la tangente"
+
+#: ../bin/cdraw.c:3210
+msgid "Draw Box"
+msgstr "Dessinez une Boite"
+
+#: ../bin/cdraw.c:3211
+msgid "Draw Filled Box"
+msgstr "Dessiner une boîte pleine"
+
+#: ../bin/cdraw.c:3212
+msgid "Draw Polygon"
+msgstr "Dessiner un polygone"
+
+#: ../bin/cdraw.c:3213
+msgid "Draw Filled Polygon"
+msgstr "Dessiner un polygone plein"
+
+#: ../bin/cdraw.c:3214
+msgid "PolyLine"
+msgstr "Polyligne"
+
+#: ../bin/cdraw.c:3214
+msgid "Draw PolyLine"
+msgstr "Dessiner une polyligne"
+
+#: ../bin/cdraw.c:3231
+msgid "Straight Objects"
+msgstr "Objets droits"
+
+#: ../bin/cdraw.c:3231
+msgid "Draw Straight Objects"
+msgstr "Dessiner des objets droits"
+
+#: ../bin/cdraw.c:3232
+msgid "Curved Lines"
+msgstr "Lignes courbes"
+
+#: ../bin/cdraw.c:3232
+msgid "Draw Curved Lines"
+msgstr "Tracer des voies courbes"
+
+#: ../bin/cdraw.c:3233
+msgid "Circle Lines"
+msgstr "Lignes circulaires"
+
+#: ../bin/cdraw.c:3233
+msgid "Draw Circles"
+msgstr "Dessinez des cercles"
+
+#: ../bin/cdraw.c:3234
+msgid "Shapes"
+msgstr "Formes"
+
+#: ../bin/cdraw.c:3234
+msgid "Draw Shapes"
+msgstr "Dessiner des formes"
+
+#: ../bin/cdraw.c:3536
+msgid "Close Polygon - 'g'"
+msgstr "Fermer le Polygone - 'g'"
+
+#: ../bin/cdraw.c:3538
+msgid "Make PolyLine - 'l'"
+msgstr "Créer une polyligne - 'l'"
+
+#: ../bin/cdraw.c:3540
+msgid "Fill Polygon - 'f'"
+msgstr "Remplir le polygone - 'f'"
+
+#: ../bin/cdraw.c:3542
+msgid "Empty Polygon - 'u'"
+msgstr "Polygone vide - 'u'"
+
+#: ../bin/cdraw.c:3545
+msgid "Points Mode - 'p'"
+msgstr "Mode Points - 'p'"
+
+#: ../bin/cdraw.c:3548
+msgid "Delete Selected Point - 'Del'"
+msgstr "Supprimer le point sélectionné - 'Suppr'"
+
+#: ../bin/cdraw.c:3549
+msgid "Vertex Point - 'v'"
+msgstr "Point du sommet - 'v'"
+
+#: ../bin/cdraw.c:3551
+msgid "Round Corner - 'r'"
+msgstr "Coin rond - 'r"
+
+#: ../bin/cdraw.c:3553
+msgid "Smooth Corner - 's'"
+msgstr "Coin lisse - 's'"
+
+#: ../bin/cdraw.c:3556 ../bin/cselect.c:3734
+msgid "LineType..."
+msgstr "Type de ligne ..."
+
+#: ../bin/cdraw.c:3557 ../bin/cselect.c:3735
+msgid "Solid Line"
+msgstr "Ligne continue"
+
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3737
+msgid "Dashed Line"
+msgstr "Ligne en tirets"
+
+#: ../bin/cdraw.c:3561 ../bin/cselect.c:3739
+msgid "Dotted Line"
+msgstr "Ligne en pointillé"
+
+#: ../bin/cdraw.c:3563
+msgid "Dash-Dot Line"
+msgstr "Ligne en tiret-point"
+
+#: ../bin/cdraw.c:3565
+msgid "Dash-Dot-Dot Line"
+msgstr "Ligne en tiret-point-point"
+
+#: ../bin/cdraw.c:3567
+msgid "Center-Dot Line"
+msgstr "Ligne d'axe"
+
+#: ../bin/cdraw.c:3569
+msgid "Phantom-Dot Line"
+msgstr "Ligne d'axe invisible"
+
+#: ../bin/cdraw.c:3572
+msgid "Origin Mode - 'o'"
+msgstr "Mode origine - 'o'"
+
+#: ../bin/cdraw.c:3574
+msgid "Reset Origin - '0'"
+msgstr "Réinitialiser l'origine - '0'"
+
+#: ../bin/cdraw.c:3576
+msgid "Origin to Selected - 'l'"
+msgstr "Origine de la sélection - 'l'"
+
+#: ../bin/cdraw.c:3578
+msgid "Origin to Middle - 'm'"
+msgstr "De l'origine au milieu - 'm'"
+
+#: ../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"
+
+#: ../bin/celev.c:42
+msgid "Defined"
+msgstr "Défini.e"
+
+#: ../bin/celev.c:42
+msgid "Hidden"
+msgstr "Caché"
+
+#: ../bin/celev.c:43
+msgid "Computed"
+msgstr "Calculé"
+
+#: ../bin/celev.c:43
+msgid "Station"
+msgstr "Gare"
+
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
+msgid "Ignore"
+msgstr "Ignoré"
+
+#: ../bin/celev.c:233
+msgid "Set Elevation"
+msgstr "Définir l'élévation"
+
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
+#, c-format
+msgid "Undefined"
+msgstr "Non défini"
+
+#: ../bin/celev.c:384 ../bin/celev.c:541
+msgid "Elevation"
+msgstr "Élévation"
+
+#: ../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:399
+msgid ""
+"Click on end, +Shift to split, +Ctrl to move description, +Alt to show "
+"elevation"
+msgstr ""
+"Cliquez sur la fin, +Maj pour diviser, +Ctrl pour déplacer la description, "
+"+Alt pour afficher l'élévation"
+
+#: ../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:424
+msgid "Move to end or track crossing"
+msgstr "Déplacez en fin ou à l'intersection de la voie"
+
+#: ../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: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:453
+#, c-format
+msgid "Click to split here - elevation %0.3f"
+msgstr "Cliquez ici pour segmenter - élévation %0.3f"
+
+#: ../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:461
+#, c-format
+msgid "Track End elevation %0.3f"
+msgstr "Élévation de l'extrémité de la voie %0.3f"
+
+#: ../bin/celev.c:463 ../bin/celev.c:466
+msgid ""
+"Click on End Pt, +Shift to split, +Ctrl to move description, +Alt show "
+"Elevation"
+msgstr ""
+"Cliquez sur la fin, +Maj pour diviser, +Ctrl pour déplacer la description, "
+"+Alt afficher l'élévation"
+
+#: ../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:490
+msgid "Split track"
+msgstr "Segmenter une voie"
+
+#: ../bin/celev.c:496
+msgid "Track split!"
+msgstr "La voie est coupée !"
+
+#: ../bin/celev.c:503
+msgid "Point selected!"
+msgstr "Point sélectionné !"
+
+#: ../bin/cgroup.c:664
+msgid "Ungroup Object"
+msgstr "Dissocier l'Objet"
+
+#: ../bin/cgroup.c:677
+#, c-format
+msgid "%d objects ungrouped"
+msgstr "%d objets dissociés"
+
+#: ../bin/cgroup.c:679
+msgid "No objects ungrouped"
+msgstr "Aucun objet dégroupé"
+
+#: ../bin/cgroup.c:693
+msgid "Replace with new group?"
+msgstr "Remplacer par un nouveau groupe ?"
+
+#: ../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: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:702 ../bin/dcmpnd.c:485
+msgid "#"
+msgstr "#"
+
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
+msgid "# Segments"
+msgstr "# Segments"
+
+#: ../bin/cgroup.c:705
+msgid "Offset X,Y:"
+msgstr "Décalage X, Y:"
+
+#: ../bin/cgroup.c:1320
+msgid "No endpts"
+msgstr "Pas de pts de fin"
+
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
+msgid "Group Tracks"
+msgstr "Voies du groupe"
+
+#: ../bin/cgroup.c:1866
+msgid "Group Objects"
+msgstr "Objets du groupe"
+
+#: ../bin/chndldto.c:68
+msgid "Place frog and drag angle"
+msgstr "Placer le cœur et l'angle de déviation"
+
+#: ../bin/chndldto.c:85
+msgid "frog"
+msgstr "coeur"
+
+#: ../bin/chndldto.c:91
+msgid "Drag to set angle"
+msgstr "Faites glisser pour définir l'angle"
+
+#: ../bin/chndldto.c:132
+#, c-format
+msgid "Angle = %0.2f Frog# = %0.2f"
+msgstr "Angle = %0.2f Coeur# = %0.2f"
+
+#: ../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:137
+msgid "Select point position"
+msgstr "Sélectionnez la position du point"
+
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
+msgid "points"
+msgstr "aiguilles"
+
+#: ../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:286
+msgid "Create Hand Laid Turnout"
+msgstr "Créer un aiguillage paramétré à la main"
+
+#: ../bin/chndldto.c:381
+msgid "HandLaidTurnout"
+msgstr "Aiguillage de conception libre"
+
+#: ../bin/cjoin.c:170
+#, c-format
+msgid "Curved Track: Radius=%s Length=%s"
+msgstr "Voie courbe : Rayon =%s Longueur =%s"
+
+#: ../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: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: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:431
+msgid "Click on an unselected End-Point"
+msgstr "Cliquez sur un point d'extrémité non sélectionné"
+
+#: ../bin/cjoin.c:432
+msgid "Click on a selected End-Point"
+msgstr "Cliquez sur un point d'extrémité sélectionné"
+
+#: ../bin/cjoin.c:438
+msgid "unselected"
+msgstr "non sélectionné"
+
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
+msgid "selected"
+msgstr "sélectionnée-s"
+
+#: ../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:539 ../bin/cjoin.c:576
+msgid "Not a line - Try again"
+msgstr "Pas de ligne - Réessayez"
+
+#: ../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: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:632
+msgid "Create PolyLine"
+msgstr "Créer une polyligne"
+
+#: ../bin/cjoin.c:913
+msgid "Left click - join with track"
+msgstr "Clic gauche - raccorder avec la voie"
+
+#: ../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:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
+msgid "Select 2nd track"
+msgstr "Sélectionner une 2nd voie"
+
+#: ../bin/cjoin.c:1266
+msgid "Beyond end of 2nd track"
+msgstr "Au-delà de la fin de la 2ème voie"
+
+#: ../bin/cjoin.c:1302
+msgid "Beyond end of 1st track"
+msgstr "Au-delà de la fin de la 1ère voie"
+
+#: ../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:1333
+msgid "First "
+msgstr "Premier "
+
+#: ../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:1366
+msgid "Second "
+msgstr "Second "
+
+#: ../bin/cjoin.c:1380 ../bin/track.c:2395 ../bin/track.c:2434
+#: ../bin/track.c:2509
+msgid "Connecting "
+msgstr "Connecter "
+
+#: ../bin/cjoin.c:1479
+msgid "Join Tracks"
+msgstr "Raccorder les voies"
+
+#: ../bin/cjoin.c:1575
+msgid "Join"
+msgstr "Raccorder"
+
+#: ../bin/cjoin.c:1576
+msgid "Join Track"
+msgstr "Raccorder une voie"
+
+#: ../bin/cjoin.c:1579
+msgid "Join Lines"
+msgstr "Raccorder des lignes"
+
+#: ../bin/cmisc.c:55
+msgid "Middle"
+msgstr "Milieu"
+
+#: ../bin/cmisc.c:55 ../bin/macro.c:70
+msgid "End"
+msgstr "Fin"
+
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
+msgid "Lock"
+msgstr "Verrou"
+
+#: ../bin/cmisc.c:593
+msgid "Select track to describe +Shift for Frozen"
+msgstr "Sélectionnez la voie à parcourir + Maj pour geler"
+
+#: ../bin/cmisc.c:691 ../bin/doption.c:245
+msgid "Properties"
+msgstr "Propriétés"
+
+#: ../bin/cmodify.c:276
+msgid ""
+"Select a track to modify, Left-Click change length, Right-Click to add "
+"flextrack"
+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:520
+msgid "Modify Track"
+msgstr "Modifier la voie"
+
+#: ../bin/cmodify.c:564
+msgid "Drag to add flex track"
+msgstr "Faites glisser pour créer une voie flexible"
+
+#: ../bin/cmodify.c:569
+msgid "No track to extend"
+msgstr "Pas de voies à prolonger"
+
+#: ../bin/cmodify.c:574
+msgid "No track selected"
+msgstr "Aucune voie sélectionnée"
+
+#: ../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:740
+msgid "Extend Track"
+msgstr "Prolonger la voie"
+
+#: ../bin/cmodify.c:882
+msgid "Modify"
+msgstr "Modifier"
+
+#: ../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: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:897
+msgid "Pan center - 'c'"
+msgstr "Centre du panoramique - 'c'"
+
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
+msgid "Note"
+msgstr "Remarque"
+
+#: ../bin/cnote.c:73
+msgid "Replace this text with your layout notes"
+msgstr "Remplacez ce texte par vos notes de plan"
+
+#: ../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:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
+msgid "Z1"
+msgstr "Z1"
+
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
+msgid "Z2"
+msgstr "Z2"
+
+#: ../bin/compound.c:730
+msgid "End Pt 3: X,Y"
+msgstr "Bout 3: X,Y"
+
+#: ../bin/compound.c:734
+msgid "Z3"
+msgstr "Z3"
+
+#: ../bin/compound.c:735
+msgid "End Pt 4: X,Y"
+msgstr "Bout 4: X,Y"
+
+#: ../bin/compound.c:739
+msgid "Z4"
+msgstr "Z4"
+
+#: ../bin/compound.c:741 ../bin/tease.c:528
+msgid "Origin: X,Y"
+msgstr "Origine : X,Y"
+
+#: ../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:747
+msgid "LineType"
+msgstr "Type de Ligne"
+
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
+msgid "Structure"
+msgstr "Structure"
+
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
+msgid "Turnout"
+msgstr "Aiguillage"
+
+#: ../bin/compound.c:1027
+msgid "Sectional Track"
+msgstr "Section de voie"
+
+#: ../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: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:99
+msgid "Radius Factor"
+msgstr "Facteur de Rayon"
+
+#: ../bin/cparalle.c:141
+msgid "Radius factor"
+msgstr "Facteur de rayon"
+
+#: ../bin/cparalle.c:155
+msgid " Track/Line doesn't support parallel"
+msgstr " Cette voie/ligne ne permet pas le parallélisme"
+
+#: ../bin/cparalle.c:230
+msgid "Create Parallel Track"
+msgstr "Créer une voie parallèle"
+
+#. 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:300
+msgid "Parallel Track"
+msgstr "Voie parallèle"
+
+#: ../bin/cparalle.c:303
+msgid "Parallel Line"
+msgstr "Ligne parallèle"
+
+#: ../bin/cprint.c:110
+msgid "Portrait"
+msgstr "Portrait"
+
+#: ../bin/cprint.c:110
+msgid "Landscape"
+msgstr "Paysage"
+
+#: ../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:91 ../bin/cswitchmotor.c:110
+#: ../bin/cswitchmotor.c:230 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
+msgid "Reverse"
+msgstr "Inversé"
+
+#: ../bin/cprint.c:112
+msgid "Engineering Data"
+msgstr "Données d'ingénierie"
+
+#: ../bin/cprint.c:113
+msgid "Registration Marks (in 1:1 scale only)"
+msgstr "Aides au positionnement (à l'échelle 1:1 uniquement)"
+
+#: ../bin/cprint.c:114
+msgid "Page Numbers"
+msgstr "Numéro de page"
+
+#: ../bin/cprint.c:115
+msgid "Ignore Page Margins"
+msgstr "Impression sans marge"
+
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:559
+msgid "Snap Grid"
+msgstr "Grille magnétique"
+
+#: ../bin/cprint.c:117
+msgid "Layout Edge"
+msgstr "Bord de Layout"
+
+#: ../bin/cprint.c:117
+msgid "Every Page"
+msgstr "Chaque page"
+
+#: ../bin/cprint.c:118
+msgid "Roadbed Outline"
+msgstr "Rayon droit"
+
+#: ../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:128
+msgid "Print Scale"
+msgstr "Echelle d'impression"
+
+#: ../bin/cprint.c:129
+msgid "Page Width"
+msgstr "Largeur de page"
+
+#: ../bin/cprint.c:130
+msgid "Max"
+msgstr "Max"
+
+#: ../bin/cprint.c:132
+msgid "Snap Shot"
+msgstr "Copie Ecran"
+
+#: ../bin/cprint.c:133
+msgid "Page Format"
+msgstr "Format de la page"
+
+#: ../bin/cprint.c:134
+msgid "Print Order"
+msgstr "Ordre d'impression"
+
+#: ../bin/cprint.c:135
+msgid "Print "
+msgstr "Imprimer "
+
+#: ../bin/cprint.c:144
+msgid "Rulers:"
+msgstr "Règles:"
+
+#: ../bin/cprint.c:150
+msgid " Width"
+msgstr " Largeur"
+
+#: ../bin/cprint.c:152
+msgid "Margins"
+msgstr "Marges"
+
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
+msgid "Origin: X"
+msgstr "Origine : 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 "Remise à zéro"
+
+#: ../bin/cprint.c:157
+msgid "Setup"
+msgstr "Configuration"
+
+#: ../bin/cprint.c:158 ../bin/cselect.c:3675 ../bin/menu.c:974
+msgid "Select All"
+msgstr "Tout sélectionner"
+
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:671
+#: ../bin/misc.c:725
+msgid "Clear"
+msgstr "Effacer"
+
+#: ../bin/cprint.c:161
+msgid "0 pages"
+msgstr "0 pages"
+
+#: ../bin/cprint.c:190
+#, c-format
+msgid "%d page"
+msgstr "pages %d"
+
+#: ../bin/cprint.c:190
+#, c-format
+msgid "%d pages"
+msgstr "pages %d"
+
+#: ../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:746
+msgid "Print Margins"
+msgstr "Imprimer les marges"
+
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3147
+#: ../bin/denum.c:51
+msgid "Print"
+msgstr "Imprimer"
+
+#: ../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:1574
+msgid "Print..."
+msgstr "Imprimer ..."
+
+#. 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:626
+#, c-format
+msgid "%s Profile: %s"
+msgstr "%s Profil: %s"
+
+#: ../bin/cprofile.c:704 ../bin/menu.c:225
+msgid "Change"
+msgstr "Modifier"
+
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
+#, c-format
+msgid "Elev = %0.1f"
+msgstr "Élév = %0.1f"
+
+#: ../bin/cprofile.c:763
+#, c-format
+msgid "Elev=%0.2f %0.1f%%"
+msgstr "Élév =%0.2f %0.1f%%"
+
+#: ../bin/cprofile.c:768
+#, c-format
+msgid "%0.1f%% Elev = %0.2f"
+msgstr "%0.1f%% Elev = %0.2f"
+
+#: ../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:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
+msgid "Profile Command"
+msgstr "Commande de profil"
+
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
+msgid "Drag to change Elevation"
+msgstr "Faites glisser pour modifier l'élévation"
+
+#: ../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:901
+msgid "Select a Defined Elevation to extend Profile"
+msgstr "Sélectionnez une élévation définie pour étendre le profil"
+
+#: ../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:1527
+msgid "Define"
+msgstr "Définir"
+
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
+#, c-format
+msgid "%d tracks moved"
+msgstr "%d Voies déplacées"
+
+#: ../bin/cpull.c:503
+msgid "Pull Tracks"
+msgstr "Voies de service"
+
+#: ../bin/cpull.c:579
+msgid "Tighten Tracks"
+msgstr "Resserrer les voies"
+
+#: ../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:673
+msgid "Try to Connect all Selected Tracks?"
+msgstr "Toutes les voies sélectionnées doivent-elles être connectées?"
+
+#: ../bin/cpull.c:680
+msgid "ReConnect"
+msgstr "Reconnecter"
+
+#: ../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"
+
+#: ../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:750
+msgid ""
+"Select first endpoint to connect, or Right-Click for connecting selected "
+"tracks (not turntable)"
+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: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:821
+msgid "Same Track! - please select another"
+msgstr "Même voie ! - veuillez en choisir une autre"
+
+#: ../bin/cpull.c:918
+msgid "Connect Two Tracks"
+msgstr "Connecter deux Voies"
+
+#: ../bin/cpull.c:924
+msgid "Connect All Selected - 'S'"
+msgstr "Connecter tous les éléments sélectionnés - 'S'"
+
+#: ../bin/cruler.c:390
+msgid "Measurement"
+msgstr "Mesure"
+
+#. 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:394
+msgid "Protractor"
+msgstr "Rapporteur"
+
+#: ../bin/cselect.c:688
+msgid "Change Track Width"
+msgstr "Changer la largeur de la voie"
+
+#: ../bin/cselect.c:714
+msgid "Change Line Type"
+msgstr "Changer le type de ligne"
+
+#: ../bin/cselect.c:739
+msgid "Delete only works in Select Mode"
+msgstr "La suppression ne fonctionne qu'en mode Sélection"
+
+#: ../bin/cselect.c:755
+msgid "Delete Tracks"
+msgstr "Supprimer des voies"
+
+#: ../bin/cselect.c:862
+msgid "Hide Tracks (Tunnel)"
+msgstr "Masquer les voies (tunnel)"
+
+#: ../bin/cselect.c:882
+msgid "Bridge Tracks "
+msgstr "Raccorder les voies "
+
+#: ../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:956 ../bin/menu.c:1118
+msgid "Move To Current Layer"
+msgstr "Déplacer vers le calque actuel"
+
+#: ../bin/cselect.c:1010 ../bin/menu.c:1303
+msgid "Clear Elevations"
+msgstr "Effacer les élévations"
+
+#: ../bin/cselect.c:1056
+msgid "Add Elevations"
+msgstr "Ajouter des élévations"
+
+#: ../bin/cselect.c:1072
+msgid "Refresh Compound"
+msgstr "Mettre à jour la compilation"
+
+#: ../bin/cselect.c:1471
+msgid "Cornu too tight - it was deleted"
+msgstr "Cornu trop serrée - elle a été supprimée"
+
+#: ../bin/cselect.c:1526
+msgid "Move To Join"
+msgstr "Déplacer pour Raccorder"
+
+#: ../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:1756 ../bin/cselect.c:1890 ../bin/cselect.c:2295
+msgid "Move Tracks"
+msgstr "Déplacer des voies"
+
+#: ../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: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:1994 ../bin/cselect.c:2370
+msgid "Rotate Tracks"
+msgstr "Faire pivoter les voies"
+
+#: ../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:2055 ../bin/cselect.c:2090
+#, c-format
+msgid "Angle %0.3f"
+msgstr "Angle %0.3f"
+
+#: ../bin/cselect.c:2154
+#, c-format
+msgid "Angle %0.3f #%ld"
+msgstr "Angle %0.3f #%ld"
+
+#: ../bin/cselect.c:2156
+#, c-format
+msgid "Angle %0.3f %s"
+msgstr "Angle %0.3f %s"
+
+#: ../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:2177
+msgid "Align: Click on the 2nd unselected object"
+msgstr "Aligner : Cliquez sur le 2ème objet non sélectionné"
+
+#: ../bin/cselect.c:2307
+msgid "In module layer:"
+msgstr "Dans la couche de module"
+
+#: ../bin/cselect.c:2315
+msgid "Frozen Layer:"
+msgstr "Couche gelée"
+
+#: ../bin/cselect.c:2319
+msgid "Not found"
+msgstr "Pas trouvé"
+
+#: ../bin/cselect.c:2356
+msgid "Multiple Selected"
+msgstr "Plusieurs sélectionnés"
+
+#: ../bin/cselect.c:2383
+msgid "Toggle Detail"
+msgstr "Basculer les détails"
+
+#: ../bin/cselect.c:2399
+msgid "Toggle Label"
+msgstr "Modifie l'étiquette"
+
+#: ../bin/cselect.c:2572
+msgid "Elevation description"
+msgstr "Description de l'élévation"
+
+#: ../bin/cselect.c:2579
+msgid "Hidden description - 's' to Show, 'd' Details"
+msgstr "Description cachée - \"s\" Afficher, \"d\" Détails"
+
+#: ../bin/cselect.c:2582
+msgid "Shown description - 'h' to Hide"
+msgstr "Description visible - 'h' pour cacher"
+
+#: ../bin/cselect.c:2590
+msgid "Select and drag a description"
+msgstr "Sélectionnez et faites glisser une description"
+
+#: ../bin/cselect.c:2632
+msgid "Hidden Label - Drag to reveal"
+msgstr "Étiquette cachée - Faites glisser pour afficher"
+
+#: ../bin/cselect.c:2634
+msgid "Drag label"
+msgstr "Faites glisser l'étiquette pour la positionner"
+
+#: ../bin/cselect.c:2644
+msgid "Move Label"
+msgstr "Déplacer l'étiquette"
+
+#: ../bin/cselect.c:2683
+msgid "To Hide, use Context Menu"
+msgstr "Pour masquer, utilisez le menu contextuel"
+
+#: ../bin/cselect.c:2717 ../bin/cselect.c:3715
+msgid "Show/Hide Description"
+msgstr "Montrer/cacher la description"
+
+#: ../bin/cselect.c:2720
+msgid "Toggle Detailed Description"
+msgstr "Basculer la description détaillée"
+
+#: ../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:2815
+#, c-format
+msgid "Angle %0.2f"
+msgstr "Angle %0.2f"
+
+#: ../bin/cselect.c:2818
+msgid "Flip Tracks"
+msgstr "Voies en miroir"
+
+#: ../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:3188
+msgid "Select track"
+msgstr "Sélectionner une voie"
+
+#. 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:3654 ../bin/cselect.c:3683 ../bin/menu.c:932
+msgid "Undo"
+msgstr "Annuler"
+
+#: ../bin/cselect.c:3655 ../bin/cselect.c:3684 ../bin/menu.c:934
+msgid "Redo"
+msgstr "Refaire"
+
+#: ../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: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 "Glisser vers l'origine - 'o'/'0'"
+
+#: ../bin/cselect.c:3672 ../bin/cselect.c:3692
+msgid "Pan Center Here - 'c'"
+msgstr "Centre du Panoramique ici - 'c'"
+
+#: ../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:3690
+msgid "Zoom to selected - 's'"
+msgstr "Zoomer sur la sélection - 's'"
+
+#: ../bin/cselect.c:3696 ../bin/menu.c:979
+msgid "Deselect All"
+msgstr "Tout désélectionner"
+
+#: ../bin/cselect.c:3699
+msgid "Properties -'?'"
+msgstr "Propriétés -'?'"
+
+#: ../bin/cselect.c:3701
+msgid "Modify/Activate Track"
+msgstr "Modifier/Activer la voie"
+
+#: ../bin/cselect.c:3704 ../bin/menu.c:965
+msgid "Cut"
+msgstr "Couper"
+
+#: ../bin/cselect.c:3705 ../bin/menu.c:967
+msgid "Copy"
+msgstr "Copier"
+
+#: ../bin/cselect.c:3706 ../bin/fileio.c:1730 ../bin/menu.c:969
+msgid "Paste"
+msgstr "Coller"
+
+#: ../bin/cselect.c:3707 ../bin/menu.c:971
+msgid "Clone"
+msgstr "Copie"
+
+#: ../bin/cselect.c:3709
+msgid "Rotate..."
+msgstr "Rotation ..."
+
+#: ../bin/cselect.c:3711
+msgid "Align"
+msgstr "Aligner"
+
+#: ../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:3721
+msgid "Bridge/NoBridge"
+msgstr "Raccordé/Non raccordé"
+
+#: ../bin/cselect.c:3723
+msgid "Roadbed/NoRoadbed"
+msgstr ""
+
+#: ../bin/cselect.c:3725
+msgid "NoTies/Ties"
+msgstr "Non connectés/connectés"
+
+#: ../bin/cselect.c:3727
+msgid "Thickness..."
+msgstr "Épaisseur..."
+
+#: ../bin/cselect.c:3728 ../bin/menu.c:1150
+msgid "Thin Tracks"
+msgstr "Voies fines"
+
+#: ../bin/cselect.c:3730 ../bin/menu.c:1152
+msgid "Medium Tracks"
+msgstr "Voies moyennes"
+
+#: ../bin/cselect.c:3732 ../bin/menu.c:1154
+msgid "Thick Tracks"
+msgstr "Voies épaisses"
+
+#: ../bin/cselect.c:3741
+msgid "Dash-Dotted Line"
+msgstr "Ligne tiret-pointillé"
+
+#: ../bin/cselect.c:3743
+msgid "Dash-Dot-Dotted Line"
+msgstr "Ligne en tiret-point-pointillé"
+
+#: ../bin/cselect.c:3746
+msgid "Move To Front"
+msgstr "Déplacer vers l'avant"
+
+#: ../bin/cselect.c:3747
+msgid "Move To Back"
+msgstr "Déplacer vers l'arrière"
+
+#: ../bin/cselect.c:3749
+msgid "Group"
+msgstr "Grouper"
+
+#: ../bin/cselect.c:3750
+msgid "UnGroup"
+msgstr "Dissocier"
+
+#: ../bin/cselect.c:3796
+msgid "Move Description"
+msgstr "Déplacer l'étiquette"
+
+#: ../bin/cselect.c:3804 ../bin/menu.c:294 ../bin/menu.c:986
+msgid "Move"
+msgstr "Déplacer"
+
+#. 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: 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:214
+msgid "Change Sensor"
+msgstr "Changer de capteur"
+
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
+msgid "Sensor"
+msgstr "Capteur"
+
+#: ../bin/csensor.c:407
+msgid "Create Sensor"
+msgstr "Créer un capteur"
+
+#: ../bin/csensor.c:410
+msgid "Modify Sensor"
+msgstr "Modifier le capteur"
+
+#: ../bin/csensor.c:445
+msgid "Edit sensor"
+msgstr "Editer un capteur"
+
+#: ../bin/csensor.c:483
+msgid "Place sensor"
+msgstr "Mettre un capteur"
+
+#: ../bin/csnap.c:530
+msgid "Horz"
+msgstr "Horz"
+
+#: ../bin/csnap.c:532
+msgid "Spacing"
+msgstr "Espacement"
+
+#: ../bin/csnap.c:534
+msgid "Divisions"
+msgstr "Divisions"
+
+#: ../bin/csnap.c:537
+msgid "Enable"
+msgstr "Activer"
+
+#: ../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 "A"
+
+#: ../bin/csnap.c:554
+msgid "Show"
+msgstr "Afficher"
+
+#: ../bin/csnap.c:815
+msgid "Change Grid..."
+msgstr "Modifier la grille ..."
+
+#: ../bin/csplit.c:45
+msgid "Set Block Gaps"
+msgstr "Définir des points de séparation"
+
+#: ../bin/csplit.c:137
+#, fuzzy
+msgid "Select track and position for split"
+msgstr "Sélectionnez la voie à scinder"
+
+#: ../bin/csplit.c:161
+msgid "Can't Split that Track Object"
+msgstr "On ne peut pas diviser cette voie"
+
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
+msgid "Split Track"
+msgstr "Segmentation de Voie"
+
+#: ../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:188
+msgid "No Track to Split"
+msgstr "Pas de voie à scinder"
+
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
+msgid "Left"
+msgstr "Gauche"
+
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
+msgid "Right"
+msgstr "Droit"
+
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
+msgid "Both"
+msgstr "Les deux"
+
+#: ../bin/csplit.c:212
+msgid "Top"
+msgstr "Haut"
+
+#: ../bin/csplit.c:214
+msgid "Bottom"
+msgstr "Bas"
+
+#: ../bin/csplit.c:307
+msgid "Select draw to split"
+msgstr "Sélectionnez le dessin à scinder"
+
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
+msgid "Split Draw"
+msgstr "Fractionner le dessin"
+
+#: ../bin/csplit.c:332
+msgid "No Draw to Split"
+msgstr "Pas de dessin à fractionner"
+
+#: ../bin/csplit.c:371
+msgid "Select the draw object to Trim to"
+msgstr "Sélectionnez l'objet de dessin à découper"
+
+#: ../bin/csplit.c:387
+msgid "Can't Trim with a Track"
+msgstr "Impossible de couper avec une voie"
+
+#: ../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:397
+msgid "No Draw to Trim with"
+msgstr "Pas de dessin pour couper avec"
+
+#: ../bin/csplit.c:404
+msgid "Can't Split a track object"
+msgstr "Impossible de diviser un objet de voie"
+
+#: ../bin/csplit.c:432 ../bin/csplit.c:511
+msgid "Trim Draw"
+msgstr "Couper le dessin"
+
+#: ../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:504
+msgid "Split"
+msgstr "Scinder"
+
+#: ../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:105
+msgid "Drag to place 2nd end point"
+msgstr "Faites glisser pour placer la 2ème extrémité"
+
+#: ../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:204 ../bin/tstraigh.c:245
+msgid "Straight Track"
+msgstr "Voie droite"
+
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:93
+#: ../bin/doption.c:250
+msgid "Hide"
+msgstr "Cacher"
+
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
+msgid "Pier Number"
+msgstr "Numéro de quai"
+
+#: ../bin/cstruct.c:627
+#, c-format
+msgid "Scale %d:1"
+msgstr "Echelle %d :1"
+
+#: ../bin/cstruct.c:629
+#, c-format
+msgid "Width %s"
+msgstr "Largeur %s"
+
+#: ../bin/cstruct.c:631
+#, c-format
+msgid "Height %s"
+msgstr "Hauteur %s"
+
+#: ../bin/cstruct.c:779
+msgid "Place Structure"
+msgstr "Mettre un bâtiment"
+
+#: ../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:921
+msgid "Drag to rotate"
+msgstr "Faites glisser pour faire pivoter"
+
+#: ../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"
+
+#: ../bin/cstruct.c:1031 ../bin/cturnout.c:2963 ../bin/param.c:3013
+msgid "Close"
+msgstr "Fermer"
+
+#: ../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:1091
+msgid ""
+"Left drag to move, right drag to rotate, or press Return or click Ok to "
+"finalize"
+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: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:231
+msgid "Point Sense"
+msgstr "Sens des aiguilles"
+
+#: ../bin/cswitchmotor.c:112
+msgid "Turnout Number"
+msgstr "Numéro de rapport d'aiguillage"
+
+#: ../bin/cswitchmotor.c:299
+msgid "Change Switch Motor"
+msgstr "Changer de moteur d'aiguillage"
+
+#: ../bin/cswitchmotor.c:369
+msgid "Switch motor"
+msgstr "Moteur d'aiguillage"
+
+#: ../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:570 ../bin/cswitchmotor.c:746
+msgid "Switch motor must have a name!"
+msgstr "Le moteur d'aiguillage doit avoir un nom !"
+
+#: ../bin/cswitchmotor.c:574
+msgid "Create Switch Motor"
+msgstr "Créer un Moteur d'aiguillage"
+
+#: ../bin/cswitchmotor.c:608
+msgid "Create switch motor"
+msgstr "Créer un moteur d'aiguillage"
+
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
+msgid "Select a turnout"
+msgstr "Sélectionner un aiguillage"
+
+#: ../bin/cswitchmotor.c:632
+msgid "Not a turnout!"
+msgstr "Pas d'aiguillage !"
+
+#: ../bin/cswitchmotor.c:664 ../bin/cswitchmotor.c:695
+msgid "Not a switch motor!"
+msgstr "Pas de moteur d'aiguillage !"
+
+#: ../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:702
+msgid "Delete Switch Motor"
+msgstr "Supprimer le Moteur d'aiguillage"
+
+#: ../bin/cswitchmotor.c:750
+msgid "Modify Switch Motor"
+msgstr "Modifier le moteur d'aiguillage"
+
+#: ../bin/cswitchmotor.c:776
+msgid "Edit switch motor"
+msgstr "Editer le moteur d'aiguillage"
+
+#: ../bin/cswitchmotor.c:782
+#, c-format
+msgid "Edit switch motor %d"
+msgstr "Editer le moteur d'aiguillage %d"
+
+#: ../bin/cswitchmotor.c:889
+msgid "Switch Motor"
+msgstr "Moteur d'aiguillage"
+
+#: ../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:242
+msgid "Create Text"
+msgstr "Créer un texte"
+
+#: ../bin/ctext.c:277
+msgid "Fonts..."
+msgstr "Polices ..."
+
+#: ../bin/ctodesgn.c:139
+msgid "Frog #"
+msgstr "Cœur N° #"
+
+#: ../bin/ctodesgn.c:139
+msgid "Degrees"
+msgstr "Degrés"
+
+#: ../bin/ctodesgn.c:140
+msgid "Dual Path"
+msgstr "Double voie"
+
+#: ../bin/ctodesgn.c:140
+msgid "Quad Path"
+msgstr "Quadruple voie"
+
+#: ../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:203 ../bin/ctodesgn.c:3204 ../bin/ctodesgn.c:3205
+msgid "Left Description"
+msgstr "Description gauche"
+
+#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:207
+msgid " #"
+msgstr " #"
+
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:3203
+msgid "Right Description"
+msgstr "Description droite"
+
+#: ../bin/ctodesgn.c:208
+msgid "Roadbed Width"
+msgstr "Largeur de balast"
+
+#: ../bin/ctodesgn.c:212 ../bin/denum.c:52
+msgid "Print Setup"
+msgstr "Réglages Imp"
+
+#: ../bin/ctodesgn.c:242
+msgid "Diverging Length"
+msgstr "Longueur voie déviée"
+
+#: ../bin/ctodesgn.c:243
+msgid "Diverging Angle"
+msgstr "Angle voie déviée"
+
+#: ../bin/ctodesgn.c:244
+msgid "Diverging Offset"
+msgstr "Décalage voie déviée"
+
+#: ../bin/ctodesgn.c:245
+msgid "Overall Length"
+msgstr "Longueur totale"
+
+#: ../bin/ctodesgn.c:257
+msgid "Regular Turnout"
+msgstr "Aiguillage droit"
+
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:314
+msgid "Inner Length"
+msgstr "Longueur intérieure"
+
+#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:315
+msgid "Inner Angle"
+msgstr "Angle Intérieur"
+
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
+msgid "Inner Offset"
+msgstr "Décalage interne"
+
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:318
+msgid "Outer Angle"
+msgstr "Angle extérieur"
+
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:319
+msgid "Outer Offset"
+msgstr "Décalage extérieur"
+
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:321
+msgid "Outer Length"
+msgstr "Longueur extérieure"
+
+#: ../bin/ctodesgn.c:302
+msgid "Curved Turnout"
+msgstr "Aiguillage courbe"
+
+#: ../bin/ctodesgn.c:317
+msgid "Inner Radius"
+msgstr "Rayon intérieur"
+
+#: ../bin/ctodesgn.c:320
+msgid "Outer Radius"
+msgstr "Rayon extérieur"
+
+#: ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:489
+msgid "Toe Radius"
+msgstr "Rayon initial"
+
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:401
+msgid "Toe Length"
+msgstr "Longueur initiale"
+
+#: ../bin/ctodesgn.c:336
+msgid "Cornu Curved Turnout"
+msgstr "Aiguillage courbe Cornu"
+
+#: ../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:349 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:476
+msgid "Left Angle"
+msgstr "Angle gauche"
+
+#: ../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:351 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:484
+msgid "Right Offset"
+msgstr "Bon offset"
+
+#: ../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:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
+msgid "Right Length"
+msgstr "Bonne longueur"
+
+#: ../bin/ctodesgn.c:381
+msgid "Wye Turnout"
+msgstr "Aiguillage symétrique"
+
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:478
+msgid "Left Radius"
+msgstr "Rayon gauche"
+
+#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:483
+msgid "Right Radius"
+msgstr "Rayon droit"
+
+#: ../bin/ctodesgn.c:414
+msgid "Cornu Wye Turnout"
+msgstr "Aiguillage symétrique Cornu"
+
+#: ../bin/ctodesgn.c:463
+msgid "3-way Turnout"
+msgstr "Aiguillage 3-voies"
+
+#: ../bin/ctodesgn.c:479
+msgid "Center Length"
+msgstr "Longueur intérieure"
+
+#: ../bin/ctodesgn.c:480
+msgid "Center Angle"
+msgstr "Angle Intérieur"
+
+#: ../bin/ctodesgn.c:481 ../bin/dcar.c:2348
+msgid "Center Offset"
+msgstr "Décalage interne"
+
+#: ../bin/ctodesgn.c:482
+msgid "Center Radius"
+msgstr "Rayon du cercle"
+
+#: ../bin/ctodesgn.c:487
+msgid "Toe Length Left"
+msgstr "Longueur initiale gauche"
+
+#: ../bin/ctodesgn.c:488
+msgid "Toe Length Right"
+msgstr "Longueur initiale droite"
+
+#: ../bin/ctodesgn.c:502
+msgid "Cornu 3-way Turnout"
+msgstr "Aiguillage 3-voies Cornu"
+
+#: ../bin/ctodesgn.c:527
+msgid "Crossing"
+msgstr "Croisement"
+
+#: ../bin/ctodesgn.c:552
+msgid "Single Slipswitch"
+msgstr "Traversée jonction simple"
+
+#: ../bin/ctodesgn.c:587
+msgid "Double Slipswitch"
+msgstr "Traversée jonction double"
+
+#: ../bin/ctodesgn.c:612
+msgid "Right Crossover"
+msgstr "Traversée droite"
+
+#: ../bin/ctodesgn.c:638
+msgid "Left Crossover"
+msgstr "Traversée gauche"
+
+#: ../bin/ctodesgn.c:663
+msgid "Double Crossover"
+msgstr "Traversée double"
+
+#: ../bin/ctodesgn.c:685
+msgid "Straight Section"
+msgstr "Section droite"
+
+#: ../bin/ctodesgn.c:697
+msgid "Angle (Degrees)"
+msgstr "Angle (Degrés)"
+
+#: ../bin/ctodesgn.c:708
+msgid "Curved Section"
+msgstr "Section courbe"
+
+#: ../bin/ctodesgn.c:731
+msgid "Bumper Section"
+msgstr "Section Butoir"
+
+#: ../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:743
+msgid "Radius1"
+msgstr "Rayon1"
+
+#: ../bin/ctodesgn.c:744
+msgid "Radius2"
+msgstr "Rayon2"
+
+#: ../bin/ctodesgn.c:827
+msgid "Turntable Section"
+msgstr "Section de pont tournant"
+
+#: ../bin/ctodesgn.c:2777
+#, c-format
+msgid "%s Designer"
+msgstr "%s Designer"
+
+#: ../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:2780
+msgid "Page"
+msgstr "Page"
+
+#: ../bin/ctodesgn.c:2788
+msgid "Frog Number"
+msgstr "N° de coeur"
+
+#: ../bin/ctodesgn.c:3147
+msgid "Turnout Designer"
+msgstr "Conception d'aiguillage"
+
+#: ../bin/ctodesgn.c:3160
+#, c-format
+msgid "%s %s Designer"
+msgstr "%s concepteur de %s"
+
+#: ../bin/ctrain.c:179 ../bin/dcar.c:2360 ../bin/dcar.c:4694 ../bin/dcar.c:4700
+msgid "Index"
+msgstr "Index"
+
+#: ../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:728
+msgid "Follow"
+msgstr "Suivre"
+
+#: ../bin/ctrain.c:729
+msgid "Auto Reverse"
+msgstr "Inversion automatique"
+
+#: ../bin/ctrain.c:748 ../bin/dcar.c:5686
+msgid "Find"
+msgstr "Chercher"
+
+#: ../bin/ctrain.c:754 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
+msgid "Forward"
+msgstr "Avant"
+
+#: ../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:952 ../bin/ctrain.c:981
+msgid "Crashed"
+msgstr "Dérailler"
+
+#: ../bin/ctrain.c:954
+msgid "Not on Track"
+msgstr "Pas sur la voie"
+
+#: ../bin/ctrain.c:958
+msgid "Trains Paused"
+msgstr "Trains en pause"
+
+#: ../bin/ctrain.c:960
+msgid "Running"
+msgstr "Marche"
+
+#: ../bin/ctrain.c:965
+msgid "End of Track"
+msgstr "Fin de voie"
+
+#: ../bin/ctrain.c:969
+msgid "Open Turnout"
+msgstr "Aiguillage ouvert"
+
+#: ../bin/ctrain.c:973
+msgid "Manual Stop"
+msgstr "Arrêt manuel"
+
+#: ../bin/ctrain.c:977
+msgid "No Room"
+msgstr "Pas d'espace de travail"
+
+#: ../bin/ctrain.c:985
+msgid "Unknown Status"
+msgstr "Statut inconnu"
+
+#: ../bin/ctrain.c:995
+msgid "No trains"
+msgstr "Pas de trains"
+
+#: ../bin/ctrain.c:1375
+msgid "Train Control XXX"
+msgstr "Contrôle du train XXX"
+
+#: ../bin/ctrain.c:1376
+#, c-format
+msgid "Train Control %d"
+msgstr "Contrôle du train %d"
+
+#: ../bin/ctrain.c:1378
+msgid "Train Control"
+msgstr "Panneau de commande"
+
+#: ../bin/ctrain.c:3198 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
+msgid "Run Trains"
+msgstr "Mode Trains"
+
+#: ../bin/ctrain.c:3217
+msgid "Uncouple"
+msgstr "Découpler"
+
+#: ../bin/ctrain.c:3219
+msgid "Flip Car"
+msgstr "Inverser un véhicule"
+
+#: ../bin/ctrain.c:3222
+msgid "Clearance Lines On"
+msgstr "Lignes de dégagement On"
+
+#: ../bin/ctrain.c:3225
+msgid "Clearance Lines Off"
+msgstr "Lignes de dégagement Off"
+
+#: ../bin/ctrain.c:3227
+msgid "Flip Train"
+msgstr "Inverser le train"
+
+#. 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:3234
+msgid "Change Direction"
+msgstr "Changer de direction"
+
+#: ../bin/ctrain.c:3238
+msgid "Remove Car"
+msgstr "Supprimer un véhicule"
+
+#: ../bin/ctrain.c:3241
+msgid "Remove Train"
+msgstr "Supprimer le train"
+
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
+msgid "New"
+msgstr "Nouveau"
+
+#: ../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"
+
+#: ../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)"
+
+#: ../bin/cturnout.c:437
+msgid "Unknown special case"
+msgstr "Cas spécial inconnu"
+
+#: ../bin/cturnout.c:564
+msgid "Connect Adjustable Tracks"
+msgstr "Connecter les voies ajustables"
+
+#: ../bin/cturnout.c:1030
+msgid "splitTurnout: can't find segment"
+msgstr "aiguillage fractionné : impossible de trouver le segment"
+
+#: ../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:1524
+#, c-format
+msgid "Length=%s"
+msgstr "Longueur = %s"
+
+#: ../bin/cturnout.c:1815
+#, c-format
+msgid "Turnout %d Path: %s"
+msgstr "Aiguillage %d Chemin: %s"
+
+#: ../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:2394
+#, c-format
+msgid "0 connections (%s)"
+msgstr "0 connections (%s)"
+
+#: ../bin/cturnout.c:2433
+msgid "Place New Turnout"
+msgstr "Mettre un nouvel aiguillage"
+
+#: ../bin/cturnout.c:2861
+#, c-format
+msgid "Angle = %0.3f (%s)"
+msgstr "Angle = %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 ""
+"Choisissez l'aiguillage avec son point de fin actif, puis placez-le sur le "
+"plan"
+
+#: ../bin/cturnout.c:3190
+#, fuzzy
+msgid "Fixed-Track"
+msgstr "Prolonger la voie"
+
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
+msgid "Diameter"
+msgstr "Diamètre"
+
+#: ../bin/cturntbl.c:276
+msgid "# EndPt"
+msgstr "# Bout"
+
+#: ../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:335 ../bin/cturntbl.c:454
+msgid "Turntable"
+msgstr "Pont tournant"
+
+#: ../bin/cturntbl.c:670
+msgid "Drag to create stall track"
+msgstr "Faites glisser pour créer une voie de dépassement"
+
+#: ../bin/cturntbl.c:728
+msgid "Connect Turntable Tracks"
+msgstr "Connecter les voies du pont tournant"
+
+#: ../bin/cturntbl.c:1058
+msgid "Create Turntable"
+msgstr "Créer un pont tournant"
+
+#: ../bin/cturntbl.c:1090
+msgid "Custom Turntable"
+msgstr "Pont tournant prototype"
+
+#: ../bin/cundo.c:266
+msgid "Undo Trace"
+msgstr "Annuler la trace"
+
+#: ../bin/cundo.c:741
+#, c-format
+msgid "Undo: %s"
+msgstr "Annuler : %s"
+
+#: ../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:749
+#, c-format
+msgid "Redo: %s"
+msgstr "Refaire : %s"
+
+#: ../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:148
+#, c-format
+msgid "%s Turnout Designer"
+msgstr "%s Conception d'aiguillage"
+
+#: ../bin/custom.c:152
+#, c-format
+msgid "%s Version %s"
+msgstr "%s Version %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 ""
+"Tous les fichiers %s (*.xtc,*.xtce)|*.xtc;*.xtce|%s Trackplan (*.xtc)|*.xtc|"
+"%s Trackplan étendu (*.xtce)|*.xtce|Tous les fichiers (*)|*"
+
+#: ../bin/custom.c:166
+#, c-format
+msgid ""
+"%s Trackplan (*.xtc)|*.xtc|%s Extended Trackplan (*.xtce)|*.xtce|All Files "
+"(*)|*"
+msgstr ""
+"%s Trackplan (*.xtc)|*.xtc|%s Trackplan étendu (*.xtce)|*.xtce|Tous les "
+"fichiers (*)|*"
+
+#: ../bin/custom.c:174
+#, c-format
+msgid "All Files (*)|*"
+msgstr "Tous les fichiers (*)|*"
+
+#: ../bin/custom.c:178
+#, c-format
+msgid "%s Import Files (*.xti)|*.xti"
+msgstr "%s Fichiers (*.xti) importés|*.xti"
+
+#: ../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:186
+msgid "Scalable Vector Graphics Format Files (*.svg)|*.svg"
+msgstr "Fichiers de format de graphiques vectoriels évolutifs (*.svg)|*.svg"
+
+#: ../bin/custom.c:190
+#, c-format
+msgid "%s Record Files (*.xtr)|*.xtr"
+msgstr "%s Fichiers d'enregistrement (*.xtr)|*.xtr"
+
+#: ../bin/custom.c:194
+#, c-format
+msgid "%s Note Files (*.not)|*.not"
+msgstr "Pas de fichiers %s (*.not)|*.not"
+
+#: ../bin/custom.c:198
+#, c-format
+msgid "%s Log Files (*.log)|*.log"
+msgstr "Fichiers Log %s (*.log)|*.log"
+
+#: ../bin/custom.c:202
+#, c-format
+msgid "%s PartsList Files (*.txt)|*.txt"
+msgstr "Fichiers de nomenclature %s (*.txt)|*.txt"
+
+#: ../bin/dbench.c:38
+msgid " L-Girder"
+msgstr " L-Support"
+
+#: ../bin/dbench.c:38
+msgid " T-Girder"
+msgstr " T-Support"
+
+#: ../bin/dbench.c:61
+msgid "On Edge"
+msgstr "Sur le bord"
+
+#: ../bin/dbench.c:62
+msgid "Flat"
+msgstr "Plat"
+
+#: ../bin/dbench.c:67
+msgid "Left-Down"
+msgstr "En bas à gauche"
+
+#: ../bin/dbench.c:68
+msgid "Right-Down"
+msgstr "En bas à droite"
+
+#: ../bin/dbench.c:69
+msgid "Left-Up"
+msgstr "En haut à gauche"
+
+#: ../bin/dbench.c:70
+msgid "Right-Up"
+msgstr "En haut à droite"
+
+#: ../bin/dbench.c:71
+msgid "Left-Inverted"
+msgstr "Inversé à gauche"
+
+#: ../bin/dbench.c:72
+msgid "Right-Inverted"
+msgstr "Inversé à droite"
+
+#: ../bin/dbench.c:78
+msgid "Inverted"
+msgstr "Inversé"
+
+#: ../bin/dbench.c:147
+#, c-format
+msgid ""
+"Bad BenchType for %s:\n"
+"%s"
+msgstr ""
+"Mauvais type de support pour%s:\n"
+"%s"
+
+#: ../bin/dbitmap.c:150
+msgid "Drawing tracks to bitmap"
+msgstr "Tracer des voies en bitmap"
+
+#: ../bin/dbitmap.c:187
+msgid "Drawn with "
+msgstr "Dessiné avec "
+
+#: ../bin/dbitmap.c:229
+msgid "Writing bitmap to file"
+msgstr "Enregistrer en bitmap dans un fichier"
+
+#: ../bin/dbitmap.c:252
+msgid "Layout Titles"
+msgstr "Titres du plan"
+
+#: ../bin/dbitmap.c:253
+msgid "Borders"
+msgstr "Bordures"
+
+#: ../bin/dbitmap.c:254
+msgid "Centerline of Track"
+msgstr "Ligne médiane de la voie ferrée"
+
+#: ../bin/dbitmap.c:255
+msgid "Background Image"
+msgstr "Image de fond"
+
+#: ../bin/dbitmap.c:262
+msgid "Include "
+msgstr "inclure"
+
+#: ../bin/dbitmap.c:264
+msgid "Resolution "
+msgstr "Échelle de résolution"
+
+#: ../bin/dbitmap.c:265
+msgid "dpi"
+msgstr "points par pouce"
+
+#: ../bin/dbitmap.c:266
+msgid "Bitmap Size "
+msgstr "Taille du bitmap"
+
+#: ../bin/dbitmap.c:268
+msgid "99999 by 99999 pixels"
+msgstr "Bitmap : 99999 par 99999 pixels"
+
+#: ../bin/dbitmap.c:269
+msgid "Approximate File Size "
+msgstr "Taille approchée du fichier"
+
+#: ../bin/dbitmap.c:271
+msgid "999.9Mb"
+msgstr "999.9Mb"
+
+#: ../bin/dbitmap.c:317
+#, c-format
+msgid "%ld by %ld pixels"
+msgstr "%ld par %ld pixels"
+
+#: ../bin/dbitmap.c:339
+#, c-format
+msgid "%0.0f"
+msgstr "%0.0f"
+
+#: ../bin/dbitmap.c:341
+#, c-format
+msgid "%0.1fKb"
+msgstr "%0.1fKb"
+
+#: ../bin/dbitmap.c:343
+#, c-format
+msgid "%0.1fMb"
+msgstr "%0.1fMb"
+
+#: ../bin/dbitmap.c:345
+#, c-format
+msgid "%0.1fGb"
+msgstr "%0.1fGb"
+
+#: ../bin/dbitmap.c:436
+msgid "Save Bitmap"
+msgstr "Enregistrer le bitmap"
+
+#: ../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:472
+msgid "Export to bitmap"
+msgstr "Exporter en bitmap"
+
+#: ../bin/dcar.c:45
+msgid "Truck"
+msgstr "Bogies"
+
+#: ../bin/dcar.c:45
+msgid "Body"
+msgstr "Structure"
+
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: ../bin/dcar.c:481
+msgid "Diesel Loco"
+msgstr "Loco Diesel"
+
+#: ../bin/dcar.c:482
+msgid "Steam Loco"
+msgstr "Loco vapeur"
+
+#: ../bin/dcar.c:483
+msgid "Elect Loco"
+msgstr "Loco Elect"
+
+#: ../bin/dcar.c:484
+msgid "Freight Car"
+msgstr "Wagon march"
+
+#: ../bin/dcar.c:485
+msgid "Psngr Car"
+msgstr "Voiture voy"
+
+#: ../bin/dcar.c:486
+msgid "M-O-W"
+msgstr "Chariot"
+
+#: ../bin/dcar.c:487
+msgid "Other"
+msgstr "Autres"
+
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
+msgid "N/A"
+msgstr "Non applicable"
+
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
+msgid "Mint"
+msgstr "Mint"
+
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
+msgid "Excellent"
+msgstr "Excellent"
+
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
+msgid "Good"
+msgstr "Bon"
+
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
+msgid "Fair"
+msgstr "Juste"
+
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
+msgid "Poor"
+msgstr "Mauvais"
+
+#: ../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:2282 ../wlib/mswlib/mswmisc.c:2057
+msgid "Information"
+msgstr "Information"
+
+#: ../bin/dcar.c:2282
+msgid "Customize"
+msgstr "Personnaliser"
+
+#: ../bin/dcar.c:2296
+msgid "Sequential"
+msgstr "Séquentiel"
+
+#: ../bin/dcar.c:2296
+msgid "Repeated"
+msgstr "Répété"
+
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
+msgid "Prototype"
+msgstr "Prototype"
+
+#: ../bin/dcar.c:2315
+msgid "Part"
+msgstr "Référence"
+
+#: ../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:2319
+msgid "Loco?"
+msgstr "Loco ?"
+
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
+msgid "Import"
+msgstr "Importation"
+
+#: ../bin/dcar.c:2330
+msgid "Mode"
+msgstr "Mode"
+
+#: ../bin/dcar.c:2334
+msgid "Road"
+msgstr "Compagnie ferroviaire"
+
+#: ../bin/dcar.c:2336
+msgid "Reporting Mark"
+msgstr "Sigle"
+
+#: ../bin/dcar.c:2338
+msgid "Number"
+msgstr "Nombre"
+
+#: ../bin/dcar.c:2342
+msgid "Car Length"
+msgstr "Longueur hors tampons"
+
+#: ../bin/dcar.c:2346
+msgid "Truck Centers"
+msgstr "Centre des bogies"
+
+#: ../bin/dcar.c:2350
+msgid "Coupler Mount"
+msgstr "Support d'attelage"
+
+#: ../bin/dcar.c:2352
+msgid "Coupled Length"
+msgstr "Longueur de couplage"
+
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
+msgid "Coupler Length"
+msgstr "Longueur de l'attelage"
+
+#: ../bin/dcar.c:2362
+msgid "Purchase Price"
+msgstr "Prix d'achat"
+
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
+msgid "Current Price"
+msgstr "Prix actuel"
+
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
+msgid "Condition"
+msgstr "Condition"
+
+#: ../bin/dcar.c:2368
+msgid "Purchase Date"
+msgstr "Date d'achat"
+
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
+msgid "Service Date"
+msgstr "Date de service"
+
+#: ../bin/dcar.c:2372
+msgid "Quantity"
+msgstr "Quantité"
+
+#: ../bin/dcar.c:2374
+msgid "Numbers"
+msgstr "Nombres"
+
+#. 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:2383
+msgid "Car Part"
+msgstr "Partie de véhicule"
+
+#: ../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:2776 ../bin/dcar.c:3143
+msgid "Undecorated"
+msgstr "Sans étiquette"
+
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
+msgid "Custom"
+msgstr "Personnalisé"
+
+#: ../bin/dcar.c:3049
+msgid "Undecorated "
+msgstr "Sans étiquette "
+
+#: ../bin/dcar.c:3298
+#, c-format
+msgid "New %s Scale Car"
+msgstr "Nouveau véhicule à l'échelle %s"
+
+#: ../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:3301
+#, c-format
+msgid "Update %s Scale Car"
+msgstr "Mettre à jour le véhicule à l'échelle %s"
+
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321 ../bin/dcmpnd.c:178
+msgid "Update"
+msgstr "Mise à jour"
+
+#: ../bin/dcar.c:3307
+#, c-format
+msgid "New %s Scale Car Part"
+msgstr "Nouvelle fiche véhicule à l'échelle %s"
+
+#: ../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:3317
+msgid "New Prototype"
+msgstr "Nouveau prototype"
+
+#: ../bin/dcar.c:3320
+msgid "Update Prototype"
+msgstr "Mettre à jour le prototype"
+
+#: ../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: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:4077
+msgid "Enter a date between 19000101 and 21991231"
+msgstr "Entrez une date comprise entre 19000101 et 21991231"
+
+#: ../bin/dcar.c:4083
+msgid "Invalid month"
+msgstr "Mois invalide"
+
+#: ../bin/dcar.c:4086
+msgid "Invalid day"
+msgstr "Jour invalide"
+
+#: ../bin/dcar.c:4184
+msgid "Select or Enter a Manufacturer"
+msgstr "Sélectionnez ou entrez un fabricant"
+
+#: ../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:4410
+#, c-format
+msgid "Added %ld new Cars"
+msgstr "Ajout de %ld nouveaux matériels roulants"
+
+#: ../bin/dcar.c:4412
+msgid "Added new Car"
+msgstr "Ajout d'un nouveau véhicule"
+
+#: ../bin/dcar.c:4415
+msgid "Updated Car"
+msgstr "Véhicule mis à jour"
+
+#: ../bin/dcar.c:4418
+msgid " and Part"
+msgstr " et une partie"
+
+#: ../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:4451 ../bin/dcar.c:4473
+msgid "Added new"
+msgstr "Ajout d'un nouveau"
+
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
+msgid "Updated"
+msgstr "Mis à jour"
+
+#: ../bin/dcar.c:4472
+#, c-format
+msgid "%s Prototype: %s%s."
+msgstr "%s Prototype: %s%s."
+
+#: ../bin/dcar.c:4474
+msgid ". Enter new values or press Close"
+msgstr ". Entrez de nouvelles valeurs ou appuyez sur Fermer"
+
+#: ../bin/dcar.c:4598
+msgid "New Car Part"
+msgstr "Nouvelle fiche de véhicule"
+
+#: ../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:4695
+msgid "Rep Marks"
+msgstr "Numéros de voiture"
+
+#: ../bin/dcar.c:4695
+msgid "Purc Price"
+msgstr "Prix d'achat"
+
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
+msgid "Curr Price"
+msgstr "Prix act"
+
+#: ../bin/dcar.c:4696
+msgid "Purc Date"
+msgstr "Date d'achat"
+
+#: ../bin/dcar.c:4696
+msgid "Srvc Date"
+msgstr "Date de service"
+
+#: ../bin/dcar.c:4697
+msgid "Locat'n"
+msgstr "Lieu"
+
+#: ../bin/dcar.c:4701
+msgid "RepMarks"
+msgstr "Sigles"
+
+#: ../bin/dcar.c:4701
+msgid "Purch Price"
+msgstr "Prix d'achat"
+
+#: ../bin/dcar.c:4702
+msgid "Purch Date"
+msgstr "Date d'achat"
+
+#: ../bin/dcar.c:4720
+msgid "Sort By"
+msgstr "Trier par"
+
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
+msgid "Edit"
+msgstr "Editer"
+
+#: ../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:4736 ../bin/fileio.c:1631
+msgid "Export"
+msgstr "Exporter"
+
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
+msgid "List"
+msgstr "Liste"
+
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1416
+msgid "Car Inventory"
+msgstr "Inventaire des véhicules"
+
+#: ../bin/dcar.c:5026
+msgid "List Cars"
+msgstr "Liste de véhicules"
+
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
+msgid "Import Cars"
+msgstr "Importer des véhicules"
+
+#: ../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:5395 ../bin/dcar.c:5452
+msgid "Export Cars"
+msgstr "Exporter les véhicules"
+
+#: ../bin/dcar.c:5494
+msgid "Shelf"
+msgstr "Étagère"
+
+#: ../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:111
+msgid "Updating definitions, please wait"
+msgstr "Mise à jour des définitions, veuillez patienter"
+
+#: ../bin/dcmpnd.c:178
+msgid "Update Title"
+msgstr "Mettre à jour le titre"
+
+#: ../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: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: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:341
+msgid "Skip"
+msgstr "Ignorer"
+
+#: ../bin/dcmpnd.c:374
+#, c-format
+msgid "%d Track(s) refreshed"
+msgstr "%d Voie(s) revues"
+
+#: ../bin/dcmpnd.c:419
+msgid "Refresh Turnout/Structure"
+msgstr "Actualiser les aiguillages/bâtiments"
+
+#: ../bin/dcmpnd.c:423
+msgid "Choose a Turnout/Structure to replace:"
+msgstr "Choisissez un aiguillage/bâtiment à remplacer :"
+
+#. 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:436
+msgid "Structures"
+msgstr "Structures"
+
+#: ../bin/dcmpnd.c:467
+msgid "Choose another Turnout/Structure to replace:"
+msgstr "Choisissez un autre aiguillage/bâtiment à remplacer :"
+
+#: ../bin/dcmpnd.c:582
+msgid "Rename Object"
+msgstr "Renommer un objet"
+
+#: ../bin/dcustmgm.c:54
+msgid "Create a new "
+msgstr "Créer un nouveau "
+
+#: ../bin/dcustmgm.c:56
+msgid "Go"
+msgstr "Go"
+
+#: ../bin/dcustmgm.c:62
+msgid "Move To"
+msgstr "Déplacer vers"
+
+#: ../bin/dcustmgm.c:98
+msgid "Rename"
+msgstr "Renommer"
+
+#: ../bin/dcustmgm.c:186
+msgid "Label"
+msgstr "Étiquette"
+
+#: ../bin/dcustmgm.c:225
+msgid "Contents Label"
+msgstr "Contenu de l'étiquette"
+
+#: ../bin/dcustmgm.c:284
+msgid "Move To XTP"
+msgstr "Déplacer vers le fichier de paramètres"
+
+#: ../bin/dcustmgm.c:285
+msgid "Parameter File (*.xtp)|*.xtp"
+msgstr "Fichier de Paramètres (*.xtp)|*.xtp"
+
+#: ../bin/dcustmgm.c:407
+msgid "Manage custom designed parts"
+msgstr "Gérer les matériels prototypes"
+
+#: ../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:68
+msgid "Broad"
+msgstr "Large"
+
+#: ../bin/dease.c:68
+msgid "Cornu"
+msgstr "Cornu"
+
+#: ../bin/dease.c:76
+msgid "Value"
+msgstr "Valeur"
+
+#: ../bin/dease.c:77 ../bin/tease.c:530
+msgid "R"
+msgstr "R"
+
+#: ../bin/dease.c:79 ../bin/tease.c:531
+msgid "L"
+msgstr "L"
+
+#: ../bin/dease.c:250
+msgid "Easement"
+msgstr "Courbe de transition"
+
+#: ../bin/denum.c:44
+msgid "Prices"
+msgstr "Prix"
+
+#: ../bin/denum.c:45 ../bin/denum.c:139
+msgid "Indexes"
+msgstr "Index"
+
+#: ../bin/denum.c:50
+msgid "Save As ..."
+msgstr "Sauver sous ..."
+
+#: ../bin/denum.c:135 ../bin/denum.c:198 ../bin/denum.c:236
+msgid "Each"
+msgstr "L'unité"
+
+#: ../bin/denum.c:152 ../bin/denum.c:154
+msgid "Parts List"
+msgstr "Nomenclature"
+
+#: ../bin/denum.c:160
+#, c-format
+msgid ""
+"%s Parts List\n"
+"\n"
+msgstr ""
+"%s Nomenclature\n"
+"\n"
+
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
+msgid "Extended"
+msgstr "L'ensemble"
+
+#: ../bin/denum.c:247 ../bin/denum.c:251
+msgid "Total"
+msgstr "Total"
+
+#: ../bin/dlayer.c:541
+msgid "Select Layer:"
+msgstr "Sélectionner le calque :"
+
+#: ../bin/dlayer.c:547
+msgid "Use Color"
+msgstr "Utiliser la couleur"
+
+#: ../bin/dlayer.c:549
+msgid "Visible"
+msgstr "Visible"
+
+#: ../bin/dlayer.c:551
+msgid "Frozen"
+msgstr "Gelé"
+
+#: ../bin/dlayer.c:553
+msgid "On Map"
+msgstr "Sur la carte"
+
+#: ../bin/dlayer.c:555
+msgid "Module"
+msgstr "Module"
+
+#: ../bin/dlayer.c:557
+msgid "No Button"
+msgstr "Aucun bouton"
+
+#: ../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:586
+msgid "Settings when Current"
+msgstr "Réglages en cours"
+
+#: ../bin/dlayer.c:588
+msgid "Object Count:"
+msgstr "Nombre d'objets :"
+
+#: ../bin/dlayer.c:589
+msgid "All Layer Preferences"
+msgstr "Préférences pour tous les calques"
+
+#: ../bin/dlayer.c:591 ../bin/macro.c:1431
+msgid "Save"
+msgstr "Sauver"
+
+#: ../bin/dlayer.c:592
+msgid "Defaults"
+msgstr "Defauts"
+
+#: ../bin/dlayer.c:710 ../bin/dlayer.c:1563 ../bin/dlayer.c:1581
+#: ../bin/dlayer.c:1651
+msgid "Main"
+msgstr "Principal"
+
+#: ../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:2071
+msgid "Layers"
+msgstr "Calques"
+
+#: ../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:92
+msgid "Auto Pan"
+msgstr "Panoramique auto"
+
+#: ../bin/doption.c:94
+msgid "All"
+msgstr "Tout"
+
+#: ../bin/doption.c:95
+msgid "Thick"
+msgstr "Épais"
+
+#: ../bin/doption.c:95
+msgid "Exception"
+msgstr "Exception"
+
+#: ../bin/doption.c:96
+msgid "Outline"
+msgstr "Contour"
+
+#: ../bin/doption.c:97
+msgid "Off"
+msgstr "De"
+
+#: ../bin/doption.c:97
+msgid "On"
+msgstr "On"
+
+#: ../bin/doption.c:98
+msgid "Track Descriptions"
+msgstr "Descriptions de voies"
+
+#: ../bin/doption.c:98
+msgid "Lengths"
+msgstr "Longueurs"
+
+#: ../bin/doption.c:98
+msgid "EndPt Elevations"
+msgstr "Elévations des bouts de voies"
+
+#: ../bin/doption.c:98
+msgid "Track Elevations"
+msgstr "Elévations de voies"
+
+#: ../bin/doption.c:98
+msgid "Cars"
+msgstr "Véhicules"
+
+#: ../bin/doption.c:99 ../bin/doption.c:100
+msgid "Descr"
+msgstr "Descr"
+
+#: ../bin/doption.c:100
+msgid "Manuf"
+msgstr "Fabric"
+
+#: ../bin/doption.c:101 ../bin/doption.c:102
+msgid "Object"
+msgstr "Objet"
+
+#: ../bin/doption.c:103
+msgid "Live Map"
+msgstr "Carte en direct"
+
+#: ../bin/doption.c:104
+msgid "Hide Trains On Hidden Track"
+msgstr "Masquer les trains sur voie cachée"
+
+#: ../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: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"
+
+#: ../bin/doption.c:110
+msgid "Color Track"
+msgstr "Couleur de la voie"
+
+#: ../bin/doption.c:111
+msgid "Color Draw"
+msgstr "Couleur du dessin"
+
+#: ../bin/doption.c:112
+msgid "Draw Tunnel"
+msgstr "Dessin des tunnels"
+
+#: ../bin/doption.c:113
+msgid "Draw EndPts"
+msgstr "Dessin des bouts de voie"
+
+#: ../bin/doption.c:114
+msgid "Draw Unconnected EndPts"
+msgstr "Dessin des voies non connectées"
+
+#: ../bin/doption.c:115
+msgid "Draw Ties"
+msgstr "Dessin des traverses"
+
+#: ../bin/doption.c:116
+msgid "Draw Centers"
+msgstr "Dessin des centres"
+
+#: ../bin/doption.c:117
+msgid "Two Rail Scale"
+msgstr "Échelle pour 2 voies"
+
+#: ../bin/doption.c:118
+msgid "Map Scale"
+msgstr "Échelle de la carte de navigation"
+
+#: ../bin/doption.c:124
+msgid "Label Enable"
+msgstr "Étiquettes activées"
+
+#: ../bin/doption.c:125
+msgid "Label Scale"
+msgstr "Échelle d'étiquette"
+
+#: ../bin/doption.c:126
+msgid "Label Font Size"
+msgstr "Taille de police des étiquettes"
+
+#: ../bin/doption.c:127
+msgid "Hot Bar Labels"
+msgstr "Etiquettes barre rapide"
+
+#: ../bin/doption.c:128
+msgid "Layout Labels"
+msgstr "Etiquettes de calques"
+
+#: ../bin/doption.c:129
+msgid "List Labels"
+msgstr "Liste des étiquettes"
+
+#: ../bin/doption.c:132
+msgid "Car Labels"
+msgstr "Etiquettes des véhicules"
+
+#: ../bin/doption.c:133
+msgid "Train Update Delay"
+msgstr "Délai de mise à jour du train"
+
+#: ../bin/doption.c:176
+msgid "Turning off AutoSave"
+msgstr "Désactiver la sauvegarde auto"
+
+#: ../bin/doption.c:187
+msgid "Turning on CheckPointing"
+msgstr "Activer les points de contrôles"
+
+#: ../bin/doption.c:201
+msgid "Display Options"
+msgstr "Options d'affichage"
+
+#: ../bin/doption.c:203
+msgid "Proto"
+msgstr "Proto"
+
+#: ../bin/doption.c:205
+msgid "Proto/Manuf"
+msgstr "Proto/Fabric"
+
+#: ../bin/doption.c:208
+msgid "Proto/Manuf/Part Number"
+msgstr "Proto/Fabric/N° de référence"
+
+#: ../bin/doption.c:210
+msgid "Proto/Manuf/Partno/Item"
+msgstr "Proto/Fabric/N° de référence/Objet"
+
+#: ../bin/doption.c:211
+msgid "Manuf/Proto"
+msgstr "Fabricant/Proto"
+
+#: ../bin/doption.c:214
+msgid "Manuf/Proto/Part Number"
+msgstr "Fabricant/Proto/N° de référence"
+
+#: ../bin/doption.c:216
+msgid "Manuf/Proto/Partno/Item"
+msgstr "Fabricant/Proto/N° de référence/Objet"
+
+#: ../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:246
+msgid "Add to selection, +Ctrl Single item selected"
+msgstr "Ajouter à la sélection, +Ctrl Élément unique sélectionné"
+
+#: ../bin/doption.c:247
+msgid "Deselect all on select nothing"
+msgstr "Désélectionner tout / ne rien sélectionner"
+
+#: ../bin/doption.c:252
+msgid "Normal: Command List, Shift: Command Options"
+msgstr "Normal : Liste de cde, Maj. : Options de cde"
+
+#: ../bin/doption.c:252
+msgid "Normal: Command Options, Shift: Command List"
+msgstr "Normal : Options de cde, Maj.: Liste de cde"
+
+#: ../bin/doption.c:255
+msgid "Default Command"
+msgstr "Commande par défaut"
+
+#: ../bin/doption.c:257
+msgid "Hide Selection Window"
+msgstr "Masquer la fenêtre de sélection"
+
+#: ../bin/doption.c:259
+msgid "Right Click"
+msgstr "Clic droit"
+
+#: ../bin/doption.c:260
+msgid "Select Mode"
+msgstr "Mode sélection"
+
+#: ../bin/doption.c:286
+msgid "Command Options"
+msgstr "Options de commande"
+
+#: ../bin/doption.c:310
+msgid "16 px"
+msgstr "16 px"
+
+#: ../bin/doption.c:310
+msgid "24 px"
+msgstr "24 px"
+
+#: ../bin/doption.c:310
+msgid "32 px"
+msgstr "32 px"
+
+#: ../bin/doption.c:311
+msgid "English"
+msgstr "Anglais"
+
+#: ../bin/doption.c:311
+msgid "Metric"
+msgstr "Métrique"
+
+#: ../bin/doption.c:312
+msgid "Polar"
+msgstr "Polaire"
+
+#: ../bin/doption.c:312
+msgid "Cartesian"
+msgstr "Cartésien"
+
+#: ../bin/doption.c:313
+msgid "Balloon Help"
+msgstr "Bulle d'aide"
+
+#: ../bin/doption.c:314
+msgid "Show FlexTrack in HotBar"
+msgstr "Afficher FlexTrack dans la barre rapide"
+
+#: ../bin/doption.c:315
+msgid "Load Last Layout"
+msgstr "Charger le dernier plan"
+
+#: ../bin/doption.c:315
+msgid "Start New Layout"
+msgstr "Commencer un nouveau plan"
+
+#: ../bin/doption.c:318
+msgid "Icon Size"
+msgstr "Taille de l'icône"
+
+#: ../bin/doption.c:319
+msgid "Angles"
+msgstr "Angles"
+
+#: ../bin/doption.c:321
+msgid "Units"
+msgstr "Unités"
+
+#: ../bin/doption.c:323
+msgid "Length Format"
+msgstr "Format de longueur"
+
+#: ../bin/doption.c:324
+msgid "Min Track Length"
+msgstr "Longueur de voie min"
+
+#: ../bin/doption.c:325
+msgid "Connection Distance"
+msgstr "Distance de connexion"
+
+#: ../bin/doption.c:326
+msgid "Connection Angle"
+msgstr "Angle de connexion"
+
+#: ../bin/doption.c:327
+msgid "Turntable Angle"
+msgstr "Angle de pont tournant"
+
+#: ../bin/doption.c:328
+msgid "Max Coupling Speed"
+msgstr "Vitesse maximale de couplage"
+
+#: ../bin/doption.c:331
+msgid "Drag Distance"
+msgstr "Distance de glissé du curseur"
+
+#: ../bin/doption.c:332
+msgid "Drag Timeout"
+msgstr "Ajuster le délai d'attente"
+
+#: ../bin/doption.c:333
+msgid "Min Grid Spacing"
+msgstr "Pas min. de la grille"
+
+#: ../bin/doption.c:335
+msgid "Check Point Frequency"
+msgstr "Fréquence des points de contrôle"
+
+#: ../bin/doption.c:337
+msgid "Autosave Checkpoint Frequency"
+msgstr "Fréquence de l'enregistrement automatique des points de contrôle"
+
+#: ../bin/doption.c:338
+msgid "On Program Startup"
+msgstr "Au démarrage du programme"
+
+#: ../bin/doption.c:348 ../bin/doption.c:352 ../bin/doption.c:370
+msgid "999.999"
+msgstr "999.999"
+
+#: ../bin/doption.c:349
+msgid "999.999999"
+msgstr "999.999999"
+
+#: ../bin/doption.c:350
+msgid "999.99999"
+msgstr "999.99999"
+
+#: ../bin/doption.c:351
+msgid "999.9999"
+msgstr "999.9999"
+
+#: ../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.999mm"
+
+#: ../bin/doption.c:374
+msgid "999.99mm"
+msgstr "999.99mm"
+
+#: ../bin/doption.c:375
+msgid "999.9mm"
+msgstr "999.9mm"
+
+#: ../bin/doption.c:376
+msgid "999.999cm"
+msgstr "999.999cm"
+
+#: ../bin/doption.c:377
+msgid "999.99cm"
+msgstr "999.99cm"
+
+#: ../bin/doption.c:378
+msgid "999.9cm"
+msgstr "999.9cm"
+
+#: ../bin/doption.c:379
+msgid "999.999m"
+msgstr "999.999m"
+
+#: ../bin/doption.c:380
+msgid "999.99m"
+msgstr "999.99m"
+
+#: ../bin/doption.c:381
+msgid "999.9m"
+msgstr "999.9m"
+
+#: ../bin/doption.c:516
+msgid "Preferences"
+msgstr "Préférences"
+
+#: ../bin/doption.c:560
+msgid "Marker"
+msgstr "Marqueur"
+
+#: ../bin/doption.c:561
+msgid "Border"
+msgstr "Bordure"
+
+#: ../bin/doption.c:562
+msgid "Primary Axis"
+msgstr "Axe primaire"
+
+#: ../bin/doption.c:563
+msgid "Secondary Axis"
+msgstr "Axe secondaire"
+
+#: ../bin/doption.c:564
+msgid "Normal Track"
+msgstr "Voie normale"
+
+#: ../bin/doption.c:565
+msgid "Selected Track"
+msgstr "Voie sélectionnée"
+
+#: ../bin/doption.c:566
+msgid "Profile Path"
+msgstr "Profil de voie"
+
+#: ../bin/doption.c:567
+msgid "Exception Track"
+msgstr "Voie non conforme"
+
+#: ../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"
+
+#: ../bin/dpricels.c:56
+msgid "Flex Track"
+msgstr "Voie FLEX"
+
+#: ../bin/dpricels.c:57
+msgid "costs"
+msgstr "coûts"
+
+#: ../bin/dpricels.c:166
+msgid "Price List"
+msgstr "Liste de prix"
+
+#: ../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:77
+msgid "Select all"
+msgstr "Tt sélectionner"
+
+#: ../bin/dprmfile.c:77
+msgid "Favorite"
+msgstr "Préféré"
+
+#: ../bin/dprmfile.c:80
+msgid "Library..."
+msgstr "Bibliothèque..."
+
+#: ../bin/dprmfile.c:81
+msgid "Browse..."
+msgstr "Parcourir..."
+
+#: ../bin/dprmfile.c:328
+#, c-format
+msgid "%d parameter files reloaded."
+msgstr "%d fichiers de paramètres rechargés."
+
+#: ../bin/dprmfile.c:330
+msgid "One parameter file reloaded."
+msgstr "Un fichier de paramètres rechargé."
+
+#: ../bin/dprmfile.c:431
+msgid "Parameter Files"
+msgstr "Fichiers de paramètres"
+
+#: ../bin/dprmfile.c:434
+msgid "Load Parameters"
+msgstr "Chargers des paramètres d'objets"
+
+#: ../bin/dprmfile.c:434
+msgid "Parameter files (*.xtp)|*.xtp"
+msgstr "Fichier de paramètres (*.xtp)|*.xtp"
+
+#: ../bin/draw.c:2352
+msgid "Macro Zoom Mode"
+msgstr "Mode zoom macro"
+
+#: ../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: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: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"
+
+#: ../bin/draw.c:2450
+msgid "At Maximum Zoom Out"
+msgstr "Au zoom arrière maximum"
+
+#: ../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"
+
+#: ../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:3281
+msgid "Map"
+msgstr "Carte de navigation"
+
+#: ../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 ""
+"Faites glisser à gauche pour recadrer, Ctrl + glisser vers la gauche pour "
+"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: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:3337
+msgid "Zoom Mode - drag area to zoom"
+msgstr "Mode Zoom - faites glisser la zone pour zoomer"
+
+#: ../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: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: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 "
+"taille"
+
+#: ../bin/draw.c:3486
+msgid "Pan/Zoom"
+msgstr "Pan./Zoom"
+
+#: ../bin/draw.c:3502
+msgid "Zoom to 1:1 - '1'"
+msgstr "Zoom sur 1:1 - '1'"
+
+#: ../bin/draw.c:3504
+msgid "Zoom to 1:2 - '2'"
+msgstr "Zoom sur 1:2 - '2'"
+
+#: ../bin/draw.c:3506
+msgid "Zoom to 1:3 - '3'"
+msgstr "Zoom sur 1:3 - '3'"
+
+#: ../bin/draw.c:3508
+msgid "Zoom to 1:4 - '4'"
+msgstr "Zoom sur 1:4 - '4'"
+
+#: ../bin/draw.c:3510
+msgid "Zoom to 1:5 - '5'"
+msgstr "Zoom sur 1:5 - '5'"
+
+#: ../bin/draw.c:3512
+msgid "Zoom to 1:6 - '6'"
+msgstr "Zoom sur 1:6 - '6'"
+
+#: ../bin/draw.c:3514
+msgid "Zoom to 1:7 - '7'"
+msgstr "Zoom sur 1:7 - '7'"
+
+#: ../bin/draw.c:3516
+msgid "Zoom to 1:8 - '8'"
+msgstr "Zoom sur 1:8 - '8'"
+
+#: ../bin/draw.c:3518
+msgid "Zoom to 1:9 - '9'"
+msgstr "Zoom sur 1:9 - '9'"
+
+#: ../bin/draw.c:3524
+msgid "Pan center here - 'c'"
+msgstr "Centre du panoramique ici - 'c'"
+
+#: ../bin/drawgeom.c:72 ../bin/drawgeom.c:89
+msgid "Create Lines"
+msgstr "Créer des lignes"
+
+#: ../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: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:487
+msgid "Drag to set radius"
+msgstr "Faites glisser pour définir le rayon"
+
+#: ../bin/drawgeom.c:501
+msgid "Drag set box size"
+msgstr "Faites glisser pour définir la taille du rectangle"
+
+#: ../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:625 ../bin/drawgeom.c:691
+#, c-format
+msgid "Length = %s, Angle = %0.2f"
+msgstr "Longueur = %s, Angle = %0.2f"
+
+#: ../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: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:761 ../bin/drawgeom.c:769
+#, c-format
+msgid "Radius = %s"
+msgstr "Rayon = %s"
+
+#: ../bin/drawgeom.c:780
+#, c-format
+msgid "Width = %s, Height = %s"
+msgstr "Largeur = %s, Hauteur = %s"
+
+#: ../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:1298
+msgid "Select points or use context menu"
+msgstr "Sélectionnez des points ou utilisez le menu contextuel"
+
+#: ../bin/drawgeom.c:1567
+#, c-format
+msgid "Length = %s, Last angle = %0.2f"
+msgstr "Longueur = %s, Dernier angle = %0.2f"
+
+#: ../bin/drawgeom.c:1736
+msgid "Point Deleted"
+msgstr "Point supprimé"
+
+#: ../bin/drawgeom.c:2194
+msgid "Not close to end of line"
+msgstr "Aucun point de fin à proximité"
+
+#: ../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:2303 ../bin/drawgeom.c:2550
+msgid "Drag to Move Corner Point"
+msgstr "Faites glisser pour déplacer le sommet"
+
+#: ../bin/drawgeom.c:2311
+msgid "Drag to Move Edge "
+msgstr "Faites glisser pour déplacer le bord "
+
+#: ../bin/drawgeom.c:2383
+#, c-format
+msgid "Length = %0.3f Angle = %0.3f"
+msgstr "Longueur = %0.3f angle = %0.3f"
+
+#: ../bin/drawgeom.c:2544
+msgid "Drag to Move Edge"
+msgstr "Faites glisser pour déplacer le bord"
+
+#: ../bin/dxfoutput.c:244
+msgid "Export to DXF"
+msgstr "Exporter en DXF"
+
+#: ../bin/fileio.c:223
+msgid ""
+"\n"
+"Do you want to continue?"
+msgstr ""
+"\n"
+"Voulez-vous continuer?"
+
+#: ../bin/fileio.c:595
+#, c-format
+msgid "putTitle: title too long: %s"
+msgstr "poser le titre : titre trop long : %s"
+
+#: ../bin/fileio.c:627
+msgid "Unnamed Trackplan"
+msgstr "Plan de voie sans nom"
+
+#: ../bin/fileio.c:628
+msgid " (R/O)"
+msgstr " (R/O)"
+
+#: ../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:835 ../bin/fileio.c:1022
+msgid "Track"
+msgstr "Voie"
+
+#: ../bin/fileio.c:836
+msgid "Not Found"
+msgstr "Pas trouvé"
+
+#: ../bin/fileio.c:1265
+msgid "AutoSave Tracks As"
+msgstr "Sauvegarde automatique des voies ferrées sous"
+
+#: ../bin/fileio.c:1280
+msgid "Save Tracks"
+msgstr "Sauver le réseau"
+
+#: ../bin/fileio.c:1297
+msgid "Save Tracks As"
+msgstr "Enregistrer les voies sous"
+
+#: ../bin/fileio.c:1309
+msgid "Open Tracks"
+msgstr "Ouvrir un réseau"
+
+#: ../bin/fileio.c:1323
+msgid "Example Tracks"
+msgstr "Exemples de voies"
+
+#: ../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:1580 ../bin/fileio.c:1601
+msgid "Import Tracks"
+msgstr "Importer des voies"
+
+#: ../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:1680
+msgid "Clipboard"
+msgstr "Presse-papiers"
+
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
+msgid "Position X"
+msgstr "Position X"
+
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
+msgid "Position Y"
+msgstr "Position Y"
+
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
+msgid "Title"
+msgstr "Titre"
+
+#: ../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:70
+msgid "Select..."
+msgstr "Sélectionner ..."
+
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
+msgid "Open..."
+msgstr "Ouvert ..."
+
+#: ../bin/filenoteui.c:134
+msgid "Add Document"
+msgstr "Ajouter un document"
+
+#: ../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:297
+#, c-format
+msgid "Document(%d) Layer=%d %-.80s [%s]"
+msgstr "Document(%d) Calque=%d %-.80s [%s]"
+
+#: ../bin/filenoteui.c:318
+#, fuzzy
+msgid "Update Document"
+msgstr "Mettre à jour le document"
+
+#: ../bin/filenoteui.c:330
+msgid "Describe the file"
+msgstr "Décrivez le fichier"
+
+#: ../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"
+
+#: ../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:630
+msgid "Load Background"
+msgstr "Charger l'arrière-plan"
+
+#: ../bin/layout.c:657
+msgid "Room Width"
+msgstr "Largeur de la pièce"
+
+#: ../bin/layout.c:658
+msgid " Height"
+msgstr " Hauteur"
+
+#: ../bin/layout.c:659
+msgid "Layout Title"
+msgstr "Titre du plan"
+
+#: ../bin/layout.c:660
+msgid "Subtitle"
+msgstr "Sous-titre"
+
+#: ../bin/layout.c:669
+msgid "Background File Path"
+msgstr "Chemin d'accès au fichier d'arrière-plan"
+
+#: ../bin/layout.c:670
+msgid "Browse ..."
+msgstr "Parcourir ..."
+
+#: ../bin/layout.c:673
+msgid "Background PosX,Y"
+msgstr "Arrière-plan, PosX,Y"
+
+#: ../bin/layout.c:677
+msgid "Background Size"
+msgstr "Taille de l'arrière-plan"
+
+#: ../bin/layout.c:679
+msgid "Background Screen %"
+msgstr "Niveau de noir de l'arrière-plan %"
+
+#: ../bin/layout.c:681
+msgid "Background Angle"
+msgstr "Angle de l'arrière-plan"
+
+#: ../bin/layout.c:682
+msgid "Named Settings File"
+msgstr "Fichier de paramètres définis"
+
+#: ../bin/layout.c:683
+msgid "Write"
+msgstr "Ecrire"
+
+#: ../bin/layout.c:684
+msgid "Read"
+msgstr "Lire"
+
+#: ../bin/layout.c:818
+msgid "Layout Options"
+msgstr "Options du plan"
+
+#: ../bin/layout.c:1052
+msgid "Read Settings"
+msgstr "Lire les paramètres"
+
+#: ../bin/layout.c:1053 ../bin/layout.c:1087
+msgid "Settings File (*.xset)|*.xset"
+msgstr "Fichier des paramètres (*.xset)|*.xset"
+
+#: ../bin/layout.c:1086
+msgid "Write Settings"
+msgstr "Ecrire les paramètres"
+
+#: ../bin/linknoteui.c:56
+msgid "URL"
+msgstr "URL"
+
+#: ../bin/linknoteui.c:230
+#, fuzzy
+msgid "Update Webink"
+msgstr "Mise à jour le lien"
+
+#: ../bin/linknoteui.c:248
+#, fuzzy
+msgid "Create Weblink"
+msgstr "Créer un lien"
+
+#: ../bin/macro.c:67
+msgid "Message"
+msgstr "Message"
+
+#: ../bin/macro.c:166
+msgid "Recording"
+msgstr "Enregistrement"
+
+#: ../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:271
+msgid "Record"
+msgstr "Enregistrer"
+
+#: ../bin/macro.c:686
+msgid "Step"
+msgstr "Pas à pas"
+
+#: ../bin/macro.c:689 ../bin/macro.c:1560
+msgid "Next"
+msgstr "Suivant"
+
+#: ../bin/macro.c:692 ../bin/misc.c:696 ../bin/track.c:1104
+msgid "Quit"
+msgstr "Quitter"
+
+#: ../bin/macro.c:695 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
+msgid "Speed"
+msgstr "Vitesse"
+
+#: ../bin/macro.c:855 ../bin/track.c:1344
+msgid "Regression"
+msgstr "Régression"
+
+#: ../bin/macro.c:1010 ../bin/macro.c:1410
+msgid "Demo"
+msgstr "Demo"
+
+#: ../bin/macro.c:1219
+#, c-format
+msgid "Elapsed time %lu\n"
+msgstr "Temps écoulé %lu\n"
+
+#: ../bin/macro.c:1329
+msgid "Playback"
+msgstr "Lecture"
+
+#: ../bin/macro.c:1414
+msgid "Slowest"
+msgstr "Le plus lent"
+
+#: ../bin/macro.c:1415
+msgid "Slow"
+msgstr "Lent"
+
+#: ../bin/macro.c:1417
+msgid "Fast"
+msgstr "Rapide"
+
+#: ../bin/macro.c:1418
+msgid "Faster"
+msgstr "Plus rapide"
+
+#: ../bin/macro.c:1419
+msgid "Fastest"
+msgstr "Le plus rapide"
+
+#: ../bin/macro.c:1542
+msgid "Can not find PARAMETER playback proc"
+msgstr "Vous ne trouvez pas la procédure de lecture PARAMETER"
+
+#: ../bin/menu.c:130
+msgid "File Buttons"
+msgstr "Boutons de fichier"
+
+#: ../bin/menu.c:130
+msgid "Print Buttons"
+msgstr "Imprimer les boutons"
+
+#: ../bin/menu.c:130
+msgid "Import/Export Buttons"
+msgstr "Boutons Import/Export"
+
+#: ../bin/menu.c:131
+msgid "Zoom Buttons"
+msgstr "Boutons de zoom"
+
+#: ../bin/menu.c:131
+msgid "Undo Buttons"
+msgstr "Annuler les boutons"
+
+#: ../bin/menu.c:131
+msgid "Easement Button"
+msgstr "Bouton Aide de courbes de transition"
+
+#: ../bin/menu.c:131
+msgid "SnapGrid Buttons"
+msgstr "Bouton Grille magnétique"
+
+#: ../bin/menu.c:132
+msgid "Create Track Buttons"
+msgstr "Créer des boutons de voie"
+
+#: ../bin/menu.c:132
+msgid "Layout Control Elements"
+msgstr "Éléments de contrôle du plan"
+
+#: ../bin/menu.c:133
+msgid "Modify Track Buttons"
+msgstr "Modifier les boutons de voie"
+
+#: ../bin/menu.c:133
+msgid "Properties/Select"
+msgstr "Propriétés/Sélectionner"
+
+#: ../bin/menu.c:134
+msgid "Track Group Buttons"
+msgstr "Boutons de groupe de voies"
+
+#: ../bin/menu.c:134
+msgid "Train Group Buttons"
+msgstr "Boutons d'exploitation des trains"
+
+#: ../bin/menu.c:135
+msgid "Create Misc Buttons"
+msgstr "Créer divers boutons"
+
+#: ../bin/menu.c:135
+msgid "Ruler Button"
+msgstr "Bouton Règle"
+
+#: ../bin/menu.c:136
+msgid "Layer Buttons"
+msgstr "Boutons de calques"
+
+#: ../bin/menu.c:136
+msgid "Hot Bar"
+msgstr "Barre rapide"
+
+#: ../bin/menu.c:225 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
+msgid "Change Elevations"
+msgstr "Modifier les élévations"
+
+#: ../bin/menu.c:250
+msgid "Angle:"
+msgstr "Angle:"
+
+#: ../bin/menu.c:255
+msgid "Indexes:"
+msgstr "Index:"
+
+#: ../bin/menu.c:262
+msgid "Move X:"
+msgstr "Déplacer X :"
+
+#: ../bin/menu.c:263
+msgid "Move Y:"
+msgstr "Déplacer Y :"
+
+#: ../bin/menu.c:282
+msgid "Select Index"
+msgstr "Sélectionnez l'index"
+
+#: ../bin/menu.c:330
+msgid "Enter Move ..."
+msgstr "Entrez le déplacement ..."
+
+#: ../bin/menu.c:336
+msgid "Select Track Index ..."
+msgstr "Sélectionnez l'index de la voie ferrée ..."
+
+#: ../bin/menu.c:343
+msgid "180 "
+msgstr "180 "
+
+#: ../bin/menu.c:344
+msgid "90 CW"
+msgstr "90 CW"
+
+#: ../bin/menu.c:345
+msgid "45 CW"
+msgstr "45 CW"
+
+#: ../bin/menu.c:346
+msgid "30 CW"
+msgstr "30 CW"
+
+#: ../bin/menu.c:347
+msgid "15 CW"
+msgstr "15 CW"
+
+#: ../bin/menu.c:348
+msgid "15 CCW"
+msgstr "15 CCW"
+
+#: ../bin/menu.c:349
+msgid "30 CCW"
+msgstr "30 CCW"
+
+#: ../bin/menu.c:350
+msgid "45 CCW"
+msgstr "45 CCW"
+
+#: ../bin/menu.c:351
+msgid "90 CCW"
+msgstr "90 CCW"
+
+#: ../bin/menu.c:352
+msgid "Enter Angle ..."
+msgstr "Entrez l'angle ..."
+
+#: ../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/menu.c:497
+msgid "Debug"
+msgstr "Debug"
+
+#: ../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/menu.c:885
+msgid "&Edit"
+msgstr "&Editer"
+
+#: ../bin/menu.c:886
+msgid "&View"
+msgstr "&Affichage"
+
+#: ../bin/menu.c:887
+msgid "&Add"
+msgstr "&Ajouter"
+
+#: ../bin/menu.c:888
+msgid "&Change"
+msgstr "&Modifier"
+
+#: ../bin/menu.c:889
+msgid "&Draw"
+msgstr "&Dessiner"
+
+#: ../bin/menu.c:890
+msgid "&Manage"
+msgstr "&Gérer"
+
+#: ../bin/menu.c:891
+msgid "&Options"
+msgstr "&Options"
+
+#: ../bin/menu.c:892
+msgid "&Macro"
+msgstr "&Macro"
+
+#: ../bin/menu.c:893
+msgid "&Window"
+msgstr "&Fenêtre"
+
+#: ../bin/menu.c:894
+msgid "&Help"
+msgstr "&Aide"
+
+#: ../bin/menu.c:930
+msgid "Context Commands"
+msgstr "Commandes contextuelles"
+
+#: ../bin/menu.c:931
+msgid "Shift Context Commands"
+msgstr "Maj Commandes contextuelles"
+
+#: ../bin/menu.c:945 ../bin/menu.c:947
+msgid "Zoom Extents"
+msgstr "Zoom sur l'étendue"
+
+#: ../bin/menu.c:950 ../bin/menu.c:1185
+msgid "Enable SnapGrid"
+msgstr "Activer la Grille d'accrochage"
+
+#: ../bin/menu.c:952
+msgid "SnapGrid Show"
+msgstr "Montrer la Grille d'accrochage"
+
+#: ../bin/menu.c:955
+msgid " Enable Magnetic Snap"
+msgstr " Activer la Grille magnétique"
+
+#: ../bin/menu.c:957 ../bin/menu.c:1207
+msgid "Show/Hide Map"
+msgstr "Afficher/Masquer la carte de navigation"
+
+#: ../bin/menu.c:981 ../bin/menu.c:983
+msgid "Select Track Index..."
+msgstr "Sélectionnez l'index de la voie ferrée ..."
+
+#: ../bin/menu.c:995 ../bin/menu.c:996
+msgid "Add..."
+msgstr "Ajouter ..."
+
+#: ../bin/menu.c:999 ../bin/menu.c:1000
+msgid "More..."
+msgstr "Plus ..."
+
+#: ../bin/menu.c:1005
+msgid "&New ..."
+msgstr "&Nouveau ..."
+
+#: ../bin/menu.c:1007
+msgid "&Open ..."
+msgstr "&Ouvrir ..."
+
+#: ../bin/menu.c:1011 ../bin/misc.c:660
+msgid "&Save"
+msgstr "&Sauver"
+
+#: ../bin/menu.c:1013
+msgid "Save &As ..."
+msgstr "Sauver &Sous ..."
+
+#: ../bin/menu.c:1015
+msgid "Revert"
+msgstr "Revenir"
+
+#: ../bin/menu.c:1028
+msgid "P&rint Setup ..."
+msgstr "R&églages d'impression ..."
+
+#: ../bin/menu.c:1036
+msgid "&Import"
+msgstr "&Importer"
+
+#: ../bin/menu.c:1038
+msgid "Import &Module"
+msgstr "Importation d'un &Module"
+
+#: ../bin/menu.c:1041
+msgid "Export to &Bitmap"
+msgstr "Exporter en &bitmap"
+
+#: ../bin/menu.c:1044
+msgid "E&xport"
+msgstr "E&xporter"
+
+#: ../bin/menu.c:1046
+msgid "Export D&XF"
+msgstr "Exporter en D&XF"
+
+#: ../bin/menu.c:1050
+msgid "Export S&VG"
+msgstr "Exporter S&VG"
+
+#: ../bin/menu.c:1056
+msgid "Parameter &Files ..."
+msgstr "&Fichiers de paramètres ..."
+
+#: ../bin/menu.c:1058
+msgid "No&tes ..."
+msgstr "R&emarques ..."
+
+#: ../bin/menu.c:1065
+msgid "E&xit"
+msgstr "Q&uitter"
+
+#: ../bin/menu.c:1102
+msgid "&Undo"
+msgstr "&Annuler"
+
+#: ../bin/menu.c:1104
+msgid "R&edo"
+msgstr "R&efaire"
+
+#: ../bin/menu.c:1107
+msgid "Cu&t"
+msgstr "C&ouper"
+
+#: ../bin/menu.c:1109
+msgid "&Copy"
+msgstr "&Copier"
+
+#: ../bin/menu.c:1111
+msgid "&Paste"
+msgstr "&Coller"
+
+#: ../bin/menu.c:1113
+msgid "C&lone"
+msgstr "C&opie"
+
+#: ../bin/menu.c:1115
+msgid "De&lete"
+msgstr "E&ffacer"
+
+#: ../bin/menu.c:1123
+msgid "Select &All"
+msgstr "T&out sélectionner"
+
+#: ../bin/menu.c:1127
+msgid "Select By Index"
+msgstr "Sélectionner par index"
+
+#: ../bin/menu.c:1129
+msgid "&Deselect All"
+msgstr "&Tout désélectionner"
+
+#: ../bin/menu.c:1131
+msgid "&Invert Selection"
+msgstr "&Inverser la sélection"
+
+#: ../bin/menu.c:1134
+msgid "Select Stranded Track"
+msgstr "Sélectionnez une voie isolée"
+
+#: ../bin/menu.c:1136
+msgid "Tu&nnel"
+msgstr "Tu&nnel"
+
+#: ../bin/menu.c:1138
+msgid "B&ridge"
+msgstr "P&ont"
+
+#: ../bin/menu.c:1140
+#, fuzzy
+msgid "&Roadbed"
+msgstr "Compagnie ferroviaire"
+
+#: ../bin/menu.c:1144
+msgid "Move to &Front"
+msgstr "Déplacer vers &l'avant"
+
+#: ../bin/menu.c:1146
+msgid "Move to &Back"
+msgstr "Déplacer vers &l'arrière"
+
+#: ../bin/menu.c:1161
+msgid "Zoom &In"
+msgstr "Zoom &avant"
+
+#: ../bin/menu.c:1164
+msgid "Zoom &Out"
+msgstr "Zoom &Arrière"
+
+#: ../bin/menu.c:1167
+msgid "Zoom &Extents"
+msgstr "Zoom sur l'étendu&e"
+
+#: ../bin/menu.c:1178
+msgid "&Redraw"
+msgstr "&Redessiner"
+
+#: ../bin/menu.c:1180
+msgid "Redraw All"
+msgstr "Tout redessiner"
+
+#: ../bin/menu.c:1187
+msgid "Show SnapGrid"
+msgstr "Afficher la Grille d'accrochage"
+
+#: ../bin/menu.c:1198
+msgid "Enable Magnetic Snap"
+msgstr "Activer la grille Magnétique"
+
+#: ../bin/menu.c:1213
+msgid "&Tool Bar"
+msgstr "&Barre d'outils"
+
+#: ../bin/menu.c:1247 ../bin/menu.c:1248
+msgid "Control Element"
+msgstr "Éléments de contrôle"
+
+#: ../bin/menu.c:1280
+msgid "Change Scale"
+msgstr "Modifier l'échelle"
+
+#: ../bin/menu.c:1296
+msgid "Raise/Lower Elevations"
+msgstr "Monter/Descendre les Elévations"
+
+#: ../bin/menu.c:1305
+msgid "Recompute Elevations"
+msgstr "Recalculer les élévations"
+
+#: ../bin/menu.c:1323
+msgid "L&ayout ..."
+msgstr "P&lan ..."
+
+#: ../bin/menu.c:1325
+msgid "&Display ..."
+msgstr "&Affichage ..."
+
+#: ../bin/menu.c:1327
+msgid "Co&mmand ..."
+msgstr "Co&mmande ..."
+
+#: ../bin/menu.c:1329
+msgid "&Easements ..."
+msgstr "&Courbes de transition ..."
+
+#: ../bin/menu.c:1332
+msgid "&Fonts ..."
+msgstr "&Polices ..."
+
+#: ../bin/menu.c:1334
+msgid "Stic&ky ..."
+msgstr "Co&llante ..."
+
+#: ../bin/menu.c:1339
+msgid "&Debug ..."
+msgstr "&Déboguer ..."
+
+#: ../bin/menu.c:1342
+msgid "&Preferences ..."
+msgstr "&Préférences ..."
+
+#: ../bin/menu.c:1344
+msgid "&Colors ..."
+msgstr "&Couleurs ..."
+
+#: ../bin/menu.c:1350
+msgid "&Record ..."
+msgstr "&Enregistrer ..."
+
+#: ../bin/menu.c:1352
+msgid "&Play Back ..."
+msgstr "&Lecture ..."
+
+#: ../bin/menu.c:1358
+msgid "Main window"
+msgstr "Fenêtre principale"
+
+#: ../bin/menu.c:1372
+msgid "Recent Messages"
+msgstr "Messages récents"
+
+#: ../bin/menu.c:1379
+msgid "Tip of the Day..."
+msgstr "Astuce du jour ..."
+
+#: ../bin/menu.c:1381
+msgid "&Demos"
+msgstr "&Demos"
+
+#: ../bin/menu.c:1382
+msgid "Examples..."
+msgstr "Exemples ..."
+
+#: ../bin/menu.c:1386 ../bin/smalldlg.c:210
+msgid "About"
+msgstr "À propos"
+
+#: ../bin/menu.c:1399
+msgid "Tur&nout Designer..."
+msgstr "Conception d'a&iguillage ..."
+
+#: ../bin/menu.c:1402
+msgid "Layout &Control Elements"
+msgstr "Éléments de &contrôle du plan"
+
+#: ../bin/menu.c:1404
+msgid "&Group"
+msgstr "Grouper"
+
+#: ../bin/menu.c:1406
+msgid "&Ungroup"
+msgstr "&Dissocier"
+
+#: ../bin/menu.c:1410
+msgid "Custom defined parts..."
+msgstr "Matériels prototypes ..."
+
+#: ../bin/menu.c:1413
+msgid "Update Turnouts and Structures"
+msgstr "Mise à jour des aiguillages et structures"
+
+#: ../bin/menu.c:1422
+msgid "Layers ..."
+msgstr "Calques ..."
+
+#: ../bin/menu.c:1426
+msgid "Parts &List ..."
+msgstr "N&omenclature ..."
+
+#: ../bin/menu.c:1429
+msgid "Price List..."
+msgstr "Liste de prix ..."
+
+#: ../bin/menu.c:1458 ../bin/menu.c:1459
+msgid "Import/Export"
+msgstr "Import/Export"
+
+#: ../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?"
+
+#: ../bin/misc.c:992
+msgid "Resume"
+msgstr "Résumé"
+
+#: ../bin/misc.c:992
+msgid "Resume with New Name"
+msgstr "Recommencer avec un nouveau nom"
+
+#: ../bin/misc.c:992
+msgid "Ignore Checkpoint"
+msgstr "Ignorer le point de contrôle"
+
+#: ../bin/misc.c:995
+#, c-format
+msgid "Reload Checkpoint Selected\n"
+msgstr "Recharger le point de contrôle sélectionné\n"
+
+#: ../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:999
+#, c-format
+msgid "Ignore Checkpoint Selected\n"
+msgstr "Ignorer le point de contrôle sélectionné\n"
+
+#: ../bin/misc.c:1121
+#, c-format
+msgid "Unnamed Trackplan - %s(%s)"
+msgstr "Plan de voie sans nom -%s(%s)"
+
+#: ../bin/misc.c:1175
+msgid "Initializing commands"
+msgstr "Initialisation des commandes"
+
+#: ../bin/misc.c:1184
+msgid "Initializing menus"
+msgstr "Initialisation des menus"
+
+#: ../bin/misc.c:1216
+msgid "Reading parameter files"
+msgstr "Lecture des fichiers de paramètres"
+
+#: ../bin/misc.c:1260
+msgid "Initialization complete"
+msgstr "Initialisation terminée"
+
+#: ../bin/param.c:76
+msgid "Unexpected End Of String"
+msgstr "Fin de chaîne inattendue"
+
+#: ../bin/param.c:83
+msgid "Expected digit"
+msgstr "Chiffre attendu"
+
+#: ../bin/param.c:91
+msgid "Overflow"
+msgstr "Débordement"
+
+#: ../bin/param.c:140
+msgid "Divide by 0"
+msgstr "Diviser par 0"
+
+#: ../bin/param.c:148
+msgid "Expected /"
+msgstr "Attendu /"
+
+#: ../bin/param.c:233
+msgid "Invalid Units Indicator"
+msgstr "Indicateur d'unités non valide"
+
+#: ../bin/param.c:261
+msgid "Expected End Of String"
+msgstr "Fin de chaîne attendue"
+
+#: ../bin/param.c:289 ../bin/param.c:1528
+#, c-format
+msgid "Invalid Number"
+msgstr "Nombre invalide"
+
+#: ../bin/param.c:349
+msgid "End Of String"
+msgstr "Fin de chaîne"
+
+#: ../bin/param.c:1486
+#, c-format
+msgid "Enter a value > %ld"
+msgstr "Entrez une valeur > %ld"
+
+#: ../bin/param.c:1489
+#, c-format
+msgid "Enter a value < %ld"
+msgstr "Entrez une valeur < %ld"
+
+#: ../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:1568
+#, c-format
+msgid "Enter a value > %s"
+msgstr "Entrez une valeur > %s"
+
+#: ../bin/param.c:1572
+#, c-format
+msgid "Enter a value < %s"
+msgstr "Entrez une valeur < %s"
+
+#: ../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:1674
+msgid "String cannot be blank"
+msgstr "La chaîne ne peut pas être vide"
+
+#: ../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:3043
+msgid "Help"
+msgstr "Aide"
+
+#: ../bin/paramfile.c:258
+msgid "Parameter"
+msgstr "Paramètre"
+
+#: ../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."
+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:126
+#, c-format
+msgid "Updating %s"
+msgstr "Mise à jour de %s"
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Any"
+msgstr "Ajuster Quelconque"
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Compatible"
+msgstr "Ajuster compatible"
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Exact"
+msgstr "Ajuster exactement"
+
+#: ../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:307
+#, c-format
+msgid "%d parameter files found. %d Fit Scale"
+msgstr "%d fichiers de paramètres trouvés. %d Ajuster l'échelle"
+
+#: ../bin/paramfilesearch_ui.c:317
+msgid "No matches found."
+msgstr "Aucun résultat."
+
+#: ../bin/paramfilesearch_ui.c:477
+msgid "Choose parameter files"
+msgstr "Sélectionnez les fichiers de paramètres"
+
+#: ../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:739
+msgid "Found: "
+msgstr "Trouvé : "
+
+#: ../bin/partcatalog.c:740
+msgid "Similar: "
+msgstr "Identique : "
+
+#: ../bin/partcatalog.c:741
+msgid "Ignored: "
+msgstr "Ignoré : "
+
+#: ../bin/partcatalog.c:742
+msgid "Not found: "
+msgstr "Introuvable : "
+
+#: ../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:51
+msgid "Did you know..."
+msgstr "Saviez-vous que ..."
+
+#: ../bin/smalldlg.c:53
+msgid "Previous Tip"
+msgstr "Précédent"
+
+#: ../bin/smalldlg.c:54
+msgid "Next Tip"
+msgstr "Conseil suivant"
+
+#: ../bin/smalldlg.c:72
+msgid "Tip of the Day"
+msgstr "Astuce du jour"
+
+#: ../bin/smalldlg.c:82
+msgid "No tips are available"
+msgstr "Pas de conseils disponibles"
+
+#: ../bin/smalldlg.c:187
+msgid ""
+"XTrackCAD is a CAD (computer-aided design) program for designing model "
+"railroad layouts."
+msgstr ""
+"XTrackCAD est un programme de CAO (conception assistée par ordinateur) pour "
+"concevoir des plans de chemin de fer miniature."
+
+#: ../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:288
+msgid "Ctl Pt 1: X,Y"
+msgstr "Ctl Pt 1: X,Y"
+
+#: ../bin/tbezier.c:289
+msgid "Ctl Pt 2: X,Y"
+msgstr "Ctl Pt 2: X,Y"
+
+#: ../bin/tbezier.c:295
+msgid "MinRadius"
+msgstr "RayonMin"
+
+#: ../bin/tbezier.c:300
+msgid "Line Color"
+msgstr "Couleur de ligne"
+
+#: ../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 ""
+"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:514
+msgid "Bezier Track"
+msgstr "Voie Bézier"
+
+#: ../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:321
+msgid "Radius "
+msgstr "Rayon "
+
+#: ../bin/tcornu.c:329
+msgid "Minimum Radius"
+msgstr "Rayon Minimum"
+
+#: ../bin/tcornu.c:330
+msgid "Max Rate Of Curve Change/Scale"
+msgstr "Taux maximum de variation de courbe/échelle"
+
+#: ../bin/tcornu.c:331
+msgid "Total Winding Angle"
+msgstr "Angle total"
+
+#: ../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 ""
+"Voie de Cornu(%d) : couche =%u Rayon Min =%s longueur =%s EP=[%0.3f,%0.3f] "
+"[%0.3f,%0.3f]"
+
+#: ../bin/tcornu.c:532
+msgid "Cornu Track"
+msgstr "Voie de Cornu"
+
+#: ../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:265
+#, c-format
+msgid "Helix: Turns %ld L %0.2f"
+msgstr "Helix: Tours %ld L %0.2f"
+
+#: ../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 ""
+"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]"
+
+#: ../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 ""
+"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:681
+msgid "Helix Track"
+msgstr "Voie hélicoïde"
+
+#: ../bin/tcurve.c:687
+msgid "Curved Track"
+msgstr "Voie courbe"
+
+#: ../bin/tcurve.c:1232
+msgid "Merge Curves"
+msgstr "Fusionner des courbes"
+
+#: ../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:1341 ../bin/tcurve.c:1374
+msgid "Curved "
+msgstr "Courbe "
+
+#: ../bin/tcurve.c:1347
+msgid "Tangent "
+msgstr "Tangente "
+
+#: ../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:1378
+#, c-format
+msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
+msgstr "Courbé : Rayon =%s Longueur =%s Angle =%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 ""
+"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:629
+msgid "Easement Track"
+msgstr "Voie courbe de transition"
+
+#: ../bin/tease.c:1407
+msgid "Merge Easements"
+msgstr "Fusionner des courbes de transition"
+
+#: ../bin/tease.c:1481
+msgid "Split Easement Curve"
+msgstr "Courbe de transition fractionnée"
+
+#: ../bin/textnoteui.c:175
+#, fuzzy, c-format
+msgid "Text Note(%d) Layer=%d %-.80s"
+msgstr "Remarque : Calque=%d %-.80s"
+
+#: ../bin/textnoteui.c:189
+#, fuzzy
+msgid "Update Text Note"
+msgstr "Créer une note texte"
+
+#: ../bin/textnoteui.c:200
+msgid "Replace this text with your note"
+msgstr "Remplacez ce texte par votre note"
+
+#: ../bin/textnoteui.c:206
+msgid "Create Text Note"
+msgstr "Créer une note texte"
+
+#: ../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: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:1461
+msgid "Move Objects Above"
+msgstr "Déplacer les objets ci-dessus"
+
+#: ../bin/track.c:1481
+msgid "Mode Objects Below"
+msgstr "Objets ci-dessous"
+
+#: ../bin/track.c:1785
+msgid "Audit"
+msgstr "Vérification"
+
+#: ../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: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: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:2407 ../bin/track.c:2444
+msgid "Inside turnout track"
+msgstr "Voie d'aiguillage intérieure"
+
+#: ../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: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:3374
+#, fuzzy, c-format
+msgid "[%0.2f,%0.2f] A%0.2f"
+msgstr "%s[%0.2f,%0.2f] A%0.2f"
+
+#: ../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: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:53
+msgid "Link"
+msgstr "Lien"
+
+#: ../bin/trknote.c:53 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:105
+msgid "Weblink"
+msgstr "Lien Web"
+
+#: ../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:540
+msgid "New Note"
+msgstr "Nouvelle note"
+
+#: ../bin/trknote.c:594
+msgid "Add notes"
+msgstr "Ajouter des notes"
+
+#: ../bin/tstraigh.c:92
+msgid "Track Angle"
+msgstr "Angle de voie"
+
+#: ../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]"
+
+#: ../bin/tstraigh.c:762
+msgid "Extending Straight Track"
+msgstr "Extension d'une voie droite"
+
+#: ../bin/tstraigh.c:845
+msgid "Straight "
+msgstr "Trait "
+
+#: ../bin/svgoutput.c:484
+msgid "Export to SVG"
+msgstr "Exporter au format SVG"
+
+#: ../wlib/mswlib/mswmisc.c:188
+msgid "All image files"
+msgstr "Tous les fichiers image"
+
+#: ../wlib/mswlib/mswmisc.c:190
+msgid "GIF files (*.gif)"
+msgstr "Fichiers GIF (*.gif)"
+
+#: ../wlib/mswlib/mswmisc.c:192
+msgid "JPEG files (*.jpeg,*.jpg)"
+msgstr "Fichier JPEG (*.jpeg,*.jpg)"
+
+#: ../wlib/mswlib/mswmisc.c:194
+msgid "PNG files (*.png)"
+msgstr "Fichier PNG (*.png)"
+
+#: ../wlib/mswlib/mswmisc.c:196
+msgid "TIFF files (*.tiff, *.tif)"
+msgstr "Fichiers TIFF (*.tiff, *.tif)"
+
+#: ../wlib/mswlib/mswmisc.c:198
+msgid "All files (*)"
+msgstr "Tous les fichiers (*)"
+
+#: ../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:2205
+msgid "Co&mmand Context Help"
+msgstr "Co&mmande d'aide contextuelle"
+
+#: ../../../../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 ""
+"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/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\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/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\tUn calque gelé contient la voie sélectionnée. La "
+"commande ne peut pas être exécutée."
+
+#: ../../../../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/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\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/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 ""
+"MSG_TEXT_TOO_LONG\tLe texte saisi est trop long pour l'objet texte. Il a été "
+"tronqué."
+
+#: ../../../../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\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/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\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/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\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/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/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 ""
+"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/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\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/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/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/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/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\tImpossible d'activer la grille; l'espacement "
+"doit être supérieur à 0"
+
+#: ../../../../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/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\tImpossible de regrouper la voie exceptionnelle. La "
+"voie a été désélectionnée."
+
+#: ../../../../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/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/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/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/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\tLa première|seconde voie est déjà connectée."
+"\tImpossible de raccorder; La voie %s est déjà connectée."
+
+#: ../../../../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"
+
+#: ../../../../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."
+
+#: ../../../../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/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 ""
+"MSG_JOIN_NOTBEZIERORCORNU\tImpossible de rejoindre la voie Bézier ou Cornu "
+"si la voie de transition n'est pas une Cornu"
+
+#: ../../../../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/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\tImpossible d'ouvrir le nouveau fichier de paramètres : "
+"FILENAME\tImpossible d'ouvrir le nouveau fichier de paramètres : %s"
+
+#: ../../../../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/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/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/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\tImpossible d'écrire dans le fichier de paramètres : "
+"FILENAME\tImpossible d'écrire dans le fichier de paramètres : %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\tNuméro de véhicule dupliqué."
+
+#: ../../../../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/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/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/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\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/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/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\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/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/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/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/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\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/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\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/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 ""
+"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/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"
+"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"
+"version supportée %d. Vous devez mettre à jour %s\n"
+"à au moins la version. %s."
+
+#: ../../../../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"
+"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"
+"version supportée %d. Vous devez améliorer votre\n"
+"version de %s"
+
+#: ../../../../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."
+
+#: ../../../../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."
+
+#: ../../../../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/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\tJonction de voies d’élévation différentes (N."
+"NNN)\tJonction de voies d’élévation différentes (%0.2f)"
+
+#: ../../../../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/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/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/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\tLa taille de page maximale autorisée est W x H\tLa "
+"taille de page maximale autorisée est %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 ""
+"MSG_NO_PRINTER_SELECTED\tVeuillez sélectionner une imprimante dans la boîte "
+"de dialogue Configuration de l'impression."
+
+#: ../../../../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\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/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\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/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\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/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/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/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/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\tAucun fichier de paramètre de carte pour CONTENTS\tLe "
+"nouveau fichier de paramètres %s ne peut pas être ouvert"
+
+#: ../../../../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/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é"
+
+#: ../../../../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 ""
+"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/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."
+
+#: ../../../../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."
+
+#: ../../../../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\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/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/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."
+
+#: ../../../../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\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/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"
+
+#: ../../../../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\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/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\tLecture : action inconnue NNN\tLecture : action inconnue "
+"%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\tLes points sont trop proches du cœur; s'éloigner."
+
+#: ../../../../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/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/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."
+
+#: ../../../../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\tLe nom du prototype existe déjà....\tLe nom du "
+"prototype existe déjà.\n"
+"\n"
+"Voulez-vous le mettre à jour?"
+
+#: ../../../../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/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/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 ""
+"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/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\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/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\tLes en-têtes de colonne requises sont absentes "
+"du fichier d'importation de véhicule."
+
+#: ../../../../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."
+
+#: ../../../../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/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/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\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/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\tLes voies sélectionnées s'écartent trop ou sont "
+"trop éloignées les unes des autres."
+
+#: ../../../../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/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/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/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\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/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\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/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\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/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."
+
+#: ../../../../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\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/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"
+"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"
+"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/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"
+
+#: ../../../../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\tIl y a trop peu de sections dans cette boucle."
+
+#: ../../../../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/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/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/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/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/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\tIntersection de la voie impossible; "
+"éloignez les points du cœur."
+
+#: ../../../../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\tLa voie est trop courte autour de N.NNN\tLa voie %s est "
+"trop courte de %0.3f"
+
+#: ../../../../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\tLe rayon de la voie (N.NNN) est inférieur à l'arc "
+"de transition minimum (N.NNN).\tLe rayon de la voie (%s) est inférieur à "
+"l'arc de transition minimum (%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\tLes voies d'un calque gelé ne peuvent pas être "
+"modifiées."
+
+#: ../../../../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/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\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/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."
+
+#: ../../../../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\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."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:128
+#, 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\tFichier critique endommagé !...\tFichier critique "
+"endommagé!\n"
+"\n"
+"%s est corrompu.\n"
+"\n"
+"Veuillez réinstaller le logiciel."
+
+#: ../../../../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 ""
+"MSG_ENTERED_STRING_TRUNCATED\tLe texte saisi est trop long. La longueur "
+"maximale est %d."
+
+#: ../../../../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."
+
+#: ../../../../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"
+"\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"
+"\n"
+"Etes-vous sur de vouloir continuer?"
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:134
+#, c-format
+msgid ""
+"Cannot open %s file:\n"
+"%s:%s"
+msgstr ""
+"Impossible d'ouvrir le fichier %s :\n"
+"%s : %s"
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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"
+
+#: ../../../../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/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/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/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/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/v_5_3_0_beta1/app/help/messages.h:156
+#, c-format
+msgid "Unrecognized Option: %s"
+msgstr "Option non reconnue : %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 ""
+"Fin de voie inattendue entre guillemets.\n"
+"%s\n"
+"\n"
+"Voulez-vous continuer à lire le fichier?"
+
+#: ../../../../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 ""
+"Une virgule attendue après ce champ est manquante.\n"
+"%s\n"
+"\n"
+"Voulez-vous continuer à charger le fichier?"
+
+#: ../../../../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 ""
+"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/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"
+"terminate on an endpoint. Such a track cannot be grouped.\n"
+"The track has been unselected."
+msgstr ""
+"Au moins un chemin pour l'aiguillage T%d ne se\n"
+"termine pas sur un bout. Une telle voie ne peut pas être groupée.\n"
+"La voie a été désélectionnée."
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:161
+msgid "inv-pathEndTrk on Path."
+msgstr "tracé invalide de fin de voie."
+
+#: ../../../../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/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 "tracé de fin de voie invalide."
+
+#: ../../../../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/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 ""
+"Les voies ne peuvent pas être connectées ensemble.\n"
+"\n"
+"Essayez de changer certaines voies pour un ajustement plus serré\n"
+"ou augmentez la valeur Angle de connexion sur\n"
+"la boîte de dialogue \"Options|Préférences\"."
+
+#: ../../../../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 ""
+"Les voies ne peuvent pas être connectées ensemble.\n"
+"\n"
+"Essayez de changer certaines voies pour un ajustement plus serré\n"
+"ou augmentez la distance de connexion et\n"
+"Valeurs d'angle dans la boîte de dialogue \"Options|Préférences\""
+
+#: ../../../../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 ""
+"Les voies ne peuvent pas être connectées ensemble.\n"
+"\n"
+"Essayez de changer certaines voies pour un ajustement plus serré\n"
+"ou augmentez la distance de connexion sur\n"
+"la boîte de dialogue \"Options|Préférences\""
+
+#: ../../../../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 ""
+"Première voie pour \"Alignement\n"
+"La commande \"Rotation\" doit être sélectionnée."
+
+#: ../../../../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 ""
+"La deuxième voie pour l'alignement\n"
+"La commande de rotation doit être désélectionnée."
+
+#: ../../../../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/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/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 ""
+"Avec les valeurs entrées, la voie divergente ne se connecte \n"
+"pas à la voie tangente. Svp vérifiez les valeurs saisies et \n"
+"réessayez. Vérifiez que l'angle est entré en numéro de \n"
+"cœur ou en degrés, comme spécifié par les boutons \n"
+"radio du mode Angle."
+
+#: ../../../../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/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 ""
+"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/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 ""
+"La longueur du véhicule doit \n"
+"être supérieure à sa largeur."
+
+#: ../../../../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 ""
+"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/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 ""
+"Vous avez apporté des modifications à cet objet\n"
+"\n"
+"Voulez-vous vraiment fermer cette boîte de dialogue?"
+
+#: ../../../../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 ""
+"La version du fichier %ld est plus ancienne que \n"
+"plus ancienne celle prise en charge %d. Vous \n"
+"devez mettre à jour votre fichier du projet \n"
+"utilisant une ancienne version de %s"
+
+#: ../../../../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"
+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/v_5_3_0_beta1/app/help/messages.h:181
+#, c-format
+msgid ""
+"%s cannot read the demo file:\n"
+"%s"
+msgstr ""
+"%s ne peut pas lire le fichier de démonstration:\n"
+"%s"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
+#, c-format
+msgid "doDemo: bad number (%d)"
+msgstr "doDemo : nombre invalide (%d)"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
+msgid "Playback TIMEEND without TIMESTART"
+msgstr "TIMEEND en lecture sans TIMESTART"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
+#, c-format
+msgid ""
+"Unknown playback command (%d)\n"
+"%s"
+msgstr ""
+"Commande de lecture inconnue (%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 ""
+"La version du fichier de lecture %ld est inférieure \n"
+"à la version minimale prise en charge %d.\n"
+"Vous devez mettre à jour votre fichier de plan \n"
+"en utilisant une ancienne version de %s"
+
+#: ../../../../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 "Impossible d'étendre une hélicoïde"
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:190
+msgid "Ignore further audit notices?"
+msgstr "Ignorer les autres indications de protocole?"
+
+#: ../../../../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 "Abandonner la vérification ?"
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
+msgid "Write Audit File?"
+msgstr "Écrire un fichier journal?"
+
+#: ../../../../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/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/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/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/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/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/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"
+
+#. 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 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: 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."
+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."
+
+#. 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 ""
+"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: 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 ""
+"Un certain nombre d'exemples de plans sont fournis. Ces fichiers sont "
+"accessibles par \"Aide|Exemples\"."
+
+#. 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 ""
+"Une fois installés, les unités de longueur sont définies en fonction de "
+"votre pays : pouces pour les États-Unis ou le Canada et centimètres "
+"ailleurs. Vous pouvez changer cela dans la boîte de dialogue \"Options | "
+"Préférences\" en choisissant entre métrique et anglais."
+
+#. 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 ""
+"Vous pouvez modifier la taille globale de votre plan dans la boîte de "
+"dialogue \"Options|Plan\"."
+
+#. 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 ""
+"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\"."
+
+#. 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 ""
+"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."
+
+#. 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 ""
+"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: 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 ""
+"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: 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"
+" 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 ""
+"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"
+"\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."
+
+#. 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 ""
+"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: 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 ""
+"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."
+
+#. 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 ""
+"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: 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 ""
+"\"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: 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."
+msgstr ""
+"La commande Parallèle est utile pour créer des dépôts et des voies "
+"d'évitement. Si une voie parallèle touche presque une voie existante, elle "
+"se connecte automatiquement."
+
+#. 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 ""
+"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: 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."
+
+#. 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: 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 ""
+"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: 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 ""
+"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"
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"Vous pouvez décharger les fichiers de paramètres que vous n'utilisez pas "
+"dans la boîte de dialogue \"Fichiers de paramètres\". Cela supprime les "
+"définitions d'aiguillage et de structure inutilisées de la barre dynamique "
+"et accélère le démarrage du programme."
+
+#. 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 ""
+"Comme alternative à la barre d'outils ou aux touches de menu, un autre menu "
+"de commande peut être utilisé en cliquant avec le bouton droit dans la "
+"fenêtre principale."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"Pour actualiser la fenêtre principale, appuyez sur Ctrl+L (maintenez "
+"enfoncée la touche «Ctrl», puis appuyez sur la touche «l»)."
+
+#. 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: 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 ""
+"Dans la boîte de dialogue \"Imprimer\", l'option \"Imprimer le contour du "
+"ballast\" peut être sélectionnée afin de pouvoir imprimer des modèles de "
+"ballast à l'échelle (1:1)."
+
+#. 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 ""
+"Appuyez sur la touche «ESC» pour annuler la commande en cours et activer "
+"automatiquement la commande par défaut (qui est soit Propriétés, soit "
+"Sélectionner)."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"Chaque calque peut être affiché ou masqué par la bascule 'Visible' dans la "
+"boîte de dialogue Gérer|Calques."
+
+#. 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 ""
+"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: 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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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 "
+"sélectionnées sont ajoutées au point de fin."
+
+#. 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"
+"\n"
+"Vous pouvez également utiliser un polygone pour représenter des allées."
+
+#. 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 ""
+"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: 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 ""
+"Les longueurs peuvent être saisies indépendamment des valeurs prédéfinies "
+"dans la boîte de dialogue \"Options|Paramètres\"."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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: 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 ""
+"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: 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 ""
+"Utilisez le bouton \"Déplacer vers\" dans le menu \"Gérer|Eléments définis "
+"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: 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 ""
+"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: 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."
+
+#. 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 ""
+"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: 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 ""
+"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: 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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"Vous pouvez ajouter de nouveaux segments de voie à une définition "
+"d'aiguillage ou pour créer une nouvelle définition dans laquelle des voies "
+"individuelles sont combinées."
+
+#. 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 ""
+"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."
+
+#. 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 ""
+"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: 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: 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 ""
+"La commande \"Modifier|Propriétés\" permet de modifier la taille des "
+"descriptions de ligne de cote."
+
+#. 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 ""
+"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: 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 ""
+"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: 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 ""
+"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."
+
+#. 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 ""
+"Vous pouvez exporter les voies sélectionnées dans un fichier DXF qui peut "
+"être lu par la plupart des programmes de CAO."
+
+#. 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 ""
+"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\"."
+
+#. 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 ""
+"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."
+
+#. 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 ""
+"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: 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 ""
+"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: 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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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: 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 ""
+"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"
+"Veuillez consulter l'aide et la démonstration pour les Elévations."
+
+#. 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 ""
+"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: 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\"."
+
+#. 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 ""
+"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."
+
+#. 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 ""
+"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: 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 ""
+"Si vous maintenez la touche Ctrl enfoncée lorsque vous utilisez la commande "
+"Rotation, la rotation diminue par incréments de 15°."
+
+#. 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."
+
+#. 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 ""
+"C'est le dernier conseil. Si vous avez des ajouts ou des commentaires, "
+"veuillez nous en faire part."
+
+#. 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 ""
+"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: 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 ""
+"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: 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"
+
+#. 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"
+"\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 "Il est presque possible de créer un cercle complet.\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 ""
+"Si vous déplacez la souris au-delà du point de départ de l'arc, le tracé "
+"devient très court.\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 "Ici, vous êtes averti que la voie sera trop courte.\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 ""
+"Lorsque vous éloignez le curseur de l'arc, vous créez une voie droite "
+"tangente à l'arc.\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 ""
+"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: 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 ""
+"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/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"
+"\n"
+
+#. 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 ""
+"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: 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 ""
+"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/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"
+"\n"
+
+#. 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/v_5_3_0_beta1/app/i18n/custmsg.h:224
+msgid "- rectangular (1x2, 2x4 etc)\n"
+msgstr "- rectangulaire (1x2, 2x4 etc.)\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
+msgid "- L girders\n"
+msgstr "- L Supports\n"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
+msgid "- T girders\n"
+msgstr "- T Supports\n"
+
+#: ../../../../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: 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: 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 ""
+"La bride des équerres supérieures se trouve sur le bord extérieur du "
+"support. Nous voulons changer le support afin que les deux brides soient à "
+"l'intérieur.\n"
+
+#: ../../../../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: 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: 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: 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/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: 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/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"
+
+#. 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"
+"\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 "Regardons l'aiguillage ...\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
+msgid "and change the turnout name and part no.\n"
+msgstr ""
+"et changez le nom d'aiguillage et son numéro.\n"
+"\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
+msgid "You can change the contents of text...\n"
+msgstr ""
+"Vous pouvez modifier le contenu du texte …\n"
+"\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 "et sa taille.\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
+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"
+"\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 ""
+"Comme pour la commande de voie <Curve>, il existe plusieurs façons de créer "
+"une voie circulaire.\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 ""
+"La première possibilité consiste à définir un rayon fixe et à faire glisser "
+"vers la position souhaitée.\n"
+
+#: ../../../../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: 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: 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 ""
+"La dernière méthode, comparable, consiste à dessiner du centre vers le "
+"cercle.\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 ""
+"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: 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 ""
+"Nous utilisons la commande<Connect>pour aligner les voies voisines afin que "
+"l'écart soit fermé.\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 ""
+"Remarque : les réglages ne sont effectués que sur les voies ne comportant "
+"que 1 ou 2 connexions. Dans cet exemple, l'aiguillage ne serait pas "
+"affecté.\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 "Et maintenant, l'écart est comblé.\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 "D'autres voies ont été légèrement décalées pour combler l'écart.\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 "Vous pouvez voir les petits décalages.\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 ""
+"Mais ils n'auront aucun effet lorsque le plan sera effectivement construit.\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 ""
+"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/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 ""
+"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/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"
+
+#. 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: 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/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"
+
+#. 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 ""
+"Avec la commande<Connect>, nous pouvons facilement déplacer les voies à "
+"connecter et connecter les 2 points de fin.\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 "Les deux points d'extrémité sont maintenant alignés et connectés.\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 ""
+"La connexion a été établie en ajoutant de petits espaces dans d'autres "
+"voies.\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 "Il existe plusieurs façons de créer une voie courbe.\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 ""
+"Vous pouvez faire votre choix en cliquant sur le petit bouton à gauche du "
+"bouton de commande<Curve>, si la Courbe actuelle n'est pas celle que vous "
+"souhaitez.\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 ""
+"La première possibilité consiste à sélectionner le premier point de fin et à "
+"le faire glisser en direction de la courbe.\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 ""
+"Vous verrez une voie droite avec une flèche rouge avec deux pointes à la "
+"fin.\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 ""
+"Cliquez et faites glisser une des flèches rouges pour compléter la courbe.\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 ""
+"La méthode suivante consiste à cliquer sur un point de fin et à faire "
+"glisser vers le centre de la courbe.\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 ""
+"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/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: 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 ""
+"La méthode suivante est similaire à la précédente, mais commencez par "
+"glisser du point milieu vers un point de fin.\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 "Encore une fois, tirez sur une flèche rouge pour terminer la courbe.\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 ""
+"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: 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: 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: 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/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/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"
+
+#. 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: 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/v_5_3_0_beta1/app/i18n/custmsg.h:326
+#, fuzzy
+msgid "We specify the line width in inches.\n"
+msgstr ""
+"Nous spécifions la largeur de la ligne en pixels lorsqu'il s'agit d'un zoom "
+"1:1.\n"
+"\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 ""
+"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: 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/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/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: 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, "
+"verrouillez le voyant LED en appuyant sur la barre d'espacement.\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 ""
+"Maintenant, nous allons ajouter des boutons pour contrôler les aiguillages.\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 "Ajoutons des signaux à notre voie d’évitement.\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/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: 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 ""
+"Nous faisons pivoter les signaux par un Maj-clic droit et sélectionnons 90° "
+"CW dans le menu contextuel. Nous ne pouvons pas afficher le menu contextuel "
+"en mode démo, mais simulerons l'effet.\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 ""
+"Les sorties du parement seront protégées par des signaux à une seule tête.\n"
+"\n"
+"\n"
+"La sortie de la voie de garage est sécurisée par un simple signal.\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 "Maintenant quelques améliorations mineures.\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 "Remarquez que quand la ligne se croise à un angle, il y a un espace.\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/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 ""
+"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/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: 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"
+
+#: ../../../../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: 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: 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 ""
+"Nous aimerions imprimer le panneau de commande sur une page de 8\"x11\", "
+"mais il est trop large.\n"
+
+#: ../../../../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/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 ""
+"Commencez par réactiver la grille magnétique afin que les objets restent "
+"alignés lors de leurs déplacements.\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
+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: 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: 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: 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: 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/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: 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 ""
+"Appuyez sur le bouton<Delete> pour supprimer les voies sélectionnées sur le "
+"plan.\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 ""
+"Commencez par sélectionner les voies à supprimer, puis appuyez sur la "
+"touche<Delete>.\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 ""
+"Si vous supprimez une voie comportant un arc de transition, cet arc de "
+"transition sera également supprimé.\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 "Vous pouvez utiliser la commande<Undo> pour restaurer les voies.\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 ""
+"En faisant glisser avec la souris tout en maintenant le bouton gauche "
+"enfoncé, vous pouvez marquer toutes les voies d'une zone.\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 ""
+"Remarque : seules les voies de la zone sélectionnée sont supprimées. Mais "
+"comme la courbe de transition est connectée à une voie supprimée, elle sera "
+"également supprimée.\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 ""
+"La démo simule également la saisie de valeurs et la sélection d'options dans "
+"diverses boîtes de dialogue.\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 ""
+"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"
+
+#. 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"
+
+#: ../../../../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: 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: 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: 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 ""
+"Cet effet n'est utilisé qu'en mode démonstration. Pendant le fonctionnement "
+"normal, vous ne le verrez pas.\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 ""
+"Les cotes de voies servent à marquer les distances entre deux points.\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 ""
+"Ici, nous créons une ligne de cote pour montrer la distance entre deux voies "
+"parallèles.\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 ""
+"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: 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 ""
+"Nous pouvons utiliser la commande<Describe> pour modifier la position de la "
+"ligne de dimension et la taille des chiffres.\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 ""
+"Cet exemple montrera l'effet de l'utilisation de courbes de transition lors "
+"de la jonction de voies.\n"
+
+#: ../../../../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: 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: 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: 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: 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: 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"
+"\n"
+
+#. 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: 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 ""
+"Nous avons choisi des courbes de transition serrées. Le rayon minimum que "
+"nous pouvons utiliser est de 9,75 \".\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 ""
+"Remarquez que l’étiquette du bouton 'courbes de transitions' a été remplacée "
+"par 'Etroit'.\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 ""
+"Notez que la courbe de connexion ne rencontre pas tout à fait les voies "
+"droites. C'est le \"décalage\".\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 "Ici, le rayon de connexion est trop petit.\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 ""
+"La courbe de connexion est composée de trois voies, la courbe et deux "
+"segments de courbes de transition à chaque extrémité.\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
+msgid ""
+"We have designed part of the layout with a siding, 2 branches and a spiral "
+"loop. We want to set elevations.\n"
+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/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"
+"\n"
+
+#. 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: 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"
+"\n"
+
+#: ../../../../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: 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: 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: 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: 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: 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"
+
+#. 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: 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/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 ""
+"XTrackCAD a calculé l'élévation (2,33\") en ce point en fonction de "
+"l'élévation à la voie d'évitement et d'une combinaison des premières "
+"élévations.\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 ""
+"Nous créons ici une élévation calculée qui dépend automatiquement des autres "
+"élévations modifiables.\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 ""
+"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/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/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: 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"
+"\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 ""
+"Nous voulons maintenant connaître l’élévation de la voie la plus basse.\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
+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/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"
+
+#. 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: 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: 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"
+"\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
+msgid "and create a grade marker.\n"
+msgstr ""
+"et créez une balise de pente.\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 "Notez que le marqueur a une flèche pointant vers le haut.\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 ""
+"Comme étape finale, nous allons créer une étiquette pour une station que "
+"nous utiliserons dans la commande<Profile> d'élévation.\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 ""
+"Maintenant, placez maintenant le marqueur d'élévation sur 'Station' et "
+"entrez le nom.\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 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/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 ""
+"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/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 ""
+"Dans les options pour le plan de voie, nous voyons que le rayon minimum est "
+"fixé à 9\"et la pente maximale à 5 pour cent.\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 ""
+"Si nous réduisons le rayon de la courbe, la voie est affichée avec la "
+"couleur de l'exception.\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 ""
+"Si nous élargissons la pente de la voie droite, la voie est également "
+"affichée dans la couleur exceptionnelle.\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 ""
+"Vous pouvez modifier la couleur des Voies non conformes dans la boîte de "
+"dialogue Couleurs du menu Options.\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
+msgid ""
+"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"
+"\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
+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"
+"\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 "L'extension de voie peut être droite …\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 "... ou courbé.\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
+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"
+"\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: 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: 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: 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/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: 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 ""
+"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"
+
+#. 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 ""
+"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/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: 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 ""
+"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/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: 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 ""
+"Maintenant que nous avons tracé les grandes lignes d’un aiguillage, nous "
+"allons les regrouper avec une définition d'aiguillage.\n"
+
+#: ../../../../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: 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: 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 ""
+"La boîte de dialogue de commande<Group> affiche le titre (fabricant, "
+"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: 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 ""
+"Le commutateur \"Remplacer par un nouveau groupe?\" remplacera les objets "
+"sélectionnés par la nouvelle définition.\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 ""
+"Si nous ne changeons pas le titre, la nouvelle définition remplacera la "
+"définition existante.\n"
+
+#: ../../../../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: 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: 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: 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 ""
+"La commande<Ungroup> remplace tous les aiguillages ou structures "
+"sélectionnés par leurs pièces.\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 ""
+"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/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 ""
+"Nous dissocierons cet aiguillage et verrons comment les différentes parties "
+"peuvent être modifiées.\n"
+
+#: ../../../../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: 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/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: 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: 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 ""
+"Nous pouvons changer cet objet ou en ajouter de nouveaux, cette fois nous "
+"allons juste les supprimer.\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 "Et déplacez l'étiquette hors de la voie.\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 "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/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 ""
+"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/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 ""
+"Un aiguillage se compose d'un certain nombre de pièces de voies droites et "
+"courbes. Cet aiguillage comprend quatre pièces :\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. une courte pièce droite, à gauche des lames d'aiguillage\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. une longue pièce droite, à droite des lames d'aiguillage\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. une pièce pliée des lames d'aiguillage vers le cœur, et\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/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/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 ""
+"Les deuxième et troisième segments forment le corps de l'aiguillage et ne "
+"peuvent plus être dissociés.\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 ""
+"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"
+
+#. 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: 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/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: 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: 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: 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"
+
+#. 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: 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: 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 "
+"souhaitez.\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 ""
+"Nous pouvons également créer des aiguillages à partir de simples voies "
+"droites et courbes.\n"
+
+#: ../../../../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: 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 ""
+"Lorsque nous créons la courbe à partir du point de fin d'une ligne droite, "
+"nous devons maintenir la touche <Shift>enfoncée pour empêcher XTrackCAD "
+"d'essayer de joindre les deux voies.\n"
+
+#. 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/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: 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/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"
+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"
+
+#. 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: 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: 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"
+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: 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/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: 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: 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: 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: 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"
+
+#. 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"
+
+#: ../../../../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: 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: 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/v_5_3_0_beta1/app/i18n/custmsg.h:615
+msgid "Now Group the turnout.\n"
+msgstr ""
+"Maintenant, regroupez l'aiguillage\n"
+"\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 ""
+"Nous allons changer le titre et le numéro de pièce pour la nouvelle "
+"définition.\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 ""
+"Pour supprimer des définitions, utilisez le \"Eléments définis sur mesure\" "
+"dans le menu \"Gérer\".\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 ""
+"Sélectionnez les définitions que vous avez ajoutées et supprimez-les.\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 ""
+"Dans le coin du plan, nous allons maintenant créer une hélicoïde connectée à "
+"2 voies.\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
+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 ""
+"Nous allons créer une hélicoïde de voie avec une différence d'élévation de "
+"12\", une pente de 1,5 pour cent et limiter la distance verticale à au moins "
+"2\".\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 "Réglez d'abord la différence d'élévation à 12 \"\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 "Ensuite, réglez la séparation verticale sur 2\"\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 "Remarquez comment cela nécessite un nombre de 6 tours\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/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: 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 ""
+"La définition de ces valeurs modifie le rayon à 21,2\" et le nombre de tours "
+"à 6.\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 ""
+"Nous modifions maintenant l'angle entre les voies entrante et sortante de "
+"l'hélicoïde.\n"
+
+#: ../../../../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: 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"
+
+#: ../../../../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: 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 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 pour cent.\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 ""
+"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"
+
+#. 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 ""
+"Maintenant que les paramètres d'hélicoïde sont définis, nous pouvons placer "
+"l'hélicoïde sur le plan.\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 ""
+"Ensuite, reliez les 2 voies droites à l'hélicoïde juste comme nous "
+"connectons les voies à un cercle.\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 ""
+"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: 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 ""
+"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/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 ""
+"Remarque : nous pourrions définir les élévations n’importe où le long des "
+"voies de connexion. Pour les élévations, XTrackCAD traite une hélicoïde "
+"comme une seule longueur de voie.\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 ""
+"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/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"
+
+#. 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"
+
+#. 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 ""
+"En plus d'utiliser les définitions d'aiguillage, vous pouvez créer "
+"'aiguillage paramétré à la main'.\n"
+
+#: ../../../../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: 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: 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: 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: 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: 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: 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: 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: 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"
+
+#. 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/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 ""
+"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"
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:685
+msgid "The controls are:\n"
+msgstr "Les contrôles sont :\n"
+
+#: ../../../../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/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/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/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/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: 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 ""
+"Si vous utilisez la démo pour la première fois, vous devez définir les "
+"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/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 ""
+"Vous pouvez maintenant déplacer la fenêtre de démonstration en y faisant "
+"glisser la barre de titre. Il est préférable de le déplacer vers le haut de "
+"l'écran.\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 ""
+"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 "
+"est désactivé. Lorsque la démonstration est en pause, le bouton Étape est "
+"activé et vous pouvez cliquer dessus lorsque vous êtes prêt à afficher la "
+"partie suivante de la démonstration.\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 ""
+"Vous pouvez revenir à XTrackCAD à tout moment en cliquant sur Quitter.\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 "Vous pouvez régler la vitesse de la démo avec la commande vitesse.\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 ""
+"Les démos sont conçues pour tenir dans une fenêtre d'une certaine taille.\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 ""
+"Pour de meilleurs résultats, modifiez la taille de la fenêtre principale "
+"XTrackCAD pour que le rectangle soit complètement visible.\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 ""
+"Vous pouvez le faire en faisant glisser le coin inférieur droit de la "
+"fenêtre.\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 "C'est la fin de la démonstration d'introduction.\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 ""
+"Veuillez cliquer sur étape suivante pour la prochaine démonstration ou "
+"quitter pour revenir à XTrackCAD.\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 ""
+"Vous pouvez également connecter des voies avec des cercles de voie. Cela "
+"transforme les cercles en arcs.\n"
+
+#: ../../../../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: 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 ""
+"Ici, nous avons sélectionné des points sur deux cercles. La direction des "
+"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: 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: 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"
+
+#. 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/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 ""
+"Notez que les 2 paires de voies ont des extrémités qui sont proches et "
+"alignées mais non connectées.\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 ""
+"Dans le premier cas, une voie courbe et une voie droite sont connectées.\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 "Dans le second cas, deux voies droites sont connectées.\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 "Notez que les deux voies droites ont été fusionnées en une voie.\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
+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"
+"\n"
+
+#: ../../../../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: 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: 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 ""
+"Notez que la voie incurvée est étendue lorsque le point de connexion passe "
+"au-delà du point de fin.\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
+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"
+"\n"
+
+#: ../../../../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: 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/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 ""
+"D'abord <Select>les voies que vous voulez déplacer avec Ctrl afin qu'elles "
+"soient toutes les deux sélectionnées.\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 ""
+"Cliquez sur <Join> puis maintenez la touche Maj enfoncée + clic gauche sur "
+"les deux points d'extrémité.\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 "Les voies sélectionnées sont déplacées vers la position.\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
+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 ""
+"Deux voies droites peuvent être jointes en sélectionnant les deux "
+"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/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"
+"\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
+msgid "Now we select two points on the tracks\n"
+msgstr "Maintenant, nous sélectionnons deux points sur les voies\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 ""
+"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: 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: 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 ""
+"Remarquez ce qui se passe si vous glissez au-delà des points d'intersection "
+"des deux voies.\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 "Ce n'est probablement pas une solution sensée.\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 ""
+"Maintenant, nous allons le faire avec une Courbe de transition Cornu\n"
+"\n"
+
+#: ../../../../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: 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: 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"
+"\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
+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"
+"\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
+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"
+"\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 ""
+"C'est plus utile car vous pouvez également déplacer l'autre extrémité.\n"
+
+#. 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: 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/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: 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 ""
+"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"
+
+#: ../../../../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: 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: 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 ""
+"Lorsque vous vous éloignez du pont tournant, une voie droite est dessinée "
+"vers la position du curseur et une courbe est dessinée entre le curseur et "
+"la voie de connexion.\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
+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"
+"\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 "Terminé.\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 ""
+"Les commandes de dessin sont utilisées pour dessiner des lignes droites et "
+"courbes sur le plan.\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 ""
+"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/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 ""
+"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: 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: 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/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 ""
+"Ici, nous dessinons une courbe en faisant glisser d’un point d’extrémité à "
+"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: 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: 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 ""
+"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/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: 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: 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: 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 ""
+"Une polyligne est dessinée en faisant glisser le curseur pour placer chacun "
+"de ses points.\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 ""
+"Pour terminer la polyligne, appuyez sur la touche <Space> ou choisissez un "
+"autre type de dessin.\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
+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: 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: 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 ""
+"Vous pouvez utiliser les commandes \"Editer|Au-dessus\" et \"Editer|Au-"
+"dessous\" pour déplacer des lignes et des formes vers l'avant ou l'arrière "
+"du dessin.\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 ""
+"Les boîtes et cercles pleins fonctionnent comme les boîtes et cercles "
+"vides.\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
+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"
+"\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 ""
+"La flèche vide correspond au pointeur de la souris sans appuyer sur le "
+"bouton.\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
+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 ""
+"Lorsque le bouton gauche de la souris est enfoncé, le curseur de la souris "
+"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/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 ""
+"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: 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: 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 ""
+"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: 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"
+"\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
+msgid "Release Right Click\n"
+msgstr "Relâcher le clic droit\n"
+
+#. 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/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: 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"
+"\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
+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"
+"\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 ""
+"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: 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 ""
+"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/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 ""
+"Ceci est indiqué par une flèche à tête ouverte tournée vers la gauche, avec "
+"la lettre C à côté.\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 ""
+"Vous pouvez également utiliser la touche Contrôle avec le bouton droit de la "
+"souris.\n"
+
+#: ../../../../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 ""
+"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: 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 ""
+"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"
+
+#: ../../../../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"
+
+#. 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: 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"
+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"
+"\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 ""
+"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: 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 ""
+"Vous pouvez également faire glisser vers la droite dans la fenêtre de "
+"navigation pour déterminer l'échelle et la position du dessin dans la "
+"fenêtre principale.\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 ""
+"La commande<Note> permet de placer des notes à différents points du plan de "
+"tracé.\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 ""
+"Lorsque vous créez une note, l'éditeur de notes s'ouvre, ce qui vous permet "
+"de saisir un texte.\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 "Si vous cliquez sur une note en mode <Describe>, l'éditeur apparaît.\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 "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/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/v_5_3_0_beta1/app/i18n/custmsg.h:880
+msgid "Thanks for watching.\n"
+msgstr "Merci d'avoir regardé.\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 "Cet exemple montre comment créer des voies parallèles.\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 ""
+"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: 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"
+
+#. 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/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 ""
+"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: 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: 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 ""
+"Notez que la nouvelle voie incurvée est automatiquement connectée à la voie "
+"parallèle courte.\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
+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"
+"\n"
+
+#: ../../../../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"
+"\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
+msgid "Then drag on the point you want to move\n"
+msgstr "Faites ensuite glisser le point que vous souhaitez déplacer\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 ""
+"Et enfin, appuyez sur la barre espace pour terminer la modification\n"
+"\n"
+
+#. 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"
+
+#. 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: 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: 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 ""
+"Pour utiliser la commande<Profile>, vous devez d'abord définir des "
+"élévations sur votre plan.\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 ""
+"Dans cet exemple, nous utiliserons les élévations définies dans le dernier "
+"exemple.\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 "La fenêtre du profil d'élévation peut maintenant être agrandie.\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 ""
+"Pour afficher le profil d'élévation, vous devez sélectionner un itinéraire "
+"sur votre plan.\n"
+
+#: ../../../../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/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: 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 ""
+"Le deuxième point est à l'extrémité gauche du revêtement. Le chemin sera "
+"indiqué en violet sur le plan.\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 "Maintenant, sélectionnez le bout d'une des branches.\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 ""
+"Le profil d'élévation est dessiné en rouge. Cela signifie qu'il existe des "
+"aiguillages sur cette section du chemin d'accès qui ont plus de 2 "
+"connexions.\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 ""
+"La pente de cette partie du chemin est une valeur moyenne et peut être "
+"influencée par d'autres élévations telles que l'extrémité de la branche "
+"inférieure.\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 ""
+"Essayez maintenant de sélectionner le point de fin de l'autre branche.\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 ""
+"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: 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 ""
+"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: 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: 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 ""
+"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/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 ""
+"Remarque : nous ne pouvons pas afficher le menu en mode démo, mais nous "
+"montrerons l'effet d'un Maj+clic droit avec la sélection 'ignorer'. Nous "
+"ignorerons le point de fin de l'aiguillage qui ne se trouve pas sur le "
+"chemin.\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 ""
+"Notez qu'une partie de la ligne de profil d'élévation est redessinée en "
+"bleu.\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 ""
+"En outre, les calculs de marqueurs d'élévations et de niveaux situés à "
+"droite du plan ont été mis à jour.\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 ""
+"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/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 ""
+"Pour ce faire, cliquez sur le bouton droit de la souris pour afficher le "
+"menu contextuel \"Élévation\" et sélectionnez l'élément de voie puis "
+"\"Défini\".\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 ""
+"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: 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 ""
+"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/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"
+
+#: ../../../../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 ""
+"Encore une fois, nous utilisons Maj-Clic-Droit pour afficher les options du "
+"menu profil puis sélectionner Ignorer.\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 "Maintenant, supprimez la première section du chemin,\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 "et resélectionnez-le.\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 ""
+"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: 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/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 "
+"fonction des voies connectées.\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 ""
+"Tout d'abord marquer l'extrémité inférieure. Pour ce faire, cliquez avec le "
+"bouton droit de la souris sur le menu d’options du profil de hauteur "
+"\"Modifier>Profil\". Vous verrez que l'extrémité choisie est maintenant "
+"marqué d'un point doré. Le profil de hauteur a été ajouté une nouvelle "
+"voie.\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 ""
+"Maintenant, faites glisser le point dans la boîte de dialogue 'Profil' pour "
+"modifier l’élévation.\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 ""
+"Notez que la pente de chaque côté du point apparaîtra en bas de la boîte de "
+"dialogue Profil.\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 ""
+"Après validation le profil affiche les nouvelles élévations et angles.\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 "La commande<Rescale> modifie la taille des objets sélectionnés.\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 "Nous allons d’abord essayer de redimensionner le ratio.\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: 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: 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/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: 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: 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: 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: 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 "
+"pivoter les objets.\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 ""
+"Dans cet exemple, nous allons faire pivoter la bâtiment sélectionnée autour "
+"de son centre.\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 ""
+"La commande <Rotate> limitera la rotation à des incréments de 15 ° si vous "
+"maintenez les touches <Shift> et <Ctrl> enfoncées.\n"
+"\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 ""
+"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/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"
+"\n"
+
+#: ../../../../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 ""
+"L'autre option est 'Aligner' qui vous permet d'aligner les objets "
+"sélectionnés avec un objet non sélectionné. C'est utile pour aligner les "
+"bâtiments ferroviaires avec la voie.\n"
+
+#: ../../../../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: 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 ""
+"La commande<Ruler> dessine une règle sur le plan de voie. Cela peut être "
+"utilisé pour mesurer des distances.\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 ""
+"Si vous cliquez à nouveau <Ruler>sur la commande <Règle>, la règle sera "
+"supprimée.\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 "Mais vous pouvez le placer ailleurs.\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 "La commande<Select> est utilisée pour sélectionner les voies.\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 ""
+"Les voies sélectionnées peuvent être déplacées ou pivotées pendant la "
+"commande<Select>.\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 ""
+"Les voies sélectionnées peuvent également être supprimées, masquées, "
+"répertoriées et exportées.\n"
+
+#: ../../../../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 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"
+"\n"
+
+#. 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: 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 ""
+"La voie sélectionnée aura des X rouges dessinés là où elle est connectée à "
+"des voies non sélectionnées. Cela désigne l'endroit où la voie sera "
+"déconnectée si les voies sélectionnées sont déplacées, tournées ou "
+"supprimées.\n"
+
+#: ../../../../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: 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: 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: 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 ""
+"Pour démontrer Sélectionner Connecté, sélectionner d'abord deux voies à la "
+"fin d'une partie à sélectionner\n"
+
+#. 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 ""
+"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: 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"
+"\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 "La touche<esc> désélectionnera tous les objets.\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 "Glisser-gauche sert à sélectionner tous les objets d'une zone.\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 ""
+"Maj+glisser à gauche est utilisé pour déplacer les voies sélectionnées.\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 ""
+"Si vous déplacez des voies connectées vers des voies non sélectionnées, la "
+"connexion sera annulée. Ces points sont marqués d'une croix rouge sur le "
+"plan de voie.\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 ""
+"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: 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: 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"
+"\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"
+"\n"
+
+#. 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"
+"\n"
+
+#: ../../../../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: 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"
+"\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 ""
+"La commande <Split> est utilisée pour diviser et déconnecter les voies.\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 ""
+"Sélectionnez simplement l'endroit de la voie que vous souhaitez "
+"fractionner.\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 ""
+"Les aiguillages ne peuvent être séparés (que si vous appuyez sur la touche "
+"Maj).\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 ""
+"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: 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/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/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 ""
+"La manière dont les voies cachées sont dessinées (pleines, en pointillés ou "
+"invisibles) est contrôlée par le groupe de boutons radio de la boîte de "
+"dialogue Options d'affichage.\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: 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"
+
+#. 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: 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: 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"
+
+#. 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 ""
+"Un bord de table est attiré par d'autres objets, sauf si vous maintenez la "
+"touche Alt enfoncée.\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 ""
+"Les bords de table peuvent être modifiés en faisant glisser leurs "
+"extrémités.\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
+msgid ""
+"Unless you hold down the Alt key while dragging then the Table Edge will be "
+"attracted to other objects.\n"
+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: 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 ""
+"Ces exemples présentent certaines des différentes fenêtres de conception "
+"d'aiguillage. Chaque fenêtre est utilisée pour un type d'aiguillage "
+"différent.\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 ""
+"Chaque fenêtre de dialogue contient un certain nombre de paramètres à "
+"renseigner et une ou deux lignes de description.\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 ""
+"Vous pouvez imprimer le dessin pour vérifier les dimensions avant de les "
+"enregistrer.\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 "Il s'agit d'un aiguillage normal.\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 ""
+"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/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 ""
+"Certains aiguillages et sections de rails sont pré-montés sur un ballast. "
+"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: 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: 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: 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 ""
+"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 ""
+
+#: ../../../../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 ""
+"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 ""
+"Vous pouvez ensuite faire pivoter l'aiguillage en faisant glisser avec le "
+"bouton droit de la souris.\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 ""
+"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: 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 ""
+"Lorsque vous êtes satisfait de la position et de l'orientation de "
+"l'aiguillage, appuyez sur la barre d'espace ou sur la touche \"Entr\" du "
+"clavier pour terminer la commande.\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 ""
+"Si vous faites glisser l'aiguillage sur une voie existante, il sera connecté "
+"à la voie.\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 ""
+"Notez que la ligne d'état vous indique le nombre de points d'extrémité qui "
+"seraient connectés ainsi que la distance maximale entre eux. Ce sera utile "
+"lors de la construction de voies complexes, comme nous le verrons plus "
+"tard.\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 ""
+"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: 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 ""
+"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: 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 ""
+"Si vous appuyez sur la barre d'espace ou sur la touche Entrée alors que "
+"l'aiguillage est sur une voie, cette voie est déconnectée et l'aiguillage "
+"est automatiquement connecté.\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 ""
+"Il est parfois utile de modifier les aiguillages en coupant l'une des "
+"extrémités.\n"
+
+#: ../../../../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: 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: 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"
+
+#. 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"
+"\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 "Nous pouvons essayer de scinder la voie déviée.\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 "Notez que la voie déviée a été changée en voie incurvée ...\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 "et une voie droite.\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 ""
+"Cet exemple montre comment aménager un grill à l'aide des commandes "
+"<Turnout> et<Parallel>.\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 "Plaçons d’abord l'aiguillage sur la voie principale.\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: 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 ""
+"Créez maintenant une voie parallèle à la ligne principale. Assurez-vous que "
+"la séparation est raisonnable pour votre échelle.\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/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: 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 ""
+"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: 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 ""
+"La barre d'état affiche le nombre de points de terminaison connectés et le "
+"décalage maximum.\n"
+"\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 ajuste la position de l'aiguillage pour obtenir un meilleur "
+"ajustement afin de minimiser tout décalage de connexion\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/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: 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: 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: 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/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: 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/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"
+"\n"
+
+#. 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: 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 ""
+"Lors de la création de ponts tournants, le rayon doit être saisi dans une "
+"boîte de dialogue sur la barre d'état. Le rayon doit être modifié avant les "
+"étapes suivantes.\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 "Ensuite, le pont tournant est déplacé vers son emplacement final.\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 "Introduction"
+
+#. 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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
new file mode 100644
index 0000000..51ac0d4
--- /dev/null
+++ b/app/i18n/ru.po
@@ -0,0 +1,15115 @@
+# Russian translation for xtrkcad package
+# 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: 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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ru_RU\n"
+"X-Generator: Poedit 2.2.1\n"
+"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: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:631
+msgid "Select End-Point - Ctrl unlocks end-point"
+msgstr "Выбрать конечную точку - Ctrl разблокирует её"
+
+#: ../bin/cbezier.c:633
+msgid "Select End-Point"
+msgstr "Выбрать конечную точку"
+
+#: ../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
+msgid "Bezier is Straight Line"
+msgstr "Безье к прямой линии"
+
+#: ../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:726
+#, c-format
+msgid "Bezier %s : Min Radius=%s Length=%s"
+msgstr "Безье %s : Мин. радиус=%s Длина=%s"
+
+#: ../bin/cbezier.c:752
+msgid "No unconnected End Point to lock to"
+msgstr ""
+
+#: ../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
+msgid "Bezier curve is straight line"
+msgstr "Кривая Безье - это прямая линия"
+
+#: ../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
+msgid "Create Bezier"
+msgstr "Создать Безье"
+
+#: ../bin/cbezier.c:900
+#, c-format
+msgid "%s picked - now select a Point"
+msgstr "%s собрано - теперь выберите Точку"
+
+#: ../bin/cbezier.c:939 ../bin/ccornu.c:2085
+msgid "No changes made"
+msgstr ""
+
+#: ../bin/cbezier.c:943
+msgid "Modify Bezier"
+msgstr "Изменить Безье"
+
+#: ../bin/cbezier.c:957
+#, fuzzy
+msgid "Modify Bezier Complete"
+msgstr "Изменение Безье отменено"
+
+#: ../bin/cbezier.c:961
+msgid "Modify Bezier Cancelled"
+msgstr "Изменение Безье отменено"
+
+#: ../bin/cbezier.c:1089 ../bin/cbezier.c:1189
+#, c-format
+msgid "Place 1st endpoint of Bezier - snap to %s"
+msgstr ""
+
+#: ../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
+#, c-format
+msgid "Select other end of Bezier - snap to %s end"
+msgstr ""
+
+#: ../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 "Название"
+
+#: ../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
+msgid "Segments"
+msgstr "Сегменты"
+
+#: ../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: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: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: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:215
+msgid "Change block"
+msgstr "Изменить блок"
+
+#: ../bin/cblock.c:269 ../bin/cswitchmotor.c:352
+#, fuzzy, c-format
+msgid "(%d): Layer=%u %s"
+msgstr "(%d): Слой=%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
+msgid "Create block"
+msgstr "Создать блок"
+
+#: ../bin/cblock.c:674
+msgid "Non track object skipped!"
+msgstr ""
+
+#: ../bin/cblock.c:678
+msgid "Selected track is already in a block, skipped!"
+msgstr ""
+
+#: ../bin/cblock.c:692
+msgid "Create Block"
+msgstr "Создать блок"
+
+#: ../bin/cblock.c:722 ../bin/cblock.c:754
+msgid "Select a track"
+msgstr "Выберите трек"
+
+#: ../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 "Действительно удалить блок %s?"
+
+#: ../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: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:769
+msgid "Delete Block"
+msgstr "Удалить блок"
+
+#: ../bin/cblock.c:814
+#, c-format
+msgid "Deleting block %s"
+msgstr "Удаление блока %s"
+
+#: ../bin/cblock.c:830
+msgid "Modify Block"
+msgstr "Изменить блок"
+
+#: ../bin/cblock.c:863
+msgid "Edit block"
+msgstr "Редактировать блок"
+
+#: ../bin/cblock.c:869
+#, c-format
+msgid "Edit block %d"
+msgstr "Редактировать блок %d"
+
+#: ../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:247
+msgid " FLEX "
+msgstr ""
+
+#: ../bin/ccornu.c:964 ../bin/cjoin.c:1063 ../bin/cmisc.c:55
+msgid "First"
+msgstr "Начало"
+
+#: ../bin/ccornu.c:971 ../bin/cjoin.c:1071
+msgid "Second"
+msgstr "Конец"
+
+#: ../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
+msgid "End Angle"
+msgstr "Конечный угол"
+
+#: ../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:1142
+#, fuzzy
+msgid "Select Point, or Add Point"
+msgstr "Выбрать конечную точку"
+
+#: ../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 "Тащите к другому концу хорды"
+
+#: ../bin/ccornu.c:1338
+#, fuzzy
+msgid "Drag along end of track"
+msgstr "Тащите по касательной к первому концу"
+
+#: ../bin/ccornu.c:1340
+#, fuzzy
+msgid "Drag to move"
+msgstr "Тащите, чтобы повернуть"
+
+#: ../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 "Тащите, чтобы установить радиус"
+
+#: ../bin/ccornu.c:1351
+#, fuzzy
+msgid "Drag to change end angle"
+msgstr "Тяни, чтобы изменить высоту"
+
+#: ../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
+msgid "Too close to other end of selected Track"
+msgstr ""
+
+#: ../bin/ccornu.c:1460
+msgid "Can't move end inside a turnout"
+msgstr ""
+
+#: ../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
+msgid "No Valid end point on that track"
+msgstr ""
+
+#: ../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
+#, c-format
+msgid "Cornu point %d too close to other end of connect track - reposition it"
+msgstr ""
+
+#: ../bin/ccornu.c:1844
+msgid "Create Cornu"
+msgstr ""
+
+#: ../bin/ccornu.c:2037
+msgid "Now Select or Add (+Shift) a Point"
+msgstr ""
+
+#: ../bin/ccornu.c:2100
+#, c-format
+msgid "Cornu end %d too close to other end of connect track - reposition it"
+msgstr ""
+
+#: ../bin/ccornu.c:2105 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:177
+msgid "Modify Cornu"
+msgstr ""
+
+#: ../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
+#, fuzzy
+msgid "Left click - Start Cornu track"
+msgstr "Левый клик - соединить с треком"
+
+#: ../bin/ccornu.c:2398
+#, fuzzy
+msgid "Left click - Place Flextrack"
+msgstr "Левый клик - соединить с треком"
+
+#: ../bin/ccornu.c:2401
+msgid "Left click - join with Cornu track"
+msgstr ""
+
+#: ../bin/ccornu.c:2404
+msgid "Left click - join with Cornu track, Shift Left click - move to join"
+msgstr ""
+
+#: ../bin/ccornu.c:2439
+msgid "No valid open endpoint on that track"
+msgstr ""
+
+#: ../bin/ccornu.c:2469 ../bin/ccornu.c:2482
+#, fuzzy
+msgid "Drag arm in the direction of track"
+msgstr "Тащите из конечной точки по направлению к кривой"
+
+#: ../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
+msgid "Locked - Move 1st end point of Cornu track along track 1"
+msgstr ""
+
+#: ../bin/ccornu.c:2535
+msgid "Locked - Move 2nd end point of Cornu track along track 2"
+msgstr ""
+
+#: ../bin/ccornu.c:2623
+msgid "Track can't be split - so locked to endpoint"
+msgstr ""
+
+#: ../bin/ccornu.c:2628
+msgid "Point not on track 1"
+msgstr ""
+
+#: ../bin/ccornu.c:2670
+#, fuzzy
+msgid "Pick other end of Cornu"
+msgstr "Тащите к другому концу хорды"
+
+#: ../bin/ccornu.c:2673
+msgid ""
+"Select flextrack ends or anchors and drag, Enter to approve, Esc to Cancel"
+msgstr ""
+
+#: ../bin/ccornu.c:2680
+msgid "Put other end of Cornu on a track with an unconnected end point"
+msgstr ""
+
+#: ../bin/ccornu.c:2941 ../bin/ccornu.c:3166
+#, fuzzy
+msgid "Not on a Track"
+msgstr "Не на треке"
+
+#: ../bin/ccornu.c:2949
+#, fuzzy
+msgid "Select a Track To Convert"
+msgstr "Выберите трек"
+
+#: ../bin/ccornu.c:2952
+msgid "Convert all Selected Tracks to Cornu Tracks?"
+msgstr ""
+
+#: ../bin/ccornu.c:2958
+msgid "Convert Cornu"
+msgstr ""
+
+#: ../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 "Содержание"
+
+#: ../bin/ccornu.c:3270
+msgid "Convert To Cornu"
+msgstr ""
+
+#: ../bin/ccornu.c:3273
+#, fuzzy
+msgid "Convert From Cornu"
+msgstr "По хорде"
+
+#: ../bin/ccurve.c:165
+#, fuzzy
+msgid "Drag from endpoint in direction of curve - lock to track open endpoint"
+msgstr "Тащите из конечной точки по направлению к кривой"
+
+#: ../bin/ccurve.c:167
+#, fuzzy
+msgid "Drag from endpoint in direction of curve"
+msgstr "Тащите из конечной точки по направлению к кривой"
+
+#: ../bin/ccurve.c:172
+msgid "Drag from endpoint to center - lock to track open endpoint"
+msgstr ""
+
+#: ../bin/ccurve.c:174
+#, fuzzy
+msgid "Drag from endpoint to center"
+msgstr "Тащите из конечной точки к центру"
+
+#: ../bin/ccurve.c:178
+#, fuzzy
+msgid "Drag from center to endpoint"
+msgstr "Тащите из центра к конечной точке"
+
+#: ../bin/ccurve.c:181
+msgid "Drag from one to other end of chord"
+msgstr ""
+
+#: ../bin/ccurve.c:243
+#, fuzzy
+msgid "End locked: Drag out curve start"
+msgstr "Тащите по касательной к первому концу"
+
+#: ../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:245
+msgid "Drag along curve start"
+msgstr "Тащите по касательной к первому концу"
+
+#: ../bin/ccurve.c:253
+msgid "End locked: Drag out curve center"
+msgstr ""
+
+#: ../bin/ccurve.c:255
+#, fuzzy
+msgid "Drag out curve center"
+msgstr "Тащите по касательной к первому концу"
+
+#: ../bin/ccurve.c:262
+#, fuzzy
+msgid "Drag out from center to endpoint"
+msgstr "Тащите из центра к конечной точке"
+
+#: ../bin/ccurve.c:271
+#, fuzzy
+msgid "End locked: Drag to other end of chord"
+msgstr "Тащите к другому концу хорды"
+
+#: ../bin/ccurve.c:274
+msgid "Drag to other end of chord"
+msgstr "Тащите к другому концу хорды"
+
+#: ../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 "Тащите до начала скругления - Угол=%0.3f"
+
+#: ../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:341
+#, c-format
+msgid "Drag out center - Radius=%s Angle=%0.3f"
+msgstr "Тащите к центру - Радиус=%s Угол=%0.3f"
+
+#: ../bin/ccurve.c:348
+#, fuzzy, c-format
+msgid "Drag to Edge: Radius=%s Angle=%0.3f"
+msgstr "Тащите к центру - Радиус=%s Угол=%0.3f"
+
+#: ../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:357
+#, fuzzy, c-format
+msgid "Drag out chord length=%s angle=%0.3f"
+msgstr "Длина прямого трека=%s Угол=%0.3f"
+
+#: ../bin/ccurve.c:433 ../bin/ccurve.c:615 ../bin/cjoin.c:714
+#: ../bin/cjoin.c:1017
+#, fuzzy
+msgid "Desired Radius"
+msgstr "Радиус окружности"
+
+#: ../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:542 ../bin/cmodify.c:644 ../bin/drawgeom.c:718
+msgid "Back"
+msgstr "Назад"
+
+#: ../bin/ccurve.c:563
+#, c-format
+msgid "Curved Track: Radius=%s Angle=%0.3f Length=%s"
+msgstr "Кривой трек: Радиус=%s Угол=%0.3f Длина=%s"
+
+#: ../bin/ccurve.c:642 ../bin/cstraigh.c:173
+msgid "Create Straight Track"
+msgstr "Добавить прямой трек"
+
+#: ../bin/ccurve.c:656
+msgid "Create Curved Track"
+msgstr "Добавить изогнутый трек"
+
+#: ../bin/ccurve.c:726
+msgid "Elevation Difference"
+msgstr "Разница высот"
+
+#: ../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:728 ../bin/tcurve.c:402
+msgid "Turns"
+msgstr "Повороты"
+
+#: ../bin/ccurve.c:729
+msgid "Angular Separation"
+msgstr "Деление угла"
+
+#: ../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:731
+msgid "Vertical Separation"
+msgstr "Деление вертикали"
+
+#: ../bin/ccurve.c:733
+msgid "Total Length"
+msgstr "Общая длина"
+
+#: ../bin/ccurve.c:813
+#, c-format
+msgid "Total Length %s"
+msgstr "Общая длина %s"
+
+#: ../bin/ccurve.c:852 ../bin/ccurve.c:1079 ../bin/tcurve.c:1008
+msgid "Helix"
+msgstr "Спираль"
+
+#: ../bin/ccurve.c:868
+msgid "Circle Radius"
+msgstr "Радиус окружности"
+
+#: ../bin/ccurve.c:873
+msgid "Click on Circle Edge"
+msgstr "Нажмите на окружность"
+
+#: ../bin/ccurve.c:877
+msgid "Click on Circle Center"
+msgstr "Нажмите на центр круга"
+
+#: ../bin/ccurve.c:907
+msgid "Drag to Center"
+msgstr "Тащите в центр"
+
+#: ../bin/ccurve.c:911
+msgid "Drag to Edge"
+msgstr "Тащите к стороне"
+
+#: ../bin/ccurve.c:932 ../bin/ccurve.c:936
+#, c-format
+msgid "Radius=%s"
+msgstr "Радиус=%s"
+
+#: ../bin/ccurve.c:957
+msgid "Create Helix Track"
+msgstr "Добавить спиральный трек"
+
+#: ../bin/ccurve.c:972
+msgid "Create Circle Track"
+msgstr "Добавить круглый трек"
+
+#: ../bin/ccurve.c:1031
+msgid "Curve Track"
+msgstr "Кривой трек"
+
+#: ../bin/ccurve.c:1031
+msgid "Curve Tracks"
+msgstr "Кривые треки"
+
+#: ../bin/ccurve.c:1032
+msgid "Curve from End-Pt"
+msgstr "Кривая из конечной точки"
+
+#: ../bin/ccurve.c:1035
+msgid "Curve from Tangent"
+msgstr "Кривая по касательной"
+
+#: ../bin/ccurve.c:1038
+msgid "Curve from Center"
+msgstr "Кривая из центра"
+
+#: ../bin/ccurve.c:1041
+msgid "Curve from Chord"
+msgstr "По хорде"
+
+#: ../bin/ccurve.c:1044 ../bin/cdraw.c:3199
+msgid "Bezier Curve"
+msgstr "Кривая Безье"
+
+#: ../bin/ccurve.c:1047
+#, fuzzy
+msgid "Cornu Curve"
+msgstr "Отриц."
+
+#: ../bin/ccurve.c:1052 ../bin/tcurve.c:684
+msgid "Circle Track"
+msgstr "Окружность"
+
+#: ../bin/ccurve.c:1052
+msgid "Circle Tracks"
+msgstr "Окружности"
+
+#: ../bin/ccurve.c:1054
+msgid "Fixed Radius Circle"
+msgstr "Окружность по радиусу"
+
+#: ../bin/ccurve.c:1056
+msgid "Circle from Tangent"
+msgstr "Окружность по касательной"
+
+#: ../bin/ccurve.c:1059
+msgid "Circle from Center"
+msgstr "Окружность к центру"
+
+#: ../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:553
+msgid "First Point: X,Y"
+msgstr ""
+
+#: ../bin/cdraw.c:554 ../bin/tcurve.c:400
+msgid "Center: X,Y"
+msgstr "Центр: X,Y"
+
+#: ../bin/cdraw.c:555 ../bin/tcurve.c:405
+msgid "Angular Length"
+msgstr "Длина дуги"
+
+#: ../bin/cdraw.c:556
+#, fuzzy
+msgid "Line Angle"
+msgstr "Угол слева"
+
+#: ../bin/cdraw.c:557 ../bin/tcurve.c:406
+msgid "CCW Angle"
+msgstr "Угол ПЧС"
+
+#: ../bin/cdraw.c:558 ../bin/tcurve.c:407
+msgid "CW Angle"
+msgstr "Угол ЧС"
+
+#: ../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: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:563 ../bin/compound.c:743 ../bin/tstraigh.c:94
+msgid "Pivot"
+msgstr "Центр"
+
+#: ../bin/cdraw.c:564
+msgid "Point Count"
+msgstr "Число точек"
+
+#: ../bin/cdraw.c:565 ../bin/cdraw.c:2823 ../bin/ctodesgn.c:209
+#: ../bin/tbezier.c:299
+msgid "Line Width"
+msgstr "Ширина линии"
+
+#: ../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: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:568
+#, fuzzy
+msgid "Filled"
+msgstr "Закрашенный прямоугольник"
+
+#: ../bin/cdraw.c:569
+#, fuzzy
+msgid "Open End"
+msgstr "На ребро"
+
+#: ../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:571 ../bin/cdraw.c:1177 ../bin/cdraw.c:2859
+msgid "Lumber"
+msgstr "Древесина"
+
+#: ../bin/cdraw.c:572
+msgid "Orientation"
+msgstr "Ориентация"
+
+#: ../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:574
+#, fuzzy
+msgid "Text Origin: X,Y"
+msgstr "Начало: X,Y"
+
+#: ../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:577 ../bin/cdraw.c:1324 ../bin/ctext.c:273
+msgid "Text"
+msgstr "Текст"
+
+#: ../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: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:1167 ../bin/cdraw.c:3190
+msgid "Dimension Line"
+msgstr "Размеры линии"
+
+#: ../bin/cdraw.c:1188 ../bin/cdraw.c:2860 ../bin/cdraw.c:3192
+msgid "Table Edge"
+msgstr "Край стола"
+
+#: ../bin/cdraw.c:1212 ../bin/cdraw.c:2865 ../bin/cdraw.c:2866
+#: ../bin/cdraw.c:2867
+msgid "Circle"
+msgstr "Окружность"
+
+#: ../bin/cdraw.c:1227
+msgid "Curved Line"
+msgstr "Кривая линия"
+
+#: ../bin/cdraw.c:1249 ../bin/cdraw.c:2870 ../bin/cdraw.c:2871
+#: ../bin/cdraw.c:2872
+msgid "Filled Circle"
+msgstr "Круг"
+
+#: ../bin/cdraw.c:1279
+#, fuzzy
+msgid "Filled Rectangle"
+msgstr "Прямоугольник"
+
+#: ../bin/cdraw.c:1279
+msgid "Rectangle"
+msgstr "Прямоугольник"
+
+#: ../bin/cdraw.c:1293 ../bin/cdraw.c:2876
+msgid "Polyline"
+msgstr "Полилиния"
+
+#: ../bin/cdraw.c:1300 ../bin/cdraw.c:2874 ../bin/cdraw.c:3213
+#, fuzzy
+msgid "Filled Polygon"
+msgstr "Закрашенный прямоугольник"
+
+#: ../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:1355 ../bin/cdraw.c:2930 ../bin/compound.c:1156
+#: ../bin/doption.c:96 ../bin/tbezier.c:519
+msgid "Solid"
+msgstr "Закрашенные"
+
+#: ../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: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 "Пунктиром"
+
+#: ../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 "Управление"
+
+#: ../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 "Крошечный"
+
+#: ../bin/cdraw.c:1367 ../bin/cdraw.c:2982
+msgid "Small"
+msgstr "Маленький"
+
+#: ../bin/cdraw.c:1368 ../bin/cdraw.c:2983
+msgid "Medium"
+msgstr "Средний"
+
+#: ../bin/cdraw.c:1369 ../bin/cdraw.c:2984
+msgid "Large"
+msgstr "Большой"
+
+#: ../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: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:1589
+#, fuzzy
+msgid "Rotate Angle"
+msgstr "Угол справа"
+
+#: ../bin/cdraw.c:1592
+#, fuzzy
+msgid "Rot Center X,Y"
+msgstr "Центр: X,Y"
+
+#: ../bin/cdraw.c:1692
+#, fuzzy
+msgid "Seg Lth"
+msgstr "Длина"
+
+#: ../bin/cdraw.c:1693
+msgid "Rel Ang"
+msgstr ""
+
+#: ../bin/cdraw.c:2830 ../bin/cdraw.c:2832 ../bin/cdraw.c:2958
+msgid "Lumber Type"
+msgstr "Тип древесины"
+
+#: ../bin/cdraw.c:2857
+msgid "Straight"
+msgstr "Прямая"
+
+#: ../bin/cdraw.c:2858
+msgid "Dimension"
+msgstr ""
+
+#: ../bin/cdraw.c:2861 ../bin/cdraw.c:2862 ../bin/cdraw.c:2863
+#: ../bin/cdraw.c:2864
+msgid "Curved"
+msgstr "Кривая"
+
+#: ../bin/cdraw.c:2868 ../bin/cdraw.c:3210
+msgid "Box"
+msgstr "Прямоугольник"
+
+#: ../bin/cdraw.c:2873 ../bin/cdraw.c:3211
+msgid "Filled Box"
+msgstr "Закрашенный прямоугольник"
+
+#: ../bin/cdraw.c:2875 ../bin/tbezier.c:516
+msgid "Bezier Line"
+msgstr "Кривая Безье"
+
+#: ../bin/cdraw.c:2925
+#, c-format
+msgid "%s Line Width"
+msgstr "%s, ширина"
+
+#: ../bin/cdraw.c:2928 ../bin/dcar.c:2313 ../bin/dcar.c:4694
+#: ../bin/dcar.c:4700
+msgid "Type"
+msgstr "Тип"
+
+#: ../bin/cdraw.c:2933
+#, fuzzy
+msgid "Dash-Dot"
+msgstr "Пунктиром"
+
+#: ../bin/cdraw.c:2934
+msgid "Dash-Dot-Dot"
+msgstr ""
+
+#: ../bin/cdraw.c:2947
+#, c-format
+msgid "%s Color"
+msgstr "%s Цвет"
+
+#: ../bin/cdraw.c:2979
+msgid "Dimension Line Size"
+msgstr "Размер линии"
+
+#: ../bin/cdraw.c:2991
+msgid "Drag to create Table Edge"
+msgstr "Тащите, чтобы создать край стола"
+
+#: ../bin/cdraw.c:3089
+#, fuzzy
+msgid "Seg Length"
+msgstr "Длина слева"
+
+#: ../bin/cdraw.c:3094
+#, fuzzy
+msgid "Rel Angle"
+msgstr "Угол слева"
+
+#: ../bin/cdraw.c:3189
+msgid "Line"
+msgstr "Прямая"
+
+#: ../bin/cdraw.c:3189
+msgid "Draw Line"
+msgstr "Прямая"
+
+#: ../bin/cdraw.c:3190
+msgid "Draw Dimension Line"
+msgstr "Выноска с размером"
+
+#. 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:3191
+msgid "Draw Benchwork"
+msgstr "Доска"
+
+#: ../bin/cdraw.c:3192
+msgid "Draw Table Edge"
+msgstr "Край стола"
+
+#: ../bin/cdraw.c:3195
+msgid "Curve End"
+msgstr "Конец кривой"
+
+#: ../bin/cdraw.c:3195
+msgid "Draw Curve from End"
+msgstr "От касательной"
+
+#: ../bin/cdraw.c:3196
+msgid "Curve Tangent"
+msgstr "Тангенс кривой"
+
+#: ../bin/cdraw.c:3196
+msgid "Draw Curve from Tangent"
+msgstr "По окружности от края"
+
+#: ../bin/cdraw.c:3197
+msgid "Curve Center"
+msgstr "Центр кривой"
+
+#: ../bin/cdraw.c:3197
+msgid "Draw Curve from Center"
+msgstr "По окружности от центра"
+
+#: ../bin/cdraw.c:3198
+msgid "Curve Chord"
+msgstr "Хорда кривой"
+
+#: ../bin/cdraw.c:3198
+msgid "Draw Curve from Chord"
+msgstr "Кривая по хорде"
+
+#: ../bin/cdraw.c:3199
+msgid "Draw Bezier"
+msgstr "Кривая Безье"
+
+#: ../bin/cdraw.c:3203
+msgid "Circle Center"
+msgstr "Центр окружности"
+
+#: ../bin/cdraw.c:3203
+msgid "Draw Circle from Center"
+msgstr "Окружность от края"
+
+#: ../bin/cdraw.c:3204
+msgid "Circle Tangent"
+msgstr "Касательная к окружности"
+
+#: ../bin/cdraw.c:3204
+msgid "Draw Circle from Tangent"
+msgstr "Окружность из центра"
+
+#: ../bin/cdraw.c:3206
+msgid "Circle Filled Center"
+msgstr "Круг к центру"
+
+#: ../bin/cdraw.c:3206
+msgid "Draw Filled Circle from Center"
+msgstr "Круг от края"
+
+#: ../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:3211
+msgid "Draw Filled Box"
+msgstr "Закрашенный прямоугольник"
+
+#: ../bin/cdraw.c:3212
+msgid "Draw Polygon"
+msgstr "Рисовать полигон"
+
+#: ../bin/cdraw.c:3213
+#, fuzzy
+msgid "Draw Filled Polygon"
+msgstr "Рисовать полигон"
+
+#: ../bin/cdraw.c:3214
+#, fuzzy
+msgid "PolyLine"
+msgstr "Ломаная"
+
+#: ../bin/cdraw.c:3214
+#, fuzzy
+msgid "Draw PolyLine"
+msgstr "Рисовать полилинию"
+
+#: ../bin/cdraw.c:3231
+msgid "Straight Objects"
+msgstr "Прямые объекты"
+
+#: ../bin/cdraw.c:3231
+msgid "Draw Straight Objects"
+msgstr "Рисовать прямые объекты"
+
+#: ../bin/cdraw.c:3232
+msgid "Curved Lines"
+msgstr "Кривые линии"
+
+#: ../bin/cdraw.c:3232
+msgid "Draw Curved Lines"
+msgstr "Рисовать кривые линии"
+
+#: ../bin/cdraw.c:3233
+msgid "Circle Lines"
+msgstr "Окружности"
+
+#: ../bin/cdraw.c:3233
+msgid "Draw Circles"
+msgstr "Рисовать окружности"
+
+#: ../bin/cdraw.c:3234
+msgid "Shapes"
+msgstr "Фигуры"
+
+#: ../bin/cdraw.c:3234
+msgid "Draw Shapes"
+msgstr "Рисовать фигуры"
+
+#: ../bin/cdraw.c:3536
+msgid "Close Polygon - 'g'"
+msgstr ""
+
+#: ../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 "Ломаная"
+
+#: ../bin/cdraw.c:3559 ../bin/cselect.c:3737
+#, fuzzy
+msgid "Dashed Line"
+msgstr "Прямая"
+
+#: ../bin/cdraw.c:3561 ../bin/cselect.c:3739
+#, fuzzy
+msgid "Dotted Line"
+msgstr "Кривая линия"
+
+#: ../bin/cdraw.c:3563
+#, fuzzy
+msgid "Dash-Dot Line"
+msgstr "Прямая"
+
+#: ../bin/cdraw.c:3565
+msgid "Dash-Dot-Dot Line"
+msgstr ""
+
+#: ../bin/cdraw.c:3567
+#, fuzzy
+msgid "Center-Dot Line"
+msgstr "Создать линии"
+
+#: ../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 "Нет"
+
+#: ../bin/celev.c:42
+msgid "Defined"
+msgstr "По-умолчанию"
+
+#: ../bin/celev.c:42
+msgid "Hidden"
+msgstr "Скрытая"
+
+#: ../bin/celev.c:43
+msgid "Computed"
+msgstr "Вычисленная"
+
+#: ../bin/celev.c:43
+msgid "Station"
+msgstr "Станция"
+
+#: ../bin/celev.c:43 ../bin/cprofile.c:1529 ../bin/dcmpnd.c:71
+msgid "Ignore"
+msgstr "Игнорировать"
+
+#: ../bin/celev.c:233
+msgid "Set Elevation"
+msgstr "Установить высоту"
+
+#: ../bin/celev.c:325 ../bin/celev.c:334 ../bin/celev.c:338
+#, c-format
+msgid "Undefined"
+msgstr "Неопределено"
+
+#: ../bin/celev.c:384 ../bin/celev.c:541
+msgid "Elevation"
+msgstr "Высота"
+
+#: ../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: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
+msgid "Move to end or track crossing"
+msgstr ""
+
+#: ../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 "Высоты трека"
+
+#: ../bin/celev.c:461
+#, fuzzy, c-format
+msgid "Track End elevation %0.3f"
+msgstr "Высоты трека"
+
+#: ../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:496
+#, fuzzy
+msgid "Track split!"
+msgstr "Треки"
+
+#: ../bin/celev.c:503
+#, fuzzy
+msgid "Point selected!"
+msgstr "невыбранные"
+
+#: ../bin/cgroup.c:664
+msgid "Ungroup Object"
+msgstr "Разгруппировать объект"
+
+#: ../bin/cgroup.c:677
+#, c-format
+msgid "%d objects ungrouped"
+msgstr "%d объектов разгруппировано"
+
+#: ../bin/cgroup.c:679
+msgid "No objects ungrouped"
+msgstr "Нет объектов для разгруппировки"
+
+#: ../bin/cgroup.c:693
+msgid "Replace with new group?"
+msgstr "Заменить новой группой?"
+
+#: ../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: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:702 ../bin/dcmpnd.c:485
+msgid "#"
+msgstr "#"
+
+#: ../bin/cgroup.c:703 ../bin/compound.c:748
+msgid "# Segments"
+msgstr "# сегментов"
+
+#: ../bin/cgroup.c:705
+#, fuzzy
+msgid "Offset X,Y:"
+msgstr "Смещение"
+
+#: ../bin/cgroup.c:1320
+msgid "No endpts"
+msgstr ""
+
+#: ../bin/cgroup.c:1732 ../bin/cgroup.c:1798
+msgid "Group Tracks"
+msgstr ""
+
+#: ../bin/cgroup.c:1866
+msgid "Group Objects"
+msgstr ""
+
+#: ../bin/chndldto.c:68
+msgid "Place frog and drag angle"
+msgstr ""
+
+#: ../bin/chndldto.c:85
+msgid "frog"
+msgstr "стрелка"
+
+#: ../bin/chndldto.c:91
+msgid "Drag to set angle"
+msgstr "Тащите для установки угла"
+
+#: ../bin/chndldto.c:132
+#, c-format
+msgid "Angle = %0.2f Frog# = %0.2f"
+msgstr "Угол = %0.2f Стрелка# = %0.2f"
+
+#: ../bin/chndldto.c:134
+msgid "Frog angle is too close to 0"
+msgstr "Угол стрелки очень маленький"
+
+#: ../bin/chndldto.c:137
+msgid "Select point position"
+msgstr "Выберите позицию точки"
+
+#: ../bin/chndldto.c:152 ../bin/chndldto.c:178
+msgid "points"
+msgstr "точки"
+
+#: ../bin/chndldto.c:282
+#, c-format
+msgid "Length = %0.2f Angle = %0.2f Frog# = %0.2f"
+msgstr ""
+
+#: ../bin/chndldto.c:286
+msgid "Create Hand Laid Turnout"
+msgstr ""
+
+#: ../bin/chndldto.c:381
+msgid "HandLaidTurnout"
+msgstr ""
+
+#: ../bin/cjoin.c:170
+#, c-format
+msgid "Curved Track: Radius=%s Length=%s"
+msgstr "Изогнутый трек: Радиус=%s Длина=%s"
+
+#: ../bin/cjoin.c:261
+#, c-format
+msgid "Curved Track: Radius=%s Length=%s Angle=%0.3f"
+msgstr "Изогнутый трек: Радиус=%s Длина=%s Угол=%0.3f"
+
+#: ../bin/cjoin.c:363
+#, c-format
+msgid "Track (%d) is too short for transition-curve by %0.3f"
+msgstr ""
+
+#: ../bin/cjoin.c:381
+#, c-format
+msgid "Connecting track is too short by %0.3f"
+msgstr ""
+
+#: ../bin/cjoin.c:431
+msgid "Click on an unselected End-Point"
+msgstr ""
+
+#: ../bin/cjoin.c:432
+msgid "Click on a selected End-Point"
+msgstr ""
+
+#: ../bin/cjoin.c:438
+msgid "unselected"
+msgstr "невыбранные"
+
+#: ../bin/cjoin.c:438 ../bin/cprint.c:162
+msgid "selected"
+msgstr "выбранные"
+
+#: ../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
+msgid "Left click - Select second object end"
+msgstr ""
+
+#: ../bin/cjoin.c:584
+msgid "Same draw object and same endpoint - Try again"
+msgstr ""
+
+#: ../bin/cjoin.c:632
+#, fuzzy
+msgid "Create PolyLine"
+msgstr "Создать линии"
+
+#: ../bin/cjoin.c:913
+msgid "Left click - join with track"
+msgstr "Левый клик - соединить с треком"
+
+#: ../bin/cjoin.c:916
+msgid "Left click - join with track, Shift Left click - move to join"
+msgstr ""
+
+#: ../bin/cjoin.c:1011 ../bin/cjoin.c:1469 ../bin/cjoin.c:1476
+msgid "Select 2nd track"
+msgstr "Выберите второй трек"
+
+#: ../bin/cjoin.c:1266
+msgid "Beyond end of 2nd track"
+msgstr ""
+
+#: ../bin/cjoin.c:1302
+msgid "Beyond end of 1st track"
+msgstr ""
+
+#: ../bin/cjoin.c:1325
+msgid "First Track Type not supported for non-Cornu Join"
+msgstr ""
+
+#: ../bin/cjoin.c:1333
+msgid "First "
+msgstr "Первый "
+
+#: ../bin/cjoin.c:1359
+msgid "Second Track Type not supported for non-Cornu Join"
+msgstr ""
+
+#: ../bin/cjoin.c:1366
+msgid "Second "
+msgstr "Второй "
+
+#: ../bin/cjoin.c:1380 ../bin/track.c:2395 ../bin/track.c:2434
+#: ../bin/track.c:2509
+msgid "Connecting "
+msgstr "Соединение "
+
+#: ../bin/cjoin.c:1479
+msgid "Join Tracks"
+msgstr "Соединить треки"
+
+#: ../bin/cjoin.c:1575
+msgid "Join"
+msgstr "Присоединить"
+
+#: ../bin/cjoin.c:1576
+#, fuzzy
+msgid "Join Track"
+msgstr "Соединить треки"
+
+#: ../bin/cjoin.c:1579
+#, fuzzy
+msgid "Join Lines"
+msgstr "Окружности"
+
+#: ../bin/cmisc.c:55
+msgid "Middle"
+msgstr "Середина"
+
+#: ../bin/cmisc.c:55 ../bin/macro.c:70
+msgid "End"
+msgstr "Конец"
+
+#: ../bin/cmisc.c:140 ../bin/tcurve.c:409 ../bin/tease.c:535
+#, fuzzy
+msgid "Lock"
+msgstr "Поезд?"
+
+#: ../bin/cmisc.c:593
+#, fuzzy
+msgid "Select track to describe +Shift for Frozen"
+msgstr "Выберите трек для описания"
+
+#: ../bin/cmisc.c:691 ../bin/doption.c:245
+msgid "Properties"
+msgstr "Свойства"
+
+#: ../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 "Изменить трек"
+
+#: ../bin/cmodify.c:564
+#, fuzzy
+msgid "Drag to add flex track"
+msgstr "Тяните, чтобы создавать новые сегменты трека"
+
+#: ../bin/cmodify.c:569
+#, fuzzy
+msgid "No track to extend"
+msgstr "%d треков перемещено"
+
+#: ../bin/cmodify.c:574
+#, fuzzy
+msgid "No track selected"
+msgstr "выбранные"
+
+#: ../bin/cmodify.c:724
+#, c-format
+msgid "Curve Track: Radius=%s Length=%s Angle=%0.3f"
+msgstr "Кривой трек: Радиус=%s Длина=%s Угол=%0.3f"
+
+#: ../bin/cmodify.c:740
+msgid "Extend Track"
+msgstr ""
+
+#: ../bin/cmodify.c:882
+msgid "Modify"
+msgstr "Изменить"
+
+#: ../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:896 ../bin/cselect.c:3669 ../bin/cselect.c:3687
+#: ../bin/menu.c:941 ../bin/menu.c:943
+msgid "Zoom Out"
+msgstr "Отдалить"
+
+#: ../bin/cmodify.c:897
+msgid "Pan center - 'c'"
+msgstr ""
+
+#: ../bin/cnote.c:67 ../bin/textnoteui.c:47 ../bin/trknote.c:52
+msgid "Note"
+msgstr "Заметка"
+
+#: ../bin/cnote.c:73
+msgid "Replace this text with your layout notes"
+msgstr "Замените этот текст вашей заметкой к рабочей области"
+
+#: ../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:724 ../bin/tbezier.c:287 ../bin/tcornu.c:323
+msgid "Z1"
+msgstr ""
+
+#: ../bin/compound.c:729 ../bin/tbezier.c:294 ../bin/tcornu.c:328
+msgid "Z2"
+msgstr ""
+
+#: ../bin/compound.c:730
+msgid "End Pt 3: X,Y"
+msgstr ""
+
+#: ../bin/compound.c:734
+msgid "Z3"
+msgstr ""
+
+#: ../bin/compound.c:735
+msgid "End Pt 4: X,Y"
+msgstr ""
+
+#: ../bin/compound.c:739
+msgid "Z4"
+msgstr ""
+
+#: ../bin/compound.c:741 ../bin/tease.c:528
+msgid "Origin: X,Y"
+msgstr "Начало: X,Y"
+
+#: ../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:747
+#, fuzzy
+msgid "LineType"
+msgstr "Прямая"
+
+#: ../bin/compound.c:1025 ../bin/cstruct.c:1030 ../bin/cstruct.c:1246
+msgid "Structure"
+msgstr "Структура"
+
+#: ../bin/compound.c:1027 ../bin/cswitchmotor.c:232 ../bin/cturnout.c:988
+msgid "Turnout"
+msgstr "Стрелка"
+
+#: ../bin/compound.c:1027
+msgid "Sectional Track"
+msgstr "Составной трек"
+
+#: ../bin/compound.c:1031
+#, c-format
+msgid "%s (%d) Layer= %d %s"
+msgstr ""
+
+#: ../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:52 ../bin/cparalle.c:99
+#, fuzzy
+msgid "Radius Factor"
+msgstr "Радиус "
+
+#: ../bin/cparalle.c:141
+#, fuzzy
+msgid "Radius factor"
+msgstr "Радиус "
+
+#: ../bin/cparalle.c:155
+msgid " Track/Line doesn't support parallel"
+msgstr ""
+
+#: ../bin/cparalle.c:230
+msgid "Create Parallel Track"
+msgstr "Добавить параллельный трек"
+
+#. 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:300
+#, fuzzy
+msgid "Parallel Track"
+msgstr "Добавить параллельный трек"
+
+#: ../bin/cparalle.c:303
+#, fuzzy
+msgid "Parallel Line"
+msgstr "Параллель"
+
+#: ../bin/cprint.c:110
+msgid "Portrait"
+msgstr "Портретный"
+
+#: ../bin/cprint.c:110
+msgid "Landscape"
+msgstr "Ландшафтный"
+
+#: ../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:91 ../bin/cswitchmotor.c:110
+#: ../bin/cswitchmotor.c:230 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
+msgid "Reverse"
+msgstr "Обратный"
+
+#: ../bin/cprint.c:112
+msgid "Engineering Data"
+msgstr ""
+
+#: ../bin/cprint.c:113
+msgid "Registration Marks (in 1:1 scale only)"
+msgstr ""
+
+#: ../bin/cprint.c:114
+#, fuzzy
+msgid "Page Numbers"
+msgstr "Номер запчасти"
+
+#: ../bin/cprint.c:115
+msgid "Ignore Page Margins"
+msgstr "Игнорировать поля страницы"
+
+#: ../bin/cprint.c:116 ../bin/csnap.c:733 ../bin/doption.c:559
+msgid "Snap Grid"
+msgstr "Настройки сетки"
+
+#: ../bin/cprint.c:117
+#, fuzzy
+msgid "Layout Edge"
+msgstr "Проект"
+
+#: ../bin/cprint.c:117
+msgid "Every Page"
+msgstr ""
+
+#: ../bin/cprint.c:118
+#, fuzzy
+msgid "Roadbed Outline"
+msgstr "Ширина полотна"
+
+#: ../bin/cprint.c:119
+msgid "Centerline below Scale 1:1"
+msgstr ""
+
+#: ../bin/cprint.c:128
+msgid "Print Scale"
+msgstr "Печатать масштаб"
+
+#: ../bin/cprint.c:129
+msgid "Page Width"
+msgstr "Ширина страницы"
+
+#: ../bin/cprint.c:130
+msgid "Max"
+msgstr "Макс."
+
+#: ../bin/cprint.c:132
+msgid "Snap Shot"
+msgstr ""
+
+#: ../bin/cprint.c:133
+msgid "Page Format"
+msgstr ""
+
+#: ../bin/cprint.c:134
+msgid "Print Order"
+msgstr ""
+
+#: ../bin/cprint.c:135
+#, fuzzy
+msgid "Print "
+msgstr "Печать"
+
+#: ../bin/cprint.c:144
+#, fuzzy
+msgid "Rulers:"
+msgstr "Линейка"
+
+#: ../bin/cprint.c:150
+#, fuzzy
+msgid " Width"
+msgstr "Ширина"
+
+#: ../bin/cprint.c:152
+#, fuzzy
+msgid "Margins"
+msgstr "Главный"
+
+#: ../bin/cprint.c:153 ../bin/cturntbl.c:274
+msgid "Origin: X"
+msgstr "Координата: 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 "Сбросить"
+
+#: ../bin/cprint.c:157
+msgid "Setup"
+msgstr "Установить"
+
+#: ../bin/cprint.c:158 ../bin/cselect.c:3675 ../bin/menu.c:974
+msgid "Select All"
+msgstr "Выбрать всё"
+
+#: ../bin/cprint.c:159 ../bin/cprofile.c:708 ../bin/layout.c:671
+#: ../bin/misc.c:725
+msgid "Clear"
+msgstr "Очистить"
+
+#: ../bin/cprint.c:161
+msgid "0 pages"
+msgstr "0 страниц"
+
+#: ../bin/cprint.c:190
+#, fuzzy, c-format
+msgid "%d page"
+msgstr "%d страниц"
+
+#: ../bin/cprint.c:190
+#, c-format
+msgid "%d pages"
+msgstr "%d страниц"
+
+#: ../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:746
+#, fuzzy
+msgid "Print Margins"
+msgstr "Печатать список частей"
+
+#: ../bin/cprint.c:1440 ../bin/cprofile.c:710 ../bin/ctodesgn.c:3147
+#: ../bin/denum.c:51
+msgid "Print"
+msgstr "Печать"
+
+#: ../bin/cprint.c:1472
+msgid "Select pages to print, or drag to move print grid"
+msgstr "Выберите страницы для печати или перетащите, чтобы передвинуть сетку"
+
+#: ../bin/cprint.c:1574
+msgid "Print..."
+msgstr "Печать..."
+
+#. 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:626
+#, c-format
+msgid "%s Profile: %s"
+msgstr "%s Профиль: %s"
+
+#: ../bin/cprofile.c:704 ../bin/menu.c:225
+msgid "Change"
+msgstr "Изменить"
+
+#: ../bin/cprofile.c:751 ../bin/cprofile.c:761
+#, c-format
+msgid "Elev = %0.1f"
+msgstr "Высота = %0.1f"
+
+#: ../bin/cprofile.c:763
+#, c-format
+msgid "Elev=%0.2f %0.1f%%"
+msgstr "Высота=%0.2f %0.1f%%"
+
+#: ../bin/cprofile.c:768
+#, c-format
+msgid "%0.1f%% Elev = %0.2f"
+msgstr "%0.1f%% Высота = %0.2f"
+
+#: ../bin/cprofile.c:773
+#, c-format
+msgid "%0.1f%% Elev = %0.2f %0.1f%%"
+msgstr "%0.1f%% Высота = %0.2f %0.1f%%"
+
+#: ../bin/cprofile.c:788 ../bin/cprofile.c:858 ../bin/cprofile.c:1394
+msgid "Profile Command"
+msgstr ""
+
+#: ../bin/cprofile.c:797 ../bin/cprofile.c:1448
+msgid "Drag to change Elevation"
+msgstr "Тяни, чтобы изменить высоту"
+
+#: ../bin/cprofile.c:899
+msgid "Select a Defined Elevation to start Profile"
+msgstr "Выберите трек для начальной высоты"
+
+#: ../bin/cprofile.c:901
+msgid "Select a Defined Elevation to extend Profile"
+msgstr "Выберите трек для конечной высоты"
+
+#: ../bin/cprofile.c:1456
+msgid "Select a Defined Elevation to start profile"
+msgstr "Выберите трек для начальной высоты"
+
+#: ../bin/cprofile.c:1527
+msgid "Define"
+msgstr ""
+
+#: ../bin/cpull.c:454 ../bin/cpull.c:616
+#, c-format
+msgid "%d tracks moved"
+msgstr "%d треков перемещено"
+
+#: ../bin/cpull.c:503
+msgid "Pull Tracks"
+msgstr "Тяните треки"
+
+#: ../bin/cpull.c:579
+msgid "Tighten Tracks"
+msgstr ""
+
+#: ../bin/cpull.c:670
+msgid "Connect Multiple Tracks - Select multiple tracks to join first"
+msgstr ""
+
+#: ../bin/cpull.c:673
+msgid "Try to Connect all Selected Tracks?"
+msgstr ""
+
+#: ../bin/cpull.c:680
+msgid "ReConnect"
+msgstr ""
+
+#: ../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 "Выберите первый конец для соединения"
+
+#: ../bin/cpull.c:750
+#, fuzzy
+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 "Выберите второй конец для соединения"
+
+#: ../bin/cpull.c:821
+msgid "Same Track! - please select another"
+msgstr ""
+
+#: ../bin/cpull.c:918
+msgid "Connect Two Tracks"
+msgstr "Соединить два трека"
+
+#: ../bin/cpull.c:924
+msgid "Connect All Selected - 'S'"
+msgstr ""
+
+#: ../bin/cruler.c:390
+#, fuzzy
+msgid "Measurement"
+msgstr "Упрощения"
+
+#. 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:394
+#, fuzzy
+msgid "Protractor"
+msgstr "Портретный"
+
+#: ../bin/cselect.c:688
+msgid "Change Track Width"
+msgstr "Изменить ширину трека"
+
+#: ../bin/cselect.c:714
+#, fuzzy
+msgid "Change Line Type"
+msgstr "Изменить слои"
+
+#: ../bin/cselect.c:739
+msgid "Delete only works in Select Mode"
+msgstr ""
+
+#: ../bin/cselect.c:755
+msgid "Delete Tracks"
+msgstr "Удалить треки"
+
+#: ../bin/cselect.c:862
+msgid "Hide Tracks (Tunnel)"
+msgstr "Спрятать треки (тунель)"
+
+#: ../bin/cselect.c:882
+#, fuzzy
+msgid "Bridge Tracks "
+msgstr "Трек Безье"
+
+#: ../bin/cselect.c:900
+#, fuzzy
+msgid "Roadbed Tracks "
+msgstr "Вращать треки"
+
+#: ../bin/cselect.c:918
+#, fuzzy
+msgid "Ties Tracks "
+msgstr "Тонкие треки"
+
+#: ../bin/cselect.c:956 ../bin/menu.c:1118
+msgid "Move To Current Layer"
+msgstr "Переместить на текущий слой"
+
+#: ../bin/cselect.c:1010 ../bin/menu.c:1303
+msgid "Clear Elevations"
+msgstr "Очистить высоты"
+
+#: ../bin/cselect.c:1056
+msgid "Add Elevations"
+msgstr "Добавить высоты"
+
+#: ../bin/cselect.c:1072
+msgid "Refresh Compound"
+msgstr ""
+
+#: ../bin/cselect.c:1471
+msgid "Cornu too tight - it was deleted"
+msgstr ""
+
+#: ../bin/cselect.c:1526
+msgid "Move To Join"
+msgstr ""
+
+#: ../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 "Переместить треки"
+
+#: ../bin/cselect.c:1939
+#, fuzzy
+msgid "Align: Click on a selected object to be aligned"
+msgstr "Скопировать выбранные объекты в буфер обмена"
+
+#: ../bin/cselect.c:1978
+msgid "Drag to rotate selected tracks, Shift+RightClick for QuickRotate Menu"
+msgstr ""
+
+#: ../bin/cselect.c:1994 ../bin/cselect.c:2370
+msgid "Rotate Tracks"
+msgstr "Вращать треки"
+
+#: ../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 ""
+
+#: ../bin/cselect.c:2154
+#, fuzzy, c-format
+msgid "Angle %0.3f #%ld"
+msgstr "Угол = %0.3f (%s)"
+
+#: ../bin/cselect.c:2156
+#, fuzzy, c-format
+msgid "Angle %0.3f %s"
+msgstr "Угол = %0.3f (%s)"
+
+#: ../bin/cselect.c:2162
+msgid "Origin Set. Drag away to set start angle"
+msgstr ""
+
+#: ../bin/cselect.c:2177
+msgid "Align: Click on the 2nd unselected object"
+msgstr ""
+
+#: ../bin/cselect.c:2307
+msgid "In module layer:"
+msgstr ""
+
+#: ../bin/cselect.c:2315
+#, fuzzy
+msgid "Frozen Layer:"
+msgstr "Заморожен"
+
+#: ../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:2579
+#, fuzzy
+msgid "Hidden description - 's' to Show, 'd' Details"
+msgstr "Показать подпись"
+
+#: ../bin/cselect.c:2582
+#, fuzzy
+msgid "Shown description - 'h' to Hide"
+msgstr "Показать подпись"
+
+#: ../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:2634
+#, fuzzy
+msgid "Drag label"
+msgstr "Тащите, чтобы разместить"
+
+#: ../bin/cselect.c:2644
+msgid "Move Label"
+msgstr "Переместить подпись"
+
+#: ../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 "Показать подпись"
+
+#: ../bin/cselect.c:2720
+#, fuzzy
+msgid "Toggle Detailed Description"
+msgstr "Переместить описание"
+
+#: ../bin/cselect.c:2804
+msgid "Drag to mark mirror line"
+msgstr "Тащите, чтобы отметить ось зеркала"
+
+#: ../bin/cselect.c:2815
+#, c-format
+msgid "Angle %0.2f"
+msgstr "Угол %0.2f"
+
+#: ../bin/cselect.c:2818
+msgid "Flip Tracks"
+msgstr "Отзеркалить треки"
+
+#: ../bin/cselect.c:3014 ../bin/cselect.c:3215
+msgid "Track is in Frozen Layer"
+msgstr ""
+
+#: ../bin/cselect.c:3188
+#, fuzzy
+msgid "Select track"
+msgstr "Выберите треки"
+
+#. 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:3654 ../bin/cselect.c:3683 ../bin/menu.c:932
+msgid "Undo"
+msgstr "Отменить"
+
+#: ../bin/cselect.c:3655 ../bin/cselect.c:3684 ../bin/menu.c:934
+msgid "Redo"
+msgstr "Повторить"
+
+#: ../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 "Масштаб"
+
+#: ../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 "Сохранить текущий слой"
+
+#: ../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:3699
+#, fuzzy
+msgid "Properties -'?'"
+msgstr "Свойства"
+
+#: ../bin/cselect.c:3701
+#, fuzzy
+msgid "Modify/Activate Track"
+msgstr "Изменить трек"
+
+#: ../bin/cselect.c:3704 ../bin/menu.c:965
+#, fuzzy
+msgid "Cut"
+msgstr "Вырезать"
+
+#: ../bin/cselect.c:3705 ../bin/menu.c:967
+msgid "Copy"
+msgstr "Копировать"
+
+#: ../bin/cselect.c:3706 ../bin/fileio.c:1730 ../bin/menu.c:969
+msgid "Paste"
+msgstr "Вставить"
+
+#: ../bin/cselect.c:3707 ../bin/menu.c:971
+#, fuzzy
+msgid "Clone"
+msgstr "Закрыть"
+
+#: ../bin/cselect.c:3709
+#, fuzzy
+msgid "Rotate..."
+msgstr "Повернуть"
+
+#: ../bin/cselect.c:3711
+msgid "Align"
+msgstr "Выравнивание"
+
+#: ../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 "Тонкие треки"
+
+#: ../bin/cselect.c:3730 ../bin/menu.c:1152
+msgid "Medium Tracks"
+msgstr "Средние треки"
+
+#: ../bin/cselect.c:3732 ../bin/menu.c:1154
+msgid "Thick Tracks"
+msgstr "Толстые треки"
+
+#: ../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 "Переместить"
+
+#: ../bin/cselect.c:3747
+#, fuzzy
+msgid "Move To Back"
+msgstr "Переместить треки"
+
+#: ../bin/cselect.c:3749
+#, fuzzy
+msgid "Group"
+msgstr "Группировать"
+
+#: ../bin/cselect.c:3750
+#, fuzzy
+msgid "UnGroup"
+msgstr "Разгруппировать"
+
+#: ../bin/cselect.c:3796
+msgid "Move Description"
+msgstr "Переместить описание"
+
+#: ../bin/cselect.c:3804 ../bin/menu.c:294 ../bin/menu.c:986
+msgid "Move"
+msgstr "Переместить"
+
+#. 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/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:214
+msgid "Change Sensor"
+msgstr "Изменить сенсор"
+
+#: ../bin/csensor.c:261 ../bin/csensor.c:599
+msgid "Sensor"
+msgstr "Сенсор"
+
+#: ../bin/csensor.c:407
+msgid "Create Sensor"
+msgstr "Создать сенсор"
+
+#: ../bin/csensor.c:410
+msgid "Modify Sensor"
+msgstr "Изменить сенсор"
+
+#: ../bin/csensor.c:445
+msgid "Edit sensor"
+msgstr "Изменить сенсор"
+
+#: ../bin/csensor.c:483
+msgid "Place sensor"
+msgstr "Установить сенсор"
+
+#: ../bin/csnap.c:530
+msgid "Horz"
+msgstr "Столбцы"
+
+#: ../bin/csnap.c:532
+msgid "Spacing"
+msgstr "Размер"
+
+#: ../bin/csnap.c:534
+msgid "Divisions"
+msgstr "Ячеек"
+
+#: ../bin/csnap.c:537
+msgid "Enable"
+msgstr "Включено"
+
+#: ../bin/csnap.c:538
+msgid "Vert"
+msgstr "Строки"
+
+#: ../bin/csnap.c:547 ../bin/dease.c:78
+msgid "X"
+msgstr "Смещ."
+
+#: ../bin/csnap.c:551
+msgid "A"
+msgstr ""
+
+#: ../bin/csnap.c:554
+msgid "Show"
+msgstr "Показывать"
+
+#: ../bin/csnap.c:815
+msgid "Change Grid..."
+msgstr "Изменить сетку..."
+
+#: ../bin/csplit.c:45
+msgid "Set Block Gaps"
+msgstr ""
+
+#: ../bin/csplit.c:137
+#, fuzzy
+msgid "Select track and position for split"
+msgstr "Выберите трек для разделения"
+
+#: ../bin/csplit.c:161
+msgid "Can't Split that Track Object"
+msgstr ""
+
+#: ../bin/csplit.c:169 ../bin/csplit.c:182 ../bin/csplit.c:505
+msgid "Split Track"
+msgstr "Разделить трек"
+
+#: ../bin/csplit.c:178 ../bin/csplit.c:322 ../bin/csplit.c:410
+msgid "Can't Split that Draw Object"
+msgstr ""
+
+#: ../bin/csplit.c:188
+#, fuzzy
+msgid "No Track to Split"
+msgstr "Выберите трек для разделения"
+
+#: ../bin/csplit.c:203 ../bin/dbench.c:65 ../bin/dbench.c:77
+msgid "Left"
+msgstr "Слева"
+
+#: ../bin/csplit.c:205 ../bin/dbench.c:66 ../bin/dbench.c:76
+msgid "Right"
+msgstr "Справа"
+
+#: ../bin/csplit.c:207 ../bin/csplit.c:216
+msgid "Both"
+msgstr "Оба"
+
+#: ../bin/csplit.c:212
+msgid "Top"
+msgstr "Сверху"
+
+#: ../bin/csplit.c:214
+msgid "Bottom"
+msgstr "Снизу"
+
+#: ../bin/csplit.c:307
+#, fuzzy
+msgid "Select draw to split"
+msgstr "Выберите трек для разделения"
+
+#: ../bin/csplit.c:326 ../bin/csplit.c:508
+#, fuzzy
+msgid "Split Draw"
+msgstr "Разделить трек"
+
+#: ../bin/csplit.c:332
+#, fuzzy
+msgid "No Draw to Split"
+msgstr "Тащите, чтобы разместить"
+
+#: ../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:105
+msgid "Drag to place 2nd end point"
+msgstr ""
+
+#: ../bin/cstraigh.c:151
+#, c-format
+msgid "Straight Track Length=%s Angle=%0.3f"
+msgstr "Длина прямого трека=%s Угол=%0.3f"
+
+#: ../bin/cstraigh.c:204 ../bin/tstraigh.c:245
+msgid "Straight Track"
+msgstr "Прямой трек"
+
+#: ../bin/cstruct.c:67 ../bin/cturnout.c:86 ../bin/doption.c:93
+#: ../bin/doption.c:250
+msgid "Hide"
+msgstr "Скрыть"
+
+#: ../bin/cstruct.c:505 ../bin/cstruct.c:535
+msgid "Pier Number"
+msgstr ""
+
+#: ../bin/cstruct.c:627
+#, c-format
+msgid "Scale %d:1"
+msgstr "Масштаб %d:1"
+
+#: ../bin/cstruct.c:629
+#, c-format
+msgid "Width %s"
+msgstr "Ширина %s"
+
+#: ../bin/cstruct.c:631
+#, c-format
+msgid "Height %s"
+msgstr "Высота %s"
+
+#: ../bin/cstruct.c:779
+msgid "Place Structure"
+msgstr ""
+
+#: ../bin/cstruct.c:851 ../bin/cstruct.c:904 ../bin/drawgeom.c:304
+#, fuzzy
+msgid "+Alt for Magnetic Snap"
+msgstr "Прилипать к сетке"
+
+#: ../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:921
+msgid "Drag to rotate"
+msgstr "Тащите, чтобы повернуть"
+
+#: ../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: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:1091
+msgid ""
+"Left drag to move, right drag to rotate, or press Return or click Ok to "
+"finalize"
+msgstr ""
+
+#: ../bin/cstruct.c:1184 ../bin/cturnout.c:3127
+#, c-format
+msgid "Place %s and draw into position"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:92 ../bin/cswitchmotor.c:111
+#: ../bin/cswitchmotor.c:231
+msgid "Point Sense"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:112
+msgid "Turnout Number"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:299
+msgid "Change Switch Motor"
+msgstr ""
+
+#: ../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
+msgid "Create Switch Motor"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:608
+msgid "Create switch motor"
+msgstr ""
+
+#: ../bin/cswitchmotor.c:624 ../bin/cswitchmotor.c:655
+#: ../bin/cswitchmotor.c:687
+msgid "Select a turnout"
+msgstr ""
+
+#: ../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 "Создать текст"
+
+#: ../bin/ctext.c:277
+msgid "Fonts..."
+msgstr "Шрифты..."
+
+#: ../bin/ctodesgn.c:139
+msgid "Frog #"
+msgstr "Стрелка #"
+
+#: ../bin/ctodesgn.c:139
+msgid "Degrees"
+msgstr "Градусы"
+
+#: ../bin/ctodesgn.c:140
+msgid "Dual Path"
+msgstr ""
+
+#: ../bin/ctodesgn.c:140
+msgid "Quad Path"
+msgstr ""
+
+#: ../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:203 ../bin/ctodesgn.c:3204 ../bin/ctodesgn.c:3205
+msgid "Left Description"
+msgstr "Описание Левая"
+
+#: ../bin/ctodesgn.c:204 ../bin/ctodesgn.c:207
+msgid " #"
+msgstr " #"
+
+#: ../bin/ctodesgn.c:206 ../bin/ctodesgn.c:3203
+msgid "Right Description"
+msgstr "Описание Правая"
+
+#: ../bin/ctodesgn.c:208
+msgid "Roadbed Width"
+msgstr "Ширина полотна"
+
+#: ../bin/ctodesgn.c:212 ../bin/denum.c:52
+msgid "Print Setup"
+msgstr "Настройки печати"
+
+#: ../bin/ctodesgn.c:242
+msgid "Diverging Length"
+msgstr "Отклонение длины"
+
+#: ../bin/ctodesgn.c:243
+msgid "Diverging Angle"
+msgstr "Отклонение угла"
+
+#: ../bin/ctodesgn.c:244
+msgid "Diverging Offset"
+msgstr "Отклонение смещения"
+
+#: ../bin/ctodesgn.c:245
+msgid "Overall Length"
+msgstr ""
+
+#: ../bin/ctodesgn.c:257
+msgid "Regular Turnout"
+msgstr "Обычная стрелка"
+
+#: ../bin/ctodesgn.c:268 ../bin/ctodesgn.c:314
+msgid "Inner Length"
+msgstr "Внутренняя длина"
+
+#: ../bin/ctodesgn.c:269 ../bin/ctodesgn.c:315
+msgid "Inner Angle"
+msgstr "Внутренний угол"
+
+#: ../bin/ctodesgn.c:270 ../bin/ctodesgn.c:316
+msgid "Inner Offset"
+msgstr "Внутреннее смещение"
+
+#: ../bin/ctodesgn.c:271 ../bin/ctodesgn.c:318
+msgid "Outer Angle"
+msgstr "Внешний угол"
+
+#: ../bin/ctodesgn.c:272 ../bin/ctodesgn.c:319
+msgid "Outer Offset"
+msgstr "Внешнее смещение"
+
+#: ../bin/ctodesgn.c:273 ../bin/ctodesgn.c:321
+msgid "Outer Length"
+msgstr "Внешняя длина"
+
+#: ../bin/ctodesgn.c:302
+msgid "Curved Turnout"
+msgstr ""
+
+#: ../bin/ctodesgn.c:317
+#, fuzzy
+msgid "Inner Radius"
+msgstr "Мин. радиус"
+
+#: ../bin/ctodesgn.c:320
+#, fuzzy
+msgid "Outer Radius"
+msgstr "Радиус"
+
+#: ../bin/ctodesgn.c:322 ../bin/ctodesgn.c:402 ../bin/ctodesgn.c:489
+#, fuzzy
+msgid "Toe Radius"
+msgstr "Радиус"
+
+#: ../bin/ctodesgn.c:323 ../bin/ctodesgn.c:401
+#, fuzzy
+msgid "Toe Length"
+msgstr "Общая длина"
+
+#: ../bin/ctodesgn.c:336
+#, fuzzy
+msgid "Cornu Curved Turnout"
+msgstr "Добавить изогнутый трек"
+
+#: ../bin/ctodesgn.c:348 ../bin/ctodesgn.c:393 ../bin/ctodesgn.c:426
+#: ../bin/ctodesgn.c:475
+msgid "Left Length"
+msgstr "Длина слева"
+
+#: ../bin/ctodesgn.c:349 ../bin/ctodesgn.c:394 ../bin/ctodesgn.c:427
+#: ../bin/ctodesgn.c:476
+msgid "Left Angle"
+msgstr "Угол слева"
+
+#: ../bin/ctodesgn.c:350 ../bin/ctodesgn.c:395 ../bin/ctodesgn.c:428
+#: ../bin/ctodesgn.c:477
+msgid "Left Offset"
+msgstr "Смещение слева"
+
+#: ../bin/ctodesgn.c:351 ../bin/ctodesgn.c:398 ../bin/ctodesgn.c:430
+#: ../bin/ctodesgn.c:484
+msgid "Right Offset"
+msgstr "Смещение справа"
+
+#: ../bin/ctodesgn.c:352 ../bin/ctodesgn.c:399 ../bin/ctodesgn.c:431
+#: ../bin/ctodesgn.c:485
+msgid "Right Angle"
+msgstr "Угол справа"
+
+#: ../bin/ctodesgn.c:353 ../bin/ctodesgn.c:400 ../bin/ctodesgn.c:432
+#: ../bin/ctodesgn.c:486
+msgid "Right Length"
+msgstr "Длина справа"
+
+#: ../bin/ctodesgn.c:381
+msgid "Wye Turnout"
+msgstr ""
+
+#: ../bin/ctodesgn.c:396 ../bin/ctodesgn.c:478
+#, fuzzy
+msgid "Left Radius"
+msgstr "Радиус"
+
+#: ../bin/ctodesgn.c:397 ../bin/ctodesgn.c:483
+#, fuzzy
+msgid "Right Radius"
+msgstr "Мин. радиус"
+
+#: ../bin/ctodesgn.c:414
+msgid "Cornu Wye Turnout"
+msgstr ""
+
+#: ../bin/ctodesgn.c:463
+msgid "3-way Turnout"
+msgstr ""
+
+#: ../bin/ctodesgn.c:479
+#, fuzzy
+msgid "Center Length"
+msgstr "Внутренняя длина"
+
+#: ../bin/ctodesgn.c:480
+#, fuzzy
+msgid "Center Angle"
+msgstr "Внутренний угол"
+
+#: ../bin/ctodesgn.c:481 ../bin/dcar.c:2348
+#, fuzzy
+msgid "Center Offset"
+msgstr "Внутреннее смещение"
+
+#: ../bin/ctodesgn.c:482
+#, fuzzy
+msgid "Center Radius"
+msgstr "Радиус окружности"
+
+#: ../bin/ctodesgn.c:487
+#, fuzzy
+msgid "Toe Length Left"
+msgstr "Общая длина"
+
+#: ../bin/ctodesgn.c:488
+#, fuzzy
+msgid "Toe Length Right"
+msgstr "Общая длина"
+
+#: ../bin/ctodesgn.c:502
+msgid "Cornu 3-way Turnout"
+msgstr ""
+
+#: ../bin/ctodesgn.c:527
+msgid "Crossing"
+msgstr "Перекрёсток"
+
+#: ../bin/ctodesgn.c:552
+msgid "Single Slipswitch"
+msgstr ""
+
+#: ../bin/ctodesgn.c:587
+msgid "Double Slipswitch"
+msgstr ""
+
+#: ../bin/ctodesgn.c:612
+msgid "Right Crossover"
+msgstr ""
+
+#: ../bin/ctodesgn.c:638
+msgid "Left Crossover"
+msgstr ""
+
+#: ../bin/ctodesgn.c:663
+msgid "Double Crossover"
+msgstr ""
+
+#: ../bin/ctodesgn.c:685
+msgid "Straight Section"
+msgstr "Прямое выделение"
+
+#: ../bin/ctodesgn.c:697
+msgid "Angle (Degrees)"
+msgstr "Угол (градусы)"
+
+#: ../bin/ctodesgn.c:708
+msgid "Curved Section"
+msgstr ""
+
+#: ../bin/ctodesgn.c:731
+msgid "Bumper Section"
+msgstr ""
+
+#: ../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:743
+msgid "Radius1"
+msgstr "Радиус1"
+
+#: ../bin/ctodesgn.c:744
+msgid "Radius2"
+msgstr "Радиус2"
+
+#: ../bin/ctodesgn.c:827
+msgid "Turntable Section"
+msgstr ""
+
+#: ../bin/ctodesgn.c:2777
+#, c-format
+msgid "%s Designer"
+msgstr ""
+
+#: ../bin/ctodesgn.c:2780
+#, c-format
+msgid "%s %d x %d (of %d x %d)"
+msgstr ""
+
+#: ../bin/ctodesgn.c:2780
+msgid "Page"
+msgstr "Страница"
+
+#: ../bin/ctodesgn.c:2788
+msgid "Frog Number"
+msgstr "Номер стрелки"
+
+#: ../bin/ctodesgn.c:3147
+msgid "Turnout Designer"
+msgstr "Редактор стрелок"
+
+#: ../bin/ctodesgn.c:3160
+#, c-format
+msgid "%s %s Designer"
+msgstr ""
+
+#: ../bin/ctrain.c:179 ../bin/dcar.c:2360 ../bin/dcar.c:4694
+#: ../bin/dcar.c:4700
+msgid "Index"
+msgstr "№"
+
+#: ../bin/ctrain.c:185
+#, fuzzy
+msgid "Report Marks"
+msgstr "Метки"
+
+#: ../bin/ctrain.c:273
+msgid "Car"
+msgstr "Машина"
+
+#: ../bin/ctrain.c:728
+msgid "Follow"
+msgstr "Следовать"
+
+#: ../bin/ctrain.c:729
+msgid "Auto Reverse"
+msgstr "Авторазворот"
+
+#: ../bin/ctrain.c:748 ../bin/dcar.c:5686
+msgid "Find"
+msgstr "Найти"
+
+#: ../bin/ctrain.c:754 ../bin/ctrain.c:1011 ../bin/ctrain.c:1324
+msgid "Forward"
+msgstr "Вперёд"
+
+#: ../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:952 ../bin/ctrain.c:981
+msgid "Crashed"
+msgstr "Разрушено"
+
+#: ../bin/ctrain.c:954
+msgid "Not on Track"
+msgstr "Не на треке"
+
+#: ../bin/ctrain.c:958
+msgid "Trains Paused"
+msgstr "Поезда остановлены"
+
+#: ../bin/ctrain.c:960
+msgid "Running"
+msgstr "Запущено"
+
+#: ../bin/ctrain.c:965
+msgid "End of Track"
+msgstr "Конец трека"
+
+#: ../bin/ctrain.c:969
+msgid "Open Turnout"
+msgstr ""
+
+#: ../bin/ctrain.c:973
+msgid "Manual Stop"
+msgstr "Ручная остановка"
+
+#: ../bin/ctrain.c:977
+msgid "No Room"
+msgstr "Нет комнат"
+
+#: ../bin/ctrain.c:985
+msgid "Unknown Status"
+msgstr "Неизвестный статус"
+
+#: ../bin/ctrain.c:995
+msgid "No trains"
+msgstr "Нет поездов"
+
+#: ../bin/ctrain.c:1375
+msgid "Train Control XXX"
+msgstr "Управление поездом XXX"
+
+#: ../bin/ctrain.c:1376
+#, c-format
+msgid "Train Control %d"
+msgstr "Управление поездом %d"
+
+#: ../bin/ctrain.c:1378
+msgid "Train Control"
+msgstr "Управление поездом"
+
+#: ../bin/ctrain.c:3198 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:156
+msgid "Run Trains"
+msgstr "Запустить поезда"
+
+#: ../bin/ctrain.c:3217
+msgid "Uncouple"
+msgstr ""
+
+#: ../bin/ctrain.c:3219
+msgid "Flip Car"
+msgstr "Развернуть машину"
+
+#: ../bin/ctrain.c:3222
+#, fuzzy
+msgid "Clearance Lines On"
+msgstr "Создать линии"
+
+#: ../bin/ctrain.c:3225
+#, fuzzy
+msgid "Clearance Lines Off"
+msgstr "Создать линии"
+
+#: ../bin/ctrain.c:3227
+msgid "Flip Train"
+msgstr "Развернуть поезд"
+
+#. 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:3234
+msgid "Change Direction"
+msgstr "Изменить направление"
+
+#: ../bin/ctrain.c:3238
+msgid "Remove Car"
+msgstr "Удалить машину"
+
+#: ../bin/ctrain.c:3241
+msgid "Remove Train"
+msgstr "Удалить поезд"
+
+#: ../bin/cturnout.c:97 ../bin/dcar.c:2382 ../bin/dcar.c:2386
+msgid "New"
+msgstr "Создать"
+
+#: ../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 ""
+
+#: ../bin/cturnout.c:564
+msgid "Connect Adjustable Tracks"
+msgstr ""
+
+#: ../bin/cturnout.c:1030
+msgid "splitTurnout: can't find segment"
+msgstr ""
+
+#: ../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:1524
+#, c-format
+msgid "Length=%s"
+msgstr "Длина=%s"
+
+#: ../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:2394
+#, c-format
+msgid "0 connections (%s)"
+msgstr "0 соединений (%s)"
+
+#: ../bin/cturnout.c:2433
+msgid "Place New Turnout"
+msgstr ""
+
+#: ../bin/cturnout.c:2861
+#, c-format
+msgid "Angle = %0.3f (%s)"
+msgstr "Угол = %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 ""
+
+#: ../bin/cturnout.c:3190
+#, fuzzy
+msgid "Fixed-Track"
+msgstr "Изогнутый трек"
+
+#: ../bin/cturntbl.c:49 ../bin/cturntbl.c:275 ../bin/cturntbl.c:1029
+#: ../bin/cturntbl.c:1044
+msgid "Diameter"
+msgstr "Диаметр"
+
+#: ../bin/cturntbl.c:276
+msgid "# EndPt"
+msgstr "# КонТчк"
+
+#: ../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:335 ../bin/cturntbl.c:454
+msgid "Turntable"
+msgstr "Разворотный рельс"
+
+#: ../bin/cturntbl.c:670
+msgid "Drag to create stall track"
+msgstr ""
+
+#: ../bin/cturntbl.c:728
+#, fuzzy
+msgid "Connect Turntable Tracks"
+msgstr "Соединить два трека"
+
+#: ../bin/cturntbl.c:1058
+msgid "Create Turntable"
+msgstr "Создать разворотный рельс"
+
+#: ../bin/cturntbl.c:1090
+#, fuzzy
+msgid "Custom Turntable"
+msgstr "Создать разворотный рельс"
+
+#: ../bin/cundo.c:266
+msgid "Undo Trace"
+msgstr "Отменить трассировку"
+
+#: ../bin/cundo.c:741
+#, c-format
+msgid "Undo: %s"
+msgstr "Отменить: %s"
+
+#: ../bin/cundo.c:744 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:168
+msgid "Undo last command"
+msgstr "Отменить последнюю команду"
+
+#: ../bin/cundo.c:749
+#, c-format
+msgid "Redo: %s"
+msgstr "Повторить: %s"
+
+#: ../bin/cundo.c:752 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:129
+msgid "Redo last undo"
+msgstr "Повторить последнюю отмену"
+
+#: ../bin/custom.c:148
+#, c-format
+msgid "%s Turnout Designer"
+msgstr "%s Редактор стрелок"
+
+#: ../bin/custom.c:152
+#, c-format
+msgid "%s Version %s"
+msgstr "%s Версия %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
+#, fuzzy, c-format
+msgid "All Files (*)|*"
+msgstr "Все файлы"
+
+#: ../bin/custom.c:178
+#, fuzzy, c-format
+msgid "%s Import Files (*.xti)|*.xti"
+msgstr "%s Импорт файлов|*.%sti"
+
+#: ../bin/custom.c:182
+#, fuzzy
+msgid "Data Exchange Format Files (*.dxf)|*.dxf"
+msgstr "Файлы формат обмена данными|*.dxf"
+
+#: ../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:194
+#, fuzzy, c-format
+msgid "%s Note Files (*.not)|*.not"
+msgstr "%s Файлы заметок|*.not"
+
+#: ../bin/custom.c:198
+#, fuzzy, c-format
+msgid "%s Log Files (*.log)|*.log"
+msgstr "%s Файлы логов|*.log"
+
+#: ../bin/custom.c:202
+#, fuzzy, c-format
+msgid "%s PartsList Files (*.txt)|*.txt"
+msgstr "%s Файлы запчастей|*.txt"
+
+#: ../bin/dbench.c:38
+msgid " L-Girder"
+msgstr "L-профиль"
+
+#: ../bin/dbench.c:38
+msgid " T-Girder"
+msgstr "T-профиль"
+
+#: ../bin/dbench.c:61
+msgid "On Edge"
+msgstr "На ребро"
+
+#: ../bin/dbench.c:62
+msgid "Flat"
+msgstr "Плашмя"
+
+#: ../bin/dbench.c:67
+msgid "Left-Down"
+msgstr "Слева-снизу"
+
+#: ../bin/dbench.c:68
+msgid "Right-Down"
+msgstr "Справа-снизу"
+
+#: ../bin/dbench.c:69
+msgid "Left-Up"
+msgstr "Слева-сверху"
+
+#: ../bin/dbench.c:70
+msgid "Right-Up"
+msgstr "Справа-сверху"
+
+#: ../bin/dbench.c:71
+msgid "Left-Inverted"
+msgstr "Слева-инвертировано"
+
+#: ../bin/dbench.c:72
+msgid "Right-Inverted"
+msgstr "Справа-инверитровано"
+
+#: ../bin/dbench.c:78
+msgid "Inverted"
+msgstr "Инвертировано"
+
+#: ../bin/dbench.c:147
+#, c-format
+msgid ""
+"Bad BenchType for %s:\n"
+"%s"
+msgstr ""
+
+#: ../bin/dbitmap.c:150
+#, fuzzy
+msgid "Drawing tracks to bitmap"
+msgstr "Печать изображения"
+
+#: ../bin/dbitmap.c:187
+msgid "Drawn with "
+msgstr ""
+
+#: ../bin/dbitmap.c:229
+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:255
+#, fuzzy
+msgid "Background Image"
+msgstr "Конечный угол"
+
+#: ../bin/dbitmap.c:262
+#, fuzzy
+msgid "Include "
+msgstr "№"
+
+#: ../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 "Файлы изображений|*.xpm"
+
+#: ../bin/dbitmap.c:268
+#, fuzzy
+msgid "99999 by 99999 pixels"
+msgstr "Рисунок : 99999 на 99999 пикселей"
+
+#: ../bin/dbitmap.c:269
+#, fuzzy
+msgid "Approximate File Size "
+msgstr "Примерный размер файла: %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 "Изображение : %ld на %ld пикселей"
+
+#: ../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 "Сохранить изображение"
+
+#: ../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 "Экспорт в изображение"
+
+#: ../bin/dcar.c:45
+msgid "Truck"
+msgstr ""
+
+#: ../bin/dcar.c:45
+msgid "Body"
+msgstr "Тело"
+
+#: ../bin/dcar.c:148 ../bin/dcar.c:2860 ../bin/dcar.c:2867
+msgid "Unknown"
+msgstr "Неизвестно"
+
+#: ../bin/dcar.c:481
+msgid "Diesel Loco"
+msgstr "Дизельный локомотив"
+
+#: ../bin/dcar.c:482
+msgid "Steam Loco"
+msgstr "Паровоз"
+
+#: ../bin/dcar.c:483
+msgid "Elect Loco"
+msgstr "Электровоз"
+
+#: ../bin/dcar.c:484
+msgid "Freight Car"
+msgstr "Грузовой вагон"
+
+#: ../bin/dcar.c:485
+msgid "Psngr Car"
+msgstr "Пассажирский вагон"
+
+#: ../bin/dcar.c:486
+msgid "M-O-W"
+msgstr ""
+
+#: ../bin/dcar.c:487
+msgid "Other"
+msgstr "Другие"
+
+#: ../bin/dcar.c:1237 ../bin/dcar.c:5478
+msgid "N/A"
+msgstr "Неизвестно"
+
+#: ../bin/dcar.c:1238 ../bin/dcar.c:5483
+msgid "Mint"
+msgstr "Новое"
+
+#: ../bin/dcar.c:1239 ../bin/dcar.c:5482
+msgid "Excellent"
+msgstr "Превосходное"
+
+#: ../bin/dcar.c:1240 ../bin/dcar.c:5481
+msgid "Good"
+msgstr "Хорошее"
+
+#: ../bin/dcar.c:1241 ../bin/dcar.c:5480
+msgid "Fair"
+msgstr "Так себе"
+
+#: ../bin/dcar.c:1242 ../bin/dcar.c:5479
+msgid "Poor"
+msgstr "Плохое"
+
+#: ../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:2282 ../wlib/mswlib/mswmisc.c:2057
+msgid "Information"
+msgstr "Информация"
+
+#: ../bin/dcar.c:2282
+msgid "Customize"
+msgstr "Внешний вид"
+
+#: ../bin/dcar.c:2296
+msgid "Sequential"
+msgstr ""
+
+#: ../bin/dcar.c:2296
+msgid "Repeated"
+msgstr ""
+
+#: ../bin/dcar.c:2307 ../bin/dcar.c:2309 ../bin/dcar.c:5838
+msgid "Prototype"
+msgstr "Название"
+
+#: ../bin/dcar.c:2315
+msgid "Part"
+msgstr "Запчасть"
+
+#: ../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:2319
+msgid "Loco?"
+msgstr "Поезд?"
+
+#: ../bin/dcar.c:2323 ../bin/dcar.c:4734
+msgid "Import"
+msgstr "Импорт"
+
+#: ../bin/dcar.c:2330
+msgid "Mode"
+msgstr "Режим"
+
+#: ../bin/dcar.c:2334
+msgid "Road"
+msgstr "Дорога"
+
+#: ../bin/dcar.c:2336
+msgid "Reporting Mark"
+msgstr ""
+
+#: ../bin/dcar.c:2338
+msgid "Number"
+msgstr "Номер"
+
+#: ../bin/dcar.c:2342
+msgid "Car Length"
+msgstr "Длина вагона"
+
+#: ../bin/dcar.c:2346
+msgid "Truck Centers"
+msgstr "Колёсная база"
+
+#: ../bin/dcar.c:2350
+msgid "Coupler Mount"
+msgstr ""
+
+#: ../bin/dcar.c:2352
+msgid "Coupled Length"
+msgstr ""
+
+#: ../bin/dcar.c:2354 ../bin/dcar.c:4564
+msgid "Coupler Length"
+msgstr ""
+
+#: ../bin/dcar.c:2362
+msgid "Purchase Price"
+msgstr "Цена покупки"
+
+#: ../bin/dcar.c:2364 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:266
+msgid "Current Price"
+msgstr "Текущая цена"
+
+#: ../bin/dcar.c:2366 ../bin/dcar.c:4696 ../bin/dcar.c:4702
+msgid "Condition"
+msgstr "Состояние"
+
+#: ../bin/dcar.c:2368
+msgid "Purchase Date"
+msgstr "Дата покупки"
+
+#: ../bin/dcar.c:2370 ../bin/dcar.c:4702
+msgid "Service Date"
+msgstr "Дата обслуживания"
+
+#: ../bin/dcar.c:2372
+msgid "Quantity"
+msgstr "Количество"
+
+#: ../bin/dcar.c:2374
+msgid "Numbers"
+msgstr ""
+
+#. 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:2383
+msgid "Car Part"
+msgstr ""
+
+#: ../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:2776 ../bin/dcar.c:3143
+msgid "Undecorated"
+msgstr ""
+
+#: ../bin/dcar.c:2849 ../bin/dcar.c:2855 ../bin/paramfilelist.c:458
+msgid "Custom"
+msgstr ""
+
+#: ../bin/dcar.c:3049
+msgid "Undecorated "
+msgstr ""
+
+#: ../bin/dcar.c:3298
+#, c-format
+msgid "New %s Scale Car"
+msgstr ""
+
+#: ../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:3301
+#, c-format
+msgid "Update %s Scale Car"
+msgstr ""
+
+#: ../bin/dcar.c:3302 ../bin/dcar.c:3312 ../bin/dcar.c:3321
+#: ../bin/dcmpnd.c:178
+msgid "Update"
+msgstr "Обновить"
+
+#: ../bin/dcar.c:3307
+#, c-format
+msgid "New %s Scale Car Part"
+msgstr ""
+
+#: ../bin/dcar.c:3310
+#, c-format
+msgid "Update %s Scale Car Part"
+msgstr ""
+
+#: ../bin/dcar.c:3317
+msgid "New Prototype"
+msgstr "Новый тип вагона"
+
+#: ../bin/dcar.c:3320
+msgid "Update Prototype"
+msgstr "Обновить прототип"
+
+#: ../bin/dcar.c:4009
+msgid "Truck Center Offset plus Truck Centers must be less than Car Length"
+msgstr ""
+
+#: ../bin/dcar.c:4070 ../bin/dcar.c:4074
+#, fuzzy
+msgid "Enter a 8 digit numeric date (yyyymmdd)"
+msgstr "Введите 8 цифр даты"
+
+#: ../bin/dcar.c:4077
+msgid "Enter a date between 19000101 and 21991231"
+msgstr "Введите дату между 19000101 и 21991231"
+
+#: ../bin/dcar.c:4083
+msgid "Invalid month"
+msgstr "Неправильный месяц"
+
+#: ../bin/dcar.c:4086
+msgid "Invalid day"
+msgstr "Неправильный день"
+
+#: ../bin/dcar.c:4184
+msgid "Select or Enter a Manufacturer"
+msgstr "Выберите или создайте производителя"
+
+#: ../bin/dcar.c:4188
+#, c-format
+msgid "Item Index %ld duplicated an existing item: updated to new value"
+msgstr ""
+
+#: ../bin/dcar.c:4410
+#, c-format
+msgid "Added %ld new Cars"
+msgstr "Добавлено %ld новых вагонов"
+
+#: ../bin/dcar.c:4412
+msgid "Added new Car"
+msgstr "Добавлен новый вагон"
+
+#: ../bin/dcar.c:4415
+msgid "Updated Car"
+msgstr "Вагон обновлён"
+
+#: ../bin/dcar.c:4418
+msgid " and Part"
+msgstr ""
+
+#: ../bin/dcar.c:4450
+#, c-format
+msgid "%s Part: %s %s %s %s %s %s"
+msgstr ""
+
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
+msgid "Added new"
+msgstr "Добавлен новый"
+
+#: ../bin/dcar.c:4451 ../bin/dcar.c:4473
+msgid "Updated"
+msgstr "Обновлён"
+
+#: ../bin/dcar.c:4472
+#, c-format
+msgid "%s Prototype: %s%s."
+msgstr "%s Тип: %s%s."
+
+#: ../bin/dcar.c:4474
+msgid ". Enter new values or press Close"
+msgstr ". Введите новые значения или нажмите Закрыть"
+
+#: ../bin/dcar.c:4598
+msgid "New Car Part"
+msgstr "Новая запчасть"
+
+#: ../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:4695
+msgid "Rep Marks"
+msgstr ""
+
+#: ../bin/dcar.c:4695
+msgid "Purc Price"
+msgstr "Цена покупки"
+
+#: ../bin/dcar.c:4696 ../bin/dcar.c:4702
+msgid "Curr Price"
+msgstr "Текущ. цена"
+
+#: ../bin/dcar.c:4696
+msgid "Purc Date"
+msgstr "Дата покупки"
+
+#: ../bin/dcar.c:4696
+msgid "Srvc Date"
+msgstr "Дата обсл."
+
+#: ../bin/dcar.c:4697
+msgid "Locat'n"
+msgstr "Место"
+
+#: ../bin/dcar.c:4701
+msgid "RepMarks"
+msgstr "Метки"
+
+#: ../bin/dcar.c:4701
+msgid "Purch Price"
+msgstr "Цена покупки"
+
+#: ../bin/dcar.c:4702
+msgid "Purch Date"
+msgstr "Дата покупки"
+
+#: ../bin/dcar.c:4720
+msgid "Sort By"
+msgstr "Сортировка"
+
+#: ../bin/dcar.c:4728 ../bin/dcustmgm.c:58 ../bin/dcustmgm.c:98
+#: ../bin/dcontmgm.c:88
+msgid "Edit"
+msgstr "Правка"
+
+#: ../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:4736 ../bin/fileio.c:1631
+msgid "Export"
+msgstr "Экспорт"
+
+#: ../bin/dcar.c:4738 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:676
+msgid "List"
+msgstr "Список"
+
+#: ../bin/dcar.c:4894 ../bin/dcar.c:5686 ../bin/menu.c:1416
+msgid "Car Inventory"
+msgstr "Депо"
+
+#: ../bin/dcar.c:5026
+msgid "List Cars"
+msgstr "Список машин"
+
+#: ../bin/dcar.c:5150 ../bin/dcar.c:5322
+msgid "Import Cars"
+msgstr "Импортировать машины"
+
+#: ../bin/dcar.c:5323 ../bin/dcar.c:5453
+#, fuzzy
+msgid "Comma-Separated-Values (*.csv)|*.csv"
+msgstr "Значения, разделённые запятой|*.csv"
+
+#: ../bin/dcar.c:5395 ../bin/dcar.c:5452
+msgid "Export Cars"
+msgstr "Экспорт машин"
+
+#: ../bin/dcar.c:5494
+msgid "Shelf"
+msgstr "Полка"
+
+#: ../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:111
+msgid "Updating definitions, please wait"
+msgstr "Обновление определений, пожалуйста ждите"
+
+#: ../bin/dcmpnd.c:178
+msgid "Update Title"
+msgstr "Обновить заголовок"
+
+#: ../bin/dcmpnd.c:244
+#, c-format
+msgid "End-Point #%d of the selected and actual turnouts are not close"
+msgstr ""
+
+#: ../bin/dcmpnd.c:255
+#, c-format
+msgid "End-Point #%d of the selected and actual turnouts are not aligned"
+msgstr ""
+
+#: ../bin/dcmpnd.c:274
+msgid "The selected Turnout had a differing number of End-Points"
+msgstr ""
+
+#: ../bin/dcmpnd.c:341
+msgid "Skip"
+msgstr "Пропустить"
+
+#: ../bin/dcmpnd.c:374
+#, c-format
+msgid "%d Track(s) refreshed"
+msgstr "%d трек(ов) обновлено"
+
+#: ../bin/dcmpnd.c:419
+msgid "Refresh Turnout/Structure"
+msgstr "Обновить Стрелку/Структуру"
+
+#: ../bin/dcmpnd.c:423
+msgid "Choose a Turnout/Structure to replace:"
+msgstr "Выберите Стрелку/Структуру для замены:"
+
+#. 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:436
+msgid "Structures"
+msgstr "Структуры"
+
+#: ../bin/dcmpnd.c:467
+msgid "Choose another Turnout/Structure to replace:"
+msgstr "Выберите другую Стрелку/Структуру для замены:"
+
+#: ../bin/dcmpnd.c:582
+msgid "Rename Object"
+msgstr "Переименовать объект"
+
+#: ../bin/dcustmgm.c:54
+#, fuzzy
+msgid "Create a new "
+msgstr "Создать полилинию"
+
+#: ../bin/dcustmgm.c:56
+#, fuzzy
+msgid "Go"
+msgstr "Хорошее"
+
+#: ../bin/dcustmgm.c:62
+msgid "Move To"
+msgstr "Переместить"
+
+#: ../bin/dcustmgm.c:98
+msgid "Rename"
+msgstr "Переименовать"
+
+#: ../bin/dcustmgm.c:186
+msgid "Label"
+msgstr "Метка"
+
+#: ../bin/dcustmgm.c:225
+msgid "Contents Label"
+msgstr "Содержимое метки"
+
+#: ../bin/dcustmgm.c:284
+msgid "Move To XTP"
+msgstr "Переместить в XTP"
+
+#: ../bin/dcustmgm.c:285
+#, fuzzy
+msgid "Parameter File (*.xtp)|*.xtp"
+msgstr "Файл параметров|*.xtp"
+
+#: ../bin/dcustmgm.c:407
+msgid "Manage custom designed parts"
+msgstr "Управление элементами нестандартного дизайна"
+
+#: ../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:68
+msgid "Broad"
+msgstr "Широкие"
+
+#: ../bin/dease.c:68
+msgid "Cornu"
+msgstr "Отриц."
+
+#: ../bin/dease.c:76
+msgid "Value"
+msgstr "Значение"
+
+#: ../bin/dease.c:77 ../bin/tease.c:530
+msgid "R"
+msgstr "Рад."
+
+#: ../bin/dease.c:79 ../bin/tease.c:531
+msgid "L"
+msgstr "Дл."
+
+#: ../bin/dease.c:250
+msgid "Easement"
+msgstr "Упрощения"
+
+#: ../bin/denum.c:44
+msgid "Prices"
+msgstr "Цены"
+
+#: ../bin/denum.c:45 ../bin/denum.c:139
+#, fuzzy
+msgid "Indexes"
+msgstr "№"
+
+#: ../bin/denum.c:50
+msgid "Save As ..."
+msgstr "Сохранить как ..."
+
+#: ../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 "Список компонентов"
+
+#: ../bin/denum.c:160
+#, c-format
+msgid ""
+"%s Parts List\n"
+"\n"
+msgstr ""
+"%s Список компонентов\n"
+"\n"
+
+#: ../bin/denum.c:199 ../bin/denum.c:238 ../bin/denum.c:248
+msgid "Extended"
+msgstr "Сумма"
+
+#: ../bin/denum.c:247 ../bin/denum.c:251
+msgid "Total"
+msgstr "Итого"
+
+#: ../bin/dlayer.c:541
+#, fuzzy
+msgid "Select Layer:"
+msgstr "Сохранить текущий слой"
+
+#: ../bin/dlayer.c:547
+#, fuzzy
+msgid "Use Color"
+msgstr "%s Цвет"
+
+#: ../bin/dlayer.c:549
+msgid "Visible"
+msgstr "Показывать"
+
+#: ../bin/dlayer.c:551
+msgid "Frozen"
+msgstr "Заморожен"
+
+#: ../bin/dlayer.c:553
+msgid "On Map"
+msgstr "На карте"
+
+#: ../bin/dlayer.c:555
+#, fuzzy
+msgid "Module"
+msgstr "Режим"
+
+#: ../bin/dlayer.c:557
+#, fuzzy
+msgid "No Button"
+msgstr "Отмена / повтор"
+
+#: ../bin/dlayer.c:559
+#, fuzzy
+msgid "Inherit"
+msgstr "Инвертировано"
+
+#: ../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:582
+msgid "Number of Layer Buttons"
+msgstr "Кол-во кнопок слоёв"
+
+#: ../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: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:2071
+msgid "Layers"
+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:92
+msgid "Auto Pan"
+msgstr "Автомасштаб"
+
+#: ../bin/doption.c:94
+msgid "All"
+msgstr "Все"
+
+#: ../bin/doption.c:95
+msgid "Thick"
+msgstr "Толстые"
+
+#: ../bin/doption.c:95
+msgid "Exception"
+msgstr "Выделенные"
+
+#: ../bin/doption.c:96
+msgid "Outline"
+msgstr "Контур"
+
+#: ../bin/doption.c:97
+msgid "Off"
+msgstr "Нет"
+
+#: ../bin/doption.c:97
+msgid "On"
+msgstr "Да"
+
+#: ../bin/doption.c:98
+msgid "Track Descriptions"
+msgstr "Описание трека"
+
+#: ../bin/doption.c:98
+msgid "Lengths"
+msgstr "Длины"
+
+#: ../bin/doption.c:98
+msgid "EndPt Elevations"
+msgstr "Крайние точки"
+
+#: ../bin/doption.c:98
+msgid "Track Elevations"
+msgstr "Высоты трека"
+
+#: ../bin/doption.c:98
+msgid "Cars"
+msgstr "Вагоны"
+
+#: ../bin/doption.c:99 ../bin/doption.c:100
+msgid "Descr"
+msgstr "Опис."
+
+#: ../bin/doption.c:100
+msgid "Manuf"
+msgstr "Произв."
+
+#: ../bin/doption.c:101 ../bin/doption.c:102
+#, fuzzy
+msgid "Object"
+msgstr "Переименовать объект"
+
+#: ../bin/doption.c:103
+msgid "Live Map"
+msgstr "Миникарта"
+
+#: ../bin/doption.c:104
+msgid "Hide Trains On Hidden Track"
+msgstr "Не показывать поезда на скрытых треках"
+
+#: ../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 "Кривой трек"
+
+#: ../bin/doption.c:111
+#, fuzzy
+msgid "Color Draw"
+msgstr "Цвет"
+
+#: ../bin/doption.c:112
+msgid "Draw Tunnel"
+msgstr "Отображение тоннеля"
+
+#: ../bin/doption.c:113
+msgid "Draw EndPts"
+msgstr "Рисовать концы"
+
+#: ../bin/doption.c:114
+msgid "Draw Unconnected EndPts"
+msgstr "Несоединённые концы"
+
+#: ../bin/doption.c:115
+msgid "Draw Ties"
+msgstr "Рисовать шпалы"
+
+#: ../bin/doption.c:116
+msgid "Draw Centers"
+msgstr "Рисовать центры"
+
+#: ../bin/doption.c:117
+msgid "Two Rail Scale"
+msgstr "Масштаб двухколейки"
+
+#: ../bin/doption.c:118
+msgid "Map Scale"
+msgstr "Масштаб карты"
+
+#: ../bin/doption.c:124
+msgid "Label Enable"
+msgstr "Подписи"
+
+#: ../bin/doption.c:125
+msgid "Label Scale"
+msgstr "Масштаб надписей"
+
+#: ../bin/doption.c:126
+msgid "Label Font Size"
+msgstr "Размер шрифта"
+
+#: ../bin/doption.c:127
+msgid "Hot Bar Labels"
+msgstr "Панель быстрых команд"
+
+#: ../bin/doption.c:128
+msgid "Layout Labels"
+msgstr "Слой"
+
+#: ../bin/doption.c:129
+msgid "List Labels"
+msgstr "Списки"
+
+#: ../bin/doption.c:132
+msgid "Car Labels"
+msgstr "Надписи машин"
+
+#: ../bin/doption.c:133
+msgid "Train Update Delay"
+msgstr "Интервал обновления поезда"
+
+#: ../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:203
+msgid "Proto"
+msgstr ""
+
+#: ../bin/doption.c:205
+msgid "Proto/Manuf"
+msgstr "Proto/Производитель"
+
+#: ../bin/doption.c:208
+msgid "Proto/Manuf/Part Number"
+msgstr "Proto/Производитель/Артикул"
+
+#: ../bin/doption.c:210
+msgid "Proto/Manuf/Partno/Item"
+msgstr "Proto/Производитель/Артикул/Item"
+
+#: ../bin/doption.c:211
+msgid "Manuf/Proto"
+msgstr "Производитель/Proto"
+
+#: ../bin/doption.c:214
+msgid "Manuf/Proto/Part Number"
+msgstr "Производитель/Proto/Артикул"
+
+#: ../bin/doption.c:216
+msgid "Manuf/Proto/Partno/Item"
+msgstr "Производитель/Proto/Артикул/Item"
+
+#: ../bin/doption.c:246
+msgid "Single item selected, +Ctrl Add to selection"
+msgstr ""
+
+#: ../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 "Убрать выделение со всех объектов"
+
+#: ../bin/doption.c:252
+msgid "Normal: Command List, Shift: Command Options"
+msgstr ""
+
+#: ../bin/doption.c:252
+msgid "Normal: Command Options, Shift: Command List"
+msgstr ""
+
+#: ../bin/doption.c:255
+msgid "Default Command"
+msgstr "Команда по-умолчанию"
+
+#: ../bin/doption.c:257
+msgid "Hide Selection Window"
+msgstr "Спрятать выбранное окно"
+
+#: ../bin/doption.c:259
+msgid "Right Click"
+msgstr "Правый клик"
+
+#: ../bin/doption.c:260
+#, fuzzy
+msgid "Select Mode"
+msgstr "Выбрать объекты"
+
+#: ../bin/doption.c:286
+msgid "Command Options"
+msgstr "Опции команд"
+
+#: ../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:311
+msgid "Metric"
+msgstr "Метрическая"
+
+#: ../bin/doption.c:312
+msgid "Polar"
+msgstr "Полярная"
+
+#: ../bin/doption.c:312
+msgid "Cartesian"
+msgstr "Прямоугольная"
+
+#: ../bin/doption.c:313
+msgid "Balloon Help"
+msgstr "Всплывающая подсказка"
+
+#: ../bin/doption.c:314
+msgid "Show FlexTrack in HotBar"
+msgstr ""
+
+#: ../bin/doption.c:315
+msgid "Load Last Layout"
+msgstr "загрузить последний проект"
+
+#: ../bin/doption.c:315
+msgid "Start New Layout"
+msgstr "загрузить новый проект"
+
+#: ../bin/doption.c:318
+#, fuzzy
+msgid "Icon Size"
+msgstr "Размер шрифта"
+
+#: ../bin/doption.c:319
+msgid "Angles"
+msgstr "Углы"
+
+#: ../bin/doption.c:321
+msgid "Units"
+msgstr "Система мер"
+
+#: ../bin/doption.c:323
+msgid "Length Format"
+msgstr "Формат длины"
+
+#: ../bin/doption.c:324
+msgid "Min Track Length"
+msgstr "Минимальная длина трека"
+
+#: ../bin/doption.c:325
+msgid "Connection Distance"
+msgstr "Длина соединения"
+
+#: ../bin/doption.c:326
+msgid "Connection Angle"
+msgstr "Угол соединения"
+
+#: ../bin/doption.c:327
+msgid "Turntable Angle"
+msgstr "Угол разворота"
+
+#: ../bin/doption.c:328
+msgid "Max Coupling Speed"
+msgstr "Максимальная скорость сцепления"
+
+#: ../bin/doption.c:331
+msgid "Drag Distance"
+msgstr "Длина перетаскивания"
+
+#: ../bin/doption.c:332
+msgid "Drag Timeout"
+msgstr "Время перетаскивания"
+
+#: ../bin/doption.c:333
+msgid "Min Grid Spacing"
+msgstr "Минимальное расстояние сетки"
+
+#: ../bin/doption.c:335
+#, fuzzy
+msgid "Check Point Frequency"
+msgstr "Контрольная точка"
+
+#: ../bin/doption.c:337
+msgid "Autosave Checkpoint Frequency"
+msgstr ""
+
+#: ../bin/doption.c:338
+msgid "On Program Startup"
+msgstr "При старте программы"
+
+#: ../bin/doption.c:348 ../bin/doption.c:352 ../bin/doption.c:370
+msgid "999.999"
+msgstr "999.999"
+
+#: ../bin/doption.c:349
+msgid "999.999999"
+msgstr "999.999999"
+
+#: ../bin/doption.c:350
+msgid "999.99999"
+msgstr "999.99999"
+
+#: ../bin/doption.c:351
+msgid "999.9999"
+msgstr "999.9999"
+
+#: ../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 "999ф 11.999д"
+
+#: ../bin/doption.c:363
+msgid "999ft 11.99in"
+msgstr "999ф 11.99д"
+
+#: ../bin/doption.c:364
+msgid "999ft 11.9in"
+msgstr "999ф 11.9д"
+
+#: ../bin/doption.c:365
+msgid "999ft 11 7/8in"
+msgstr "999ф 11 7/8д"
+
+#: ../bin/doption.c:366
+msgid "999ft 11 63/64in"
+msgstr "999ф 11 63/64д"
+
+#: ../bin/doption.c:373
+msgid "999.999mm"
+msgstr "999.999мм"
+
+#: ../bin/doption.c:374
+msgid "999.99mm"
+msgstr "999.99мм"
+
+#: ../bin/doption.c:375
+msgid "999.9mm"
+msgstr "999.9мм"
+
+#: ../bin/doption.c:376
+msgid "999.999cm"
+msgstr "999.999см"
+
+#: ../bin/doption.c:377
+msgid "999.99cm"
+msgstr "999.99см"
+
+#: ../bin/doption.c:378
+msgid "999.9cm"
+msgstr "999.9см"
+
+#: ../bin/doption.c:379
+msgid "999.999m"
+msgstr "999.999м"
+
+#: ../bin/doption.c:380
+msgid "999.99m"
+msgstr "999.99м"
+
+#: ../bin/doption.c:381
+msgid "999.9m"
+msgstr "999.9м"
+
+#: ../bin/doption.c:516
+msgid "Preferences"
+msgstr "Настройки предпочтений"
+
+#: ../bin/doption.c:560
+msgid "Marker"
+msgstr "Маркер"
+
+#: ../bin/doption.c:561
+msgid "Border"
+msgstr "Граница"
+
+#: ../bin/doption.c:562
+msgid "Primary Axis"
+msgstr "Главные оси"
+
+#: ../bin/doption.c:563
+msgid "Secondary Axis"
+msgstr "Дополнительные оси"
+
+#: ../bin/doption.c:564
+msgid "Normal Track"
+msgstr "Трек"
+
+#: ../bin/doption.c:565
+msgid "Selected Track"
+msgstr "Выбранный трек"
+
+#: ../bin/doption.c:566
+msgid "Profile Path"
+msgstr ""
+
+#: ../bin/doption.c:567
+msgid "Exception Track"
+msgstr ""
+
+#: ../bin/doption.c:568
+msgid "Track Ties"
+msgstr "Шпалы"
+
+#: ../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:56
+msgid "Flex Track"
+msgstr "Изогнутый трек"
+
+#: ../bin/dpricels.c:57
+msgid "costs"
+msgstr "стоит"
+
+#: ../bin/dpricels.c:166
+msgid "Price List"
+msgstr "Прайслист"
+
+#: ../bin/dprmfile.c:66 ../bin/paramfilesearch_ui.c:50
+msgid "Show File Names"
+msgstr "Показывать имена файлов"
+
+#: ../bin/dprmfile.c:75 ../bin/paramfilesearch_ui.c:77
+msgid "Select all"
+msgstr "Выбрать всё"
+
+#: ../bin/dprmfile.c:77
+msgid "Favorite"
+msgstr ""
+
+#: ../bin/dprmfile.c:80
+#, fuzzy
+msgid "Library..."
+msgstr "Слои ..."
+
+#: ../bin/dprmfile.c:81
+#, fuzzy
+msgid "Browse..."
+msgstr "Выбрать ..."
+
+#: ../bin/dprmfile.c:328
+#, fuzzy, c-format
+msgid "%d parameter files reloaded."
+msgstr "Чтение файлов с параметрами"
+
+#: ../bin/dprmfile.c:330
+#, fuzzy
+msgid "One parameter file reloaded."
+msgstr "Чтение файлов с параметрами"
+
+#: ../bin/dprmfile.c:431
+msgid "Parameter Files"
+msgstr "Файлы параметров"
+
+#: ../bin/dprmfile.c:434
+msgid "Load Parameters"
+msgstr "Загрузить параметры"
+
+#: ../bin/dprmfile.c:434
+#, fuzzy
+msgid "Parameter files (*.xtp)|*.xtp"
+msgstr "Файлы параметров|*.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
+#, c-format
+msgid "Zoom In Program Value %ld:1, Shift+PageDwn to use"
+msgstr ""
+
+#: ../bin/draw.c:2450
+msgid "At Maximum Zoom Out"
+msgstr ""
+
+#: ../bin/draw.c:2457
+msgid "Preset Zoom Out Value selected. Shift+Ctrl+PageUp to reset value"
+msgstr ""
+
+#: ../bin/draw.c:2461
+#, c-format
+msgid "Zoom Out Program Value %ld:1 set, Shift+PageUp to use"
+msgstr ""
+
+#: ../bin/draw.c:3281
+msgid "Map"
+msgstr "Миникарта"
+
+#: ../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
+msgid "Pan Mode - drag point to new position"
+msgstr "Режим просмотра - перемещайте мышкой проект"
+
+#: ../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
+msgid "Pan/Zoom"
+msgstr "Перемещение/Увеличение"
+
+#: ../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 "Создать линии"
+
+#: ../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 "Тащите, чтобы установить радиус"
+
+#: ../bin/drawgeom.c:501
+msgid "Drag set box size"
+msgstr ""
+
+#: ../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 "Длина = %s, Угол = %0.2f"
+
+#: ../bin/drawgeom.c:713
+#, c-format
+msgid "Straight Line: Length=%s Angle=%0.3f"
+msgstr "Прямая линия: Длина=%s Угол=%0.3f"
+
+#: ../bin/drawgeom.c:735
+#, c-format
+msgid "Curved Line: Radius=%s Angle=%0.3f Length=%s"
+msgstr "Кривая линия: Радиус=%s Угол=%0.3f Длина=%s"
+
+#: ../bin/drawgeom.c:761 ../bin/drawgeom.c:769
+#, c-format
+msgid "Radius = %s"
+msgstr "Радиус = %s"
+
+#: ../bin/drawgeom.c:780
+#, c-format
+msgid "Width = %s, Height = %s"
+msgstr "Ширина = %s, Высота = %s"
+
+#: ../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:1567
+#, fuzzy, c-format
+msgid "Length = %s, Last angle = %0.2f"
+msgstr "Длина = %s, Угол = %0.2f"
+
+#: ../bin/drawgeom.c:1736
+#, fuzzy
+msgid "Point Deleted"
+msgstr "Выбор шрифта"
+
+#: ../bin/drawgeom.c:2194
+msgid "Not close to end of line"
+msgstr ""
+
+#: ../bin/drawgeom.c:2252
+msgid "Not close to ends or middle of mine, reselect"
+msgstr ""
+
+#: ../bin/drawgeom.c:2303 ../bin/drawgeom.c:2550
+msgid "Drag to Move Corner Point"
+msgstr ""
+
+#: ../bin/drawgeom.c:2311
+msgid "Drag to Move Edge "
+msgstr ""
+
+#: ../bin/drawgeom.c:2383
+#, c-format
+msgid "Length = %0.3f Angle = %0.3f"
+msgstr ""
+
+#: ../bin/drawgeom.c:2544
+msgid "Drag to Move Edge"
+msgstr ""
+
+#: ../bin/dxfoutput.c:244
+msgid "Export to DXF"
+msgstr "Экспортировать в DXF"
+
+#: ../bin/fileio.c:223
+msgid ""
+"\n"
+"Do you want to continue?"
+msgstr ""
+"\n"
+"Вы хотите продолжить?"
+
+#: ../bin/fileio.c:595
+#, c-format
+msgid "putTitle: title too long: %s"
+msgstr ""
+
+#: ../bin/fileio.c:627
+msgid "Unnamed Trackplan"
+msgstr "Безымянный проект"
+
+#: ../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 "Трек"
+
+#: ../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:1297
+msgid "Save Tracks As"
+msgstr ""
+
+#: ../bin/fileio.c:1309
+msgid "Open Tracks"
+msgstr "Открыть треки"
+
+#: ../bin/fileio.c:1323
+#, fuzzy
+msgid "Example Tracks"
+msgstr "Простые трек"
+
+#: ../bin/fileio.c:1400
+#, fuzzy
+msgid "File AutoSaved"
+msgstr "Файлы"
+
+#: ../bin/fileio.c:1575
+#, fuzzy, c-format
+msgid "Module - %s"
+msgstr "Подъем = %s"
+
+#: ../bin/fileio.c:1580 ../bin/fileio.c:1601
+msgid "Import Tracks"
+msgstr "Импортировать треки"
+
+#: ../bin/fileio.c:1601
+#, fuzzy
+msgid "Import Module"
+msgstr "Импорт"
+
+#: ../bin/fileio.c:1659
+msgid "Export Tracks"
+msgstr "Экспортировать треки"
+
+#: ../bin/fileio.c:1680
+msgid "Clipboard"
+msgstr "Буфер обмена"
+
+#: ../bin/filenoteui.c:60 ../bin/linknoteui.c:48 ../bin/textnoteui.c:41
+#, fuzzy
+msgid "Position X"
+msgstr "Позиция"
+
+#: ../bin/filenoteui.c:62 ../bin/linknoteui.c:50 ../bin/textnoteui.c:43
+#, fuzzy
+msgid "Position Y"
+msgstr "Позиция"
+
+#: ../bin/filenoteui.c:66 ../bin/linknoteui.c:54
+#, fuzzy
+msgid "Title"
+msgstr "Подзаголовок"
+
+#: ../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:70
+#, fuzzy
+msgid "Select..."
+msgstr "Выбрать"
+
+#: ../bin/filenoteui.c:72 ../bin/linknoteui.c:58
+#, fuzzy
+msgid "Open..."
+msgstr "&Открыть ..."
+
+#: ../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): Слой=%d %s"
+
+#: ../bin/filenoteui.c:318
+#, fuzzy
+msgid "Update Document"
+msgstr "Обновлён"
+
+#: ../bin/filenoteui.c:330
+#, fuzzy
+msgid "Describe the file"
+msgstr "Подпись и выбор"
+
+#: ../bin/filenoteui.c:338
+#, fuzzy
+msgid "Attach Document"
+msgstr "Кол-во"
+
+#: ../bin/i18n.c:57
+#, c-format
+msgid "Gettext initialized (PACKAGE=%s, LOCALEDIR=%s, LC_ALL=%s).\n"
+msgstr ""
+
+#: ../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 "Ширина комнаты"
+
+#: ../bin/layout.c:658
+msgid " Height"
+msgstr " Высота"
+
+#: ../bin/layout.c:659
+msgid "Layout Title"
+msgstr "Заголовок"
+
+#: ../bin/layout.c:660
+msgid "Subtitle"
+msgstr "Подзаголовок"
+
+#: ../bin/layout.c:669
+msgid "Background File Path"
+msgstr ""
+
+#: ../bin/layout.c:670
+msgid "Browse ..."
+msgstr "Выбрать ..."
+
+#: ../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
+#, fuzzy
+msgid "Background Angle"
+msgstr "Конечный угол"
+
+#: ../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/layout.c:1052
+msgid "Read Settings"
+msgstr ""
+
+#: ../bin/layout.c:1053 ../bin/layout.c:1087
+#, fuzzy
+msgid "Settings File (*.xset)|*.xset"
+msgstr "Файл параметров|*.xtp"
+
+#: ../bin/layout.c:1086
+#, fuzzy
+msgid "Write Settings"
+msgstr "Прямое выделение"
+
+#: ../bin/linknoteui.c:56
+msgid "URL"
+msgstr ""
+
+#: ../bin/linknoteui.c:230
+#, fuzzy
+msgid "Update Webink"
+msgstr "Обновить"
+
+#: ../bin/linknoteui.c:248
+#, fuzzy
+msgid "Create Weblink"
+msgstr "Создать блок"
+
+#: ../bin/macro.c:67
+msgid "Message"
+msgstr "Сообщение"
+
+#: ../bin/macro.c:166
+msgid "Recording"
+msgstr "Запись"
+
+#: ../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:271
+msgid "Record"
+msgstr "Запись"
+
+#: ../bin/macro.c:686
+msgid "Step"
+msgstr "Шаг"
+
+#: ../bin/macro.c:689 ../bin/macro.c:1560
+msgid "Next"
+msgstr "Дальше"
+
+#: ../bin/macro.c:692 ../bin/misc.c:696 ../bin/track.c:1104
+msgid "Quit"
+msgstr "Выход"
+
+#: ../bin/macro.c:695 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:631
+msgid "Speed"
+msgstr "Скорость"
+
+#: ../bin/macro.c:855 ../bin/track.c:1344
+msgid "Regression"
+msgstr ""
+
+#: ../bin/macro.c:1010 ../bin/macro.c:1410
+msgid "Demo"
+msgstr "Демонстрация"
+
+#: ../bin/macro.c:1219
+#, c-format
+msgid "Elapsed time %lu\n"
+msgstr "Осталось времени %lu\n"
+
+#: ../bin/macro.c:1329
+msgid "Playback"
+msgstr "Воспроизведение"
+
+#: ../bin/macro.c:1414
+msgid "Slowest"
+msgstr "Очень медленно"
+
+#: ../bin/macro.c:1415
+msgid "Slow"
+msgstr "Медленно"
+
+#: ../bin/macro.c:1417
+msgid "Fast"
+msgstr "Быстро"
+
+#: ../bin/macro.c:1418
+msgid "Faster"
+msgstr "Быстрее"
+
+#: ../bin/macro.c:1419
+msgid "Fastest"
+msgstr "Очень быстро"
+
+#: ../bin/macro.c:1542
+msgid "Can not find PARAMETER playback proc"
+msgstr "Невозможно найти PARAMETER в проигрыше"
+
+#: ../bin/menu.c:130
+msgid "File Buttons"
+msgstr "Файлы"
+
+#: ../bin/menu.c:130
+#, fuzzy
+msgid "Print Buttons"
+msgstr "Отмена / повтор"
+
+#: ../bin/menu.c:130
+#, fuzzy
+msgid "Import/Export Buttons"
+msgstr "Масштаб"
+
+#: ../bin/menu.c:131
+msgid "Zoom Buttons"
+msgstr "Масштаб"
+
+#: ../bin/menu.c:131
+msgid "Undo Buttons"
+msgstr "Отмена / повтор"
+
+#: ../bin/menu.c:131
+msgid "Easement Button"
+msgstr "Упрощения"
+
+#: ../bin/menu.c:131
+msgid "SnapGrid Buttons"
+msgstr "Сетка"
+
+#: ../bin/menu.c:132
+msgid "Create Track Buttons"
+msgstr "Создание треков"
+
+#: ../bin/menu.c:132
+msgid "Layout Control Elements"
+msgstr "Элементы управления проекта"
+
+#: ../bin/menu.c:133
+msgid "Modify Track Buttons"
+msgstr "Изменение треков"
+
+#: ../bin/menu.c:133
+msgid "Properties/Select"
+msgstr "Свойства/Выбор"
+
+#: ../bin/menu.c:134
+msgid "Track Group Buttons"
+msgstr "Треки"
+
+#: ../bin/menu.c:134
+msgid "Train Group Buttons"
+msgstr "Поезда"
+
+#: ../bin/menu.c:135
+msgid "Create Misc Buttons"
+msgstr "Различные кнопоки"
+
+#: ../bin/menu.c:135
+msgid "Ruler Button"
+msgstr "Линейка"
+
+#: ../bin/menu.c:136
+msgid "Layer Buttons"
+msgstr "Управление слоями"
+
+#: ../bin/menu.c:136
+msgid "Hot Bar"
+msgstr "Горячие клавиши"
+
+#: ../bin/menu.c:225 ../../../../build/v_5_3_0_beta1/app/help/bllnhlp.c:82
+msgid "Change Elevations"
+msgstr "Изменить высоты"
+
+#: ../bin/menu.c:250
+msgid "Angle:"
+msgstr "Угол:"
+
+#: ../bin/menu.c:255
+#, fuzzy
+msgid "Indexes:"
+msgstr "№"
+
+#: ../bin/menu.c:262
+msgid "Move X:"
+msgstr "Двигать X:"
+
+#: ../bin/menu.c:263
+msgid "Move Y:"
+msgstr "Двигать Y:"
+
+#: ../bin/menu.c:282
+#, fuzzy
+msgid "Select Index"
+msgstr "Выбрать объекты"
+
+#: ../bin/menu.c:330
+msgid "Enter Move ..."
+msgstr ""
+
+#: ../bin/menu.c:336
+#, fuzzy
+msgid "Select Track Index ..."
+msgstr "Выбранный трек"
+
+#: ../bin/menu.c:343
+msgid "180 "
+msgstr "180 "
+
+#: ../bin/menu.c:344
+msgid "90 CW"
+msgstr "90 ЧС"
+
+#: ../bin/menu.c:345
+msgid "45 CW"
+msgstr "45 ЧС"
+
+#: ../bin/menu.c:346
+msgid "30 CW"
+msgstr "30 ЧС"
+
+#: ../bin/menu.c:347
+msgid "15 CW"
+msgstr "15 ПЧС"
+
+#: ../bin/menu.c:348
+msgid "15 CCW"
+msgstr "15 ПЧС"
+
+#: ../bin/menu.c:349
+msgid "30 CCW"
+msgstr "30 ПЧС"
+
+#: ../bin/menu.c:350
+msgid "45 CCW"
+msgstr "45 ПЧС"
+
+#: ../bin/menu.c:351
+msgid "90 CCW"
+msgstr "90 ПЧС"
+
+#: ../bin/menu.c:352
+msgid "Enter Angle ..."
+msgstr "Введите угол ..."
+
+#: ../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/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/menu.c:885
+msgid "&Edit"
+msgstr "&Правка"
+
+#: ../bin/menu.c:886
+msgid "&View"
+msgstr "&Вид"
+
+#: ../bin/menu.c:887
+msgid "&Add"
+msgstr "&Добавить"
+
+#: ../bin/menu.c:888
+msgid "&Change"
+msgstr "&Изменить"
+
+#: ../bin/menu.c:889
+msgid "&Draw"
+msgstr "&Рисовать"
+
+#: ../bin/menu.c:890
+msgid "&Manage"
+msgstr "&Управление"
+
+#: ../bin/menu.c:891
+msgid "&Options"
+msgstr "&Настройки"
+
+#: ../bin/menu.c:892
+msgid "&Macro"
+msgstr "&Макросы"
+
+#: ../bin/menu.c:893
+msgid "&Window"
+msgstr "&Окна"
+
+#: ../bin/menu.c:894
+msgid "&Help"
+msgstr "&Справка"
+
+#: ../bin/menu.c:930
+#, fuzzy
+msgid "Context Commands"
+msgstr "Остальные команды"
+
+#: ../bin/menu.c:931
+msgid "Shift Context Commands"
+msgstr ""
+
+#: ../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/menu.c:952
+msgid "SnapGrid Show"
+msgstr "Показывать сетку"
+
+#: ../bin/menu.c:955
+#, fuzzy
+msgid " Enable Magnetic Snap"
+msgstr "Прилипать к сетке"
+
+#: ../bin/menu.c:957 ../bin/menu.c:1207
+msgid "Show/Hide Map"
+msgstr "Показать/Спрятать миникарту"
+
+#: ../bin/menu.c:981 ../bin/menu.c:983
+#, fuzzy
+msgid "Select Track Index..."
+msgstr "Выбранный трек"
+
+#: ../bin/menu.c:995 ../bin/menu.c:996
+#, fuzzy
+msgid "Add..."
+msgstr "Добавить"
+
+#: ../bin/menu.c:999 ../bin/menu.c:1000
+#, fuzzy
+msgid "More..."
+msgstr "Больше"
+
+#: ../bin/menu.c:1005
+msgid "&New ..."
+msgstr "&Новый ..."
+
+#: ../bin/menu.c:1007
+msgid "&Open ..."
+msgstr "&Открыть ..."
+
+#: ../bin/menu.c:1011 ../bin/misc.c:660
+msgid "&Save"
+msgstr "&Сохранить"
+
+#: ../bin/menu.c:1013
+msgid "Save &As ..."
+msgstr "&Сохранить как..."
+
+#: ../bin/menu.c:1015
+msgid "Revert"
+msgstr "Очистить изменения"
+
+#: ../bin/menu.c:1028
+msgid "P&rint Setup ..."
+msgstr "&Настройки печати ..."
+
+#: ../bin/menu.c:1036
+msgid "&Import"
+msgstr "&Импорт"
+
+#: ../bin/menu.c:1038
+#, fuzzy
+msgid "Import &Module"
+msgstr "Импорт"
+
+#: ../bin/menu.c:1041
+msgid "Export to &Bitmap"
+msgstr "Экспорт в изображение"
+
+#: ../bin/menu.c:1044
+msgid "E&xport"
+msgstr "Экспорт"
+
+#: ../bin/menu.c:1046
+msgid "Export D&XF"
+msgstr "Экспорт DXF"
+
+#: ../bin/menu.c:1050
+#, fuzzy
+msgid "Export S&VG"
+msgstr "Экспорт DXF"
+
+#: ../bin/menu.c:1056
+msgid "Parameter &Files ..."
+msgstr "Настройки файлов ..."
+
+#: ../bin/menu.c:1058
+msgid "No&tes ..."
+msgstr "Заметки ..."
+
+#: ../bin/menu.c:1065
+msgid "E&xit"
+msgstr "В&ыход"
+
+#: ../bin/menu.c:1102
+msgid "&Undo"
+msgstr "&Отменить"
+
+#: ../bin/menu.c:1104
+msgid "R&edo"
+msgstr "Повторить"
+
+#: ../bin/menu.c:1107
+msgid "Cu&t"
+msgstr "Вырезать"
+
+#: ../bin/menu.c:1109
+msgid "&Copy"
+msgstr "&Копировать"
+
+#: ../bin/menu.c:1111
+msgid "&Paste"
+msgstr "&Вставить"
+
+#: ../bin/menu.c:1113
+#, fuzzy
+msgid "C&lone"
+msgstr "Закрыть"
+
+#: ../bin/menu.c:1115
+msgid "De&lete"
+msgstr "Удалить"
+
+#: ../bin/menu.c:1123
+msgid "Select &All"
+msgstr "Выбрать всё"
+
+#: ../bin/menu.c:1127
+#, fuzzy
+msgid "Select By Index"
+msgstr "Выбрать объекты"
+
+#: ../bin/menu.c:1129
+msgid "&Deselect All"
+msgstr "Снять выделение"
+
+#: ../bin/menu.c:1131
+msgid "&Invert Selection"
+msgstr "Инвертировать выделение"
+
+#: ../bin/menu.c:1134
+msgid "Select Stranded Track"
+msgstr "Выбрать проблемные треки"
+
+#: ../bin/menu.c:1136
+msgid "Tu&nnel"
+msgstr "Тоннель"
+
+#: ../bin/menu.c:1138
+#, fuzzy
+msgid "B&ridge"
+msgstr "Мост"
+
+#: ../bin/menu.c:1140
+#, fuzzy
+msgid "&Roadbed"
+msgstr "Дорога"
+
+#: ../bin/menu.c:1144
+msgid "Move to &Front"
+msgstr ""
+
+#: ../bin/menu.c:1146
+#, fuzzy
+msgid "Move to &Back"
+msgstr "Переместить треки"
+
+#: ../bin/menu.c:1161
+msgid "Zoom &In"
+msgstr "&Приблизить"
+
+#: ../bin/menu.c:1164
+msgid "Zoom &Out"
+msgstr "&Отдалить"
+
+#: ../bin/menu.c:1167
+#, fuzzy
+msgid "Zoom &Extents"
+msgstr "&Приблизить"
+
+#: ../bin/menu.c:1178
+msgid "&Redraw"
+msgstr "Перерисовать"
+
+#: ../bin/menu.c:1180
+msgid "Redraw All"
+msgstr "Перерисовать всё"
+
+#: ../bin/menu.c:1187
+msgid "Show SnapGrid"
+msgstr "Показать сетку"
+
+#: ../bin/menu.c:1198
+#, fuzzy
+msgid "Enable Magnetic Snap"
+msgstr "Прилипать к сетке"
+
+#: ../bin/menu.c:1213
+msgid "&Tool Bar"
+msgstr "Панели инструментов"
+
+#: ../bin/menu.c:1247 ../bin/menu.c:1248
+#, fuzzy
+msgid "Control Element"
+msgstr "Элементы управления"
+
+#: ../bin/menu.c:1280
+msgid "Change Scale"
+msgstr "Изменить масштаб"
+
+#: ../bin/menu.c:1296
+msgid "Raise/Lower Elevations"
+msgstr "Увеличить/Уменьшить подъёмы"
+
+#: ../bin/menu.c:1305
+msgid "Recompute Elevations"
+msgstr "Пересчтитать высоты"
+
+#: ../bin/menu.c:1323
+msgid "L&ayout ..."
+msgstr "Слой ..."
+
+#: ../bin/menu.c:1325
+msgid "&Display ..."
+msgstr "Отображение ..."
+
+#: ../bin/menu.c:1327
+msgid "Co&mmand ..."
+msgstr "Команды..."
+
+#: ../bin/menu.c:1329
+msgid "&Easements ..."
+msgstr "Упрощения ..."
+
+#: ../bin/menu.c:1332
+msgid "&Fonts ..."
+msgstr "Шрифты ..."
+
+#: ../bin/menu.c:1334
+msgid "Stic&ky ..."
+msgstr "Липучка ..."
+
+#: ../bin/menu.c:1339
+msgid "&Debug ..."
+msgstr "Отладка ..."
+
+#: ../bin/menu.c:1342
+msgid "&Preferences ..."
+msgstr "Предпочтения ..."
+
+#: ../bin/menu.c:1344
+msgid "&Colors ..."
+msgstr "Цвета ..."
+
+#: ../bin/menu.c:1350
+msgid "&Record ..."
+msgstr "Запись ..."
+
+#: ../bin/menu.c:1352
+msgid "&Play Back ..."
+msgstr "Воспроизведение ..."
+
+#: ../bin/menu.c:1358
+msgid "Main window"
+msgstr "Главное окно"
+
+#: ../bin/menu.c:1372
+msgid "Recent Messages"
+msgstr "Недавние сообщения"
+
+#: ../bin/menu.c:1379
+msgid "Tip of the Day..."
+msgstr "Совет дня..."
+
+#: ../bin/menu.c:1381
+msgid "&Demos"
+msgstr "Обучение"
+
+#: ../bin/menu.c:1382
+#, fuzzy
+msgid "Examples..."
+msgstr "Упрощения ..."
+
+#: ../bin/menu.c:1386 ../bin/smalldlg.c:210
+msgid "About"
+msgstr "О программе"
+
+#: ../bin/menu.c:1399
+msgid "Tur&nout Designer..."
+msgstr "Редактор стрелок..."
+
+#: ../bin/menu.c:1402
+msgid "Layout &Control Elements"
+msgstr "&Элементы управления проекта"
+
+#: ../bin/menu.c:1404
+msgid "&Group"
+msgstr "Группировать"
+
+#: ../bin/menu.c:1406
+msgid "&Ungroup"
+msgstr "Разгруппировать"
+
+#: ../bin/menu.c:1410
+msgid "Custom defined parts..."
+msgstr "Нестандартные элементы..."
+
+#: ../bin/menu.c:1413
+msgid "Update Turnouts and Structures"
+msgstr ""
+
+#: ../bin/menu.c:1422
+msgid "Layers ..."
+msgstr "Слои ..."
+
+#: ../bin/menu.c:1426
+msgid "Parts &List ..."
+msgstr "Список &компонентов ..."
+
+#: ../bin/menu.c:1429
+msgid "Price List..."
+msgstr "Стоимость компонентов..."
+
+#: ../bin/menu.c:1458 ../bin/menu.c:1459
+#, fuzzy
+msgid "Import/Export"
+msgstr "Экспорт"
+
+#: ../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?"
+msgstr ""
+"Программа была завершена некорректно. Вы хотите продолжить работать с "
+"предыдущим проектом?"
+
+#: ../bin/misc.c:992
+msgid "Resume"
+msgstr "Продолжить"
+
+#: ../bin/misc.c:992
+msgid "Resume with New Name"
+msgstr ""
+
+#: ../bin/misc.c:992
+#, fuzzy
+msgid "Ignore Checkpoint"
+msgstr "Контрольная точка"
+
+#: ../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 "Безымянный проект - %s(%s)"
+
+#: ../bin/misc.c:1175
+msgid "Initializing commands"
+msgstr "Инициализация команд"
+
+#: ../bin/misc.c:1184
+msgid "Initializing menus"
+msgstr "Инициализация меню"
+
+#: ../bin/misc.c:1216
+msgid "Reading parameter files"
+msgstr "Чтение файлов с параметрами"
+
+#: ../bin/misc.c:1260
+msgid "Initialization complete"
+msgstr "Инициализация завершена"
+
+#: ../bin/param.c:76
+msgid "Unexpected End Of String"
+msgstr "Неожиданный конец строки"
+
+#: ../bin/param.c:83
+msgid "Expected digit"
+msgstr "Введите цифру"
+
+#: ../bin/param.c:91
+msgid "Overflow"
+msgstr "Переполнение"
+
+#: ../bin/param.c:140
+msgid "Divide by 0"
+msgstr "Деление на 0"
+
+#: ../bin/param.c:148
+msgid "Expected /"
+msgstr "Пропущено /"
+
+#: ../bin/param.c:233
+msgid "Invalid Units Indicator"
+msgstr "Неверный индикатор элементов"
+
+#: ../bin/param.c:261
+msgid "Expected End Of String"
+msgstr "Ожидаемый конец строки"
+
+#: ../bin/param.c:289 ../bin/param.c:1528
+#, c-format
+msgid "Invalid Number"
+msgstr "Неверный номер"
+
+#: ../bin/param.c:349
+msgid "End Of String"
+msgstr "Конец строки"
+
+#: ../bin/param.c:1486
+#, c-format
+msgid "Enter a value > %ld"
+msgstr "Наберите значение > %ld"
+
+#: ../bin/param.c:1489
+#, c-format
+msgid "Enter a value < %ld"
+msgstr "Наберите значение < %ld"
+
+#: ../bin/param.c:1491
+#, c-format
+msgid "Enter a value between %ld and %ld"
+msgstr "Наберите значение между %ld и %ld"
+
+#: ../bin/param.c:1568
+#, c-format
+msgid "Enter a value > %s"
+msgstr "Наберите значение > %s"
+
+#: ../bin/param.c:1572
+#, c-format
+msgid "Enter a value < %s"
+msgstr "Наберите значение < %s"
+
+#: ../bin/param.c:1575
+#, c-format
+msgid "Enter a value between %s and %s"
+msgstr "Наберите значение между %s и %s"
+
+#: ../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:258
+msgid "Parameter"
+msgstr ""
+
+#: ../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 "Обновление %s"
+
+#: ../bin/paramfilesearch_ui.c:52
+#, fuzzy
+msgid "Fit Any"
+msgstr "Первый "
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Compatible"
+msgstr ""
+
+#: ../bin/paramfilesearch_ui.c:52
+msgid "Fit Exact"
+msgstr ""
+
+#: ../bin/paramfilesearch_ui.c:192
+#, fuzzy, c-format
+msgid "%u parameter files in library. %d Fit Scale."
+msgstr "Чтение файлов с параметрами"
+
+#: ../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:477
+#, fuzzy
+msgid "Choose parameter files"
+msgstr "Чтение файлов с параметрами"
+
+#: ../bin/paramfilesearch_ui.c:495
+msgid "No system parameter files found, search is disabled."
+msgstr ""
+
+#: ../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:51
+msgid "Did you know..."
+msgstr "Знаете ли вы..."
+
+#: ../bin/smalldlg.c:53
+msgid "Previous Tip"
+msgstr "Предыдущий"
+
+#: ../bin/smalldlg.c:54
+msgid "Next Tip"
+msgstr "Следующий"
+
+#: ../bin/smalldlg.c:72
+msgid "Tip of the Day"
+msgstr "Совет дня"
+
+#: ../bin/smalldlg.c:82
+msgid "No tips are available"
+msgstr "Советы недоступны"
+
+#: ../bin/smalldlg.c:187
+msgid ""
+"XTrackCAD is a CAD (computer-aided design) program for designing model "
+"railroad layouts."
+msgstr ""
+"XTrackCAD это САПР (система автоматизированного проектирования) программа "
+"для проектирования макета железной дороги."
+
+#: ../bin/tbezier.c:214
+#, c-format
+msgid "Bez: L%s A%0.3f trk_len=%s min_rad=%s"
+msgstr ""
+
+#: ../bin/tbezier.c:288
+msgid "Ctl Pt 1: X,Y"
+msgstr ""
+
+#: ../bin/tbezier.c:289
+msgid "Ctl Pt 2: X,Y"
+msgstr ""
+
+#: ../bin/tbezier.c:295
+msgid "MinRadius"
+msgstr "Мин. радиус"
+
+#: ../bin/tbezier.c:300
+msgid "Line Color"
+msgstr "Цвет линии"
+
+#: ../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:514
+msgid "Bezier Track"
+msgstr "Трек Безье"
+
+#: ../bin/tcornu.c:246
+#, c-format
+msgid "Cornu: L %s A %0.3f L %s MinR %s"
+msgstr ""
+
+#: ../bin/tcornu.c:321
+msgid "Radius "
+msgstr "Радиус "
+
+#: ../bin/tcornu.c:329
+msgid "Minimum Radius"
+msgstr "Минимальный радиус"
+
+#: ../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
+#, 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:532
+msgid "Cornu Track"
+msgstr ""
+
+#: ../bin/tcurve.c:259
+#, c-format
+msgid "Helix: Turns %ld L %0.2f Grade %0.1f%% Sep %0.2f"
+msgstr ""
+
+#: ../bin/tcurve.c:265
+#, c-format
+msgid "Helix: Turns %ld L %0.2f"
+msgstr ""
+
+#: ../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 ""
+
+#: ../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 ""
+"Изогнутый трек(%d): Слой=%d Радиус=%s Длина=%s Центр=[%s,%s] EP=[%0.3f,%0.3f "
+"A%0.3f] [%0.3f,%0.3f A%0.3f]"
+
+#: ../bin/tcurve.c:681
+msgid "Helix Track"
+msgstr ""
+
+#: ../bin/tcurve.c:687
+msgid "Curved Track"
+msgstr ""
+
+#: ../bin/tcurve.c:1232
+msgid "Merge Curves"
+msgstr "Совместить кривые"
+
+#: ../bin/tcurve.c:1306
+msgid "Drag to change angle or create tangent"
+msgstr ""
+
+#: ../bin/tcurve.c:1341 ../bin/tcurve.c:1374
+msgid "Curved "
+msgstr ""
+
+#: ../bin/tcurve.c:1347
+msgid "Tangent "
+msgstr "Тангенс "
+
+#: ../bin/tcurve.c:1356
+#, c-format
+msgid "Tangent track: Length %s Angle %0.3f"
+msgstr ""
+
+#: ../bin/tcurve.c:1378
+#, c-format
+msgid "Curved: Radius=%s Length=%s Angle=%0.3f"
+msgstr ""
+
+#: ../bin/tease.c:532
+msgid "l0"
+msgstr ""
+
+#: ../bin/tease.c:533
+msgid "l1"
+msgstr ""
+
+#: ../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:629
+msgid "Easement Track"
+msgstr ""
+
+#: ../bin/tease.c:1407
+msgid "Merge Easements"
+msgstr ""
+
+#: ../bin/tease.c:1481
+msgid "Split Easement Curve"
+msgstr ""
+
+#: ../bin/textnoteui.c:175
+#, fuzzy, c-format
+msgid "Text Note(%d) Layer=%d %-.80s"
+msgstr "(%d): Слой=%d %s"
+
+#: ../bin/textnoteui.c:189
+#, fuzzy
+msgid "Update Text Note"
+msgstr "Создать текст"
+
+#: ../bin/textnoteui.c:200
+msgid "Replace this text with your note"
+msgstr "Замените этот текст вашей заметкой"
+
+#: ../bin/textnoteui.c:206
+#, fuzzy
+msgid "Create Text Note"
+msgstr "Создать текст"
+
+#: ../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:1481
+msgid "Mode Objects Below"
+msgstr ""
+
+#: ../bin/track.c:1785
+msgid "Audit"
+msgstr "Аудит"
+
+#: ../bin/track.c:1990
+#, c-format
+msgid "Connecting a car to a non-car T%d T%d"
+msgstr ""
+
+#: ../bin/track.c:2000 ../bin/track.c:2005
+#, c-format
+msgid "Connecting a non-track(%d) to (%d)"
+msgstr ""
+
+#: ../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 ""
+
+#: ../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 "Кривая Безье: длина=%s мин. радиус=%s"
+
+#: ../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/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 "Создать текст"
+
+#: ../bin/trknote.c:53
+#, fuzzy
+msgid "Link"
+msgstr "Прямая"
+
+#: ../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 "Поместить заметку на рабочую область"
+
+#: ../bin/trknote.c:540
+msgid "New Note"
+msgstr "Новая заметка"
+
+#: ../bin/trknote.c:594
+#, fuzzy
+msgid "Add notes"
+msgstr "Добавлен новый"
+
+#: ../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"
+"%0.3f]"
+msgstr ""
+"Прямой трек(%d): Слой=%d Длина=%s EP=[%0.3f,%0.3f A%0.3f] [%0.3f,%0.3f A%"
+"0.3f]"
+
+#: ../bin/tstraigh.c:762
+msgid "Extending Straight Track"
+msgstr "Расширение прямого трека"
+
+#: ../bin/tstraigh.c:845
+msgid "Straight "
+msgstr "Прямая "
+
+#: ../bin/svgoutput.c:484
+#, fuzzy
+msgid "Export to SVG"
+msgstr "Экспортировать в DXF"
+
+#: ../wlib/mswlib/mswmisc.c:188
+#, fuzzy
+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
+#, fuzzy
+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 "Ошибка"
+
+#: ../wlib/mswlib/mswmisc.c:2203
+msgid "&Contents"
+msgstr "&Содержание"
+
+#: ../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\tFrog|Points cannot be placed on a turnout, circle "
+"or helix.\t%s не может быть помещена на стрелку, круг или спираль."
+
+#: ../../../../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/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/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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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/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/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/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 ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:21
+msgid "MSG_WBITMAP_FAILED\tBitmap create or write function failed."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:22
+msgid "MSG_BITMAP_TOO_LARGE\tBitmap is too large."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:23
+msgid "MSG_CHANGE_ELEV_MODE\tCannot change elevation mode."
+msgstr ""
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:25
+msgid "MSG_LAYER_FREEZE\tCannot freeze current layer"
+msgstr ""
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:29
+msgid "MSG_LAYER_HIDE\tCannot hide current layer"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:30
+msgid "MSG_LAYER_MODULE\tCannot turn current layer into a Module"
+msgstr ""
+
+#: ../../../../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/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/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/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/v_5_3_0_beta1/app/help/messages.h:35
+msgid "MSG_JOIN_SAME\tCannot Join; Selected endpoints are on same track."
+msgstr ""
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:39
+msgid "MSG_LAYER_SEL_FROZEN\tCannot select a frozen layer"
+msgstr ""
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:41
+#, c-format
+msgid ""
+"MSG_CANT_SPLIT_TRK\tCannot split TYPE track\tCannot split track of type %s"
+msgstr ""
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:43
+msgid "MSG_CARIMP_DUP_INDEX\tCar Index number duplicated."
+msgstr ""
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:45
+msgid "MSG_CONN_PARAMS_TOO_BIG\tConnection parameters reset to maximum values."
+msgstr ""
+
+#: ../../../../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/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/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/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 ""
+
+#: ../../../../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/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/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/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\tВерсия файла %ld выше чем поддерживается...\tВерсия "
+"файла %ld выше чем поддерживается\n"
+"версия %d. Вам необходимо обновить %s\n"
+"до последней версии %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\tВерсия файла %ld выше, чем поддерживается...\tВерсия "
+"файла %ld выше чем поддерживается\n"
+"версия %d. Вам необходимо обновить вашу\n"
+"версию %s"
+
+#: ../../../../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\tВерсия файла %ld выше чем поддерживается...\tВерсия "
+"файла %ld выше чем поддерживается\n"
+"версия %d. Вам необходимо обновить %s\n"
+"до последней версии %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\tВерсия файла %ld выше, чем поддерживается...\tВерсия "
+"файла %ld выше чем поддерживается\n"
+"версия %d. Вам необходимо обновить вашу\n"
+"версию %s"
+
+#: ../../../../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
+msgid ""
+"MSG_MOVE_POINTS_OTHER_SIDE\tFrog angle prevents placement of points. Move "
+"points to opposite side of frog."
+msgstr ""
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:62
+msgid "MSG_TRK_DESC_NOT_VISIBLE\tLabel description is hidden"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:63
+msgid "MSG_DESC_NOT_VISIBLE\tLabel descriptions not visible"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:64
+msgid "MSG_OBJECT_TOO_SHORT\tLength of object is too short."
+msgstr ""
+
+#: ../../../../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/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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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\tНеопределено ниодного типа вагона....\tНеопределено "
+"ниодного типа вагона.\n"
+"Загрузите типы вагонов из файла через Файл->Файлы параметров\n"
+"Parameter Files dialog or create a Prototype\n"
+"definition using the Car Prototype dialog."
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:71
+msgid "MSG_PRINT_NO_PAGES\tNo pages selected for printing."
+msgstr ""
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:74
+msgid "MSG_NO_SELECTED_TRK\tNo track(s) selected!"
+msgstr ""
+
+#: ../../../../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 ""
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:80
+msgid "MSG_MOVE_OUT_OF_BOUNDS\tObject has moved beyond room boundaries."
+msgstr ""
+
+#: ../../../../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/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 ""
+
+#: ../../../../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/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 ""
+
+#: ../../../../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/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/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/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
+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"
+"\n"
+"Do you want to update it?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:91
+msgid "MSG_RADIUS_GTR_0\tRadius must be greater than 0."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:92
+msgid "MSG_RADIUS_GTR_10000\tRadius must be less than 10000."
+msgstr ""
+
+#: ../../../../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 ""
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:97
+msgid "MSG_OUT_OF_BOUNDS\tSelected page is out of bounds."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:98
+msgid "MSG_SEL_POS_FIRST\tSelect position prior to entering Text."
+msgstr ""
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:101
+msgid "MSG_COMMAND_DISABLED\tSpecified command disabled."
+msgstr ""
+
+#: ../../../../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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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/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 ""
+
+#: ../../../../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"
+"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 ""
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:114
+msgid "MSG_NO_REDO\tThere is nothing to redo!"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:115
+msgid "MSG_NO_UNDO\tThere is nothing to undo!"
+msgstr ""
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:118
+msgid "MSG_CANNOT_CHANGE\tTrack cannot be changed."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:119
+msgid "MSG_POINT_INSIDE_TURNTABLE\tTrack endpoint is within turntable radius."
+msgstr ""
+
+#: ../../../../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/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/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/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/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/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 ""
+
+#: ../../../../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/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 ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:128
+#, c-format
+msgid ""
+"MSG_PROG_CORRUPTED\tCritical file damaged!...\tCritical file damaged!\n"
+"\n"
+"%s is corrupt.\n"
+"\n"
+"Please reinstall software."
+msgstr ""
+
+#: ../../../../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] это не трек\t[%s %s] это не трек."
+
+#: ../../../../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"
+"\n"
+"Are you sure you want to continue?"
+msgstr ""
+
+#: ../../../../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/v_5_3_0_beta1/app/help/messages.h:134
+#, c-format
+msgid ""
+"Cannot open %s file:\n"
+"%s:%s"
+msgstr ""
+"Невозможно открыть файл %s:\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"
+
+#: ../../../../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/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"
+
+#: ../../../../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 ""
+"Невозможно открыть файл %s:\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 ""
+"Невозможно открыть файл %s:\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 "Нераспознанная опция: %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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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/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"
+"terminate on an endpoint. Such a track cannot be grouped.\n"
+"The track has been unselected."
+msgstr ""
+
+#: ../../../../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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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/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/v_5_3_0_beta1/app/help/messages.h:171
+msgid "Too many selected tracks, drawing tracks as End Point."
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:172
+msgid "Select an endpoint between two tracks."
+msgstr ""
+
+#: ../../../../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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../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/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/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 ""
+"Имеются несохранённые изменения этого объекта.\n"
+"\n"
+"Вы уверены, что хотите закрыть?"
+
+#: ../../../../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 ""
+
+#: ../../../../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"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:181
+#, c-format
+msgid ""
+"%s cannot read the demo file:\n"
+"%s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:182
+#, c-format
+msgid "doDemo: bad number (%d)"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:183
+msgid "Playback TIMEEND without TIMESTART"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:184
+#, c-format
+msgid ""
+"Unknown playback command (%d)\n"
+"%s"
+msgstr ""
+
+#: ../../../../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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:189
+msgid "Cannot trim a helix"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:190
+msgid "Ignore further audit notices?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:191
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:192
+msgid "Audit Abort?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:193
+msgid "Write Audit File?"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:194
+#, c-format
+msgid "checkTrackLength: Short track length = %0.3f"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/help/messages.h:195
+#, c-format
+msgid "checkTrackLength: unknown type: %d"
+msgstr ""
+
+#: ../../../../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 ""
+
+#: ../../../../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 ""
+
+#. 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/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."
+msgstr ""
+
+#. 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/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 ""
+"После первой установки программа измеряет все расстояния в дюймах. Вы можете "
+"изменить это в разделе меню \"Настройки/Предпочтения\" поменяв систему на "
+"метрическую."
+
+#. 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/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/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/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/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 ""
+
+#. 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"
+" 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 ""
+
+#. 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 ""
+
+#. 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 ""
+
+#. 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/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 ""
+
+#. 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 ""
+
+#. 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/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 ""
+
+#. 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/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 ""
+
+#. 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 ""
+
+#. 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 ""
+
+#. 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
+#, fuzzy
+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 ""
+"Если зажать клавишу Shift когда вы нажимаете правой кнопкой мыши, то "
+"отобразится список опций для текущий команды (если существует)."
+
+#. 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 ""
+
+#. 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
+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/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
+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/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/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/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/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/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/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/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/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 a straight or a "
+"curve.\n"
+msgstr ""
+
+#. 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/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
+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/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/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 ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:224
+msgid "- rectangular (1x2, 2x4 etc)\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:225
+msgid "- L girders\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:226
+msgid "- T girders\n"
+msgstr ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/v_5_3_0_beta1/app/i18n/custmsg.h:326
+#, fuzzy
+msgid "We specify the line width in inches.\n"
+msgstr "Это список компонентов для проекта"
+
+#: ../../../../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
+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 ""
+
+#. 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/v_5_3_0_beta1/app/i18n/custmsg.h:332
+msgid "We will use T1 red and green LEDs.\n"
+msgstr ""
+
+#: ../../../../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/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/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/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/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/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
+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 ""
+
+#. 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/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/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/v_5_3_0_beta1/app/i18n/custmsg.h:349
+msgid "We will fill this gap with the Œ\" dot.\n"
+msgstr ""
+
+#: ../../../../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/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/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/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 ""
+
+#. 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 "
+"is a bit too wide.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:359
+msgid "Lets tighten it up a bit.\n"
+msgstr ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 ""
+
+#. 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/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/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/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/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/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/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/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/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/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 ""
+
+#: ../../../../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/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/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/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/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/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 ""
+
+#. 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/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/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/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/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/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/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/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/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/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/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/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 ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/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/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/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/v_5_3_0_beta1/app/i18n/custmsg.h:481
+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 ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:482
+msgid " \n"
+msgstr ""
+
+#. 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 inches and the Maximum "
+"Track Grade is 5 percent.\n"
+msgstr ""
+
+#. 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/v_5_3_0_beta1/app/i18n/custmsg.h:558
+msgid " 3 a curved segment from the points to the frog\n"
+msgstr ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 ""
+
+#: ../../../../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/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/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"
+msgstr ""
+
+#. 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/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/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"
+msgstr ""
+
+#. 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/v_5_3_0_beta1/app/i18n/custmsg.h:599
+msgid "First change the Radius...\n"
+msgstr ""
+
+#. 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/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/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/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/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/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/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/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/v_5_3_0_beta1/app/i18n/custmsg.h:615
+msgid "Now Group the turnout.\n"
+msgstr ""
+
+#. 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/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/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/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/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 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/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/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/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/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/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/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/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/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/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/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/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 inches. The number of Turns "
+"will change to 4 and the grade increase to almost 3 percent.\n"
+msgstr ""
+
+#: ../../../../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 ""
+
+#. 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/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/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/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/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/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 inch and 13 inches to produce a grade of 3.0 "
+"percent with 2.8 inches between coils.\n"
+msgstr ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/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/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/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/v_5_3_0_beta1/app/i18n/custmsg.h:685
+msgid "The controls are:\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:686
+msgid "Step - advances to the next step of the demo.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:687
+msgid "Next - skips ahead to the next demo.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:688
+msgid "Quit - exits the demo and returns to XTrackCAD.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:689
+msgid "Speed - controls the speed of the demo.\n"
+msgstr ""
+
+#: ../../../../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/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/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/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 ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/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 ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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 ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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
+msgid "First, we will select Easements Cornu and then select Join\n"
+msgstr ""
+
+#. 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/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/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/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/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 ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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 ""
+
+#. 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/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/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/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/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/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/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/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/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/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/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 ""
+
+#. 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/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/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/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/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/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/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/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/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/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/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/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/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/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
+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/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 ""
+
+#: ../../../../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/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/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"
+msgstr ""
+
+#: ../../../../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/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/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 ""
+"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 ""
+
+#: ../../../../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 ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:879
+msgid "Click Step to return to XTrackCAD.\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:880
+msgid "Thanks for watching.\n"
+msgstr ""
+
+#. 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/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/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/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/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/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/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/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/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/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/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 ""
+
+#. 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 ""
+
+#. 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/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/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/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/v_5_3_0_beta1/app/i18n/custmsg.h:915
+msgid "Select a Defined Elevation point (marked by Gold dots).\n"
+msgstr ""
+
+#: ../../../../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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 "
+"hold down the <Shift> and <Ctrl> keys.\n"
+msgstr ""
+
+#. 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 ""
+
+#. 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/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/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/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/v_5_3_0_beta1/app/i18n/custmsg.h:1001
+msgid "Selected tracks can also be deleted, hidden, listed and exported.\n"
+msgstr ""
+
+#: ../../../../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
+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/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/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
+msgid "Selecting a selected track re-selects only it.\n"
+msgstr ""
+
+#. 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/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 ""
+
+#. 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/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/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/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/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/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
+msgid "Let's move the Main window to see what's going on next\n"
+msgstr ""
+
+#. 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/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
+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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 ""
+
+#. 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/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/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/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/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/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/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/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/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 ""
+
+#. 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
+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 ""
+"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 ""
+
+#: ../../../../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/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 ""
+
+#. 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/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/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"
+msgstr ""
+
+#. 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/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/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/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/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/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/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/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/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/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/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 Turnouts from the HotBar and "
+"the <Parallel> command.\n"
+msgstr ""
+
+#. 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
+msgid "Then we place the Turnout on the main line.\n"
+msgstr ""
+
+#. 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/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/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/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/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 "
+"across the center line of the track.\n"
+msgstr ""
+
+#. 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 (3) "
+"and the maximum offset (0.000).\n"
+msgstr ""
+
+#: ../../../../build/v_5_3_0_beta1/app/i18n/custmsg.h:1154
+msgid ""
+"XTrackCAD adjusts the Turnout position for the best fit to minimize any "
+"connection offset\n"
+msgstr ""
+
+#. 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/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/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/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/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/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/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/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 ""
+
+#. 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 "Изменение Безье закончено - выберите другую"
+
+#~ msgid "Radius=%s Angle=%0.3f"
+#~ msgstr "Радиус=%s Угол=%0.3f"
+
+#~ msgid "Length=%s Angle=%0.3f"
+#~ msgstr "Длина=%s Угол=%0.3f"
+
+#~ msgid "Freeform"
+#~ msgstr "Свободное трансформирование"
+
+#~ msgid "Polygonal Line"
+#~ msgstr "Линия многоугольника"
+
+#~ msgid "There are no reachable Defined Elevations"
+#~ msgstr "Нет достижимых высот"
+
+#~ msgid "Dist = %s"
+#~ msgstr "Длина = %s"
+
+#~ msgid "Select track to modify"
+#~ msgstr "Выберите трек для изменения"
+
+#~ msgid "Note: "
+#~ msgstr "Заметка: "
+
+#~ msgid "Print Snap Grid"
+#~ msgstr "Печатать сетки"
+
+#~ msgid "Print Rulers"
+#~ msgstr "Печатать линейки"
+
+#~ msgid "1 page"
+#~ msgstr "1 страница"
+
+#~ msgid "Simple"
+#~ msgstr "Простой"
+
+#~ msgid "End Points"
+#~ msgstr "Конечные точки"
+
+#~ msgid "Tunnel"
+#~ msgstr "Тоннель"
+
+#~ msgid "%s Files|*.xtc"
+#~ msgstr "%s Файлы|*.xtc"
+
+#~ msgid "Zoom keeps lower corner in view"
+#~ msgstr "Фиксированный нижний левый угол"
+
+#~ msgid "Color Layers"
+#~ msgstr "Цветные слои"
+
+#~ msgid "End-Points"
+#~ msgstr "Концы"
+
+#~ msgid "Draw Moving Tracks"
+#~ msgstr "Рисовать перемещаемые треки"
+
+#~ msgid "Unload"
+#~ msgstr "Выгрузить"
+
+#~ msgid "Commands"
+#~ msgstr "Команды"
+
+#~ msgid "SnapGrid Enable"
+#~ msgstr "Прилипать к сетке"
+
+#~ msgid "A&bove"
+#~ msgstr "Сверху"
+
+#~ msgid "Belo&w"
+#~ msgstr "Снизу"
+
+#~ msgid "General note about the layout"
+#~ msgstr "Основная запись об этом слое"
+
+#~ msgid "Whether zoom is locked to the bottom left corner or the center point"
+#~ msgstr ""
+#~ "Фиксация левого нижнего угла либо центральной точки при масштабировании"
diff --git a/app/i18n/stripmsg.c b/app/i18n/stripmsg.c
index 6010530..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>
@@ -153,7 +153,7 @@ void process( mode_e mode, FILE * inFile, char *fileName )
*cp++ = 'n';
/* read a line */
- if (!fgets( cp, (sizeof(line)) - (cp-line), inFile )) {
+ if (!fgets( cp, (int)((sizeof(line)) - (cp-line)), inFile) ) {
return;
}
lineNo++;
@@ -171,7 +171,7 @@ void process( mode_e mode, FILE * inFile, char *fileName )
if (strchr(line, '"'))
{
printf("N_(\"");
- len = strlen(line);
+ len = (int)(strlen(line));
for (i = 0; i < len; i++)
{
/* Escape double quotation marks */
diff --git a/app/lib/AStyle.cfg b/app/lib/AStyle.cfg
new file mode 100644
index 0000000..8cc3f07
--- /dev/null
+++ b/app/lib/AStyle.cfg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<AStyleSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <CppFormatOnSave>false</CppFormatOnSave>
+ <CsFormatOnSave>false</CsFormatOnSave>
+ <CppCommandLine>--style=1tbs --indent=tab=8 --min-conditional-indent=0 --max-code-length=80 --pad-header --keep-one-line-blocks --keep-one-line-statements --mode=c</CppCommandLine>
+ <CsCommandLine>--style=kr --indent=tab=4 --add-braces --add-one-line-braces --mode=cs</CsCommandLine>
+ <Version>3.0.0.0</Version>
+</AStyleSettings> \ No newline at end of file
diff --git a/app/lib/CHANGELOG.md b/app/lib/CHANGELOG.md
index 56ce9ad..3644e99 100644
--- a/app/lib/CHANGELOG.md
+++ b/app/lib/CHANGELOG.md
@@ -4,6 +4,411 @@ 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
+
++ Windows arc/curve drawing fix
++ Improved all the icons
++ Preserve Double Slip Switch Quad path setting thru Ungroup/Group and other operations
++ Fix search order order for Appl Lib dir
++ fix Cornu Turnout Designer creating short segments
+
+## Added
+
++ Add JPEG format to bitmap export
++ Added 5", 7-1/4" and 7-1/2" Gauge to scale selection
++ Increased Zoom levels to 1024
+
+
+## Parameters
+
++ Updated PIKO G Track parameter file, added new R3 Turnouts
++ Walthers HO DCC Code 100 Turnouts and Walthers HO DCC Code 83 Turnouts
++ HO Piko A and Piko A Roadbed
++ Miniature Railway Workshop 7-1/4" portable track system
++ Mini Train Systems 5" and 7-1/4" track
++ AccuTie 7-1/4" and 7-1/2" track kits
+
+
+## [5.2.2 Beta 2]
+
+## Bugs
+
++ Turnout Designer fixes
++ Hotbar drawing fixes
++ Fix redo of Bezier and Cornu undo
++ Parallel Tool crash
++ Car Delete - Uncouple and mark deleted
++ Polygon editing fixes
++ BitMap Memory Leak
++ Curve from center
++ Description and Elevation attachments
++ Cornu Split
++ Remove bad checkpoint
++ Describe Bezier improvements
++ Fix Export Tracks when Trains present
++ Fix desired radius join
+
+
+## Added
+
++ Windows 64 bit
++ More realistic drawing of ties/sleepers within Turnouts
++ SVG Export of draw objects
++ Benchwork and Table Edge can be Split
++ Drawing of Bridge Track Deck
++ Zoom Extents button
++ Zoom Selected
++ Resizeable Menu Buttons
++ Increase Easement Radius Limit
++ Assorted Help Menu Improvements
++ Improved prompting and error processing for entry fields
++ Disable AutoSave CheckPoints by default
++ Follow Train uses Room Limits
++ Select Track by Index
++ Improved Ruler precision at high zoom
++ Turntable movement commands and alignment in Train Mode
++ Real Delete key in Poly Modify
++ Improve Elevation command editing
+
+
+## Parameters
+
++ HO-TrixExpress
++ Bachmann HO and N
++ MiniTrix
++ Trees
++ Fix Lego track scale
++ Short Marklin straights
++ Proto-ng-3ft
++ Aristo
++ USA Trains
++ G-MicroEngineering
++ Accucraft Cars
+
+
+## [5.2.1 GA]
+
+## Bugs
+
++ Fix Bezier Line Joins when inverted
++ Fix print of page numbers
++ Invert edge rulers on Print so they show
++ Fix split of arcs and circles
++ Block memory allocation fixes
++ Fix issue when placing wrong Turnout after Esc
++ Update Layout when changes are made in order to allow save settings properly
++ Draw parameters with negative segments properly in the HotBar
++ Fix issues with Describe for Draw Objects, seperate Angle from Rotate By, make Lock to Origin work properly
++ Remove Flex track from HotBar Popup
++ Fix display of short tracks to not expand
++ Windows: fail on saving Notes
++ Fail on Selecting Notes > 72 characters long
++ Windows fail on Zooming background if memory exhausted during rescale
++ Stop curved lines showing adjustment handles too early in construction
++ Fix right-arrow function with HotBar to be active when there is only one to right
++ Windows: Reset parmlib parms when upgrading correctly
++ Highlight Boxes when using Selected outside Select
++ For commands that do not use selected, deselect all before starting, for others, highlight correctly
++ Linux: Statically link libzip
++ Highlighting for Move/Rotate/Flip
++ Fix UnGroup and Group of Structures
++ Make Add Circle Icons match the way the constructors work
++ Optimize tie-data performance to cache results
++ Fix Bezier Lines to not have endpoints
++ Fix Add Structure from HotBar
++ Fix tooltips for command icons when i18n languages used
++ Stop Join for Bezier or Cornu Tracks if Easment not set to Cornu
++ Fix Split of Bezier tracks when curve reversed
++ Stop Flip of Bezier lines trying to move endpoints
++ Fix bounding box for almost complete circle arcs
++ Enlarge Text Buffer in Modify Notes to "Huge"
++ Set layer for split line to be same as old line
++ Dont select frozen layer objects on Select All
++ Make Mesurement Submenu appear in Context Menu
+
+
+## Added
+
++ Trim Draw Object Command
++ New Scales added for G and S families
++ Display Path when switching turnout
++ Add DPI setting to allow precise sizing of 1:1 display to real world size
++ Read Only length for curved lines in Describe
++ Added control of degree of fit in Library Search to only show relevant files for current scale
++ Compatible fit for structures with similar scales
++ Compatble fit for cars with same gauge and similar scales
++ Definitions for exact fit for some tracks that have same gauge but different scales (e.g., HO for OO).
++ Updated command line install on Ubuntu
++ Updated debian install
++ Fixes to O scale/gauge - 1:45 now O(EU), gauge for O(Fine) same as others
++ Install and Build Notes now link to updated Wikka
++ Alert user if Parts List used with no listable parts selected or present in layout
++ New O and G narrow-gauge scales
++ Desired radius value for constructing curved track
++ Rewritten path check code
++ SplitLine now works for Polygons and Circles (Filled or not)
++ Modify supported for Protractor to allow other usage scenarios
++ More documentation for Magnetic Snap
+
+## Parameters
+
++ Brio Track
++ Assorted fixes to parm files
++ Double Slip Pathing correction
++ Switch Machines
++ Fn3 NMRA
++ Gn3 Aristo
++ HO Tillig Luna Tramway
++ N RocoAtlas Code 80
++ N Tram
++ N ScaleScenes
++ OO9 Peco
+
+## [5.2.0 GA]
+
+## Bugs
+
++ Abend when searching in the parmlib
++ SplitLine command places last point at origin
++ Warning-track added to add back system cursor when apporaching the edge of the drawing surface
++ Fix poistion of elevation label for Bezier and Cornu Tracks
++ Improved message when grouping with invalid track
++ Fix some snapping in draw with +Alt
++ Fix Grouping of draw objects with no tracks
+
+## Added
+
++ Option to not suppress system cursor when appliaction cursor shown
+
+## [5.2.0 Beta 3.0]
+
+## Bugs
+
++ Library parameter file searching
++ Removal of entries for missing parameter files
++ Path logic when non-track objects are below tracks
++ Better highlighting of moving filled objects
++ Selection highlighting
++ Snap Grid for Modify Line
++ Move Description anchor fixes
++ Fix handling of frozen track - dont highlight
++ Grade calcualtions for intermediate points
++ Draw command checkpoint between invocations - improves Undo
++ Snap Grid position in draw order
++ Fix Layer button count
++ Restore Linetype on restart
++ Fix adjustable track and Pier memory leaks
++ Auto-upgrade of system parm files for Windows as well
++ Enter key support for Windows entry fields
++ DimLine snapping and editing
++ Rescale Background when Rescaling
++ Fix shortcuts in Modify Polygon
++ Fix Pan Here to be "c" and not "@" which is not available on some keyboards
++ Parallel PolyLine Points corrected
++ Bounding box for large Arcs
++ Change Pivot to Lock in Describe
++ Assorted work on Magnetic Snap for Draw objects
++ Fix Windows resize cursor
++ Pan/Zoom under View and not Change menu
++ Misordered columns on Car Inventory export
++ Contents shown for Help->Contents
++ Stop adding end-cornus to Select after Move
+
+## Added
+
++ Layer Groups
++ Layer Button Hiding
++ Settings Saving/Restoring from named .xset files
++ Cursor Suppression when internal anchor/cursor shown
++ Optional additional detail descriptions for curved tracks
++ Welsh as a message and UI language
++ Increase Text Note Limit to 10k
++ Debian install integration
++ Updated French and German translations
++ Negative linewidths on Lines mean fixed pixels
++ Russian as a message and UI language
++ Split Draw Command
++ Parallel Line function includes Beziers
++ HotBar left/right buttons auto-repeat if held down
++ Protractor Tool
+
+## Parm Files
+
++ FastTrak O3n file
++ 3x Z scale tracks
+
+
## [5.2.0 Beta 2.1]
### Bugs
@@ -15,7 +420,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ Make all commands have target HTML pages for context help
+ Make Font Size be remembered when set from Text command
+ Fixed Radius field to be mainatained in Join after first point selected
-+ Param Search UI result box resizeable
++ Param Search UI result box resizeable
+ Save Bridge Status for Segment Track
+ Updated German translations and translated Help Menu items
+ Clear NoTies if track is hidden
@@ -46,7 +451,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ Pan using Shift+horizontal scroll on GTK
+ Param Reload Button to force reload of a param file
+ Multi Keyword search on param library files
-+ "@" Pan to Center and "e" Pan to extents and "0" or "o" Pan to Origin
++ "@" Pan to Center and "e" Pan to extents and "0" or "o" Pan to Origin
+ Middle button also able to select Pan
+ Selectable Icon Button size between 1.0 and 2.0
+ Parallel Lines now can parallel other lines or tracks
@@ -54,7 +459,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ Desired Radius feature for non-Cornu Join
+ AutoSave feature and add keep checkpoints between saves
+ Suppress edge rules on layout if close to window edge rulers
-+ Option to constrain drawing area to room boundaries on zoom
++ Option to constrain drawing area to room boundaries on zoom
+ New Anchors on Describe and Traditional Join
+ AutoSave feature and Backup of checkpoints
+ Anchors on Split within turnouts with Shift
@@ -83,7 +488,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ Convert Fixed->Cornu fixes
+ Bug #345 Fix paths in some Turnouts
+ Respect parmdir setting in configuration file
-+ Bug #348 Fix Demo
++ Bug #348 Fix Demo
+ Bug #349 Fix inaccessible track segments
+ Bug #346 Fix layout file ends for Signal and Block
+ Bug #351 Fix loading layout with Cars off tracks
@@ -100,7 +505,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ Better sized Split and Connect Anchors
+ Windows PanHere now works
+ Fix Map Resize function on GTK
-+ Fix Turnout placement on Cornu for Pins and other issues
++ Fix Turnout placement on Cornu for Pins and other issues
+ Fox Cornu Pin editing
@@ -128,8 +533,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ + Finder for selecting System Parameter Library by Contents lines in files
+ + Set and un-set favorite property for parameter files
+ Track Properties
-+ + Bridge track
-+ + Ties/NoTies
++ + Bridge track
++ + Ties/NoTies
+ Links in Layout
+ + Document links to local files as an Object
+ + WebLinks as an Object
@@ -144,7 +549,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ + Pins for Cornu - morphs Cornu to pass through Pin, splits Cornu on Accept
+ + Edit multiple joined Cornu as single with Pins
+ + Add automatic 15 inch flex track element to Hotbar -> acts as Cornu and will also join tracks as needed
-+ + Allow Cornu Tracks in Group
++ + Allow Cornu Tracks in Group
+ + Add placing Turnouts on Cornu Track
+ + End Point Anchor for FlexTrack (Cornu) pieces
+ + Radius and angle handles for no-track end Cornu
@@ -173,7 +578,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ + Updated and corrected the TIP file
+ + System Library location autoset so updated parameter files from new version appear in HorBar
+ Other
-+ + Allow Turnouts to have with curved ends which are downward compatible using short fixed radius at the ends
++ + Allow Turnouts to have with curved ends which are downward compatible using short fixed radius at the ends
+ + Layers have Module option that are selected and Deselected as a unit
+ + Improve ruler with “English” measurements in High Zoom
+ + Add Examples... menu item on the Help menu to easily find them
@@ -186,22 +591,22 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ + Change Modify to use Cornu easements if selected
+ + New Cornu Turnout Designer options to build all types of Turnouts
+ + Create proper flex-track lengths for pricing
-+ + Desktop icon can be created with Windows installation
++ + Desktop icon can be created with Windows installation
+ + Installing on Windows overwrittes earlier version
### New UI
-+ Layout
++ Layout
+ + Allow viewing of "negative" layout up to half a screen to the left or bottom beyond the origin. Draw Room Walls and a grey zone outside the defined layout
+ + Add rulers on room walls if the display origin is in negative territory
-+ Anchors
++ Anchors
+ + Anchors on all main commands - predict what will/can happen when clicked with modify keys (Ctrl,Shift,Alt)
+ + Add hover "anchors" for Select, Move, Rotate, Split, Join, Elevation, Move Description, Parallel
+ + Modify hover Anchors or all Straight, Curved Track, Straight and Curved Draw Objects
+ + Draw Anchors immediately adjust to Shift and Ctrl modifier key state
+ + Anchor for Join, fix anchor for Draw once selected
+ + Change System Cursor in main Window for Describe, Select and Pan/Zoom
-+ + Add acnchors to Select for Move and Rotate
++ + Add acnchors to Select for Move and Rotate
+ + Add Anchors for Connect/Pull - also make selecting second track easier
+ Select Modes
+ + Select hover Anchors thick and in Blue to show what will be selected and Gold what will not be
@@ -218,16 +623,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ + Precision entry of Modify for Draw objects when Sticky selected
+ + Snapping Poly objects to be 0/90/180/270 from previous line with Shift
+ + Anchor shown for point that is 90 degrees from both last line and first point in Poly
-+ + PolyLines and Polygons complete with Enter or Space in Modify or if user clicks away
++ + PolyLines and Polygons complete with Enter or Space in Modify or if user clicks away
+ ShortCuts
-+ + Text key shortcuts in Pan/Zoom - Zoom Levels "1-9", Extents "e", Origin "0"
++ + Text key shortcuts in Pan/Zoom - Zoom Levels "1-9", Extents "e", Origin "0"
+ + “Pan Center Here” with a text short-cut “@“ key that works in Select, Pan/Zoom, Modify
+ Context Menus
+ + Default to Context Menu on Right-Click, Command Menu Shift+Right-Click
+ + New Select Context Menus for Selected and UnSelected cases
+ + Numerous updates to context menus including special for Poly Modify
+ DoubleClick in Select
-+ + Open a Weblink, a Document
++ + Open a Weblink, a Document
+ + Modify for Cornu and Bezier, Modify Draw objects except Text
+ Elevation
+ + Elevation cursor shows elevation at point. Adding Shift displays clearance between two tracks\
@@ -254,13 +659,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ Clean up HotBar right click display order documentation
+ Remove timed validation of text entries, use Enter-key, Click Away or Tab to trigger instead
+ Drawing of Ties to use Polygons, reducing the load of unfilled Ties on Redraw
-+ Draw temp Polygons and Circles when moving them (all unfilled and simplified)
++ Draw temp Polygons and Circles when moving them (all unfilled and simplified)
+ Add up/down arrow keys scrolling in Select
+ Ctrl+Left-Click to rotate Turnouts - in common with other rotates
+ Make sure Draw commits simple elements even if Esc is subsequently pressed
+ Make Note icon size better
+ Make Bezier and Cornu use standard colors during construction
-+ Improve Grid drawing performance
++ Improve Grid drawing performance
+ Make Status fields insensitive when visible
+ Respect Turntable Angle for Modify and Join to Turntable
+ Save State including filenames and options when Save, Save As or Open commands are run
@@ -276,7 +681,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
+ Make repeated arrow key moves in Move into one Undo
+ Adjust Ties algo to give a more even look in short tracks
+ Fix bounding box for multi-line text
-+ Fix Describe Window sizing
++ Fix Describe Window sizing
+ Fix for split to preserve elevation properly (keep end point elev type and station name (if any) - new split end point gets elev_none
+ Fix handling of \n in multiline comments
+ Fix flex-track lengths for pricing
@@ -358,7 +763,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
## [5.1.2]
### Added
-+ Make Debug menu both work and do something useful
++ Make Debug menu both work and do something useful
This menu in Options->Debug only appears if the env variable XTRKCADEXTRA is set A "Loosen" command also appears in Modify when set.The Debug window lists any Logging entries (set with "-d loggingname=level" parms).For example, "-d trainMove=5 -d traverseCornu=2" sets two Loglines - one at level 5 and the other 2. The value of the level can be adjusted in the Debug window and then the button "OK" sets it.Given that a level value of 0 means no logging for that logging variable, this menu allows log/tracing to be adjusted on the fly after startup.
Debug Window has a default trace level option. This is the level of Log/Trace that all types of tracing will follow unless they have been specified explicitly in the startup parms or otherwise.
Any log entries created before the first invocation of the window will be included, so a tester could add a LogSet("traverseBezier",0) line into the InitTrkBezier() code while testing or use a -d traverseBezier=0 and then use Debug to set level to 1 and start logging.
@@ -366,13 +771,13 @@ Any log entries created before the first invocation of the window will be includ
## Fixed
+ Make Up and Down Scroll only move 1/2 a screen height (rather than 1/2 a width)
+ Fix Modify redraw for Bezier or Cornu
-+ Allow modify of naked Cornu along the Cornu itself if it isn't connected to another Cornu or Bezier
++ Allow modify of naked Cornu along the Cornu itself if it isn't connected to another Cornu or Bezier
+ Fix Abend on extend of naked Cornu
+ Make sure Flip Cornu produces a correct relationship between ends and Bezier segments
-+ Fix Traverse Cornu for case where there are multiple sub-segments within a Bezier segment
++ Fix Traverse Cornu for case where there are multiple sub-segments within a Bezier segment
+ Remove UndoModify from low-level functions - to ensure that they can't be called without a preceding UndoStart and cause error messages
+ Description: correct include tag for Linux
-+ Fix possible error when Cloning Structures or Turnouts
++ Fix possible error when Cloning Structures or Turnouts
+ Fix bad test for RescaleTrack and no test for RotateTrack.
+ Fix the Modify Polygon Undo problem
+ Fix memory bug when flipping a Polygon
diff --git a/app/lib/CMakeLists.txt b/app/lib/CMakeLists.txt
index 5f271f6..c25c149 100644
--- a/app/lib/CMakeLists.txt
+++ b/app/lib/CMakeLists.txt
@@ -6,17 +6,37 @@
#
project(lib)
-add_subdirectory(demos)
-add_subdirectory(examples)
add_subdirectory(params)
install(FILES
COPYING
logo.bmp
xtrkcad.xtq
+ 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" )
@@ -37,16 +57,21 @@ 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)
install(PROGRAMS
- xdg-open
+ xdg-open xtrkcad-setup
DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
)
install(FILES
- xtrkcad.desktop
+ 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 48bfd34..b586bc9 100644..100755
--- a/app/lib/Readme.md
+++ b/app/lib/Readme.md
@@ -1,18 +1,39 @@
-# XTrackCAD 5.2.0 #
+# XTrackCAD Version 5.3.0 GA Release Notes
+
+Welcome to the XtrackCAD V5.3.0 GA Release!
+
+V5.3.0 GA contains many bug fixes, new and updated parameter files, new features and enhancements.
+
+Enjoy!
+
+Dave, Martin and Adam, your volunteer developers.
+
+PS The full change log is a file in the XtrkCAD download folder as CHANGELOG.md
+
+The files written by XTrackCAD 5.2 are versioned to only be read by 5.2, but it can also read files from earlier versions. If you get into trouble, please reach out, we may be able to help - but always back-up.
+
+We will fix important bugs you find in subsequent releases.
+
+To report bugs, please use the SourceForge bugs reporting page https://sourceforge.net/p/xtrkcad-fork/bugs/
+
+To discuss the Release, please use the user forum https://xtrackcad.groups.io/g/main/topics
+
+# 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.
@@ -28,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:**
@@ -37,217 +61,45 @@ free software under the terms of the GNU General Public License v2 which
you can find in the file COPYING.
-# Installation #
-
-## Dependencies ##
-
-XTrackCAD starting with V5.2 depends on some external libraries:
-
-+ zlib Compression Library https://www.zlib.net/
-+ libzip for handling zip files https://libzip.org/
-
-Additionally on Windows only
-
-+ FreeImage image handling http://freeimage.sourceforge.net/
-
-The Windows installer comes with these libraries so no additional downloads
-are necessary. On Linux and OSX the necessary libraries will need to
-be installed using the software installation tools of the
-operating system.
-
-## Windows ##
-
-XTrackCad has only been tested on Windows 10.
-
-The MS-Windows version of XTrackCad is shipped as a self-extracting/
-self-installing program using the NSIS Installer from Nullsoft Inc.
-
-Using Windows Explorer, locate the directory in which you downloaded or copied your new version of XTrackCAD.
-
-Start the installation program by double clicking on the
-**[xtrkcad-setup-5.2.0.exe][]** file icon.
-
-Follow the steps in the installation program.
+<a name='Installation' />
-The installation lets you define the directory into which XTrackCAD is
-installed. The directory is created automatically if it doesn't already exist.
+## Installation ##
-A program folder named XTrackCAD 5 will be created during the installation
-process. This folder contains the program, documentation, parameter and
-example files. An existing installation of earlier versions of XTrackCad is
-not overwritten.
+Please see https://sourceforge.net/p/xtrkcad-fork/wiki/DownloadInstall/
-A new program group named XTrackCAD 5 will be created in the Start menu.
+**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.
-## OSX ##
-XTrackCAD for Mac is shipped as a self-installing OSX package
-Start the install by double clicking on the
-**[xtrkcad-osx-5.2.0.dmg][]** file icon.
-
-Drag the package and drop into the Applications folder.
-
-You may receive a prompt telling you that the package is not signed. To install it anyway, go to the System Preferences page and select Security & Privacy. Hit the button marked "Install Anyway".
-
-If you have a previous version you will be asked if you want to replace it or install a second version.
-
-You will need to have installed the correct level of XQuartz for your level of OSX to run XTrackCAD on Mac - go to http://www.xquartz.org/ and download and then install the package. Remember to log out and in again (or reboot) if this your first xQuartz install.
-
-Once the XQuartz package has installed go to the XtrkCAD icon in Applications and double click on it. You may again be told the program is not signed. If so, again go to Systems Preferences->Security & Privacy and hit "Run Anyway".
-
-## Linux ##
-
-XTrackCAD for LINUX is shipped as a RPM file and a self extracting archive.
-You will need libc6, X11R6, GTK+2.0.
-If you change the install package you should set the XTRKCADLIB enviroment variable
-
-For example if the install is within the /usr/local/share/xtrkcad directory. you could use -
-
-env XTRKCADLIB="/usr/local/share/xtrkcad/" xtrkcad
-
-### Installing from the RPM package. ###
-
-Use your operating system's package manager to install XTrackCAD.
-
-
-### Installing from the self-extracting archive. ###
-
-After downloading open a command line then as root run
-
- ./xtrkcad-setup-5.2.0.x86_64.sh --prefix=/usr/local --exclude-subdir
-
-This will install the executable in /usr/local/bin. A directory named
-xtrkcad will be created in /usr/local/share and all files will be unpacked
-into it.
-
-If you install XTrackCAD into another directory, set the XTRKCADLIB
-environment variable to point to that directory.
-
-# Release Info #
+<a name='Upgrading' />
## Upgrade Information ##
-**Note:** This version of XTrackCAD comes with the several new features
-like backgroudn images or extensions to notes. In order to support
-this feature, an additional file format for layout files (.xtce) was added.
+**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
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.
-# Building #
-## Overview ##
-
-The following instructions detail building XTrackCAD using CMake. CMake is a
-cross-platform build system, available at http://www.cmake.org, that can be
-used to generate builds for a variety of build tools ranging from "make" to
-Visual Studio and XCode. Using CMake you can build XTrackCAD on Windows,
-GNU/Linux, and Mac OSX using the build tool(s) of your choice.
-
-### Building XTrackCAD on GNU/Linux ###
-
-* Obtain the current sources from Mercurial; I assume that they are stored locally at
- "~/src/xtrkcad".
- Note that the correct URL for read-only access to Mercurial is
- <http://xtrkcad-fork.hg.sourceforge.net:8000/hgroot/xtrkcad-fork/xtrkcad>
-* Create a separate build directory; for these instructions I assume that
- your build directory is "~/build/xtrkcad".
-* Run CMake from the build directory, passing it the path to the source
- directory:
-
- $ cd ~/build/xtrkcad
- $ ccmake ~/src/xtrkcad
-
-* Press the "c" key to configure the build. After a few moments you will see
- four options to configure: CMAKE_BUILD_TYPE, CMAKE_INSTALL_PREFIX,
- XTRKCAD_USE_GTK, and XTRKCAD_USE_GTK_CAIRO.
-* Use CMAKE_BUILD_TYPE to control the build type. Enter "Debug" for a debug
- build, "Release" for a release build, etc.
-* Use CMAKE_INSTALL_PREFIX to control where the software will be installed.
- For this example, I assume "~/install/xtrkcad".
-* Use XTRKCAD_USE_GETTEXT to add new locales (language translations). Choose
- "OFF" to use XTrackCAD's default language (English). Refer to
- http://www.xtrkcad.org/Wikka/Internationalization for additional information.
-* Use XTRKCAD_USE_GTK to control the user-interface back-end. Choose "OFF"
- for Windows, "ON" for all other platforms.
-* Use XTRKCAD_USE_DOXYGEN to enable the production of type, function, etc.,
- documentation from the the source code. Requires doxygen if enabled.
- Enable if and only if you intend to hack on the code.
-* If you made any changes, press the "c" key again to update your new
- configuration.
-* Once everything is configured to your satisfaction, press the "g" key to
- generate makefiles for your build.
-* Compile XTrkCad using your new build:
-
- $ make
-
-* Install the new binary:
-
- $ make install
-
-* Run the installed binary:
-
- $ ~/install/xtrkcad/bin/xtrkcad
-
-* If XTRKCAD_USE_DOXYGEN was enabled:
-
- $ make docs-doxygen
-
- to create the internals documentation. Read this documentation by pointing
- your web browser at ~/build/xtrkcad/docs/doxygen/html/index.html.
-
-### Building XTrackCAD on Mac OSX ###
-
-* You will need to install the following dependencies - I recommend using
- <http://www.macports.org> to obtain them:
- - GTK2
- - gnome-icon-theme
-* Once the prerequisites are installed the build instructions are the same
- as for the GNU/Linux build, above.
-* Remember that to run XTrackCAD on OSX, you need to have X11 running with
- your DISPLAY set.
-
-### Building XTrackCAD on Windows ###
-
-* Obtain the current sources from Mercurial; I assume that they are stored locally at
- "c:/src/xtrkcad".
- Note that the correct URL for read-only access to Mercurial is
- <http://xtrkcad-fork.hg.sourceforge.net:8000/hgroot/xtrkcad-fork/xtrkcad>
-* Use the Windows Start menu to run CMake (cmake-gui).
-* Specify the source and build directories in the CMake window. You must
- provide a build directory outside the source tree - I use "c:/build/xtrkcad".
-* Press the "Configure" button to configure the build. You will be prompted
- for the type of build to generate. Choose your desired tool - I used "Visual
- Studio 15". After a few moments you will see two options to
- configure: CMAKE_INSTALL_PREFIX and XTRKCAD_USE_GTK.
-* Use CMAKE_INSTALL_PREFIX to control where the software will be installed.
- The default "c:/Program Files/XTrkCAD" is a good choice.
-* Use XTRKCAD_USE_GETTEXT to add new locales (language translations). Choose
- "OFF" to use XTrackCAD's default language (English). Refer to
- <http://www.xtrkcad.org/Wikka/Internationalization> for additional information.
-* Use XTRKCAD_USE_GTK to control the user-interface back-end. Choose "OFF"
- for Windows.
-* Use XTRKCAD_USE_DOXYGEN to enable the production of type, function, etc.,
- documentation from the the source code. Requires doxygen if enabled.
- Enable if and only if you intend to hack on the code.
-* If you made any changes, press the "Configure" button again to update your
- new configuration.
-* Once everything is configured to your satisfaction, press the "OK" button
- to generate project files for your build.
-* Compile XTrackCad using the new project files. For example, start MSVC and
- open the "XTrkCAD.sln" solution file which is located in your build directory.
-* Build the "BUILD_ALL" project to build the software.
-* Build the "INSTALL" project to install the software.
-* Run XTrackCAD by double-clicking its icon located in the install directory -
- for example: c:/Program Files/XTrkCAD/bin/xtrkcad.exe.
+
+<a name='Building' />
+
+## Building ##
+
+Please see <https://sourceforge.net/p/xtrkcad-fork/wiki/BuildNotes/>
+
+
+<a name='Support' />
## Where to go for support ##
The following web addresses will be helpful for any questions or bug
reports
-- The Yahoo!Group mailing list <http://groups.yahoo.com/projects/XTrkCad>
-- The project website for the open source development <http://www.xtrackcad.org/>
-- The official Sourceforge site <http://www.sourceforge.net/groups/xtrkcad-fork/>
+- The group mailing list <https://xtrackcad.groups.io/g/main>
+- The group Wiki <http://xtrkcad.org>
+- The official Sourceforge site <https://sourceforge.net/projects/xtrkcad-fork>
Thanks for your interest in XTrackCAD.
+
diff --git a/app/lib/astylerc b/app/lib/astylerc
index e0815ce..223a2eb 100644
--- a/app/lib/astylerc
+++ b/app/lib/astylerc
@@ -1,8 +1,7 @@
-style=1tbs
-break-blocks
-unpad-paren
-pad-header
-max-code-length=80
-break-after-logical
-mode=c
-
+--style=1tbs
+--indent=tab=8
+--max-code-length=80
+--mode=c
+--keep-one-line-blocks
+--keep-one-line-statements
+--min-conditional-indent=0
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 99646d5..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
@@ -776,10 +773,12 @@ And add some labels.
END
STEP
COMMAND Text
-PARAMETER text Fontsize 0 18
+PARAMETER text fontsize 0 18
+PARAMETER text boxed 0
PARAMETER GROUP text
-PARAMETER text Fontsize -1 48
-PARAMETER text Color 0
+PARAMETER text fontsize -1 48
+PARAMETER text boxed 0
+PARAMETER text color 0
MOUSE 2 4.500 6.969
MOUSE 4 4.391 6.672
KEYSTATE 2
@@ -792,9 +791,9 @@ MOUSE 29704 4.391 6.672
MOUSE 2 4.500 6.656
MOUSE 4 4.812 6.625
MOUSE 3336 5.156 6.766
-PARAMETER text Fontsize -1 48
-PARAMETER text Fontsize 11 24
-PARAMETER text Fontsize -1 24
+PARAMETER text fontsize -1 48
+PARAMETER text fontsize 11 24
+PARAMETER text fontsize -1 24
MOUSE 2 0.500 5.016
MOUSE 4 0.641 5.016
KEYSTATE 2
@@ -806,7 +805,7 @@ MOUSE 29704 1.312 5.016
MOUSE 27656 1.312 5.016
MOUSE 25864 1.312 5.016
MOUSE 3336 3.031 3.859
-PARAMETER text Fontsize -1 24
+PARAMETER text fontsize -1 24
PARAMETER GROUP text
MOUSE 2 10.375 5.047
MOUSE 4 10.125 5.047
@@ -825,11 +824,11 @@ MOUSE 28424 10.125 5.047
MOUSE 2 10.094 5.125
MOUSE 4 9.891 5.000
MOUSE 3336 9.906 5.031
-PARAMETER text Fontsize -1 24
+PARAMETER text fontsize -1 24
PARAMETER GROUP text
CLEAR
MESSAGE
-We want to print our control panel onto a 8x11 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.
@@ -925,20 +924,26 @@ The cross-hairs on the LEDs and switch show the centers for drilling.
END
REGRESSION START 10 - control panel
DRAW 18 0 0 0 0 0.000000 0.000000 0 0.000000
- L3 0 0.333333 1.000000 6.000000 0 9.772000 6.000000 0
- END
-DRAW 19 0 0 0 0 -1.250000 0.000000 0 0.000000
- L3 0 0.333333 10.000000 6.000000 0 9.000000 5.000000 0
+ L3 0 0.250 1.000000 6.000000 0 9.772000 6.000000 0
END
+DRAW 19 0 0 0 0 0.000000 0.000000 0 0.000000
+ L3 0 0.250000 8.750000 6.000000 0 7.750000 5.000000 0
+ END$SEGS
+#DRAW 19 0 0 0 0 -1.250000 0.000000 0 0.000000
+# L3 0 0.250 10.000000 6.000000 0 9.000000 5.000000 0
+# END
DRAW 20 0 0 0 0 0.000000 0.000000 0 0.000000
- L3 0 0.333333 7.666000 5.000000 0 3.000000 5.000000 0
+ L3 0 0.250 7.666000 5.000000 0 3.000000 5.000000 0
END
DRAW 21 0 0 0 0 0.000000 0.000000 0 0.000000
- L3 0 0.333333 3.000000 5.000000 0 2.000000 6.000000 0
- END
-DRAW 22 0 0 0 0 -0.813000 0.000000 0 0.000000
- L3 0 0.333333 6.000000 5.000000 0 8.000000 3.000000 0
+ L3 0 0.250 3.000000 5.000000 0 2.000000 6.000000 0
END
+DRAW 22 0 0 0 0 0.000000 0.000000 0 0.000000
+ L3 0 0.250000 5.187000 5.000000 0 7.187000 3.000000 0
+ END$SEGS
+#DRAW 22 0 0 0 0 -0.813000 0.000000 0 0.000000
+# L3 0 0.320 6.000000 5.000000 0 8.000000 3.000000 0
+# END
STRUCTURE 23 0 0 0 0 DEMO 2 2.375000 6.000000 0 0.000000 "LED T1 Green LED "
D 0.000000 0.000000
G3 16448250 0.000000 0.059000 0.000000 0.000000 0
@@ -981,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
@@ -989,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
@@ -997,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
@@ -1005,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
@@ -1013,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
@@ -1021,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
@@ -1099,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
@@ -1121,15 +1126,24 @@ STRUCTURE 44 0 0 0 0 DEMO 2 1.000000 6.250000 0 180.000000 "Symbols Arrow "
0.000000 0.000000 0
0.378906 0.250000 0
END
-DRAW 45 0 0 0 0 3.937000 6.625000 0 0.000000
- Z 0 0.000000 0.000000 0.000000 0 48.000000 "Summit"
- END
-DRAW 46 0 0 0 0 0.641000 5.016000 0 0.000000
- Z 0 0.000000 0.000000 0.000000 0 24.000000 "Seattle"
- END
-DRAW 47 0 0 0 0 8.641000 5.000000 0 0.000000
- Z 0 0.000000 0.000000 0.000000 0 24.000000 "Chicago"
- END
+DRAW 45 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 3.937000 6.625000 0.000000 0 48.000000 "Summit"
+ END$SEGS
+DRAW 46 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 0.641000 5.016000 0.000000 0 24.000000 "Seattle"
+ END$SEGS
+DRAW 47 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 8.641000 5.000000 0.000000 0 24.000000 "Chicago"
+ END$SEGS
+#DRAW 45 0 0 0 0 3.937000 6.625000 0 0.000000
+# Z 0 0.000000 0.000000 0.000000 0 48.000000 "Summit"
+# END
+#DRAW 46 0 0 0 0 0.641000 5.016000 0 0.000000
+# Z 0 0.000000 0.000000 0.000000 0 24.000000 "Seattle"
+# END
+#DRAW 47 0 0 0 0 8.641000 5.000000 0 0.000000
+# Z 0 0.000000 0.000000 0.000000 0 24.000000 "Chicago"
+# END
REGRESSION END
STEP
CLEAR
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/dmdimlin.xtr b/app/lib/demos/dmdimlin.xtr
index 904fffb..071e9f8 100644
--- a/app/lib/demos/dmdimlin.xtr
+++ b/app/lib/demos/dmdimlin.xtr
@@ -137,7 +137,8 @@ END
STEP
PARAMETER draw arrowsize 2 Small
MOUSE 2 15.000 9.688
-MOUSE 4 6.375 4.000
+#MOUSE 4 6.375 4.000
+MOUSE 4 6.275 3.900
#PARAMETER draw arrowsize 2 Medium
PARAMETER GROUP draw
MESSAGE
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/dmextend.xtr b/app/lib/demos/dmextend.xtr
index 1b8deff..102b665 100644
--- a/app/lib/demos/dmextend.xtr
+++ b/app/lib/demos/dmextend.xtr
@@ -89,11 +89,11 @@ CURVE 3 0 0 0 0 DEMO 2 12.321667 17.666667 0 15.000000 0 0.000000 0.000000
END
CURVE 4 0 0 0 0 DEMO 2 12.000000 19.456200 0 17.750000 0 0.000000 0.000000
E4 27.955056 11.678110 25.989234 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
- T4 5 21.407481 4.404230 237.994617 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 5 20.405847 3.822767 241.733791 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
END
-CORNU 5 0 0 0 0 DEMO 2 7.000000 1.000000 270.000000 0.000000 0.000000 0.000000 21.407481 4.404230 57.994617 17.750000 12.000000 19.456200
+CORNU 5 0 0 0 0 DEMO 2 7.000000 1.000000 270.000000 0.000000 0.000000 0.000000 20.405847 3.822767 61.733791 17.750000 12.000000 19.456200
T4 2 7.000000 1.000000 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
- T4 4 21.407481 4.404230 57.994617 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 4 20.405847 3.822767 61.733791 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
W3 0 0.000000 7.000000 1.000000 9.503384 1.000000 12.022315 1.089191 14.466729 1.629346
SUBSEGS
C 0 0.000000 -52.368193 7.316059 53.367239 176.234238 4.111563
diff --git a/app/lib/demos/dmgroup.xtr b/app/lib/demos/dmgroup.xtr
index f5ed0dd..7c6c7cd 100644
--- a/app/lib/demos/dmgroup.xtr
+++ b/app/lib/demos/dmgroup.xtr
@@ -28,24 +28,29 @@ 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
MOUSE 4 2.500 1.500
COMMAND DrawLine
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 3.200 3.000
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 3.200 1.500
STEP
COMMAND DrawFilledBox
PARAMETER draw linecolor 0
PARAMETER GROUP draw
+KEYSTATE A
MOUSE 1 2.600 3.000
+KEYSTATE A
MOUSE 2 2.600 3.000
+KEYSTATE A
MOUSE 4 3.100 2.500
+KEYSTATE A
MOUSE 2 2.600 2.000
+KEYSTATE A
MOUSE 4 3.100 1.500
MESSAGE
_________________________________________
@@ -136,24 +141,24 @@ _________________________________________
Now Select the lines and squares.
END
STEP
-#KEYSTATE 12
-MOUSE 1 2.469 2.812
-#KEYSTATE 12
-MOUSE 2 2.469 2.812
-KEYSTATE 12
-MOUSE 4 2.469 2.812
-KEYSTATE 12
-MOUSE 2 2.688 2.875
-KEYSTATE 12
-MOUSE 4 2.688 2.875
-KEYSTATE 12
-MOUSE 2 3.188 2.844
-KEYSTATE 12
-MOUSE 4 3.188 2.844
-KEYSTATE 12
-MOUSE 2 2.812 1.656
-KEYSTATE 12
-MOUSE 4 2.812 1.656
+#KEYSTATE C
+MOUSE 1 2.500 2.812
+#KEYSTATE C
+MOUSE 2 2.500 2.812
+KEYSTATE C
+MOUSE 4 2.500 2.812
+KEYSTATE C
+MOUSE 2 2.850 2.500
+KEYSTATE C
+MOUSE 4 2.850 2.500
+KEYSTATE C
+MOUSE 2 3.200 2.000
+KEYSTATE C
+MOUSE 4 3.200 2.000
+KEYSTATE C
+MOUSE 2 2.850 1.500
+KEYSTATE C
+MOUSE 4 2.850 1.500
MOUSE 1 5.000 1.000
MESSAGE
_________________________________________
@@ -169,8 +174,8 @@ And move the Label out of the way.
END
STEP
COMMAND MoveLabel
-MOUSE 1 4.281 2.031
-MOUSE 2 4.281 2.031
+MOUSE 1 5.000 2.116
+MOUSE 2 5.000 2.116
MOUSE 4 4.594 0.844
ORIG 1.0 0.0 0.0
MESSAGE
@@ -212,9 +217,9 @@ You can later Group this turnout with the straight segments to recreate the turn
END
STEP
-KEYSTATE 2
+KEYSTATE S
MOUSE 2 4.625 1.969
-KEYSTATE 2
+KEYSTATE S
MOUSE 4 4.625 1.969
REGRESSION START 10 - group 1
TURNOUT 16 0 32 0 0 DEMO 2 2.477615 1.950213 0 0.000000 "Peco-55 Modified Medium Right SL-E395F"
@@ -251,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
@@ -292,9 +297,9 @@ BIGPAUSE
MOUSE 1 5.219 3.000
MOUSE 2 5.219 3.000
MOUSE 4 5.219 3.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 2 5.219 2.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 4 5.219 2.000
PARAMETER misc cmdDelete
MESSAGE
@@ -304,7 +309,7 @@ Now draw the green circles...
END
STEP
ORIG 1.0 0.0 0.0
-COMMAND DrawFilledCircleTangent
+COMMAND DrawFilledCircleCenter
PARAMETER draw linecolor 0
PARAMETER GROUP draw
PARAMETER draw linecolor 65280
@@ -324,13 +329,13 @@ END
STEP
ORIG 1.0 0.0 0.0
COMMAND Select
-KEYSTATE 12
+KEYSTATE S
MOUSE 1 3.719 4.156
-KEYSTATE 12
+KEYSTATE S
MOUSE 2 3.719 4.156
-KEYSTATE 12
+KEYSTATE S
MOUSE 3 10.531 0.969
-KEYSTATE 12
+KEYSTATE S
MOUSE 4 10.531 0.969
BIGPAUSE
PARAMETER misc cmdGroup
@@ -343,9 +348,9 @@ _________________________________________
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.
END
STEP
-KEYSTATE 2
+KEYSTATE S
MOUSE 2 5.000 2.188
-KEYSTATE 2
+KEYSTATE S
MOUSE 4 5.000 2.188
REGRESSION START 10 - group 2
STRAIGHT 19 0 0 0 0 DEMO 2
@@ -389,21 +394,21 @@ MOUSE 3 10.000 2.000
MOUSE 4 10.000 2.000
MESSAGE
-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.
+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.
END
COMMAND CurveEndPt
MOUSE 1 2.000 2.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 2 2.000 2.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 3 9.000 2.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 4 9.000 2.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 2 9.000 2.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 3 8.875 3.062
-KEYSTATE 12
+KEYSTATE S
MOUSE 4 8.875 3.062
MESSAGE
_________________________________________
@@ -422,7 +427,7 @@ _________________________________________
We'll make the Length 7.5".
-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.
+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.
END
STEP
#DESCRIBE Pivot 0
@@ -451,7 +456,7 @@ MOUSE 4 7.688 2.625
MESSAGE
_________________________________________
-Here the Left End-Point (which we don't want to move) is the Second End-Point, so we'll make that the Pivot.
+Here the Left End-Point (which we don't want to move) is the Second End-Point, so we'll make that the Lock.
END
STEP
#DESCRIBE Pivot 2
@@ -459,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
@@ -483,11 +488,11 @@ COMMAND Select
MOUSE 1 7.500 2.750
MOUSE 2 7.500 2.750
MOUSE 4 7.500 2.750
-KEYSTATE 12
+KEYSTATE S
MOUSE 1 8.000 2.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 2 8.000 2.000
-KEYSTATE 12
+KEYSTATE S
MOUSE 4 8.000 2.000
MESSAGE
and Group them.
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 9f2b66f..32555fb 100644
--- a/app/lib/demos/dmlines.xtr
+++ b/app/lib/demos/dmlines.xtr
@@ -48,45 +48,45 @@ _________________________________________
Lines are drawn by clicking at the starting postion and dragging to the final position.
-By default, the new line will snap to existing objects. Hold down the <Ctrl> and <Alt> keys to prevent this from happening.
+By default, the new line will snap to existing objects. Hold down the <Alt> keys to prevent this from happening.
END
STEP
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 0.533 4.693
-KEYSTATE 12
+KEYSTATE A
MOUSE 3 4.320 4.693
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 4.320 4.693
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 4.373 4.693
-KEYSTATE 12
+KEYSTATE A
MOUSE 3 4.533 5.120
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 4.533 5.120
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 0.533 4.693
-KEYSTATE 12
+KEYSTATE A
MOUSE 3 0.533 4.693
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 0.267 5.120
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 0.267 3.253
-KEYSTATE 12
+KEYSTATE A
MOUSE 3 0.533 3.787
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 0.533 3.787
STEP
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 0.533 3.787
-KEYSTATE 12
+KEYSTATE A
MOUSE 3 4.320 3.787
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 4.320 3.787
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 4.320 3.787
-KEYSTATE 12
+KEYSTATE A
MOUSE 3 4.533 3.307
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 4.533 3.307
MESSAGE
_________________________________________
@@ -94,9 +94,10 @@ _________________________________________
You also draw in various colors and line widths.
END
PARAMETER draw linecolor 255
-PARAMETER draw linewidth 6
+PARAMETER draw linewidth 0.055555
STEP
-MOUSE 2 0.747 4.800
+KEYSTATE A
+MOUSE 2 0.747 4.693
MOUSE 4 0.693 6.560
MOUSE 2 0.693 6.560
MOUSE 4 1.493 7.573
@@ -115,7 +116,7 @@ Here we will draw a Curve by dragging from one End-Point to the other to define
END
STEP
COMMAND DrawCurveChord
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 0.800 3.680
#MOUSE 3 0.800 3.573
#MOUSE 3 0.853 3.467
@@ -174,12 +175,12 @@ MOUSE 2 0.800 3.680
#MOUSE 3 3.947 3.680
#MOUSE 3 3.947 3.733
#MOUSE 3 3.947 3.787
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 4.107 3.787
BIGPAUSE
-KEYSTATE 12
+KEYSTATE A
MOUSE 2 2.9 3.78
-KEYSTATE 12
+KEYSTATE A
MOUSE 4 2.9 1.5
MESSAGE
_________________________________________
@@ -195,10 +196,10 @@ MESSAGE
_________________________________________
Circles can be drawn by clicking on the center or edge and dragging to set the radius.
-Here we will drag from the Center.
+Here we will drag from the edge to the Center.
END
STEP
-COMMAND DrawCircleCenter
+COMMAND DrawCircleTangent
MOUSE 2 7.360 6.453
MOUSE 4 8.533 5.920
MESSAGE
@@ -212,15 +213,15 @@ MOUSE 2 11.307 6.400
MOUSE 4 11.307 6.400
#BIGPAUSE
#PARAMETER misc cmdDelete
-KEYSTATE 4
+KEYSTATE C
MOUSE 2 4.160 5.493
-KEYSTATE 4
+KEYSTATE C
MOUSE 4 4.160 5.493
#BIGPAUSE
#PARAMETER misc cmdDelete
-KEYSTATE 4
+KEYSTATE C
MOUSE 2 3.467 6.933
-KEYSTATE 4
+KEYSTATE C
MOUSE 4 3.467 6.933
BIGPAUSE
PARAMETER misc cmdDelete
diff --git a/app/lib/demos/dmlines2.xtr b/app/lib/demos/dmlines2.xtr
index 13f43b3..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
@@ -184,7 +184,7 @@ _________________________________________
Filled Boxes and Circles work the same as line Boxes and Circles.
END
-COMMAND DrawFilledCircleTangent
+COMMAND DrawFilledCircleCenter
PARAMETER draw linecolor 16776960
BIGPAUSE
MOUSE 2 7.360 6.45333
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 32662b1..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 rescale toggle 0
-PARAMETER rescale toS 4 HO
PARAMETER misc cmdSelectAll
+PARAMETER misc cmdRescale
+PARAMETER rescale toggle 0
+PARAMETER rescale toS 5 HO
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/dmtbledg.xtr b/app/lib/demos/dmtbledg.xtr
index 4e00dcd..b2731d1 100644
--- a/app/lib/demos/dmtbledg.xtr
+++ b/app/lib/demos/dmtbledg.xtr
@@ -47,7 +47,7 @@ MOUSE 1 58.000 26.167
MESSAGE
_________________________________________
-A Table Edge is attracted to the ends of other Table Edges.
+A Table Edge is attracted to other objects, unless you hold down the Alt key.
END
STEP
MOUSE 2 58.000 26.167
@@ -116,19 +116,32 @@ MOUSE 3 57.833 1.833
MOUSE 3 58.000 1.833
MOUSE 3 58.333 1.833
BIGPAUSE
+#KEYSTATE C
MOUSE 3 58.333 1.667
+#KEYSTATE C
MOUSE 3 58.500 1.667
+#KEYSTATE C
MOUSE 3 58.667 1.667
+#KEYSTATE C
MOUSE 3 58.667 1.500
+#KEYSTATE C
MOUSE 3 58.833 1.500
+#KEYSTATE C
MOUSE 3 58.667 1.500
+#KEYSTATE C
MOUSE 3 58.500 1.500
+#KEYSTATE C
MOUSE 3 58.167 1.667
+#KEYSTATE C
MOUSE 3 58.167 1.833
+#KEYSTATE C
MOUSE 3 58.000 1.833
+#KEYSTATE C
MOUSE 3 57.833 1.833
-MOUSE 3 57.667 2.000
-MOUSE 4 57.667 2.000
+#KEYSTATE C
+MOUSE 3 58.200 2.000
+#KEYSTATE C
+MOUSE 4 58.200 2.000
MESSAGE
_________________________________________
@@ -180,40 +193,40 @@ MOUSE 8200 28.333 6.000
MESSAGE
_________________________________________
-If you hold down the Control key while dragging then the Table Edge will be attracted to other objects.
+Unless you hold down the Alt key while dragging then the Table Edge will be attracted to other objects.
END
STEP
MOUSE 2 28.167 9.333
MOUSE 4 28.167 9.333
-KEYSTATE 4
+#KEYSTATE A
MOUSE 2 28.167 9.333
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.167 9.000
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.167 8.667
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.500 7.667
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.500 7.500
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.500 7.167
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.500 6.833
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.500 6.667
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.500 6.500
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.500 6.333
-KEYSTATE 4
+#KEYSTATE A
MOUSE 3 28.500 6.167
-KEYSTATE 4
-MOUSE 3 28.333 6.167
-KEYSTATE 4
-MOUSE 3 28.333 6.000
-KEYSTATE 4
-MOUSE 4 28.167 5.667
-MOUSE 8200 28.167 5.667
+#KEYSTATE A
+MOUSE 3 28.600 6.167
+#KEYSTATE A
+MOUSE 3 28.600 6.000
+#KEYSTATE A
+MOUSE 4 28.600 5.667
+MOUSE 8200 28.600 5.667
STEP
MESSAGE
=========================================
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/Garden RGS.xtc b/app/lib/examples/Garden RGS.xtc
new file mode 100644
index 0000000..2486b3a
--- /dev/null
+++ b/app/lib/examples/Garden RGS.xtc
@@ -0,0 +1,39643 @@
+#XTrackCAD Version: 5.2.2Beta2, Date: Mon Jun 7 13:56:58 2021
+
+VERSION 12 5.2.0
+TITLE1 RGS by Russell Shilling
+TITLE2 Rio Grande Southern - Ridgway to Rico
+MAPSCALE 256
+ROOMSIZE 840.000000 x 1200.000000
+SCALE Fn3
+LAYERS 0 1 0 1 0 0 0 1 0 "Main"
+LAYERS 1 1 0 1 8421376 0 0 1 0 "Branch"
+LAYERS 2 1 0 1 32768 0 0 1 0 "Structure"
+LAYERS 3 0 0 0 32768 0 0 1 0 "Vegetation"
+LAYERS 4 1 0 0 12632256 0 0 1 0 "Hardscape"
+LAYERS 5 1 0 1 32960 0 0 1 0 "Water Feature"
+LAYERS 6 1 0 1 8421504 0 0 1 0 ""
+LAYERS 7 1 0 1 8388736 0 0 1 0 "Labels"
+LAYERS 8 0 0 1 8421376 0 0 1 0 "Stonework"
+LAYERS 9 0 0 1 8404992 0 1 1 0 "Benchwork"
+LAYERS 10 1 0 0 16711680 0 0 1 0 "Grid"
+LAYERS 11 1 0 1 8421376 1 0 1 0 "Rico Module"
+LAYERS 13 0 0 1 16776960 0 0 1 0 ""
+LAYERS 14 0 0 1 65280 0 0 1 0 ""
+LAYERS CURRENT 0
+DRAW 1 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13816495 0.000000 13 0
+ 622.166667 379.895833 0
+ 647.916667 379.895833 0
+ 674.500000 392.125000 0
+ 700.916667 428.489583 0
+ 700.416667 476.739583 0
+ 680.666667 518.489583 0
+ 660.416667 526.989583 0
+ 620.666667 543.489583 0
+ 614.666667 529.239583 0
+ 636.666667 518.989583 0
+ 652.416667 478.239583 0
+ 643.000000 394.125000 0
+ 622.666667 387.333333 0
+ END$SEGS
+DRAW 2 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16761220 0.000000 13 0
+ 365.333333 483.916667 0
+ 159.833333 468.416667 0
+ 137.000000 487.500000 0
+ 77.000000 487.000000 0
+ 76.833333 439.916667 0
+ 135.500000 413.875000 0
+ 375.000000 435.062500 0
+ 435.500000 428.062500 0
+ 474.500000 406.062500 0
+ 504.833333 438.916667 0
+ 446.833333 485.416667 0
+ 401.833333 509.416667 0
+ 365.704958 509.932786 0
+ END$SEGS
+DRAW 3 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 10 0
+ 205.312500 540.906250 0
+ 200.883929 542.116071 0
+ 195.508929 542.616071 0
+ 189.508929 541.741071 0
+ 183.133929 542.241071 0
+ 187.883929 544.491071 0
+ 193.133929 544.491071 0
+ 196.883929 545.866071 0
+ 200.812500 545.531250 0
+ 205.937500 546.156250 0
+ END$SEGS
+DRAW 4 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13816495 0.000000 6 0
+ 565.833333 407.291667 0
+ 560.333333 401.291667 0
+ 449.833333 487.291667 0
+ 459.416667 500.333333 0
+ 527.333333 446.791667 0
+ 547.833333 422.291667 0
+ END$SEGS
+DRAW 5 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13816495 0.000000 10 0
+ 459.725026 500.090240 0
+ 449.156250 507.104167 0
+ 426.166667 518.583333 0
+ 409.666667 524.583333 0
+ 400.333333 526.979167 0
+ 363.250000 532.375000 0
+ 362.500000 524.125000 0
+ 381.500000 520.625000 0
+ 402.250000 512.125000 0
+ 450.406250 486.979167 0
+ END$SEGS
+DRAW 6 8 0 0 0 23.386902 24.331848 0 0.000000
+ F4 16761220 0.000000 4 0
+ 258.673704 797.954139 0
+ 270.423704 809.579139 0
+ 305.738095 773.886905 0
+ 294.423704 762.079139 0
+ END$SEGS
+DRAW 7 8 0 0 0 11.874997 12.000003 0 0.000000
+ F4 16761220 0.000000 4 0
+ 257.988095 798.261905 0
+ 269.738095 809.761905 0
+ 305.738095 773.886905 0
+ 294.238095 761.886905 0
+ END$SEGS
+DRAW 8 8 0 0 0 35.636902 36.081848 0 0.000000
+ F4 16761220 0.000000 4 0
+ 258.673704 798.079139 0
+ 269.738095 809.761905 0
+ 305.738095 773.886905 0
+ 294.173704 762.079139 0
+ END$SEGS
+DRAW 9 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 13816495 0.000000 16 0
+ 136.166667 412.385417 0
+ 228.166667 420.885417 0
+ 375.000000 434.000000 0
+ 436.250000 427.250000 0
+ 473.000000 406.250000 0
+ 482.500000 388.625000 0
+ 493.937500 368.625000 0
+ 475.187500 363.812500 0
+ 466.375000 379.437500 0
+ 458.625000 392.750000 0
+ 430.750000 409.000000 0
+ 375.166667 411.885417 0
+ 239.500000 399.500000 0
+ 186.500000 385.125000 0
+ 185.000000 394.781250 0
+ 138.000000 390.781250 0
+ END$SEGS
+DRAW 10 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 18 0
+ 280.522321 543.964286 0
+ 301.293750 540.925000 0
+ 303.168750 542.925000 0
+ 302.543750 545.050000 0
+ 303.418750 547.425000 0
+ 302.712860 550.248559 0
+ 301.168750 551.800000 0
+ 298.168750 554.050000 0
+ 296.918750 553.175000 0
+ 294.168750 554.425000 0
+ 291.293750 553.300000 0
+ 288.668750 554.675000 0
+ 286.293750 553.925000 0
+ 284.793750 554.925000 0
+ 282.668750 553.925000 0
+ 280.293750 552.175000 0
+ 280.043750 549.925000 0
+ 281.418750 547.550000 0
+ END$SEGS
+DRAW 11 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 32960 0.000000 23 0
+ 516.802083 544.229167 0
+ 520.333333 526.729167 0
+ 530.802083 513.979167 0
+ 557.802083 504.229167 0
+ 576.541667 484.912281 0
+ 587.541667 468.912281 0
+ 588.541667 454.912281 0
+ 582.166667 440.677083 0
+ 580.166667 424.177083 0
+ 584.916667 410.177083 0
+ 583.333333 395.729167 0
+ 596.750000 390.906250 0
+ 597.166667 409.677083 0
+ 593.041667 427.412281 0
+ 595.541667 440.912281 0
+ 602.041667 456.412281 0
+ 599.541667 472.412281 0
+ 588.041667 488.412281 0
+ 579.041667 500.912281 0
+ 564.333333 514.729167 0
+ 541.302083 523.979167 0
+ 532.802083 532.479167 0
+ 531.333333 541.729167 0
+ END$SEGS
+STRUCTURE 12 3 0 0 0 Fn3 2 608.333333 488.729167 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+CURVE 13 0 0 0 0 Fn3 2 349.450861 830.061982 0 72.000000 0 0.000000 0.000000
+ T4 14 349.450861 758.061982 90.000000 11 0.000000 0.000000 0.0 0.0 1 3 0 7.549752
+ T4 327 299.041951 778.652432 314.436819 9 0.000000 0.000000 6.820000 6.820000 1 1 0 7.549752
+ END$SEGS
+CURVE 14 0 0 0 0 Fn3 2 349.450861 830.061982 0 72.000000 0 0.000000 0.000000
+ T4 15 355.726075 758.335964 85.000000 0 0.0 0.0 0.0 0.0 0 0 0 8.361615
+ T4 13 349.450861 758.061982 270.000000 11 0.000000 0.000000 0.0 0.0 1 3 0 8.361615
+ END$SEGS
+STRAIGHT 15 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 14 355.726075 758.335964 265.000000 0 0.0 0.0 0.0 0.0 0 0 0 9.108908
+ T4 70 406.432448 762.772127 85.000000 0 0.0 0.0 0.0 0.0 0 0 0 9.108908
+ END$SEGS
+CURVE 16 0 0 0 0 Fn3 2 477.070505 624.402100 0 144.000000 0 0.000000 0.000000
+ T4 69 464.520078 767.854136 265.000000 0 0.0 0.0 0.0 0.0 0 0 0 11.496056
+ T4 17 479.583651 768.380168 91.000000 0 0.0 0.0 0.0 0.0 0 0 0 11.496056
+ END$SEGS
+STRAIGHT 17 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 16 479.583651 768.380168 271.000000 0 0.0 0.0 0.0 0.0 0 0 0 12.634047
+ T4 18 551.572685 767.123595 91.000000 0 0.0 0.0 0.0 0.0 0 0 0 12.634047
+ END$SEGS
+STRAIGHT 18 0 128 0 0 Fn3 2 0.000000 0.000000
+ T4 17 551.572685 767.123595 271.000000 0 0.0 0.0 0.0 0.0 0 0 0 14.437486
+ T4 19 617.562633 765.971736 91.000000 9 -0.062633 -5.721736 15.300000 15.300000 1 1 0 14.437486
+ END$SEGS
+CURVE 19 0 0 0 0 Fn3 2 616.306060 693.982702 0 72.000000 0 0.000000 0.000000
+ T4 18 617.562633 765.971736 271.000000 9 -0.062633 -5.721736 15.300000 15.300000 1 1 0 18.107258
+ T4 361 648.993521 629.830306 243.000000 0 0.0 0.0 0.0 0.0 0 0 0 18.107258
+ END$SEGS
+STRAIGHT 20 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 361 506.643721 679.348100 123.000000 0 0.0 0.0 0.0 0.0 0 0 0 25.740962
+ T4 21 498.592484 684.576635 303.000000 0 0.0 0.0 0.0 0.0 0 0 0 25.740962
+ END$SEGS
+CURVE 21 0 0 0 0 Fn3 2 459.378473 624.192354 0 72.000000 0 0.000000 0.000000
+ T4 22 459.378473 696.192354 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 26.491524
+ T4 20 498.592484 684.576635 123.000000 0 0.0 0.0 0.0 0.0 0 0 0 26.491524
+ END$SEGS
+STRAIGHT 22 0 128 0 0 Fn3 2 0.000000 0.000000
+ T4 59 438.999999 696.192365 270.000000 9 -0.374999 -10.942365 27.700000 27.700000 1 1 0 27.400497
+ T4 21 459.378473 696.192354 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 27.400497
+ END$SEGS
+CURVE 23 0 0 0 0 Fn3 2 279.378473 768.192354 0 72.000000 0 0.000000 0.000000
+ T4 58 279.378473 696.192354 90.000000 11 0.000000 0.000000 0.0 0.0 1 3 0 32.644924
+ T4 24 252.406799 701.435116 292.000000 0 0.0 0.0 0.0 0.0 0 0 0 32.644924
+ END$SEGS
+STRAIGHT 24 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 23 252.406799 701.435116 112.000000 0 0.0 0.0 0.0 0.0 0 0 0 33.173058
+ T4 25 241.280593 705.930395 292.000000 0 0.0 0.0 0.0 0.0 0 0 0 33.173058
+ END$SEGS
+CURVE 25 0 0 0 0 Fn3 2 274.995186 789.376942 0 90.000000 0 0.000000 0.000000
+ T4 24 241.280593 705.930395 112.000000 0 0.0 0.0 0.0 0.0 0 0 0 33.334889
+ T4 57 241.142895 705.986161 292.094444 0 0.0 0.0 0.0 0.0 0 0 0 33.334889
+ END$SEGS
+STRAIGHT 26 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 320 153.171184 595.313423 264.000000 0 0.0 0.0 0.0 0.0 0 0 0 42.758370
+ T4 27 188.966485 599.075601 84.000000 0 0.0 0.0 0.0 0.0 0 0 0 42.758370
+ END$SEGS
+CURVE 27 0 0 0 0 Fn3 2 199.001218 503.601499 0 96.000000 0 0.000000 0.000000
+ T4 26 188.966485 599.075601 264.000000 0 0.0 0.0 0.0 0.0 0 0 0 43.594954
+ T4 28 215.671443 598.143043 100.000000 0 0.0 0.0 0.0 0.0 0 0 0 43.594954
+ END$SEGS
+STRAIGHT 28 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 27 215.671443 598.143043 280.000000 0 0.0 0.0 0.0 0.0 0 0 0 44.271783
+ T4 29 239.306829 593.975487 100.000000 0 0.0 0.0 0.0 0.0 0 0 0 44.271783
+ END$SEGS
+CURVE 29 0 0 0 0 Fn3 2 255.977054 688.517031 0 96.000000 0 0.000000 0.000000
+ T4 30 266.011787 593.042929 84.000000 0 0.0 0.0 0.0 0.0 0 0 0 44.948613
+ T4 28 239.306829 593.975487 280.000000 0 0.0 0.0 0.0 0.0 0 0 0 44.948613
+ END$SEGS
+STRAIGHT 30 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 29 266.011787 593.042929 264.000000 0 0.0 0.0 0.0 0.0 0 0 0 45.889203
+ T4 31 309.571846 597.621276 84.000000 0 0.0 0.0 0.0 0.0 0 0 0 45.889203
+ END$SEGS
+CURVE 31 0 0 0 0 Fn3 2 319.606578 502.147174 0 96.000000 0 0.000000 0.000000
+ T4 30 309.571846 597.621276 264.000000 0 0.0 0.0 0.0 0.0 0 0 0 47.186913
+ T4 32 361.690208 588.431403 116.000000 0 0.0 0.0 0.0 0.0 0 0 0 47.186913
+ END$SEGS
+STRAIGHT 32 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 31 361.690208 588.431403 296.000000 0 0.0 0.0 0.0 0.0 0 0 0 48.347811
+ T4 83 391.826700 573.732963 116.000000 0 0.0 0.0 0.0 0.0 0 0 0 48.347811
+ END$SEGS
+CURVE 33 0 128 0 0 Fn3 2 603.756868 475.000619 0 60.000000 0 0.000000 0.000000
+ T4 315 639.235604 523.387180 306.250185 0 0.0 0.0 0.0 0.0 0 0 0 55.801170
+ T4 469 662.739816 486.001156 169.435568 9 -8.262544 -0.229026 56.138000 56.138000 1 1 0 55.801170
+ END$SEGS
+STRAIGHT 34 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 469 663.400228 468.468412 6.250185 0 0.0 0.0 0.0 0.0 0 0 0 56.138000
+ E4 656.868022 408.825054 186.250185 0 0.0 0.0 0.0 0.0 0 0 0 56.138000
+ END$SEGS
+CURVE 35 0 128 0 0 Fn3 2 614.921161 452.824059 0 78.000000 0 0.000000 0.000000
+ T4 86 644.140475 525.144400 292.000000 0 0.0 0.0 0.0 0.0 0 0 0 55.809743
+ T4 36 683.791073 489.442841 152.000000 9 5.563094 2.202992 56.138000 56.138000 1 1 0 55.809743
+ END$SEGS
+CURVE 36 0 128 0 0 Fn3 2 620.218846 455.640889 0 72.000000 0 0.000000 0.000000
+ T4 35 683.791073 489.442841 332.000000 9 5.563094 2.202992 56.138000 56.138000 1 1 0 56.515000
+ T4 37 681.278309 417.486702 212.000000 9 5.159191 -2.596077 56.892000 56.892000 1 1 0 56.515000
+ END$SEGS
+CURVE 37 0 128 0 0 Fn3 2 620.218846 455.640889 0 72.000000 0 0.000000 0.000000
+ T4 36 681.278309 417.486702 32.000000 9 5.159191 -2.596077 56.892000 56.892000 1 1 0 57.850915
+ T4 360 623.193186 383.702351 267.632572 10 0.244314 -5.827351 0.0 0.0 1 2 0 57.850915
+ END$SEGS
+STRAIGHT 38 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 341 433.794785 500.773111 117.999848 0 0.0 0.0 0.0 0.0 0 0 0 65.415630
+ T4 342 408.865529 514.028176 297.999848 3 0.000000 0.000000 0.0 0.0 0 3 0 65.415630
+ END$SEGS
+STRAIGHT 39 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 313 301.810916 537.402510 98.500000 0 0.0 0.0 0.0 0.0 0 0 0 69.151579
+ T4 312 278.074537 540.949944 278.500000 0 0.0 0.0 0.0 0.0 0 0 0 69.151579
+ END$SEGS
+CURVE 40 0 128 0 0 Fn3 2 192.675691 456.646698 0 96.000000 0 0.000000 0.000000
+ T4 311 176.005466 551.188243 260.000000 10 -13.505466 8.311757 0.0 0.0 1 2 0 71.881109
+ T4 312 206.865394 551.592221 98.500000 10 2.384606 10.407779 0.0 0.0 1 2 0 71.881109
+ END$SEGS
+CURVE 41 0 128 0 0 Fn3 2 123.510823 468.821305 0 72.000000 0 0.000000 0.000000
+ T4 42 53.084196 483.790946 192.000000 10 9.684743 -2.514431 0.0 0.0 1 2 0 75.288936
+ T4 311 111.008154 539.727463 80.000000 10 -9.133154 5.897537 0.0 0.0 1 2 0 75.288936
+ END$SEGS
+CURVE 42 0 128 0 0 Fn3 2 123.510823 468.821305 0 72.000000 0 0.000000 0.000000
+ T4 43 129.786037 397.095286 85.000000 0 0.0 0.0 0.0 0.0 0 0 0 78.305338
+ T4 41 53.084196 483.790946 12.000000 10 9.684743 -2.514431 0.0 0.0 1 2 0 78.305338
+ END$SEGS
+STRAIGHT 43 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 42 129.786037 397.095286 265.000000 0 0.0 0.0 0.0 0.0 0 0 0 80.374826
+ T4 95 146.139908 398.526064 85.000000 9 -0.806575 9.140603 80.600000 80.600000 1 1 0 80.374826
+ END$SEGS
+STRAIGHT 44 1 128 0 0 Fn3 2 0.000000 0.000000
+ T4 106 179.370985 390.189738 85.000000 0 0.0 0.0 0.0 0.0 0 0 0 85.453669
+ T4 45 99.800614 383.228132 265.000000 11 -0.550614 8.521868 0.0 0.0 1 3 0 85.453669
+ END$SEGS
+CURVE 45 1 0 0 0 Fn3 2 94.571269 442.999814 0 60.000000 0 0.000000 0.000000
+ T4 44 99.800614 383.228132 85.000000 11 -0.550614 8.521868 0.0 0.0 1 3 0 86.994668
+ T4 46 41.594413 471.168107 28.000000 0 0.0 0.0 0.0 0.0 0 0 0 86.994668
+ END$SEGS
+CURVE 46 1 128 0 0 Fn3 2 94.571269 442.999814 0 60.000000 0 0.000000 0.000000
+ T4 45 41.594413 471.168107 208.000000 0 0.0 0.0 0.0 0.0 0 0 0 88.265580
+ T4 47 50.690047 483.919715 43.000000 9 -10.546108 4.356800 88.460000 88.460000 1 1 0 88.265580
+ END$SEGS
+CURVE 47 1 128 0 0 Fn3 2 94.571269 442.999814 0 60.000000 0 0.000000 0.000000
+ T4 46 50.690047 483.919715 223.000000 9 -10.546108 4.356800 88.460000 88.460000 1 1 0 88.460000
+ T4 623 94.571269 502.999814 90.000000 10 -0.821269 -6.749814 0.0 0.0 1 2 0 88.460000
+ END$SEGS
+CURVE 48 0 0 0 0 Fn3 2 412.682712 348.175409 0 72.000000 0 0.000000 0.000000
+ T4 96 421.698203 419.608741 277.193187 0 0.0 0.0 0.0 0.0 0 0 0 89.573850
+ T4 49 472.373418 388.437298 146.000000 0 0.0 0.0 0.0 0.0 0 0 0 89.573850
+ END$SEGS
+CURVE 49 0 128 0 0 Fn3 2 412.682712 348.175409 0 72.000000 0 0.000000 0.000000
+ T4 48 472.373418 388.437298 326.000000 0 0.0 0.0 0.0 0.0 0 0 0 90.833868
+ T4 310 482.541301 365.604625 165.991110 9 15.708699 0.145375 91.200000 91.200000 1 1 0 90.833868
+ END$SEGS
+CURVE 50 0 0 0 0 Fn3 2 412.682712 348.175409 0 72.000000 0 0.000000 0.000000
+ T4 770 456.162114 290.786023 52.851668 0 0.0 0.0 0.0 0.0 0 0 0 93.082508
+ T4 112 419.099021 276.461875 264.887429 0 0.0 0.0 0.0 0.0 0 0 0 93.082508
+ END$SEGS
+CURVE 51 1 0 0 0 Fn3 2 507.241455 223.241648 0 60.000000 0 0.000000 0.000000
+ T4 114 492.704361 281.453957 255.978552 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ T4 52 532.598550 277.620115 115.000000 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+STRAIGHT 52 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 51 532.598550 277.620115 295.000000 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ T4 626 597.365211 247.419059 115.000000 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+CURVE 53 0 128 0 0 Fn3 2 130.744699 252.269426 0 72.000000 0 0.000000 0.000000
+ T4 117 59.856900 264.875776 190.083723 0 0.0 0.0 0.0 0.0 0 0 0 97.180122
+ T4 607 173.740735 310.021836 126.667310 0 0.0 0.0 0.0 0.0 0 0 0 97.180122
+ END$SEGS
+STRAIGHT 54 0 128 0 0 Fn3 2 0.000000 0.000000
+ T4 318 172.608632 733.675665 291.999943 10 -0.233632 12.199335 0.0 0.0 1 2 0 35.157008
+ T4 55 183.595609 729.236641 111.999943 0 0.0 0.0 0.0 0.0 0 0 0 35.157008
+ END$SEGS
+TURNOUT 55 0 0 1 0 Fn3 2 183.595609 729.236641 0 21.999943 "NMRA G #5 Right 5R"
+ T4 54 183.595609 729.236641 291.999943 0 0.0 0.0 0.0 0.0 0 0 0 34.663262
+ T4 56 206.823123 719.852152 111.999943 0 0.0 0.0 0.0 0.0 0 0 0 34.663262
+ T4 63 205.203067 716.767776 123.421129 0 0.0 0.0 0.0 0.0 0 0 0 34.663262
+ 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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+STRAIGHT 56 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 55 206.823123 719.852152 291.999791 0 0.0 0.0 0.0 0.0 0 0 0 34.168003
+ T4 57 217.915404 715.370614 111.999791 0 0.0 0.0 0.0 0.0 0 0 0 34.168003
+ END$SEGS
+TURNOUT 57 0 0 0 0 Fn3 2 241.142895 705.986161 0 202.094444 "NMRA G #5 Right 5R"
+ T4 25 241.142895 705.986161 112.094444 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ T4 56 217.930916 715.409009 292.094444 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ T4 91 219.556066 718.490704 303.515630 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ 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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+STRAIGHT 58 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 23 279.378473 696.192354 269.999920 11 0.000000 0.000000 0.0 0.0 1 3 0 30.484006
+ T4 59 413.948332 696.192363 89.999920 0 0.0 0.0 0.0 0.0 0 0 0 30.484006
+ END$SEGS
+TURNOUT 59 0 0 1 0 Fn3 2 438.999999 696.192365 0 180.000000 "NMRA G #5 Left 5L"
+ T4 22 438.999999 696.192365 90.000000 9 -0.374999 -10.942365 27.700000 27.700000 1 1 0 28.354467
+ T4 58 413.948332 696.192432 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 28.354467
+ T4 66 414.294990 692.725764 258.578814 0 0.0 0.0 0.0 0.0 0 0 0 28.354467
+ 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 25.051667 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ END$SEGS
+STRAIGHT 60 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 61 279.378505 688.192354 269.999920 0 0.0 0.0 0.0 0.0 0 0 0 30.853025
+ T4 65 384.500196 688.192640 89.999920 0 0.0 0.0 0.0 0.0 0 0 0 30.853025
+ END$SEGS
+CURVE 61 0 0 0 0 Fn3 2 279.378473 768.192354 0 80.000000 0 0.000000 0.000000
+ T4 60 279.378261 688.192354 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 32.638189
+ T4 62 249.409773 694.017715 292.000000 0 0.0 0.0 0.0 0.0 0 0 0 32.638189
+ END$SEGS
+STRAIGHT 62 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 64 231.844111 701.114743 292.000247 0 0.0 0.0 0.0 0.0 0 0 0 33.290848
+ T4 61 249.409929 694.017652 112.000095 0 0.0 0.0 0.0 0.0 0 0 0 33.290848
+ END$SEGS
+STRAIGHT 63 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 55 205.203067 716.767776 303.420977 0 0.0 0.0 0.0 0.0 0 0 0 34.159582
+ T4 64 217.530001 708.633242 123.420977 0 0.0 0.0 0.0 0.0 0 0 0 34.159582
+ END$SEGS
+CURVE 64 0 0 0 0 Fn3 2 262.281094 776.447480 0 81.249192 0 0.000000 0.000000
+ T4 62 231.844111 701.114743 112.000247 0 0.0 0.0 0.0 0.0 0 0 0 33.752657
+ T4 63 217.530001 708.633242 303.420977 0 0.0 0.0 0.0 0.0 0 0 0 33.752657
+ END$SEGS
+CURVE 65 0 0 0 0 Fn3 2 384.499898 761.751761 0 73.559121 0 0.000000 0.000000
+ T4 66 399.066240 689.649293 78.578814 0 0.0 0.0 0.0 0.0 0 0 0 29.278849
+ T4 60 384.500196 688.192640 269.999920 0 0.0 0.0 0.0 0.0 0 0 0 29.278849
+ END$SEGS
+STRAIGHT 66 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 59 414.294990 692.725764 78.579039 0 0.0 0.0 0.0 0.0 0 0 0 28.881978
+ T4 65 399.066240 689.649293 258.579039 0 0.0 0.0 0.0 0.0 0 0 0 28.881978
+ END$SEGS
+STRUCTURE 67 2 0 0 0 Fn3 2 506.443001 756.974728 0 0.840209 "Custom Rico Coal Pocket Rico-3"
+ D 0.000000 0.000000
+ F4 8553090 0.010417 4 0
+ 2.000000 7.250000 0
+ 34.875000 7.250000 0
+ 34.875000 0.000000 0
+ 2.000000 0.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 0.380000 0
+ 1.900000 0.380000 0
+ 1.900000 0.000000 0
+ 0.000000 0.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 0.780000 0
+ 1.900000 0.780000 0
+ 1.900000 0.400000 0
+ 0.000000 0.400000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 1.180000 0
+ 1.900000 1.180000 0
+ 1.900000 0.800000 0
+ 0.000000 0.800000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 1.580000 0
+ 1.900000 1.580000 0
+ 1.900000 1.200000 0
+ 0.000000 1.200000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 1.980000 0
+ 1.900000 1.980000 0
+ 1.900000 1.600000 0
+ 0.000000 1.600000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 2.380000 0
+ 1.900000 2.380000 0
+ 1.900000 2.000000 0
+ 0.000000 2.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 2.780000 0
+ 1.900000 2.780000 0
+ 1.900000 2.400000 0
+ 0.000000 2.400000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 3.180000 0
+ 1.900000 3.180000 0
+ 1.900000 2.800000 0
+ 0.000000 2.800000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 3.580000 0
+ 1.900000 3.580000 0
+ 1.900000 3.200000 0
+ 0.000000 3.200000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 3.980000 0
+ 1.900000 3.980000 0
+ 1.900000 3.600000 0
+ 0.000000 3.600000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 4.380000 0
+ 1.900000 4.380000 0
+ 1.900000 4.000000 0
+ 0.000000 4.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 4.780000 0
+ 1.900000 4.780000 0
+ 1.900000 4.400000 0
+ 0.000000 4.400000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 5.180000 0
+ 1.900000 5.180000 0
+ 1.900000 4.800000 0
+ 0.000000 4.800000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 5.580000 0
+ 1.900000 5.580000 0
+ 1.900000 5.200000 0
+ 0.000000 5.200000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 5.980000 0
+ 1.900000 5.980000 0
+ 1.900000 5.600000 0
+ 0.000000 5.600000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 6.380000 0
+ 1.900000 6.380000 0
+ 1.900000 6.000000 0
+ 0.000000 6.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 6.780000 0
+ 1.900000 6.780000 0
+ 1.900000 6.400000 0
+ 0.000000 6.400000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 7.180000 0
+ 1.900000 7.180000 0
+ 1.900000 6.800000 0
+ 0.000000 6.800000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 7.580000 0
+ 1.900000 7.580000 0
+ 1.900000 7.200000 0
+ 0.000000 7.200000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 7.980000 0
+ 1.900000 7.980000 0
+ 1.900000 7.600000 0
+ 0.000000 7.600000 0
+ L3 0 0.010417 34.875000 7.250000 0 2.000000 7.250000 0
+ L3 0 0.010417 34.875000 0.000000 0 2.000000 0.000000 0
+ L3 0 0.010417 2.000000 7.250000 0 2.000000 0.000000 0
+ L3 0 0.010417 34.875000 7.250000 0 34.875000 0.000000 0
+ END$SEGS
+STRAIGHT 68 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 73 480.247383 752.366145 270.999925 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ E4 570.017514 750.799440 90.999925 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ END$SEGS
+STRAIGHT 69 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 16 464.520078 767.854136 85.000072 0 0.0 0.0 0.0 0.0 0 0 0 10.864362
+ T4 70 431.388785 764.955524 265.000072 0 0.0 0.0 0.0 0.0 0 0 0 10.864362
+ END$SEGS
+TURNOUT 70 0 0 0 0 Fn3 2 406.432448 762.772127 0 355.000000 "NMRA G #5 Right 5R"
+ T4 15 406.432448 762.772127 265.000000 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ T4 69 431.388786 764.955522 85.000000 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ T4 71 431.345577 761.471833 96.421186 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ 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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+CURVE 71 0 0 0 0 Fn3 2 423.293160 689.923538 0 72.000000 0 0.000000 0.000000
+ T4 70 431.345373 761.471856 276.421186 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ T4 72 442.370975 759.350024 105.365163 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ END$SEGS
+STRAIGHT 72 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 71 442.370975 759.350024 285.365011 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ T4 73 454.108640 756.124699 105.365011 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ END$SEGS
+CURVE 73 0 0 0 0 Fn3 2 482.090572 857.954347 0 105.604288 0 0.000000 0.000000
+ T4 68 480.247383 752.366145 90.999925 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ T4 72 454.108640 756.124699 285.365011 0 0.0 0.0 0.0 0.0 0 0 0 10.101913
+ END$SEGS
+TURNOUT 74 0 0 1 0 Fn3 2 370.455674 527.143504 0 8.499848 "NMRA G #5 Right 5R"
+ T4 336 370.455674 527.143504 278.499848 0 0.0 0.0 0.0 0.0 0 0 0 66.576146
+ T4 79 395.232180 523.440701 98.499848 0 0.0 0.0 0.0 0.0 0 0 0 66.576146
+ T4 343 394.376925 520.063350 109.921034 0 0.0 0.0 0.0 0.0 0 0 0 66.576146
+ 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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+STRAIGHT 75 0 128 0 0 Fn3 2 0.000000 0.000000
+ T4 341 460.028686 483.736699 307.999956 11 -6.028686 -6.986699 0.0 0.0 1 3 0 62.908547
+ T4 76 532.451041 427.154154 127.999956 0 0.0 0.0 0.0 0.0 0 0 0 62.908547
+ END$SEGS
+TURNOUT 76 0 0 0 0 Fn3 2 552.192024 411.730808 0 218.000000 "NMRA G #5 Right 5R"
+ T4 337 552.192024 411.730808 128.000000 0 0.0 0.0 0.0 0.0 0 0 0 61.303233
+ T4 75 532.451073 427.154196 308.000000 0 0.0 0.0 0.0 0.0 0 0 0 61.303233
+ T4 81 534.858549 429.672532 319.421186 0 0.0 0.0 0.0 0.0 0 0 0 61.303233
+ 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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+STRAIGHT 77 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 340 465.390558 489.699936 307.999956 0 0.0 0.0 0.0 0.0 0 0 0 63.294321
+ T4 82 514.261156 451.518040 127.999956 0 0.0 0.0 0.0 0.0 0 0 0 63.294321
+ END$SEGS
+STRAIGHT 78 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 340 437.063829 508.095494 118.000000 0 0.0 0.0 0.0 0.0 0 0 0 65.220779
+ T4 80 424.886925 514.569990 298.000000 0 0.0 0.0 0.0 0.0 0 0 0 65.220779
+ END$SEGS
+STRAIGHT 79 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 74 395.232180 523.440701 278.499696 0 0.0 0.0 0.0 0.0 0 0 0 66.166643
+ T4 80 400.267189 522.688282 98.499696 0 0.0 0.0 0.0 0.0 0 0 0 66.166643
+ END$SEGS
+CURVE 80 0 0 0 0 Fn3 2 388.954575 446.991000 0 76.537923 0 0.000000 0.000000
+ T4 79 400.267189 522.688282 278.499696 0 0.0 0.0 0.0 0.0 0 0 0 65.748448
+ T4 78 424.886925 514.569990 118.000000 0 0.0 0.0 0.0 0.0 0 0 0 65.748448
+ END$SEGS
+STRAIGHT 81 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 76 534.858549 429.672532 139.421338 0 0.0 0.0 0.0 0.0 0 0 0 61.842155
+ T4 82 524.675908 441.561796 319.421338 0 0.0 0.0 0.0 0.0 0 0 0 61.842155
+ END$SEGS
+CURVE 82 0 0 0 0 Fn3 2 469.688129 394.467011 0 72.398719 0 0.000000 0.000000
+ T4 77 514.261156 451.518040 307.999956 0 0.0 0.0 0.0 0.0 0 0 0 62.254033
+ T4 81 524.675908 441.561796 139.421338 0 0.0 0.0 0.0 0.0 0 0 0 62.254033
+ END$SEGS
+CURVE 83 0 0 0 0 Fn3 2 431.313901 654.693257 0 90.076679 0 0.000000 0.000000
+ T4 309 420.336087 565.288023 97.000000 0 0.0 0.0 0.0 0.0 0 0 0 49.192384
+ T4 32 391.826700 573.732963 296.000000 0 0.0 0.0 0.0 0.0 0 0 0 49.192384
+ END$SEGS
+CURVE 84 0 0 0 0 Fn3 2 180.251238 955.094070 0 72.000000 0 0.000000 0.000000
+ T4 85 108.258843 956.140540 180.832708 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 89 252.215553 957.360650 178.196089 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+CURVE 85 0 0 0 0 Fn3 2 180.251235 955.093847 0 72.000000 0 0.000000 0.000000
+ T4 88 116.190387 922.227333 152.839741 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 84 108.258840 956.140317 0.832708 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+STRAIGHT 86 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 35 644.140475 525.144400 112.000152 0 0.0 0.0 0.0 0.0 0 0 0 55.460653
+ T4 315 640.936027 526.439085 292.000152 0 0.0 0.0 0.0 0.0 0 0 0 55.460653
+ END$SEGS
+STRUCTURE 87 2 0 0 0 Fn3 2 667.479167 473.812500 0 96.289400 "Custom Ophir Depot Ophir-1"
+ D 0.000000 0.000000
+ F4 6842368 0.000000 8 0
+ 46.000000 20.000000 0
+ 38.000000 22.000000 0
+ 8.000000 22.000000 0
+ 0.000000 20.000000 0
+ 0.000000 0.000000 0
+ 46.000000 0.000000 0
+ 46.000000 0.000000 0
+ 46.000000 0.000000 0
+ F4 4276545 0.000000 5 0
+ 24.000000 21.000000 0
+ 40.000000 21.000000 0
+ 40.000000 19.000000 0
+ 24.000000 19.000000 0
+ 24.000000 19.000000 0
+ F4 8553090 0.000000 6 0
+ 43.000000 10.500000 0
+ 24.000000 10.500000 0
+ 24.000000 2.000000 0
+ 43.000000 2.000000 0
+ 43.000000 2.000000 0
+ 43.000000 2.000000 0
+ F4 8553090 0.000000 6 0
+ 24.000000 3.000000 0
+ 3.000000 3.000000 0
+ 3.000000 10.500000 0
+ 24.000000 10.500000 0
+ 24.000000 10.500000 0
+ 24.000000 10.500000 0
+ F4 12500670 0.000000 7 0
+ 43.000000 10.500000 0
+ 24.000000 10.500000 0
+ 24.000000 19.000000 0
+ 43.000000 19.000000 0
+ 43.000000 19.000000 0
+ 43.000000 19.000000 0
+ 43.000000 19.000000 0
+ F4 12500670 0.000000 9 0
+ 24.000000 10.500000 0
+ 3.000000 10.500000 0
+ 3.000000 18.000000 0
+ 24.000000 18.000000 0
+ 24.000000 18.000000 0
+ 24.000000 18.000000 0
+ 24.000000 18.000000 0
+ 24.000000 18.000000 0
+ 24.000000 18.000000 0
+ F4 12500670 0.000000 3 0
+ 32.000000 2.500000 0
+ 40.000000 2.500000 0
+ 32.000000 10.500000 0
+ F4 8553090 0.000000 6 0
+ 24.000000 2.500000 0
+ 32.000000 10.500000 0
+ 32.000000 2.500000 0
+ 32.000000 2.500000 0
+ 32.000000 2.500000 0
+ 32.000000 2.500000 0
+ F4 8553090 0.000000 8 0
+ 32.000000 18.500000 0
+ 32.000000 10.500000 0
+ 24.000000 18.500000 0
+ 24.000000 18.500000 0
+ 24.000000 18.500000 0
+ 24.000000 18.500000 0
+ 24.000000 18.500000 0
+ 24.000000 18.500000 0
+ F4 12500670 0.000000 7 0
+ 32.000000 18.500000 0
+ 40.000000 18.500000 0
+ 32.000000 10.500000 0
+ 32.000000 10.500000 0
+ 32.000000 10.500000 0
+ 32.000000 10.500000 0
+ 32.000000 10.500000 0
+ F4 6815744 0.000000 4 0
+ 35.500000 12.000000 0
+ 38.500000 12.000000 0
+ 38.500000 9.000000 0
+ 35.500000 9.000000 0
+ L3 0 0.000000 24.000000 18.500000 0 32.000000 10.500000 0
+ L3 0 0.000000 32.000000 10.500000 0 24.000000 2.500000 0
+ L3 0 0.000000 24.000000 2.500000 0 24.000000 18.500000 0
+ L3 0 0.000000 24.000000 18.500000 0 40.000000 18.500000 0
+ L3 0 0.000000 40.000000 18.500000 0 32.000000 10.500000 0
+ L3 0 0.000000 32.000000 10.500000 0 40.000000 2.500000 0
+ L3 0 0.000000 40.000000 2.500000 0 32.000000 2.500000 0
+ L3 0 0.000000 32.000000 18.500000 0 32.000000 10.500000 0
+ L3 0 0.000000 32.000000 10.500000 0 32.000000 2.500000 0
+ L3 0 0.000000 32.000000 2.500000 0 24.000000 2.500000 0
+ F4 5196085 0.000000 5 0
+ 36.000000 11.500000 0
+ 38.000000 11.500000 0
+ 38.000000 9.500000 0
+ 36.000000 9.500000 0
+ 36.000000 9.500000 0
+ END$SEGS
+CURVE 88 0 0 0 0 Fn3 2 193.503708 961.893103 0 86.894895 0 0.000000 0.000000
+ T4 352 141.936745 891.953335 126.401428 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 85 116.190387 922.227333 332.839709 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+CURVE 89 0 0 0 0 Fn3 2 -58.259407 947.584701 0 310.628830 0 0.000000 0.000000
+ T4 84 252.215553 957.360650 358.196593 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 347 252.010674 932.660005 182.754013 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+STRAIGHT 90 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 346 254.424126 882.853048 191.961484 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 731 260.167782 909.964455 11.961484 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+STRAIGHT 91 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 57 219.556066 718.490704 123.515782 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ T4 92 196.834049 733.539021 303.515782 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ END$SEGS
+CURVE 92 0 0 0 0 Fn3 2 236.590025 793.567868 0 72.000000 0 0.000000 0.000000
+ T4 91 196.833896 733.539123 123.515782 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ T4 93 166.118436 778.811337 348.173236 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ END$SEGS
+STRAIGHT 93 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 92 166.118436 778.811337 168.173388 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ E4 156.053616 826.876779 348.173388 0 0.0 0.0 0.0 0.0 0 0 0 33.672750
+ END$SEGS
+STRAIGHT 94 0 128 0 0 Fn3 2 0.000000 0.000000
+ T4 104 248.016771 407.439136 264.999919 11 -1.516771 15.060864 0.0 0.0 1 3 0 85.690712
+ T4 97 391.303907 419.975315 85.000000 0 0.0 0.0 0.0 0.0 0 0 0 85.690712
+ END$SEGS
+TURNOUT 95 0 0 0 0 Fn3 2 146.139908 398.526064 0 355.000000 "NMRA G #5 Left 5L"
+ T4 43 146.139908 398.526064 265.000000 9 -0.806575 9.140603 80.600000 80.600000 1 1 0 80.972790
+ T4 103 171.096246 400.709459 85.000000 0 0.0 0.0 0.0 0.0 0 0 0 80.972790
+ T4 99 170.448758 404.132721 73.578814 0 0.0 0.0 0.0 0.0 0 0 0 80.972790
+ 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 25.051667 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ END$SEGS
+STRAIGHT 96 0 128 0 0 Fn3 2 0.000000 0.000000
+ T4 48 421.698203 419.608741 97.193339 0 0.0 0.0 0.0 0.0 0 0 0 88.599942
+ T4 97 416.250725 420.296266 277.193339 10 0.061775 -5.577516 0.0 0.0 1 2 0 88.599942
+ END$SEGS
+TURNOUT 97 0 0 1 0 Fn3 2 416.250725 420.296266 0 187.193339 "NMRA G #5 Left 5L"
+ T4 96 416.250725 420.296266 97.193339 10 0.061775 -5.577516 0.0 0.0 1 2 0 88.153467
+ T4 101 391.396241 423.433246 277.193339 0 0.0 0.0 0.0 0.0 0 0 0 88.153467
+ T4 94 391.306082 419.950456 265.772153 0 0.0 0.0 0.0 0.0 0 0 0 88.153467
+ 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 25.051667 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ END$SEGS
+STRAIGHT 98 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 102 361.073758 425.361724 84.999848 0 0.0 0.0 0.0 0.0 0 0 0 84.595689
+ T4 100 202.590965 411.495629 264.999919 0 0.0 0.0 0.0 0.0 0 0 0 84.595689
+ END$SEGS
+STRAIGHT 99 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 95 170.448758 404.132721 253.578662 0 0.0 0.0 0.0 0.0 0 0 0 81.509910
+ T4 100 182.605262 407.715425 73.578662 0 0.0 0.0 0.0 0.0 0 0 0 81.509910
+ END$SEGS
+CURVE 100 0 0 0 0 Fn3 2 211.499030 309.677552 0 102.207017 0 0.000000 0.000000
+ T4 99 182.605262 407.715425 253.578662 0 0.0 0.0 0.0 0.0 0 0 0 81.989778
+ T4 98 202.590965 411.495629 84.999919 0 0.0 0.0 0.0 0.0 0 0 0 81.989778
+ END$SEGS
+STRAIGHT 101 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 97 391.396229 423.433147 97.193491 0 0.0 0.0 0.0 0.0 0 0 0 87.606056
+ T4 102 378.805502 425.022288 277.193491 0 0.0 0.0 0.0 0.0 0 0 0 87.606056
+ END$SEGS
+CURVE 102 0 0 0 0 Fn3 2 368.350706 342.188304 0 83.491147 0 0.000000 0.000000
+ T4 98 361.073758 425.361724 264.999848 0 0.0 0.0 0.0 0.0 0 0 0 87.163769
+ T4 101 378.805502 425.022288 97.193491 0 0.0 0.0 0.0 0.0 0 0 0 87.163769
+ END$SEGS
+STRAIGHT 103 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 95 171.096245 400.709461 264.999919 0 0.0 0.0 0.0 0.0 0 0 0 82.097204
+ T4 104 223.060433 405.255739 84.999919 0 0.0 0.0 0.0 0.0 0 0 0 82.097204
+ END$SEGS
+TURNOUT 104 0 0 0 0 Fn3 2 248.016771 407.439136 0 174.999919 "NMRA G #5 Left 5L"
+ T4 94 248.016771 407.439136 84.999919 11 -1.516771 15.060864 0.0 0.0 1 3 0 83.225926
+ T4 103 223.060442 405.255640 264.999919 0 0.0 0.0 0.0 0.0 0 0 0 83.225926
+ T4 105 223.707943 401.832381 253.578733 4 -12.457943 23.917619 0.0 0.0 0 4 0 83.225926
+ 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 25.051667 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ END$SEGS
+STRAIGHT 105 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 104 223.707943 401.832381 73.578885 4 -12.457943 23.917619 0.0 0.0 0 4 0 83.936024
+ T4 106 192.860644 392.741245 253.578885 0 0.0 0.0 0.0 0.0 0 0 0 83.936024
+ END$SEGS
+CURVE 106 1 0 0 0 Fn3 2 173.358189 458.914271 0 68.987065 0 0.000000 0.000000
+ T4 105 192.860644 392.741245 73.578885 0 0.0 0.0 0.0 0.0 0 0 0 84.469467
+ T4 44 179.370985 390.189738 265.000000 0 0.0 0.0 0.0 0.0 0 0 0 84.469467
+ END$SEGS
+STRAIGHT 107 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 111 238.989059 502.999628 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 620 158.780354 502.999758 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ END$SEGS
+STRAIGHT 108 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 622 185.812435 494.843625 269.999872 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 109 269.039187 494.843701 89.999872 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ END$SEGS
+TURNOUT 109 1 0 0 0 Fn3 2 290.589521 494.843806 0 179.999872 "NMRA G #4 Right 4R"
+ T4 118 290.589521 494.843806 89.999872 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 108 269.039187 494.843701 269.999872 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 110 269.472504 498.310370 284.249905 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ 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 21.550333 0.000000
+ C 0 0.000000 45.576853 1.770060 -45.576853 0.000076 14.250185
+ S 0 0.000000 12.989026 -1.402392 21.117000 -3.466667
+ END$SEGS
+STRAIGHT 110 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 109 269.472504 498.310370 104.250057 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 111 262.658328 500.040965 284.250057 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ END$SEGS
+CURVE 111 1 0 0 0 Fn3 2 238.989060 406.843304 0 96.156323 0 0.000000 0.000000
+ T4 107 238.989059 502.999628 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 110 262.658328 500.040965 104.250057 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ END$SEGS
+TURNOUT 112 0 0 1 0 Fn3 2 394.162693 275.730877 0 6.308615 "NMRA G #5 Left 5L"
+ T4 116 394.162693 275.730877 276.308615 9 0.087307 -6.085044 93.900000 93.900000 1 1 0 93.673170
+ T4 113 419.062658 272.978107 96.308615 4 0.000000 0.000000 0.0 0.0 0 4 0 93.673170
+ T4 50 419.099021 276.461875 84.887429 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ 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 25.051667 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ END$SEGS
+STRAIGHT 113 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 112 419.062658 272.978107 276.308463 4 0.000000 0.000000 0.0 0.0 0 4 0 93.673170
+ T4 115 432.355423 271.508644 96.308463 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+STRAIGHT 114 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 51 492.704361 281.453957 75.978704 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ T4 115 460.467059 273.403619 255.978704 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+CURVE 115 1 0 0 0 Fn3 2 441.126818 350.849638 0 79.824374 0 0.000000 0.000000
+ T4 114 460.467059 273.403619 75.978704 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ T4 113 432.355423 271.508644 276.308463 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+STRAIGHT 116 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 112 394.162693 275.730877 96.308767 9 0.087307 -6.085044 93.900000 93.900000 1 1 0 94.369353
+ T4 553 321.610339 283.752059 276.308767 0 0.0 0.0 0.0 0.0 0 0 0 94.369353
+ END$SEGS
+CURVE 117 0 0 0 0 Fn3 2 130.744699 252.269426 0 72.000000 0 0.000000 0.000000
+ T4 550 81.120985 200.101553 133.568143 0 0.0 0.0 0.0 0.0 0 0 0 97.911522
+ T4 53 59.856900 264.875776 10.083723 0 0.0 0.0 0.0 0.0 0 0 0 97.911522
+ END$SEGS
+STRAIGHT 118 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 109 290.589521 494.843806 269.999720 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ E4 345.776318 494.844149 89.999720 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ END$SEGS
+DRAW 119 7 0 0 0 452.395833 343.197917 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 350.000000 "Bridge 51-A"
+ END$SEGS
+DRAW 120 7 0 0 0 308.562500 545.281250 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 350.000000 "Bridge 46-B"
+ END$SEGS
+DRAW 121 7 0 0 0 252.062500 553.281250 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 350.000000 "Bridge 46-C"
+ END$SEGS
+DRAW 122 7 0 0 0 527.229167 571.239583 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 350.000000 "Bridge 45-A"
+ END$SEGS
+DRAW 123 7 0 0 0 104.645833 697.385417 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 350.000000 "Butterfly"
+ END$SEGS
+STRUCTURE 124 3 0 0 0 Fn3 2 598.166667 496.145833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 125 3 0 0 0 Fn3 2 609.916667 507.645833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 126 3 0 0 0 Fn3 2 608.916667 474.145833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 127 3 0 0 0 Fn3 2 611.416667 450.895833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 128 3 0 0 0 Fn3 2 623.916667 435.895833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 129 3 0 0 0 Fn3 2 580.166667 463.645833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 130 3 0 0 0 Fn3 2 620.416667 486.895833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 131 3 0 0 0 Fn3 2 618.166667 465.645833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 132 3 0 0 0 Fn3 2 610.666667 437.895833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 133 3 0 0 0 Fn3 2 630.333333 501.729167 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 134 3 0 0 0 Fn3 2 626.833333 476.729167 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 135 3 0 0 0 Fn3 2 624.833333 453.229167 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 136 3 0 0 0 Fn3 2 597.833333 483.729167 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 137 3 0 0 0 Fn3 2 553.333333 495.479167 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 138 3 0 0 0 Fn3 2 555.333333 484.729167 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 139 3 0 0 0 Fn3 2 590.833333 507.729167 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 140 3 0 0 0 Fn3 2 568.833333 482.979167 0 0.000000 "LgTrees 12"" Shade Shade-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 65280 -0.001500 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 65280 -0.001500 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 65280 -0.001500 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 65280 -0.001500 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 65280 -0.001500 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 65280 -0.001500 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 65280 -0.001500 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 65280 -0.001500 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 65280 -0.001500 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 65280 -0.001500 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 65280 -0.001500 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 65280 -0.001500 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 65280 -0.001500 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 65280 -0.001500 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 65280 -0.001500 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 65280 -0.001500 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 65280 -0.001500 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 65280 -0.001500 5.103875 -2.041550 0 4.666400 -2.187375 0
+ L3 65280 -0.001500 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 65280 -0.001500 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 65280 -0.001500 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 65280 -0.001500 -4.666400 2.770675 0 -4.228925 3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 26624 -0.001500 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 26624 -0.001500 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 26624 -0.001500 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 26624 -0.001500 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 26624 -0.001500 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 26624 -0.001500 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 26624 -0.001500 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 26624 -0.001500 -2.624850 0.729125 0 -2.041550 0.437475 0
+ L3 26624 -0.001500 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 26624 -0.001500 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 26624 -0.001500 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 26624 -0.001500 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 26624 -0.001500 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 26624 -0.001500 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 26624 -0.001500 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 26624 -0.001500 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 26624 -0.001500 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 26624 -0.001500 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 26624 -0.001500 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 26624 -0.001500 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 26624 -0.001500 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 26624 -0.001500 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 26624 -0.001500 3.645625 1.895725 0 2.916500 1.458250 0
+ L3 26624 -0.001500 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 26624 -0.001500 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 26624 -0.001500 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 26624 -0.001500 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 26624 -0.001500 2.624850 4.228925 0 2.187375 3.791450 0
+ END$SEGS
+STRUCTURE 141 3 0 0 0 Fn3 2 556.083333 471.729167 0 0.000000 "LgTrees 12"" Shade Shade-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 65280 -0.001500 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 65280 -0.001500 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 65280 -0.001500 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 65280 -0.001500 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 65280 -0.001500 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 65280 -0.001500 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 65280 -0.001500 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 65280 -0.001500 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 65280 -0.001500 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 65280 -0.001500 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 65280 -0.001500 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 65280 -0.001500 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 65280 -0.001500 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 65280 -0.001500 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 65280 -0.001500 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 65280 -0.001500 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 65280 -0.001500 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 65280 -0.001500 5.103875 -2.041550 0 4.666400 -2.187375 0
+ L3 65280 -0.001500 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 65280 -0.001500 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 65280 -0.001500 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 65280 -0.001500 -4.666400 2.770675 0 -4.228925 3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 26624 -0.001500 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 26624 -0.001500 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 26624 -0.001500 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 26624 -0.001500 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 26624 -0.001500 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 26624 -0.001500 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 26624 -0.001500 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 26624 -0.001500 -2.624850 0.729125 0 -2.041550 0.437475 0
+ L3 26624 -0.001500 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 26624 -0.001500 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 26624 -0.001500 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 26624 -0.001500 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 26624 -0.001500 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 26624 -0.001500 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 26624 -0.001500 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 26624 -0.001500 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 26624 -0.001500 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 26624 -0.001500 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 26624 -0.001500 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 26624 -0.001500 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 26624 -0.001500 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 26624 -0.001500 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 26624 -0.001500 3.645625 1.895725 0 2.916500 1.458250 0
+ L3 26624 -0.001500 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 26624 -0.001500 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 26624 -0.001500 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 26624 -0.001500 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 26624 -0.001500 2.624850 4.228925 0 2.187375 3.791450 0
+ END$SEGS
+STRUCTURE 142 3 0 0 0 Fn3 2 580.833333 451.729167 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 143 3 0 0 0 Fn3 2 543.833333 503.229167 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 144 3 0 0 0 Fn3 2 573.333333 442.479167 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 145 3 0 0 0 Fn3 2 539.583333 480.229167 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 146 3 0 0 0 Fn3 2 566.583333 457.229167 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 147 3 0 0 0 Fn3 2 571.833333 470.729167 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 148 3 0 0 0 Fn3 2 495.375000 491.062500 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 149 3 0 0 0 Fn3 2 483.810606 497.672348 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 150 3 0 0 0 Fn3 2 540.791667 449.770833 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 151 3 0 0 0 Fn3 2 459.166667 509.770833 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 152 3 0 0 0 Fn3 2 439.416667 528.520833 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 153 3 0 0 0 Fn3 2 525.666667 476.895833 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 154 3 0 0 0 Fn3 2 497.666667 501.645833 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 155 3 0 0 0 Fn3 2 528.416667 460.958333 0 0.000000 "LgTrees 12"" Conifer Conif-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ L3 26624 -0.001500 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 -0.001500 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 -0.001500 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 -0.001500 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 -0.001500 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 -0.001500 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 -0.001500 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 -0.001500 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 -0.001500 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 -0.001500 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 -0.001500 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 -0.001500 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 -0.001500 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 -0.001500 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 -0.001500 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 -0.001500 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 -0.001500 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 -0.001500 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 -0.001500 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 -0.001500 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 -0.001500 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 -0.001500 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 -0.001500 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 -0.001500 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 -0.001500 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 -0.001500 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 -0.001500 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 -0.001500 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 -0.001500 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 -0.001500 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 -0.001500 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 -0.001500 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 -0.001500 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 -0.001500 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 -0.001500 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 -0.001500 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 -0.001500 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 -0.001500 -2.891390 3.099404 0 -1.996931 2.828986 0
+ END$SEGS
+STRUCTURE 156 3 0 0 0 Fn3 2 510.416667 481.458333 0 0.000000 "LgTrees 12"" Conifer Conif-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ L3 26624 -0.001500 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 -0.001500 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 -0.001500 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 -0.001500 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 -0.001500 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 -0.001500 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 -0.001500 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 -0.001500 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 -0.001500 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 -0.001500 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 -0.001500 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 -0.001500 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 -0.001500 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 -0.001500 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 -0.001500 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 -0.001500 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 -0.001500 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 -0.001500 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 -0.001500 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 -0.001500 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 -0.001500 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 -0.001500 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 -0.001500 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 -0.001500 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 -0.001500 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 -0.001500 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 -0.001500 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 -0.001500 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 -0.001500 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 -0.001500 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 -0.001500 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 -0.001500 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 -0.001500 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 -0.001500 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 -0.001500 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 -0.001500 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 -0.001500 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 -0.001500 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ END$SEGS
+STRUCTURE 157 3 0 0 0 Fn3 2 445.750000 518.812500 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 158 3 0 0 0 Fn3 2 516.250000 470.312500 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 159 3 0 0 0 Fn3 2 506.750000 494.312500 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 160 3 0 0 0 Fn3 2 468.750000 502.812500 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 161 3 0 0 0 Fn3 2 458.250000 520.312500 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 162 3 0 0 0 Fn3 2 479.750000 507.812500 0 0.000000 "LgTrees 12"" Conifer Conif-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ L3 26624 -0.001500 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 -0.001500 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 -0.001500 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 -0.001500 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 -0.001500 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 -0.001500 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 -0.001500 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 -0.001500 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 -0.001500 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 -0.001500 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 -0.001500 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 -0.001500 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 -0.001500 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 -0.001500 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 -0.001500 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 -0.001500 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 -0.001500 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 -0.001500 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 -0.001500 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 -0.001500 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 -0.001500 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 -0.001500 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 -0.001500 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 -0.001500 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 -0.001500 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 -0.001500 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 -0.001500 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 -0.001500 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 -0.001500 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 -0.001500 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 -0.001500 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 -0.001500 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 -0.001500 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 -0.001500 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 -0.001500 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 -0.001500 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 -0.001500 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 -0.001500 -2.891390 3.099404 0 -1.996931 2.828986 0
+ END$SEGS
+STRUCTURE 163 3 0 0 0 Fn3 2 424.250000 525.812500 0 0.000000 "LgTrees 12"" Conifer Conif-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ L3 26624 -0.001500 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 -0.001500 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 -0.001500 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 -0.001500 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 -0.001500 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 -0.001500 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 -0.001500 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 -0.001500 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 -0.001500 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 -0.001500 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 -0.001500 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 -0.001500 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 -0.001500 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 -0.001500 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 -0.001500 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 -0.001500 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 -0.001500 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 -0.001500 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 -0.001500 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 -0.001500 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 -0.001500 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 -0.001500 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 -0.001500 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 -0.001500 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 -0.001500 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 -0.001500 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 -0.001500 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 -0.001500 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 -0.001500 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 -0.001500 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 -0.001500 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 -0.001500 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 -0.001500 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 -0.001500 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 -0.001500 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 -0.001500 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 -0.001500 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 -0.001500 -2.891390 3.099404 0 -1.996931 2.828986 0
+ END$SEGS
+STRUCTURE 164 3 0 0 0 Fn3 2 544.750000 437.312500 0 0.000000 "LgTrees 12"" Conifer Conif-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ L3 26624 -0.001500 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 -0.001500 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 -0.001500 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 -0.001500 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 -0.001500 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 -0.001500 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 -0.001500 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 -0.001500 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 -0.001500 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 -0.001500 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 -0.001500 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 -0.001500 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 -0.001500 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 -0.001500 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 -0.001500 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 -0.001500 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 -0.001500 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 -0.001500 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 -0.001500 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 -0.001500 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 -0.001500 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 -0.001500 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 -0.001500 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 -0.001500 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 -0.001500 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 -0.001500 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 -0.001500 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 -0.001500 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 -0.001500 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 -0.001500 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 -0.001500 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 -0.001500 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 -0.001500 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 -0.001500 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 -0.001500 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 -0.001500 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 -0.001500 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 -0.001500 -2.891390 3.099404 0 -1.996931 2.828986 0
+ END$SEGS
+STRUCTURE 165 3 0 0 0 Fn3 2 469.750000 517.312500 0 0.000000 "LgTrees 12"" Conifer Conif-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ L3 26624 -0.001500 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 -0.001500 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 -0.001500 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 -0.001500 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 -0.001500 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 -0.001500 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 -0.001500 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 -0.001500 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 -0.001500 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 -0.001500 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 -0.001500 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 -0.001500 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 -0.001500 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 -0.001500 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 -0.001500 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 -0.001500 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 -0.001500 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 -0.001500 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 -0.001500 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 -0.001500 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 -0.001500 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 -0.001500 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 -0.001500 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 -0.001500 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 -0.001500 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 -0.001500 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 -0.001500 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 -0.001500 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 -0.001500 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 -0.001500 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 -0.001500 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 -0.001500 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 -0.001500 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 -0.001500 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 -0.001500 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 -0.001500 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 -0.001500 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 -0.001500 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ END$SEGS
+STRUCTURE 166 3 0 0 0 Fn3 2 484.750000 488.812500 0 0.000000 "LgTrees 12"" Conifer Conif-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ L3 26624 -0.001500 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 -0.001500 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 -0.001500 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 -0.001500 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 -0.001500 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 -0.001500 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 -0.001500 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 -0.001500 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 -0.001500 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 -0.001500 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 -0.001500 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 -0.001500 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 -0.001500 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 -0.001500 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 -0.001500 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 -0.001500 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 -0.001500 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 -0.001500 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 -0.001500 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 -0.001500 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 -0.001500 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 -0.001500 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 -0.001500 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 -0.001500 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 -0.001500 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 -0.001500 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 -0.001500 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 -0.001500 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 -0.001500 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 -0.001500 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 -0.001500 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 -0.001500 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 -0.001500 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 -0.001500 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 -0.001500 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 -0.001500 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 -0.001500 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 -0.001500 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ END$SEGS
+STRUCTURE 167 3 0 0 0 Fn3 2 498.250000 480.312500 0 0.000000 "LgTrees 12"" Conifer Conif-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ L3 26624 -0.001500 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 -0.001500 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 -0.001500 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 -0.001500 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 -0.001500 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 -0.001500 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 -0.001500 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 -0.001500 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 -0.001500 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 -0.001500 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 -0.001500 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 -0.001500 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 -0.001500 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 -0.001500 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 -0.001500 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 -0.001500 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 -0.001500 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 -0.001500 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 -0.001500 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 -0.001500 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 -0.001500 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 -0.001500 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 -0.001500 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 -0.001500 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 -0.001500 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 -0.001500 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 -0.001500 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 -0.001500 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 -0.001500 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 -0.001500 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 -0.001500 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 -0.001500 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 -0.001500 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 -0.001500 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 -0.001500 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 -0.001500 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 -0.001500 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 -0.001500 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ END$SEGS
+STRUCTURE 168 3 0 0 0 Fn3 2 520.750000 490.708333 0 0.000000 "LgTrees 15"" Conifer Conif-15b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 0.098818 0
+ F4 26624 0.000000 28 0
+ -4.638760 2.789979 0
+ -5.229429 5.269656 0
+ -3.037092 4.304222 0
+ -2.386608 6.924525 0
+ -0.739512 4.571531 0
+ 0.605056 7.126211 0
+ 2.653455 4.457804 0
+ 4.807052 6.033957 0
+ 3.962298 3.801393 0
+ 5.112323 1.928177 0
+ 7.059729 0.522943 0
+ 5.651806 -0.784414 0
+ 6.979277 -2.675054 0
+ 4.773217 -2.789979 0
+ 4.344449 -3.761166 0
+ 4.284109 -5.933391 0
+ 2.521065 -5.613572 0
+ 1.243725 -6.991754 0
+ -0.522943 -5.712146 0
+ -0.965433 -7.099956 0
+ -2.117695 -5.445501 0
+ -5.109359 -6.218627 0
+ -4.269004 -3.899247 0
+ -6.818371 -2.071658 0
+ -5.531127 -0.744188 0
+ -7.220635 0.000000 0
+ -4.907673 0.705898 0
+ -6.722840 2.722750 0
+ F4 11206591 0.000000 26 0
+ 1.005659 4.706486 0
+ 3.045086 7.036218 0
+ 3.761166 5.289769 0
+ 3.157771 2.936526 0
+ 5.558021 3.045086 0
+ 7.154474 1.744273 0
+ 4.344449 -0.140792 0
+ 6.917962 -2.956394 0
+ 4.996306 -3.399853 0
+ 3.560034 -3.077318 0
+ 3.479582 -4.927731 0
+ 3.163342 -6.711015 0
+ 0.945320 -4.344449 0
+ -0.784414 -4.585807 0
+ -1.186678 -5.511014 0
+ -2.690319 -6.651887 0
+ -2.675054 -3.519808 0
+ -6.178864 -4.345899 0
+ -5.469329 -1.892092 0
+ -3.278450 -0.522943 0
+ -5.764969 -0.473023 0
+ -6.947526 1.182558 0
+ -2.252677 1.548716 0
+ -5.912788 4.582411 0
+ -1.729734 4.062864 0
+ -1.822813 7.291250 0
+ F4 26624 0.000000 4 0
+ -3.380222 -2.002131 0
+ -2.730179 -1.248082 0
+ -1.586104 -0.806053 0
+ -2.314152 -1.742114 0
+ F4 26624 0.000000 4 0
+ -3.068201 1.066070 0
+ -1.664109 1.196079 0
+ -1.040068 0.624041 0
+ -2.184143 0.650043 0
+ F4 26624 0.000000 4 0
+ -1.534101 -2.522166 0
+ -1.768116 -3.354220 0
+ -2.626172 -3.770248 0
+ -2.392157 -3.094203 0
+ F4 26624 0.000000 4 0
+ -5.096335 -0.026002 0
+ -3.978261 -0.286019 0
+ -2.756181 0.104007 0
+ -4.004263 0.312020 0
+ F4 26624 0.000000 4 0
+ -4.212277 -3.302217 0
+ -3.588236 -2.678176 0
+ -2.626172 -2.470162 0
+ -3.172208 -3.094203 0
+ F4 26624 0.000000 4 0
+ -3.562234 3.432225 0
+ -2.730179 2.574169 0
+ -1.768116 2.210145 0
+ -2.704178 3.146207 0
+ L3 26624 -0.001500 -4.163430 -2.453809 0 -5.490901 -2.393469 0
+ L3 26624 -0.001500 -5.772485 -3.519808 0 -4.867392 -3.298563 0
+ L3 26624 -0.001500 -1.850413 -5.933391 0 -1.709621 -4.263996 0
+ L3 26624 -0.001500 -1.709621 -4.263996 0 -2.715281 -5.450674 0
+ L3 26624 -0.001500 2.393469 -5.993730 0 2.554375 -4.585807 0
+ L3 26624 -0.001500 2.554375 -4.585807 0 3.318676 -5.450674 0
+ L3 26624 -0.001500 5.752372 -3.097431 0 3.881845 -2.232564 0
+ L3 26624 -0.001500 3.881845 -2.232564 0 5.752372 -1.790074 0
+ L3 26624 -0.001500 5.229429 1.267131 0 3.821506 1.287244 0
+ L3 26624 -0.001500 3.821506 1.287244 0 4.988071 2.856073 0
+ L3 26624 -0.001500 3.580148 4.746713 0 2.031432 3.399129 0
+ L3 26624 -0.001500 2.031432 3.399129 0 2.071658 5.852938 0
+ L3 26624 -0.001500 -0.724075 6.255202 0 -0.744188 4.183543 0
+ L3 26624 -0.001500 -0.744188 4.183543 0 -1.749847 5.048410 0
+ L3 26624 -0.001500 -0.965433 -4.424902 0 -1.206791 -3.399129 0
+ L3 26624 -0.001500 1.629168 -4.686373 0 1.649282 -3.499695 0
+ L3 26624 -0.001500 3.137657 -4.022638 0 2.192338 -3.238223 0
+ L3 26624 -0.001500 3.640487 -3.077318 0 2.614715 -1.609055 0
+ L3 26624 -0.001500 4.706486 -0.844754 0 3.439355 -1.186678 0
+ L3 26624 -0.001500 4.827165 0.341924 0 2.735394 0.643622 0
+ L3 26624 -0.001500 2.936526 1.488376 0 3.922072 2.896299 0
+ L3 26624 -0.001500 3.137657 3.298563 0 1.548716 2.131998 0
+ L3 26624 -0.001500 1.247018 2.795733 0 0.844754 4.022638 0
+ L3 26624 -0.001500 0.060340 4.002525 0 -0.221245 2.393469 0
+ L3 26624 -0.001500 -1.629168 3.640487 0 -1.186678 2.051545 0
+ L3 26624 -0.001500 -3.077318 -0.583282 0 -1.609055 0.140792 0
+ L3 26624 -0.001500 -1.307357 -1.991206 0 -0.663735 -0.724075 0
+ L3 26624 -0.001500 1.005659 -2.976752 0 0.281585 -1.609055 0
+ L3 26624 -0.001500 1.930866 -2.192338 0 1.086112 -1.307357 0
+ L3 26624 -0.001500 2.675054 -0.583282 0 1.065999 -0.321811 0
+ L3 26624 -0.001500 1.729734 1.065999 0 0.744188 0.462603 0
+ L3 26624 -0.001500 0.201132 1.508489 0 0.261471 0.744188 0
+ L3 26624 -0.001500 -0.301698 0.502830 0 -0.925207 1.347584 0
+ L3 26624 -0.001500 -1.226905 -0.522943 0 -0.382151 -0.040226 0
+ L3 26624 -0.001500 0.643622 -1.025773 0 0.241358 -0.221245 0
+ L3 26624 -0.001500 -3.666241 -1.300085 0 -4.654306 -1.794118 0
+ L3 26624 -0.001500 -4.576300 1.066070 0 -3.328219 0.676044 0
+ L3 26624 -0.001500 -3.614237 3.874254 0 -2.496164 3.536232 0
+ END$SEGS
+STRUCTURE 169 3 0 0 0 Fn3 2 486.250000 521.208333 0 0.000000 "LgTrees 15"" Conifer Conif-15a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 -0.098818 0
+ F4 26624 0.000000 28 0
+ -4.638760 -2.789979 0
+ -5.229429 -5.269656 0
+ -3.037092 -4.304222 0
+ -2.386608 -6.924525 0
+ -0.739512 -4.571531 0
+ 0.605056 -7.126211 0
+ 2.653455 -4.457804 0
+ 4.807052 -6.033957 0
+ 3.962298 -3.801393 0
+ 5.112323 -1.928177 0
+ 7.059729 -0.522943 0
+ 5.651806 0.784414 0
+ 6.979277 2.675054 0
+ 4.773217 2.789979 0
+ 4.344449 3.761166 0
+ 4.284109 5.933391 0
+ 2.521065 5.613572 0
+ 1.243725 6.991754 0
+ -0.522943 5.712146 0
+ -0.965433 7.099956 0
+ -2.117695 5.445501 0
+ -5.109359 6.218627 0
+ -4.269004 3.899247 0
+ -6.818371 2.071658 0
+ -5.531127 0.744188 0
+ -7.220635 0.000000 0
+ -4.907673 -0.705898 0
+ -6.722840 -2.722750 0
+ F4 11206612 0.000000 26 0
+ 1.005659 -4.706486 0
+ 3.045086 -7.036218 0
+ 3.761166 -5.289769 0
+ 3.157771 -2.936526 0
+ 5.558021 -3.045086 0
+ 7.154474 -1.744273 0
+ 4.344449 0.140792 0
+ 6.917962 2.956394 0
+ 4.996306 3.399853 0
+ 3.560034 3.077318 0
+ 3.479582 4.927731 0
+ 3.163342 6.711015 0
+ 0.945320 4.344449 0
+ -0.784414 4.585807 0
+ -1.186678 5.511014 0
+ -2.690319 6.651887 0
+ -2.675054 3.519808 0
+ -6.178864 4.345899 0
+ -5.469329 1.892092 0
+ -3.278450 0.522943 0
+ -5.764969 0.473023 0
+ -6.947526 -1.182558 0
+ -2.252677 -1.548716 0
+ -5.912788 -4.582411 0
+ -1.729734 -4.062864 0
+ -1.822813 -7.291250 0
+ F4 26624 0.000000 4 0
+ -3.380222 2.002131 0
+ -2.730179 1.248082 0
+ -1.586104 0.806053 0
+ -2.314152 1.742114 0
+ F4 26624 0.000000 4 0
+ -3.068201 -1.066070 0
+ -1.664109 -1.196079 0
+ -1.040068 -0.624041 0
+ -2.184143 -0.650043 0
+ F4 26624 0.000000 4 0
+ -1.534101 2.522166 0
+ -1.768116 3.354220 0
+ -2.626172 3.770248 0
+ -2.392157 3.094203 0
+ F4 26624 0.000000 4 0
+ -5.096335 0.026002 0
+ -3.978261 0.286019 0
+ -2.756181 -0.104007 0
+ -4.004263 -0.312020 0
+ F4 26624 0.000000 4 0
+ -4.212277 3.302217 0
+ -3.588236 2.678176 0
+ -2.626172 2.470162 0
+ -3.172208 3.094203 0
+ F4 26624 0.000000 4 0
+ -3.562234 -3.432225 0
+ -2.730179 -2.574169 0
+ -1.768116 -2.210145 0
+ -2.704178 -3.146207 0
+ L3 26624 -0.001500 -4.163430 2.453809 0 -5.490901 2.393469 0
+ L3 26624 -0.001500 -5.772485 3.519808 0 -4.867392 3.298563 0
+ L3 26624 -0.001500 -1.850413 5.933391 0 -1.709621 4.263996 0
+ L3 26624 -0.001500 -1.709621 4.263996 0 -2.715281 5.450674 0
+ L3 26624 -0.001500 2.393469 5.993730 0 2.554375 4.585807 0
+ L3 26624 -0.001500 2.554375 4.585807 0 3.318676 5.450674 0
+ L3 26624 -0.001500 5.752372 3.097431 0 3.881845 2.232564 0
+ L3 26624 -0.001500 3.881845 2.232564 0 5.752372 1.790074 0
+ L3 26624 -0.001500 5.229429 -1.267131 0 3.821506 -1.287244 0
+ L3 26624 -0.001500 3.821506 -1.287244 0 4.988071 -2.856073 0
+ L3 26624 -0.001500 3.580148 -4.746713 0 2.031432 -3.399129 0
+ L3 26624 -0.001500 2.031432 -3.399129 0 2.071658 -5.852938 0
+ L3 26624 -0.001500 -0.724075 -6.255202 0 -0.744188 -4.183543 0
+ L3 26624 -0.001500 -0.744188 -4.183543 0 -1.749847 -5.048410 0
+ L3 26624 -0.001500 -0.965433 4.424902 0 -1.206791 3.399129 0
+ L3 26624 -0.001500 1.629168 4.686373 0 1.649282 3.499695 0
+ L3 26624 -0.001500 3.137657 4.022638 0 2.192338 3.238223 0
+ L3 26624 -0.001500 3.640487 3.077318 0 2.614715 1.609055 0
+ L3 26624 -0.001500 4.706486 0.844754 0 3.439355 1.186678 0
+ L3 26624 -0.001500 4.827165 -0.341924 0 2.735394 -0.643622 0
+ L3 26624 -0.001500 2.936526 -1.488376 0 3.922072 -2.896299 0
+ L3 26624 -0.001500 3.137657 -3.298563 0 1.548716 -2.131998 0
+ L3 26624 -0.001500 1.247018 -2.795733 0 0.844754 -4.022638 0
+ L3 26624 -0.001500 0.060340 -4.002525 0 -0.221245 -2.393469 0
+ L3 26624 -0.001500 -1.629168 -3.640487 0 -1.186678 -2.051545 0
+ L3 26624 -0.001500 -3.077318 0.583282 0 -1.609055 -0.140792 0
+ L3 26624 -0.001500 -1.307357 1.991206 0 -0.663735 0.724075 0
+ L3 26624 -0.001500 1.005659 2.976752 0 0.281585 1.609055 0
+ L3 26624 -0.001500 1.930866 2.192338 0 1.086112 1.307357 0
+ L3 26624 -0.001500 2.675054 0.583282 0 1.065999 0.321811 0
+ L3 26624 -0.001500 1.729734 -1.065999 0 0.744188 -0.462603 0
+ L3 26624 -0.001500 0.201132 -1.508489 0 0.261471 -0.744188 0
+ L3 26624 -0.001500 -0.301698 -0.502830 0 -0.925207 -1.347584 0
+ L3 26624 -0.001500 -1.226905 0.522943 0 -0.382151 0.040226 0
+ L3 26624 -0.001500 0.643622 1.025773 0 0.241358 0.221245 0
+ L3 26624 -0.001500 -3.666241 1.300085 0 -4.654306 1.794118 0
+ L3 26624 -0.001500 -4.576300 -1.066070 0 -3.328219 -0.676044 0
+ L3 26624 -0.001500 -3.614237 -3.874254 0 -2.496164 -3.536232 0
+ END$SEGS
+STRUCTURE 170 3 0 0 0 Fn3 2 586.750000 521.208333 0 0.000000 "LgTrees 15"" Shade Shade-15b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 -0.098818 0
+ F4 26624 0.000000 28 0
+ -6.275315 -3.379016 0
+ -5.229429 -5.269656 0
+ -3.037092 -4.304222 0
+ -2.393469 -6.737918 0
+ -0.945320 -7.361427 0
+ 0.683848 -5.350108 0
+ 2.554375 -7.099956 0
+ 4.807052 -6.033957 0
+ 3.962298 -3.801393 0
+ 6.657466 -3.057205 0
+ 7.059729 -0.522943 0
+ 5.651806 0.784414 0
+ 6.979277 2.675054 0
+ 5.973617 4.364562 0
+ 4.344449 3.761166 0
+ 4.284109 5.933391 0
+ 2.152111 7.059729 0
+ 1.267131 5.692032 0
+ -0.522943 5.712146 0
+ -0.965433 7.099956 0
+ -3.720940 6.214975 0
+ -3.379016 4.585807 0
+ -5.651806 4.424902 0
+ -6.818371 2.071658 0
+ -5.531127 0.744188 0
+ -7.220635 0.000000 0
+ -6.778145 -1.689508 0
+ -4.988071 -2.333130 0
+ F4 65280 0.000000 26 0
+ 1.005659 -4.706486 0
+ 2.413583 -6.114409 0
+ 3.761166 -5.289769 0
+ 3.157771 -2.936526 0
+ 5.852938 -2.192338 0
+ 6.033957 -1.025773 0
+ 4.344449 0.140792 0
+ 5.812712 2.353243 0
+ 5.169090 3.117544 0
+ 3.560034 3.077318 0
+ 3.479582 4.927731 0
+ 2.091772 5.692032 0
+ 0.945320 4.344449 0
+ -0.784414 4.585807 0
+ -1.186678 5.511014 0
+ -2.654941 5.128863 0
+ -2.675054 3.519808 0
+ -3.901959 3.479582 0
+ -4.706486 1.870527 0
+ -3.278450 0.522943 0
+ -4.626033 -0.181019 0
+ -4.404788 -1.146452 0
+ -2.252677 -1.548716 0
+ -3.077318 -3.016978 0
+ -1.729734 -4.062864 0
+ -1.186678 -5.249542 0
+ L3 65280 -0.001500 -1.275969 -6.197563 0 -0.546844 -5.650719 0
+ L3 65280 -0.001500 -1.822813 -5.833000 0 -2.005094 -4.921594 0
+ L3 65280 -0.001500 -4.192469 -3.827906 0 -2.916500 -3.827906 0
+ L3 65280 -0.001500 -5.103875 -3.463344 0 -4.557031 -2.916500 0
+ L3 65280 -0.001500 -3.827906 -3.098781 0 -3.098781 -2.551938 0
+ L3 65280 -0.001500 -3.463344 -2.005094 0 -4.557031 -1.822813 0
+ L3 65280 -0.001500 -6.197563 -1.458250 0 -4.921594 -1.458250 0
+ L3 65280 -0.001500 -6.197563 -0.364563 0 -5.103875 -0.911406 0
+ L3 65280 -0.001500 -4.192469 0.546844 0 -5.103875 0.364563 0
+ L3 65280 -0.001500 -4.921594 1.275969 0 -6.197563 2.005094 0
+ L3 65280 -0.001500 -5.650719 2.734219 0 -4.739313 2.916500 0
+ L3 65280 -0.001500 -4.374750 4.192469 0 -4.010188 3.645625 0
+ L3 65280 -0.001500 -2.734219 5.468438 0 -3.098781 6.015281 0
+ L3 65280 -0.001500 -1.640531 5.833000 0 -1.275969 6.379844 0
+ L3 65280 -0.001500 -0.182281 4.921594 0 0.000000 5.468438 0
+ L3 65280 -0.001500 0.911406 4.921594 0 0.364563 5.286156 0
+ L3 65280 -0.001500 2.369656 5.833000 0 2.187375 6.562125 0
+ L3 65280 -0.001500 3.463344 5.468438 0 4.010188 5.650719 0
+ L3 65280 -0.001500 6.379844 2.551938 0 5.833000 2.734219 0
+ L3 65280 -0.001500 5.468438 3.463344 0 5.833000 4.010188 0
+ L3 65280 -0.001500 6.379844 -0.546844 0 5.650719 -0.364563 0
+ L3 65280 -0.001500 -5.103875 -4.557031 0 -4.739313 -3.827906 0
+ L3 65280 -0.001500 -5.833000 -3.463344 0 -5.286156 -3.827906 0
+ F4 26624 0.000000 4 0
+ 2.808184 -2.886190 0
+ 1.664109 -2.548167 0
+ 1.534101 -1.690111 0
+ 2.288150 -2.002131 0
+ F4 26624 0.000000 5 0
+ -1.092072 -3.458227 0
+ -0.988065 -2.860188 0
+ 0.130009 -2.366155 0
+ 0.442029 -3.094203 0
+ -0.130009 -3.640239 0
+ F4 26624 0.000000 4 0
+ 3.562234 0.130009 0
+ 2.210145 0.442029 0
+ 1.924126 -0.234015 0
+ 3.770248 -0.338022 0
+ F4 26624 0.000000 4 0
+ 0.858056 3.458227 0
+ 0.182012 2.938193 0
+ 0.364024 1.846121 0
+ 0.780051 2.002131 0
+ F4 26624 0.000000 3 0
+ 3.172208 2.600171 0
+ 2.808184 1.794118 0
+ 2.236147 2.288150 0
+ F4 26624 0.000000 5 0
+ -2.730179 0.312020 0
+ -2.366155 0.052003 0
+ -1.118073 -0.260017 0
+ -0.442029 0.442029 0
+ -2.002131 0.676044 0
+ F4 26624 0.000000 4 0
+ -2.392157 3.016198 0
+ -1.664109 2.834186 0
+ -1.144075 1.612106 0
+ -1.950128 1.820120 0
+ L3 26624 -0.001500 0.364563 -4.010188 0 0.729125 -3.463344 0
+ L3 26624 -0.001500 2.551938 -3.463344 0 1.640531 -3.098781 0
+ L3 26624 -0.001500 2.916500 -4.374750 0 2.369656 -4.010188 0
+ L3 26624 -0.001500 1.640531 -4.739313 0 1.275969 -4.010188 0
+ L3 26624 -0.001500 -0.729125 -4.557031 0 -0.364562 -4.010188 0
+ L3 26624 -0.001500 -2.187375 -2.916500 0 -1.458250 -2.916500 0
+ L3 26624 -0.001500 -1.640531 -2.005094 0 -0.729125 -2.369656 0
+ L3 26624 -0.001500 -2.187375 -1.093688 0 -1.458250 -0.546844 0
+ L3 26624 -0.001500 -3.281063 -0.911406 0 -2.551938 -0.546844 0
+ L3 26624 -0.001500 -4.192469 -0.364563 0 -3.281063 0.000000 0
+ L3 26624 -0.001500 -2.916500 0.911406 0 -3.645625 1.640531 0
+ L3 26624 -0.001500 -3.281063 2.551938 0 -2.734219 1.822813 0
+ L3 26624 -0.001500 -2.005094 4.010188 0 -1.458250 3.281063 0
+ L3 26624 -0.001500 -0.729125 3.281063 0 -0.911406 4.374750 0
+ L3 26624 -0.001500 -0.546844 2.005094 0 -0.364562 2.734219 0
+ L3 26624 -0.001500 1.275969 3.281063 0 1.640531 4.374750 0
+ L3 26624 -0.001500 2.187375 3.098781 0 3.281063 3.645625 0
+ L3 26624 -0.001500 4.921594 1.275969 0 4.010188 1.458250 0
+ L3 26624 -0.001500 4.921594 2.916500 0 4.010188 2.551938 0
+ L3 26624 -0.001500 5.286156 2.187375 0 4.374750 2.005094 0
+ L3 26624 -0.001500 2.187375 5.286156 0 2.005094 4.557031 0
+ L3 26624 -0.001500 3.281062 4.739313 0 2.734219 4.192469 0
+ L3 26624 -0.001500 2.551938 4.921594 0 2.187375 3.827906 0
+ L3 26624 -0.001500 5.468438 -0.911406 0 4.374750 -1.093688 0
+ L3 26624 -0.001500 4.557031 -2.369656 0 3.645625 -1.822813 0
+ L3 26624 -0.001500 5.468438 -1.822813 0 4.557031 -1.640531 0
+ L3 26624 -0.001500 -1.822813 5.103875 0 -1.640531 4.374750 0
+ L3 26624 -0.001500 -4.010188 2.551938 0 -3.463344 2.187375 0
+ L3 26624 -0.001500 2.551938 -5.833000 0 2.187375 -4.921594 0
+ L3 26624 -0.001500 3.281062 -5.286156 0 2.734219 -4.739313 0
+ END$SEGS
+STRUCTURE 171 3 0 0 0 Fn3 2 543.000000 464.458333 0 0.000000 "LgTrees 15"" Shade Shade-15a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 0.098818 0
+ F4 26624 0.000000 28 0
+ -6.275315 3.379016 0
+ -5.229429 5.269656 0
+ -3.037092 4.304222 0
+ -2.393469 6.737918 0
+ -0.945320 7.361427 0
+ 0.683848 5.350108 0
+ 2.554375 7.099956 0
+ 4.807052 6.033957 0
+ 3.962298 3.801393 0
+ 6.657466 3.057205 0
+ 7.059729 0.522943 0
+ 5.651806 -0.784414 0
+ 6.979277 -2.675054 0
+ 5.973617 -4.364562 0
+ 4.344449 -3.761166 0
+ 4.284109 -5.933391 0
+ 2.152111 -7.059729 0
+ 1.267131 -5.692032 0
+ -0.522943 -5.712146 0
+ -0.965433 -7.099956 0
+ -3.720940 -6.214975 0
+ -3.379016 -4.585807 0
+ -5.651806 -4.424902 0
+ -6.818371 -2.071658 0
+ -5.531127 -0.744188 0
+ -7.220635 0.000000 0
+ -6.778145 1.689508 0
+ -4.988071 2.333130 0
+ F4 65280 0.000000 26 0
+ 1.005659 4.706486 0
+ 2.413583 6.114409 0
+ 3.761166 5.289769 0
+ 3.157771 2.936526 0
+ 5.852938 2.192338 0
+ 6.033957 1.025773 0
+ 4.344449 -0.140792 0
+ 5.812712 -2.353243 0
+ 5.169090 -3.117544 0
+ 3.560034 -3.077318 0
+ 3.479582 -4.927731 0
+ 2.091772 -5.692032 0
+ 0.945320 -4.344449 0
+ -0.784414 -4.585807 0
+ -1.186678 -5.511014 0
+ -2.654941 -5.128863 0
+ -2.675054 -3.519808 0
+ -3.901959 -3.479582 0
+ -4.706486 -1.870527 0
+ -3.278450 -0.522943 0
+ -4.626033 0.181019 0
+ -4.404788 1.146452 0
+ -2.252677 1.548716 0
+ -3.077318 3.016978 0
+ -1.729734 4.062864 0
+ -1.186678 5.249542 0
+ L3 65280 -0.001500 -1.275969 6.197563 0 -0.546844 5.650719 0
+ L3 65280 -0.001500 -1.822813 5.833000 0 -2.005094 4.921594 0
+ L3 65280 -0.001500 -4.192469 3.827906 0 -2.916500 3.827906 0
+ L3 65280 -0.001500 -5.103875 3.463344 0 -4.557031 2.916500 0
+ L3 65280 -0.001500 -3.827906 3.098781 0 -3.098781 2.551938 0
+ L3 65280 -0.001500 -3.463344 2.005094 0 -4.557031 1.822813 0
+ L3 65280 -0.001500 -6.197563 1.458250 0 -4.921594 1.458250 0
+ L3 65280 -0.001500 -6.197563 0.364563 0 -5.103875 0.911406 0
+ L3 65280 -0.001500 -4.192469 -0.546844 0 -5.103875 -0.364563 0
+ L3 65280 -0.001500 -4.921594 -1.275969 0 -6.197563 -2.005094 0
+ L3 65280 -0.001500 -5.650719 -2.734219 0 -4.739313 -2.916500 0
+ L3 65280 -0.001500 -4.374750 -4.192469 0 -4.010188 -3.645625 0
+ L3 65280 -0.001500 -2.734219 -5.468438 0 -3.098781 -6.015281 0
+ L3 65280 -0.001500 -1.640531 -5.833000 0 -1.275969 -6.379844 0
+ L3 65280 -0.001500 -0.182281 -4.921594 0 0.000000 -5.468438 0
+ L3 65280 -0.001500 0.911406 -4.921594 0 0.364563 -5.286156 0
+ L3 65280 -0.001500 2.369656 -5.833000 0 2.187375 -6.562125 0
+ L3 65280 -0.001500 3.463344 -5.468438 0 4.010188 -5.650719 0
+ L3 65280 -0.001500 6.379844 -2.551938 0 5.833000 -2.734219 0
+ L3 65280 -0.001500 5.468438 -3.463344 0 5.833000 -4.010188 0
+ L3 65280 -0.001500 6.379844 0.546844 0 5.650719 0.364563 0
+ L3 65280 -0.001500 -5.103875 4.557031 0 -4.739313 3.827906 0
+ L3 65280 -0.001500 -5.833000 3.463344 0 -5.286156 3.827906 0
+ F4 26624 0.000000 4 0
+ 2.808184 2.886190 0
+ 1.664109 2.548167 0
+ 1.534101 1.690111 0
+ 2.288150 2.002131 0
+ F4 26624 0.000000 5 0
+ -1.092072 3.458227 0
+ -0.988065 2.860188 0
+ 0.130009 2.366155 0
+ 0.442029 3.094203 0
+ -0.130009 3.640239 0
+ F4 26624 0.000000 4 0
+ 3.562234 -0.130009 0
+ 2.210145 -0.442029 0
+ 1.924126 0.234015 0
+ 3.770248 0.338022 0
+ F4 26624 0.000000 4 0
+ 0.858056 -3.458227 0
+ 0.182012 -2.938193 0
+ 0.364024 -1.846121 0
+ 0.780051 -2.002131 0
+ F4 26624 0.000000 3 0
+ 3.172208 -2.600171 0
+ 2.808184 -1.794118 0
+ 2.236147 -2.288150 0
+ F4 26624 0.000000 5 0
+ -2.730179 -0.312020 0
+ -2.366155 -0.052003 0
+ -1.118073 0.260017 0
+ -0.442029 -0.442029 0
+ -2.002131 -0.676044 0
+ F4 26624 0.000000 4 0
+ -2.392157 -3.016198 0
+ -1.664109 -2.834186 0
+ -1.144075 -1.612106 0
+ -1.950128 -1.820120 0
+ L3 26624 -0.001500 0.364563 4.010188 0 0.729125 3.463344 0
+ L3 26624 -0.001500 2.551938 3.463344 0 1.640531 3.098781 0
+ L3 26624 -0.001500 2.916500 4.374750 0 2.369656 4.010188 0
+ L3 26624 -0.001500 1.640531 4.739313 0 1.275969 4.010188 0
+ L3 26624 -0.001500 -0.729125 4.557031 0 -0.364562 4.010188 0
+ L3 26624 -0.001500 -2.187375 2.916500 0 -1.458250 2.916500 0
+ L3 26624 -0.001500 -1.640531 2.005094 0 -0.729125 2.369656 0
+ L3 26624 -0.001500 -2.187375 1.093688 0 -1.458250 0.546844 0
+ L3 26624 -0.001500 -3.281063 0.911406 0 -2.551938 0.546844 0
+ L3 26624 -0.001500 -4.192469 0.364563 0 -3.281063 0.000000 0
+ L3 26624 -0.001500 -2.916500 -0.911406 0 -3.645625 -1.640531 0
+ L3 26624 -0.001500 -3.281063 -2.551938 0 -2.734219 -1.822813 0
+ L3 26624 -0.001500 -2.005094 -4.010188 0 -1.458250 -3.281063 0
+ L3 26624 -0.001500 -0.729125 -3.281063 0 -0.911406 -4.374750 0
+ L3 26624 -0.001500 -0.546844 -2.005094 0 -0.364562 -2.734219 0
+ L3 26624 -0.001500 1.275969 -3.281063 0 1.640531 -4.374750 0
+ L3 26624 -0.001500 2.187375 -3.098781 0 3.281063 -3.645625 0
+ L3 26624 -0.001500 4.921594 -1.275969 0 4.010188 -1.458250 0
+ L3 26624 -0.001500 4.921594 -2.916500 0 4.010188 -2.551938 0
+ L3 26624 -0.001500 5.286156 -2.187375 0 4.374750 -2.005094 0
+ L3 26624 -0.001500 2.187375 -5.286156 0 2.005094 -4.557031 0
+ L3 26624 -0.001500 3.281063 -4.739313 0 2.734219 -4.192469 0
+ L3 26624 -0.001500 2.551938 -4.921594 0 2.187375 -3.827906 0
+ L3 26624 -0.001500 5.468438 0.911406 0 4.374750 1.093688 0
+ L3 26624 -0.001500 4.557031 2.369656 0 3.645625 1.822813 0
+ L3 26624 -0.001500 5.468438 1.822813 0 4.557031 1.640531 0
+ L3 26624 -0.001500 -1.822813 -5.103875 0 -1.640531 -4.374750 0
+ L3 26624 -0.001500 -4.010188 -2.551938 0 -3.463344 -2.187375 0
+ L3 26624 -0.001500 2.551938 5.833000 0 2.187375 4.921594 0
+ L3 26624 -0.001500 3.281063 5.286156 0 2.734219 4.739313 0
+ END$SEGS
+DRAW 172 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 32960 0.000000 22 0
+ 580.772727 388.517045 0
+ 595.772727 383.017045 0
+ 589.347727 375.704545 0
+ 581.097727 371.829545 0
+ 538.750000 350.500000 0
+ 538.625000 346.250000 0
+ 533.125000 341.500000 0
+ 525.625000 339.125000 0
+ 519.000000 339.000000 0
+ 511.875000 332.250000 0
+ 502.250000 326.750000 0
+ 494.250000 325.500000 0
+ 484.000000 326.000000 0
+ 486.500000 335.250000 0
+ 495.750000 334.500000 0
+ 504.000000 336.000000 0
+ 513.000000 345.000000 0
+ 513.000000 351.000000 0
+ 516.875000 354.875000 0
+ 522.125000 358.000000 0
+ 528.875000 358.500000 0
+ 572.522727 380.517045 0
+ END$SEGS
+DRAW 173 7 0 0 0 600.887500 396.706250 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 350.000000 "Bridge 45-B"
+ END$SEGS
+DRAW 174 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 31 0
+ 205.875000 546.312500 0
+ 210.375000 542.562500 0
+ 216.625000 541.812500 0
+ 221.125000 538.562500 0
+ 224.875000 538.812500 0
+ 229.625000 536.812500 0
+ 234.625000 535.812500 0
+ 241.125000 536.062500 0
+ 245.625000 535.062500 0
+ 250.625000 533.562500 0
+ 254.125000 534.812500 0
+ 258.375000 534.312500 0
+ 263.375000 532.812500 0
+ 267.125000 533.062500 0
+ 272.125000 534.312500 0
+ 275.375000 535.812500 0
+ 278.875000 536.562500 0
+ 277.625000 529.062500 0
+ 272.125000 528.062500 0
+ 264.375000 528.062500 0
+ 260.125000 525.312500 0
+ 255.375000 526.062500 0
+ 249.375000 529.562500 0
+ 245.875000 528.062500 0
+ 233.375000 529.812500 0
+ 230.125000 531.312500 0
+ 224.625000 531.312500 0
+ 218.625000 532.812500 0
+ 214.375000 536.062500 0
+ 209.125000 538.062500 0
+ 204.875000 541.062500 0
+ END$SEGS
+DRAW 175 3 0 0 0 0.000000 0.000000 0 0.000000
+ L3 11626275 0.060606 206.382452 545.889624 0 206.382452 545.889624 0
+ END$SEGS
+DRAW 176 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 47 0
+ 206.135417 545.916667 0
+ 205.385417 543.541667 0
+ 208.510417 542.916667 0
+ 210.760417 541.166667 0
+ 213.385417 541.416667 0
+ 216.260417 539.916667 0
+ 218.010417 538.166667 0
+ 219.635417 538.666667 0
+ 222.260417 536.291667 0
+ 223.510417 537.416667 0
+ 225.385417 536.666667 0
+ 228.010417 534.916667 0
+ 229.010417 535.541667 0
+ 231.760417 535.041667 0
+ 234.510417 535.541667 0
+ 236.135417 534.166667 0
+ 238.010417 535.041667 0
+ 240.260417 533.791667 0
+ 243.260417 533.916667 0
+ 245.635417 532.541667 0
+ 247.760417 532.916667 0
+ 250.760417 532.541667 0
+ 253.385417 533.166667 0
+ 255.510417 532.166667 0
+ 257.760417 532.916667 0
+ 260.510417 531.916667 0
+ 262.760417 531.666667 0
+ 265.885417 532.541667 0
+ 267.260417 531.166667 0
+ 269.885417 532.041667 0
+ 271.010417 533.416667 0
+ 273.760417 532.666667 0
+ 276.010417 533.791667 0
+ 277.635417 535.666667 0
+ 275.385417 535.166667 0
+ 265.760417 532.166667 0
+ 260.135417 534.166667 0
+ 254.135417 534.916667 0
+ 250.260417 534.291667 0
+ 243.760417 535.916667 0
+ 236.510417 535.291667 0
+ 230.260417 536.666667 0
+ 224.885417 538.666667 0
+ 219.510417 539.541667 0
+ 215.760417 542.166667 0
+ 212.260417 542.791667 0
+ 208.260417 544.916667 0
+ END$SEGS
+DRAW 177 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 25 0
+ 301.302083 532.083333 0
+ 304.552083 529.583333 0
+ 309.052083 528.583333 0
+ 313.052083 529.583333 0
+ 315.552083 527.083333 0
+ 318.552083 527.083333 0
+ 322.302083 527.583333 0
+ 325.302083 526.083333 0
+ 329.552083 526.583333 0
+ 333.802083 524.333333 0
+ 337.302083 525.333333 0
+ 341.302083 523.583333 0
+ 345.302083 522.583333 0
+ 349.552083 523.083333 0
+ 353.052083 524.083333 0
+ 355.302083 521.583333 0
+ 360.302083 524.083333 0
+ 360.552083 517.583333 0
+ 355.552083 515.583333 0
+ 349.302083 516.333333 0
+ 345.302083 514.833333 0
+ 338.802083 517.333333 0
+ 326.052083 517.583333 0
+ 316.802083 520.333333 0
+ 301.302083 525.833333 0
+ END$SEGS
+DRAW 178 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 30 0
+ 302.302083 528.583333 0
+ 300.302083 525.083333 0
+ 303.302083 522.833333 0
+ 308.052083 521.583333 0
+ 311.302083 523.333333 0
+ 313.802083 518.583333 0
+ 317.552083 518.583333 0
+ 321.302083 516.583333 0
+ 323.302083 517.583333 0
+ 329.802083 516.083333 0
+ 334.302083 516.583333 0
+ 338.552083 515.583333 0
+ 342.052083 515.583333 0
+ 346.302083 514.583333 0
+ 349.802083 516.083333 0
+ 356.802083 514.583333 0
+ 360.302083 517.083333 0
+ 359.552083 519.583333 0
+ 354.552083 519.583333 0
+ 347.802083 518.583333 0
+ 342.302083 519.333333 0
+ 337.052083 520.083333 0
+ 331.802083 522.833333 0
+ 328.302083 519.083333 0
+ 326.802083 523.583333 0
+ 321.802083 521.583333 0
+ 315.802083 523.583333 0
+ 312.302083 526.333333 0
+ 308.552083 523.833333 0
+ 304.552083 527.583333 0
+ END$SEGS
+DRAW 179 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 13 0
+ 279.022321 536.214286 0
+ 280.897321 536.839286 0
+ 283.897321 535.964286 0
+ 286.397321 535.839286 0
+ 289.772321 534.839286 0
+ 292.522321 535.089286 0
+ 295.147321 534.089286 0
+ 297.897321 534.214286 0
+ 300.647321 533.464286 0
+ 301.397321 532.214286 0
+ 301.897321 525.339286 0
+ 276.897321 530.214286 0
+ 278.022321 535.464286 0
+ END$SEGS
+DRAW 180 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 20 0
+ 277.897321 534.464286 0
+ 281.522321 534.714286 0
+ 284.397321 533.339286 0
+ 285.897321 534.089286 0
+ 289.022321 532.089286 0
+ 291.397321 532.964286 0
+ 294.022321 531.589286 0
+ 297.147321 532.589286 0
+ 300.647321 531.089286 0
+ 302.522321 528.214286 0
+ 301.897321 525.089286 0
+ 298.522321 524.714286 0
+ 295.647321 525.964286 0
+ 292.772321 526.089286 0
+ 289.897321 527.714286 0
+ 286.772321 526.839286 0
+ 283.022321 527.214286 0
+ 282.147321 529.089286 0
+ 278.054241 528.972341 0
+ 275.535674 530.456417 0
+ END$SEGS
+DRAW 181 4 0 0 0 -0.250000 -0.250000 0 0.000000
+ F4 12632256 0.000000 20 0
+ 282.022321 543.839286 0
+ 283.647321 547.464286 0
+ 281.522321 549.589286 0
+ 282.147321 551.964286 0
+ 284.647321 552.464286 0
+ 286.772321 552.339286 0
+ 288.022321 552.839286 0
+ 289.397321 552.339286 0
+ 290.688311 550.564176 0
+ 291.147321 551.839286 0
+ 294.022321 552.339286 0
+ 296.272321 551.964286 0
+ 297.772321 552.339286 0
+ 300.647321 550.964286 0
+ 301.647321 548.839286 0
+ 302.147321 547.089286 0
+ 300.897321 544.839286 0
+ 302.272321 542.964286 0
+ 300.147321 542.339286 0
+ 299.522321 541.214286 0
+ END$SEGS
+STRUCTURE 182 3 0 0 0 Fn3 2 310.218750 515.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 183 3 0 0 0 Fn3 2 335.218750 511.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 184 3 0 0 0 Fn3 2 293.218750 522.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 185 3 0 0 0 Fn3 2 279.218750 517.062500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 186 3 0 0 0 Fn3 2 260.718750 521.062500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 187 3 0 0 0 Fn3 2 232.218750 522.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 188 3 0 0 0 Fn3 2 208.218750 532.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 189 3 0 0 0 Fn3 2 349.718750 513.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 190 3 0 0 0 Fn3 2 317.718750 508.062500 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 191 3 0 0 0 Fn3 2 302.218750 522.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 192 3 0 0 0 Fn3 2 272.218750 523.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 193 3 0 0 0 Fn3 2 246.218750 525.062500 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 194 3 0 0 0 Fn3 2 219.218750 528.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 195 3 0 0 0 Fn3 2 211.218750 520.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 196 3 0 0 0 Fn3 2 296.218750 512.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 197 3 0 0 0 Fn3 2 267.218750 514.062500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 198 3 0 0 0 Fn3 2 281.718750 524.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 199 3 0 0 0 Fn3 2 247.718750 517.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 200 3 0 0 0 Fn3 2 222.218750 518.562500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 201 3 0 0 0 Fn3 2 236.718750 515.062500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 202 3 0 0 0 Fn3 2 327.218750 514.062500 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 203 3 0 0 0 Fn3 2 307.447917 576.458333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 204 3 0 0 0 Fn3 2 337.447917 576.958333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 205 3 0 0 0 Fn3 2 364.947917 566.458333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 206 3 0 0 0 Fn3 2 270.947917 575.458333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 207 3 0 0 0 Fn3 2 236.947917 577.958333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 208 3 0 0 0 Fn3 2 205.447917 581.458333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 209 3 0 0 0 Fn3 2 220.447917 576.958333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 210 3 0 0 0 Fn3 2 253.947917 574.458333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 211 3 0 0 0 Fn3 2 287.447917 582.958333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 212 3 0 0 0 Fn3 2 322.447917 569.958333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 213 3 0 0 0 Fn3 2 355.947917 581.458333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 214 3 0 0 0 Fn3 2 320.947917 589.458333 0 0.000000 "LgTrees 12"" Shade Shade-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 65280 -0.001500 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 65280 -0.001500 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 65280 -0.001500 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 65280 -0.001500 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 65280 -0.001500 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 65280 -0.001500 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 65280 -0.001500 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 65280 -0.001500 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 65280 -0.001500 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 65280 -0.001500 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 65280 -0.001500 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 65280 -0.001500 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 65280 -0.001500 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 65280 -0.001500 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 65280 -0.001500 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 65280 -0.001500 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 65280 -0.001500 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 65280 -0.001500 5.103875 -2.041550 0 4.666400 -2.187375 0
+ L3 65280 -0.001500 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 65280 -0.001500 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 65280 -0.001500 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 65280 -0.001500 -4.666400 2.770675 0 -4.228925 3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 26624 -0.001500 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 26624 -0.001500 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 26624 -0.001500 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 26624 -0.001500 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 26624 -0.001500 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 26624 -0.001500 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 26624 -0.001500 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 26624 -0.001500 -2.624850 0.729125 0 -2.041550 0.437475 0
+ L3 26624 -0.001500 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 26624 -0.001500 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 26624 -0.001500 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 26624 -0.001500 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 26624 -0.001500 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 26624 -0.001500 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 26624 -0.001500 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 26624 -0.001500 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 26624 -0.001500 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 26624 -0.001500 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 26624 -0.001500 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 26624 -0.001500 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 26624 -0.001500 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 26624 -0.001500 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 26624 -0.001500 3.645625 1.895725 0 2.916500 1.458250 0
+ L3 26624 -0.001500 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 26624 -0.001500 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 26624 -0.001500 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 26624 -0.001500 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 26624 -0.001500 2.624850 4.228925 0 2.187375 3.791450 0
+ END$SEGS
+STRUCTURE 215 3 0 0 0 Fn3 2 218.947917 588.958333 0 0.000000 "LgTrees 12"" Shade Shade-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 65280 -0.001500 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 65280 -0.001500 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 65280 -0.001500 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 65280 -0.001500 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 65280 -0.001500 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 65280 -0.001500 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 65280 -0.001500 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 65280 -0.001500 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 65280 -0.001500 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 65280 -0.001500 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 65280 -0.001500 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 65280 -0.001500 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 65280 -0.001500 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 65280 -0.001500 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 65280 -0.001500 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 65280 -0.001500 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 65280 -0.001500 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 65280 -0.001500 5.103875 -2.041550 0 4.666400 -2.187375 0
+ L3 65280 -0.001500 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 65280 -0.001500 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 65280 -0.001500 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 65280 -0.001500 -4.666400 2.770675 0 -4.228925 3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 26624 -0.001500 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 26624 -0.001500 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 26624 -0.001500 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 26624 -0.001500 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 26624 -0.001500 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 26624 -0.001500 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 26624 -0.001500 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 26624 -0.001500 -2.624850 0.729125 0 -2.041550 0.437475 0
+ L3 26624 -0.001500 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 26624 -0.001500 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 26624 -0.001500 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 26624 -0.001500 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 26624 -0.001500 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 26624 -0.001500 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 26624 -0.001500 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 26624 -0.001500 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 26624 -0.001500 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 26624 -0.001500 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 26624 -0.001500 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 26624 -0.001500 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 26624 -0.001500 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 26624 -0.001500 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 26624 -0.001500 3.645625 1.895725 0 2.916500 1.458250 0
+ L3 26624 -0.001500 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 26624 -0.001500 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 26624 -0.001500 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 26624 -0.001500 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 26624 -0.001500 2.624850 4.228925 0 2.187375 3.791450 0
+ END$SEGS
+STRUCTURE 216 3 0 0 0 Fn3 2 262.447917 583.958333 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 217 3 0 0 0 Fn3 2 341.947917 563.958333 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 218 3 0 0 0 Fn3 2 197.947917 567.458333 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 219 3 0 0 0 Fn3 2 568.635417 528.395833 0 0.000000 "LgTrees 12"" Shade Shade-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 -0.001500 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 -0.001500 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 -0.001500 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 -0.001500 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 -0.001500 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 -0.001500 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 -0.001500 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 -0.001500 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 -0.001500 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 -0.001500 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 -0.001500 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 -0.001500 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 -0.001500 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 -0.001500 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 -0.001500 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 -0.001500 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 -0.001500 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 -0.001500 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 -0.001500 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 -0.001500 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 -0.001500 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 -0.001500 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 -0.001500 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 -0.001500 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 -0.001500 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 -0.001500 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 -0.001500 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 -0.001500 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 -0.001500 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 -0.001500 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 -0.001500 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 -0.001500 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 -0.001500 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 -0.001500 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 -0.001500 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 -0.001500 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 -0.001500 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 -0.001500 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 -0.001500 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 -0.001500 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 -0.001500 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 -0.001500 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 -0.001500 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 -0.001500 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 -0.001500 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 -0.001500 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 -0.001500 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 -0.001500 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 -0.001500 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 -0.001500 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+STRUCTURE 220 3 0 0 0 Fn3 2 518.635417 510.395833 0 0.000000 "LgTrees 12"" Shade Shade-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 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 65280 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 65280 -0.001500 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 65280 -0.001500 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 65280 -0.001500 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 65280 -0.001500 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 65280 -0.001500 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 65280 -0.001500 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 65280 -0.001500 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 65280 -0.001500 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 65280 -0.001500 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 65280 -0.001500 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 65280 -0.001500 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 65280 -0.001500 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 65280 -0.001500 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 65280 -0.001500 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 65280 -0.001500 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 65280 -0.001500 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 65280 -0.001500 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 65280 -0.001500 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 65280 -0.001500 5.103875 -2.041550 0 4.666400 -2.187375 0
+ L3 65280 -0.001500 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 65280 -0.001500 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 65280 -0.001500 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 65280 -0.001500 -4.666400 2.770675 0 -4.228925 3.062325 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 -0.001500 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 26624 -0.001500 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 26624 -0.001500 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 26624 -0.001500 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 26624 -0.001500 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 26624 -0.001500 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 26624 -0.001500 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 26624 -0.001500 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 26624 -0.001500 -2.624850 0.729125 0 -2.041550 0.437475 0
+ L3 26624 -0.001500 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 26624 -0.001500 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 26624 -0.001500 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 26624 -0.001500 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 26624 -0.001500 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 26624 -0.001500 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 26624 -0.001500 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 26624 -0.001500 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 26624 -0.001500 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 26624 -0.001500 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 26624 -0.001500 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 26624 -0.001500 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 26624 -0.001500 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 26624 -0.001500 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 26624 -0.001500 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 26624 -0.001500 3.645625 1.895725 0 2.916500 1.458250 0
+ L3 26624 -0.001500 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 26624 -0.001500 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 26624 -0.001500 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 26624 -0.001500 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 26624 -0.001500 2.624850 4.228925 0 2.187375 3.791450 0
+ END$SEGS
+DRAW 221 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 32960 0.000000 14 0
+ 514.750000 562.437500 0
+ 528.000000 560.687500 0
+ 524.500000 577.187500 0
+ 525.666667 586.895833 0
+ 537.000000 624.500000 0
+ 543.000000 625.500000 0
+ 550.500000 632.500000 0
+ 557.500000 639.437500 0
+ 544.500000 647.187500 0
+ 536.500000 639.500000 0
+ 528.500000 634.500000 0
+ 527.000000 630.000000 0
+ 514.500000 592.500000 0
+ 512.000000 578.500000 0
+ END$SEGS
+DRAW 222 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16761220 0.000000 8 0
+ 436.916667 680.708333 0
+ 550.916667 619.708333 0
+ 684.375000 578.437500 0
+ 754.875000 578.437500 0
+ 754.875000 529.437500 0
+ 684.375000 529.437500 0
+ 539.916667 580.708333 0
+ 434.916667 631.708333 0
+ END$SEGS
+DRAW 223 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16761220 0.000000 10 0
+ 437.262467 680.523300 0
+ 254.250000 680.625000 0
+ 181.250000 714.625000 0
+ 144.250000 708.500000 0
+ 119.250000 691.125000 0
+ 119.250000 658.500000 0
+ 144.250000 635.625000 0
+ 180.250000 632.625000 0
+ 257.250000 632.500000 0
+ 436.985217 631.484547 0
+ END$SEGS
+DRAW 224 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16761220 0.000000 16 0
+ 502.833333 439.833333 0
+ 572.333333 382.416667 0
+ 595.333333 371.916667 0
+ 617.333333 369.416667 0
+ 649.333333 372.416667 0
+ 680.333333 387.416667 0
+ 709.833333 425.416667 0
+ 750.833333 426.416667 0
+ 750.833333 369.416667 0
+ 725.833333 352.416667 0
+ 691.333333 338.416667 0
+ 649.333333 332.916667 0
+ 595.333333 333.416667 0
+ 569.333333 338.416667 0
+ 541.333333 349.916667 0
+ 473.500000 406.562500 0
+ END$SEGS
+STRUCTURE 225 3 0 0 0 Fn3 2 406.666667 554.458333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 226 3 0 0 0 Fn3 2 376.166667 570.958333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 227 3 0 0 0 Fn3 2 292.166667 572.458333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 228 3 0 0 0 Fn3 2 187.166667 591.958333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 229 3 0 0 0 Fn3 2 198.166667 608.458333 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 230 3 0 0 0 Fn3 2 239.666667 599.958333 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 231 3 0 0 0 Fn3 2 285.166667 603.958333 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 232 3 0 0 0 Fn3 2 322.166667 606.458333 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 233 3 0 0 0 Fn3 2 368.666667 598.958333 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 234 3 0 0 0 Fn3 2 400.166667 582.958333 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 235 3 0 0 0 Fn3 2 385.166667 593.458333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 236 3 0 0 0 Fn3 2 356.666667 609.958333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 237 3 0 0 0 Fn3 2 339.666667 606.458333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 238 3 0 0 0 Fn3 2 329.666667 614.958333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 239 3 0 0 0 Fn3 2 296.666667 607.958333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 240 3 0 0 0 Fn3 2 309.666667 614.458333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 241 3 0 0 0 Fn3 2 262.666667 610.958333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 242 3 0 0 0 Fn3 2 247.166667 611.958333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 243 3 0 0 0 Fn3 2 217.166667 606.958333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 244 3 0 0 0 Fn3 2 210.666667 617.458333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 245 3 0 0 0 Fn3 2 231.166667 610.958333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 246 3 0 0 0 Fn3 2 256.166667 602.458333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 247 3 0 0 0 Fn3 2 280.166667 612.458333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 248 3 0 0 0 Fn3 2 189.166667 616.958333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 249 3 0 0 0 Fn3 2 164.166667 604.958333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 250 3 0 0 0 Fn3 2 182.666667 607.958333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 251 3 0 0 0 Fn3 2 172.166667 618.958333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 252 3 0 0 0 Fn3 2 256.500000 623.250000 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 253 3 0 0 0 Fn3 2 294.500000 620.250000 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 254 3 0 0 0 Fn3 2 224.500000 623.250000 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 255 3 0 0 0 Fn3 2 239.500000 620.250000 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 256 3 0 0 0 Fn3 2 200.500000 624.250000 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 257 3 0 0 0 Fn3 2 159.500000 623.250000 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 258 3 0 0 0 Fn3 2 320.500000 623.250000 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 259 3 0 0 0 Fn3 2 346.500000 617.250000 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 260 3 0 0 0 Fn3 2 380.500000 603.250000 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 261 3 0 0 0 Fn3 2 367.500000 618.250000 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 262 3 0 0 0 Fn3 2 107.500000 627.250000 0 0.000000 "LgTrees 15"" Shade Shade-15b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 -0.098818 0
+ F4 26624 0.000000 28 0
+ -6.275315 -3.379016 0
+ -5.229429 -5.269656 0
+ -3.037092 -4.304222 0
+ -2.393469 -6.737918 0
+ -0.945320 -7.361427 0
+ 0.683848 -5.350108 0
+ 2.554375 -7.099956 0
+ 4.807052 -6.033957 0
+ 3.962298 -3.801393 0
+ 6.657466 -3.057205 0
+ 7.059729 -0.522943 0
+ 5.651806 0.784414 0
+ 6.979277 2.675054 0
+ 5.973617 4.364562 0
+ 4.344449 3.761166 0
+ 4.284109 5.933391 0
+ 2.152111 7.059729 0
+ 1.267131 5.692032 0
+ -0.522943 5.712146 0
+ -0.965433 7.099956 0
+ -3.720940 6.214975 0
+ -3.379016 4.585807 0
+ -5.651806 4.424902 0
+ -6.818371 2.071658 0
+ -5.531127 0.744188 0
+ -7.220635 0.000000 0
+ -6.778145 -1.689508 0
+ -4.988071 -2.333130 0
+ F4 65280 0.000000 26 0
+ 1.005659 -4.706486 0
+ 2.413583 -6.114409 0
+ 3.761166 -5.289769 0
+ 3.157771 -2.936526 0
+ 5.852938 -2.192338 0
+ 6.033957 -1.025773 0
+ 4.344449 0.140792 0
+ 5.812712 2.353243 0
+ 5.169090 3.117544 0
+ 3.560034 3.077318 0
+ 3.479582 4.927731 0
+ 2.091772 5.692032 0
+ 0.945320 4.344449 0
+ -0.784414 4.585807 0
+ -1.186678 5.511014 0
+ -2.654941 5.128863 0
+ -2.675054 3.519808 0
+ -3.901959 3.479582 0
+ -4.706486 1.870527 0
+ -3.278450 0.522943 0
+ -4.626033 -0.181019 0
+ -4.404788 -1.146452 0
+ -2.252677 -1.548716 0
+ -3.077318 -3.016978 0
+ -1.729734 -4.062864 0
+ -1.186678 -5.249542 0
+ L3 65280 -0.001500 -1.275969 -6.197563 0 -0.546844 -5.650719 0
+ L3 65280 -0.001500 -1.822813 -5.833000 0 -2.005094 -4.921594 0
+ L3 65280 -0.001500 -4.192469 -3.827906 0 -2.916500 -3.827906 0
+ L3 65280 -0.001500 -5.103875 -3.463344 0 -4.557031 -2.916500 0
+ L3 65280 -0.001500 -3.827906 -3.098781 0 -3.098781 -2.551938 0
+ L3 65280 -0.001500 -3.463344 -2.005094 0 -4.557031 -1.822813 0
+ L3 65280 -0.001500 -6.197563 -1.458250 0 -4.921594 -1.458250 0
+ L3 65280 -0.001500 -6.197563 -0.364563 0 -5.103875 -0.911406 0
+ L3 65280 -0.001500 -4.192469 0.546844 0 -5.103875 0.364563 0
+ L3 65280 -0.001500 -4.921594 1.275969 0 -6.197563 2.005094 0
+ L3 65280 -0.001500 -5.650719 2.734219 0 -4.739313 2.916500 0
+ L3 65280 -0.001500 -4.374750 4.192469 0 -4.010188 3.645625 0
+ L3 65280 -0.001500 -2.734219 5.468438 0 -3.098781 6.015281 0
+ L3 65280 -0.001500 -1.640531 5.833000 0 -1.275969 6.379844 0
+ L3 65280 -0.001500 -0.182281 4.921594 0 0.000000 5.468438 0
+ L3 65280 -0.001500 0.911406 4.921594 0 0.364563 5.286156 0
+ L3 65280 -0.001500 2.369656 5.833000 0 2.187375 6.562125 0
+ L3 65280 -0.001500 3.463344 5.468438 0 4.010188 5.650719 0
+ L3 65280 -0.001500 6.379844 2.551938 0 5.833000 2.734219 0
+ L3 65280 -0.001500 5.468438 3.463344 0 5.833000 4.010188 0
+ L3 65280 -0.001500 6.379844 -0.546844 0 5.650719 -0.364563 0
+ L3 65280 -0.001500 -5.103875 -4.557031 0 -4.739313 -3.827906 0
+ L3 65280 -0.001500 -5.833000 -3.463344 0 -5.286156 -3.827906 0
+ F4 26624 0.000000 4 0
+ 2.808184 -2.886190 0
+ 1.664109 -2.548167 0
+ 1.534101 -1.690111 0
+ 2.288150 -2.002131 0
+ F4 26624 0.000000 5 0
+ -1.092072 -3.458227 0
+ -0.988065 -2.860188 0
+ 0.130009 -2.366155 0
+ 0.442029 -3.094203 0
+ -0.130009 -3.640239 0
+ F4 26624 0.000000 4 0
+ 3.562234 0.130009 0
+ 2.210145 0.442029 0
+ 1.924126 -0.234015 0
+ 3.770248 -0.338022 0
+ F4 26624 0.000000 4 0
+ 0.858056 3.458227 0
+ 0.182012 2.938193 0
+ 0.364024 1.846121 0
+ 0.780051 2.002131 0
+ F4 26624 0.000000 3 0
+ 3.172208 2.600171 0
+ 2.808184 1.794118 0
+ 2.236147 2.288150 0
+ F4 26624 0.000000 5 0
+ -2.730179 0.312020 0
+ -2.366155 0.052003 0
+ -1.118073 -0.260017 0
+ -0.442029 0.442029 0
+ -2.002131 0.676044 0
+ F4 26624 0.000000 4 0
+ -2.392157 3.016198 0
+ -1.664109 2.834186 0
+ -1.144075 1.612106 0
+ -1.950128 1.820120 0
+ L3 26624 -0.001500 0.364563 -4.010188 0 0.729125 -3.463344 0
+ L3 26624 -0.001500 2.551938 -3.463344 0 1.640531 -3.098781 0
+ L3 26624 -0.001500 2.916500 -4.374750 0 2.369656 -4.010188 0
+ L3 26624 -0.001500 1.640531 -4.739313 0 1.275969 -4.010188 0
+ L3 26624 -0.001500 -0.729125 -4.557031 0 -0.364562 -4.010188 0
+ L3 26624 -0.001500 -2.187375 -2.916500 0 -1.458250 -2.916500 0
+ L3 26624 -0.001500 -1.640531 -2.005094 0 -0.729125 -2.369656 0
+ L3 26624 -0.001500 -2.187375 -1.093688 0 -1.458250 -0.546844 0
+ L3 26624 -0.001500 -3.281063 -0.911406 0 -2.551938 -0.546844 0
+ L3 26624 -0.001500 -4.192469 -0.364563 0 -3.281063 0.000000 0
+ L3 26624 -0.001500 -2.916500 0.911406 0 -3.645625 1.640531 0
+ L3 26624 -0.001500 -3.281063 2.551938 0 -2.734219 1.822813 0
+ L3 26624 -0.001500 -2.005094 4.010188 0 -1.458250 3.281063 0
+ L3 26624 -0.001500 -0.729125 3.281063 0 -0.911406 4.374750 0
+ L3 26624 -0.001500 -0.546844 2.005094 0 -0.364562 2.734219 0
+ L3 26624 -0.001500 1.275969 3.281063 0 1.640531 4.374750 0
+ L3 26624 -0.001500 2.187375 3.098781 0 3.281063 3.645625 0
+ L3 26624 -0.001500 4.921594 1.275969 0 4.010188 1.458250 0
+ L3 26624 -0.001500 4.921594 2.916500 0 4.010188 2.551938 0
+ L3 26624 -0.001500 5.286156 2.187375 0 4.374750 2.005094 0
+ L3 26624 -0.001500 2.187375 5.286156 0 2.005094 4.557031 0
+ L3 26624 -0.001500 3.281062 4.739313 0 2.734219 4.192469 0
+ L3 26624 -0.001500 2.551938 4.921594 0 2.187375 3.827906 0
+ L3 26624 -0.001500 5.468438 -0.911406 0 4.374750 -1.093688 0
+ L3 26624 -0.001500 4.557031 -2.369656 0 3.645625 -1.822813 0
+ L3 26624 -0.001500 5.468438 -1.822813 0 4.557031 -1.640531 0
+ L3 26624 -0.001500 -1.822813 5.103875 0 -1.640531 4.374750 0
+ L3 26624 -0.001500 -4.010188 2.551938 0 -3.463344 2.187375 0
+ L3 26624 -0.001500 2.551938 -5.833000 0 2.187375 -4.921594 0
+ L3 26624 -0.001500 3.281062 -5.286156 0 2.734219 -4.739313 0
+ END$SEGS
+STRUCTURE 263 3 0 0 0 Fn3 2 145.500000 611.250000 0 0.000000 "LgTrees 15"" Shade Shade-15b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 -0.098818 0
+ F4 26624 0.000000 28 0
+ -6.275315 -3.379016 0
+ -5.229429 -5.269656 0
+ -3.037092 -4.304222 0
+ -2.393469 -6.737918 0
+ -0.945320 -7.361427 0
+ 0.683848 -5.350108 0
+ 2.554375 -7.099956 0
+ 4.807052 -6.033957 0
+ 3.962298 -3.801393 0
+ 6.657466 -3.057205 0
+ 7.059729 -0.522943 0
+ 5.651806 0.784414 0
+ 6.979277 2.675054 0
+ 5.973617 4.364562 0
+ 4.344449 3.761166 0
+ 4.284109 5.933391 0
+ 2.152111 7.059729 0
+ 1.267131 5.692032 0
+ -0.522943 5.712146 0
+ -0.965433 7.099956 0
+ -3.720940 6.214975 0
+ -3.379016 4.585807 0
+ -5.651806 4.424902 0
+ -6.818371 2.071658 0
+ -5.531127 0.744188 0
+ -7.220635 0.000000 0
+ -6.778145 -1.689508 0
+ -4.988071 -2.333130 0
+ F4 65280 0.000000 26 0
+ 1.005659 -4.706486 0
+ 2.413583 -6.114409 0
+ 3.761166 -5.289769 0
+ 3.157771 -2.936526 0
+ 5.852938 -2.192338 0
+ 6.033957 -1.025773 0
+ 4.344449 0.140792 0
+ 5.812712 2.353243 0
+ 5.169090 3.117544 0
+ 3.560034 3.077318 0
+ 3.479582 4.927731 0
+ 2.091772 5.692032 0
+ 0.945320 4.344449 0
+ -0.784414 4.585807 0
+ -1.186678 5.511014 0
+ -2.654941 5.128863 0
+ -2.675054 3.519808 0
+ -3.901959 3.479582 0
+ -4.706486 1.870527 0
+ -3.278450 0.522943 0
+ -4.626033 -0.181019 0
+ -4.404788 -1.146452 0
+ -2.252677 -1.548716 0
+ -3.077318 -3.016978 0
+ -1.729734 -4.062864 0
+ -1.186678 -5.249542 0
+ L3 65280 -0.001500 -1.275969 -6.197563 0 -0.546844 -5.650719 0
+ L3 65280 -0.001500 -1.822813 -5.833000 0 -2.005094 -4.921594 0
+ L3 65280 -0.001500 -4.192469 -3.827906 0 -2.916500 -3.827906 0
+ L3 65280 -0.001500 -5.103875 -3.463344 0 -4.557031 -2.916500 0
+ L3 65280 -0.001500 -3.827906 -3.098781 0 -3.098781 -2.551938 0
+ L3 65280 -0.001500 -3.463344 -2.005094 0 -4.557031 -1.822813 0
+ L3 65280 -0.001500 -6.197563 -1.458250 0 -4.921594 -1.458250 0
+ L3 65280 -0.001500 -6.197563 -0.364563 0 -5.103875 -0.911406 0
+ L3 65280 -0.001500 -4.192469 0.546844 0 -5.103875 0.364563 0
+ L3 65280 -0.001500 -4.921594 1.275969 0 -6.197563 2.005094 0
+ L3 65280 -0.001500 -5.650719 2.734219 0 -4.739313 2.916500 0
+ L3 65280 -0.001500 -4.374750 4.192469 0 -4.010188 3.645625 0
+ L3 65280 -0.001500 -2.734219 5.468438 0 -3.098781 6.015281 0
+ L3 65280 -0.001500 -1.640531 5.833000 0 -1.275969 6.379844 0
+ L3 65280 -0.001500 -0.182281 4.921594 0 0.000000 5.468438 0
+ L3 65280 -0.001500 0.911406 4.921594 0 0.364563 5.286156 0
+ L3 65280 -0.001500 2.369656 5.833000 0 2.187375 6.562125 0
+ L3 65280 -0.001500 3.463344 5.468438 0 4.010188 5.650719 0
+ L3 65280 -0.001500 6.379844 2.551938 0 5.833000 2.734219 0
+ L3 65280 -0.001500 5.468438 3.463344 0 5.833000 4.010188 0
+ L3 65280 -0.001500 6.379844 -0.546844 0 5.650719 -0.364563 0
+ L3 65280 -0.001500 -5.103875 -4.557031 0 -4.739313 -3.827906 0
+ L3 65280 -0.001500 -5.833000 -3.463344 0 -5.286156 -3.827906 0
+ F4 26624 0.000000 4 0
+ 2.808184 -2.886190 0
+ 1.664109 -2.548167 0
+ 1.534101 -1.690111 0
+ 2.288150 -2.002131 0
+ F4 26624 0.000000 5 0
+ -1.092072 -3.458227 0
+ -0.988065 -2.860188 0
+ 0.130009 -2.366155 0
+ 0.442029 -3.094203 0
+ -0.130009 -3.640239 0
+ F4 26624 0.000000 4 0
+ 3.562234 0.130009 0
+ 2.210145 0.442029 0
+ 1.924126 -0.234015 0
+ 3.770248 -0.338022 0
+ F4 26624 0.000000 4 0
+ 0.858056 3.458227 0
+ 0.182012 2.938193 0
+ 0.364024 1.846121 0
+ 0.780051 2.002131 0
+ F4 26624 0.000000 3 0
+ 3.172208 2.600171 0
+ 2.808184 1.794118 0
+ 2.236147 2.288150 0
+ F4 26624 0.000000 5 0
+ -2.730179 0.312020 0
+ -2.366155 0.052003 0
+ -1.118073 -0.260017 0
+ -0.442029 0.442029 0
+ -2.002131 0.676044 0
+ F4 26624 0.000000 4 0
+ -2.392157 3.016198 0
+ -1.664109 2.834186 0
+ -1.144075 1.612106 0
+ -1.950128 1.820120 0
+ L3 26624 -0.001500 0.364563 -4.010188 0 0.729125 -3.463344 0
+ L3 26624 -0.001500 2.551938 -3.463344 0 1.640531 -3.098781 0
+ L3 26624 -0.001500 2.916500 -4.374750 0 2.369656 -4.010188 0
+ L3 26624 -0.001500 1.640531 -4.739313 0 1.275969 -4.010188 0
+ L3 26624 -0.001500 -0.729125 -4.557031 0 -0.364562 -4.010188 0
+ L3 26624 -0.001500 -2.187375 -2.916500 0 -1.458250 -2.916500 0
+ L3 26624 -0.001500 -1.640531 -2.005094 0 -0.729125 -2.369656 0
+ L3 26624 -0.001500 -2.187375 -1.093688 0 -1.458250 -0.546844 0
+ L3 26624 -0.001500 -3.281063 -0.911406 0 -2.551938 -0.546844 0
+ L3 26624 -0.001500 -4.192469 -0.364563 0 -3.281063 0.000000 0
+ L3 26624 -0.001500 -2.916500 0.911406 0 -3.645625 1.640531 0
+ L3 26624 -0.001500 -3.281063 2.551938 0 -2.734219 1.822813 0
+ L3 26624 -0.001500 -2.005094 4.010188 0 -1.458250 3.281063 0
+ L3 26624 -0.001500 -0.729125 3.281063 0 -0.911406 4.374750 0
+ L3 26624 -0.001500 -0.546844 2.005094 0 -0.364562 2.734219 0
+ L3 26624 -0.001500 1.275969 3.281063 0 1.640531 4.374750 0
+ L3 26624 -0.001500 2.187375 3.098781 0 3.281063 3.645625 0
+ L3 26624 -0.001500 4.921594 1.275969 0 4.010188 1.458250 0
+ L3 26624 -0.001500 4.921594 2.916500 0 4.010188 2.551938 0
+ L3 26624 -0.001500 5.286156 2.187375 0 4.374750 2.005094 0
+ L3 26624 -0.001500 2.187375 5.286156 0 2.005094 4.557031 0
+ L3 26624 -0.001500 3.281062 4.739313 0 2.734219 4.192469 0
+ L3 26624 -0.001500 2.551938 4.921594 0 2.187375 3.827906 0
+ L3 26624 -0.001500 5.468438 -0.911406 0 4.374750 -1.093688 0
+ L3 26624 -0.001500 4.557031 -2.369656 0 3.645625 -1.822813 0
+ L3 26624 -0.001500 5.468438 -1.822813 0 4.557031 -1.640531 0
+ L3 26624 -0.001500 -1.822813 5.103875 0 -1.640531 4.374750 0
+ L3 26624 -0.001500 -4.010188 2.551938 0 -3.463344 2.187375 0
+ L3 26624 -0.001500 2.551938 -5.833000 0 2.187375 -4.921594 0
+ L3 26624 -0.001500 3.281062 -5.286156 0 2.734219 -4.739313 0
+ END$SEGS
+STRUCTURE 264 3 0 0 0 Fn3 2 130.500000 630.250000 0 0.000000 "LgTrees 15"" Shade Shade-15a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 0.098818 0
+ F4 26624 0.000000 28 0
+ -6.275315 3.379016 0
+ -5.229429 5.269656 0
+ -3.037092 4.304222 0
+ -2.393469 6.737918 0
+ -0.945320 7.361427 0
+ 0.683848 5.350108 0
+ 2.554375 7.099956 0
+ 4.807052 6.033957 0
+ 3.962298 3.801393 0
+ 6.657466 3.057205 0
+ 7.059729 0.522943 0
+ 5.651806 -0.784414 0
+ 6.979277 -2.675054 0
+ 5.973617 -4.364562 0
+ 4.344449 -3.761166 0
+ 4.284109 -5.933391 0
+ 2.152111 -7.059729 0
+ 1.267131 -5.692032 0
+ -0.522943 -5.712146 0
+ -0.965433 -7.099956 0
+ -3.720940 -6.214975 0
+ -3.379016 -4.585807 0
+ -5.651806 -4.424902 0
+ -6.818371 -2.071658 0
+ -5.531127 -0.744188 0
+ -7.220635 0.000000 0
+ -6.778145 1.689508 0
+ -4.988071 2.333130 0
+ F4 65280 0.000000 26 0
+ 1.005659 4.706486 0
+ 2.413583 6.114409 0
+ 3.761166 5.289769 0
+ 3.157771 2.936526 0
+ 5.852938 2.192338 0
+ 6.033957 1.025773 0
+ 4.344449 -0.140792 0
+ 5.812712 -2.353243 0
+ 5.169090 -3.117544 0
+ 3.560034 -3.077318 0
+ 3.479582 -4.927731 0
+ 2.091772 -5.692032 0
+ 0.945320 -4.344449 0
+ -0.784414 -4.585807 0
+ -1.186678 -5.511014 0
+ -2.654941 -5.128863 0
+ -2.675054 -3.519808 0
+ -3.901959 -3.479582 0
+ -4.706486 -1.870527 0
+ -3.278450 -0.522943 0
+ -4.626033 0.181019 0
+ -4.404788 1.146452 0
+ -2.252677 1.548716 0
+ -3.077318 3.016978 0
+ -1.729734 4.062864 0
+ -1.186678 5.249542 0
+ L3 65280 -0.001500 -1.275969 6.197563 0 -0.546844 5.650719 0
+ L3 65280 -0.001500 -1.822813 5.833000 0 -2.005094 4.921594 0
+ L3 65280 -0.001500 -4.192469 3.827906 0 -2.916500 3.827906 0
+ L3 65280 -0.001500 -5.103875 3.463344 0 -4.557031 2.916500 0
+ L3 65280 -0.001500 -3.827906 3.098781 0 -3.098781 2.551938 0
+ L3 65280 -0.001500 -3.463344 2.005094 0 -4.557031 1.822813 0
+ L3 65280 -0.001500 -6.197563 1.458250 0 -4.921594 1.458250 0
+ L3 65280 -0.001500 -6.197563 0.364563 0 -5.103875 0.911406 0
+ L3 65280 -0.001500 -4.192469 -0.546844 0 -5.103875 -0.364563 0
+ L3 65280 -0.001500 -4.921594 -1.275969 0 -6.197563 -2.005094 0
+ L3 65280 -0.001500 -5.650719 -2.734219 0 -4.739313 -2.916500 0
+ L3 65280 -0.001500 -4.374750 -4.192469 0 -4.010188 -3.645625 0
+ L3 65280 -0.001500 -2.734219 -5.468438 0 -3.098781 -6.015281 0
+ L3 65280 -0.001500 -1.640531 -5.833000 0 -1.275969 -6.379844 0
+ L3 65280 -0.001500 -0.182281 -4.921594 0 0.000000 -5.468438 0
+ L3 65280 -0.001500 0.911406 -4.921594 0 0.364563 -5.286156 0
+ L3 65280 -0.001500 2.369656 -5.833000 0 2.187375 -6.562125 0
+ L3 65280 -0.001500 3.463344 -5.468438 0 4.010188 -5.650719 0
+ L3 65280 -0.001500 6.379844 -2.551938 0 5.833000 -2.734219 0
+ L3 65280 -0.001500 5.468438 -3.463344 0 5.833000 -4.010188 0
+ L3 65280 -0.001500 6.379844 0.546844 0 5.650719 0.364563 0
+ L3 65280 -0.001500 -5.103875 4.557031 0 -4.739313 3.827906 0
+ L3 65280 -0.001500 -5.833000 3.463344 0 -5.286156 3.827906 0
+ F4 26624 0.000000 4 0
+ 2.808184 2.886190 0
+ 1.664109 2.548167 0
+ 1.534101 1.690111 0
+ 2.288150 2.002131 0
+ F4 26624 0.000000 5 0
+ -1.092072 3.458227 0
+ -0.988065 2.860188 0
+ 0.130009 2.366155 0
+ 0.442029 3.094203 0
+ -0.130009 3.640239 0
+ F4 26624 0.000000 4 0
+ 3.562234 -0.130009 0
+ 2.210145 -0.442029 0
+ 1.924126 0.234015 0
+ 3.770248 0.338022 0
+ F4 26624 0.000000 4 0
+ 0.858056 -3.458227 0
+ 0.182012 -2.938193 0
+ 0.364024 -1.846121 0
+ 0.780051 -2.002131 0
+ F4 26624 0.000000 3 0
+ 3.172208 -2.600171 0
+ 2.808184 -1.794118 0
+ 2.236147 -2.288150 0
+ F4 26624 0.000000 5 0
+ -2.730179 -0.312020 0
+ -2.366155 -0.052003 0
+ -1.118073 0.260017 0
+ -0.442029 -0.442029 0
+ -2.002131 -0.676044 0
+ F4 26624 0.000000 4 0
+ -2.392157 -3.016198 0
+ -1.664109 -2.834186 0
+ -1.144075 -1.612106 0
+ -1.950128 -1.820120 0
+ L3 26624 -0.001500 0.364563 4.010188 0 0.729125 3.463344 0
+ L3 26624 -0.001500 2.551938 3.463344 0 1.640531 3.098781 0
+ L3 26624 -0.001500 2.916500 4.374750 0 2.369656 4.010188 0
+ L3 26624 -0.001500 1.640531 4.739313 0 1.275969 4.010188 0
+ L3 26624 -0.001500 -0.729125 4.557031 0 -0.364562 4.010188 0
+ L3 26624 -0.001500 -2.187375 2.916500 0 -1.458250 2.916500 0
+ L3 26624 -0.001500 -1.640531 2.005094 0 -0.729125 2.369656 0
+ L3 26624 -0.001500 -2.187375 1.093688 0 -1.458250 0.546844 0
+ L3 26624 -0.001500 -3.281063 0.911406 0 -2.551938 0.546844 0
+ L3 26624 -0.001500 -4.192469 0.364563 0 -3.281063 0.000000 0
+ L3 26624 -0.001500 -2.916500 -0.911406 0 -3.645625 -1.640531 0
+ L3 26624 -0.001500 -3.281063 -2.551938 0 -2.734219 -1.822813 0
+ L3 26624 -0.001500 -2.005094 -4.010188 0 -1.458250 -3.281063 0
+ L3 26624 -0.001500 -0.729125 -3.281063 0 -0.911406 -4.374750 0
+ L3 26624 -0.001500 -0.546844 -2.005094 0 -0.364562 -2.734219 0
+ L3 26624 -0.001500 1.275969 -3.281063 0 1.640531 -4.374750 0
+ L3 26624 -0.001500 2.187375 -3.098781 0 3.281063 -3.645625 0
+ L3 26624 -0.001500 4.921594 -1.275969 0 4.010188 -1.458250 0
+ L3 26624 -0.001500 4.921594 -2.916500 0 4.010188 -2.551938 0
+ L3 26624 -0.001500 5.286156 -2.187375 0 4.374750 -2.005094 0
+ L3 26624 -0.001500 2.187375 -5.286156 0 2.005094 -4.557031 0
+ L3 26624 -0.001500 3.281063 -4.739313 0 2.734219 -4.192469 0
+ L3 26624 -0.001500 2.551938 -4.921594 0 2.187375 -3.827906 0
+ L3 26624 -0.001500 5.468438 0.911406 0 4.374750 1.093688 0
+ L3 26624 -0.001500 4.557031 2.369656 0 3.645625 1.822813 0
+ L3 26624 -0.001500 5.468438 1.822813 0 4.557031 1.640531 0
+ L3 26624 -0.001500 -1.822813 -5.103875 0 -1.640531 -4.374750 0
+ L3 26624 -0.001500 -4.010188 -2.551938 0 -3.463344 -2.187375 0
+ L3 26624 -0.001500 2.551938 5.833000 0 2.187375 4.921594 0
+ L3 26624 -0.001500 3.281063 5.286156 0 2.734219 4.739313 0
+ END$SEGS
+STRUCTURE 265 3 0 0 0 Fn3 2 122.500000 613.250000 0 0.000000 "LgTrees 15"" Shade Shade-15a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 0.098818 0
+ F4 26624 0.000000 28 0
+ -6.275315 3.379016 0
+ -5.229429 5.269656 0
+ -3.037092 4.304222 0
+ -2.393469 6.737918 0
+ -0.945320 7.361427 0
+ 0.683848 5.350108 0
+ 2.554375 7.099956 0
+ 4.807052 6.033957 0
+ 3.962298 3.801393 0
+ 6.657466 3.057205 0
+ 7.059729 0.522943 0
+ 5.651806 -0.784414 0
+ 6.979277 -2.675054 0
+ 5.973617 -4.364562 0
+ 4.344449 -3.761166 0
+ 4.284109 -5.933391 0
+ 2.152111 -7.059729 0
+ 1.267131 -5.692032 0
+ -0.522943 -5.712146 0
+ -0.965433 -7.099956 0
+ -3.720940 -6.214975 0
+ -3.379016 -4.585807 0
+ -5.651806 -4.424902 0
+ -6.818371 -2.071658 0
+ -5.531127 -0.744188 0
+ -7.220635 0.000000 0
+ -6.778145 1.689508 0
+ -4.988071 2.333130 0
+ F4 65280 0.000000 26 0
+ 1.005659 4.706486 0
+ 2.413583 6.114409 0
+ 3.761166 5.289769 0
+ 3.157771 2.936526 0
+ 5.852938 2.192338 0
+ 6.033957 1.025773 0
+ 4.344449 -0.140792 0
+ 5.812712 -2.353243 0
+ 5.169090 -3.117544 0
+ 3.560034 -3.077318 0
+ 3.479582 -4.927731 0
+ 2.091772 -5.692032 0
+ 0.945320 -4.344449 0
+ -0.784414 -4.585807 0
+ -1.186678 -5.511014 0
+ -2.654941 -5.128863 0
+ -2.675054 -3.519808 0
+ -3.901959 -3.479582 0
+ -4.706486 -1.870527 0
+ -3.278450 -0.522943 0
+ -4.626033 0.181019 0
+ -4.404788 1.146452 0
+ -2.252677 1.548716 0
+ -3.077318 3.016978 0
+ -1.729734 4.062864 0
+ -1.186678 5.249542 0
+ L3 65280 -0.001500 -1.275969 6.197563 0 -0.546844 5.650719 0
+ L3 65280 -0.001500 -1.822813 5.833000 0 -2.005094 4.921594 0
+ L3 65280 -0.001500 -4.192469 3.827906 0 -2.916500 3.827906 0
+ L3 65280 -0.001500 -5.103875 3.463344 0 -4.557031 2.916500 0
+ L3 65280 -0.001500 -3.827906 3.098781 0 -3.098781 2.551938 0
+ L3 65280 -0.001500 -3.463344 2.005094 0 -4.557031 1.822813 0
+ L3 65280 -0.001500 -6.197563 1.458250 0 -4.921594 1.458250 0
+ L3 65280 -0.001500 -6.197563 0.364563 0 -5.103875 0.911406 0
+ L3 65280 -0.001500 -4.192469 -0.546844 0 -5.103875 -0.364563 0
+ L3 65280 -0.001500 -4.921594 -1.275969 0 -6.197563 -2.005094 0
+ L3 65280 -0.001500 -5.650719 -2.734219 0 -4.739313 -2.916500 0
+ L3 65280 -0.001500 -4.374750 -4.192469 0 -4.010188 -3.645625 0
+ L3 65280 -0.001500 -2.734219 -5.468438 0 -3.098781 -6.015281 0
+ L3 65280 -0.001500 -1.640531 -5.833000 0 -1.275969 -6.379844 0
+ L3 65280 -0.001500 -0.182281 -4.921594 0 0.000000 -5.468438 0
+ L3 65280 -0.001500 0.911406 -4.921594 0 0.364563 -5.286156 0
+ L3 65280 -0.001500 2.369656 -5.833000 0 2.187375 -6.562125 0
+ L3 65280 -0.001500 3.463344 -5.468438 0 4.010188 -5.650719 0
+ L3 65280 -0.001500 6.379844 -2.551938 0 5.833000 -2.734219 0
+ L3 65280 -0.001500 5.468438 -3.463344 0 5.833000 -4.010188 0
+ L3 65280 -0.001500 6.379844 0.546844 0 5.650719 0.364563 0
+ L3 65280 -0.001500 -5.103875 4.557031 0 -4.739313 3.827906 0
+ L3 65280 -0.001500 -5.833000 3.463344 0 -5.286156 3.827906 0
+ F4 26624 0.000000 4 0
+ 2.808184 2.886190 0
+ 1.664109 2.548167 0
+ 1.534101 1.690111 0
+ 2.288150 2.002131 0
+ F4 26624 0.000000 5 0
+ -1.092072 3.458227 0
+ -0.988065 2.860188 0
+ 0.130009 2.366155 0
+ 0.442029 3.094203 0
+ -0.130009 3.640239 0
+ F4 26624 0.000000 4 0
+ 3.562234 -0.130009 0
+ 2.210145 -0.442029 0
+ 1.924126 0.234015 0
+ 3.770248 0.338022 0
+ F4 26624 0.000000 4 0
+ 0.858056 -3.458227 0
+ 0.182012 -2.938193 0
+ 0.364024 -1.846121 0
+ 0.780051 -2.002131 0
+ F4 26624 0.000000 3 0
+ 3.172208 -2.600171 0
+ 2.808184 -1.794118 0
+ 2.236147 -2.288150 0
+ F4 26624 0.000000 5 0
+ -2.730179 -0.312020 0
+ -2.366155 -0.052003 0
+ -1.118073 0.260017 0
+ -0.442029 -0.442029 0
+ -2.002131 -0.676044 0
+ F4 26624 0.000000 4 0
+ -2.392157 -3.016198 0
+ -1.664109 -2.834186 0
+ -1.144075 -1.612106 0
+ -1.950128 -1.820120 0
+ L3 26624 -0.001500 0.364563 4.010188 0 0.729125 3.463344 0
+ L3 26624 -0.001500 2.551938 3.463344 0 1.640531 3.098781 0
+ L3 26624 -0.001500 2.916500 4.374750 0 2.369656 4.010188 0
+ L3 26624 -0.001500 1.640531 4.739313 0 1.275969 4.010188 0
+ L3 26624 -0.001500 -0.729125 4.557031 0 -0.364562 4.010188 0
+ L3 26624 -0.001500 -2.187375 2.916500 0 -1.458250 2.916500 0
+ L3 26624 -0.001500 -1.640531 2.005094 0 -0.729125 2.369656 0
+ L3 26624 -0.001500 -2.187375 1.093688 0 -1.458250 0.546844 0
+ L3 26624 -0.001500 -3.281063 0.911406 0 -2.551938 0.546844 0
+ L3 26624 -0.001500 -4.192469 0.364563 0 -3.281063 0.000000 0
+ L3 26624 -0.001500 -2.916500 -0.911406 0 -3.645625 -1.640531 0
+ L3 26624 -0.001500 -3.281063 -2.551938 0 -2.734219 -1.822813 0
+ L3 26624 -0.001500 -2.005094 -4.010188 0 -1.458250 -3.281063 0
+ L3 26624 -0.001500 -0.729125 -3.281063 0 -0.911406 -4.374750 0
+ L3 26624 -0.001500 -0.546844 -2.005094 0 -0.364562 -2.734219 0
+ L3 26624 -0.001500 1.275969 -3.281063 0 1.640531 -4.374750 0
+ L3 26624 -0.001500 2.187375 -3.098781 0 3.281063 -3.645625 0
+ L3 26624 -0.001500 4.921594 -1.275969 0 4.010188 -1.458250 0
+ L3 26624 -0.001500 4.921594 -2.916500 0 4.010188 -2.551938 0
+ L3 26624 -0.001500 5.286156 -2.187375 0 4.374750 -2.005094 0
+ L3 26624 -0.001500 2.187375 -5.286156 0 2.005094 -4.557031 0
+ L3 26624 -0.001500 3.281063 -4.739313 0 2.734219 -4.192469 0
+ L3 26624 -0.001500 2.551938 -4.921594 0 2.187375 -3.827906 0
+ L3 26624 -0.001500 5.468438 0.911406 0 4.374750 1.093688 0
+ L3 26624 -0.001500 4.557031 2.369656 0 3.645625 1.822813 0
+ L3 26624 -0.001500 5.468438 1.822813 0 4.557031 1.640531 0
+ L3 26624 -0.001500 -1.822813 -5.103875 0 -1.640531 -4.374750 0
+ L3 26624 -0.001500 -4.010188 -2.551938 0 -3.463344 -2.187375 0
+ L3 26624 -0.001500 2.551938 5.833000 0 2.187375 4.921594 0
+ L3 26624 -0.001500 3.281063 5.286156 0 2.734219 4.739313 0
+ END$SEGS
+DRAW 266 7 0 0 0 130.000000 554.375000 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 350.000000 "Bridge 46-D"
+ END$SEGS
+STRUCTURE 267 3 0 0 0 Fn3 2 114.500000 648.500000 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 268 3 0 0 0 Fn3 2 97.500000 677.000000 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 269 3 0 0 0 Fn3 2 154.500000 723.000000 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 270 3 0 0 0 Fn3 2 132.000000 719.000000 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 271 3 0 0 0 Fn3 2 91.500000 653.500000 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 272 3 0 0 0 Fn3 2 143.000000 716.000000 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 273 3 0 0 0 Fn3 2 111.500000 666.000000 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 274 3 0 0 0 Fn3 2 96.500000 664.500000 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 275 3 0 0 0 Fn3 2 98.000000 644.000000 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 276 3 0 0 0 Fn3 2 169.500000 720.500000 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 277 3 0 0 0 Fn3 2 137.500000 575.500000 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 278 3 0 0 0 Fn3 2 107.000000 583.500000 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 279 3 0 0 0 Fn3 2 87.500000 568.000000 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 280 3 0 0 0 Fn3 2 163.000000 570.500000 0 0.000000 "LgTrees 12"" Conifer Conif-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ L3 26624 -0.001500 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 -0.001500 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 -0.001500 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 -0.001500 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 -0.001500 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 -0.001500 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 -0.001500 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 -0.001500 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 -0.001500 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 -0.001500 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 -0.001500 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 -0.001500 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 -0.001500 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 -0.001500 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 -0.001500 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 -0.001500 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 -0.001500 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 -0.001500 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 -0.001500 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 -0.001500 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 -0.001500 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 -0.001500 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 -0.001500 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 -0.001500 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 -0.001500 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 -0.001500 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 -0.001500 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 -0.001500 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 -0.001500 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 -0.001500 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 -0.001500 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 -0.001500 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 -0.001500 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 -0.001500 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 -0.001500 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 -0.001500 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 -0.001500 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 -0.001500 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ END$SEGS
+STRUCTURE 281 3 0 0 0 Fn3 2 118.500000 563.000000 0 0.000000 "LgTrees 12"" Conifer Conif-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ L3 26624 -0.001500 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 -0.001500 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 -0.001500 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 -0.001500 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 -0.001500 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 -0.001500 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 -0.001500 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 -0.001500 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 -0.001500 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 -0.001500 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 -0.001500 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 -0.001500 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 -0.001500 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 -0.001500 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 -0.001500 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 -0.001500 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 -0.001500 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 -0.001500 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 -0.001500 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 -0.001500 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 -0.001500 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 -0.001500 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 -0.001500 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 -0.001500 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 -0.001500 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 -0.001500 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 -0.001500 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 -0.001500 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 -0.001500 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 -0.001500 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 -0.001500 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 -0.001500 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 -0.001500 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 -0.001500 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 -0.001500 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 -0.001500 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 -0.001500 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 -0.001500 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ END$SEGS
+STRUCTURE 282 3 0 0 0 Fn3 2 81.000000 592.500000 0 0.000000 "LgTrees 12"" Conifer Conif-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ L3 26624 -0.001500 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 -0.001500 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 -0.001500 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 -0.001500 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 -0.001500 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 -0.001500 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 -0.001500 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 -0.001500 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 -0.001500 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 -0.001500 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 -0.001500 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 -0.001500 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 -0.001500 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 -0.001500 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 -0.001500 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 -0.001500 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 -0.001500 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 -0.001500 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 -0.001500 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 -0.001500 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 -0.001500 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 -0.001500 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 -0.001500 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 -0.001500 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 -0.001500 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 -0.001500 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 -0.001500 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 -0.001500 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 -0.001500 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 -0.001500 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 -0.001500 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 -0.001500 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 -0.001500 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 -0.001500 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 -0.001500 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 -0.001500 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 -0.001500 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 -0.001500 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ END$SEGS
+STRUCTURE 283 3 0 0 0 Fn3 2 99.500000 558.500000 0 0.000000 "LgTrees 12"" Conifer Conif-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ L3 26624 -0.001500 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 -0.001500 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 -0.001500 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 -0.001500 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 -0.001500 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 -0.001500 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 -0.001500 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 -0.001500 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 -0.001500 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 -0.001500 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 -0.001500 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 -0.001500 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 -0.001500 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 -0.001500 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 -0.001500 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 -0.001500 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 -0.001500 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 -0.001500 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 -0.001500 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 -0.001500 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 -0.001500 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 -0.001500 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 -0.001500 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 -0.001500 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 -0.001500 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 -0.001500 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 -0.001500 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 -0.001500 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 -0.001500 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 -0.001500 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 -0.001500 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 -0.001500 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 -0.001500 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 -0.001500 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 -0.001500 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 -0.001500 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 -0.001500 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 -0.001500 -2.891390 3.099404 0 -1.996931 2.828986 0
+ END$SEGS
+STRUCTURE 284 3 0 0 0 Fn3 2 91.500000 582.500000 0 0.000000 "LgTrees 12"" Conifer Conif-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ L3 26624 -0.001500 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 -0.001500 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 -0.001500 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 -0.001500 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 -0.001500 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 -0.001500 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 -0.001500 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 -0.001500 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 -0.001500 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 -0.001500 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 -0.001500 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 -0.001500 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 -0.001500 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 -0.001500 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 -0.001500 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 -0.001500 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 -0.001500 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 -0.001500 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 -0.001500 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 -0.001500 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 -0.001500 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 -0.001500 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 -0.001500 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 -0.001500 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 -0.001500 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 -0.001500 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 -0.001500 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 -0.001500 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 -0.001500 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 -0.001500 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 -0.001500 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 -0.001500 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 -0.001500 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 -0.001500 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 -0.001500 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 -0.001500 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 -0.001500 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 -0.001500 -2.891390 3.099404 0 -1.996931 2.828986 0
+ END$SEGS
+STRUCTURE 285 3 0 0 0 Fn3 2 124.000000 585.000000 0 0.000000 "LgTrees 12"" Conifer Conif-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ L3 26624 -0.001500 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 -0.001500 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 -0.001500 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 -0.001500 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 -0.001500 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 -0.001500 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 -0.001500 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 -0.001500 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 -0.001500 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 -0.001500 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 -0.001500 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 -0.001500 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 -0.001500 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 -0.001500 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 -0.001500 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 -0.001500 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 -0.001500 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 -0.001500 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 -0.001500 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 -0.001500 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 -0.001500 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 -0.001500 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 -0.001500 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 -0.001500 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 -0.001500 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 -0.001500 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 -0.001500 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 -0.001500 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 -0.001500 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 -0.001500 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 -0.001500 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 -0.001500 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 -0.001500 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 -0.001500 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 -0.001500 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 -0.001500 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 -0.001500 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 -0.001500 -2.891390 3.099404 0 -1.996931 2.828986 0
+ END$SEGS
+STRUCTURE 286 3 0 0 0 Fn3 2 181.000000 577.500000 0 0.000000 "LgTrees 12"" Conifer Conif-12b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ L3 26624 -0.001500 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 -0.001500 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 -0.001500 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 -0.001500 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 -0.001500 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 -0.001500 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 -0.001500 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 -0.001500 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 -0.001500 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 -0.001500 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 -0.001500 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 -0.001500 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 -0.001500 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 -0.001500 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 -0.001500 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 -0.001500 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 -0.001500 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 -0.001500 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 -0.001500 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 -0.001500 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 -0.001500 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 -0.001500 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 -0.001500 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 -0.001500 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 -0.001500 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 -0.001500 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 -0.001500 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 -0.001500 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 -0.001500 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 -0.001500 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 -0.001500 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 -0.001500 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 -0.001500 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 -0.001500 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 -0.001500 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 -0.001500 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 -0.001500 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 -0.001500 -2.891390 3.099404 0 -1.996931 2.828986 0
+ END$SEGS
+STRUCTURE 287 3 0 0 0 Fn3 2 152.500000 582.500000 0 0.000000 "LgTrees 15"" Conifer Conif-15b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 0.098818 0
+ F4 26624 0.000000 28 0
+ -4.638760 2.789979 0
+ -5.229429 5.269656 0
+ -3.037092 4.304222 0
+ -2.386608 6.924525 0
+ -0.739512 4.571531 0
+ 0.605056 7.126211 0
+ 2.653455 4.457804 0
+ 4.807052 6.033957 0
+ 3.962298 3.801393 0
+ 5.112323 1.928177 0
+ 7.059729 0.522943 0
+ 5.651806 -0.784414 0
+ 6.979277 -2.675054 0
+ 4.773217 -2.789979 0
+ 4.344449 -3.761166 0
+ 4.284109 -5.933391 0
+ 2.521065 -5.613572 0
+ 1.243725 -6.991754 0
+ -0.522943 -5.712146 0
+ -0.965433 -7.099956 0
+ -2.117695 -5.445501 0
+ -5.109359 -6.218627 0
+ -4.269004 -3.899247 0
+ -6.818371 -2.071658 0
+ -5.531127 -0.744188 0
+ -7.220635 0.000000 0
+ -4.907673 0.705898 0
+ -6.722840 2.722750 0
+ F4 11206591 0.000000 26 0
+ 1.005659 4.706486 0
+ 3.045086 7.036218 0
+ 3.761166 5.289769 0
+ 3.157771 2.936526 0
+ 5.558021 3.045086 0
+ 7.154474 1.744273 0
+ 4.344449 -0.140792 0
+ 6.917962 -2.956394 0
+ 4.996306 -3.399853 0
+ 3.560034 -3.077318 0
+ 3.479582 -4.927731 0
+ 3.163342 -6.711015 0
+ 0.945320 -4.344449 0
+ -0.784414 -4.585807 0
+ -1.186678 -5.511014 0
+ -2.690319 -6.651887 0
+ -2.675054 -3.519808 0
+ -6.178864 -4.345899 0
+ -5.469329 -1.892092 0
+ -3.278450 -0.522943 0
+ -5.764969 -0.473023 0
+ -6.947526 1.182558 0
+ -2.252677 1.548716 0
+ -5.912788 4.582411 0
+ -1.729734 4.062864 0
+ -1.822813 7.291250 0
+ F4 26624 0.000000 4 0
+ -3.380222 -2.002131 0
+ -2.730179 -1.248082 0
+ -1.586104 -0.806053 0
+ -2.314152 -1.742114 0
+ F4 26624 0.000000 4 0
+ -3.068201 1.066070 0
+ -1.664109 1.196079 0
+ -1.040068 0.624041 0
+ -2.184143 0.650043 0
+ F4 26624 0.000000 4 0
+ -1.534101 -2.522166 0
+ -1.768116 -3.354220 0
+ -2.626172 -3.770248 0
+ -2.392157 -3.094203 0
+ F4 26624 0.000000 4 0
+ -5.096335 -0.026002 0
+ -3.978261 -0.286019 0
+ -2.756181 0.104007 0
+ -4.004263 0.312020 0
+ F4 26624 0.000000 4 0
+ -4.212277 -3.302217 0
+ -3.588236 -2.678176 0
+ -2.626172 -2.470162 0
+ -3.172208 -3.094203 0
+ F4 26624 0.000000 4 0
+ -3.562234 3.432225 0
+ -2.730179 2.574169 0
+ -1.768116 2.210145 0
+ -2.704178 3.146207 0
+ L3 26624 -0.001500 -4.163430 -2.453809 0 -5.490901 -2.393469 0
+ L3 26624 -0.001500 -5.772485 -3.519808 0 -4.867392 -3.298563 0
+ L3 26624 -0.001500 -1.850413 -5.933391 0 -1.709621 -4.263996 0
+ L3 26624 -0.001500 -1.709621 -4.263996 0 -2.715281 -5.450674 0
+ L3 26624 -0.001500 2.393469 -5.993730 0 2.554375 -4.585807 0
+ L3 26624 -0.001500 2.554375 -4.585807 0 3.318676 -5.450674 0
+ L3 26624 -0.001500 5.752372 -3.097431 0 3.881845 -2.232564 0
+ L3 26624 -0.001500 3.881845 -2.232564 0 5.752372 -1.790074 0
+ L3 26624 -0.001500 5.229429 1.267131 0 3.821506 1.287244 0
+ L3 26624 -0.001500 3.821506 1.287244 0 4.988071 2.856073 0
+ L3 26624 -0.001500 3.580148 4.746713 0 2.031432 3.399129 0
+ L3 26624 -0.001500 2.031432 3.399129 0 2.071658 5.852938 0
+ L3 26624 -0.001500 -0.724075 6.255202 0 -0.744188 4.183543 0
+ L3 26624 -0.001500 -0.744188 4.183543 0 -1.749847 5.048410 0
+ L3 26624 -0.001500 -0.965433 -4.424902 0 -1.206791 -3.399129 0
+ L3 26624 -0.001500 1.629168 -4.686373 0 1.649282 -3.499695 0
+ L3 26624 -0.001500 3.137657 -4.022638 0 2.192338 -3.238223 0
+ L3 26624 -0.001500 3.640487 -3.077318 0 2.614715 -1.609055 0
+ L3 26624 -0.001500 4.706486 -0.844754 0 3.439355 -1.186678 0
+ L3 26624 -0.001500 4.827165 0.341924 0 2.735394 0.643622 0
+ L3 26624 -0.001500 2.936526 1.488376 0 3.922072 2.896299 0
+ L3 26624 -0.001500 3.137657 3.298563 0 1.548716 2.131998 0
+ L3 26624 -0.001500 1.247018 2.795733 0 0.844754 4.022638 0
+ L3 26624 -0.001500 0.060340 4.002525 0 -0.221245 2.393469 0
+ L3 26624 -0.001500 -1.629168 3.640487 0 -1.186678 2.051545 0
+ L3 26624 -0.001500 -3.077318 -0.583282 0 -1.609055 0.140792 0
+ L3 26624 -0.001500 -1.307357 -1.991206 0 -0.663735 -0.724075 0
+ L3 26624 -0.001500 1.005659 -2.976752 0 0.281585 -1.609055 0
+ L3 26624 -0.001500 1.930866 -2.192338 0 1.086112 -1.307357 0
+ L3 26624 -0.001500 2.675054 -0.583282 0 1.065999 -0.321811 0
+ L3 26624 -0.001500 1.729734 1.065999 0 0.744188 0.462603 0
+ L3 26624 -0.001500 0.201132 1.508489 0 0.261471 0.744188 0
+ L3 26624 -0.001500 -0.301698 0.502830 0 -0.925207 1.347584 0
+ L3 26624 -0.001500 -1.226905 -0.522943 0 -0.382151 -0.040226 0
+ L3 26624 -0.001500 0.643622 -1.025773 0 0.241358 -0.221245 0
+ L3 26624 -0.001500 -3.666241 -1.300085 0 -4.654306 -1.794118 0
+ L3 26624 -0.001500 -4.576300 1.066070 0 -3.328219 0.676044 0
+ L3 26624 -0.001500 -3.614237 3.874254 0 -2.496164 3.536232 0
+ END$SEGS
+STRUCTURE 288 3 0 0 0 Fn3 2 106.500000 570.500000 0 0.000000 "LgTrees 15"" Conifer Conif-15b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 0.098818 0
+ F4 26624 0.000000 28 0
+ -4.638760 2.789979 0
+ -5.229429 5.269656 0
+ -3.037092 4.304222 0
+ -2.386608 6.924525 0
+ -0.739512 4.571531 0
+ 0.605056 7.126211 0
+ 2.653455 4.457804 0
+ 4.807052 6.033957 0
+ 3.962298 3.801393 0
+ 5.112323 1.928177 0
+ 7.059729 0.522943 0
+ 5.651806 -0.784414 0
+ 6.979277 -2.675054 0
+ 4.773217 -2.789979 0
+ 4.344449 -3.761166 0
+ 4.284109 -5.933391 0
+ 2.521065 -5.613572 0
+ 1.243725 -6.991754 0
+ -0.522943 -5.712146 0
+ -0.965433 -7.099956 0
+ -2.117695 -5.445501 0
+ -5.109359 -6.218627 0
+ -4.269004 -3.899247 0
+ -6.818371 -2.071658 0
+ -5.531127 -0.744188 0
+ -7.220635 0.000000 0
+ -4.907673 0.705898 0
+ -6.722840 2.722750 0
+ F4 11206591 0.000000 26 0
+ 1.005659 4.706486 0
+ 3.045086 7.036218 0
+ 3.761166 5.289769 0
+ 3.157771 2.936526 0
+ 5.558021 3.045086 0
+ 7.154474 1.744273 0
+ 4.344449 -0.140792 0
+ 6.917962 -2.956394 0
+ 4.996306 -3.399853 0
+ 3.560034 -3.077318 0
+ 3.479582 -4.927731 0
+ 3.163342 -6.711015 0
+ 0.945320 -4.344449 0
+ -0.784414 -4.585807 0
+ -1.186678 -5.511014 0
+ -2.690319 -6.651887 0
+ -2.675054 -3.519808 0
+ -6.178864 -4.345899 0
+ -5.469329 -1.892092 0
+ -3.278450 -0.522943 0
+ -5.764969 -0.473023 0
+ -6.947526 1.182558 0
+ -2.252677 1.548716 0
+ -5.912788 4.582411 0
+ -1.729734 4.062864 0
+ -1.822813 7.291250 0
+ F4 26624 0.000000 4 0
+ -3.380222 -2.002131 0
+ -2.730179 -1.248082 0
+ -1.586104 -0.806053 0
+ -2.314152 -1.742114 0
+ F4 26624 0.000000 4 0
+ -3.068201 1.066070 0
+ -1.664109 1.196079 0
+ -1.040068 0.624041 0
+ -2.184143 0.650043 0
+ F4 26624 0.000000 4 0
+ -1.534101 -2.522166 0
+ -1.768116 -3.354220 0
+ -2.626172 -3.770248 0
+ -2.392157 -3.094203 0
+ F4 26624 0.000000 4 0
+ -5.096335 -0.026002 0
+ -3.978261 -0.286019 0
+ -2.756181 0.104007 0
+ -4.004263 0.312020 0
+ F4 26624 0.000000 4 0
+ -4.212277 -3.302217 0
+ -3.588236 -2.678176 0
+ -2.626172 -2.470162 0
+ -3.172208 -3.094203 0
+ F4 26624 0.000000 4 0
+ -3.562234 3.432225 0
+ -2.730179 2.574169 0
+ -1.768116 2.210145 0
+ -2.704178 3.146207 0
+ L3 26624 -0.001500 -4.163430 -2.453809 0 -5.490901 -2.393469 0
+ L3 26624 -0.001500 -5.772485 -3.519808 0 -4.867392 -3.298563 0
+ L3 26624 -0.001500 -1.850413 -5.933391 0 -1.709621 -4.263996 0
+ L3 26624 -0.001500 -1.709621 -4.263996 0 -2.715281 -5.450674 0
+ L3 26624 -0.001500 2.393469 -5.993730 0 2.554375 -4.585807 0
+ L3 26624 -0.001500 2.554375 -4.585807 0 3.318676 -5.450674 0
+ L3 26624 -0.001500 5.752372 -3.097431 0 3.881845 -2.232564 0
+ L3 26624 -0.001500 3.881845 -2.232564 0 5.752372 -1.790074 0
+ L3 26624 -0.001500 5.229429 1.267131 0 3.821506 1.287244 0
+ L3 26624 -0.001500 3.821506 1.287244 0 4.988071 2.856073 0
+ L3 26624 -0.001500 3.580148 4.746713 0 2.031432 3.399129 0
+ L3 26624 -0.001500 2.031432 3.399129 0 2.071658 5.852938 0
+ L3 26624 -0.001500 -0.724075 6.255202 0 -0.744188 4.183543 0
+ L3 26624 -0.001500 -0.744188 4.183543 0 -1.749847 5.048410 0
+ L3 26624 -0.001500 -0.965433 -4.424902 0 -1.206791 -3.399129 0
+ L3 26624 -0.001500 1.629168 -4.686373 0 1.649282 -3.499695 0
+ L3 26624 -0.001500 3.137657 -4.022638 0 2.192338 -3.238223 0
+ L3 26624 -0.001500 3.640487 -3.077318 0 2.614715 -1.609055 0
+ L3 26624 -0.001500 4.706486 -0.844754 0 3.439355 -1.186678 0
+ L3 26624 -0.001500 4.827165 0.341924 0 2.735394 0.643622 0
+ L3 26624 -0.001500 2.936526 1.488376 0 3.922072 2.896299 0
+ L3 26624 -0.001500 3.137657 3.298563 0 1.548716 2.131998 0
+ L3 26624 -0.001500 1.247018 2.795733 0 0.844754 4.022638 0
+ L3 26624 -0.001500 0.060340 4.002525 0 -0.221245 2.393469 0
+ L3 26624 -0.001500 -1.629168 3.640487 0 -1.186678 2.051545 0
+ L3 26624 -0.001500 -3.077318 -0.583282 0 -1.609055 0.140792 0
+ L3 26624 -0.001500 -1.307357 -1.991206 0 -0.663735 -0.724075 0
+ L3 26624 -0.001500 1.005659 -2.976752 0 0.281585 -1.609055 0
+ L3 26624 -0.001500 1.930866 -2.192338 0 1.086112 -1.307357 0
+ L3 26624 -0.001500 2.675054 -0.583282 0 1.065999 -0.321811 0
+ L3 26624 -0.001500 1.729734 1.065999 0 0.744188 0.462603 0
+ L3 26624 -0.001500 0.201132 1.508489 0 0.261471 0.744188 0
+ L3 26624 -0.001500 -0.301698 0.502830 0 -0.925207 1.347584 0
+ L3 26624 -0.001500 -1.226905 -0.522943 0 -0.382151 -0.040226 0
+ L3 26624 -0.001500 0.643622 -1.025773 0 0.241358 -0.221245 0
+ L3 26624 -0.001500 -3.666241 -1.300085 0 -4.654306 -1.794118 0
+ L3 26624 -0.001500 -4.576300 1.066070 0 -3.328219 0.676044 0
+ L3 26624 -0.001500 -3.614237 3.874254 0 -2.496164 3.536232 0
+ END$SEGS
+STRUCTURE 289 3 0 0 0 Fn3 2 81.500000 545.500000 0 0.000000 "LgTrees 15"" Conifer Conif-15b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 0.098818 0
+ F4 26624 0.000000 28 0
+ -4.638760 2.789979 0
+ -5.229429 5.269656 0
+ -3.037092 4.304222 0
+ -2.386608 6.924525 0
+ -0.739512 4.571531 0
+ 0.605056 7.126211 0
+ 2.653455 4.457804 0
+ 4.807052 6.033957 0
+ 3.962298 3.801393 0
+ 5.112323 1.928177 0
+ 7.059729 0.522943 0
+ 5.651806 -0.784414 0
+ 6.979277 -2.675054 0
+ 4.773217 -2.789979 0
+ 4.344449 -3.761166 0
+ 4.284109 -5.933391 0
+ 2.521065 -5.613572 0
+ 1.243725 -6.991754 0
+ -0.522943 -5.712146 0
+ -0.965433 -7.099956 0
+ -2.117695 -5.445501 0
+ -5.109359 -6.218627 0
+ -4.269004 -3.899247 0
+ -6.818371 -2.071658 0
+ -5.531127 -0.744188 0
+ -7.220635 0.000000 0
+ -4.907673 0.705898 0
+ -6.722840 2.722750 0
+ F4 11206591 0.000000 26 0
+ 1.005659 4.706486 0
+ 3.045086 7.036218 0
+ 3.761166 5.289769 0
+ 3.157771 2.936526 0
+ 5.558021 3.045086 0
+ 7.154474 1.744273 0
+ 4.344449 -0.140792 0
+ 6.917962 -2.956394 0
+ 4.996306 -3.399853 0
+ 3.560034 -3.077318 0
+ 3.479582 -4.927731 0
+ 3.163342 -6.711015 0
+ 0.945320 -4.344449 0
+ -0.784414 -4.585807 0
+ -1.186678 -5.511014 0
+ -2.690319 -6.651887 0
+ -2.675054 -3.519808 0
+ -6.178864 -4.345899 0
+ -5.469329 -1.892092 0
+ -3.278450 -0.522943 0
+ -5.764969 -0.473023 0
+ -6.947526 1.182558 0
+ -2.252677 1.548716 0
+ -5.912788 4.582411 0
+ -1.729734 4.062864 0
+ -1.822813 7.291250 0
+ F4 26624 0.000000 4 0
+ -3.380222 -2.002131 0
+ -2.730179 -1.248082 0
+ -1.586104 -0.806053 0
+ -2.314152 -1.742114 0
+ F4 26624 0.000000 4 0
+ -3.068201 1.066070 0
+ -1.664109 1.196079 0
+ -1.040068 0.624041 0
+ -2.184143 0.650043 0
+ F4 26624 0.000000 4 0
+ -1.534101 -2.522166 0
+ -1.768116 -3.354220 0
+ -2.626172 -3.770248 0
+ -2.392157 -3.094203 0
+ F4 26624 0.000000 4 0
+ -5.096335 -0.026002 0
+ -3.978261 -0.286019 0
+ -2.756181 0.104007 0
+ -4.004263 0.312020 0
+ F4 26624 0.000000 4 0
+ -4.212277 -3.302217 0
+ -3.588236 -2.678176 0
+ -2.626172 -2.470162 0
+ -3.172208 -3.094203 0
+ F4 26624 0.000000 4 0
+ -3.562234 3.432225 0
+ -2.730179 2.574169 0
+ -1.768116 2.210145 0
+ -2.704178 3.146207 0
+ L3 26624 -0.001500 -4.163430 -2.453809 0 -5.490901 -2.393469 0
+ L3 26624 -0.001500 -5.772485 -3.519808 0 -4.867392 -3.298563 0
+ L3 26624 -0.001500 -1.850413 -5.933391 0 -1.709621 -4.263996 0
+ L3 26624 -0.001500 -1.709621 -4.263996 0 -2.715281 -5.450674 0
+ L3 26624 -0.001500 2.393469 -5.993730 0 2.554375 -4.585807 0
+ L3 26624 -0.001500 2.554375 -4.585807 0 3.318676 -5.450674 0
+ L3 26624 -0.001500 5.752372 -3.097431 0 3.881845 -2.232564 0
+ L3 26624 -0.001500 3.881845 -2.232564 0 5.752372 -1.790074 0
+ L3 26624 -0.001500 5.229429 1.267131 0 3.821506 1.287244 0
+ L3 26624 -0.001500 3.821506 1.287244 0 4.988071 2.856073 0
+ L3 26624 -0.001500 3.580148 4.746713 0 2.031432 3.399129 0
+ L3 26624 -0.001500 2.031432 3.399129 0 2.071658 5.852938 0
+ L3 26624 -0.001500 -0.724075 6.255202 0 -0.744188 4.183543 0
+ L3 26624 -0.001500 -0.744188 4.183543 0 -1.749847 5.048410 0
+ L3 26624 -0.001500 -0.965433 -4.424902 0 -1.206791 -3.399129 0
+ L3 26624 -0.001500 1.629168 -4.686373 0 1.649282 -3.499695 0
+ L3 26624 -0.001500 3.137657 -4.022638 0 2.192338 -3.238223 0
+ L3 26624 -0.001500 3.640487 -3.077318 0 2.614715 -1.609055 0
+ L3 26624 -0.001500 4.706486 -0.844754 0 3.439355 -1.186678 0
+ L3 26624 -0.001500 4.827165 0.341924 0 2.735394 0.643622 0
+ L3 26624 -0.001500 2.936526 1.488376 0 3.922072 2.896299 0
+ L3 26624 -0.001500 3.137657 3.298563 0 1.548716 2.131998 0
+ L3 26624 -0.001500 1.247018 2.795733 0 0.844754 4.022638 0
+ L3 26624 -0.001500 0.060340 4.002525 0 -0.221245 2.393469 0
+ L3 26624 -0.001500 -1.629168 3.640487 0 -1.186678 2.051545 0
+ L3 26624 -0.001500 -3.077318 -0.583282 0 -1.609055 0.140792 0
+ L3 26624 -0.001500 -1.307357 -1.991206 0 -0.663735 -0.724075 0
+ L3 26624 -0.001500 1.005659 -2.976752 0 0.281585 -1.609055 0
+ L3 26624 -0.001500 1.930866 -2.192338 0 1.086112 -1.307357 0
+ L3 26624 -0.001500 2.675054 -0.583282 0 1.065999 -0.321811 0
+ L3 26624 -0.001500 1.729734 1.065999 0 0.744188 0.462603 0
+ L3 26624 -0.001500 0.201132 1.508489 0 0.261471 0.744188 0
+ L3 26624 -0.001500 -0.301698 0.502830 0 -0.925207 1.347584 0
+ L3 26624 -0.001500 -1.226905 -0.522943 0 -0.382151 -0.040226 0
+ L3 26624 -0.001500 0.643622 -1.025773 0 0.241358 -0.221245 0
+ L3 26624 -0.001500 -3.666241 -1.300085 0 -4.654306 -1.794118 0
+ L3 26624 -0.001500 -4.576300 1.066070 0 -3.328219 0.676044 0
+ L3 26624 -0.001500 -3.614237 3.874254 0 -2.496164 3.536232 0
+ END$SEGS
+STRUCTURE 290 3 0 0 0 Fn3 2 74.500000 560.500000 0 0.000000 "LgTrees 15"" Conifer Conif-15a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 -0.098818 0
+ F4 26624 0.000000 28 0
+ -4.638760 -2.789979 0
+ -5.229429 -5.269656 0
+ -3.037092 -4.304222 0
+ -2.386608 -6.924525 0
+ -0.739512 -4.571531 0
+ 0.605056 -7.126211 0
+ 2.653455 -4.457804 0
+ 4.807052 -6.033957 0
+ 3.962298 -3.801393 0
+ 5.112323 -1.928177 0
+ 7.059729 -0.522943 0
+ 5.651806 0.784414 0
+ 6.979277 2.675054 0
+ 4.773217 2.789979 0
+ 4.344449 3.761166 0
+ 4.284109 5.933391 0
+ 2.521065 5.613572 0
+ 1.243725 6.991754 0
+ -0.522943 5.712146 0
+ -0.965433 7.099956 0
+ -2.117695 5.445501 0
+ -5.109359 6.218627 0
+ -4.269004 3.899247 0
+ -6.818371 2.071658 0
+ -5.531127 0.744188 0
+ -7.220635 0.000000 0
+ -4.907673 -0.705898 0
+ -6.722840 -2.722750 0
+ F4 11206612 0.000000 26 0
+ 1.005659 -4.706486 0
+ 3.045086 -7.036218 0
+ 3.761166 -5.289769 0
+ 3.157771 -2.936526 0
+ 5.558021 -3.045086 0
+ 7.154474 -1.744273 0
+ 4.344449 0.140792 0
+ 6.917962 2.956394 0
+ 4.996306 3.399853 0
+ 3.560034 3.077318 0
+ 3.479582 4.927731 0
+ 3.163342 6.711015 0
+ 0.945320 4.344449 0
+ -0.784414 4.585807 0
+ -1.186678 5.511014 0
+ -2.690319 6.651887 0
+ -2.675054 3.519808 0
+ -6.178864 4.345899 0
+ -5.469329 1.892092 0
+ -3.278450 0.522943 0
+ -5.764969 0.473023 0
+ -6.947526 -1.182558 0
+ -2.252677 -1.548716 0
+ -5.912788 -4.582411 0
+ -1.729734 -4.062864 0
+ -1.822813 -7.291250 0
+ F4 26624 0.000000 4 0
+ -3.380222 2.002131 0
+ -2.730179 1.248082 0
+ -1.586104 0.806053 0
+ -2.314152 1.742114 0
+ F4 26624 0.000000 4 0
+ -3.068201 -1.066070 0
+ -1.664109 -1.196079 0
+ -1.040068 -0.624041 0
+ -2.184143 -0.650043 0
+ F4 26624 0.000000 4 0
+ -1.534101 2.522166 0
+ -1.768116 3.354220 0
+ -2.626172 3.770248 0
+ -2.392157 3.094203 0
+ F4 26624 0.000000 4 0
+ -5.096335 0.026002 0
+ -3.978261 0.286019 0
+ -2.756181 -0.104007 0
+ -4.004263 -0.312020 0
+ F4 26624 0.000000 4 0
+ -4.212277 3.302217 0
+ -3.588236 2.678176 0
+ -2.626172 2.470162 0
+ -3.172208 3.094203 0
+ F4 26624 0.000000 4 0
+ -3.562234 -3.432225 0
+ -2.730179 -2.574169 0
+ -1.768116 -2.210145 0
+ -2.704178 -3.146207 0
+ L3 26624 -0.001500 -4.163430 2.453809 0 -5.490901 2.393469 0
+ L3 26624 -0.001500 -5.772485 3.519808 0 -4.867392 3.298563 0
+ L3 26624 -0.001500 -1.850413 5.933391 0 -1.709621 4.263996 0
+ L3 26624 -0.001500 -1.709621 4.263996 0 -2.715281 5.450674 0
+ L3 26624 -0.001500 2.393469 5.993730 0 2.554375 4.585807 0
+ L3 26624 -0.001500 2.554375 4.585807 0 3.318676 5.450674 0
+ L3 26624 -0.001500 5.752372 3.097431 0 3.881845 2.232564 0
+ L3 26624 -0.001500 3.881845 2.232564 0 5.752372 1.790074 0
+ L3 26624 -0.001500 5.229429 -1.267131 0 3.821506 -1.287244 0
+ L3 26624 -0.001500 3.821506 -1.287244 0 4.988071 -2.856073 0
+ L3 26624 -0.001500 3.580148 -4.746713 0 2.031432 -3.399129 0
+ L3 26624 -0.001500 2.031432 -3.399129 0 2.071658 -5.852938 0
+ L3 26624 -0.001500 -0.724075 -6.255202 0 -0.744188 -4.183543 0
+ L3 26624 -0.001500 -0.744188 -4.183543 0 -1.749847 -5.048410 0
+ L3 26624 -0.001500 -0.965433 4.424902 0 -1.206791 3.399129 0
+ L3 26624 -0.001500 1.629168 4.686373 0 1.649282 3.499695 0
+ L3 26624 -0.001500 3.137657 4.022638 0 2.192338 3.238223 0
+ L3 26624 -0.001500 3.640487 3.077318 0 2.614715 1.609055 0
+ L3 26624 -0.001500 4.706486 0.844754 0 3.439355 1.186678 0
+ L3 26624 -0.001500 4.827165 -0.341924 0 2.735394 -0.643622 0
+ L3 26624 -0.001500 2.936526 -1.488376 0 3.922072 -2.896299 0
+ L3 26624 -0.001500 3.137657 -3.298563 0 1.548716 -2.131998 0
+ L3 26624 -0.001500 1.247018 -2.795733 0 0.844754 -4.022638 0
+ L3 26624 -0.001500 0.060340 -4.002525 0 -0.221245 -2.393469 0
+ L3 26624 -0.001500 -1.629168 -3.640487 0 -1.186678 -2.051545 0
+ L3 26624 -0.001500 -3.077318 0.583282 0 -1.609055 -0.140792 0
+ L3 26624 -0.001500 -1.307357 1.991206 0 -0.663735 0.724075 0
+ L3 26624 -0.001500 1.005659 2.976752 0 0.281585 1.609055 0
+ L3 26624 -0.001500 1.930866 2.192338 0 1.086112 1.307357 0
+ L3 26624 -0.001500 2.675054 0.583282 0 1.065999 0.321811 0
+ L3 26624 -0.001500 1.729734 -1.065999 0 0.744188 -0.462603 0
+ L3 26624 -0.001500 0.201132 -1.508489 0 0.261471 -0.744188 0
+ L3 26624 -0.001500 -0.301698 -0.502830 0 -0.925207 -1.347584 0
+ L3 26624 -0.001500 -1.226905 0.522943 0 -0.382151 0.040226 0
+ L3 26624 -0.001500 0.643622 1.025773 0 0.241358 0.221245 0
+ L3 26624 -0.001500 -3.666241 1.300085 0 -4.654306 1.794118 0
+ L3 26624 -0.001500 -4.576300 -1.066070 0 -3.328219 -0.676044 0
+ L3 26624 -0.001500 -3.614237 -3.874254 0 -2.496164 -3.536232 0
+ END$SEGS
+STRUCTURE 291 3 0 0 0 Fn3 2 63.500000 601.500000 0 0.000000 "LgTrees 15"" Conifer Conif-15a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 -0.098818 0
+ F4 26624 0.000000 28 0
+ -4.638760 -2.789979 0
+ -5.229429 -5.269656 0
+ -3.037092 -4.304222 0
+ -2.386608 -6.924525 0
+ -0.739512 -4.571531 0
+ 0.605056 -7.126211 0
+ 2.653455 -4.457804 0
+ 4.807052 -6.033957 0
+ 3.962298 -3.801393 0
+ 5.112323 -1.928177 0
+ 7.059729 -0.522943 0
+ 5.651806 0.784414 0
+ 6.979277 2.675054 0
+ 4.773217 2.789979 0
+ 4.344449 3.761166 0
+ 4.284109 5.933391 0
+ 2.521065 5.613572 0
+ 1.243725 6.991754 0
+ -0.522943 5.712146 0
+ -0.965433 7.099956 0
+ -2.117695 5.445501 0
+ -5.109359 6.218627 0
+ -4.269004 3.899247 0
+ -6.818371 2.071658 0
+ -5.531127 0.744188 0
+ -7.220635 0.000000 0
+ -4.907673 -0.705898 0
+ -6.722840 -2.722750 0
+ F4 11206612 0.000000 26 0
+ 1.005659 -4.706486 0
+ 3.045086 -7.036218 0
+ 3.761166 -5.289769 0
+ 3.157771 -2.936526 0
+ 5.558021 -3.045086 0
+ 7.154474 -1.744273 0
+ 4.344449 0.140792 0
+ 6.917962 2.956394 0
+ 4.996306 3.399853 0
+ 3.560034 3.077318 0
+ 3.479582 4.927731 0
+ 3.163342 6.711015 0
+ 0.945320 4.344449 0
+ -0.784414 4.585807 0
+ -1.186678 5.511014 0
+ -2.690319 6.651887 0
+ -2.675054 3.519808 0
+ -6.178864 4.345899 0
+ -5.469329 1.892092 0
+ -3.278450 0.522943 0
+ -5.764969 0.473023 0
+ -6.947526 -1.182558 0
+ -2.252677 -1.548716 0
+ -5.912788 -4.582411 0
+ -1.729734 -4.062864 0
+ -1.822813 -7.291250 0
+ F4 26624 0.000000 4 0
+ -3.380222 2.002131 0
+ -2.730179 1.248082 0
+ -1.586104 0.806053 0
+ -2.314152 1.742114 0
+ F4 26624 0.000000 4 0
+ -3.068201 -1.066070 0
+ -1.664109 -1.196079 0
+ -1.040068 -0.624041 0
+ -2.184143 -0.650043 0
+ F4 26624 0.000000 4 0
+ -1.534101 2.522166 0
+ -1.768116 3.354220 0
+ -2.626172 3.770248 0
+ -2.392157 3.094203 0
+ F4 26624 0.000000 4 0
+ -5.096335 0.026002 0
+ -3.978261 0.286019 0
+ -2.756181 -0.104007 0
+ -4.004263 -0.312020 0
+ F4 26624 0.000000 4 0
+ -4.212277 3.302217 0
+ -3.588236 2.678176 0
+ -2.626172 2.470162 0
+ -3.172208 3.094203 0
+ F4 26624 0.000000 4 0
+ -3.562234 -3.432225 0
+ -2.730179 -2.574169 0
+ -1.768116 -2.210145 0
+ -2.704178 -3.146207 0
+ L3 26624 -0.001500 -4.163430 2.453809 0 -5.490901 2.393469 0
+ L3 26624 -0.001500 -5.772485 3.519808 0 -4.867392 3.298563 0
+ L3 26624 -0.001500 -1.850413 5.933391 0 -1.709621 4.263996 0
+ L3 26624 -0.001500 -1.709621 4.263996 0 -2.715281 5.450674 0
+ L3 26624 -0.001500 2.393469 5.993730 0 2.554375 4.585807 0
+ L3 26624 -0.001500 2.554375 4.585807 0 3.318676 5.450674 0
+ L3 26624 -0.001500 5.752372 3.097431 0 3.881845 2.232564 0
+ L3 26624 -0.001500 3.881845 2.232564 0 5.752372 1.790074 0
+ L3 26624 -0.001500 5.229429 -1.267131 0 3.821506 -1.287244 0
+ L3 26624 -0.001500 3.821506 -1.287244 0 4.988071 -2.856073 0
+ L3 26624 -0.001500 3.580148 -4.746713 0 2.031432 -3.399129 0
+ L3 26624 -0.001500 2.031432 -3.399129 0 2.071658 -5.852938 0
+ L3 26624 -0.001500 -0.724075 -6.255202 0 -0.744188 -4.183543 0
+ L3 26624 -0.001500 -0.744188 -4.183543 0 -1.749847 -5.048410 0
+ L3 26624 -0.001500 -0.965433 4.424902 0 -1.206791 3.399129 0
+ L3 26624 -0.001500 1.629168 4.686373 0 1.649282 3.499695 0
+ L3 26624 -0.001500 3.137657 4.022638 0 2.192338 3.238223 0
+ L3 26624 -0.001500 3.640487 3.077318 0 2.614715 1.609055 0
+ L3 26624 -0.001500 4.706486 0.844754 0 3.439355 1.186678 0
+ L3 26624 -0.001500 4.827165 -0.341924 0 2.735394 -0.643622 0
+ L3 26624 -0.001500 2.936526 -1.488376 0 3.922072 -2.896299 0
+ L3 26624 -0.001500 3.137657 -3.298563 0 1.548716 -2.131998 0
+ L3 26624 -0.001500 1.247018 -2.795733 0 0.844754 -4.022638 0
+ L3 26624 -0.001500 0.060340 -4.002525 0 -0.221245 -2.393469 0
+ L3 26624 -0.001500 -1.629168 -3.640487 0 -1.186678 -2.051545 0
+ L3 26624 -0.001500 -3.077318 0.583282 0 -1.609055 -0.140792 0
+ L3 26624 -0.001500 -1.307357 1.991206 0 -0.663735 0.724075 0
+ L3 26624 -0.001500 1.005659 2.976752 0 0.281585 1.609055 0
+ L3 26624 -0.001500 1.930866 2.192338 0 1.086112 1.307357 0
+ L3 26624 -0.001500 2.675054 0.583282 0 1.065999 0.321811 0
+ L3 26624 -0.001500 1.729734 -1.065999 0 0.744188 -0.462603 0
+ L3 26624 -0.001500 0.201132 -1.508489 0 0.261471 -0.744188 0
+ L3 26624 -0.001500 -0.301698 -0.502830 0 -0.925207 -1.347584 0
+ L3 26624 -0.001500 -1.226905 0.522943 0 -0.382151 0.040226 0
+ L3 26624 -0.001500 0.643622 1.025773 0 0.241358 0.221245 0
+ L3 26624 -0.001500 -3.666241 1.300085 0 -4.654306 1.794118 0
+ L3 26624 -0.001500 -4.576300 -1.066070 0 -3.328219 -0.676044 0
+ L3 26624 -0.001500 -3.614237 -3.874254 0 -2.496164 -3.536232 0
+ END$SEGS
+STRUCTURE 292 3 0 0 0 Fn3 2 65.000000 579.500000 0 0.000000 "LgTrees 15"" Conifer Conif-15a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 6.773510 -1.828125 -0.098818 0
+ F4 26624 0.000000 28 0
+ -4.638760 -2.789979 0
+ -5.229429 -5.269656 0
+ -3.037092 -4.304222 0
+ -2.386608 -6.924525 0
+ -0.739512 -4.571531 0
+ 0.605056 -7.126211 0
+ 2.653455 -4.457804 0
+ 4.807052 -6.033957 0
+ 3.962298 -3.801393 0
+ 5.112323 -1.928177 0
+ 7.059729 -0.522943 0
+ 5.651806 0.784414 0
+ 6.979277 2.675054 0
+ 4.773217 2.789979 0
+ 4.344449 3.761166 0
+ 4.284109 5.933391 0
+ 2.521065 5.613572 0
+ 1.243725 6.991754 0
+ -0.522943 5.712146 0
+ -0.965433 7.099956 0
+ -2.117695 5.445501 0
+ -5.109359 6.218627 0
+ -4.269004 3.899247 0
+ -6.818371 2.071658 0
+ -5.531127 0.744188 0
+ -7.220635 0.000000 0
+ -4.907673 -0.705898 0
+ -6.722840 -2.722750 0
+ F4 11206612 0.000000 26 0
+ 1.005659 -4.706486 0
+ 3.045086 -7.036218 0
+ 3.761166 -5.289769 0
+ 3.157771 -2.936526 0
+ 5.558021 -3.045086 0
+ 7.154474 -1.744273 0
+ 4.344449 0.140792 0
+ 6.917962 2.956394 0
+ 4.996306 3.399853 0
+ 3.560034 3.077318 0
+ 3.479582 4.927731 0
+ 3.163342 6.711015 0
+ 0.945320 4.344449 0
+ -0.784414 4.585807 0
+ -1.186678 5.511014 0
+ -2.690319 6.651887 0
+ -2.675054 3.519808 0
+ -6.178864 4.345899 0
+ -5.469329 1.892092 0
+ -3.278450 0.522943 0
+ -5.764969 0.473023 0
+ -6.947526 -1.182558 0
+ -2.252677 -1.548716 0
+ -5.912788 -4.582411 0
+ -1.729734 -4.062864 0
+ -1.822813 -7.291250 0
+ F4 26624 0.000000 4 0
+ -3.380222 2.002131 0
+ -2.730179 1.248082 0
+ -1.586104 0.806053 0
+ -2.314152 1.742114 0
+ F4 26624 0.000000 4 0
+ -3.068201 -1.066070 0
+ -1.664109 -1.196079 0
+ -1.040068 -0.624041 0
+ -2.184143 -0.650043 0
+ F4 26624 0.000000 4 0
+ -1.534101 2.522166 0
+ -1.768116 3.354220 0
+ -2.626172 3.770248 0
+ -2.392157 3.094203 0
+ F4 26624 0.000000 4 0
+ -5.096335 0.026002 0
+ -3.978261 0.286019 0
+ -2.756181 -0.104007 0
+ -4.004263 -0.312020 0
+ F4 26624 0.000000 4 0
+ -4.212277 3.302217 0
+ -3.588236 2.678176 0
+ -2.626172 2.470162 0
+ -3.172208 3.094203 0
+ F4 26624 0.000000 4 0
+ -3.562234 -3.432225 0
+ -2.730179 -2.574169 0
+ -1.768116 -2.210145 0
+ -2.704178 -3.146207 0
+ L3 26624 -0.001500 -4.163430 2.453809 0 -5.490901 2.393469 0
+ L3 26624 -0.001500 -5.772485 3.519808 0 -4.867392 3.298563 0
+ L3 26624 -0.001500 -1.850413 5.933391 0 -1.709621 4.263996 0
+ L3 26624 -0.001500 -1.709621 4.263996 0 -2.715281 5.450674 0
+ L3 26624 -0.001500 2.393469 5.993730 0 2.554375 4.585807 0
+ L3 26624 -0.001500 2.554375 4.585807 0 3.318676 5.450674 0
+ L3 26624 -0.001500 5.752372 3.097431 0 3.881845 2.232564 0
+ L3 26624 -0.001500 3.881845 2.232564 0 5.752372 1.790074 0
+ L3 26624 -0.001500 5.229429 -1.267131 0 3.821506 -1.287244 0
+ L3 26624 -0.001500 3.821506 -1.287244 0 4.988071 -2.856073 0
+ L3 26624 -0.001500 3.580148 -4.746713 0 2.031432 -3.399129 0
+ L3 26624 -0.001500 2.031432 -3.399129 0 2.071658 -5.852938 0
+ L3 26624 -0.001500 -0.724075 -6.255202 0 -0.744188 -4.183543 0
+ L3 26624 -0.001500 -0.744188 -4.183543 0 -1.749847 -5.048410 0
+ L3 26624 -0.001500 -0.965433 4.424902 0 -1.206791 3.399129 0
+ L3 26624 -0.001500 1.629168 4.686373 0 1.649282 3.499695 0
+ L3 26624 -0.001500 3.137657 4.022638 0 2.192338 3.238223 0
+ L3 26624 -0.001500 3.640487 3.077318 0 2.614715 1.609055 0
+ L3 26624 -0.001500 4.706486 0.844754 0 3.439355 1.186678 0
+ L3 26624 -0.001500 4.827165 -0.341924 0 2.735394 -0.643622 0
+ L3 26624 -0.001500 2.936526 -1.488376 0 3.922072 -2.896299 0
+ L3 26624 -0.001500 3.137657 -3.298563 0 1.548716 -2.131998 0
+ L3 26624 -0.001500 1.247018 -2.795733 0 0.844754 -4.022638 0
+ L3 26624 -0.001500 0.060340 -4.002525 0 -0.221245 -2.393469 0
+ L3 26624 -0.001500 -1.629168 -3.640487 0 -1.186678 -2.051545 0
+ L3 26624 -0.001500 -3.077318 0.583282 0 -1.609055 -0.140792 0
+ L3 26624 -0.001500 -1.307357 1.991206 0 -0.663735 0.724075 0
+ L3 26624 -0.001500 1.005659 2.976752 0 0.281585 1.609055 0
+ L3 26624 -0.001500 1.930866 2.192338 0 1.086112 1.307357 0
+ L3 26624 -0.001500 2.675054 0.583282 0 1.065999 0.321811 0
+ L3 26624 -0.001500 1.729734 -1.065999 0 0.744188 -0.462603 0
+ L3 26624 -0.001500 0.201132 -1.508489 0 0.261471 -0.744188 0
+ L3 26624 -0.001500 -0.301698 -0.502830 0 -0.925207 -1.347584 0
+ L3 26624 -0.001500 -1.226905 0.522943 0 -0.382151 0.040226 0
+ L3 26624 -0.001500 0.643622 1.025773 0 0.241358 0.221245 0
+ L3 26624 -0.001500 -3.666241 1.300085 0 -4.654306 1.794118 0
+ L3 26624 -0.001500 -4.576300 -1.066070 0 -3.328219 -0.676044 0
+ L3 26624 -0.001500 -3.614237 -3.874254 0 -2.496164 -3.536232 0
+ END$SEGS
+STRUCTURE 293 3 0 0 0 Fn3 2 112.333333 549.541667 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 294 3 0 0 0 Fn3 2 97.333333 598.541667 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 295 3 0 0 0 Fn3 2 375.666667 540.083333 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 296 3 0 0 0 Fn3 2 415.666667 533.083333 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 297 3 0 0 0 Fn3 2 404.666667 533.083333 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 298 3 0 0 0 Fn3 2 392.666667 538.083333 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 299 3 0 0 0 Fn3 2 387.666667 550.083333 0 0.000000 "LgTrees 12"" Conifer Conif-12a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 5.418808 -1.462500 -0.079054 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ L3 26624 -0.001500 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 -0.001500 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 -0.001500 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 -0.001500 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 -0.001500 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 -0.001500 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 -0.001500 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 -0.001500 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 -0.001500 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 -0.001500 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 -0.001500 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 -0.001500 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 -0.001500 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 -0.001500 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 -0.001500 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 -0.001500 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 -0.001500 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 -0.001500 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 -0.001500 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 -0.001500 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 -0.001500 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 -0.001500 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 -0.001500 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 -0.001500 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 -0.001500 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 -0.001500 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 -0.001500 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 -0.001500 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 -0.001500 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 -0.001500 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 -0.001500 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 -0.001500 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 -0.001500 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 -0.001500 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 -0.001500 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 -0.001500 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 -0.001500 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 -0.001500 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ END$SEGS
+STRUCTURE 300 3 0 0 0 Fn3 2 423.666667 546.083333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 301 3 0 0 0 Fn3 2 419.666667 587.083333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 302 3 0 0 0 Fn3 2 406.666667 600.083333 0 0.000000 "LgTrees 8"" Shade Shade-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 -1.853737 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.313064 -3.696441 0
+ -0.518605 -4.038499 0
+ 0.375161 -2.935084 0
+ 1.401337 -3.895055 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 3.652304 -1.677191 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 3.277143 2.394411 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.180654 3.872987 0
+ 0.695152 3.122665 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -2.041318 3.409553 0
+ -1.853737 2.515787 0
+ -3.100597 2.427513 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 -0.926869 0
+ -2.736470 -1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.324098 -3.354382 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.210938 -1.202722 0
+ 3.310245 -0.562742 0
+ 2.383377 0.077239 0
+ 3.188870 1.290996 0
+ 2.835777 1.710293 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.147552 3.122665 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.456508 2.813709 0
+ -1.467542 1.930976 0
+ -2.140625 1.908908 0
+ -2.581991 1.026176 0
+ -1.798567 0.286888 0
+ -2.537855 -0.099307 0
+ -2.416479 -0.628947 0
+ -1.235825 -0.849630 0
+ -1.688225 -1.655123 0
+ -0.948937 -2.228899 0
+ -0.651015 -2.879914 0
+ L3 65280 -0.001500 -0.700000 -3.400000 0 -0.300000 -3.100000 0
+ L3 65280 -0.001500 -1.000000 -3.200000 0 -1.100000 -2.700000 0
+ L3 65280 -0.001500 -2.300000 -2.100000 0 -1.600000 -2.100000 0
+ L3 65280 -0.001500 -2.800000 -1.900000 0 -2.500000 -1.600000 0
+ L3 65280 -0.001500 -2.100000 -1.700000 0 -1.700000 -1.400000 0
+ L3 65280 -0.001500 -1.900000 -1.100000 0 -2.500000 -1.000000 0
+ L3 65280 -0.001500 -3.400000 -0.800000 0 -2.700000 -0.800000 0
+ L3 65280 -0.001500 -3.400000 -0.200000 0 -2.800000 -0.500000 0
+ L3 65280 -0.001500 -2.300000 0.300000 0 -2.800000 0.200000 0
+ L3 65280 -0.001500 -2.700000 0.700000 0 -3.400000 1.100000 0
+ L3 65280 -0.001500 -3.100000 1.500000 0 -2.600000 1.600000 0
+ L3 65280 -0.001500 -2.400000 2.300000 0 -2.200000 2.000000 0
+ L3 65280 -0.001500 -1.500000 3.000000 0 -1.700000 3.300000 0
+ L3 65280 -0.001500 -0.900000 3.200000 0 -0.700000 3.500000 0
+ L3 65280 -0.001500 -0.100000 2.700000 0 0.000000 3.000000 0
+ L3 65280 -0.001500 0.500000 2.700000 0 0.200000 2.900000 0
+ L3 65280 -0.001500 1.300000 3.200000 0 1.200000 3.600000 0
+ L3 65280 -0.001500 1.900000 3.000000 0 2.200000 3.100000 0
+ L3 65280 -0.001500 3.500000 1.400000 0 3.200000 1.500000 0
+ L3 65280 -0.001500 3.000000 1.900000 0 3.200000 2.200000 0
+ L3 65280 -0.001500 3.500000 -0.300000 0 3.100000 -0.200000 0
+ L3 65280 -0.001500 -2.800000 -2.500000 0 -2.600000 -2.100000 0
+ L3 65280 -0.001500 -3.200000 -1.900000 0 -2.900000 -2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 -1.583372 0
+ 0.912935 -1.397932 0
+ 0.841612 -0.927200 0
+ 1.255286 -1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 -1.897193 0
+ -0.542055 -1.569107 0
+ 0.071323 -1.298079 0
+ 0.242498 -1.697488 0
+ -0.071323 -1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 0.071323 0
+ 1.212492 0.242498 0
+ 1.055581 -0.128381 0
+ 2.068368 -0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 1.897193 0
+ 0.099852 1.611901 0
+ 0.199705 1.012787 0
+ 0.427938 1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 1.426461 0
+ 1.540578 0.984258 0
+ 1.226756 1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 0.171175 0
+ -1.298079 0.028529 0
+ -0.613378 -0.142646 0
+ -0.242498 0.242498 0
+ -1.098375 0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 1.654695 0
+ -0.912935 1.554842 0
+ -0.627643 0.884406 0
+ -1.069846 0.998523 0
+ L3 26624 -0.001500 0.200000 -2.200000 0 0.400000 -1.900000 0
+ L3 26624 -0.001500 1.400000 -1.900000 0 0.900000 -1.700000 0
+ L3 26624 -0.001500 1.600000 -2.400000 0 1.300000 -2.200000 0
+ L3 26624 -0.001500 0.900000 -2.600000 0 0.700000 -2.200000 0
+ L3 26624 -0.001500 -0.400000 -2.500000 0 -0.200000 -2.200000 0
+ L3 26624 -0.001500 -1.200000 -1.600000 0 -0.800000 -1.600000 0
+ L3 26624 -0.001500 -0.900000 -1.100000 0 -0.400000 -1.300000 0
+ L3 26624 -0.001500 -1.200000 -0.600000 0 -0.800000 -0.300000 0
+ L3 26624 -0.001500 -1.800000 -0.500000 0 -1.400000 -0.300000 0
+ L3 26624 -0.001500 -2.300000 -0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 0.500000 0 -2.000000 0.900000 0
+ L3 26624 -0.001500 -1.800000 1.400000 0 -1.500000 1.000000 0
+ L3 26624 -0.001500 -1.100000 2.200000 0 -0.800000 1.800000 0
+ L3 26624 -0.001500 -0.400000 1.800000 0 -0.500000 2.400000 0
+ L3 26624 -0.001500 -0.300000 1.100000 0 -0.200000 1.500000 0
+ L3 26624 -0.001500 0.700000 1.800000 0 0.900000 2.400000 0
+ L3 26624 -0.001500 1.200000 1.700000 0 1.800000 2.000000 0
+ L3 26624 -0.001500 2.700000 0.700000 0 2.200000 0.800000 0
+ L3 26624 -0.001500 2.700000 1.600000 0 2.200000 1.400000 0
+ L3 26624 -0.001500 2.900000 1.200000 0 2.400000 1.100000 0
+ L3 26624 -0.001500 1.200000 2.900000 0 1.100000 2.500000 0
+ L3 26624 -0.001500 1.800000 2.600000 0 1.500000 2.300000 0
+ L3 26624 -0.001500 1.400000 2.700000 0 1.200000 2.100000 0
+ L3 26624 -0.001500 3.000000 -0.500000 0 2.400000 -0.600000 0
+ L3 26624 -0.001500 2.500000 -1.300000 0 2.000000 -1.000000 0
+ L3 26624 -0.001500 3.000000 -1.000000 0 2.500000 -0.900000 0
+ L3 26624 -0.001500 -1.000000 2.800000 0 -0.900000 2.400000 0
+ L3 26624 -0.001500 -2.200000 1.400000 0 -1.900000 1.200000 0
+ L3 26624 -0.001500 1.400000 -3.200000 0 1.200000 -2.700000 0
+ L3 26624 -0.001500 1.800000 -2.900000 0 1.500000 -2.600000 0
+ END$SEGS
+STRUCTURE 303 3 0 0 0 Fn3 2 447.666667 550.083333 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 304 3 0 0 0 Fn3 2 431.666667 554.083333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 305 3 0 0 0 Fn3 2 392.666667 564.083333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 306 3 0 0 0 Fn3 2 418.666667 575.083333 0 0.000000 "LgTrees 10"" Shade Shade-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 2.317172 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.641330 4.620551 0
+ -0.648256 5.048124 0
+ 0.468951 3.668855 0
+ 1.751672 4.868819 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 4.565380 2.096489 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 4.096429 -2.993014 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.475818 -4.841234 0
+ 0.868939 -3.903331 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -2.551648 -4.261941 0
+ -2.317172 -3.144733 0
+ -3.875746 -3.034392 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 1.158586 0
+ -3.420587 1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 3.227489 0
+ 1.655123 4.192978 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 4.013673 1.503403 0
+ 4.137807 0.703427 0
+ 2.979221 -0.096549 0
+ 3.986087 -1.613745 0
+ 3.544721 -2.137867 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 1.434440 -3.903331 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.820635 -3.517136 0
+ -1.834428 -2.413721 0
+ -2.675782 -2.386135 0
+ -3.227489 -1.282720 0
+ -2.248208 -0.358610 0
+ -3.172319 0.124134 0
+ -3.020599 0.786183 0
+ -1.544781 1.062037 0
+ -2.110281 2.068903 0
+ -1.186171 2.786123 0
+ -0.813769 3.599892 0
+ L3 65280 -0.001500 -0.875000 4.250000 0 -0.375000 3.875000 0
+ L3 65280 -0.001500 -1.250000 4.000000 0 -1.375000 3.375000 0
+ L3 65280 -0.001500 -2.875000 2.625000 0 -2.000000 2.625000 0
+ L3 65280 -0.001500 -3.500000 2.375000 0 -3.125000 2.000000 0
+ L3 65280 -0.001500 -2.625000 2.125000 0 -2.125000 1.750000 0
+ L3 65280 -0.001500 -2.375000 1.375000 0 -3.125000 1.250000 0
+ L3 65280 -0.001500 -4.250000 1.000000 0 -3.375000 1.000000 0
+ L3 65280 -0.001500 -4.250000 0.250000 0 -3.500000 0.625000 0
+ L3 65280 -0.001500 -2.875000 -0.375000 0 -3.500000 -0.250000 0
+ L3 65280 -0.001500 -3.375000 -0.875000 0 -4.250000 -1.375000 0
+ L3 65280 -0.001500 -3.875000 -1.875000 0 -3.250000 -2.000000 0
+ L3 65280 -0.001500 -3.000000 -2.875000 0 -2.750000 -2.500000 0
+ L3 65280 -0.001500 -1.875000 -3.750000 0 -2.125000 -4.125000 0
+ L3 65280 -0.001500 -1.125000 -4.000000 0 -0.875000 -4.375000 0
+ L3 65280 -0.001500 -0.125000 -3.375000 0 0.000000 -3.750000 0
+ L3 65280 -0.001500 0.625000 -3.375000 0 0.250000 -3.625000 0
+ L3 65280 -0.001500 1.625000 -4.000000 0 1.500000 -4.500000 0
+ L3 65280 -0.001500 2.375000 -3.750000 0 2.750000 -3.875000 0
+ L3 65280 -0.001500 4.375000 -1.750000 0 4.000000 -1.875000 0
+ L3 65280 -0.001500 3.750000 -2.375000 0 4.000000 -2.750000 0
+ L3 65280 -0.001500 4.375000 0.375000 0 3.875000 0.250000 0
+ L3 65280 -0.001500 -3.500000 3.125000 0 -3.250000 2.625000 0
+ L3 65280 -0.001500 -4.000000 2.375000 0 -3.625000 2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 1.979214 0
+ 1.141169 1.747415 0
+ 1.052015 1.158999 0
+ 1.569107 1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 2.371491 0
+ -0.677569 1.961384 0
+ 0.089154 1.622599 0
+ 0.303123 2.121861 0
+ -0.089154 2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 -0.089154 0
+ 1.515615 -0.303123 0
+ 1.319476 0.160477 0
+ 2.585460 0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 -2.371491 0
+ 0.124815 -2.014876 0
+ 0.249631 -1.265984 0
+ 0.534923 -1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 -1.783076 0
+ 1.925722 -1.230323 0
+ 1.533445 -1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 -0.213969 0
+ -1.622599 -0.035662 0
+ -0.766723 0.178308 0
+ -0.303123 -0.303123 0
+ -1.372969 -0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 -2.068368 0
+ -1.141169 -1.943553 0
+ -0.784553 -1.105507 0
+ -1.337307 -1.248153 0
+ L3 26624 -0.001500 0.250000 2.750000 0 0.500000 2.375000 0
+ L3 26624 -0.001500 1.750000 2.375000 0 1.125000 2.125000 0
+ L3 26624 -0.001500 2.000000 3.000000 0 1.625000 2.750000 0
+ L3 26624 -0.001500 1.125000 3.250000 0 0.875000 2.750000 0
+ L3 26624 -0.001500 -0.500000 3.125000 0 -0.250000 2.750000 0
+ L3 26624 -0.001500 -1.500000 2.000000 0 -1.000000 2.000000 0
+ L3 26624 -0.001500 -1.125000 1.375000 0 -0.500000 1.625000 0
+ L3 26624 -0.001500 -1.500000 0.750000 0 -1.000000 0.375000 0
+ L3 26624 -0.001500 -2.250000 0.625000 0 -1.750000 0.375000 0
+ L3 26624 -0.001500 -2.875000 0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 -0.625000 0 -2.500000 -1.125000 0
+ L3 26624 -0.001500 -2.250000 -1.750000 0 -1.875000 -1.250000 0
+ L3 26624 -0.001500 -1.375000 -2.750000 0 -1.000000 -2.250000 0
+ L3 26624 -0.001500 -0.500000 -2.250000 0 -0.625000 -3.000000 0
+ L3 26624 -0.001500 -0.375000 -1.375000 0 -0.250000 -1.875000 0
+ L3 26624 -0.001500 0.875000 -2.250000 0 1.125000 -3.000000 0
+ L3 26624 -0.001500 1.500000 -2.125000 0 2.250000 -2.500000 0
+ L3 26624 -0.001500 3.375000 -0.875000 0 2.750000 -1.000000 0
+ L3 26624 -0.001500 3.375000 -2.000000 0 2.750000 -1.750000 0
+ L3 26624 -0.001500 3.625000 -1.500000 0 3.000000 -1.375000 0
+ L3 26624 -0.001500 1.500000 -3.625000 0 1.375000 -3.125000 0
+ L3 26624 -0.001500 2.250000 -3.250000 0 1.875000 -2.875000 0
+ L3 26624 -0.001500 1.750000 -3.375000 0 1.500000 -2.625000 0
+ L3 26624 -0.001500 3.750000 0.625000 0 3.000000 0.750000 0
+ L3 26624 -0.001500 3.125000 1.625000 0 2.500000 1.250000 0
+ L3 26624 -0.001500 3.750000 1.250000 0 3.125000 1.125000 0
+ L3 26624 -0.001500 -1.250000 -3.500000 0 -1.125000 -3.000000 0
+ L3 26624 -0.001500 -2.750000 -1.750000 0 -2.375000 -1.500000 0
+ L3 26624 -0.001500 1.750000 4.000000 0 1.500000 3.375000 0
+ L3 26624 -0.001500 2.250000 3.625000 0 1.875000 3.250000 0
+ END$SEGS
+STRUCTURE 307 3 0 0 0 Fn3 2 431.666667 580.083333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRUCTURE 308 3 0 0 0 Fn3 2 438.666667 541.083333 0 0.000000 "LgTrees 10"" Shade Shade-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -4.303319 -2.317172 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.641330 -4.620551 0
+ -0.648256 -5.048124 0
+ 0.468951 -3.668855 0
+ 1.751672 -4.868819 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 4.565380 -2.096489 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 4.096429 2.993014 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.475818 4.841234 0
+ 0.868939 3.903331 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -2.551648 4.261941 0
+ -2.317172 3.144733 0
+ -3.875746 3.034392 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -4.648136 -1.158586 0
+ -3.420587 -1.599952 0
+ F4 65280 0.000000 26 0
+ 0.689634 -3.227489 0
+ 1.655123 -4.192978 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 4.013673 -1.503403 0
+ 4.137807 -0.703427 0
+ 2.979221 0.096549 0
+ 3.986087 1.613745 0
+ 3.544721 2.137867 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 1.434440 3.903331 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.820635 3.517136 0
+ -1.834428 2.413721 0
+ -2.675782 2.386135 0
+ -3.227489 1.282720 0
+ -2.248208 0.358610 0
+ -3.172319 -0.124134 0
+ -3.020599 -0.786183 0
+ -1.544781 -1.062037 0
+ -2.110281 -2.068903 0
+ -1.186171 -2.786123 0
+ -0.813769 -3.599892 0
+ L3 65280 -0.001500 -0.875000 -4.250000 0 -0.375000 -3.875000 0
+ L3 65280 -0.001500 -1.250000 -4.000000 0 -1.375000 -3.375000 0
+ L3 65280 -0.001500 -2.875000 -2.625000 0 -2.000000 -2.625000 0
+ L3 65280 -0.001500 -3.500000 -2.375000 0 -3.125000 -2.000000 0
+ L3 65280 -0.001500 -2.625000 -2.125000 0 -2.125000 -1.750000 0
+ L3 65280 -0.001500 -2.375000 -1.375000 0 -3.125000 -1.250000 0
+ L3 65280 -0.001500 -4.250000 -1.000000 0 -3.375000 -1.000000 0
+ L3 65280 -0.001500 -4.250000 -0.250000 0 -3.500000 -0.625000 0
+ L3 65280 -0.001500 -2.875000 0.375000 0 -3.500000 0.250000 0
+ L3 65280 -0.001500 -3.375000 0.875000 0 -4.250000 1.375000 0
+ L3 65280 -0.001500 -3.875000 1.875000 0 -3.250000 2.000000 0
+ L3 65280 -0.001500 -3.000000 2.875000 0 -2.750000 2.500000 0
+ L3 65280 -0.001500 -1.875000 3.750000 0 -2.125000 4.125000 0
+ L3 65280 -0.001500 -1.125000 4.000000 0 -0.875000 4.375000 0
+ L3 65280 -0.001500 -0.125000 3.375000 0 0.000000 3.750000 0
+ L3 65280 -0.001500 0.625000 3.375000 0 0.250000 3.625000 0
+ L3 65280 -0.001500 1.625000 4.000000 0 1.500000 4.500000 0
+ L3 65280 -0.001500 2.375000 3.750000 0 2.750000 3.875000 0
+ L3 65280 -0.001500 4.375000 1.750000 0 4.000000 1.875000 0
+ L3 65280 -0.001500 3.750000 2.375000 0 4.000000 2.750000 0
+ L3 65280 -0.001500 4.375000 -0.375000 0 3.875000 -0.250000 0
+ L3 65280 -0.001500 -3.500000 -3.125000 0 -3.250000 -2.625000 0
+ L3 65280 -0.001500 -4.000000 -2.375000 0 -3.625000 -2.625000 0
+ F4 26624 0.000000 4 0
+ 1.925722 -1.979214 0
+ 1.141169 -1.747415 0
+ 1.052015 -1.158999 0
+ 1.569107 -1.372969 0
+ F4 26624 0.000000 5 0
+ -0.748892 -2.371491 0
+ -0.677569 -1.961384 0
+ 0.089154 -1.622599 0
+ 0.303123 -2.121861 0
+ -0.089154 -2.496307 0
+ F4 26624 0.000000 4 0
+ 2.442814 0.089154 0
+ 1.515615 0.303123 0
+ 1.319476 -0.160477 0
+ 2.585460 -0.231800 0
+ F4 26624 0.000000 4 0
+ 0.588415 2.371491 0
+ 0.124815 2.014876 0
+ 0.249631 1.265984 0
+ 0.534923 1.372969 0
+ F4 26624 0.000000 3 0
+ 2.175353 1.783076 0
+ 1.925722 1.230323 0
+ 1.533445 1.569107 0
+ F4 26624 0.000000 5 0
+ -1.872230 0.213969 0
+ -1.622599 0.035662 0
+ -0.766723 -0.178308 0
+ -0.303123 0.303123 0
+ -1.372969 0.463600 0
+ F4 26624 0.000000 4 0
+ -1.640430 2.068368 0
+ -1.141169 1.943553 0
+ -0.784553 1.105507 0
+ -1.337307 1.248153 0
+ L3 26624 -0.001500 0.250000 -2.750000 0 0.500000 -2.375000 0
+ L3 26624 -0.001500 1.750000 -2.375000 0 1.125000 -2.125000 0
+ L3 26624 -0.001500 2.000000 -3.000000 0 1.625000 -2.750000 0
+ L3 26624 -0.001500 1.125000 -3.250000 0 0.875000 -2.750000 0
+ L3 26624 -0.001500 -0.500000 -3.125000 0 -0.250000 -2.750000 0
+ L3 26624 -0.001500 -1.500000 -2.000000 0 -1.000000 -2.000000 0
+ L3 26624 -0.001500 -1.125000 -1.375000 0 -0.500000 -1.625000 0
+ L3 26624 -0.001500 -1.500000 -0.750000 0 -1.000000 -0.375000 0
+ L3 26624 -0.001500 -2.250000 -0.625000 0 -1.750000 -0.375000 0
+ L3 26624 -0.001500 -2.875000 -0.250000 0 -2.250000 0.000000 0
+ L3 26624 -0.001500 -2.000000 0.625000 0 -2.500000 1.125000 0
+ L3 26624 -0.001500 -2.250000 1.750000 0 -1.875000 1.250000 0
+ L3 26624 -0.001500 -1.375000 2.750000 0 -1.000000 2.250000 0
+ L3 26624 -0.001500 -0.500000 2.250000 0 -0.625000 3.000000 0
+ L3 26624 -0.001500 -0.375000 1.375000 0 -0.250000 1.875000 0
+ L3 26624 -0.001500 0.875000 2.250000 0 1.125000 3.000000 0
+ L3 26624 -0.001500 1.500000 2.125000 0 2.250000 2.500000 0
+ L3 26624 -0.001500 3.375000 0.875000 0 2.750000 1.000000 0
+ L3 26624 -0.001500 3.375000 2.000000 0 2.750000 1.750000 0
+ L3 26624 -0.001500 3.625000 1.500000 0 3.000000 1.375000 0
+ L3 26624 -0.001500 1.500000 3.625000 0 1.375000 3.125000 0
+ L3 26624 -0.001500 2.250000 3.250000 0 1.875000 2.875000 0
+ L3 26624 -0.001500 1.750000 3.375000 0 1.500000 2.625000 0
+ L3 26624 -0.001500 3.750000 -0.625000 0 3.000000 -0.750000 0
+ L3 26624 -0.001500 3.125000 -1.625000 0 2.500000 -1.250000 0
+ L3 26624 -0.001500 3.750000 -1.250000 0 3.125000 -1.125000 0
+ L3 26624 -0.001500 -1.250000 3.500000 0 -1.125000 3.000000 0
+ L3 26624 -0.001500 -2.750000 1.750000 0 -2.375000 1.500000 0
+ L3 26624 -0.001500 1.750000 -4.000000 0 1.500000 -3.375000 0
+ L3 26624 -0.001500 2.250000 -3.625000 0 1.875000 -3.250000 0
+ END$SEGS
+STRAIGHT 309 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 83 420.336087 565.288023 276.999848 0 0.0 0.0 0.0 0.0 0 0 0 49.660152
+ T4 317 425.540440 564.645794 96.999173 0 0.0 0.0 0.0 0.0 0 0 0 49.660152
+ END$SEGS
+TURNOUT 310 0 0 0 0 Fn3 2 476.056688 284.404967 0 288.112394 "Trout Bridge 51-A B-51-A"
+ T4 769 458.733383 292.828083 230.238474 0 0.0 0.0 0.0 0.0 0 0 0 91.929661
+ T4 49 482.541301 365.604625 345.991110 9 14.767987 9.054128 91.200000 91.200000 1 1 0 91.929661
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -72.000000 40.908672 80.058864 147.878716 64.247364
+ F4 8553090 0.000000 4 0
+ 0.448516 15.620181 0
+ 4.964148 22.821505 0
+ 5.493657 22.489474 0
+ 0.978026 15.288149 0
+ F4 8553090 0.000000 4 0
+ 13.637918 19.078181 0
+ 9.347852 9.604252 0
+ 8.778505 9.862069 0
+ 13.068572 19.335998 0
+ F4 8553090 0.000000 4 0
+ 22.191097 17.185101 0
+ 18.480530 4.934726 0
+ 17.882367 5.115906 0
+ 21.592934 17.366281 0
+ F4 8553090 0.000000 4 0
+ 30.711990 16.166647 0
+ 28.341457 1.760379 0
+ 27.724750 1.861857 0
+ 30.095283 16.268125 0
+ F4 8553090 0.000000 4 0
+ 39.480077 16.171778 0
+ 38.959529 -0.019857 0
+ 38.334852 0.000226 0
+ 38.855400 16.191861 0
+ F4 8553090 0.000000 4 0
+ 38.334852 0.000226 0
+ 37.710174 0.020309 0
+ 38.230722 16.211943 0
+ 38.855400 16.191861 0
+ F4 8553090 0.000000 8 0
+ 51.367910 16.919301 0
+ 51.984507 17.021442 0
+ 54.599317 1.236552 0
+ 53.982719 1.134411 0
+ 51.367910 16.919301 0
+ 50.751313 16.817160 0
+ 53.366122 1.032270 0
+ 53.982719 1.134411 0
+ F4 8553090 0.000000 4 0
+ 63.456836 4.763224 0
+ 59.619843 17.393248 0
+ 60.218608 17.572430 0
+ 64.055600 4.942407 0
+ F4 8553090 0.000000 4 0
+ 72.459235 9.709239 0
+ 73.028468 9.967307 0
+ 68.816810 19.257190 0
+ 68.247577 18.999123 0
+ F4 8553090 0.000000 4 0
+ 80.977084 14.994772 0
+ 76.515625 22.229783 0
+ 77.047611 22.557831 0
+ 81.509070 15.322821 0
+ END$SEGS
+TURNOUT 311 0 0 0 0 Fn3 2 111.008154 539.727463 0 349.999992 "High Bridge 46-D B-46-D"
+ T4 41 111.008154 539.727463 259.999992 10 -9.133154 5.897537 0.0 0.0 1 2 0 73.211563
+ T4 40 176.005466 551.188243 79.999992 10 -13.505466 8.311757 0.0 0.0 1 2 0 73.211563
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 66.000000 0.000000
+ L3 0 0.000000 66.000000 2.500000 0 0.000000 2.500000 0
+ L3 0 0.000000 66.000000 -2.500000 0 0.000000 -2.500000 0
+ F4 8553090 0.000000 4 0
+ 0.375000 -3.000000 0
+ 0.375000 3.000000 0
+ 1.000000 3.000000 0
+ 1.000000 -3.000000 0
+ F4 8553090 0.000000 4 0
+ 9.000000 -4.000000 0
+ 9.000000 4.000000 0
+ 8.375000 4.000000 0
+ 8.375000 -4.000000 0
+ F4 8553090 0.000000 4 0
+ 16.375000 -5.000000 0
+ 16.375000 5.000000 0
+ 17.000000 5.000000 0
+ 17.000000 -5.000000 0
+ F4 8553090 0.000000 4 0
+ 24.375000 -6.000000 0
+ 24.375000 6.000000 0
+ 25.000000 6.000000 0
+ 25.000000 -6.000000 0
+ F4 8553090 0.000000 4 0
+ 33.000000 -6.000000 0
+ 33.000000 6.000000 0
+ 32.375000 6.000000 0
+ 32.375000 -6.000000 0
+ F4 8553090 0.000000 4 0
+ 65.625000 -3.000000 0
+ 65.625000 3.000000 0
+ 65.000000 3.000000 0
+ 65.000000 -3.000000 0
+ F4 8553090 0.000000 4 0
+ 57.000000 -4.000000 0
+ 57.000000 4.000000 0
+ 57.625000 4.000000 0
+ 57.625000 -4.000000 0
+ F4 8553090 0.000000 4 0
+ 49.625000 -5.000000 0
+ 49.625000 5.000000 0
+ 49.000000 5.000000 0
+ 49.000000 -5.000000 0
+ F4 8553090 0.000000 4 0
+ 41.625000 -6.000000 0
+ 41.625000 6.000000 0
+ 41.000000 6.000000 0
+ 41.000000 -6.000000 0
+ END$SEGS
+TURNOUT 312 0 0 0 0 Fn3 2 206.865394 551.592213 0 8.500000 "High Bridge 46-C B-46-C"
+ T4 40 206.865394 551.592213 278.500000 10 2.384606 10.407779 0.0 0.0 1 2 0 70.468357
+ T4 39 278.074537 540.949944 98.500000 0 0.0 0.0 0.0 0.0 0 0 0 70.468357
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 72.000000 0.000000
+ F4 8553090 0.000000 4 0
+ -0.200000 2.500000 0
+ 72.200000 2.500000 0
+ 72.200000 2.200000 0
+ -0.200000 2.200000 0
+ F4 8553090 0.000000 4 0
+ -0.200000 -2.200000 0
+ 72.200000 -2.200000 0
+ 72.200000 -2.500000 0
+ -0.200000 -2.500000 0
+ F4 8553090 0.000000 4 0
+ 0.000000 3.500000 0
+ 0.600000 3.500000 0
+ 0.600000 -3.500000 0
+ 0.000000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 5.800000 3.500000 0
+ 6.400000 3.500000 0
+ 6.400000 -3.500000 0
+ 5.800000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 11.600000 3.500000 0
+ 12.200000 3.500000 0
+ 12.200000 -3.500000 0
+ 11.600000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 17.400000 3.500000 0
+ 18.000000 3.500000 0
+ 18.000000 -3.500000 0
+ 17.400000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 23.200000 3.500000 0
+ 23.800000 3.500000 0
+ 23.800000 -3.500000 0
+ 23.200000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 29.000000 3.500000 0
+ 29.600000 3.500000 0
+ 29.600000 -3.500000 0
+ 29.000000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 34.800000 3.500000 0
+ 35.400000 3.500000 0
+ 35.400000 -3.500000 0
+ 34.800000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 36.600000 3.500000 0
+ 37.200000 3.500000 0
+ 37.200000 -3.500000 0
+ 36.600000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 42.400000 3.500000 0
+ 43.000000 3.500000 0
+ 43.000000 -3.500000 0
+ 42.400000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 48.200000 3.500000 0
+ 48.800000 3.500000 0
+ 48.800000 -3.500000 0
+ 48.200000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 54.000000 3.500000 0
+ 54.600000 3.500000 0
+ 54.600000 -3.500000 0
+ 54.000000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 59.800000 3.500000 0
+ 60.400000 3.500000 0
+ 60.400000 -3.500000 0
+ 59.800000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 65.600000 3.500000 0
+ 66.200000 3.500000 0
+ 66.200000 -3.500000 0
+ 65.600000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 71.400000 3.500000 0
+ 72.000000 3.500000 0
+ 72.000000 -3.500000 0
+ 71.400000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 35.700000 -2.500000 0
+ 36.300000 -2.500000 0
+ 36.300000 -8.500000 0
+ 35.700000 -8.500000 0
+ F4 8553090 0.000000 4 0
+ 34.800000 -3.500000 0
+ 35.400000 -3.500000 0
+ 35.400000 -8.500000 0
+ 34.800000 -8.500000 0
+ F4 8553090 0.000000 4 0
+ 36.600000 -3.500000 0
+ 37.200000 -3.500000 0
+ 37.200000 -8.500000 0
+ 36.600000 -8.500000 0
+ F4 8553090 0.000000 4 0
+ 35.700000 2.500000 0
+ 36.300000 2.500000 0
+ 36.300000 8.500000 0
+ 35.700000 8.500000 0
+ F4 8553090 0.000000 4 0
+ 34.800000 3.500000 0
+ 35.400000 3.500000 0
+ 35.400000 8.500000 0
+ 34.800000 8.500000 0
+ F4 8553090 0.000000 4 0
+ 36.600000 3.500000 0
+ 37.200000 3.500000 0
+ 37.200000 8.500000 0
+ 36.600000 8.500000 0
+ END$SEGS
+TURNOUT 313 0 0 0 0 Fn3 2 301.810916 537.402510 0 8.500000 "High Bridge 46-B B-46-B"
+ T4 39 301.810916 537.402510 278.500000 0 0.0 0.0 0.0 0.0 0 0 0 67.999398
+ T4 336 361.151869 528.533953 98.500000 10 1.289798 9.476464 0.0 0.0 1 2 0 67.999398
+ D 0.000000 0.000000
+ P "Normal" 1
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ L3 0 0.000000 45.900000 2.500000 0 45.900000 6.200000 0
+ L3 0 0.000000 45.900000 6.200000 0 47.800000 6.200000 0
+ L3 0 0.000000 47.800000 6.200000 0 47.800000 2.500000 0
+ L3 0 0.000000 45.900000 -2.500000 0 45.900000 -6.200000 0
+ L3 0 0.000000 45.900000 -6.200000 0 47.800000 -6.200000 0
+ L3 0 0.000000 47.800000 -6.200000 0 47.800000 -2.500000 0
+ F4 8553090 0.000000 4 0
+ 0.000000 3.500000 0
+ 0.600000 3.500000 0
+ 0.600000 -3.500000 0
+ 0.000000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 5.800000 3.500000 0
+ 6.400000 3.500000 0
+ 6.400000 -3.500000 0
+ 5.800000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 11.600000 3.500000 0
+ 12.200000 3.500000 0
+ 12.200000 -3.500000 0
+ 11.600000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 17.400000 3.500000 0
+ 18.000000 3.500000 0
+ 18.000000 -3.500000 0
+ 17.400000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 23.200000 3.500000 0
+ 23.800000 3.500000 0
+ 23.800000 -3.500000 0
+ 23.200000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 29.000000 3.500000 0
+ 29.600000 3.500000 0
+ 29.600000 -3.500000 0
+ 29.000000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ -0.200000 -2.200000 0
+ 60.200000 -2.200000 0
+ 60.200000 -2.500000 0
+ -0.200000 -2.500000 0
+ F4 8553090 0.000000 4 0
+ -0.200000 2.500000 0
+ 60.200000 2.500000 0
+ 60.200000 2.200000 0
+ -0.200000 2.200000 0
+ F4 8553090 0.000000 4 0
+ 34.800000 3.500000 0
+ 35.400000 3.500000 0
+ 35.400000 -3.500000 0
+ 34.800000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 40.600000 3.500000 0
+ 41.200000 3.500000 0
+ 41.200000 -3.500000 0
+ 40.600000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 46.100000 3.500000 0
+ 46.700000 3.500000 0
+ 46.700000 -3.500000 0
+ 46.100000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 47.000000 3.500000 0
+ 47.600000 3.500000 0
+ 47.600000 -3.500000 0
+ 47.000000 -3.500000 0
+ F4 8553090 0.000000 4 0
+ 46.100000 3.500000 0
+ 46.700000 3.500000 0
+ 46.700000 6.000000 0
+ 46.100000 6.000000 0
+ F4 8553090 0.000000 4 0
+ 47.000000 3.500000 0
+ 47.600000 3.500000 0
+ 47.600000 6.000000 0
+ 47.000000 6.000000 0
+ F4 8553090 0.000000 4 0
+ 46.100000 -3.500000 0
+ 46.700000 -3.500000 0
+ 46.700000 -6.000000 0
+ 46.100000 -6.000000 0
+ F4 8553090 0.000000 4 0
+ 47.000000 -3.500000 0
+ 47.600000 -3.500000 0
+ 47.600000 -6.000000 0
+ 47.000000 -6.000000 0
+ F4 8553090 0.000000 4 0
+ 59.400000 3.500000 0
+ 60.000000 3.500000 0
+ 60.000000 -3.500000 0
+ 59.400000 -3.500000 0
+ END$SEGS
+DRAW 314 7 0 0 0 590.375000 637.270833 0 0.000000
+ Z 0 0.000000 0.000000 0.000000 1 350.000000 "Bridge 39-A"
+ END$SEGS
+TURNOUT 315 0 0 0 0 Fn3 2 620.954924 534.512028 0 21.999173 "NMRA G #4 Right 4R"
+ T4 316 620.954924 534.512028 291.999173 0 0.0 0.0 0.0 0.0 0 0 0 55.315626
+ T4 86 640.936164 526.439426 111.999173 0 0.0 0.0 0.0 0.0 0 0 0 55.315626
+ T4 33 639.235793 523.387493 126.249206 0 0.0 0.0 0.0 0.0 0 0 0 55.315626
+ 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 21.550333 0.000000
+ C 0 0.000000 45.576853 1.770060 -45.576853 0.000000 14.250185
+ S 0 0.000000 12.989026 -1.402392 21.117000 -3.466667
+ END$SEGS
+STRAIGHT 316 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 315 620.954924 534.512028 111.999436 0 0.0 0.0 0.0 0.0 0 0 0 54.949714
+ T4 317 616.690827 536.234778 291.999436 0 0.0 0.0 0.0 0.0 0 0 0 54.949714
+ END$SEGS
+TURNOUT 317 0 0 0 0 Fn3 2 425.540440 564.645794 0 6.999848 "Ophir Bridge 45-A B-45-A"
+ T4 309 425.540440 564.645794 276.999848 0 0.0 0.0 0.0 0.0 0 0 0 52.309228
+ T4 316 616.690493 536.232526 111.999848 0 0.0 0.0 0.0 0.0 0 0 0 52.309228
+ D 0.000000 0.000000
+ P "Normal" 1 2
+ S 0 0.000000 0.000000 0.000000 155.918000 0.000000
+ C 0 0.000000 144.000000 155.918000 -144.000000 0.000000 15.000000
+ F4 8553090 0.000000 4 0
+ 192.061808 -7.893013 0
+ 193.705309 -1.759384 0
+ 194.309013 -1.921146 0
+ 192.665512 -8.054775 0
+ F4 8553090 0.000000 4 0
+ 182.497328 -8.762877 0
+ 184.906694 3.349821 0
+ 185.519684 3.227890 0
+ 183.110319 -8.884809 0
+ F4 8553090 0.000000 4 0
+ 173.334437 -9.296959 0
+ 175.468540 6.913164 0
+ 176.088193 6.831585 0
+ 173.954090 -9.378538 0
+ F4 8553090 0.000000 4 0
+ 164.487147 -8.446290 0
+ 165.556488 7.868703 0
+ 166.180150 7.827826 0
+ 165.110808 -8.487167 0
+ F4 8553090 0.000000 4 0
+ 155.603163 -8.000000 0
+ 155.603163 8.000000 0
+ 156.228163 8.000000 0
+ 156.228163 -8.000000 0
+ F4 8553090 0.000000 4 0
+ 146.103163 -8.000000 0
+ 146.103163 8.000000 0
+ 146.728163 8.000000 0
+ 146.728163 -8.000000 0
+ F4 8553090 0.000000 4 0
+ 136.603163 -8.000000 0
+ 136.603163 8.000000 0
+ 137.228163 8.000000 0
+ 137.228163 -8.000000 0
+ F4 8553090 0.000000 4 0
+ 127.728163 -8.000000 0
+ 127.728163 8.000000 0
+ 128.353163 8.000000 0
+ 128.353163 -8.000000 0
+ F4 8553090 0.000000 4 0
+ 127.628163 -8.000000 0
+ 127.628163 8.000000 0
+ 127.003163 8.000000 0
+ 127.003163 -8.000000 0
+ F4 8553090 0.000000 4 0
+ 115.728163 -7.789063 0
+ 115.103163 -7.789064 0
+ 115.103138 1.679686 0
+ 115.728163 1.679688 0
+ F4 8553090 0.000000 4 0
+ 115.728163 4.492188 0
+ 115.103163 4.492186 0
+ 115.103163 8.992186 0
+ 115.728163 8.992188 0
+ F4 8553090 0.000000 4 0
+ 118.114829 -8.337108 0
+ 112.086473 8.080192 0
+ 112.673171 8.295625 0
+ 118.701527 -8.121675 0
+ F4 8553090 0.000000 6 0
+ 91.103163 7.804687 0
+ 91.103163 -7.820313 0
+ 91.728163 -7.804688 0
+ 91.728163 7.804687 0
+ 91.103163 7.804687 0
+ 91.103163 -7.820313 0
+ F4 8553090 0.000000 4 0
+ 94.301697 8.187908 0
+ 100.330053 -8.229392 0
+ 99.743356 -8.444824 0
+ 93.714999 7.972476 0
+ F4 8553090 0.000000 4 0
+ 94.486038 8.255598 0
+ 95.072736 8.471030 0
+ 101.101092 -7.946270 0
+ 100.514394 -8.161702 0
+ F4 8553090 0.000000 4 0
+ 79.728163 -8.507813 0
+ 79.103163 -8.507813 0
+ 79.103163 -3.789063 0
+ 79.728163 -3.789063 0
+ F4 8553090 0.000000 4 0
+ 79.728163 -1.914063 0
+ 79.103163 -1.914063 0
+ 79.103163 7.804687 0
+ 79.728163 7.804687 0
+ F4 8553090 0.000000 4 0
+ 76.117723 8.080192 0
+ 76.704421 8.295625 0
+ 82.732777 -8.121675 0
+ 82.146079 -8.337108 0
+ F4 8553090 0.000000 4 0
+ 67.103163 -8.000000 0
+ 67.103163 8.000000 0
+ 66.478163 8.000000 0
+ 66.478163 -8.000000 0
+ F4 8553090 0.000000 4 0
+ 48.103163 -8.000000 0
+ 48.103163 8.000000 0
+ 47.478163 8.000000 0
+ 47.478163 -8.000000 0
+ F4 8553090 0.000000 4 0
+ 57.603163 -8.000000 0
+ 57.603163 8.000000 0
+ 56.978163 8.000000 0
+ 56.978163 -8.000000 0
+ F4 8553090 0.000000 4 0
+ 37.978163 -7.000000 0
+ 37.978163 7.000000 0
+ 38.603163 7.000000 0
+ 38.603163 -7.000000 0
+ F4 8553090 0.000000 4 0
+ 0.000000 -3.000000 0
+ 0.000000 3.000000 0
+ 0.625000 3.000000 0
+ 0.625000 -3.000000 0
+ F4 8553090 0.000000 4 0
+ 28.478163 -6.000000 0
+ 28.478163 6.000000 0
+ 29.103163 6.000000 0
+ 29.103163 -6.000000 0
+ F4 8553090 0.000000 4 0
+ 18.978163 -5.000000 0
+ 18.978163 5.000000 0
+ 19.603163 5.000000 0
+ 19.603163 -5.000000 0
+ F4 8553090 0.000000 4 0
+ 10.103163 -4.000000 0
+ 10.103163 4.000000 0
+ 9.478163 4.000000 0
+ 9.478163 -4.000000 0
+ F4 8553090 0.000000 4 0
+ 118.853163 -6.632813 0
+ 118.853163 -7.007813 0
+ 80.853163 -7.007813 0
+ 80.853163 -6.632813 0
+ F4 8553090 0.000000 4 0
+ 118.853163 -6.007813 0
+ 118.853163 -6.382813 0
+ 80.853163 -6.382813 0
+ 80.853163 -6.007813 0
+ F4 8553090 0.000000 4 0
+ 118.103163 -4.632813 0
+ 118.103163 -5.007813 0
+ 80.103163 -5.007813 0
+ 80.103163 -4.632813 0
+ F4 8553090 0.000000 4 0
+ 118.103163 -4.007813 0
+ 118.103163 -4.382813 0
+ 80.103163 -4.382813 0
+ 80.103163 -4.007813 0
+ F4 8553090 0.000000 4 0
+ 116.853163 -1.132813 0
+ 116.853163 -1.507813 0
+ 78.853163 -1.507813 0
+ 78.853163 -1.132813 0
+ F4 8553090 0.000000 4 0
+ 116.853163 -0.507813 0
+ 116.853163 -0.882813 0
+ 78.853163 -0.882813 0
+ 78.853163 -0.507813 0
+ F4 8553090 0.000000 4 0
+ 116.103163 0.867187 0
+ 116.103163 0.492187 0
+ 78.103163 0.492187 0
+ 78.103163 0.867187 0
+ F4 8553090 0.000000 4 0
+ 116.103163 1.492187 0
+ 116.103163 1.117187 0
+ 78.103163 1.117187 0
+ 78.103163 1.492187 0
+ F4 8553090 0.000000 4 0
+ 114.853163 4.367187 0
+ 114.853163 3.992187 0
+ 76.853163 3.992187 0
+ 76.853163 4.367187 0
+ F4 8553090 0.000000 4 0
+ 114.853163 4.992187 0
+ 114.853163 4.617187 0
+ 76.853163 4.617187 0
+ 76.853163 4.992187 0
+ F4 8553090 0.000000 4 0
+ 114.103163 6.367187 0
+ 114.103163 5.992187 0
+ 76.103163 5.992187 0
+ 76.103163 6.367187 0
+ F4 8553090 0.000000 4 0
+ 114.103163 6.992187 0
+ 114.103163 6.617187 0
+ 76.103163 6.617187 0
+ 76.103163 6.992187 0
+ F4 8553090 0.000000 4 0
+ 67.823163 -8.000000 0
+ 67.198163 -8.000000 0
+ 67.198163 8.000000 0
+ 67.823163 8.000000 0
+ F4 8553090 0.000000 4 0
+ 103.728163 7.804687 0
+ 103.728163 -7.789094 0
+ 103.103163 -7.789096 0
+ 103.103163 7.804687 0
+ A3 0 0.000000 141.500000 155.918163 -144.000000 0 0.000000 15.125524
+ A3 0 0.000000 146.500000 155.918163 -144.000000 0 0.000000 15.121240
+ L3 0 0.000000 155.918163 -2.500000 0 0.000000 -2.500000 0
+ L3 0 0.000000 155.918163 2.500000 0 0.000000 2.500000 0
+ END$SEGS
+TURNOUT 318 0 0 0 0 Fn3 2 84.035389 624.618957 0 309.999943 "Ophir Butterfly B-Bfly"
+ T4 319 83.920084 629.837084 149.001263 0 0.0 0.0 0.0 0.0 0 0 0 37.708657
+ T4 54 172.608632 733.675665 111.999943 10 -0.233632 12.199335 0.0 0.0 1 2 0 37.708657
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 72.000000 72.000000 -20.000000 289.001320 142.998680
+ F4 8553090 0.000000 4 0
+ 7.934941 2.041513 0
+ -0.089816 4.843884 0
+ 0.116241 5.433940 0
+ 8.140997 2.631569 0
+ F4 8553090 0.000000 4 0
+ 136.244252 1.513629 0
+ 144.316695 4.175521 0
+ 144.512422 3.581959 0
+ 136.439979 0.920067 0
+ F4 8553090 0.000000 4 0
+ 120.782842 21.621480 0
+ 132.714491 31.902446 0
+ 132.306516 32.375924 0
+ 120.374867 22.094958 0
+ F4 8553090 0.000000 4 0
+ 30.378520 28.782842 0
+ 20.097554 40.714491 0
+ 19.624076 40.306516 0
+ 29.905042 28.374867 0
+ F4 8553090 0.000000 4 0
+ 24.367159 22.932805 0
+ 12.616755 33.420441 0
+ 12.200579 32.954155 0
+ 23.950983 22.466519 0
+ F4 8553090 0.000000 4 0
+ 127.784371 16.200160 0
+ 136.983519 22.231386 0
+ 136.640835 22.754065 0
+ 127.441688 16.722839 0
+ F4 8553090 0.000000 4 0
+ 132.032197 8.609141 0
+ 141.939878 13.388039 0
+ 141.668349 13.950976 0
+ 131.760669 9.172078 0
+ F4 8553090 0.000000 4 0
+ 12.757556 10.210602 0
+ 2.934788 15.161685 0
+ 2.653476 14.603573 0
+ 12.476245 9.652490 0
+ F4 8553090 0.000000 4 0
+ 17.207658 17.684837 0
+ 8.115171 23.875691 0
+ 7.763418 23.359073 0
+ 16.855905 17.168218 0
+ F4 8553090 0.000000 4 0
+ 37.881554 31.469328 0
+ 26.641542 48.613195 0
+ 27.164221 48.955878 0
+ 38.404233 31.812012 0
+ F4 8553090 0.000000 4 0
+ 107.011514 30.866040 0
+ 118.549015 47.811130 0
+ 118.032396 48.162883 0
+ 106.494895 31.217794 0
+ F4 8553090 0.000000 4 0
+ 76.264559 41.603358 0
+ 77.783783 62.046987 0
+ 78.407064 62.000669 0
+ 76.887840 41.557040 0
+ F4 8553090 0.000000 4 0
+ 67.563228 41.597536 0
+ 66.401026 62.064565 0
+ 67.025021 62.099998 0
+ 68.187223 41.632969 0
+ F4 8553090 0.000000 4 0
+ 53.552478 38.937512 0
+ 47.132620 58.406344 0
+ 46.539058 58.210617 0
+ 52.958916 38.741785 0
+ F4 8553090 0.000000 4 0
+ 44.891537 35.482352 0
+ 35.985409 53.946666 0
+ 36.548346 54.218194 0
+ 45.454474 35.753880 0
+ F4 8553090 0.000000 4 0
+ 114.932805 27.632841 0
+ 125.420441 39.383245 0
+ 124.954155 39.799421 0
+ 114.466519 28.049017 0
+ F4 8553090 0.000000 4 0
+ 93.052441 41.232792 0
+ 93.642497 41.026736 0
+ 98.423011 54.716027 0
+ 97.832956 54.922083 0
+ F4 8553090 0.000000 4 0
+ 59.615553 43.555374 0
+ 60.229584 43.671952 0
+ 57.524986 57.917483 0
+ 56.910954 57.800905 0
+ F4 8553090 0.000000 4 0
+ 104.077041 44.333975 0
+ 86.945087 50.316721 0
+ 86.868063 49.946411 0
+ 103.906797 43.996219 0
+ F4 8553090 0.000000 4 0
+ 104.899884 45.966466 0
+ 87.317373 52.106553 0
+ 87.240349 51.736243 0
+ 104.729640 45.628709 0
+ F4 8553090 0.000000 4 0
+ 49.330407 49.745583 0
+ 67.530345 53.200950 0
+ 67.508902 53.578577 0
+ 49.211958 50.104794 0
+ F4 8553090 0.000000 4 0
+ 67.612545 51.753377 0
+ 49.784465 48.368611 0
+ 49.902915 48.009400 0
+ 67.633988 51.375750 0
+ F4 8553090 0.000000 4 0
+ 86.945087 50.316721 0
+ 67.612545 51.753377 0
+ 67.633988 51.375750 0
+ 86.868063 49.946411 0
+ F4 8553090 0.000000 4 0
+ 87.317373 52.106553 0
+ 67.512427 53.594237 0
+ 67.530345 53.200950 0
+ 87.240349 51.736243 0
+ F4 8553090 0.000000 4 0
+ 88.357205 57.105740 0
+ 107.198169 50.526181 0
+ 107.368413 50.863937 0
+ 88.434230 57.476050 0
+ F4 8553090 0.000000 4 0
+ 87.984920 55.315908 0
+ 106.375326 48.893690 0
+ 106.545570 49.231447 0
+ 88.061944 55.686218 0
+ F4 8553090 0.000000 4 0
+ 87.612634 53.526075 0
+ 105.552483 47.261200 0
+ 105.722727 47.598956 0
+ 87.689659 53.896386 0
+ F4 8553090 0.000000 4 0
+ 86.495777 48.156579 0
+ 103.083954 42.363728 0
+ 103.254198 42.701485 0
+ 86.572802 48.526889 0
+ F4 8553090 0.000000 4 0
+ 86.123492 46.366747 0
+ 102.261111 40.731238 0
+ 102.431355 41.068994 0
+ 86.200516 46.737057 0
+ F4 8553090 0.000000 4 0
+ 85.751206 44.576915 0
+ 101.438269 39.098747 0
+ 101.608512 39.436504 0
+ 85.828231 44.947225 0
+ F4 8553090 0.000000 4 0
+ 99.259271 39.859687 0
+ 95.764881 47.104309 0
+ 95.558824 46.514253 0
+ 98.669216 40.065744 0
+ F4 8553090 0.000000 4 0
+ 92.826843 55.942081 0
+ 95.937235 49.493571 0
+ 95.731178 48.903516 0
+ 92.236787 56.148138 0
+ F4 8553090 0.000000 4 0
+ 102.975800 52.397906 0
+ 96.527290 49.287515 0
+ 96.321234 48.697459 0
+ 103.565855 52.191850 0
+ F4 8553090 0.000000 4 0
+ 87.930203 43.815975 0
+ 95.174825 47.310365 0
+ 94.968768 46.720310 0
+ 88.520259 43.609918 0
+ F4 8553090 0.000000 4 0
+ 94.310382 51.849131 0
+ 92.229210 45.889569 0
+ 92.866099 46.196768 0
+ 94.617581 51.212241 0
+ F4 8553090 0.000000 4 0
+ 99.266849 50.118255 0
+ 97.185677 44.158693 0
+ 96.878478 44.795583 0
+ 98.629959 49.811056 0
+ F4 8553090 0.000000 4 0
+ 55.396792 53.378364 0
+ 56.574225 47.176646 0
+ 56.972188 47.761133 0
+ 55.981279 52.980401 0
+ F4 8553090 0.000000 4 0
+ 60.554656 54.357615 0
+ 61.732089 48.155897 0
+ 61.147602 48.553860 0
+ 60.156693 53.773128 0
+ F4 8553090 0.000000 4 0
+ 62.626876 58.186326 0
+ 58.597499 52.268393 0
+ 58.714077 51.654361 0
+ 63.240908 58.302904 0
+ F4 8553090 0.000000 4 0
+ 65.677378 45.469645 0
+ 59.028836 49.996476 0
+ 59.145413 49.382445 0
+ 65.063347 45.353068 0
+ F4 8553090 0.000000 4 0
+ 53.887973 43.231357 0
+ 58.414804 49.879899 0
+ 58.531382 49.265867 0
+ 54.502005 43.347934 0
+ F4 8553090 0.000000 4 0
+ 52.065535 56.181193 0
+ 57.983468 52.151815 0
+ 58.100045 51.537784 0
+ 51.451503 56.064615 0
+ F4 8553090 0.000000 4 0
+ 47.612885 54.954132 0
+ 67.219418 58.676549 0
+ 67.197975 59.054176 0
+ 47.494436 55.313342 0
+ F4 8553090 0.000000 4 0
+ 48.185393 53.217949 0
+ 67.323061 56.851349 0
+ 67.301617 57.228977 0
+ 48.066943 53.577159 0
+ F4 8553090 0.000000 4 0
+ 48.757900 51.481766 0
+ 67.426703 55.026149 0
+ 67.405260 55.403777 0
+ 48.639450 51.840977 0
+ F4 8553090 0.000000 4 0
+ 50.475422 46.273217 0
+ 67.737630 49.550550 0
+ 67.716187 49.928178 0
+ 50.356972 46.632428 0
+ F4 8553090 0.000000 4 0
+ 51.047929 44.537034 0
+ 67.841272 47.725350 0
+ 67.819829 48.102978 0
+ 50.929479 44.896245 0
+ F4 8553090 0.000000 4 0
+ 51.620436 42.800852 0
+ 67.944915 45.900151 0
+ 67.923472 46.277778 0
+ 51.501987 43.160062 0
+ F4 8553090 0.000000 4 0
+ 68.187223 41.632969 0
+ 67.025021 62.099998 0
+ 67.649016 62.135431 0
+ 68.811218 41.668402 0
+ F4 8553090 0.000000 4 0
+ 52.958916 38.741785 0
+ 46.539058 58.210617 0
+ 45.945496 58.014889 0
+ 52.365354 38.546057 0
+ F4 8553090 0.000000 4 0
+ 89.667389 60.335576 0
+ 85.492733 40.265144 0
+ 84.880830 40.392420 0
+ 89.055486 60.462852 0
+ F4 8553090 0.000000 4 0
+ 88.443582 60.590128 0
+ 84.268926 40.519696 0
+ 84.880830 40.392420 0
+ 89.055486 60.462852 0
+ F4 8553090 0.000000 4 0
+ 108.741541 53.588174 0
+ 109.299653 53.306862 0
+ 100.072635 35.000794 0
+ 99.514523 35.282106 0
+ F4 8553090 0.000000 4 0
+ 108.183429 53.869485 0
+ 98.956411 35.563417 0
+ 99.514523 35.282106 0
+ 108.741541 53.588174 0
+ END$SEGS
+CURVE 319 0 0 0 0 Fn3 2 145.636915 666.918520 0 72.000000 0 0.000000 0.000000
+ T4 320 146.504204 594.923743 89.309968 0 0.0 0.0 0.0 0.0 0 0 0 41.101682
+ T4 318 83.919986 629.837249 329.001263 0 0.0 0.0 0.0 0.0 0 0 0 41.101682
+ END$SEGS
+CURVE 320 0 0 0 0 Fn3 2 145.636085 667.003332 0 72.084816 0 0.000000 0.000000
+ T4 26 153.171184 595.313423 84.000000 0 0.0 0.0 0.0 0.0 0 0 0 42.189909
+ T4 319 146.504204 594.923743 269.310120 0 0.0 0.0 0.0 0.0 0 0 0 42.189909
+ END$SEGS
+DRAW 321 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 60.458333 1079.479167 0 60.458333 1199.979167 0
+ END$SEGS
+DRAW 322 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 60.458333 1079.479167 0 300.000000 1080.000000 0
+ END$SEGS
+DRAW 323 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 239.958333 1079.354167 0 239.958333 1043.604167 0
+ END$SEGS
+DRAW 324 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 239.958333 1043.604167 0 276.000000 1002.000000 0
+ END$SEGS
+DRAW 325 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 276.000000 1002.000000 0 276.000000 840.000000 0
+ END$SEGS
+DRAW 326 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 335.970703 779.910888 0 780.000000 780.000000 0
+ END$SEGS
+STRAIGHT 327 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 13 299.041951 778.652432 134.436971 9 0.000000 0.000000 6.820000 6.820000 1 1 0 6.820000
+ T4 344 275.051345 802.176020 314.436818 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+DRAW 328 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.500000 276.000000 840.000000 0 282.333333 821.541667 0
+ END$SEGS
+DRAW 329 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.500000 318.083333 785.791667 0 336.333333 779.791667 0
+ END$SEGS
+DRAW 330 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16761220 0.000000 3 0
+ 293.935606 833.660987 0
+ 278.560606 834.410987 0
+ 282.685606 822.410987 0
+ END$SEGS
+DRAW 331 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16761220 0.000000 5 0
+ 294.541666 834.270835 0
+ 278.666666 834.770835 0
+ 276.666666 840.020835 0
+ 276.666666 848.020835 0
+ 305.791666 845.520835 0
+ END$SEGS
+DRAW 332 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16761220 0.000000 3 0
+ 329.166666 798.270835 0
+ 336.166666 780.270835 0
+ 317.541666 786.395835 0
+ END$SEGS
+DRAW 333 8 0 0 0 0.000000 0.000000 0 0.000000
+ F4 16761220 0.000000 4 0
+ 329.666666 798.520835 0
+ 336.666666 780.270835 0
+ 354.291666 780.395835 0
+ 341.291666 810.020835 0
+ END$SEGS
+DRAW 334 0 0 0 0 0.000000 0.000000 0 0.000000
+ G3 8421504 0.000000 20.554805 396.208333 731.541669 0
+ END$SEGS
+DRAW 335 0 0 0 0 -18.000000 2.000000 0 0.000000
+ G3 8421504 0.000000 48.000000 78.000000 864.041669 0
+ END$SEGS
+STRAIGHT 336 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 74 370.455674 527.143504 98.500000 0 0.0 0.0 0.0 0.0 0 0 0 67.047379
+ T4 313 361.151869 528.533953 278.500000 10 1.289798 9.476464 0.0 0.0 1 2 0 67.047379
+ END$SEGS
+STRAIGHT 337 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 76 552.192024 411.730808 307.999848 0 0.0 0.0 0.0 0.0 0 0 0 60.862510
+ T4 338 557.708612 407.420818 127.999848 0 0.0 0.0 0.0 0.0 0 0 0 60.862510
+ END$SEGS
+CURVE 338 0 0 0 0 Fn3 2 683.206049 568.050398 0 203.841773 0 0.000000 0.000000
+ T4 339 563.009257 403.416865 126.132572 0 0.0 0.0 0.0 0.0 0 0 0 60.675365
+ T4 337 557.708612 407.420818 307.999848 0 0.0 0.0 0.0 0.0 0 0 0 60.675365
+ END$SEGS
+STRAIGHT 339 0 128 0 0 Fn3 2 0.000000 0.000000
+ T4 360 566.406489 400.936587 126.132844 10 6.218511 8.313413 0.0 0.0 1 2 0 60.526548
+ T4 338 563.009257 403.416865 306.132844 0 0.0 0.0 0.0 0.0 0 0 0 60.526548
+ END$SEGS
+CURVE 340 0 0 0 0 Fn3 2 346.095547 337.008867 0 193.767547 0 0.000000 0.000000
+ T4 78 437.063829 508.095494 298.000000 0 0.0 0.0 0.0 0.0 0 0 0 64.585344
+ T4 77 465.390558 489.699936 127.999956 0 0.0 0.0 0.0 0.0 0 0 0 64.585344
+ END$SEGS
+CURVE 341 0 0 0 0 Fn3 2 349.549170 342.328980 0 179.448785 0 0.000000 0.000000
+ T4 38 433.794785 500.773111 297.999848 0 0.0 0.0 0.0 0.0 0 0 0 64.598759
+ T4 75 460.028686 483.736699 127.999956 11 -6.028686 -6.986699 0.0 0.0 1 3 0 64.598759
+ END$SEGS
+CURVE 342 0 0 0 0 Fn3 2 373.980546 448.418579 0 74.307343 0 0.000000 0.000000
+ T4 343 399.298874 518.279609 289.921034 0 0.0 0.0 0.0 0.0 0 0 0 65.946615
+ T4 38 408.865529 514.028176 117.999848 3 0.000000 0.000000 0.0 0.0 0 3 0 65.946615
+ END$SEGS
+STRAIGHT 343 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 74 394.376925 520.063350 289.920730 0 0.0 0.0 0.0 0.0 0 0 0 66.162137
+ T4 342 399.298874 518.279609 109.920730 0 0.0 0.0 0.0 0.0 0 0 0 66.162137
+ END$SEGS
+TURNOUT 344 0 0 0 0 Fn3 2 275.051345 802.176020 0 224.436971 "NMRA G #2.5 WYE 2.5NY"
+ T4 327 275.051345 802.176020 134.436971 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 349 259.902822 813.801365 303.015785 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 345 263.130604 817.093203 325.858157 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 18.955546 2.305145
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 18.955546 -2.305145
+ END$SEGS
+CURVE 345 0 0 0 0 Fn3 2 322.721414 857.502798 0 72.000000 0 0.000000 0.000000
+ T4 344 263.130491 817.093369 145.858157 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 346 250.724616 858.181842 0.540298 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+TURNOUT 346 0 0 0 0 Fn3 2 250.724616 858.181842 0 270.540298 "NMRA G #5 Right 5R"
+ T4 345 250.724616 858.181842 180.540298 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 348 250.960883 883.232394 0.540298 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 90 254.424126 882.853048 11.961484 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ 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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+CURVE 347 0 0 0 0 Fn3 2 1033.220308 895.082046 0 782.112904 0 0.000000 0.000000
+ T4 348 251.142188 902.458282 180.540298 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 89 252.010674 932.660005 2.753861 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+STRAIGHT 348 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 346 250.960883 883.232394 180.540146 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 347 251.142188 902.458282 0.540146 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+STRAIGHT 349 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 344 259.902822 813.801365 123.015937 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 350 240.635288 826.321419 303.015785 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+TURNOUT 350 0 0 0 0 Fn3 2 240.635288 826.321419 0 213.015937 "NMRA G #5 Left 5L"
+ T4 349 240.635288 826.321419 123.015937 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 351 219.629018 839.971424 303.015937 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 730 218.030807 836.875672 291.594751 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ 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 25.051667 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ END$SEGS
+STRAIGHT 351 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 350 219.628963 839.971340 123.015937 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 352 176.885415 867.746350 303.015937 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+CURVE 352 0 0 0 0 Fn3 2 569.121846 1471.366979 0 719.866155 0 0.000000 0.000000
+ T4 351 176.885415 867.746350 123.015937 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 88 141.936745 891.953335 306.400168 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+TURNOUT 353 0 0 1 0 Fn3 2 147.672680 874.803155 0 213.016049 "NMRA G #5 Right 5R"
+ T4 726 147.672680 874.803155 123.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 728 126.666436 888.453201 303.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 727 128.846025 891.171170 314.437235 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ 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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+STRAIGHT 354 0 0 0 0 Fn3 2 0.000000 0.000000
+ E4 54.000000 1194.000000 0.000000 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 355 53.999574 1033.333329 180.000000 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+CURVE 355 0 0 0 0 Fn3 2 360.706544 1033.332922 0 306.706971 0 0.000000 0.000000
+ T4 729 60.808331 969.066074 167.904705 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 354 53.999574 1033.333329 0.000000 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+DRAW 356 8 0 0 0 0.000000 0.000000 0 0.000000
+ L3 8421504 0.250000 282.245430 821.797858 0 318.390333 785.690735 0
+ END$SEGS
+DRAW 357 8 0 0 0 0.000000 0.000000 0 0.000000
+ L3 8421504 0.250000 277.883849 834.509573 0 294.000000 834.000000 0
+ END$SEGS
+DRAW 358 8 0 0 0 0.000000 0.000000 0 0.000000
+ L3 8421504 0.250000 293.917286 834.290501 0 330.000000 798.000000 0
+ END$SEGS
+DRAW 359 8 0 0 0 0.000000 0.000000 0 0.000000
+ L3 8421504 0.250000 329.561473 798.413629 0 336.916639 779.911078 0
+ END$SEGS
+TURNOUT 360 0 0 0 0 Fn3 2 561.555947 392.969913 0 16.882844 "Ophir Bridge 45-B B-45-B"
+ T4 339 566.406489 400.936587 306.132844 10 6.218511 8.313413 0.0 0.0 1 2 0 59.639342
+ T4 37 623.193104 383.702081 87.632844 10 0.244314 -5.827351 0.0 0.0 1 2 0 59.639342
+ D 0.000000 0.000000
+ P "Normal" 1
+ C 0 0.000000 -90.000000 32.000000 94.000000 160.750000 38.500000
+ F4 8553090 0.000000 4 0
+ 0.714052 5.358660 0
+ 3.351577 12.911373 0
+ 3.941632 12.705316 0
+ 1.304107 5.152604 0
+ F4 8553090 0.000000 4 0
+ 9.323942 11.302016 0
+ 7.106073 3.096466 0
+ 7.709423 2.933387 0
+ 9.927292 11.138937 0
+ F4 8553090 0.000000 4 0
+ 18.783480 9.274067 0
+ 17.442799 0.880464 0
+ 16.825622 0.979043 0
+ 18.166303 9.372646 0
+ F4 8553090 0.000000 4 0
+ 27.162763 8.385975 0
+ 26.714204 -0.102181 0
+ 27.338333 -0.135164 0
+ 27.786893 8.352993 0
+ F4 8553090 0.000000 4 0
+ 36.213107 8.352993 0
+ 36.661667 -0.135164 0
+ 37.285796 -0.102181 0
+ 36.837237 8.385975 0
+ F4 8553090 0.000000 4 0
+ 45.216520 9.274067 0
+ 46.557201 0.880464 0
+ 47.174378 0.979043 0
+ 45.833697 9.372646 0
+ F4 8553090 0.000000 4 0
+ 54.072708 11.138937 0
+ 56.290577 2.933387 0
+ 56.893927 3.096466 0
+ 54.676058 11.302016 0
+ F4 8553090 0.000000 4 0
+ 62.695893 5.152604 0
+ 60.058368 12.705316 0
+ 60.648423 12.911373 0
+ 63.285948 5.358660 0
+ A3 0 0.000000 91.500000 32.000000 94.000000 0 160.750000 38.500000
+ A3 0 0.000000 88.500000 32.000000 94.000000 0 160.750000 38.500000
+ L3 4276545 0.000000 3.481759 12.336300 0 9.731744 10.415463 0
+ L3 4276545 0.000000 9.731744 10.415463 0 18.665274 8.534012 0
+ L3 4276545 0.000000 18.665274 8.534012 0 27.747344 7.604601 0
+ L3 4276545 0.000000 27.747344 7.604601 0 36.876786 7.637584 0
+ L3 4276545 0.000000 36.876786 7.637584 0 45.951903 8.632592 0
+ L3 4276545 0.000000 45.951903 8.632592 0 54.871605 10.578542 0
+ L3 4276545 0.000000 54.871605 10.578542 0 60.518241 12.336300 0
+ L3 4276545 0.000000 54.960772 10.292100 0 60.607408 12.049857 0
+ L3 4276545 0.000000 55.049940 10.005657 0 60.696576 11.763415 0
+ L3 4276545 0.000000 55.139107 9.719215 0 60.785743 11.476973 0
+ L3 4276545 0.000000 55.228275 9.432773 0 60.874911 11.190531 0
+ L3 4276545 0.000000 55.317442 9.146330 0 60.964078 10.904088 0
+ L3 4276545 0.000000 55.406610 8.859888 0 61.053246 10.617646 0
+ L3 4276545 0.000000 46.015848 8.339486 0 54.935550 10.285436 0
+ L3 4276545 0.000000 46.079793 8.046380 0 54.999495 9.992330 0
+ L3 4276545 0.000000 46.143738 7.753274 0 55.063439 9.699224 0
+ L3 4276545 0.000000 46.207683 7.460168 0 55.127384 9.406118 0
+ L3 4276545 0.000000 46.271628 7.167062 0 55.191329 9.113012 0
+ L3 4276545 0.000000 46.335572 6.873956 0 55.255274 8.819907 0
+ L3 4276545 0.000000 36.909482 7.339371 0 45.984600 8.334379 0
+ L3 4276545 0.000000 36.942179 7.041158 0 46.017296 8.036166 0
+ L3 4276545 0.000000 36.974875 6.742945 0 46.049993 7.737953 0
+ L3 4276545 0.000000 37.007571 6.444732 0 46.082689 7.439740 0
+ L3 4276545 0.000000 37.040268 6.146519 0 46.115385 7.141527 0
+ L3 4276545 0.000000 37.072964 5.848306 0 46.148082 6.843314 0
+ L3 4276545 0.000000 27.748427 7.304603 0 36.877869 7.337586 0
+ L3 4276545 0.000000 27.749511 7.004605 0 36.878953 7.037588 0
+ L3 4276545 0.000000 27.750595 6.704607 0 36.880037 6.737589 0
+ L3 4276545 0.000000 27.751679 6.404609 0 36.881121 6.437591 0
+ L3 4276545 0.000000 27.752763 6.104611 0 36.882205 6.137593 0
+ L3 4276545 0.000000 27.753846 5.804613 0 36.883288 5.837595 0
+ L3 4276545 0.000000 18.634733 8.235571 0 27.716803 7.306160 0
+ L3 4276545 0.000000 18.604192 7.937129 0 27.686262 7.007719 0
+ L3 4276545 0.000000 18.573651 7.638688 0 27.655721 6.709277 0
+ L3 4276545 0.000000 18.543110 7.340247 0 27.625180 6.410836 0
+ L3 4276545 0.000000 18.512569 7.041805 0 27.594639 6.112394 0
+ L3 4276545 0.000000 18.482028 6.743364 0 27.564098 5.813953 0
+ L3 4276545 0.000000 9.669919 10.121903 0 18.603448 8.240452 0
+ L3 4276545 0.000000 9.608094 9.828343 0 18.541623 7.946892 0
+ L3 4276545 0.000000 9.546268 9.534782 0 18.479797 7.653331 0
+ L3 4276545 0.000000 9.484443 9.241222 0 18.417972 7.359771 0
+ L3 4276545 0.000000 9.422617 8.947662 0 18.356146 7.066211 0
+ L3 4276545 0.000000 9.360792 8.654102 0 18.294321 6.772651 0
+ L3 4276545 0.000000 3.393627 12.049537 0 9.643612 10.128701 0
+ L3 4276545 0.000000 3.305495 11.762775 0 9.555480 9.841938 0
+ L3 4276545 0.000000 3.217363 11.476012 0 9.467348 9.555176 0
+ L3 4276545 0.000000 3.129231 11.189250 0 9.379216 9.268413 0
+ L3 4276545 0.000000 3.041099 10.902487 0 9.291084 8.981651 0
+ L3 4276545 0.000000 2.952967 10.615725 0 9.202952 8.694888 0
+ END$SEGS
+TURNOUT 361 0 0 0 0 Fn3 2 506.643721 679.348100 0 33.000000 "Ames Bridge 43-A B-43-A"
+ T4 20 506.643721 679.348100 303.000000 0 0.0 0.0 0.0 0.0 0 0 0 23.257194
+ T4 19 648.993399 629.830302 63.000000 0 0.0 0.0 0.0 0.0 0 0 0 23.257194
+ D 0.000000 0.000000
+ P "Normal" 1 2 3
+ S 0 0.000000 0.000000 0.000000 36.000000 0.000000
+ S 0 0.000000 36.000000 0.000000 84.000000 0.000000
+ C 0 0.000000 -72.000000 84.000000 72.000000 120.000000 60.000000
+ F4 8553090 0.000000 4 0
+ 0.312500 -4.250000 0
+ -0.250000 -4.250000 0
+ -0.250000 4.250000 0
+ 0.312500 4.250000 0
+ F4 8553090 0.000000 4 0
+ 9.812500 -4.250000 0
+ 9.250000 -4.250000 0
+ 9.250000 4.250000 0
+ 9.812500 4.250000 0
+ F4 8553090 0.000000 4 0
+ 38.312500 -4.250000 0
+ 37.750000 -4.250000 0
+ 37.750000 4.250000 0
+ 38.312500 4.250000 0
+ F4 8553090 0.000000 4 0
+ 37.562500 -4.250000 0
+ 37.000000 -4.250000 0
+ 37.000000 4.250000 0
+ 37.562500 4.250000 0
+ F4 8553090 0.000000 4 0
+ 36.812500 -4.250000 0
+ 36.250000 -4.250000 0
+ 36.250000 4.250000 0
+ 36.812500 4.250000 0
+ F4 8553090 0.000000 4 0
+ 81.687500 -4.250000 0
+ 82.250000 -4.250000 0
+ 82.250000 4.250000 0
+ 81.687500 4.250000 0
+ F4 8553090 0.000000 4 0
+ 82.437500 -4.250000 0
+ 83.000000 -4.250000 0
+ 83.000000 4.250000 0
+ 82.437500 4.250000 0
+ F4 8553090 0.000000 4 0
+ 83.187500 -4.250000 0
+ 83.750000 -4.250000 0
+ 83.750000 4.250000 0
+ 83.187500 4.250000 0
+ F4 8553090 0.000000 4 0
+ 36.250000 6.000000 0
+ 83.750000 6.000000 0
+ 83.750000 5.500000 0
+ 36.250000 5.500000 0
+ F4 8553090 0.000000 4 0
+ 36.250000 5.375000 0
+ 83.750000 5.375000 0
+ 83.750000 4.875000 0
+ 36.250000 4.875000 0
+ F4 8553090 0.000000 4 0
+ 36.250000 4.750000 0
+ 83.750000 4.750000 0
+ 83.750000 4.250000 0
+ 36.250000 4.250000 0
+ F4 8553090 0.000000 4 0
+ 36.250000 -6.000000 0
+ 83.750000 -6.000000 0
+ 83.750000 -5.500000 0
+ 36.250000 -5.500000 0
+ F4 8553090 0.000000 4 0
+ 36.250000 -5.375000 0
+ 83.750000 -5.375000 0
+ 83.750000 -4.875000 0
+ 36.250000 -4.875000 0
+ F4 8553090 0.000000 4 0
+ 36.250000 -4.750000 0
+ 83.750000 -4.750000 0
+ 83.750000 -4.250000 0
+ 36.250000 -4.250000 0
+ F4 8553090 0.000000 4 0
+ 28.812500 6.250000 0
+ 28.812500 -6.250000 0
+ 28.250000 -6.250000 0
+ 28.250000 6.250000 0
+ F4 8553090 0.000000 4 0
+ 19.312500 6.250000 0
+ 19.312500 -6.250000 0
+ 18.750000 -6.250000 0
+ 18.750000 6.250000 0
+ F4 8553090 0.000000 4 0
+ 144.179665 25.169127 0
+ 143.829500 24.728910 0
+ 137.177331 30.020285 0
+ 137.527495 30.460502 0
+ F4 8553090 0.000000 4 0
+ 149.777475 33.424794 0
+ 149.487766 32.942638 0
+ 142.201844 37.320462 0
+ 142.491553 37.802618 0
+ F4 8553090 0.000000 4 0
+ 130.605580 24.908148 0
+ 138.594151 16.635740 0
+ 138.189523 16.244995 0
+ 130.200951 24.517402 0
+ F4 8553090 0.000000 5 0
+ 100.815690 7.914469 0
+ 103.597792 -3.243931 0
+ 103.052000 -3.380012 0
+ 100.269899 7.778388 0
+ 100.269899 7.778388 0
+ F4 8553090 0.000000 5 0
+ 91.700000 6.700000 0
+ 92.250388 6.764628 0
+ 93.665428 -5.655020 0
+ 93.106544 -5.718697 0
+ 91.691503 6.700951 0
+ F4 8553090 0.000000 5 0
+ 109.036670 10.657618 0
+ 113.251434 -0.042184 0
+ 112.728074 -0.248341 0
+ 108.513310 10.451461 0
+ 108.513310 10.451461 0
+ F4 8553090 0.000000 5 0
+ 116.829265 14.450352 0
+ 122.404576 4.392225 0
+ 121.912602 4.119520 0
+ 116.337292 14.177646 0
+ 116.337292 14.177646 0
+ F4 8553090 0.000000 5 0
+ 124.060143 19.227776 0
+ 130.900605 9.983422 0
+ 130.448435 9.648834 0
+ 123.607973 18.893188 0
+ 123.607973 18.893188 0
+ F4 8553090 0.000000 5 0
+ 36.250000 1.500000 0
+ -0.250000 1.500000 0
+ -0.250000 1.875000 0
+ 36.250000 1.875000 0
+ 36.250000 1.875000 0
+ F4 8553090 0.000000 5 0
+ 36.250000 -1.875000 0
+ -0.250000 -1.875000 0
+ -0.250000 -1.500000 0
+ 36.250000 -1.500000 0
+ 36.250000 -1.500000 0
+ F4 8553090 0.000000 4 0
+ 83.728504 1.859743 0
+ 92.207245 2.356284 0
+ 92.229169 1.981925 0
+ 83.750428 1.485384 0
+ F4 8553090 0.000000 4 0
+ 83.772323 -1.888958 0
+ 92.590677 -1.373168 0
+ 92.568780 -0.998808 0
+ 83.750427 -1.514598 0
+ F4 8553090 0.000000 4 0
+ 101.228452 4.023564 0
+ 92.718065 2.418316 0
+ 92.787573 2.049814 0
+ 101.297960 3.655062 0
+ F4 8553090 0.000000 4 0
+ 93.196598 -1.299615 0
+ 102.093124 0.375634 0
+ 102.023730 0.744157 0
+ 93.127204 -0.931092 0
+ F4 8553090 0.000000 4 0
+ 101.725713 4.151532 0
+ 109.953765 6.853876 0
+ 110.070778 6.497599 0
+ 101.842725 3.795256 0
+ F4 8553090 0.000000 4 0
+ 111.287191 3.350017 0
+ 102.685440 0.527870 0
+ 102.568537 0.884183 0
+ 111.170288 3.706329 0
+ F4 8553090 0.000000 4 0
+ 110.430069 7.045655 0
+ 118.235003 10.798856 0
+ 118.397518 10.460900 0
+ 110.592584 6.707700 0
+ F4 8553090 0.000000 4 0
+ 120.014366 7.499020 0
+ 111.854568 3.578264 0
+ 111.692158 3.916269 0
+ 119.851955 7.837025 0
+ F4 8553090 0.000000 4 0
+ 118.682200 11.051165 0
+ 125.930470 15.791005 0
+ 126.135706 15.477153 0
+ 118.887436 10.737313 0
+ F4 8553090 0.000000 4 0
+ 128.125325 12.751653 0
+ 120.547097 7.799372 0
+ 120.341958 8.113287 0
+ 127.920185 13.065568 0
+ F4 8553090 0.000000 4 0
+ 126.340908 16.099526 0
+ 132.908495 21.744905 0
+ 133.152942 21.460527 0
+ 126.585354 15.815148 0
+ F4 8553090 0.000000 4 0
+ 135.481288 19.018041 0
+ 128.614295 13.118970 0
+ 128.369936 13.403424 0
+ 135.236929 19.302495 0
+ F4 8553090 0.000000 4 0
+ 133.275152 22.104360 0
+ 139.049682 28.558684 0
+ 139.329156 28.308645 0
+ 133.554626 21.854321 0
+ F4 8553090 0.000000 4 0
+ 141.956392 26.190966 0
+ 135.918130 19.446040 0
+ 135.638734 19.696165 0
+ 141.676995 26.441090 0
+ F4 8553090 0.000000 4 0
+ 139.366284 28.962922 0
+ 144.248954 36.115756 0
+ 144.558674 35.904335 0
+ 139.676003 28.751501 0
+ F4 8553090 0.000000 4 0
+ 147.439846 34.147695 0
+ 142.333632 26.672322 0
+ 142.023977 26.883838 0
+ 147.130191 34.359212 0
+ END$SEGS
+DRAW 362 0 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 4 0
+ 176.325000 553.950000 0
+ 176.325000 553.950000 0
+ 176.325000 553.950000 0
+ 176.325000 553.950000 0
+ END$SEGS
+DRAW 363 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 12632256 0.000000 11 0
+ 176.750000 553.769737 0
+ 182.625000 554.894737 0
+ 188.500000 555.457237 0
+ 193.825000 555.575000 0
+ 200.750000 555.144737 0
+ 206.312500 554.519737 0
+ 203.500000 557.519737 0
+ 196.500000 559.394737 0
+ 189.250000 559.644737 0
+ 183.375000 558.332237 0
+ 178.450000 556.075000 0
+ END$SEGS
+DRAW 364 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 0 169.416667 562.645833 0.000000 1 300.000000 "Retaining\n Wall"
+ END$SEGS
+DRAW 365 4 0 0 0 0.000000 0.000000 0 0.000000
+ F4 8421504 0.000000 9 0
+ 206.383929 545.741071 0
+ 201.633929 546.741071 0
+ 196.633929 547.116071 0
+ 192.883929 545.616071 0
+ 187.633929 544.116071 0
+ 193.383929 544.241071 0
+ 196.633929 545.366071 0
+ 199.883929 545.366071 0
+ 205.621419 543.453574 0
+ END$SEGS
+STRUCTURE 366 3 0 0 0 Fn3 2 183.395833 531.666667 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 367 3 0 0 0 Fn3 2 162.145833 531.416667 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 368 3 0 0 0 Fn3 2 145.395833 524.416667 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 369 3 0 0 0 Fn3 2 122.145833 529.666667 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 370 3 0 0 0 Fn3 2 131.645833 522.666667 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 371 3 0 0 0 Fn3 2 150.895833 533.166667 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 372 3 0 0 0 Fn3 2 173.145833 538.666667 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 373 3 0 0 0 Fn3 2 191.145833 539.166667 0 0.000000 "LgTrees 8"" Conifer Conif-8b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 -0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 -1.530590 0
+ -2.868879 -2.890948 0
+ -1.666157 -2.361308 0
+ -1.309300 -3.798814 0
+ -0.405699 -2.507955 0
+ 0.331935 -3.909459 0
+ 1.455693 -2.445564 0
+ 2.637162 -3.310245 0
+ 2.173728 -2.085455 0
+ 2.804635 -1.057803 0
+ 3.872987 -0.286888 0
+ 3.100597 0.430332 0
+ 3.828851 1.467542 0
+ 2.618600 1.530590 0
+ 2.383377 2.063386 0
+ 2.350274 3.255075 0
+ 1.383063 3.079621 0
+ 0.682311 3.835696 0
+ -0.286888 3.133699 0
+ -0.529639 3.895055 0
+ -1.161773 2.987417 0
+ -2.803008 3.411556 0
+ -2.341987 2.139138 0
+ -3.740577 1.136518 0
+ -3.034392 0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 -0.387258 0
+ -3.688169 -1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 -2.581991 0
+ 1.670543 -3.860089 0
+ 2.063386 -2.901982 0
+ 1.732362 -1.610986 0
+ 3.049146 -1.670543 0
+ 3.924964 -0.956913 0
+ 2.383377 0.077239 0
+ 3.795213 1.621886 0
+ 2.740987 1.865169 0
+ 1.953045 1.688225 0
+ 1.908908 2.703367 0
+ 1.735418 3.681681 0
+ 0.518605 2.383377 0
+ -0.430332 2.515787 0
+ -0.651015 3.023357 0
+ -1.475916 3.649244 0
+ -1.467542 1.930976 0
+ -3.389742 2.384172 0
+ -3.000489 1.038007 0
+ -1.798567 0.286888 0
+ -3.162678 0.259502 0
+ -3.811432 -0.648754 0
+ -1.235825 -0.849630 0
+ -3.243772 -2.513923 0
+ -0.948937 -2.228899 0
+ -1.000000 -4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 1.098375 0
+ -1.497784 0.684701 0
+ -0.870141 0.442203 0
+ -1.269550 0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 -0.584849 0
+ -0.912935 -0.656172 0
+ -0.570584 -0.342351 0
+ -1.198227 -0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 1.383667 0
+ -0.969993 1.840135 0
+ -1.440725 2.068368 0
+ -1.312344 1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 0.014265 0
+ -2.182485 0.156911 0
+ -1.512049 -0.057058 0
+ -2.196750 -0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 1.811605 0
+ -1.968516 1.469255 0
+ -1.440725 1.355138 0
+ -1.740282 1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 -1.882928 0
+ -1.497784 -1.412196 0
+ -0.969993 -1.212492 0
+ -1.483519 -1.726018 0
+ L3 26624 -0.001500 -2.284069 1.346166 0 -3.012323 1.313064 0
+ L3 26624 -0.001500 -3.166801 1.930976 0 -2.670265 1.809601 0
+ L3 26624 -0.001500 -1.015142 3.255075 0 -0.937903 2.339240 0
+ L3 26624 -0.001500 -0.937903 2.339240 0 -1.489610 2.990255 0
+ L3 26624 -0.001500 1.313064 3.288177 0 1.401337 2.515787 0
+ L3 26624 -0.001500 1.401337 2.515787 0 1.820635 2.990255 0
+ L3 26624 -0.001500 3.155767 1.699259 0 2.129591 1.224791 0
+ L3 26624 -0.001500 2.129591 1.224791 0 3.155767 0.982039 0
+ L3 26624 -0.001500 2.868879 -0.695152 0 2.096489 -0.706186 0
+ L3 26624 -0.001500 2.096489 -0.706186 0 2.736470 -1.566849 0
+ L3 26624 -0.001500 1.964079 -2.604060 0 1.114449 -1.864772 0
+ L3 26624 -0.001500 1.114449 -1.864772 0 1.136518 -3.210938 0
+ L3 26624 -0.001500 -0.397229 -3.431621 0 -0.408264 -2.295103 0
+ L3 26624 -0.001500 -0.408264 -2.295103 0 -0.959971 -2.769572 0
+ L3 26624 -0.001500 -0.529639 2.427513 0 -0.662049 1.864772 0
+ L3 26624 -0.001500 0.893766 2.570957 0 0.904800 1.919942 0
+ L3 26624 -0.001500 1.721328 2.206830 0 1.202722 1.776498 0
+ L3 26624 -0.001500 1.997181 1.688225 0 1.434440 0.882732 0
+ L3 26624 -0.001500 2.581991 0.463434 0 1.886840 0.651015 0
+ L3 26624 -0.001500 2.648196 -0.187581 0 1.500645 -0.353093 0
+ L3 26624 -0.001500 1.610986 -0.816527 0 2.151660 -1.588918 0
+ L3 26624 -0.001500 1.721328 -1.809601 0 0.849630 -1.169620 0
+ L3 26624 -0.001500 0.684117 -1.533747 0 0.463434 -2.206830 0
+ L3 26624 -0.001500 0.033102 -2.195796 0 -0.121376 -1.313064 0
+ L3 26624 -0.001500 -0.893766 -1.997181 0 -0.651015 -1.125483 0
+ L3 26624 -0.001500 -1.688225 0.319990 0 -0.882732 -0.077239 0
+ L3 26624 -0.001500 -0.717220 1.092381 0 -0.364127 0.397229 0
+ L3 26624 -0.001500 0.551708 1.633054 0 0.154478 0.882732 0
+ L3 26624 -0.001500 1.059279 1.202722 0 0.595844 0.717220 0
+ L3 26624 -0.001500 1.467542 0.319990 0 0.584810 0.176546 0
+ L3 26624 -0.001500 0.948937 -0.584810 0 0.408264 -0.253785 0
+ L3 26624 -0.001500 0.110342 -0.827561 0 0.143444 -0.408264 0
+ L3 26624 -0.001500 -0.165512 -0.275854 0 -0.507571 -0.739288 0
+ L3 26624 -0.001500 -0.673083 0.286888 0 -0.209649 0.022068 0
+ L3 26624 -0.001500 0.353093 0.562742 0 0.132410 0.121376 0
+ L3 26624 -0.001500 -2.011310 0.713230 0 -2.553365 0.984258 0
+ L3 26624 -0.001500 -2.510571 -0.584849 0 -1.825870 -0.370880 0
+ L3 26624 -0.001500 -1.982781 -2.125427 0 -1.369402 -1.939987 0
+ END$SEGS
+STRUCTURE 374 3 0 0 0 Fn3 2 202.145833 539.416667 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 375 3 0 0 0 Fn3 2 193.895833 528.166667 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 376 3 0 0 0 Fn3 2 172.395833 528.166667 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 377 3 0 0 0 Fn3 2 135.395833 532.166667 0 0.000000 "LgTrees 10"" Conifer Conif-10a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 1.913238 0
+ -3.586099 3.613685 0
+ -2.082696 2.951635 0
+ -1.636625 4.748517 0
+ -0.507123 3.134943 0
+ 0.414919 4.886824 0
+ 1.819616 3.056955 0
+ 3.296453 4.137807 0
+ 2.717160 2.606818 0
+ 3.505793 1.322254 0
+ 4.841234 0.358610 0
+ 3.875746 -0.537915 0
+ 4.786063 -1.834428 0
+ 3.273250 -1.913238 0
+ 2.979221 -2.579233 0
+ 2.937843 -4.068843 0
+ 1.728829 -3.849526 0
+ 0.852889 -4.794619 0
+ -0.358610 -3.917124 0
+ -0.662049 -4.868819 0
+ -1.452216 -3.734271 0
+ -3.503760 -4.264445 0
+ -2.927484 -2.673922 0
+ -4.675722 -1.420647 0
+ -3.792990 -0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 0.484072 0
+ -4.610211 1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 3.227489 0
+ 2.088178 4.825111 0
+ 2.579233 3.627477 0
+ 2.165452 2.013733 0
+ 3.811432 2.088178 0
+ 4.906205 1.196141 0
+ 2.979221 -0.096549 0
+ 4.744017 -2.027358 0
+ 3.426234 -2.331461 0
+ 2.441306 -2.110281 0
+ 2.386135 -3.379209 0
+ 2.169273 -4.602102 0
+ 0.648256 -2.979221 0
+ -0.537915 -3.144733 0
+ -0.813769 -3.779197 0
+ -1.844895 -4.561554 0
+ -1.834428 -2.413721 0
+ -4.237177 -2.980216 0
+ -3.750611 -1.297509 0
+ -2.248208 -0.358610 0
+ -3.953347 -0.324377 0
+ -4.764290 0.810943 0
+ -1.544781 1.062037 0
+ -4.054715 3.142404 0
+ -1.186171 2.786123 0
+ -1.250000 5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 -1.372969 0
+ -1.872230 -0.855877 0
+ -1.087676 -0.552754 0
+ -1.586938 -1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 0.731061 0
+ -1.141169 0.820215 0
+ -0.713230 0.427938 0
+ -1.497784 0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 -1.729584 0
+ -1.212492 -2.300168 0
+ -1.800907 -2.585460 0
+ -1.640430 -2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 -0.017831 0
+ -2.728106 -0.196138 0
+ -1.890061 0.071323 0
+ -2.745937 0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 -2.264507 0
+ -2.460645 -1.836568 0
+ -1.800907 -1.693922 0
+ -2.175353 -2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 2.353660 0
+ -1.872230 1.765245 0
+ -1.212492 1.515615 0
+ -1.854399 2.157522 0
+ L3 26624 -0.001500 -2.855087 -1.682708 0 -3.765404 -1.641330 0
+ L3 26624 -0.001500 -3.958502 -2.413721 0 -3.337831 -2.262001 0
+ L3 26624 -0.001500 -1.268927 -4.068843 0 -1.172379 -2.924050 0
+ L3 26624 -0.001500 -1.172379 -2.924050 0 -1.862013 -3.737819 0
+ L3 26624 -0.001500 1.641330 -4.110221 0 1.751672 -3.144733 0
+ L3 26624 -0.001500 1.751672 -3.144733 0 2.275794 -3.737819 0
+ L3 26624 -0.001500 3.944709 -2.124074 0 2.661989 -1.530989 0
+ L3 26624 -0.001500 2.661989 -1.530989 0 3.944709 -1.227549 0
+ L3 26624 -0.001500 3.586099 0.868939 0 2.620611 0.882732 0
+ L3 26624 -0.001500 2.620611 0.882732 0 3.420587 1.958562 0
+ L3 26624 -0.001500 2.455099 3.255075 0 1.393062 2.330964 0
+ L3 26624 -0.001500 1.393062 2.330964 0 1.420647 4.013673 0
+ L3 26624 -0.001500 -0.496537 4.289526 0 -0.510330 2.868879 0
+ L3 26624 -0.001500 -0.510330 2.868879 0 -1.199964 3.461965 0
+ L3 26624 -0.001500 -0.662049 -3.034392 0 -0.827561 -2.330964 0
+ L3 26624 -0.001500 1.117208 -3.213697 0 1.131001 -2.399928 0
+ L3 26624 -0.001500 2.151660 -2.758538 0 1.503403 -2.220623 0
+ L3 26624 -0.001500 2.496477 -2.110281 0 1.793050 -1.103415 0
+ L3 26624 -0.001500 3.227489 -0.579293 0 2.358550 -0.813769 0
+ L3 26624 -0.001500 3.310245 0.234476 0 1.875806 0.441366 0
+ L3 26624 -0.001500 2.013733 1.020659 0 2.689574 1.986147 0
+ L3 26624 -0.001500 2.151660 2.262001 0 1.062037 1.462025 0
+ L3 26624 -0.001500 0.855147 1.917184 0 0.579293 2.758538 0
+ L3 26624 -0.001500 0.041378 2.744745 0 -0.151720 1.641330 0
+ L3 26624 -0.001500 -1.117208 2.496477 0 -0.813769 1.406854 0
+ L3 26624 -0.001500 -2.110281 -0.399988 0 -1.103415 0.096549 0
+ L3 26624 -0.001500 -0.896525 -1.365476 0 -0.455159 -0.496537 0
+ L3 26624 -0.001500 0.689634 -2.041318 0 0.193098 -1.103415 0
+ L3 26624 -0.001500 1.324098 -1.503403 0 0.744805 -0.896525 0
+ L3 26624 -0.001500 1.834428 -0.399988 0 0.731013 -0.220683 0
+ L3 26624 -0.001500 1.186171 0.731013 0 0.510330 0.317232 0
+ L3 26624 -0.001500 0.137927 1.034452 0 0.179305 0.510330 0
+ L3 26624 -0.001500 -0.206890 0.344817 0 -0.634464 0.924110 0
+ L3 26624 -0.001500 -0.841354 -0.358610 0 -0.262061 -0.027585 0
+ L3 26624 -0.001500 0.441366 -0.703427 0 0.165512 -0.151720 0
+ L3 26624 -0.001500 -2.514137 -0.891538 0 -3.191706 -1.230323 0
+ L3 26624 -0.001500 -3.138214 0.731061 0 -2.282337 0.463600 0
+ L3 26624 -0.001500 -2.478476 2.656783 0 -1.711753 2.424984 0
+ END$SEGS
+STRUCTURE 378 3 0 0 0 Fn3 2 105.395833 526.916667 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 379 3 0 0 0 Fn3 2 119.145833 520.416667 0 0.000000 "LgTrees 10"" Conifer Conif-10b"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 4.644958 -1.253643 -0.067764 0
+ F4 26624 0.000000 28 0
+ -3.181046 -1.913238 0
+ -3.586099 -3.613685 0
+ -2.082696 -2.951635 0
+ -1.636625 -4.748517 0
+ -0.507123 -3.134943 0
+ 0.414919 -4.886824 0
+ 1.819616 -3.056955 0
+ 3.296453 -4.137807 0
+ 2.717160 -2.606818 0
+ 3.505793 -1.322254 0
+ 4.841234 -0.358610 0
+ 3.875746 0.537915 0
+ 4.786063 1.834428 0
+ 3.273250 1.913238 0
+ 2.979221 2.579233 0
+ 2.937843 4.068843 0
+ 1.728829 3.849526 0
+ 0.852889 4.794619 0
+ -0.358610 3.917124 0
+ -0.662049 4.868819 0
+ -1.452216 3.734271 0
+ -3.503760 4.264445 0
+ -2.927484 2.673922 0
+ -4.675722 1.420647 0
+ -3.792990 0.510330 0
+ -4.951575 0.000000 0
+ -3.365454 -0.484072 0
+ -4.610211 -1.867135 0
+ F4 11206591 0.000000 26 0
+ 0.689634 -3.227489 0
+ 2.088178 -4.825111 0
+ 2.579233 -3.627477 0
+ 2.165452 -2.013733 0
+ 3.811432 -2.088178 0
+ 4.906205 -1.196141 0
+ 2.979221 0.096549 0
+ 4.744017 2.027358 0
+ 3.426234 2.331461 0
+ 2.441306 2.110281 0
+ 2.386135 3.379209 0
+ 2.169273 4.602102 0
+ 0.648256 2.979221 0
+ -0.537915 3.144733 0
+ -0.813769 3.779197 0
+ -1.844895 4.561554 0
+ -1.834428 2.413721 0
+ -4.237177 2.980216 0
+ -3.750611 1.297509 0
+ -2.248208 0.358610 0
+ -3.953347 0.324377 0
+ -4.764290 -0.810943 0
+ -1.544781 -1.062037 0
+ -4.054715 -3.142404 0
+ -1.186171 -2.786123 0
+ -1.250000 -5.000000 0
+ F4 26624 0.000000 4 0
+ -2.317999 1.372969 0
+ -1.872230 0.855877 0
+ -1.087676 0.552754 0
+ -1.586938 1.194661 0
+ F4 26624 0.000000 4 0
+ -2.104030 -0.731061 0
+ -1.141169 -0.820215 0
+ -0.713230 -0.427938 0
+ -1.497784 -0.445769 0
+ F4 26624 0.000000 4 0
+ -1.052015 1.729584 0
+ -1.212492 2.300168 0
+ -1.800907 2.585460 0
+ -1.640430 2.121861 0
+ F4 26624 0.000000 4 0
+ -3.494829 0.017831 0
+ -2.728106 0.196138 0
+ -1.890061 -0.071323 0
+ -2.745937 -0.213969 0
+ F4 26624 0.000000 4 0
+ -2.888583 2.264507 0
+ -2.460645 1.836568 0
+ -1.800907 1.693922 0
+ -2.175353 2.121861 0
+ F4 26624 0.000000 4 0
+ -2.442814 -2.353660 0
+ -1.872230 -1.765245 0
+ -1.212492 -1.515615 0
+ -1.854399 -2.157522 0
+ L3 26624 -0.001500 -2.855087 1.682708 0 -3.765404 1.641330 0
+ L3 26624 -0.001500 -3.958502 2.413721 0 -3.337831 2.262001 0
+ L3 26624 -0.001500 -1.268927 4.068843 0 -1.172379 2.924050 0
+ L3 26624 -0.001500 -1.172379 2.924050 0 -1.862013 3.737819 0
+ L3 26624 -0.001500 1.641330 4.110221 0 1.751672 3.144733 0
+ L3 26624 -0.001500 1.751672 3.144733 0 2.275794 3.737819 0
+ L3 26624 -0.001500 3.944709 2.124074 0 2.661989 1.530989 0
+ L3 26624 -0.001500 2.661989 1.530989 0 3.944709 1.227549 0
+ L3 26624 -0.001500 3.586099 -0.868939 0 2.620611 -0.882732 0
+ L3 26624 -0.001500 2.620611 -0.882732 0 3.420587 -1.958562 0
+ L3 26624 -0.001500 2.455099 -3.255075 0 1.393062 -2.330964 0
+ L3 26624 -0.001500 1.393062 -2.330964 0 1.420647 -4.013673 0
+ L3 26624 -0.001500 -0.496537 -4.289526 0 -0.510330 -2.868879 0
+ L3 26624 -0.001500 -0.510330 -2.868879 0 -1.199964 -3.461965 0
+ L3 26624 -0.001500 -0.662049 3.034392 0 -0.827561 2.330964 0
+ L3 26624 -0.001500 1.117208 3.213697 0 1.131001 2.399928 0
+ L3 26624 -0.001500 2.151660 2.758538 0 1.503403 2.220623 0
+ L3 26624 -0.001500 2.496477 2.110281 0 1.793050 1.103415 0
+ L3 26624 -0.001500 3.227489 0.579293 0 2.358550 0.813769 0
+ L3 26624 -0.001500 3.310245 -0.234476 0 1.875806 -0.441366 0
+ L3 26624 -0.001500 2.013733 -1.020659 0 2.689574 -1.986147 0
+ L3 26624 -0.001500 2.151660 -2.262001 0 1.062037 -1.462025 0
+ L3 26624 -0.001500 0.855147 -1.917184 0 0.579293 -2.758538 0
+ L3 26624 -0.001500 0.041378 -2.744745 0 -0.151720 -1.641330 0
+ L3 26624 -0.001500 -1.117208 -2.496477 0 -0.813769 -1.406854 0
+ L3 26624 -0.001500 -2.110281 0.399988 0 -1.103415 -0.096549 0
+ L3 26624 -0.001500 -0.896525 1.365476 0 -0.455159 0.496537 0
+ L3 26624 -0.001500 0.689634 2.041318 0 0.193098 1.103415 0
+ L3 26624 -0.001500 1.324098 1.503403 0 0.744805 0.896525 0
+ L3 26624 -0.001500 1.834428 0.399988 0 0.731013 0.220683 0
+ L3 26624 -0.001500 1.186171 -0.731013 0 0.510330 -0.317232 0
+ L3 26624 -0.001500 0.137927 -1.034452 0 0.179305 -0.510330 0
+ L3 26624 -0.001500 -0.206890 -0.344817 0 -0.634464 -0.924110 0
+ L3 26624 -0.001500 -0.841354 0.358610 0 -0.262061 0.027585 0
+ L3 26624 -0.001500 0.441366 0.703427 0 0.165512 0.151720 0
+ L3 26624 -0.001500 -2.514137 0.891538 0 -3.191706 1.230323 0
+ L3 26624 -0.001500 -3.138214 -0.731061 0 -2.282337 -0.463600 0
+ L3 26624 -0.001500 -2.478476 -2.656783 0 -1.711753 -2.424984 0
+ END$SEGS
+STRUCTURE 380 3 0 0 0 Fn3 2 182.895833 520.166667 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 381 3 0 0 0 Fn3 2 156.145833 523.166667 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 382 3 0 0 0 Fn3 2 94.895833 520.916667 0 0.000000 "LgTrees 8"" Conifer Conif-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -2.544836 1.530590 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.309300 3.798814 0
+ -0.405699 2.507955 0
+ 0.331935 3.909459 0
+ 1.455693 2.445564 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 2.804635 1.057803 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 2.618600 -1.530590 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.383063 -3.079621 0
+ 0.682311 -3.835696 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -1.161773 -2.987417 0
+ -2.803008 -3.411556 0
+ -2.341987 -2.139138 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -2.692363 0.387258 0
+ -3.688169 1.493708 0
+ F4 11206591 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.670543 3.860089 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.049146 1.670543 0
+ 3.924964 0.956913 0
+ 2.383377 -0.077239 0
+ 3.795213 -1.621886 0
+ 2.740987 -1.865169 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.735418 -3.681681 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.475916 -3.649244 0
+ -1.467542 -1.930976 0
+ -3.389742 -2.384172 0
+ -3.000489 -1.038007 0
+ -1.798567 -0.286888 0
+ -3.162678 -0.259502 0
+ -3.811432 0.648754 0
+ -1.235825 0.849630 0
+ -3.243772 2.513923 0
+ -0.948937 2.228899 0
+ -1.000000 4.000000 0
+ F4 26624 0.000000 4 0
+ -1.854399 -1.098375 0
+ -1.497784 -0.684701 0
+ -0.870141 -0.442203 0
+ -1.269550 -0.955729 0
+ F4 26624 0.000000 4 0
+ -1.683224 0.584849 0
+ -0.912935 0.656172 0
+ -0.570584 0.342351 0
+ -1.198227 0.356615 0
+ F4 26624 0.000000 4 0
+ -0.841612 -1.383667 0
+ -0.969993 -1.840135 0
+ -1.440725 -2.068368 0
+ -1.312344 -1.697488 0
+ F4 26624 0.000000 4 0
+ -2.795863 -0.014265 0
+ -2.182485 -0.156911 0
+ -1.512049 0.057058 0
+ -2.196750 0.171175 0
+ F4 26624 0.000000 4 0
+ -2.310867 -1.811605 0
+ -1.968516 -1.469255 0
+ -1.440725 -1.355138 0
+ -1.740282 -1.697488 0
+ F4 26624 0.000000 4 0
+ -1.954251 1.882928 0
+ -1.497784 1.412196 0
+ -0.969993 1.212492 0
+ -1.483519 1.726018 0
+ L3 26624 -0.001500 -2.284069 -1.346166 0 -3.012323 -1.313064 0
+ L3 26624 -0.001500 -3.166801 -1.930976 0 -2.670265 -1.809601 0
+ L3 26624 -0.001500 -1.015142 -3.255075 0 -0.937903 -2.339240 0
+ L3 26624 -0.001500 -0.937903 -2.339240 0 -1.489610 -2.990255 0
+ L3 26624 -0.001500 1.313064 -3.288177 0 1.401337 -2.515787 0
+ L3 26624 -0.001500 1.401337 -2.515787 0 1.820635 -2.990255 0
+ L3 26624 -0.001500 3.155767 -1.699259 0 2.129591 -1.224791 0
+ L3 26624 -0.001500 2.129591 -1.224791 0 3.155767 -0.982039 0
+ L3 26624 -0.001500 2.868879 0.695152 0 2.096489 0.706186 0
+ L3 26624 -0.001500 2.096489 0.706186 0 2.736470 1.566849 0
+ L3 26624 -0.001500 1.964079 2.604060 0 1.114449 1.864772 0
+ L3 26624 -0.001500 1.114449 1.864772 0 1.136518 3.210938 0
+ L3 26624 -0.001500 -0.397229 3.431621 0 -0.408264 2.295103 0
+ L3 26624 -0.001500 -0.408264 2.295103 0 -0.959971 2.769572 0
+ L3 26624 -0.001500 -0.529639 -2.427513 0 -0.662049 -1.864772 0
+ L3 26624 -0.001500 0.893766 -2.570957 0 0.904800 -1.919942 0
+ L3 26624 -0.001500 1.721328 -2.206830 0 1.202722 -1.776498 0
+ L3 26624 -0.001500 1.997181 -1.688225 0 1.434440 -0.882732 0
+ L3 26624 -0.001500 2.581991 -0.463434 0 1.886840 -0.651015 0
+ L3 26624 -0.001500 2.648196 0.187581 0 1.500645 0.353093 0
+ L3 26624 -0.001500 1.610986 0.816527 0 2.151660 1.588918 0
+ L3 26624 -0.001500 1.721328 1.809601 0 0.849630 1.169620 0
+ L3 26624 -0.001500 0.684117 1.533747 0 0.463434 2.206830 0
+ L3 26624 -0.001500 0.033102 2.195796 0 -0.121376 1.313064 0
+ L3 26624 -0.001500 -0.893766 1.997181 0 -0.651015 1.125483 0
+ L3 26624 -0.001500 -1.688225 -0.319990 0 -0.882732 0.077239 0
+ L3 26624 -0.001500 -0.717220 -1.092381 0 -0.364127 -0.397229 0
+ L3 26624 -0.001500 0.551708 -1.633054 0 0.154478 -0.882732 0
+ L3 26624 -0.001500 1.059279 -1.202722 0 0.595844 -0.717220 0
+ L3 26624 -0.001500 1.467542 -0.319990 0 0.584810 -0.176546 0
+ L3 26624 -0.001500 0.948937 0.584810 0 0.408264 0.253785 0
+ L3 26624 -0.001500 0.110342 0.827561 0 0.143444 0.408264 0
+ L3 26624 -0.001500 -0.165512 0.275854 0 -0.507571 0.739288 0
+ L3 26624 -0.001500 -0.673083 -0.286888 0 -0.209649 -0.022068 0
+ L3 26624 -0.001500 0.353093 -0.562742 0 0.132410 -0.121376 0
+ L3 26624 -0.001500 -2.011310 -0.713230 0 -2.553365 -0.984258 0
+ L3 26624 -0.001500 -2.510571 0.584849 0 -1.825870 0.370880 0
+ L3 26624 -0.001500 -1.982781 2.125427 0 -1.369402 1.939987 0
+ END$SEGS
+STRUCTURE 383 3 0 0 0 Fn3 2 505.000000 535.348958 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 384 3 0 0 0 Fn3 2 506.000000 528.348958 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 385 3 0 0 0 Fn3 2 495.500000 535.848958 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 386 3 0 0 0 Fn3 2 470.000000 542.348958 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 387 3 0 0 0 Fn3 2 459.000000 541.348958 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 388 3 0 0 0 Fn3 2 446.500000 577.348958 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 389 3 0 0 0 Fn3 2 432.500000 589.848958 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 390 3 0 0 0 Fn3 2 408.000000 590.348958 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 391 3 0 0 0 Fn3 2 468.500000 540.348958 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 392 3 0 0 0 Fn3 2 490.500000 534.348958 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 393 3 0 0 0 Fn3 2 499.500000 530.348958 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 394 3 0 0 0 Fn3 2 454.500000 545.848958 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 395 3 0 0 0 Fn3 2 439.500000 583.348958 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 396 3 0 0 0 Fn3 2 392.500000 589.848958 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 397 3 0 0 0 Fn3 2 389.500000 599.848958 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 398 3 0 0 0 Fn3 2 420.500000 593.348958 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 399 3 0 0 0 Fn3 2 479.000000 542.348958 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 400 3 0 0 0 Fn3 2 461.500000 534.348958 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 401 3 0 0 0 Fn3 2 449.500000 540.348958 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 402 3 0 0 0 Fn3 2 476.500000 535.348958 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 403 3 0 0 0 Fn3 2 502.500000 521.348958 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 404 3 0 0 0 Fn3 2 513.500000 518.348958 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 405 3 0 0 0 Fn3 2 540.500000 530.348958 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 406 3 0 0 0 Fn3 2 550.000000 525.348958 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 407 3 0 0 0 Fn3 2 556.000000 531.348958 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 408 3 0 0 0 Fn3 2 571.000000 516.848958 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 409 3 0 0 0 Fn3 2 559.000000 519.348958 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 410 3 0 0 0 Fn3 2 576.500000 508.848958 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 411 3 0 0 0 Fn3 2 577.000000 529.848958 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 412 3 0 0 0 Fn3 2 598.500000 514.848958 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 413 3 0 0 0 Fn3 2 528.000000 505.348958 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 414 3 0 0 0 Fn3 2 541.000000 489.348958 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 415 3 0 0 0 Fn3 2 552.500000 456.348958 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 416 3 0 0 0 Fn3 2 528.000000 496.848958 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 417 3 0 0 0 Fn3 2 548.000000 532.348958 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 418 3 0 0 0 Fn3 2 532.000000 489.848958 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 419 3 0 0 0 Fn3 2 504.500000 512.348958 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 420 3 0 0 0 Fn3 2 495.500000 524.848958 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 421 3 0 0 0 Fn3 2 472.000000 528.348958 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 422 3 0 0 0 Fn3 2 451.500000 532.848958 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 423 3 0 0 0 Fn3 2 461.000000 529.848958 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 424 3 0 0 0 Fn3 2 493.000000 509.848958 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 425 3 0 0 0 Fn3 2 505.000000 501.848958 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 426 3 0 0 0 Fn3 2 483.500000 527.348958 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 427 3 0 0 0 Fn3 2 520.500000 497.348958 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 428 3 0 0 0 Fn3 2 462.500000 522.848958 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 429 3 0 0 0 Fn3 2 448.000000 525.348958 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 430 3 0 0 0 Fn3 2 438.000000 573.348958 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 431 3 0 0 0 Fn3 2 403.500000 575.348958 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 432 3 0 0 0 Fn3 2 387.500000 584.348958 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 433 3 0 0 0 Fn3 2 364.000000 604.348958 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 434 3 0 0 0 Fn3 2 376.500000 612.848958 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 435 3 0 0 0 Fn3 2 398.500000 607.348958 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 436 3 0 0 0 Fn3 2 387.000000 609.848958 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 437 3 0 0 0 Fn3 2 415.000000 603.348958 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 438 3 0 0 0 Fn3 2 434.500000 599.848958 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 439 3 0 0 0 Fn3 2 446.500000 592.348958 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 440 3 0 0 0 Fn3 2 427.500000 605.348958 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 441 3 0 0 0 Fn3 2 410.500000 614.348958 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 442 3 0 0 0 Fn3 2 457.000000 587.848958 0 0.000000 "LgTrees 8"" Shade Shade-8a"
+ D 0.000000 0.000000
+ G3 8553090 0.000000 3.715967 -1.002915 0.054212 0
+ F4 26624 0.000000 28 0
+ -3.442655 1.853737 0
+ -2.868879 2.890948 0
+ -1.666157 2.361308 0
+ -1.313064 3.696441 0
+ -0.518605 4.038499 0
+ 0.375161 2.935084 0
+ 1.401337 3.895055 0
+ 2.637162 3.310245 0
+ 2.173728 2.085455 0
+ 3.652304 1.677191 0
+ 3.872987 0.286888 0
+ 3.100597 -0.430332 0
+ 3.828851 -1.467542 0
+ 3.277143 -2.394411 0
+ 2.383377 -2.063386 0
+ 2.350274 -3.255075 0
+ 1.180654 -3.872987 0
+ 0.695152 -3.122665 0
+ -0.286888 -3.133699 0
+ -0.529639 -3.895055 0
+ -2.041318 -3.409553 0
+ -1.853737 -2.515787 0
+ -3.100597 -2.427513 0
+ -3.740577 -1.136518 0
+ -3.034392 -0.408264 0
+ -3.961260 0.000000 0
+ -3.718509 0.926869 0
+ -2.736470 1.279962 0
+ F4 65280 0.000000 26 0
+ 0.551708 2.581991 0
+ 1.324098 3.354382 0
+ 2.063386 2.901982 0
+ 1.732362 1.610986 0
+ 3.210938 1.202722 0
+ 3.310245 0.562742 0
+ 2.383377 -0.077239 0
+ 3.188870 -1.290996 0
+ 2.835777 -1.710293 0
+ 1.953045 -1.688225 0
+ 1.908908 -2.703367 0
+ 1.147552 -3.122665 0
+ 0.518605 -2.383377 0
+ -0.430332 -2.515787 0
+ -0.651015 -3.023357 0
+ -1.456508 -2.813709 0
+ -1.467542 -1.930976 0
+ -2.140625 -1.908908 0
+ -2.581991 -1.026176 0
+ -1.798567 -0.286888 0
+ -2.537855 0.099307 0
+ -2.416479 0.628947 0
+ -1.235825 0.849630 0
+ -1.688225 1.655123 0
+ -0.948937 2.228899 0
+ -0.651015 2.879914 0
+ L3 65280 -0.001500 -0.700000 3.400000 0 -0.300000 3.100000 0
+ L3 65280 -0.001500 -1.000000 3.200000 0 -1.100000 2.700000 0
+ L3 65280 -0.001500 -2.300000 2.100000 0 -1.600000 2.100000 0
+ L3 65280 -0.001500 -2.800000 1.900000 0 -2.500000 1.600000 0
+ L3 65280 -0.001500 -2.100000 1.700000 0 -1.700000 1.400000 0
+ L3 65280 -0.001500 -1.900000 1.100000 0 -2.500000 1.000000 0
+ L3 65280 -0.001500 -3.400000 0.800000 0 -2.700000 0.800000 0
+ L3 65280 -0.001500 -3.400000 0.200000 0 -2.800000 0.500000 0
+ L3 65280 -0.001500 -2.300000 -0.300000 0 -2.800000 -0.200000 0
+ L3 65280 -0.001500 -2.700000 -0.700000 0 -3.400000 -1.100000 0
+ L3 65280 -0.001500 -3.100000 -1.500000 0 -2.600000 -1.600000 0
+ L3 65280 -0.001500 -2.400000 -2.300000 0 -2.200000 -2.000000 0
+ L3 65280 -0.001500 -1.500000 -3.000000 0 -1.700000 -3.300000 0
+ L3 65280 -0.001500 -0.900000 -3.200000 0 -0.700000 -3.500000 0
+ L3 65280 -0.001500 -0.100000 -2.700000 0 0.000000 -3.000000 0
+ L3 65280 -0.001500 0.500000 -2.700000 0 0.200000 -2.900000 0
+ L3 65280 -0.001500 1.300000 -3.200000 0 1.200000 -3.600000 0
+ L3 65280 -0.001500 1.900000 -3.000000 0 2.200000 -3.100000 0
+ L3 65280 -0.001500 3.500000 -1.400000 0 3.200000 -1.500000 0
+ L3 65280 -0.001500 3.000000 -1.900000 0 3.200000 -2.200000 0
+ L3 65280 -0.001500 3.500000 0.300000 0 3.100000 0.200000 0
+ L3 65280 -0.001500 -2.800000 2.500000 0 -2.600000 2.100000 0
+ L3 65280 -0.001500 -3.200000 1.900000 0 -2.900000 2.100000 0
+ F4 26624 0.000000 4 0
+ 1.540578 1.583372 0
+ 0.912935 1.397932 0
+ 0.841612 0.927200 0
+ 1.255286 1.098375 0
+ F4 26624 0.000000 5 0
+ -0.599114 1.897193 0
+ -0.542055 1.569107 0
+ 0.071323 1.298079 0
+ 0.242498 1.697488 0
+ -0.071323 1.997045 0
+ F4 26624 0.000000 4 0
+ 1.954251 -0.071323 0
+ 1.212492 -0.242498 0
+ 1.055581 0.128381 0
+ 2.068368 0.185440 0
+ F4 26624 0.000000 4 0
+ 0.470732 -1.897193 0
+ 0.099852 -1.611901 0
+ 0.199705 -1.012787 0
+ 0.427938 -1.098375 0
+ F4 26624 0.000000 3 0
+ 1.740282 -1.426461 0
+ 1.540578 -0.984258 0
+ 1.226756 -1.255286 0
+ F4 26624 0.000000 5 0
+ -1.497784 -0.171175 0
+ -1.298079 -0.028529 0
+ -0.613378 0.142646 0
+ -0.242498 -0.242498 0
+ -1.098375 -0.370880 0
+ F4 26624 0.000000 4 0
+ -1.312344 -1.654695 0
+ -0.912935 -1.554842 0
+ -0.627643 -0.884406 0
+ -1.069846 -0.998523 0
+ L3 26624 -0.001500 0.200000 2.200000 0 0.400000 1.900000 0
+ L3 26624 -0.001500 1.400000 1.900000 0 0.900000 1.700000 0
+ L3 26624 -0.001500 1.600000 2.400000 0 1.300000 2.200000 0
+ L3 26624 -0.001500 0.900000 2.600000 0 0.700000 2.200000 0
+ L3 26624 -0.001500 -0.400000 2.500000 0 -0.200000 2.200000 0
+ L3 26624 -0.001500 -1.200000 1.600000 0 -0.800000 1.600000 0
+ L3 26624 -0.001500 -0.900000 1.100000 0 -0.400000 1.300000 0
+ L3 26624 -0.001500 -1.200000 0.600000 0 -0.800000 0.300000 0
+ L3 26624 -0.001500 -1.800000 0.500000 0 -1.400000 0.300000 0
+ L3 26624 -0.001500 -2.300000 0.200000 0 -1.800000 0.000000 0
+ L3 26624 -0.001500 -1.600000 -0.500000 0 -2.000000 -0.900000 0
+ L3 26624 -0.001500 -1.800000 -1.400000 0 -1.500000 -1.000000 0
+ L3 26624 -0.001500 -1.100000 -2.200000 0 -0.800000 -1.800000 0
+ L3 26624 -0.001500 -0.400000 -1.800000 0 -0.500000 -2.400000 0
+ L3 26624 -0.001500 -0.300000 -1.100000 0 -0.200000 -1.500000 0
+ L3 26624 -0.001500 0.700000 -1.800000 0 0.900000 -2.400000 0
+ L3 26624 -0.001500 1.200000 -1.700000 0 1.800000 -2.000000 0
+ L3 26624 -0.001500 2.700000 -0.700000 0 2.200000 -0.800000 0
+ L3 26624 -0.001500 2.700000 -1.600000 0 2.200000 -1.400000 0
+ L3 26624 -0.001500 2.900000 -1.200000 0 2.400000 -1.100000 0
+ L3 26624 -0.001500 1.200000 -2.900000 0 1.100000 -2.500000 0
+ L3 26624 -0.001500 1.800000 -2.600000 0 1.500000 -2.300000 0
+ L3 26624 -0.001500 1.400000 -2.700000 0 1.200000 -2.100000 0
+ L3 26624 -0.001500 3.000000 0.500000 0 2.400000 0.600000 0
+ L3 26624 -0.001500 2.500000 1.300000 0 2.000000 1.000000 0
+ L3 26624 -0.001500 3.000000 1.000000 0 2.500000 0.900000 0
+ L3 26624 -0.001500 -1.000000 -2.800000 0 -0.900000 -2.400000 0
+ L3 26624 -0.001500 -2.200000 -1.400000 0 -1.900000 -1.200000 0
+ L3 26624 -0.001500 1.400000 3.200000 0 1.200000 2.700000 0
+ L3 26624 -0.001500 1.800000 2.900000 0 1.500000 2.600000 0
+ END$SEGS
+STRUCTURE 443 3 0 0 0 Fn3 2 378.000000 559.348958 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 444 3 0 0 0 Fn3 2 365.000000 575.848958 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 445 3 0 0 0 Fn3 2 332.500000 585.848958 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 446 3 0 0 0 Fn3 2 344.500000 584.348958 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 447 3 0 0 0 Fn3 2 352.500000 566.848958 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 448 3 0 0 0 Fn3 2 304.000000 584.348958 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 449 3 0 0 0 Fn3 2 296.500000 588.348958 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 450 3 0 0 0 Fn3 2 344.000000 571.848958 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 451 3 0 0 0 Fn3 2 371.000000 556.848958 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 452 3 0 0 0 Fn3 2 415.000000 553.848958 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 453 3 0 0 0 Fn3 2 398.500000 558.848958 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 454 3 0 0 0 Fn3 2 410.500000 545.348958 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 455 3 0 0 0 Fn3 2 361.500000 554.848958 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 456 3 0 0 0 Fn3 2 352.000000 599.848958 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 457 3 0 0 0 Fn3 2 346.000000 600.348958 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 458 3 0 0 0 Fn3 2 337.000000 620.348958 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 459 3 0 0 0 Fn3 2 355.500000 619.848958 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 460 3 0 0 0 Fn3 2 316.500000 611.848958 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 461 3 0 0 0 Fn3 2 306.000000 603.348958 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 462 3 0 0 0 Fn3 2 303.000000 619.348958 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 463 3 0 0 0 Fn3 2 266.833333 617.140625 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 464 3 0 0 0 Fn3 2 271.833333 601.640625 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 465 3 0 0 0 Fn3 2 265.833333 598.140625 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 466 3 0 0 0 Fn3 2 279.333333 618.640625 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 467 3 0 0 0 Fn3 2 395.333333 616.640625 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 468 8 0 0 0 Fn3 2 179.995966 772.860351 0 39.568209 "Custom Gazebo Custom1"
+ D 0.000000 0.000000
+ L3 6815744 0.000000 0.000000 0.000000 0 96.000000 0.000000 0
+ L3 6815744 0.000000 96.000000 0.000000 0 96.000000 72.000000 0
+ L3 6815744 0.000000 96.000000 72.000000 0 0.000000 72.000000 0
+ L3 6815744 0.000000 0.000000 72.000000 0 0.000000 0.000000 0
+ L3 6815744 0.000000 24.000000 72.000000 0 0.000000 48.000000 0
+ L3 6815744 0.000000 0.000000 24.000000 0 48.000000 72.000000 0
+ L3 6815744 0.000000 0.000000 0.000000 0 72.000000 72.000000 0
+ L3 6815744 0.000000 24.000000 0.000000 0 96.000000 72.000000 0
+ L3 6815744 0.000000 48.000000 0.000000 0 96.000000 48.000000 0
+ L3 6815744 0.000000 72.000000 0.000000 0 96.000000 24.000000 0
+ L3 6815744 0.000000 72.000000 72.000000 0 96.000000 48.000000 0
+ L3 6815744 0.000000 0.000000 24.000000 0 24.000000 0.000000 0
+ L3 6815744 0.000000 96.000000 24.000000 0 48.000000 72.000000 0
+ L3 6815744 0.000000 96.000000 0.000000 0 24.000000 72.000000 0
+ L3 6815744 0.000000 72.000000 0.000000 0 0.000000 72.000000 0
+ L3 6815744 0.000000 48.000000 0.000000 0 0.000000 48.000000 0
+ L3 4276545 0.000000 -12.000000 36.000000 0 108.000000 36.000000 0
+ L3 4276545 0.000000 108.000000 -12.000000 0 -12.000000 -12.000000 0
+ L3 4276545 0.000000 108.000000 84.000000 0 108.000000 -12.000000 0
+ L3 4276545 0.000000 -12.000000 84.000000 0 108.000000 84.000000 0
+ L3 4276545 0.000000 -12.000000 -12.000000 0 -12.000000 84.000000 0
+ END$SEGS
+CURVE 469 0 0 0 0 Fn3 2 603.756868 475.000619 0 60.000000 0 0.000000 0.000000
+ T4 33 662.739816 486.001156 349.435568 9 -8.262544 -0.229026 56.138000 56.138000 1 1 0 56.138000
+ T4 34 663.400236 468.468499 186.250185 0 0.0 0.0 0.0 0.0 0 0 0 56.138000
+ END$SEGS
+STRUCTURE 470 3 0 0 0 Fn3 2 170.875000 363.041667 0 0.000000 "Lg Conifer 14"" Tree Conifer-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.239190 -6.525637 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -3.376515 -5.082467 0
+ -6.168735 -5.804052 0
+ -5.384403 -3.639298 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -5.980495 0.658838 0
+ -7.674651 2.541234 0
+ -5.729509 2.603980 0
+ -6.280801 4.918345 0
+ -4.234619 4.017274 0
+ -3.627501 6.462890 0
+ -2.090212 4.266763 0
+ -0.835281 6.651130 0
+ 1.076558 4.160617 0
+ 0.952994 -5.239333 0
+ F4 26624 0.000000 28 0
+ -4.329509 2.603980 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.227501 6.462890 0
+ -0.690212 4.266763 0
+ 0.564719 6.651130 0
+ 2.476558 4.160617 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 4.771502 1.799632 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 4.455002 -2.603980 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.352994 -5.239333 0
+ 1.160810 -6.525637 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -1.976515 -5.082467 0
+ -4.768735 -5.804052 0
+ -3.984403 -3.639298 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -4.580495 0.658838 0
+ -6.274651 2.541234 0
+ F4 11206591 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.842080 6.567137 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.187486 2.842080 0
+ 6.677509 1.627988 0
+ 4.054819 -0.131406 0
+ 6.456765 -2.759301 0
+ 4.663219 -3.173196 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 2.952452 -6.263614 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.510964 -6.208428 0
+ -2.496717 -3.285154 0
+ -5.766939 -4.056173 0
+ -5.104707 -1.765953 0
+ -3.059886 -0.488080 0
+ -5.380637 -0.441488 0
+ -6.484358 1.103720 0
+ -2.102499 1.445468 0
+ -5.518602 4.276917 0
+ -1.614419 3.792007 0
+ -1.701292 6.805167 0
+ L3 26624 0.000000 -3.885868 -2.290222 0 -5.124841 -2.233905 0
+ L3 26624 0.000000 -5.387653 -3.285154 0 -4.542899 -3.078659 0
+ L3 26624 0.000000 -1.727052 -5.537831 0 -1.595646 -3.979730 0
+ L3 26624 0.000000 -1.595646 -3.979730 0 -2.534262 -5.087296 0
+ L3 26624 0.000000 2.233905 -5.594148 0 2.384083 -4.280087 0
+ L3 26624 0.000000 2.384083 -4.280087 0 3.097431 -5.087296 0
+ L3 26624 0.000000 5.368881 -2.890936 0 3.623056 -2.083726 0
+ L3 26624 0.000000 3.623056 -2.083726 0 5.368881 -1.670736 0
+ L3 26624 0.000000 4.880801 1.182656 0 3.566739 1.201428 0
+ L3 26624 0.000000 3.566739 1.201428 0 4.655533 2.665668 0
+ L3 26624 0.000000 3.341471 4.430265 0 1.896003 3.172520 0
+ L3 26624 0.000000 1.896003 3.172520 0 1.933548 5.462742 0
+ L3 26624 0.000000 -0.675803 5.838188 0 -0.694575 3.904640 0
+ L3 26624 0.000000 -0.694575 3.904640 0 -1.633191 4.711850 0
+ L3 26624 0.000000 -0.901071 -4.129908 0 -1.126339 -3.172520 0
+ L3 26624 0.000000 1.520557 -4.373948 0 1.539329 -3.266382 0
+ L3 26624 0.000000 2.928480 -3.754462 0 2.046182 -3.022342 0
+ L3 26624 0.000000 3.397788 -2.872163 0 2.440400 -1.501785 0
+ L3 26624 0.000000 4.392720 -0.788437 0 3.210065 -1.107566 0
+ L3 26624 0.000000 4.505354 0.319129 0 2.553034 0.600714 0
+ L3 26624 0.000000 2.740757 1.389151 0 3.660600 2.703213 0
+ L3 26624 0.000000 2.928480 3.078659 0 1.445468 1.989865 0
+ L3 26624 0.000000 1.163883 2.609351 0 0.788437 3.754462 0
+ L3 26624 0.000000 0.056317 3.735690 0 -0.206495 2.233905 0
+ L3 26624 0.000000 -1.520557 3.397788 0 -1.107566 1.914776 0
+ L3 26624 0.000000 -2.872163 -0.544397 0 -1.501785 0.131406 0
+ L3 26624 0.000000 -1.220200 -1.858459 0 -0.619486 -0.675803 0
+ L3 26624 0.000000 0.938615 -2.778302 0 0.262812 -1.501785 0
+ L3 26624 0.000000 1.802142 -2.046182 0 1.013705 -1.220200 0
+ L3 26624 0.000000 2.496717 -0.544397 0 0.994932 -0.300357 0
+ L3 26624 0.000000 1.614419 0.994932 0 0.694575 0.431763 0
+ L3 26624 0.000000 0.187723 1.407923 0 0.244040 0.694575 0
+ L3 26624 0.000000 -0.281585 0.469308 0 -0.863526 1.257745 0
+ L3 26624 0.000000 -1.145111 -0.488080 0 -0.356674 -0.037545 0
+ L3 26624 0.000000 0.600714 -0.957388 0 0.225268 -0.206495 0
+ L3 26624 0.000000 -3.421825 -1.213413 0 -4.344019 -1.674510 0
+ L3 26624 0.000000 -4.271214 0.994999 0 -3.106337 0.630975 0
+ L3 26624 0.000000 -3.373288 3.615971 0 -2.329753 3.300483 0
+ F4 26624 0.000000 4 0
+ -3.154874 -1.868656 0
+ -2.548167 -1.164876 0
+ -1.480364 -0.752316 0
+ -2.159875 -1.625973 0
+ F4 26624 0.000000 4 0
+ -2.863655 0.994999 0
+ -1.553169 1.116340 0
+ -0.970730 0.582438 0
+ -2.038534 0.606707 0
+ F4 26624 0.000000 4 0
+ -1.431827 -2.354021 0
+ -1.650242 -3.130606 0
+ -2.451094 -3.518898 0
+ -2.232680 -2.887923 0
+ F4 26624 0.000000 4 0
+ -4.756579 -0.024268 0
+ -3.713044 -0.266951 0
+ -2.572436 0.097073 0
+ -3.737312 0.291219 0
+ F4 26624 0.000000 4 0
+ -3.931458 -3.082069 0
+ -3.349020 -2.499631 0
+ -2.451094 -2.305485 0
+ -2.960728 -2.887923 0
+ F4 26624 0.000000 4 0
+ -3.324752 3.203410 0
+ -2.548167 2.402558 0
+ -1.650242 2.062802 0
+ -2.523899 2.936459 0
+ END$SEGS
+STRUCTURE 471 3 0 0 0 Fn3 2 143.875000 375.541667 0 0.000000 "Lg Conifer 14"" Tree Conifer-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.239190 -6.525637 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -3.376515 -5.082467 0
+ -6.168735 -5.804052 0
+ -5.384403 -3.639298 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -5.980495 0.658838 0
+ -7.674651 2.541234 0
+ -5.729509 2.603980 0
+ -6.280801 4.918345 0
+ -4.234619 4.017274 0
+ -3.627501 6.462890 0
+ -2.090212 4.266763 0
+ -0.835281 6.651130 0
+ 1.076558 4.160617 0
+ 0.952994 -5.239333 0
+ F4 26624 0.000000 28 0
+ -4.329509 2.603980 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.227501 6.462890 0
+ -0.690212 4.266763 0
+ 0.564719 6.651130 0
+ 2.476558 4.160617 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 4.771502 1.799632 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 4.455002 -2.603980 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.352994 -5.239333 0
+ 1.160810 -6.525637 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -1.976515 -5.082467 0
+ -4.768735 -5.804052 0
+ -3.984403 -3.639298 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -4.580495 0.658838 0
+ -6.274651 2.541234 0
+ F4 11206591 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.842080 6.567137 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.187486 2.842080 0
+ 6.677509 1.627988 0
+ 4.054819 -0.131406 0
+ 6.456765 -2.759301 0
+ 4.663219 -3.173196 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 2.952452 -6.263614 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.510964 -6.208428 0
+ -2.496717 -3.285154 0
+ -5.766939 -4.056173 0
+ -5.104707 -1.765953 0
+ -3.059886 -0.488080 0
+ -5.380637 -0.441488 0
+ -6.484358 1.103720 0
+ -2.102499 1.445468 0
+ -5.518602 4.276917 0
+ -1.614419 3.792007 0
+ -1.701292 6.805167 0
+ L3 26624 0.000000 -3.885868 -2.290222 0 -5.124841 -2.233905 0
+ L3 26624 0.000000 -5.387653 -3.285154 0 -4.542899 -3.078659 0
+ L3 26624 0.000000 -1.727052 -5.537831 0 -1.595646 -3.979730 0
+ L3 26624 0.000000 -1.595646 -3.979730 0 -2.534262 -5.087296 0
+ L3 26624 0.000000 2.233905 -5.594148 0 2.384083 -4.280087 0
+ L3 26624 0.000000 2.384083 -4.280087 0 3.097431 -5.087296 0
+ L3 26624 0.000000 5.368881 -2.890936 0 3.623056 -2.083726 0
+ L3 26624 0.000000 3.623056 -2.083726 0 5.368881 -1.670736 0
+ L3 26624 0.000000 4.880801 1.182656 0 3.566739 1.201428 0
+ L3 26624 0.000000 3.566739 1.201428 0 4.655533 2.665668 0
+ L3 26624 0.000000 3.341471 4.430265 0 1.896003 3.172520 0
+ L3 26624 0.000000 1.896003 3.172520 0 1.933548 5.462742 0
+ L3 26624 0.000000 -0.675803 5.838188 0 -0.694575 3.904640 0
+ L3 26624 0.000000 -0.694575 3.904640 0 -1.633191 4.711850 0
+ L3 26624 0.000000 -0.901071 -4.129908 0 -1.126339 -3.172520 0
+ L3 26624 0.000000 1.520557 -4.373948 0 1.539329 -3.266382 0
+ L3 26624 0.000000 2.928480 -3.754462 0 2.046182 -3.022342 0
+ L3 26624 0.000000 3.397788 -2.872163 0 2.440400 -1.501785 0
+ L3 26624 0.000000 4.392720 -0.788437 0 3.210065 -1.107566 0
+ L3 26624 0.000000 4.505354 0.319129 0 2.553034 0.600714 0
+ L3 26624 0.000000 2.740757 1.389151 0 3.660600 2.703213 0
+ L3 26624 0.000000 2.928480 3.078659 0 1.445468 1.989865 0
+ L3 26624 0.000000 1.163883 2.609351 0 0.788437 3.754462 0
+ L3 26624 0.000000 0.056317 3.735690 0 -0.206495 2.233905 0
+ L3 26624 0.000000 -1.520557 3.397788 0 -1.107566 1.914776 0
+ L3 26624 0.000000 -2.872163 -0.544397 0 -1.501785 0.131406 0
+ L3 26624 0.000000 -1.220200 -1.858459 0 -0.619486 -0.675803 0
+ L3 26624 0.000000 0.938615 -2.778302 0 0.262812 -1.501785 0
+ L3 26624 0.000000 1.802142 -2.046182 0 1.013705 -1.220200 0
+ L3 26624 0.000000 2.496717 -0.544397 0 0.994932 -0.300357 0
+ L3 26624 0.000000 1.614419 0.994932 0 0.694575 0.431763 0
+ L3 26624 0.000000 0.187723 1.407923 0 0.244040 0.694575 0
+ L3 26624 0.000000 -0.281585 0.469308 0 -0.863526 1.257745 0
+ L3 26624 0.000000 -1.145111 -0.488080 0 -0.356674 -0.037545 0
+ L3 26624 0.000000 0.600714 -0.957388 0 0.225268 -0.206495 0
+ L3 26624 0.000000 -3.421825 -1.213413 0 -4.344019 -1.674510 0
+ L3 26624 0.000000 -4.271214 0.994999 0 -3.106337 0.630975 0
+ L3 26624 0.000000 -3.373288 3.615971 0 -2.329753 3.300483 0
+ F4 26624 0.000000 4 0
+ -3.154874 -1.868656 0
+ -2.548167 -1.164876 0
+ -1.480364 -0.752316 0
+ -2.159875 -1.625973 0
+ F4 26624 0.000000 4 0
+ -2.863655 0.994999 0
+ -1.553169 1.116340 0
+ -0.970730 0.582438 0
+ -2.038534 0.606707 0
+ F4 26624 0.000000 4 0
+ -1.431827 -2.354021 0
+ -1.650242 -3.130606 0
+ -2.451094 -3.518898 0
+ -2.232680 -2.887923 0
+ F4 26624 0.000000 4 0
+ -4.756579 -0.024268 0
+ -3.713044 -0.266951 0
+ -2.572436 0.097073 0
+ -3.737312 0.291219 0
+ F4 26624 0.000000 4 0
+ -3.931458 -3.082069 0
+ -3.349020 -2.499631 0
+ -2.451094 -2.305485 0
+ -2.960728 -2.887923 0
+ F4 26624 0.000000 4 0
+ -3.324752 3.203410 0
+ -2.548167 2.402558 0
+ -1.650242 2.062802 0
+ -2.523899 2.936459 0
+ END$SEGS
+STRUCTURE 472 3 0 0 0 Fn3 2 194.875000 375.041667 0 0.000000 "Lg Conifer 16"" Tree Conifer-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -2.157806 6.092955 0
+ -0.273360 7.457871 0
+ 1.089136 5.987810 0
+ 1.230352 -4.754991 0
+ -0.954607 -7.601291 0
+ -2.388813 -4.876300 0
+ -4.145715 -7.386160 0
+ -4.839564 -4.591171 0
+ -7.178058 -5.620966 0
+ -6.548010 -2.975977 0
+ -8.771030 -2.904267 0
+ -6.834852 -0.752958 0
+ -9.302011 0.000000 0
+ -7.499869 0.793801 0
+ -8.872929 2.209769 0
+ -6.153604 4.159197 0
+ -7.049982 6.633202 0
+ -3.858874 5.808534 0
+ -2.629795 7.573286 0
+ F4 26624 0.000000 28 0
+ -4.948010 -2.975977 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.545715 -7.386160 0
+ -0.788813 -4.876300 0
+ 0.645393 -7.601291 0
+ 2.830352 -4.754991 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 5.453145 -2.056722 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 5.091431 2.975977 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.689136 5.987810 0
+ 1.326640 7.457871 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -2.258874 5.808534 0
+ -5.449982 6.633202 0
+ -4.553604 4.159197 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -5.234852 -0.752958 0
+ -7.171030 -2.904267 0
+ F4 11206591 0.000000 26 0
+ 1.072703 -5.020252 0
+ 3.248092 -7.505299 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 5.928556 -3.248092 0
+ 7.631439 -1.860557 0
+ 4.634079 0.150178 0
+ 7.379160 3.153487 0
+ 5.329393 3.626510 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 3.374231 7.158416 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.869673 7.095346 0
+ -2.853391 3.754462 0
+ -6.590788 4.635626 0
+ -5.833951 2.018232 0
+ -3.497013 0.557806 0
+ -6.149300 0.504558 0
+ -7.410695 -1.261395 0
+ -2.402856 -1.651963 0
+ -6.306974 -4.887905 0
+ -1.845050 -4.333722 0
+ -1.944333 -7.777333 0
+ L3 26624 0.000000 -4.440992 2.617396 0 -5.856961 2.553034 0
+ L3 26624 0.000000 -6.157318 3.754462 0 -5.191885 3.518467 0
+ L3 26624 0.000000 -1.973774 6.328950 0 -1.823596 4.548262 0
+ L3 26624 0.000000 -1.823596 4.548262 0 -2.896299 5.814053 0
+ L3 26624 0.000000 2.553034 6.393312 0 2.724667 4.891528 0
+ L3 26624 0.000000 2.724667 4.891528 0 3.539921 5.814053 0
+ L3 26624 0.000000 6.135864 3.303927 0 4.140635 2.381402 0
+ L3 26624 0.000000 4.140635 2.381402 0 6.135864 1.909412 0
+ L3 26624 0.000000 5.578058 -1.351606 0 4.076273 -1.373060 0
+ L3 26624 0.000000 4.076273 -1.373060 0 5.320609 -3.046478 0
+ L3 26624 0.000000 3.818824 -5.063160 0 2.166861 -3.625738 0
+ L3 26624 0.000000 2.166861 -3.625738 0 2.209769 -6.243134 0
+ L3 26624 0.000000 -0.772346 -6.672215 0 -0.793801 -4.462446 0
+ L3 26624 0.000000 -0.793801 -4.462446 0 -1.866504 -5.384971 0
+ L3 26624 0.000000 -1.029795 4.719895 0 -1.287244 3.625738 0
+ L3 26624 0.000000 1.737780 4.998798 0 1.759234 3.733008 0
+ L3 26624 0.000000 3.346835 4.290814 0 2.338493 3.454105 0
+ L3 26624 0.000000 3.883186 3.282472 0 2.789029 1.716325 0
+ L3 26624 0.000000 5.020252 0.901071 0 3.668646 1.265790 0
+ L3 26624 0.000000 5.148976 -0.364719 0 2.917753 -0.686530 0
+ L3 26624 0.000000 3.132294 -1.587601 0 4.183543 -3.089386 0
+ L3 26624 0.000000 3.346835 -3.518467 0 1.651963 -2.274131 0
+ L3 26624 0.000000 1.330152 -2.982115 0 0.901071 -4.290814 0
+ L3 26624 0.000000 0.064362 -4.269360 0 -0.235995 -2.553034 0
+ L3 26624 0.000000 -1.737780 -3.883186 0 -1.265790 -2.188315 0
+ L3 26624 0.000000 -3.282472 0.622168 0 -1.716325 -0.150178 0
+ L3 26624 0.000000 -1.394514 2.123953 0 -0.707984 0.772346 0
+ L3 26624 0.000000 1.072703 3.175202 0 0.300357 1.716325 0
+ L3 26624 0.000000 2.059591 2.338493 0 1.158520 1.394514 0
+ L3 26624 0.000000 2.853391 0.622168 0 1.137066 0.343265 0
+ L3 26624 0.000000 1.845050 -1.137066 0 0.793801 -0.493444 0
+ L3 26624 0.000000 0.214541 -1.609055 0 0.278903 -0.793801 0
+ L3 26624 0.000000 -0.321811 -0.536352 0 -0.986887 -1.437423 0
+ L3 26624 0.000000 -1.308698 0.557806 0 -0.407627 0.042908 0
+ L3 26624 0.000000 0.686530 1.094157 0 0.257449 0.235995 0
+ L3 26624 0.000000 -3.910657 1.386758 0 -4.964593 1.913726 0
+ L3 26624 0.000000 -4.881387 -1.137141 0 -3.550100 -0.721114 0
+ L3 26624 0.000000 -3.855186 -4.132538 0 -2.662575 -3.771981 0
+ F4 26624 0.000000 4 0
+ -3.605570 2.135607 0
+ -2.912191 1.331287 0
+ -1.691844 0.859790 0
+ -2.468429 1.858255 0
+ F4 26624 0.000000 4 0
+ -3.272748 -1.137141 0
+ -1.775050 -1.275817 0
+ -1.109406 -0.665644 0
+ -2.329753 -0.693379 0
+ F4 26624 0.000000 4 0
+ -1.636374 2.690310 0
+ -1.885991 3.577835 0
+ -2.801251 4.021597 0
+ -2.551634 3.300483 0
+ F4 26624 0.000000 4 0
+ -5.436090 0.027735 0
+ -4.243479 0.305087 0
+ -2.939926 -0.110941 0
+ -4.271214 -0.332822 0
+ F4 26624 0.000000 4 0
+ -4.493095 3.522365 0
+ -3.827451 2.856721 0
+ -2.801251 2.634840 0
+ -3.383689 3.300483 0
+ F4 26624 0.000000 4 0
+ -3.799716 -3.661040 0
+ -2.912191 -2.745780 0
+ -1.885991 -2.357488 0
+ -2.884456 -3.355954 0
+ END$SEGS
+STRUCTURE 473 3 0 0 0 Fn3 2 196.875000 355.041667 0 0.000000 "Lg Conifer 16"" Tree Conifer-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -2.157806 6.092955 0
+ -0.273360 7.457871 0
+ 1.089136 5.987810 0
+ 1.230352 -4.754991 0
+ -0.954607 -7.601291 0
+ -2.388813 -4.876300 0
+ -4.145715 -7.386160 0
+ -4.839564 -4.591171 0
+ -7.178058 -5.620966 0
+ -6.548010 -2.975977 0
+ -8.771030 -2.904267 0
+ -6.834852 -0.752958 0
+ -9.302011 0.000000 0
+ -7.499869 0.793801 0
+ -8.872929 2.209769 0
+ -6.153604 4.159197 0
+ -7.049982 6.633202 0
+ -3.858874 5.808534 0
+ -2.629795 7.573286 0
+ F4 26624 0.000000 28 0
+ -4.948010 -2.975977 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.545715 -7.386160 0
+ -0.788813 -4.876300 0
+ 0.645393 -7.601291 0
+ 2.830352 -4.754991 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 5.453145 -2.056722 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 5.091431 2.975977 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.689136 5.987810 0
+ 1.326640 7.457871 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -2.258874 5.808534 0
+ -5.449982 6.633202 0
+ -4.553604 4.159197 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -5.234852 -0.752958 0
+ -7.171030 -2.904267 0
+ F4 11206591 0.000000 26 0
+ 1.072703 -5.020252 0
+ 3.248092 -7.505299 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 5.928556 -3.248092 0
+ 7.631439 -1.860557 0
+ 4.634079 0.150178 0
+ 7.379160 3.153487 0
+ 5.329393 3.626510 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 3.374231 7.158416 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.869673 7.095346 0
+ -2.853391 3.754462 0
+ -6.590788 4.635626 0
+ -5.833951 2.018232 0
+ -3.497013 0.557806 0
+ -6.149300 0.504558 0
+ -7.410695 -1.261395 0
+ -2.402856 -1.651963 0
+ -6.306974 -4.887905 0
+ -1.845050 -4.333722 0
+ -1.944333 -7.777333 0
+ L3 26624 0.000000 -4.440992 2.617396 0 -5.856961 2.553034 0
+ L3 26624 0.000000 -6.157318 3.754462 0 -5.191885 3.518467 0
+ L3 26624 0.000000 -1.973774 6.328950 0 -1.823596 4.548262 0
+ L3 26624 0.000000 -1.823596 4.548262 0 -2.896299 5.814053 0
+ L3 26624 0.000000 2.553034 6.393312 0 2.724667 4.891528 0
+ L3 26624 0.000000 2.724667 4.891528 0 3.539921 5.814053 0
+ L3 26624 0.000000 6.135864 3.303927 0 4.140635 2.381402 0
+ L3 26624 0.000000 4.140635 2.381402 0 6.135864 1.909412 0
+ L3 26624 0.000000 5.578058 -1.351606 0 4.076273 -1.373060 0
+ L3 26624 0.000000 4.076273 -1.373060 0 5.320609 -3.046478 0
+ L3 26624 0.000000 3.818824 -5.063160 0 2.166861 -3.625738 0
+ L3 26624 0.000000 2.166861 -3.625738 0 2.209769 -6.243134 0
+ L3 26624 0.000000 -0.772346 -6.672215 0 -0.793801 -4.462446 0
+ L3 26624 0.000000 -0.793801 -4.462446 0 -1.866504 -5.384971 0
+ L3 26624 0.000000 -1.029795 4.719895 0 -1.287244 3.625738 0
+ L3 26624 0.000000 1.737780 4.998798 0 1.759234 3.733008 0
+ L3 26624 0.000000 3.346835 4.290814 0 2.338493 3.454105 0
+ L3 26624 0.000000 3.883186 3.282472 0 2.789029 1.716325 0
+ L3 26624 0.000000 5.020252 0.901071 0 3.668646 1.265790 0
+ L3 26624 0.000000 5.148976 -0.364719 0 2.917753 -0.686530 0
+ L3 26624 0.000000 3.132294 -1.587601 0 4.183543 -3.089386 0
+ L3 26624 0.000000 3.346835 -3.518467 0 1.651963 -2.274131 0
+ L3 26624 0.000000 1.330152 -2.982115 0 0.901071 -4.290814 0
+ L3 26624 0.000000 0.064362 -4.269360 0 -0.235995 -2.553034 0
+ L3 26624 0.000000 -1.737780 -3.883186 0 -1.265790 -2.188315 0
+ L3 26624 0.000000 -3.282472 0.622168 0 -1.716325 -0.150178 0
+ L3 26624 0.000000 -1.394514 2.123953 0 -0.707984 0.772346 0
+ L3 26624 0.000000 1.072703 3.175202 0 0.300357 1.716325 0
+ L3 26624 0.000000 2.059591 2.338493 0 1.158520 1.394514 0
+ L3 26624 0.000000 2.853391 0.622168 0 1.137066 0.343265 0
+ L3 26624 0.000000 1.845050 -1.137066 0 0.793801 -0.493444 0
+ L3 26624 0.000000 0.214541 -1.609055 0 0.278903 -0.793801 0
+ L3 26624 0.000000 -0.321811 -0.536352 0 -0.986887 -1.437423 0
+ L3 26624 0.000000 -1.308698 0.557806 0 -0.407627 0.042908 0
+ L3 26624 0.000000 0.686530 1.094157 0 0.257449 0.235995 0
+ L3 26624 0.000000 -3.910657 1.386758 0 -4.964593 1.913726 0
+ L3 26624 0.000000 -4.881387 -1.137141 0 -3.550100 -0.721114 0
+ L3 26624 0.000000 -3.855186 -4.132538 0 -2.662575 -3.771981 0
+ F4 26624 0.000000 4 0
+ -3.605570 2.135607 0
+ -2.912191 1.331287 0
+ -1.691844 0.859790 0
+ -2.468429 1.858255 0
+ F4 26624 0.000000 4 0
+ -3.272748 -1.137141 0
+ -1.775050 -1.275817 0
+ -1.109406 -0.665644 0
+ -2.329753 -0.693379 0
+ F4 26624 0.000000 4 0
+ -1.636374 2.690310 0
+ -1.885991 3.577835 0
+ -2.801251 4.021597 0
+ -2.551634 3.300483 0
+ F4 26624 0.000000 4 0
+ -5.436090 0.027735 0
+ -4.243479 0.305087 0
+ -2.939926 -0.110941 0
+ -4.271214 -0.332822 0
+ F4 26624 0.000000 4 0
+ -4.493095 3.522365 0
+ -3.827451 2.856721 0
+ -2.801251 2.634840 0
+ -3.383689 3.300483 0
+ F4 26624 0.000000 4 0
+ -3.799716 -3.661040 0
+ -2.912191 -2.745780 0
+ -1.885991 -2.357488 0
+ -2.884456 -3.355954 0
+ END$SEGS
+STRUCTURE 474 3 0 0 0 Fn3 2 177.375000 377.041667 0 0.000000 "Lg Conifer 12"" Tree Conifer-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.205020 -5.593403 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -2.894156 -4.356400 0
+ -5.287487 -4.974902 0
+ -4.615203 -3.119398 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -5.126139 0.564719 0
+ -6.578272 2.178200 0
+ -4.911008 2.231983 0
+ -5.383543 4.215724 0
+ -3.629673 3.443378 0
+ -3.109287 5.539620 0
+ -1.791610 3.657225 0
+ -0.715956 5.700969 0
+ 0.922764 3.566244 0
+ 0.816852 -4.490857 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ L3 26624 0.000000 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 0.000000 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 0.000000 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 0.000000 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 0.000000 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 0.000000 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 0.000000 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 0.000000 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 0.000000 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 0.000000 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 0.000000 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 0.000000 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 0.000000 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 0.000000 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 0.000000 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 0.000000 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 0.000000 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 0.000000 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 0.000000 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 0.000000 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 0.000000 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 0.000000 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 0.000000 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 0.000000 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 0.000000 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 0.000000 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 0.000000 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 0.000000 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 0.000000 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 0.000000 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 0.000000 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 0.000000 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 0.000000 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 0.000000 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 0.000000 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 0.000000 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 0.000000 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 0.000000 -2.891390 3.099404 0 -1.996931 2.828986 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ END$SEGS
+STRUCTURE 475 3 0 0 0 Fn3 2 162.375000 378.041667 0 0.000000 "Lg Conifer 12"" Tree Conifer-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.205020 -5.593403 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -2.894156 -4.356400 0
+ -5.287487 -4.974902 0
+ -4.615203 -3.119398 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -5.126139 0.564719 0
+ -6.578272 2.178200 0
+ -4.911008 2.231983 0
+ -5.383543 4.215724 0
+ -3.629673 3.443378 0
+ -3.109287 5.539620 0
+ -1.791610 3.657225 0
+ -0.715956 5.700969 0
+ 0.922764 3.566244 0
+ 0.816852 -4.490857 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ L3 26624 0.000000 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 0.000000 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 0.000000 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 0.000000 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 0.000000 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 0.000000 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 0.000000 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 0.000000 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 0.000000 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 0.000000 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 0.000000 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 0.000000 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 0.000000 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 0.000000 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 0.000000 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 0.000000 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 0.000000 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 0.000000 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 0.000000 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 0.000000 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 0.000000 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 0.000000 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 0.000000 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 0.000000 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 0.000000 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 0.000000 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 0.000000 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 0.000000 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 0.000000 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 0.000000 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 0.000000 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 0.000000 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 0.000000 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 0.000000 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 0.000000 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 0.000000 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 0.000000 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 0.000000 -2.891390 3.099404 0 -1.996931 2.828986 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ END$SEGS
+STRUCTURE 476 3 0 0 0 Fn3 2 210.875000 384.541667 0 0.000000 "Lg Conifer 12"" Tree Conifer-12b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.205020 -5.593403 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -2.894156 -4.356400 0
+ -5.287487 -4.974902 0
+ -4.615203 -3.119398 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -5.126139 0.564719 0
+ -6.578272 2.178200 0
+ -4.911008 2.231983 0
+ -5.383543 4.215724 0
+ -3.629673 3.443378 0
+ -3.109287 5.539620 0
+ -1.791610 3.657225 0
+ -0.715956 5.700969 0
+ 0.922764 3.566244 0
+ 0.816852 -4.490857 0
+ F4 26624 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+ L3 26624 0.000000 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 0.000000 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 0.000000 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 0.000000 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 0.000000 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 0.000000 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 0.000000 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 0.000000 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 0.000000 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 0.000000 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 0.000000 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 0.000000 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 0.000000 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 0.000000 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 0.000000 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 0.000000 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 0.000000 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 0.000000 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 0.000000 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 0.000000 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 0.000000 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 0.000000 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 0.000000 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 0.000000 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 0.000000 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 0.000000 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 0.000000 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 0.000000 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 0.000000 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 0.000000 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 0.000000 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 0.000000 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 0.000000 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 0.000000 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 0.000000 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 0.000000 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 0.000000 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 0.000000 -2.891390 3.099404 0 -1.996931 2.828986 0
+ F4 26624 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ END$SEGS
+STRUCTURE 477 3 0 0 0 Fn3 2 309.375000 396.541667 0 0.000000 "Lg Shade 8"" Tree Shade-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 26624 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 65280 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 65280 0.000000 -0.680517 -3.305367 0 -0.291650 -3.013717 0
+ L3 65280 0.000000 -0.972167 -3.110933 0 -1.069383 -2.624850 0
+ L3 65280 0.000000 -2.235983 -2.041550 0 -1.555467 -2.041550 0
+ L3 65280 0.000000 -2.722067 -1.847117 0 -2.430417 -1.555467 0
+ L3 65280 0.000000 -2.041550 -1.652683 0 -1.652683 -1.361033 0
+ L3 65280 0.000000 -1.847117 -1.069383 0 -2.430417 -0.972167 0
+ L3 65280 0.000000 -3.305367 -0.777733 0 -2.624850 -0.777733 0
+ L3 65280 0.000000 -3.305367 -0.194433 0 -2.722067 -0.486083 0
+ L3 65280 0.000000 -2.235983 0.291650 0 -2.722067 0.194433 0
+ L3 65280 0.000000 -2.624850 0.680517 0 -3.305367 1.069383 0
+ L3 65280 0.000000 -3.013717 1.458250 0 -2.527633 1.555467 0
+ L3 65280 0.000000 -2.333200 2.235983 0 -2.138767 1.944333 0
+ L3 65280 0.000000 -1.458250 2.916500 0 -1.652683 3.208150 0
+ L3 65280 0.000000 -0.874950 3.110933 0 -0.680517 3.402583 0
+ L3 65280 0.000000 -0.097217 2.624850 0 0.000000 2.916500 0
+ L3 65280 0.000000 0.486083 2.624850 0 0.194433 2.819283 0
+ L3 65280 0.000000 1.263817 3.110933 0 1.166600 3.499800 0
+ L3 65280 0.000000 1.847117 2.916500 0 2.138767 3.013717 0
+ L3 65280 0.000000 3.402583 1.361033 0 3.110933 1.458250 0
+ L3 65280 0.000000 2.916500 1.847117 0 3.110933 2.138767 0
+ L3 65280 0.000000 3.402583 -0.291650 0 3.013717 -0.194433 0
+ L3 65280 0.000000 -2.722067 -2.430417 0 -2.527633 -2.041550 0
+ L3 65280 0.000000 -3.110933 -1.847117 0 -2.819283 -2.041550 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 1.386758 0
+ 1.497698 0.956863 0
+ 1.192612 1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 -2.138767 0 0.388867 -1.847117 0
+ L3 26624 0.000000 1.361033 -1.847117 0 0.874950 -1.652683 0
+ L3 26624 0.000000 1.555467 -2.333200 0 1.263817 -2.138767 0
+ L3 26624 0.000000 0.874950 -2.527633 0 0.680517 -2.138767 0
+ L3 26624 0.000000 -0.388867 -2.430417 0 -0.194433 -2.138767 0
+ L3 26624 0.000000 -1.166600 -1.555467 0 -0.777733 -1.555467 0
+ L3 26624 0.000000 -0.874950 -1.069383 0 -0.388867 -1.263817 0
+ L3 26624 0.000000 -1.166600 -0.583300 0 -0.777733 -0.291650 0
+ L3 26624 0.000000 -1.749900 -0.486083 0 -1.361033 -0.291650 0
+ L3 26624 0.000000 -2.235983 -0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 0.486083 0 -1.944333 0.874950 0
+ L3 26624 0.000000 -1.749900 1.361033 0 -1.458250 0.972167 0
+ L3 26624 0.000000 -1.069383 2.138767 0 -0.777733 1.749900 0
+ L3 26624 0.000000 -0.388867 1.749900 0 -0.486083 2.333200 0
+ L3 26624 0.000000 -0.291650 1.069383 0 -0.194433 1.458250 0
+ L3 26624 0.000000 0.680517 1.749900 0 0.874950 2.333200 0
+ L3 26624 0.000000 1.166600 1.652683 0 1.749900 1.944333 0
+ L3 26624 0.000000 2.624850 0.680517 0 2.138767 0.777733 0
+ L3 26624 0.000000 2.624850 1.555467 0 2.138767 1.361033 0
+ L3 26624 0.000000 2.819283 1.166600 0 2.333200 1.069383 0
+ L3 26624 0.000000 1.166600 2.819283 0 1.069383 2.430417 0
+ L3 26624 0.000000 1.749900 2.527633 0 1.458250 2.235983 0
+ L3 26624 0.000000 1.361033 2.624850 0 1.166600 2.041550 0
+ L3 26624 0.000000 2.916500 -0.486083 0 2.333200 -0.583300 0
+ L3 26624 0.000000 2.430417 -1.263817 0 1.944333 -0.972167 0
+ L3 26624 0.000000 2.916500 -0.972167 0 2.430417 -0.874950 0
+ L3 26624 0.000000 -0.972167 2.722067 0 -0.874950 2.333200 0
+ L3 26624 0.000000 -2.138767 1.361033 0 -1.847117 1.166600 0
+ L3 26624 0.000000 1.361033 -3.110933 0 1.166600 -2.624850 0
+ L3 26624 0.000000 1.749900 -2.819283 0 1.458250 -2.527633 0
+ END$SEGS
+STRUCTURE 478 3 0 0 0 Fn3 2 276.375000 398.041667 0 0.000000 "Lg Shade 8"" Tree Shade-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 26624 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 65280 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 65280 0.000000 -0.680517 -3.305367 0 -0.291650 -3.013717 0
+ L3 65280 0.000000 -0.972167 -3.110933 0 -1.069383 -2.624850 0
+ L3 65280 0.000000 -2.235983 -2.041550 0 -1.555467 -2.041550 0
+ L3 65280 0.000000 -2.722067 -1.847117 0 -2.430417 -1.555467 0
+ L3 65280 0.000000 -2.041550 -1.652683 0 -1.652683 -1.361033 0
+ L3 65280 0.000000 -1.847117 -1.069383 0 -2.430417 -0.972167 0
+ L3 65280 0.000000 -3.305367 -0.777733 0 -2.624850 -0.777733 0
+ L3 65280 0.000000 -3.305367 -0.194433 0 -2.722067 -0.486083 0
+ L3 65280 0.000000 -2.235983 0.291650 0 -2.722067 0.194433 0
+ L3 65280 0.000000 -2.624850 0.680517 0 -3.305367 1.069383 0
+ L3 65280 0.000000 -3.013717 1.458250 0 -2.527633 1.555467 0
+ L3 65280 0.000000 -2.333200 2.235983 0 -2.138767 1.944333 0
+ L3 65280 0.000000 -1.458250 2.916500 0 -1.652683 3.208150 0
+ L3 65280 0.000000 -0.874950 3.110933 0 -0.680517 3.402583 0
+ L3 65280 0.000000 -0.097217 2.624850 0 0.000000 2.916500 0
+ L3 65280 0.000000 0.486083 2.624850 0 0.194433 2.819283 0
+ L3 65280 0.000000 1.263817 3.110933 0 1.166600 3.499800 0
+ L3 65280 0.000000 1.847117 2.916500 0 2.138767 3.013717 0
+ L3 65280 0.000000 3.402583 1.361033 0 3.110933 1.458250 0
+ L3 65280 0.000000 2.916500 1.847117 0 3.110933 2.138767 0
+ L3 65280 0.000000 3.402583 -0.291650 0 3.013717 -0.194433 0
+ L3 65280 0.000000 -2.722067 -2.430417 0 -2.527633 -2.041550 0
+ L3 65280 0.000000 -3.110933 -1.847117 0 -2.819283 -2.041550 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 1.386758 0
+ 1.497698 0.956863 0
+ 1.192612 1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 -2.138767 0 0.388867 -1.847117 0
+ L3 26624 0.000000 1.361033 -1.847117 0 0.874950 -1.652683 0
+ L3 26624 0.000000 1.555467 -2.333200 0 1.263817 -2.138767 0
+ L3 26624 0.000000 0.874950 -2.527633 0 0.680517 -2.138767 0
+ L3 26624 0.000000 -0.388867 -2.430417 0 -0.194433 -2.138767 0
+ L3 26624 0.000000 -1.166600 -1.555467 0 -0.777733 -1.555467 0
+ L3 26624 0.000000 -0.874950 -1.069383 0 -0.388867 -1.263817 0
+ L3 26624 0.000000 -1.166600 -0.583300 0 -0.777733 -0.291650 0
+ L3 26624 0.000000 -1.749900 -0.486083 0 -1.361033 -0.291650 0
+ L3 26624 0.000000 -2.235983 -0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 0.486083 0 -1.944333 0.874950 0
+ L3 26624 0.000000 -1.749900 1.361033 0 -1.458250 0.972167 0
+ L3 26624 0.000000 -1.069383 2.138767 0 -0.777733 1.749900 0
+ L3 26624 0.000000 -0.388867 1.749900 0 -0.486083 2.333200 0
+ L3 26624 0.000000 -0.291650 1.069383 0 -0.194433 1.458250 0
+ L3 26624 0.000000 0.680517 1.749900 0 0.874950 2.333200 0
+ L3 26624 0.000000 1.166600 1.652683 0 1.749900 1.944333 0
+ L3 26624 0.000000 2.624850 0.680517 0 2.138767 0.777733 0
+ L3 26624 0.000000 2.624850 1.555467 0 2.138767 1.361033 0
+ L3 26624 0.000000 2.819283 1.166600 0 2.333200 1.069383 0
+ L3 26624 0.000000 1.166600 2.819283 0 1.069383 2.430417 0
+ L3 26624 0.000000 1.749900 2.527633 0 1.458250 2.235983 0
+ L3 26624 0.000000 1.361033 2.624850 0 1.166600 2.041550 0
+ L3 26624 0.000000 2.916500 -0.486083 0 2.333200 -0.583300 0
+ L3 26624 0.000000 2.430417 -1.263817 0 1.944333 -0.972167 0
+ L3 26624 0.000000 2.916500 -0.972167 0 2.430417 -0.874950 0
+ L3 26624 0.000000 -0.972167 2.722067 0 -0.874950 2.333200 0
+ L3 26624 0.000000 -2.138767 1.361033 0 -1.847117 1.166600 0
+ L3 26624 0.000000 1.361033 -3.110933 0 1.166600 -2.624850 0
+ L3 26624 0.000000 1.749900 -2.819283 0 1.458250 -2.527633 0
+ END$SEGS
+STRUCTURE 479 3 0 0 0 Fn3 2 323.375000 403.041667 0 0.000000 "Lg Shade 8"" Tree Shade-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 26624 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 65280 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 65280 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 65280 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 65280 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 65280 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 65280 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 65280 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 65280 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 65280 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 65280 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 65280 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 65280 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 65280 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 65280 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 65280 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 65280 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 65280 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 65280 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 65280 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 65280 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ L3 65280 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 65280 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 65280 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 65280 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 26624 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 26624 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 26624 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 26624 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 26624 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 26624 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 26624 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 26624 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ L3 26624 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 26624 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 26624 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 26624 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 26624 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 26624 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 26624 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 26624 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 26624 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 26624 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 26624 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 26624 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 26624 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 26624 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 26624 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ L3 26624 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 26624 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 26624 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 26624 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 26624 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ END$SEGS
+STRUCTURE 480 3 0 0 0 Fn3 2 343.875000 401.041667 0 0.000000 "Lg Shade 8"" Tree Shade-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 26624 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 65280 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 65280 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 65280 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 65280 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 65280 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 65280 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 65280 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 65280 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 65280 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 65280 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 65280 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 65280 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 65280 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 65280 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 65280 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 65280 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 65280 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 65280 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 65280 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 65280 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ L3 65280 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 65280 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 65280 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 65280 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 26624 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 26624 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 26624 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 26624 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 26624 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 26624 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 26624 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 26624 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ L3 26624 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 26624 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 26624 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 26624 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 26624 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 26624 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 26624 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 26624 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 26624 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 26624 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 26624 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 26624 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 26624 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 26624 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 26624 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ L3 26624 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 26624 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 26624 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 26624 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 26624 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ END$SEGS
+STRUCTURE 481 3 0 0 0 Fn3 2 262.875000 389.041667 0 0.000000 "Lg Shade 8"" Tree Shade-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 26624 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 65280 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 65280 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 65280 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 65280 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 65280 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 65280 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 65280 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 65280 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 65280 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 65280 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 65280 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 65280 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 65280 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 65280 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 65280 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 65280 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 65280 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 65280 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 65280 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 65280 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ L3 65280 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 65280 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 65280 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 65280 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 26624 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 26624 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 26624 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 26624 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 26624 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 26624 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 26624 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 26624 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ L3 26624 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 26624 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 26624 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 26624 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 26624 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 26624 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 26624 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 26624 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 26624 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 26624 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 26624 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 26624 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 26624 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 26624 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 26624 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ L3 26624 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 26624 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 26624 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 26624 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 26624 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ END$SEGS
+STRUCTURE 482 3 0 0 0 Fn3 2 247.375000 392.041667 0 0.000000 "Lg Conifer 14"" Tree Conifer-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.239190 -6.525637 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -3.376515 -5.082467 0
+ -6.168735 -5.804052 0
+ -5.384403 -3.639298 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -5.980495 0.658838 0
+ -7.674651 2.541234 0
+ -5.729509 2.603980 0
+ -6.280801 4.918345 0
+ -4.234619 4.017274 0
+ -3.627501 6.462890 0
+ -2.090212 4.266763 0
+ -0.835281 6.651130 0
+ 1.076558 4.160617 0
+ 0.952994 -5.239333 0
+ F4 26624 0.000000 28 0
+ -4.329509 2.603980 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.227501 6.462890 0
+ -0.690212 4.266763 0
+ 0.564719 6.651130 0
+ 2.476558 4.160617 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 4.771502 1.799632 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 4.455002 -2.603980 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.352994 -5.239333 0
+ 1.160810 -6.525637 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -1.976515 -5.082467 0
+ -4.768735 -5.804052 0
+ -3.984403 -3.639298 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -4.580495 0.658838 0
+ -6.274651 2.541234 0
+ F4 11206591 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.842080 6.567137 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.187486 2.842080 0
+ 6.677509 1.627988 0
+ 4.054819 -0.131406 0
+ 6.456765 -2.759301 0
+ 4.663219 -3.173196 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 2.952452 -6.263614 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.510964 -6.208428 0
+ -2.496717 -3.285154 0
+ -5.766939 -4.056173 0
+ -5.104707 -1.765953 0
+ -3.059886 -0.488080 0
+ -5.380637 -0.441488 0
+ -6.484358 1.103720 0
+ -2.102499 1.445468 0
+ -5.518602 4.276917 0
+ -1.614419 3.792007 0
+ -1.701292 6.805167 0
+ L3 26624 0.000000 -3.885868 -2.290222 0 -5.124841 -2.233905 0
+ L3 26624 0.000000 -5.387653 -3.285154 0 -4.542899 -3.078659 0
+ L3 26624 0.000000 -1.727052 -5.537831 0 -1.595646 -3.979730 0
+ L3 26624 0.000000 -1.595646 -3.979730 0 -2.534262 -5.087296 0
+ L3 26624 0.000000 2.233905 -5.594148 0 2.384083 -4.280087 0
+ L3 26624 0.000000 2.384083 -4.280087 0 3.097431 -5.087296 0
+ L3 26624 0.000000 5.368881 -2.890936 0 3.623056 -2.083726 0
+ L3 26624 0.000000 3.623056 -2.083726 0 5.368881 -1.670736 0
+ L3 26624 0.000000 4.880801 1.182656 0 3.566739 1.201428 0
+ L3 26624 0.000000 3.566739 1.201428 0 4.655533 2.665668 0
+ L3 26624 0.000000 3.341471 4.430265 0 1.896003 3.172520 0
+ L3 26624 0.000000 1.896003 3.172520 0 1.933548 5.462742 0
+ L3 26624 0.000000 -0.675803 5.838188 0 -0.694575 3.904640 0
+ L3 26624 0.000000 -0.694575 3.904640 0 -1.633191 4.711850 0
+ L3 26624 0.000000 -0.901071 -4.129908 0 -1.126339 -3.172520 0
+ L3 26624 0.000000 1.520557 -4.373948 0 1.539329 -3.266382 0
+ L3 26624 0.000000 2.928480 -3.754462 0 2.046182 -3.022342 0
+ L3 26624 0.000000 3.397788 -2.872163 0 2.440400 -1.501785 0
+ L3 26624 0.000000 4.392720 -0.788437 0 3.210065 -1.107566 0
+ L3 26624 0.000000 4.505354 0.319129 0 2.553034 0.600714 0
+ L3 26624 0.000000 2.740757 1.389151 0 3.660600 2.703213 0
+ L3 26624 0.000000 2.928480 3.078659 0 1.445468 1.989865 0
+ L3 26624 0.000000 1.163883 2.609351 0 0.788437 3.754462 0
+ L3 26624 0.000000 0.056317 3.735690 0 -0.206495 2.233905 0
+ L3 26624 0.000000 -1.520557 3.397788 0 -1.107566 1.914776 0
+ L3 26624 0.000000 -2.872163 -0.544397 0 -1.501785 0.131406 0
+ L3 26624 0.000000 -1.220200 -1.858459 0 -0.619486 -0.675803 0
+ L3 26624 0.000000 0.938615 -2.778302 0 0.262812 -1.501785 0
+ L3 26624 0.000000 1.802142 -2.046182 0 1.013705 -1.220200 0
+ L3 26624 0.000000 2.496717 -0.544397 0 0.994932 -0.300357 0
+ L3 26624 0.000000 1.614419 0.994932 0 0.694575 0.431763 0
+ L3 26624 0.000000 0.187723 1.407923 0 0.244040 0.694575 0
+ L3 26624 0.000000 -0.281585 0.469308 0 -0.863526 1.257745 0
+ L3 26624 0.000000 -1.145111 -0.488080 0 -0.356674 -0.037545 0
+ L3 26624 0.000000 0.600714 -0.957388 0 0.225268 -0.206495 0
+ L3 26624 0.000000 -3.421825 -1.213413 0 -4.344019 -1.674510 0
+ L3 26624 0.000000 -4.271214 0.994999 0 -3.106337 0.630975 0
+ L3 26624 0.000000 -3.373288 3.615971 0 -2.329753 3.300483 0
+ F4 26624 0.000000 4 0
+ -3.154874 -1.868656 0
+ -2.548167 -1.164876 0
+ -1.480364 -0.752316 0
+ -2.159875 -1.625973 0
+ F4 26624 0.000000 4 0
+ -2.863655 0.994999 0
+ -1.553169 1.116340 0
+ -0.970730 0.582438 0
+ -2.038534 0.606707 0
+ F4 26624 0.000000 4 0
+ -1.431827 -2.354021 0
+ -1.650242 -3.130606 0
+ -2.451094 -3.518898 0
+ -2.232680 -2.887923 0
+ F4 26624 0.000000 4 0
+ -4.756579 -0.024268 0
+ -3.713044 -0.266951 0
+ -2.572436 0.097073 0
+ -3.737312 0.291219 0
+ F4 26624 0.000000 4 0
+ -3.931458 -3.082069 0
+ -3.349020 -2.499631 0
+ -2.451094 -2.305485 0
+ -2.960728 -2.887923 0
+ F4 26624 0.000000 4 0
+ -3.324752 3.203410 0
+ -2.548167 2.402558 0
+ -1.650242 2.062802 0
+ -2.523899 2.936459 0
+ END$SEGS
+STRUCTURE 483 3 0 0 0 Fn3 2 359.875000 406.041667 0 0.000000 "Lg Conifer 14"" Tree Conifer-14b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.239190 -6.525637 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -3.376515 -5.082467 0
+ -6.168735 -5.804052 0
+ -5.384403 -3.639298 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -5.980495 0.658838 0
+ -7.674651 2.541234 0
+ -5.729509 2.603980 0
+ -6.280801 4.918345 0
+ -4.234619 4.017274 0
+ -3.627501 6.462890 0
+ -2.090212 4.266763 0
+ -0.835281 6.651130 0
+ 1.076558 4.160617 0
+ 0.952994 -5.239333 0
+ F4 26624 0.000000 28 0
+ -4.329509 2.603980 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.227501 6.462890 0
+ -0.690212 4.266763 0
+ 0.564719 6.651130 0
+ 2.476558 4.160617 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 4.771502 1.799632 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 4.455002 -2.603980 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.352994 -5.239333 0
+ 1.160810 -6.525637 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -1.976515 -5.082467 0
+ -4.768735 -5.804052 0
+ -3.984403 -3.639298 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -4.580495 0.658838 0
+ -6.274651 2.541234 0
+ F4 11206591 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.842080 6.567137 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.187486 2.842080 0
+ 6.677509 1.627988 0
+ 4.054819 -0.131406 0
+ 6.456765 -2.759301 0
+ 4.663219 -3.173196 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 2.952452 -6.263614 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.510964 -6.208428 0
+ -2.496717 -3.285154 0
+ -5.766939 -4.056173 0
+ -5.104707 -1.765953 0
+ -3.059886 -0.488080 0
+ -5.380637 -0.441488 0
+ -6.484358 1.103720 0
+ -2.102499 1.445468 0
+ -5.518602 4.276917 0
+ -1.614419 3.792007 0
+ -1.701292 6.805167 0
+ L3 26624 0.000000 -3.885868 -2.290222 0 -5.124841 -2.233905 0
+ L3 26624 0.000000 -5.387653 -3.285154 0 -4.542899 -3.078659 0
+ L3 26624 0.000000 -1.727052 -5.537831 0 -1.595646 -3.979730 0
+ L3 26624 0.000000 -1.595646 -3.979730 0 -2.534262 -5.087296 0
+ L3 26624 0.000000 2.233905 -5.594148 0 2.384083 -4.280087 0
+ L3 26624 0.000000 2.384083 -4.280087 0 3.097431 -5.087296 0
+ L3 26624 0.000000 5.368881 -2.890936 0 3.623056 -2.083726 0
+ L3 26624 0.000000 3.623056 -2.083726 0 5.368881 -1.670736 0
+ L3 26624 0.000000 4.880801 1.182656 0 3.566739 1.201428 0
+ L3 26624 0.000000 3.566739 1.201428 0 4.655533 2.665668 0
+ L3 26624 0.000000 3.341471 4.430265 0 1.896003 3.172520 0
+ L3 26624 0.000000 1.896003 3.172520 0 1.933548 5.462742 0
+ L3 26624 0.000000 -0.675803 5.838188 0 -0.694575 3.904640 0
+ L3 26624 0.000000 -0.694575 3.904640 0 -1.633191 4.711850 0
+ L3 26624 0.000000 -0.901071 -4.129908 0 -1.126339 -3.172520 0
+ L3 26624 0.000000 1.520557 -4.373948 0 1.539329 -3.266382 0
+ L3 26624 0.000000 2.928480 -3.754462 0 2.046182 -3.022342 0
+ L3 26624 0.000000 3.397788 -2.872163 0 2.440400 -1.501785 0
+ L3 26624 0.000000 4.392720 -0.788437 0 3.210065 -1.107566 0
+ L3 26624 0.000000 4.505354 0.319129 0 2.553034 0.600714 0
+ L3 26624 0.000000 2.740757 1.389151 0 3.660600 2.703213 0
+ L3 26624 0.000000 2.928480 3.078659 0 1.445468 1.989865 0
+ L3 26624 0.000000 1.163883 2.609351 0 0.788437 3.754462 0
+ L3 26624 0.000000 0.056317 3.735690 0 -0.206495 2.233905 0
+ L3 26624 0.000000 -1.520557 3.397788 0 -1.107566 1.914776 0
+ L3 26624 0.000000 -2.872163 -0.544397 0 -1.501785 0.131406 0
+ L3 26624 0.000000 -1.220200 -1.858459 0 -0.619486 -0.675803 0
+ L3 26624 0.000000 0.938615 -2.778302 0 0.262812 -1.501785 0
+ L3 26624 0.000000 1.802142 -2.046182 0 1.013705 -1.220200 0
+ L3 26624 0.000000 2.496717 -0.544397 0 0.994932 -0.300357 0
+ L3 26624 0.000000 1.614419 0.994932 0 0.694575 0.431763 0
+ L3 26624 0.000000 0.187723 1.407923 0 0.244040 0.694575 0
+ L3 26624 0.000000 -0.281585 0.469308 0 -0.863526 1.257745 0
+ L3 26624 0.000000 -1.145111 -0.488080 0 -0.356674 -0.037545 0
+ L3 26624 0.000000 0.600714 -0.957388 0 0.225268 -0.206495 0
+ L3 26624 0.000000 -3.421825 -1.213413 0 -4.344019 -1.674510 0
+ L3 26624 0.000000 -4.271214 0.994999 0 -3.106337 0.630975 0
+ L3 26624 0.000000 -3.373288 3.615971 0 -2.329753 3.300483 0
+ F4 26624 0.000000 4 0
+ -3.154874 -1.868656 0
+ -2.548167 -1.164876 0
+ -1.480364 -0.752316 0
+ -2.159875 -1.625973 0
+ F4 26624 0.000000 4 0
+ -2.863655 0.994999 0
+ -1.553169 1.116340 0
+ -0.970730 0.582438 0
+ -2.038534 0.606707 0
+ F4 26624 0.000000 4 0
+ -1.431827 -2.354021 0
+ -1.650242 -3.130606 0
+ -2.451094 -3.518898 0
+ -2.232680 -2.887923 0
+ F4 26624 0.000000 4 0
+ -4.756579 -0.024268 0
+ -3.713044 -0.266951 0
+ -2.572436 0.097073 0
+ -3.737312 0.291219 0
+ F4 26624 0.000000 4 0
+ -3.931458 -3.082069 0
+ -3.349020 -2.499631 0
+ -2.451094 -2.305485 0
+ -2.960728 -2.887923 0
+ F4 26624 0.000000 4 0
+ -3.324752 3.203410 0
+ -2.548167 2.402558 0
+ -1.650242 2.062802 0
+ -2.523899 2.936459 0
+ END$SEGS
+STRUCTURE 484 3 0 0 0 Fn3 2 387.375000 408.041667 0 0.000000 "Lg Conifer 14"" Tree Conifer-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -1.888080 5.331336 0
+ -0.239190 6.525637 0
+ 0.952994 5.239333 0
+ 1.076558 -4.160617 0
+ -0.835281 -6.651130 0
+ -2.090212 -4.266763 0
+ -3.627501 -6.462890 0
+ -4.234619 -4.017274 0
+ -6.280801 -4.918345 0
+ -5.729509 -2.603980 0
+ -7.674651 -2.541234 0
+ -5.980495 -0.658838 0
+ -8.139259 0.000000 0
+ -6.562385 0.694575 0
+ -7.763813 1.933548 0
+ -5.384403 3.639298 0
+ -6.168735 5.804052 0
+ -3.376515 5.082467 0
+ -2.301071 6.626625 0
+ F4 26624 0.000000 28 0
+ -4.329509 -2.603980 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.227501 -6.462890 0
+ -0.690212 -4.266763 0
+ 0.564719 -6.651130 0
+ 2.476558 -4.160617 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 4.771502 -1.799632 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 4.455002 2.603980 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.352994 5.239333 0
+ 1.160810 6.525637 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -1.976515 5.082467 0
+ -4.768735 5.804052 0
+ -3.984403 3.639298 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -4.580495 -0.658838 0
+ -6.274651 -2.541234 0
+ F4 11206591 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.842080 -6.567137 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.187486 -2.842080 0
+ 6.677509 -1.627988 0
+ 4.054819 0.131406 0
+ 6.456765 2.759301 0
+ 4.663219 3.173196 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 2.952452 6.263614 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.510964 6.208428 0
+ -2.496717 3.285154 0
+ -5.766939 4.056173 0
+ -5.104707 1.765953 0
+ -3.059886 0.488080 0
+ -5.380637 0.441488 0
+ -6.484358 -1.103720 0
+ -2.102499 -1.445468 0
+ -5.518602 -4.276917 0
+ -1.614419 -3.792007 0
+ -1.701292 -6.805167 0
+ L3 26624 0.000000 -3.885868 2.290222 0 -5.124841 2.233905 0
+ L3 26624 0.000000 -5.387653 3.285154 0 -4.542899 3.078659 0
+ L3 26624 0.000000 -1.727052 5.537831 0 -1.595646 3.979730 0
+ L3 26624 0.000000 -1.595646 3.979730 0 -2.534262 5.087296 0
+ L3 26624 0.000000 2.233905 5.594148 0 2.384083 4.280087 0
+ L3 26624 0.000000 2.384083 4.280087 0 3.097431 5.087296 0
+ L3 26624 0.000000 5.368881 2.890936 0 3.623056 2.083726 0
+ L3 26624 0.000000 3.623056 2.083726 0 5.368881 1.670736 0
+ L3 26624 0.000000 4.880801 -1.182656 0 3.566739 -1.201428 0
+ L3 26624 0.000000 3.566739 -1.201428 0 4.655533 -2.665668 0
+ L3 26624 0.000000 3.341471 -4.430265 0 1.896003 -3.172520 0
+ L3 26624 0.000000 1.896003 -3.172520 0 1.933548 -5.462742 0
+ L3 26624 0.000000 -0.675803 -5.838188 0 -0.694575 -3.904640 0
+ L3 26624 0.000000 -0.694575 -3.904640 0 -1.633191 -4.711850 0
+ L3 26624 0.000000 -0.901071 4.129908 0 -1.126339 3.172520 0
+ L3 26624 0.000000 1.520557 4.373948 0 1.539329 3.266382 0
+ L3 26624 0.000000 2.928480 3.754462 0 2.046182 3.022342 0
+ L3 26624 0.000000 3.397788 2.872163 0 2.440400 1.501785 0
+ L3 26624 0.000000 4.392720 0.788437 0 3.210065 1.107566 0
+ L3 26624 0.000000 4.505354 -0.319129 0 2.553034 -0.600714 0
+ L3 26624 0.000000 2.740757 -1.389151 0 3.660600 -2.703213 0
+ L3 26624 0.000000 2.928480 -3.078659 0 1.445468 -1.989865 0
+ L3 26624 0.000000 1.163883 -2.609351 0 0.788437 -3.754462 0
+ L3 26624 0.000000 0.056317 -3.735690 0 -0.206495 -2.233905 0
+ L3 26624 0.000000 -1.520557 -3.397788 0 -1.107566 -1.914776 0
+ L3 26624 0.000000 -2.872163 0.544397 0 -1.501785 -0.131406 0
+ L3 26624 0.000000 -1.220200 1.858459 0 -0.619486 0.675803 0
+ L3 26624 0.000000 0.938615 2.778302 0 0.262812 1.501785 0
+ L3 26624 0.000000 1.802142 2.046182 0 1.013705 1.220200 0
+ L3 26624 0.000000 2.496717 0.544397 0 0.994932 0.300357 0
+ L3 26624 0.000000 1.614419 -0.994932 0 0.694575 -0.431763 0
+ L3 26624 0.000000 0.187723 -1.407923 0 0.244040 -0.694575 0
+ L3 26624 0.000000 -0.281585 -0.469308 0 -0.863526 -1.257745 0
+ L3 26624 0.000000 -1.145111 0.488080 0 -0.356674 0.037545 0
+ L3 26624 0.000000 0.600714 0.957388 0 0.225268 0.206495 0
+ L3 26624 0.000000 -3.421825 1.213413 0 -4.344019 1.674510 0
+ L3 26624 0.000000 -4.271214 -0.994999 0 -3.106337 -0.630975 0
+ L3 26624 0.000000 -3.373288 -3.615971 0 -2.329753 -3.300483 0
+ F4 26624 0.000000 4 0
+ -3.154874 1.868656 0
+ -2.548167 1.164876 0
+ -1.480364 0.752316 0
+ -2.159875 1.625973 0
+ F4 26624 0.000000 4 0
+ -2.863655 -0.994999 0
+ -1.553169 -1.116340 0
+ -0.970730 -0.582438 0
+ -2.038534 -0.606707 0
+ F4 26624 0.000000 4 0
+ -1.431827 2.354021 0
+ -1.650242 3.130606 0
+ -2.451094 3.518898 0
+ -2.232680 2.887923 0
+ F4 26624 0.000000 4 0
+ -4.756579 0.024268 0
+ -3.713044 0.266951 0
+ -2.572436 -0.097073 0
+ -3.737312 -0.291219 0
+ F4 26624 0.000000 4 0
+ -3.931458 3.082069 0
+ -3.349020 2.499631 0
+ -2.451094 2.305485 0
+ -2.960728 2.887923 0
+ F4 26624 0.000000 4 0
+ -3.324752 -3.203410 0
+ -2.548167 -2.402558 0
+ -1.650242 -2.062802 0
+ -2.523899 -2.936459 0
+ END$SEGS
+STRUCTURE 485 3 0 0 0 Fn3 2 291.375000 395.041667 0 0.000000 "Lg Conifer 14"" Tree Conifer-14a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -1.888080 5.331336 0
+ -0.239190 6.525637 0
+ 0.952994 5.239333 0
+ 1.076558 -4.160617 0
+ -0.835281 -6.651130 0
+ -2.090212 -4.266763 0
+ -3.627501 -6.462890 0
+ -4.234619 -4.017274 0
+ -6.280801 -4.918345 0
+ -5.729509 -2.603980 0
+ -7.674651 -2.541234 0
+ -5.980495 -0.658838 0
+ -8.139259 0.000000 0
+ -6.562385 0.694575 0
+ -7.763813 1.933548 0
+ -5.384403 3.639298 0
+ -6.168735 5.804052 0
+ -3.376515 5.082467 0
+ -2.301071 6.626625 0
+ F4 26624 0.000000 28 0
+ -4.329509 -2.603980 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.227501 -6.462890 0
+ -0.690212 -4.266763 0
+ 0.564719 -6.651130 0
+ 2.476558 -4.160617 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 4.771502 -1.799632 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 4.455002 2.603980 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.352994 5.239333 0
+ 1.160810 6.525637 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -1.976515 5.082467 0
+ -4.768735 5.804052 0
+ -3.984403 3.639298 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -4.580495 -0.658838 0
+ -6.274651 -2.541234 0
+ F4 11206591 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.842080 -6.567137 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.187486 -2.842080 0
+ 6.677509 -1.627988 0
+ 4.054819 0.131406 0
+ 6.456765 2.759301 0
+ 4.663219 3.173196 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 2.952452 6.263614 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.510964 6.208428 0
+ -2.496717 3.285154 0
+ -5.766939 4.056173 0
+ -5.104707 1.765953 0
+ -3.059886 0.488080 0
+ -5.380637 0.441488 0
+ -6.484358 -1.103720 0
+ -2.102499 -1.445468 0
+ -5.518602 -4.276917 0
+ -1.614419 -3.792007 0
+ -1.701292 -6.805167 0
+ L3 26624 0.000000 -3.885868 2.290222 0 -5.124841 2.233905 0
+ L3 26624 0.000000 -5.387653 3.285154 0 -4.542899 3.078659 0
+ L3 26624 0.000000 -1.727052 5.537831 0 -1.595646 3.979730 0
+ L3 26624 0.000000 -1.595646 3.979730 0 -2.534262 5.087296 0
+ L3 26624 0.000000 2.233905 5.594148 0 2.384083 4.280087 0
+ L3 26624 0.000000 2.384083 4.280087 0 3.097431 5.087296 0
+ L3 26624 0.000000 5.368881 2.890936 0 3.623056 2.083726 0
+ L3 26624 0.000000 3.623056 2.083726 0 5.368881 1.670736 0
+ L3 26624 0.000000 4.880801 -1.182656 0 3.566739 -1.201428 0
+ L3 26624 0.000000 3.566739 -1.201428 0 4.655533 -2.665668 0
+ L3 26624 0.000000 3.341471 -4.430265 0 1.896003 -3.172520 0
+ L3 26624 0.000000 1.896003 -3.172520 0 1.933548 -5.462742 0
+ L3 26624 0.000000 -0.675803 -5.838188 0 -0.694575 -3.904640 0
+ L3 26624 0.000000 -0.694575 -3.904640 0 -1.633191 -4.711850 0
+ L3 26624 0.000000 -0.901071 4.129908 0 -1.126339 3.172520 0
+ L3 26624 0.000000 1.520557 4.373948 0 1.539329 3.266382 0
+ L3 26624 0.000000 2.928480 3.754462 0 2.046182 3.022342 0
+ L3 26624 0.000000 3.397788 2.872163 0 2.440400 1.501785 0
+ L3 26624 0.000000 4.392720 0.788437 0 3.210065 1.107566 0
+ L3 26624 0.000000 4.505354 -0.319129 0 2.553034 -0.600714 0
+ L3 26624 0.000000 2.740757 -1.389151 0 3.660600 -2.703213 0
+ L3 26624 0.000000 2.928480 -3.078659 0 1.445468 -1.989865 0
+ L3 26624 0.000000 1.163883 -2.609351 0 0.788437 -3.754462 0
+ L3 26624 0.000000 0.056317 -3.735690 0 -0.206495 -2.233905 0
+ L3 26624 0.000000 -1.520557 -3.397788 0 -1.107566 -1.914776 0
+ L3 26624 0.000000 -2.872163 0.544397 0 -1.501785 -0.131406 0
+ L3 26624 0.000000 -1.220200 1.858459 0 -0.619486 0.675803 0
+ L3 26624 0.000000 0.938615 2.778302 0 0.262812 1.501785 0
+ L3 26624 0.000000 1.802142 2.046182 0 1.013705 1.220200 0
+ L3 26624 0.000000 2.496717 0.544397 0 0.994932 0.300357 0
+ L3 26624 0.000000 1.614419 -0.994932 0 0.694575 -0.431763 0
+ L3 26624 0.000000 0.187723 -1.407923 0 0.244040 -0.694575 0
+ L3 26624 0.000000 -0.281585 -0.469308 0 -0.863526 -1.257745 0
+ L3 26624 0.000000 -1.145111 0.488080 0 -0.356674 0.037545 0
+ L3 26624 0.000000 0.600714 0.957388 0 0.225268 0.206495 0
+ L3 26624 0.000000 -3.421825 1.213413 0 -4.344019 1.674510 0
+ L3 26624 0.000000 -4.271214 -0.994999 0 -3.106337 -0.630975 0
+ L3 26624 0.000000 -3.373288 -3.615971 0 -2.329753 -3.300483 0
+ F4 26624 0.000000 4 0
+ -3.154874 1.868656 0
+ -2.548167 1.164876 0
+ -1.480364 0.752316 0
+ -2.159875 1.625973 0
+ F4 26624 0.000000 4 0
+ -2.863655 -0.994999 0
+ -1.553169 -1.116340 0
+ -0.970730 -0.582438 0
+ -2.038534 -0.606707 0
+ F4 26624 0.000000 4 0
+ -1.431827 2.354021 0
+ -1.650242 3.130606 0
+ -2.451094 3.518898 0
+ -2.232680 2.887923 0
+ F4 26624 0.000000 4 0
+ -4.756579 0.024268 0
+ -3.713044 0.266951 0
+ -2.572436 -0.097073 0
+ -3.737312 -0.291219 0
+ F4 26624 0.000000 4 0
+ -3.931458 3.082069 0
+ -3.349020 2.499631 0
+ -2.451094 2.305485 0
+ -2.960728 2.887923 0
+ F4 26624 0.000000 4 0
+ -3.324752 -3.203410 0
+ -2.548167 -2.402558 0
+ -1.650242 -2.062802 0
+ -2.523899 -2.936459 0
+ END$SEGS
+STRUCTURE 486 3 0 0 0 Fn3 2 234.375000 388.041667 0 0.000000 "Lg Conifer 10"" Tree Conifer-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.170850 -4.661169 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -2.411796 -3.630334 0
+ -4.406239 -4.145751 0
+ -3.846002 -2.599498 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -4.271782 0.470599 0
+ -5.481893 1.815167 0
+ -4.092507 1.859986 0
+ -4.486286 3.513104 0
+ -3.024728 2.869482 0
+ -2.591072 4.616350 0
+ -1.493008 3.047688 0
+ -0.596630 4.750807 0
+ 0.768970 2.971870 0
+ 0.680710 -3.742381 0
+ F4 26624 0.000000 28 0
+ -3.092507 1.859986 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.591072 4.616350 0
+ -0.493008 3.047688 0
+ 0.403370 4.750807 0
+ 1.768970 2.971870 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 3.408216 1.285452 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.182144 -1.859986 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.680710 -3.742381 0
+ 0.829150 -4.661169 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -1.411796 -3.630334 0
+ -3.406239 -4.145751 0
+ -2.846002 -2.599498 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -3.271782 0.470599 0
+ -4.481893 1.815167 0
+ F4 11206591 0.000000 26 0
+ 0.670440 3.137657 0
+ 2.030057 4.690812 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.705347 2.030057 0
+ 4.769649 1.162848 0
+ 2.896299 -0.093862 0
+ 4.611975 -1.970929 0
+ 3.330871 -2.266569 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 2.108894 -4.474010 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.793546 -4.434591 0
+ -1.783369 -2.346539 0
+ -4.119242 -2.897266 0
+ -3.646219 -1.261395 0
+ -2.185633 -0.348629 0
+ -3.843312 -0.315349 0
+ -4.631684 0.788372 0
+ -1.501785 1.032477 0
+ -3.941859 3.054941 0
+ -1.153156 2.708576 0
+ -1.215208 4.860833 0
+ L3 26624 0.000000 -2.775620 -1.635873 0 -3.660600 -1.595646 0
+ L3 26624 0.000000 -3.848324 -2.346539 0 -3.244928 -2.199042 0
+ L3 26624 0.000000 -1.233609 -3.955594 0 -1.139747 -2.842664 0
+ L3 26624 0.000000 -1.139747 -2.842664 0 -1.810187 -3.633783 0
+ L3 26624 0.000000 1.595646 -3.995820 0 1.702917 -3.057205 0
+ L3 26624 0.000000 1.702917 -3.057205 0 2.212451 -3.633783 0
+ L3 26624 0.000000 3.834915 -2.064954 0 2.587897 -1.488376 0
+ L3 26624 0.000000 2.587897 -1.488376 0 3.834915 -1.193383 0
+ L3 26624 0.000000 3.486286 0.844754 0 2.547671 0.858163 0
+ L3 26624 0.000000 2.547671 0.858163 0 3.325381 1.904049 0
+ L3 26624 0.000000 2.386765 3.164475 0 1.354288 2.266086 0
+ L3 26624 0.000000 1.354288 2.266086 0 1.381106 3.901959 0
+ L3 26624 0.000000 -0.482717 4.170135 0 -0.496125 2.789029 0
+ L3 26624 0.000000 -0.496125 2.789029 0 -1.166565 3.365607 0
+ L3 26624 0.000000 -0.643622 -2.949934 0 -0.804528 -2.266086 0
+ L3 26624 0.000000 1.086112 -3.124249 0 1.099521 -2.333130 0
+ L3 26624 0.000000 2.091772 -2.681759 0 1.461558 -2.158816 0
+ L3 26624 0.000000 2.426991 -2.051545 0 1.743143 -1.072703 0
+ L3 26624 0.000000 3.137657 -0.563169 0 2.292904 -0.791119 0
+ L3 26624 0.000000 3.218110 0.227949 0 1.823596 0.429081 0
+ L3 26624 0.000000 1.957684 0.992251 0 2.614715 1.930866 0
+ L3 26624 0.000000 2.091772 2.199042 0 1.032477 1.421332 0
+ L3 26624 0.000000 0.831345 1.863822 0 0.563169 2.681759 0
+ L3 26624 0.000000 0.040226 2.668350 0 -0.147497 1.595646 0
+ L3 26624 0.000000 -1.086112 2.426991 0 -0.791119 1.367697 0
+ L3 26624 0.000000 -2.051545 -0.388855 0 -1.072703 0.093862 0
+ L3 26624 0.000000 -0.871572 -1.327470 0 -0.442490 -0.482717 0
+ L3 26624 0.000000 0.670440 -1.984501 0 0.187723 -1.072703 0
+ L3 26624 0.000000 1.287244 -1.461558 0 0.724075 -0.871572 0
+ L3 26624 0.000000 1.783369 -0.388855 0 0.710666 -0.214541 0
+ L3 26624 0.000000 1.153156 0.710666 0 0.496125 0.308402 0
+ L3 26624 0.000000 0.134088 1.005659 0 0.174314 0.496125 0
+ L3 26624 0.000000 -0.201132 0.335220 0 -0.616804 0.898389 0
+ L3 26624 0.000000 -0.817936 -0.348629 0 -0.254767 -0.026818 0
+ L3 26624 0.000000 0.429081 -0.683848 0 0.160906 -0.147497 0
+ L3 26624 0.000000 -2.444160 -0.866724 0 -3.102870 -1.196079 0
+ L3 26624 0.000000 -3.050867 0.710713 0 -2.218812 0.450696 0
+ L3 26624 0.000000 -2.409492 2.582836 0 -1.664109 2.357488 0
+ F4 26624 0.000000 4 0
+ -2.253481 -1.334754 0
+ -1.820120 -0.832055 0
+ -1.057403 -0.537369 0
+ -1.542768 -1.161410 0
+ F4 26624 0.000000 4 0
+ -2.045468 0.710713 0
+ -1.109406 0.797386 0
+ -0.693379 0.416027 0
+ -1.456096 0.433362 0
+ F4 26624 0.000000 4 0
+ -1.022734 -1.681444 0
+ -1.178744 -2.236147 0
+ -1.750782 -2.513498 0
+ -1.594771 -2.062802 0
+ F4 26624 0.000000 4 0
+ -3.397556 -0.017334 0
+ -2.652174 -0.190679 0
+ -1.837454 0.069338 0
+ -2.669509 0.208014 0
+ F4 26624 0.000000 4 0
+ -2.808184 -2.201478 0
+ -2.392157 -1.785451 0
+ -1.750782 -1.646775 0
+ -2.114806 -2.062802 0
+ F4 26624 0.000000 4 0
+ -2.374823 2.288150 0
+ -1.820120 1.716113 0
+ -1.178744 1.473430 0
+ -1.802785 2.097471 0
+ END$SEGS
+STRUCTURE 487 3 0 0 0 Fn3 2 331.375000 397.541667 0 0.000000 "Lg Conifer 10"" Tree Conifer-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.170850 -4.661169 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -2.411796 -3.630334 0
+ -4.406239 -4.145751 0
+ -3.846002 -2.599498 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -4.271782 0.470599 0
+ -5.481893 1.815167 0
+ -4.092507 1.859986 0
+ -4.486286 3.513104 0
+ -3.024728 2.869482 0
+ -2.591072 4.616350 0
+ -1.493008 3.047688 0
+ -0.596630 4.750807 0
+ 0.768970 2.971870 0
+ 0.680710 -3.742381 0
+ F4 26624 0.000000 28 0
+ -3.092507 1.859986 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.591072 4.616350 0
+ -0.493008 3.047688 0
+ 0.403370 4.750807 0
+ 1.768970 2.971870 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 3.408216 1.285452 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.182144 -1.859986 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.680710 -3.742381 0
+ 0.829150 -4.661169 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -1.411796 -3.630334 0
+ -3.406239 -4.145751 0
+ -2.846002 -2.599498 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -3.271782 0.470599 0
+ -4.481893 1.815167 0
+ F4 11206591 0.000000 26 0
+ 0.670440 3.137657 0
+ 2.030057 4.690812 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.705347 2.030057 0
+ 4.769649 1.162848 0
+ 2.896299 -0.093862 0
+ 4.611975 -1.970929 0
+ 3.330871 -2.266569 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 2.108894 -4.474010 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.793546 -4.434591 0
+ -1.783369 -2.346539 0
+ -4.119242 -2.897266 0
+ -3.646219 -1.261395 0
+ -2.185633 -0.348629 0
+ -3.843312 -0.315349 0
+ -4.631684 0.788372 0
+ -1.501785 1.032477 0
+ -3.941859 3.054941 0
+ -1.153156 2.708576 0
+ -1.215208 4.860833 0
+ L3 26624 0.000000 -2.775620 -1.635873 0 -3.660600 -1.595646 0
+ L3 26624 0.000000 -3.848324 -2.346539 0 -3.244928 -2.199042 0
+ L3 26624 0.000000 -1.233609 -3.955594 0 -1.139747 -2.842664 0
+ L3 26624 0.000000 -1.139747 -2.842664 0 -1.810187 -3.633783 0
+ L3 26624 0.000000 1.595646 -3.995820 0 1.702917 -3.057205 0
+ L3 26624 0.000000 1.702917 -3.057205 0 2.212451 -3.633783 0
+ L3 26624 0.000000 3.834915 -2.064954 0 2.587897 -1.488376 0
+ L3 26624 0.000000 2.587897 -1.488376 0 3.834915 -1.193383 0
+ L3 26624 0.000000 3.486286 0.844754 0 2.547671 0.858163 0
+ L3 26624 0.000000 2.547671 0.858163 0 3.325381 1.904049 0
+ L3 26624 0.000000 2.386765 3.164475 0 1.354288 2.266086 0
+ L3 26624 0.000000 1.354288 2.266086 0 1.381106 3.901959 0
+ L3 26624 0.000000 -0.482717 4.170135 0 -0.496125 2.789029 0
+ L3 26624 0.000000 -0.496125 2.789029 0 -1.166565 3.365607 0
+ L3 26624 0.000000 -0.643622 -2.949934 0 -0.804528 -2.266086 0
+ L3 26624 0.000000 1.086112 -3.124249 0 1.099521 -2.333130 0
+ L3 26624 0.000000 2.091772 -2.681759 0 1.461558 -2.158816 0
+ L3 26624 0.000000 2.426991 -2.051545 0 1.743143 -1.072703 0
+ L3 26624 0.000000 3.137657 -0.563169 0 2.292904 -0.791119 0
+ L3 26624 0.000000 3.218110 0.227949 0 1.823596 0.429081 0
+ L3 26624 0.000000 1.957684 0.992251 0 2.614715 1.930866 0
+ L3 26624 0.000000 2.091772 2.199042 0 1.032477 1.421332 0
+ L3 26624 0.000000 0.831345 1.863822 0 0.563169 2.681759 0
+ L3 26624 0.000000 0.040226 2.668350 0 -0.147497 1.595646 0
+ L3 26624 0.000000 -1.086112 2.426991 0 -0.791119 1.367697 0
+ L3 26624 0.000000 -2.051545 -0.388855 0 -1.072703 0.093862 0
+ L3 26624 0.000000 -0.871572 -1.327470 0 -0.442490 -0.482717 0
+ L3 26624 0.000000 0.670440 -1.984501 0 0.187723 -1.072703 0
+ L3 26624 0.000000 1.287244 -1.461558 0 0.724075 -0.871572 0
+ L3 26624 0.000000 1.783369 -0.388855 0 0.710666 -0.214541 0
+ L3 26624 0.000000 1.153156 0.710666 0 0.496125 0.308402 0
+ L3 26624 0.000000 0.134088 1.005659 0 0.174314 0.496125 0
+ L3 26624 0.000000 -0.201132 0.335220 0 -0.616804 0.898389 0
+ L3 26624 0.000000 -0.817936 -0.348629 0 -0.254767 -0.026818 0
+ L3 26624 0.000000 0.429081 -0.683848 0 0.160906 -0.147497 0
+ L3 26624 0.000000 -2.444160 -0.866724 0 -3.102870 -1.196079 0
+ L3 26624 0.000000 -3.050867 0.710713 0 -2.218812 0.450696 0
+ L3 26624 0.000000 -2.409492 2.582836 0 -1.664109 2.357488 0
+ F4 26624 0.000000 4 0
+ -2.253481 -1.334754 0
+ -1.820120 -0.832055 0
+ -1.057403 -0.537369 0
+ -1.542768 -1.161410 0
+ F4 26624 0.000000 4 0
+ -2.045468 0.710713 0
+ -1.109406 0.797386 0
+ -0.693379 0.416027 0
+ -1.456096 0.433362 0
+ F4 26624 0.000000 4 0
+ -1.022734 -1.681444 0
+ -1.178744 -2.236147 0
+ -1.750782 -2.513498 0
+ -1.594771 -2.062802 0
+ F4 26624 0.000000 4 0
+ -3.397556 -0.017334 0
+ -2.652174 -0.190679 0
+ -1.837454 0.069338 0
+ -2.669509 0.208014 0
+ F4 26624 0.000000 4 0
+ -2.808184 -2.201478 0
+ -2.392157 -1.785451 0
+ -1.750782 -1.646775 0
+ -2.114806 -2.062802 0
+ F4 26624 0.000000 4 0
+ -2.374823 2.288150 0
+ -1.820120 1.716113 0
+ -1.178744 1.473430 0
+ -1.802785 2.097471 0
+ END$SEGS
+STRUCTURE 488 3 0 0 0 Fn3 2 303.875000 403.041667 0 0.000000 "Lg Conifer 10"" Tree Conifer-10b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.170850 -4.661169 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -2.411796 -3.630334 0
+ -4.406239 -4.145751 0
+ -3.846002 -2.599498 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -4.271782 0.470599 0
+ -5.481893 1.815167 0
+ -4.092507 1.859986 0
+ -4.486286 3.513104 0
+ -3.024728 2.869482 0
+ -2.591072 4.616350 0
+ -1.493008 3.047688 0
+ -0.596630 4.750807 0
+ 0.768970 2.971870 0
+ 0.680710 -3.742381 0
+ F4 26624 0.000000 28 0
+ -3.092507 1.859986 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.591072 4.616350 0
+ -0.493008 3.047688 0
+ 0.403370 4.750807 0
+ 1.768970 2.971870 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 3.408216 1.285452 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.182144 -1.859986 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.680710 -3.742381 0
+ 0.829150 -4.661169 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -1.411796 -3.630334 0
+ -3.406239 -4.145751 0
+ -2.846002 -2.599498 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -3.271782 0.470599 0
+ -4.481893 1.815167 0
+ F4 11206591 0.000000 26 0
+ 0.670440 3.137657 0
+ 2.030057 4.690812 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.705347 2.030057 0
+ 4.769649 1.162848 0
+ 2.896299 -0.093862 0
+ 4.611975 -1.970929 0
+ 3.330871 -2.266569 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 2.108894 -4.474010 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.793546 -4.434591 0
+ -1.783369 -2.346539 0
+ -4.119242 -2.897266 0
+ -3.646219 -1.261395 0
+ -2.185633 -0.348629 0
+ -3.843312 -0.315349 0
+ -4.631684 0.788372 0
+ -1.501785 1.032477 0
+ -3.941859 3.054941 0
+ -1.153156 2.708576 0
+ -1.215208 4.860833 0
+ L3 26624 0.000000 -2.775620 -1.635873 0 -3.660600 -1.595646 0
+ L3 26624 0.000000 -3.848324 -2.346539 0 -3.244928 -2.199042 0
+ L3 26624 0.000000 -1.233609 -3.955594 0 -1.139747 -2.842664 0
+ L3 26624 0.000000 -1.139747 -2.842664 0 -1.810187 -3.633783 0
+ L3 26624 0.000000 1.595646 -3.995820 0 1.702917 -3.057205 0
+ L3 26624 0.000000 1.702917 -3.057205 0 2.212451 -3.633783 0
+ L3 26624 0.000000 3.834915 -2.064954 0 2.587897 -1.488376 0
+ L3 26624 0.000000 2.587897 -1.488376 0 3.834915 -1.193383 0
+ L3 26624 0.000000 3.486286 0.844754 0 2.547671 0.858163 0
+ L3 26624 0.000000 2.547671 0.858163 0 3.325381 1.904049 0
+ L3 26624 0.000000 2.386765 3.164475 0 1.354288 2.266086 0
+ L3 26624 0.000000 1.354288 2.266086 0 1.381106 3.901959 0
+ L3 26624 0.000000 -0.482717 4.170135 0 -0.496125 2.789029 0
+ L3 26624 0.000000 -0.496125 2.789029 0 -1.166565 3.365607 0
+ L3 26624 0.000000 -0.643622 -2.949934 0 -0.804528 -2.266086 0
+ L3 26624 0.000000 1.086112 -3.124249 0 1.099521 -2.333130 0
+ L3 26624 0.000000 2.091772 -2.681759 0 1.461558 -2.158816 0
+ L3 26624 0.000000 2.426991 -2.051545 0 1.743143 -1.072703 0
+ L3 26624 0.000000 3.137657 -0.563169 0 2.292904 -0.791119 0
+ L3 26624 0.000000 3.218110 0.227949 0 1.823596 0.429081 0
+ L3 26624 0.000000 1.957684 0.992251 0 2.614715 1.930866 0
+ L3 26624 0.000000 2.091772 2.199042 0 1.032477 1.421332 0
+ L3 26624 0.000000 0.831345 1.863822 0 0.563169 2.681759 0
+ L3 26624 0.000000 0.040226 2.668350 0 -0.147497 1.595646 0
+ L3 26624 0.000000 -1.086112 2.426991 0 -0.791119 1.367697 0
+ L3 26624 0.000000 -2.051545 -0.388855 0 -1.072703 0.093862 0
+ L3 26624 0.000000 -0.871572 -1.327470 0 -0.442490 -0.482717 0
+ L3 26624 0.000000 0.670440 -1.984501 0 0.187723 -1.072703 0
+ L3 26624 0.000000 1.287244 -1.461558 0 0.724075 -0.871572 0
+ L3 26624 0.000000 1.783369 -0.388855 0 0.710666 -0.214541 0
+ L3 26624 0.000000 1.153156 0.710666 0 0.496125 0.308402 0
+ L3 26624 0.000000 0.134088 1.005659 0 0.174314 0.496125 0
+ L3 26624 0.000000 -0.201132 0.335220 0 -0.616804 0.898389 0
+ L3 26624 0.000000 -0.817936 -0.348629 0 -0.254767 -0.026818 0
+ L3 26624 0.000000 0.429081 -0.683848 0 0.160906 -0.147497 0
+ L3 26624 0.000000 -2.444160 -0.866724 0 -3.102870 -1.196079 0
+ L3 26624 0.000000 -3.050867 0.710713 0 -2.218812 0.450696 0
+ L3 26624 0.000000 -2.409492 2.582836 0 -1.664109 2.357488 0
+ F4 26624 0.000000 4 0
+ -2.253481 -1.334754 0
+ -1.820120 -0.832055 0
+ -1.057403 -0.537369 0
+ -1.542768 -1.161410 0
+ F4 26624 0.000000 4 0
+ -2.045468 0.710713 0
+ -1.109406 0.797386 0
+ -0.693379 0.416027 0
+ -1.456096 0.433362 0
+ F4 26624 0.000000 4 0
+ -1.022734 -1.681444 0
+ -1.178744 -2.236147 0
+ -1.750782 -2.513498 0
+ -1.594771 -2.062802 0
+ F4 26624 0.000000 4 0
+ -3.397556 -0.017334 0
+ -2.652174 -0.190679 0
+ -1.837454 0.069338 0
+ -2.669509 0.208014 0
+ F4 26624 0.000000 4 0
+ -2.808184 -2.201478 0
+ -2.392157 -1.785451 0
+ -1.750782 -1.646775 0
+ -2.114806 -2.062802 0
+ F4 26624 0.000000 4 0
+ -2.374823 2.288150 0
+ -1.820120 1.716113 0
+ -1.178744 1.473430 0
+ -1.802785 2.097471 0
+ END$SEGS
+STRUCTURE 489 3 0 0 0 Fn3 2 375.375000 399.541667 0 0.000000 "Lg Conifer 12"" Tree Conifer-12a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -1.618354 4.569717 0
+ -0.205020 5.593403 0
+ 0.816852 4.490857 0
+ 0.922764 -3.566244 0
+ -0.715956 -5.700969 0
+ -1.791610 -3.657225 0
+ -3.109287 -5.539620 0
+ -3.629673 -3.443378 0
+ -5.383543 -4.215724 0
+ -4.911008 -2.231983 0
+ -6.578272 -2.178200 0
+ -5.126139 -0.564719 0
+ -6.976508 0.000000 0
+ -5.624902 0.595350 0
+ -6.654697 1.657327 0
+ -4.615203 3.119398 0
+ -5.287487 4.974902 0
+ -2.894156 4.356400 0
+ -1.972346 5.679965 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ L3 26624 0.000000 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 0.000000 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 0.000000 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 0.000000 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 0.000000 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 0.000000 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 0.000000 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 0.000000 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 0.000000 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 0.000000 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 0.000000 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 0.000000 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 0.000000 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 0.000000 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 0.000000 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 0.000000 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 0.000000 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 0.000000 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 0.000000 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 0.000000 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 0.000000 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 0.000000 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 0.000000 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 0.000000 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 0.000000 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 0.000000 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 0.000000 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 0.000000 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 0.000000 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 0.000000 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 0.000000 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 0.000000 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 0.000000 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 0.000000 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 0.000000 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 0.000000 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 0.000000 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 0.000000 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ END$SEGS
+STRUCTURE 490 3 0 0 0 Fn3 2 407.375000 405.541667 0 0.000000 "Lg Conifer 12"" Tree Conifer-12a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -1.618354 4.569717 0
+ -0.205020 5.593403 0
+ 0.816852 4.490857 0
+ 0.922764 -3.566244 0
+ -0.715956 -5.700969 0
+ -1.791610 -3.657225 0
+ -3.109287 -5.539620 0
+ -3.629673 -3.443378 0
+ -5.383543 -4.215724 0
+ -4.911008 -2.231983 0
+ -6.578272 -2.178200 0
+ -5.126139 -0.564719 0
+ -6.976508 0.000000 0
+ -5.624902 0.595350 0
+ -6.654697 1.657327 0
+ -4.615203 3.119398 0
+ -5.287487 4.974902 0
+ -2.894156 4.356400 0
+ -1.972346 5.679965 0
+ F4 26624 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+ F4 11206591 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+ L3 26624 0.000000 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 0.000000 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 0.000000 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 0.000000 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 0.000000 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 0.000000 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 0.000000 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 0.000000 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 0.000000 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 0.000000 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 0.000000 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 0.000000 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 0.000000 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 0.000000 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 0.000000 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 0.000000 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 0.000000 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 0.000000 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 0.000000 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 0.000000 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 0.000000 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 0.000000 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 0.000000 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 0.000000 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 0.000000 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 0.000000 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 0.000000 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 0.000000 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 0.000000 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 0.000000 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 0.000000 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 0.000000 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 0.000000 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 0.000000 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 0.000000 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 0.000000 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 0.000000 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 0.000000 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ F4 26624 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 26624 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 26624 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 26624 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 26624 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 26624 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ END$SEGS
+STRUCTURE 491 3 0 0 0 Fn3 2 429.875000 402.541667 0 0.000000 "Lg Conifer 20"" Tree Conifer-20a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -2.697257 7.616194 0
+ -0.341699 9.322338 0
+ 1.361420 7.484762 0
+ 1.537940 -5.943739 0
+ -1.193259 -9.501614 0
+ -2.986017 -6.095375 0
+ -5.182144 -9.232701 0
+ -6.049455 -5.738963 0
+ -8.972572 -7.026207 0
+ -8.185013 -3.719972 0
+ -10.963787 -3.630334 0
+ -8.543564 -0.941198 0
+ -11.627513 0.000000 0
+ -9.374836 0.992251 0
+ -11.091161 2.762211 0
+ -7.692005 5.198996 0
+ -8.812478 8.291503 0
+ -4.823593 7.260667 0
+ -3.287244 9.466608 0
+ F4 26624 0.000000 28 0
+ -6.185013 -3.719972 0
+ -6.972572 -7.026207 0
+ -4.049455 -5.738963 0
+ -3.182144 -9.232701 0
+ -0.986017 -6.095375 0
+ 0.806741 -9.501614 0
+ 3.537940 -5.943739 0
+ 6.409403 -8.045276 0
+ 5.283064 -5.068524 0
+ 6.816431 -2.570903 0
+ 9.412972 -0.697257 0
+ 7.535741 1.045886 0
+ 9.305702 3.566739 0
+ 6.364289 3.719972 0
+ 5.792598 5.014888 0
+ 5.712146 7.911188 0
+ 3.361420 7.484762 0
+ 1.658301 9.322338 0
+ -0.697257 7.616194 0
+ -1.287244 9.466608 0
+ -2.823593 7.260667 0
+ -6.812478 8.291503 0
+ -5.692005 5.198996 0
+ -9.091161 2.762211 0
+ -7.374836 0.992251 0
+ -9.627513 0.000000 0
+ -6.543564 -0.941198 0
+ -8.963787 -3.630334 0
+ F4 11206591 0.000000 26 0
+ 1.340879 -6.275315 0
+ 4.060115 -9.381624 0
+ 5.014888 -7.053025 0
+ 4.210361 -3.915367 0
+ 7.410695 -4.060115 0
+ 9.539298 -2.325697 0
+ 5.792598 0.187723 0
+ 9.223950 3.941859 0
+ 6.661741 4.533138 0
+ 4.746713 4.103091 0
+ 4.639442 6.570308 0
+ 4.217789 8.948020 0
+ 1.260427 5.792598 0
+ -1.045886 6.114409 0
+ -1.582238 7.348018 0
+ -3.587092 8.869182 0
+ -3.566739 4.693077 0
+ -8.238485 5.794532 0
+ -7.292439 2.522790 0
+ -4.371266 0.697257 0
+ -7.686625 0.630697 0
+ -9.263368 -1.576744 0
+ -3.003570 -2.064954 0
+ -7.883718 -6.109881 0
+ -2.306312 -5.417152 0
+ -2.430417 -9.721667 0
+ L3 26624 0.000000 -5.551240 3.271745 0 -7.321201 3.191293 0
+ L3 26624 0.000000 -7.696647 4.693077 0 -6.489856 4.398084 0
+ L3 26624 0.000000 -2.467218 7.911188 0 -2.279495 5.685328 0
+ L3 26624 0.000000 -2.279495 5.685328 0 -3.620374 7.267566 0
+ L3 26624 0.000000 3.191293 7.991640 0 3.405833 6.114409 0
+ L3 26624 0.000000 3.405833 6.114409 0 4.424902 7.267566 0
+ L3 26624 0.000000 7.669829 4.129908 0 5.175794 2.976752 0
+ L3 26624 0.000000 5.175794 2.976752 0 7.669829 2.386765 0
+ L3 26624 0.000000 6.972572 -1.689508 0 5.095341 -1.716325 0
+ L3 26624 0.000000 5.095341 -1.716325 0 6.650761 -3.808097 0
+ L3 26624 0.000000 4.773530 -6.328950 0 2.708576 -4.532172 0
+ L3 26624 0.000000 2.708576 -4.532172 0 2.762211 -7.803917 0
+ L3 26624 0.000000 -0.965433 -8.340269 0 -0.992251 -5.578058 0
+ L3 26624 0.000000 -0.992251 -5.578058 0 -2.333130 -6.731214 0
+ L3 26624 0.000000 -1.287244 5.899869 0 -1.609055 4.532172 0
+ L3 26624 0.000000 2.172224 6.248497 0 2.199042 4.666260 0
+ L3 26624 0.000000 4.183543 5.363517 0 2.923117 4.317631 0
+ L3 26624 0.000000 4.853983 4.103091 0 3.486286 2.145407 0
+ L3 26624 0.000000 6.275315 1.126339 0 4.585807 1.582238 0
+ L3 26624 0.000000 6.436220 -0.455899 0 3.647192 -0.858163 0
+ L3 26624 0.000000 3.915367 -1.984501 0 5.229429 -3.861732 0
+ L3 26624 0.000000 4.183543 -4.398084 0 2.064954 -2.842664 0
+ L3 26624 0.000000 1.662690 -3.727644 0 1.126339 -5.363517 0
+ L3 26624 0.000000 0.080453 -5.336699 0 -0.294993 -3.191293 0
+ L3 26624 0.000000 -2.172224 -4.853983 0 -1.582238 -2.735394 0
+ L3 26624 0.000000 -4.103091 0.777710 0 -2.145407 -0.187723 0
+ L3 26624 0.000000 -1.743143 2.654941 0 -0.884980 0.965433 0
+ L3 26624 0.000000 1.340879 3.969003 0 0.375446 2.145407 0
+ L3 26624 0.000000 2.574488 2.923117 0 1.448150 1.743143 0
+ L3 26624 0.000000 3.566739 0.777710 0 1.421332 0.429081 0
+ L3 26624 0.000000 2.306312 -1.421332 0 0.992251 -0.616804 0
+ L3 26624 0.000000 0.268176 -2.011319 0 0.348629 -0.992251 0
+ L3 26624 0.000000 -0.402264 -0.670440 0 -1.233609 -1.796778 0
+ L3 26624 0.000000 -1.635873 0.697257 0 -0.509534 0.053635 0
+ L3 26624 0.000000 0.858163 1.367697 0 0.321811 0.294993 0
+ L3 26624 0.000000 -4.888321 1.733447 0 -6.205741 2.392157 0
+ L3 26624 0.000000 -6.101734 -1.421427 0 -4.437625 -0.901393 0
+ L3 26624 0.000000 -4.818983 -5.165673 0 -3.328219 -4.714976 0
+ F4 26624 0.000000 4 0
+ -4.506963 2.669509 0
+ -3.640239 1.664109 0
+ -2.114806 1.074737 0
+ -3.085536 2.322819 0
+ F4 26624 0.000000 4 0
+ -4.090935 -1.421427 0
+ -2.218812 -1.594771 0
+ -1.386758 -0.832055 0
+ -2.912191 -0.866724 0
+ F4 26624 0.000000 4 0
+ -2.045468 3.362887 0
+ -2.357488 4.472294 0
+ -3.501563 5.026997 0
+ -3.189543 4.125604 0
+ F4 26624 0.000000 4 0
+ -6.795113 0.034669 0
+ -5.304348 0.381358 0
+ -3.674908 -0.138676 0
+ -5.339017 -0.416027 0
+ F4 26624 0.000000 4 0
+ -5.616369 4.402956 0
+ -4.784314 3.570901 0
+ -3.501563 3.293550 0
+ -4.229611 4.125604 0
+ F4 26624 0.000000 4 0
+ -4.749645 -4.576300 0
+ -3.640239 -3.432225 0
+ -2.357488 -2.946860 0
+ -3.605570 -4.194942 0
+ END$SEGS
+STRUCTURE 492 3 0 0 0 Fn3 2 448.875000 390.041667 0 0.000000 "Lg Conifer 20"" Tree Conifer-20b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.341699 -9.322338 0
+ -2.697257 -7.616194 0
+ -3.287244 -9.466608 0
+ -4.823593 -7.260667 0
+ -8.812478 -8.291503 0
+ -7.692005 -5.198996 0
+ -11.091161 -2.762211 0
+ -9.374836 -0.992251 0
+ -11.627513 0.000000 0
+ -8.543564 0.941198 0
+ -10.963787 3.630334 0
+ -8.185013 3.719972 0
+ -8.972572 7.026207 0
+ -6.049455 5.738963 0
+ -5.182144 9.232701 0
+ -2.986017 6.095375 0
+ -1.193259 9.501614 0
+ 1.537940 5.943739 0
+ 1.361420 -7.484762 0
+ F4 26624 0.000000 28 0
+ -6.185013 3.719972 0
+ -6.972572 7.026207 0
+ -4.049455 5.738963 0
+ -3.182144 9.232701 0
+ -0.986017 6.095375 0
+ 0.806741 9.501614 0
+ 3.537940 5.943739 0
+ 6.409403 8.045276 0
+ 5.283064 5.068524 0
+ 6.816431 2.570903 0
+ 9.412972 0.697257 0
+ 7.535741 -1.045886 0
+ 9.305702 -3.566739 0
+ 6.364289 -3.719972 0
+ 5.792598 -5.014888 0
+ 5.712146 -7.911188 0
+ 3.361420 -7.484762 0
+ 1.658301 -9.322338 0
+ -0.697257 -7.616194 0
+ -1.287244 -9.466608 0
+ -2.823593 -7.260667 0
+ -6.812478 -8.291503 0
+ -5.692005 -5.198996 0
+ -9.091161 -2.762211 0
+ -7.374836 -0.992251 0
+ -9.627513 0.000000 0
+ -6.543564 0.941198 0
+ -8.963787 3.630334 0
+ F4 11206591 0.000000 26 0
+ 1.340879 6.275315 0
+ 4.060115 9.381624 0
+ 5.014888 7.053025 0
+ 4.210361 3.915367 0
+ 7.410695 4.060115 0
+ 9.539298 2.325697 0
+ 5.792598 -0.187723 0
+ 9.223950 -3.941859 0
+ 6.661741 -4.533138 0
+ 4.746713 -4.103091 0
+ 4.639442 -6.570308 0
+ 4.217789 -8.948020 0
+ 1.260427 -5.792598 0
+ -1.045886 -6.114409 0
+ -1.582238 -7.348018 0
+ -3.587092 -8.869182 0
+ -3.566739 -4.693077 0
+ -8.238485 -5.794532 0
+ -7.292439 -2.522790 0
+ -4.371266 -0.697257 0
+ -7.686625 -0.630697 0
+ -9.263368 1.576744 0
+ -3.003570 2.064954 0
+ -7.883718 6.109881 0
+ -2.306312 5.417152 0
+ -2.430417 9.721667 0
+ L3 26624 0.000000 -5.551240 -3.271745 0 -7.321201 -3.191293 0
+ L3 26624 0.000000 -7.696647 -4.693077 0 -6.489856 -4.398084 0
+ L3 26624 0.000000 -2.467218 -7.911188 0 -2.279495 -5.685328 0
+ L3 26624 0.000000 -2.279495 -5.685328 0 -3.620374 -7.267566 0
+ L3 26624 0.000000 3.191293 -7.991640 0 3.405833 -6.114409 0
+ L3 26624 0.000000 3.405833 -6.114409 0 4.424902 -7.267566 0
+ L3 26624 0.000000 7.669829 -4.129908 0 5.175794 -2.976752 0
+ L3 26624 0.000000 5.175794 -2.976752 0 7.669829 -2.386765 0
+ L3 26624 0.000000 6.972572 1.689508 0 5.095341 1.716325 0
+ L3 26624 0.000000 5.095341 1.716325 0 6.650761 3.808097 0
+ L3 26624 0.000000 4.773530 6.328950 0 2.708576 4.532172 0
+ L3 26624 0.000000 2.708576 4.532172 0 2.762211 7.803917 0
+ L3 26624 0.000000 -0.965433 8.340269 0 -0.992251 5.578058 0
+ L3 26624 0.000000 -0.992251 5.578058 0 -2.333130 6.731214 0
+ L3 26624 0.000000 -1.287244 -5.899869 0 -1.609055 -4.532172 0
+ L3 26624 0.000000 2.172224 -6.248497 0 2.199042 -4.666260 0
+ L3 26624 0.000000 4.183543 -5.363517 0 2.923117 -4.317631 0
+ L3 26624 0.000000 4.853983 -4.103091 0 3.486286 -2.145407 0
+ L3 26624 0.000000 6.275315 -1.126339 0 4.585807 -1.582238 0
+ L3 26624 0.000000 6.436220 0.455899 0 3.647192 0.858163 0
+ L3 26624 0.000000 3.915367 1.984501 0 5.229429 3.861732 0
+ L3 26624 0.000000 4.183543 4.398084 0 2.064954 2.842664 0
+ L3 26624 0.000000 1.662690 3.727644 0 1.126339 5.363517 0
+ L3 26624 0.000000 0.080453 5.336699 0 -0.294993 3.191293 0
+ L3 26624 0.000000 -2.172224 4.853983 0 -1.582238 2.735394 0
+ L3 26624 0.000000 -4.103091 -0.777710 0 -2.145407 0.187723 0
+ L3 26624 0.000000 -1.743143 -2.654941 0 -0.884980 -0.965433 0
+ L3 26624 0.000000 1.340879 -3.969003 0 0.375446 -2.145407 0
+ L3 26624 0.000000 2.574488 -2.923117 0 1.448150 -1.743143 0
+ L3 26624 0.000000 3.566739 -0.777710 0 1.421332 -0.429081 0
+ L3 26624 0.000000 2.306312 1.421332 0 0.992251 0.616804 0
+ L3 26624 0.000000 0.268176 2.011319 0 0.348629 0.992251 0
+ L3 26624 0.000000 -0.402264 0.670440 0 -1.233609 1.796778 0
+ L3 26624 0.000000 -1.635873 -0.697257 0 -0.509534 -0.053635 0
+ L3 26624 0.000000 0.858163 -1.367697 0 0.321811 -0.294993 0
+ L3 26624 0.000000 -4.888321 -1.733447 0 -6.205741 -2.392157 0
+ L3 26624 0.000000 -6.101734 1.421427 0 -4.437625 0.901393 0
+ L3 26624 0.000000 -4.818983 5.165673 0 -3.328219 4.714976 0
+ F4 26624 0.000000 4 0
+ -4.506963 -2.669509 0
+ -3.640239 -1.664109 0
+ -2.114806 -1.074737 0
+ -3.085536 -2.322819 0
+ F4 26624 0.000000 4 0
+ -4.090935 1.421427 0
+ -2.218812 1.594771 0
+ -1.386758 0.832055 0
+ -2.912191 0.866724 0
+ F4 26624 0.000000 4 0
+ -2.045468 -3.362887 0
+ -2.357488 -4.472294 0
+ -3.501563 -5.026997 0
+ -3.189543 -4.125604 0
+ F4 26624 0.000000 4 0
+ -6.795113 -0.034669 0
+ -5.304348 -0.381358 0
+ -3.674908 0.138676 0
+ -5.339017 0.416027 0
+ F4 26624 0.000000 4 0
+ -5.616369 -4.402956 0
+ -4.784314 -3.570901 0
+ -3.501563 -3.293550 0
+ -4.229611 -4.125604 0
+ F4 26624 0.000000 4 0
+ -4.749645 4.576300 0
+ -3.640239 3.432225 0
+ -2.357488 2.946860 0
+ -3.605570 4.194942 0
+ END$SEGS
+STRUCTURE 493 3 0 0 0 Fn3 2 461.375000 369.541667 0 0.000000 "Lg Conifer 18"" Tree Conifer-18a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -2.427531 6.854575 0
+ -0.307529 8.390105 0
+ 1.225278 6.736286 0
+ 1.384146 -5.349365 0
+ -1.073933 -8.551453 0
+ -2.687415 -5.485838 0
+ -4.663930 -8.309431 0
+ -5.444510 -5.165067 0
+ -8.075315 -6.323587 0
+ -7.366512 -3.347974 0
+ -9.867408 -3.267300 0
+ -7.689208 -0.847078 0
+ -10.464762 0.000000 0
+ -8.437352 0.893026 0
+ -9.982045 2.485990 0
+ -6.922804 4.679097 0
+ -7.931230 7.462353 0
+ -4.341234 6.534601 0
+ -2.958520 8.519947 0
+ F4 26624 0.000000 28 0
+ -5.566512 -3.347974 0
+ -6.275315 -6.323587 0
+ -3.644510 -5.165067 0
+ -2.863930 -8.309431 0
+ -0.887415 -5.485838 0
+ 0.726067 -8.551453 0
+ 3.184146 -5.349365 0
+ 5.768463 -7.240748 0
+ 4.754758 -4.561671 0
+ 6.134788 -2.313813 0
+ 8.471675 -0.627531 0
+ 6.782167 0.941297 0
+ 8.375132 3.210065 0
+ 5.727860 3.347974 0
+ 5.213339 4.513400 0
+ 5.140931 7.120069 0
+ 3.025278 6.736286 0
+ 1.492471 8.390105 0
+ -0.627531 6.854575 0
+ -1.158520 8.519947 0
+ -2.541234 6.534601 0
+ -6.131230 7.462353 0
+ -5.122804 4.679097 0
+ -8.182045 2.485990 0
+ -6.637352 0.893026 0
+ -8.664762 0.000000 0
+ -5.889208 -0.847078 0
+ -8.067408 -3.267300 0
+ F4 11206591 0.000000 26 0
+ 1.206791 -5.647783 0
+ 3.654103 -8.443462 0
+ 4.513400 -6.347722 0
+ 3.789325 -3.523831 0
+ 6.669625 -3.654103 0
+ 8.585369 -2.093127 0
+ 5.213339 0.168951 0
+ 8.301555 3.547673 0
+ 5.995567 4.079824 0
+ 4.272041 3.692782 0
+ 4.175498 5.913278 0
+ 3.796010 8.053218 0
+ 1.134384 5.213339 0
+ -0.941297 5.502969 0
+ -1.424014 6.613217 0
+ -3.228382 7.982264 0
+ -3.210065 4.223770 0
+ -7.414636 5.215079 0
+ -6.563195 2.270511 0
+ -3.934140 0.627531 0
+ -6.917962 0.567628 0
+ -8.337031 -1.419069 0
+ -2.703213 -1.858459 0
+ -7.095346 -5.498893 0
+ -2.075681 -4.875437 0
+ -2.187375 -8.749500 0
+ L3 26624 0.000000 -4.996116 2.944571 0 -6.589081 2.872163 0
+ L3 26624 0.000000 -6.926982 4.223770 0 -5.840870 3.958276 0
+ L3 26624 0.000000 -2.220496 7.120069 0 -2.051545 5.116795 0
+ L3 26624 0.000000 -2.051545 5.116795 0 -3.258337 6.540809 0
+ L3 26624 0.000000 2.872163 7.192476 0 3.065250 5.502969 0
+ L3 26624 0.000000 3.065250 5.502969 0 3.982411 6.540809 0
+ L3 26624 0.000000 6.902846 3.716917 0 4.658215 2.679077 0
+ L3 26624 0.000000 4.658215 2.679077 0 6.902846 2.148089 0
+ L3 26624 0.000000 6.275315 -1.520557 0 4.585807 -1.544693 0
+ L3 26624 0.000000 4.585807 -1.544693 0 5.985685 -3.427287 0
+ L3 26624 0.000000 4.296177 -5.696055 0 2.437719 -4.078955 0
+ L3 26624 0.000000 2.437719 -4.078955 0 2.485990 -7.023526 0
+ L3 26624 0.000000 -0.868890 -7.506242 0 -0.893026 -5.020252 0
+ L3 26624 0.000000 -0.893026 -5.020252 0 -2.099817 -6.058093 0
+ L3 26624 0.000000 -1.158520 5.309882 0 -1.448150 4.078955 0
+ L3 26624 0.000000 1.955002 5.623648 0 1.979138 4.199634 0
+ L3 26624 0.000000 3.765189 4.827165 0 2.630805 3.885868 0
+ L3 26624 0.000000 4.368585 3.692782 0 3.137657 1.930866 0
+ L3 26624 0.000000 5.647783 1.013705 0 4.127226 1.424014 0
+ L3 26624 0.000000 5.792598 -0.410309 0 3.282472 -0.772346 0
+ L3 26624 0.000000 3.523831 -1.786051 0 4.706486 -3.475559 0
+ L3 26624 0.000000 3.765189 -3.958276 0 1.858459 -2.558398 0
+ L3 26624 0.000000 1.496421 -3.354880 0 1.013705 -4.827165 0
+ L3 26624 0.000000 0.072407 -4.803030 0 -0.265494 -2.872163 0
+ L3 26624 0.000000 -1.955002 -4.368585 0 -1.424014 -2.461854 0
+ L3 26624 0.000000 -3.692782 0.699939 0 -1.930866 -0.168951 0
+ L3 26624 0.000000 -1.568829 2.389447 0 -0.796482 0.868890 0
+ L3 26624 0.000000 1.206791 3.572102 0 0.337902 1.930866 0
+ L3 26624 0.000000 2.317039 2.630805 0 1.303335 1.568829 0
+ L3 26624 0.000000 3.210065 0.699939 0 1.279199 0.386173 0
+ L3 26624 0.000000 2.075681 -1.279199 0 0.893026 -0.555124 0
+ L3 26624 0.000000 0.241358 -1.810187 0 0.313766 -0.893026 0
+ L3 26624 0.000000 -0.362037 -0.603396 0 -1.110248 -1.617100 0
+ L3 26624 0.000000 -1.472285 0.627531 0 -0.458581 0.048272 0
+ L3 26624 0.000000 0.772346 1.230927 0 0.289630 0.265494 0
+ L3 26624 0.000000 -4.399489 1.560102 0 -5.585167 2.152941 0
+ L3 26624 0.000000 -5.491561 -1.279284 0 -3.993862 -0.811253 0
+ L3 26624 0.000000 -4.337085 -4.649105 0 -2.995397 -4.243479 0
+ F4 26624 0.000000 4 0
+ -4.056266 2.402558 0
+ -3.276215 1.497698 0
+ -1.903325 0.967264 0
+ -2.776982 2.090537 0
+ F4 26624 0.000000 4 0
+ -3.681842 -1.279284 0
+ -1.996931 -1.435294 0
+ -1.248082 -0.748849 0
+ -2.620972 -0.780051 0
+ F4 26624 0.000000 4 0
+ -1.840921 3.026599 0
+ -2.121739 4.025064 0
+ -3.151407 4.524297 0
+ -2.870588 3.713044 0
+ F4 26624 0.000000 4 0
+ -6.115602 0.031202 0
+ -4.773913 0.343223 0
+ -3.307417 -0.124808 0
+ -4.805116 -0.374425 0
+ F4 26624 0.000000 4 0
+ -5.054732 3.962660 0
+ -4.305883 3.213811 0
+ -3.151407 2.964195 0
+ -3.806650 3.713044 0
+ F4 26624 0.000000 4 0
+ -4.274681 -4.118670 0
+ -3.276215 -3.089003 0
+ -2.121739 -2.652174 0
+ -3.245013 -3.775448 0
+ END$SEGS
+STRUCTURE 494 3 0 0 0 Fn3 2 432.375000 387.541667 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 495 3 0 0 0 Fn3 2 395.375000 399.041667 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 496 3 0 0 0 Fn3 2 335.875000 405.041667 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 497 3 0 0 0 Fn3 2 316.375000 390.041667 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 498 3 0 0 0 Fn3 2 260.375000 398.041667 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 499 3 0 0 0 Fn3 2 274.875000 387.541667 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 500 3 0 0 0 Fn3 2 212.375000 371.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 501 3 0 0 0 Fn3 2 212.375000 364.125000 0 0.000000 " 8"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.168656 4.000000 4.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 4.213332 3.786668 0 6.666668 1.120000 0
+ L3 2263842 0.000000 4.106668 4.106668 0 7.413332 6.026668 0
+ L3 2263842 0.000000 3.946668 4.213332 0 2.560000 7.733332 0
+ L3 2263842 0.000000 3.840000 4.053332 0 0.106668 4.533332 0
+ L3 2263842 0.000000 3.840000 3.893332 0 1.013332 1.440000 0
+ L3 2263842 0.000000 4.000000 3.840000 0 3.733332 0.053332 0
+ L3 2263842 0.000000 4.053332 4.213332 0 5.386668 7.733332 0
+ L3 2263842 0.000000 4.640000 3.946668 0 7.840000 3.360000 0
+ L3 2263842 0.000000 4.480000 2.560000 0 5.333332 0.373332 0
+ L3 2263842 0.000000 3.093332 2.346668 0 1.866668 0.746668 0
+ L3 2263842 0.000000 2.453332 3.626668 0 0.106668 3.093332 0
+ L3 2263842 0.000000 2.773332 4.746668 0 0.906668 6.453332 0
+ L3 2263842 0.000000 4.000000 7.946668 0 3.946668 5.653332 0
+ L3 2263842 0.000000 6.666668 6.986668 0 4.960000 5.226668 0
+ L3 2263842 0.000000 5.653332 4.320000 0 7.893332 4.640000 0
+ L3 2263842 0.000000 7.413332 2.026668 0 5.386668 3.093332 0
+ L3 2263842 0.000000 6.400000 3.040000 0 7.626668 2.720000 0
+ L3 2263842 0.000000 6.773332 3.840000 0 7.893332 3.893332 0
+ L3 2263842 0.000000 7.786668 5.386668 0 6.560000 4.960000 0
+ L3 2263842 0.000000 6.986668 6.613332 0 6.026668 5.706668 0
+ L3 2263842 0.000000 4.586668 7.893332 0 4.320000 6.613332 0
+ L3 2263842 0.000000 1.600000 7.146668 0 2.506668 6.026668 0
+ L3 2263842 0.000000 0.426668 5.600000 0 1.813332 4.906668 0
+ L3 2263842 0.000000 0.426668 2.240000 0 2.293332 3.146668 0
+ L3 2263842 0.000000 3.466668 2.080000 0 2.773332 0.266668 0
+ END$SEGS
+STRUCTURE 502 3 0 0 0 Fn3 2 219.375000 378.125000 0 0.000000 " 8"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.168656 4.000000 4.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 4.213332 3.786668 0 6.666668 1.120000 0
+ L3 2263842 0.000000 4.106668 4.106668 0 7.413332 6.026668 0
+ L3 2263842 0.000000 3.946668 4.213332 0 2.560000 7.733332 0
+ L3 2263842 0.000000 3.840000 4.053332 0 0.106668 4.533332 0
+ L3 2263842 0.000000 3.840000 3.893332 0 1.013332 1.440000 0
+ L3 2263842 0.000000 4.000000 3.840000 0 3.733332 0.053332 0
+ L3 2263842 0.000000 4.053332 4.213332 0 5.386668 7.733332 0
+ L3 2263842 0.000000 4.640000 3.946668 0 7.840000 3.360000 0
+ L3 2263842 0.000000 4.480000 2.560000 0 5.333332 0.373332 0
+ L3 2263842 0.000000 3.093332 2.346668 0 1.866668 0.746668 0
+ L3 2263842 0.000000 2.453332 3.626668 0 0.106668 3.093332 0
+ L3 2263842 0.000000 2.773332 4.746668 0 0.906668 6.453332 0
+ L3 2263842 0.000000 4.000000 7.946668 0 3.946668 5.653332 0
+ L3 2263842 0.000000 6.666668 6.986668 0 4.960000 5.226668 0
+ L3 2263842 0.000000 5.653332 4.320000 0 7.893332 4.640000 0
+ L3 2263842 0.000000 7.413332 2.026668 0 5.386668 3.093332 0
+ L3 2263842 0.000000 6.400000 3.040000 0 7.626668 2.720000 0
+ L3 2263842 0.000000 6.773332 3.840000 0 7.893332 3.893332 0
+ L3 2263842 0.000000 7.786668 5.386668 0 6.560000 4.960000 0
+ L3 2263842 0.000000 6.986668 6.613332 0 6.026668 5.706668 0
+ L3 2263842 0.000000 4.586668 7.893332 0 4.320000 6.613332 0
+ L3 2263842 0.000000 1.600000 7.146668 0 2.506668 6.026668 0
+ L3 2263842 0.000000 0.426668 5.600000 0 1.813332 4.906668 0
+ L3 2263842 0.000000 0.426668 2.240000 0 2.293332 3.146668 0
+ L3 2263842 0.000000 3.466668 2.080000 0 2.773332 0.266668 0
+ END$SEGS
+STRUCTURE 503 3 0 0 0 Fn3 2 177.375000 353.125000 0 0.000000 " 8"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.168656 4.000000 4.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 4.213332 3.786668 0 6.666668 1.120000 0
+ L3 2263842 0.000000 4.106668 4.106668 0 7.413332 6.026668 0
+ L3 2263842 0.000000 3.946668 4.213332 0 2.560000 7.733332 0
+ L3 2263842 0.000000 3.840000 4.053332 0 0.106668 4.533332 0
+ L3 2263842 0.000000 3.840000 3.893332 0 1.013332 1.440000 0
+ L3 2263842 0.000000 4.000000 3.840000 0 3.733332 0.053332 0
+ L3 2263842 0.000000 4.053332 4.213332 0 5.386668 7.733332 0
+ L3 2263842 0.000000 4.640000 3.946668 0 7.840000 3.360000 0
+ L3 2263842 0.000000 4.480000 2.560000 0 5.333332 0.373332 0
+ L3 2263842 0.000000 3.093332 2.346668 0 1.866668 0.746668 0
+ L3 2263842 0.000000 2.453332 3.626668 0 0.106668 3.093332 0
+ L3 2263842 0.000000 2.773332 4.746668 0 0.906668 6.453332 0
+ L3 2263842 0.000000 4.000000 7.946668 0 3.946668 5.653332 0
+ L3 2263842 0.000000 6.666668 6.986668 0 4.960000 5.226668 0
+ L3 2263842 0.000000 5.653332 4.320000 0 7.893332 4.640000 0
+ L3 2263842 0.000000 7.413332 2.026668 0 5.386668 3.093332 0
+ L3 2263842 0.000000 6.400000 3.040000 0 7.626668 2.720000 0
+ L3 2263842 0.000000 6.773332 3.840000 0 7.893332 3.893332 0
+ L3 2263842 0.000000 7.786668 5.386668 0 6.560000 4.960000 0
+ L3 2263842 0.000000 6.986668 6.613332 0 6.026668 5.706668 0
+ L3 2263842 0.000000 4.586668 7.893332 0 4.320000 6.613332 0
+ L3 2263842 0.000000 1.600000 7.146668 0 2.506668 6.026668 0
+ L3 2263842 0.000000 0.426668 5.600000 0 1.813332 4.906668 0
+ L3 2263842 0.000000 0.426668 2.240000 0 2.293332 3.146668 0
+ L3 2263842 0.000000 3.466668 2.080000 0 2.773332 0.266668 0
+ END$SEGS
+STRUCTURE 504 3 0 0 0 Fn3 2 152.375000 362.125000 0 0.000000 " 8"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.168656 4.000000 4.000000 0 0.000000 360.000000
+ L3 2263842 0.000000 4.213332 3.786668 0 6.666668 1.120000 0
+ L3 2263842 0.000000 4.106668 4.106668 0 7.413332 6.026668 0
+ L3 2263842 0.000000 3.946668 4.213332 0 2.560000 7.733332 0
+ L3 2263842 0.000000 3.840000 4.053332 0 0.106668 4.533332 0
+ L3 2263842 0.000000 3.840000 3.893332 0 1.013332 1.440000 0
+ L3 2263842 0.000000 4.000000 3.840000 0 3.733332 0.053332 0
+ L3 2263842 0.000000 4.053332 4.213332 0 5.386668 7.733332 0
+ L3 2263842 0.000000 4.640000 3.946668 0 7.840000 3.360000 0
+ L3 2263842 0.000000 4.480000 2.560000 0 5.333332 0.373332 0
+ L3 2263842 0.000000 3.093332 2.346668 0 1.866668 0.746668 0
+ L3 2263842 0.000000 2.453332 3.626668 0 0.106668 3.093332 0
+ L3 2263842 0.000000 2.773332 4.746668 0 0.906668 6.453332 0
+ L3 2263842 0.000000 4.000000 7.946668 0 3.946668 5.653332 0
+ L3 2263842 0.000000 6.666668 6.986668 0 4.960000 5.226668 0
+ L3 2263842 0.000000 5.653332 4.320000 0 7.893332 4.640000 0
+ L3 2263842 0.000000 7.413332 2.026668 0 5.386668 3.093332 0
+ L3 2263842 0.000000 6.400000 3.040000 0 7.626668 2.720000 0
+ L3 2263842 0.000000 6.773332 3.840000 0 7.893332 3.893332 0
+ L3 2263842 0.000000 7.786668 5.386668 0 6.560000 4.960000 0
+ L3 2263842 0.000000 6.986668 6.613332 0 6.026668 5.706668 0
+ L3 2263842 0.000000 4.586668 7.893332 0 4.320000 6.613332 0
+ L3 2263842 0.000000 1.600000 7.146668 0 2.506668 6.026668 0
+ L3 2263842 0.000000 0.426668 5.600000 0 1.813332 4.906668 0
+ L3 2263842 0.000000 0.426668 2.240000 0 2.293332 3.146668 0
+ L3 2263842 0.000000 3.466668 2.080000 0 2.773332 0.266668 0
+ END$SEGS
+STRUCTURE 505 3 0 0 0 Fn3 2 209.375000 356.125000 0 0.000000 " 7"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.147574 3.500000 3.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 3.686666 3.313335 0 5.833334 0.980000 0
+ L3 2263842 0.000000 3.593335 3.593335 0 6.486665 5.273334 0
+ L3 2263842 0.000000 3.453334 3.686666 0 2.240000 6.766666 0
+ L3 2263842 0.000000 3.360000 3.546666 0 0.093335 3.966665 0
+ L3 2263842 0.000000 3.360000 3.406665 0 0.886665 1.260000 0
+ L3 2263842 0.000000 3.500000 3.360000 0 3.266665 0.046665 0
+ L3 2263842 0.000000 3.546666 3.686666 0 4.713335 6.766666 0
+ L3 2263842 0.000000 4.060000 3.453334 0 6.860000 2.940000 0
+ L3 2263842 0.000000 3.920000 2.240000 0 4.666666 0.326665 0
+ L3 2263842 0.000000 2.706666 2.053335 0 1.633334 0.653335 0
+ L3 2263842 0.000000 2.146666 3.173335 0 0.093335 2.706666 0
+ L3 2263842 0.000000 2.426665 4.153334 0 0.793335 5.646665 0
+ L3 2263842 0.000000 3.500000 6.953334 0 3.453334 4.946665 0
+ L3 2263842 0.000000 5.833334 6.113334 0 4.340000 4.573334 0
+ L3 2263842 0.000000 4.946665 3.780000 0 6.906665 4.060000 0
+ L3 2263842 0.000000 6.486665 1.773334 0 4.713335 2.706666 0
+ L3 2263842 0.000000 5.600000 2.660000 0 6.673334 2.380000 0
+ L3 2263842 0.000000 5.926666 3.360000 0 6.906665 3.406665 0
+ L3 2263842 0.000000 6.813334 4.713335 0 5.740000 4.340000 0
+ L3 2263842 0.000000 6.113334 5.786665 0 5.273334 4.993334 0
+ L3 2263842 0.000000 4.013335 6.906665 0 3.780000 5.786665 0
+ L3 2263842 0.000000 1.400000 6.253335 0 2.193334 5.273334 0
+ L3 2263842 0.000000 0.373335 4.900000 0 1.586666 4.293335 0
+ L3 2263842 0.000000 0.373335 1.960000 0 2.006665 2.753335 0
+ L3 2263842 0.000000 3.033335 1.820000 0 2.426665 0.233335 0
+ END$SEGS
+STRUCTURE 506 3 0 0 0 Fn3 2 217.375000 389.125000 0 0.000000 " 7"" Fir Tree "
+ D 0.000000 0.000000
+ A3 2263842 0.000000 0.147574 3.500000 3.500000 0 0.000000 360.000000
+ L3 2263842 0.000000 3.686666 3.313335 0 5.833334 0.980000 0
+ L3 2263842 0.000000 3.593335 3.593335 0 6.486665 5.273334 0
+ L3 2263842 0.000000 3.453334 3.686666 0 2.240000 6.766666 0
+ L3 2263842 0.000000 3.360000 3.546666 0 0.093335 3.966665 0
+ L3 2263842 0.000000 3.360000 3.406665 0 0.886665 1.260000 0
+ L3 2263842 0.000000 3.500000 3.360000 0 3.266665 0.046665 0
+ L3 2263842 0.000000 3.546666 3.686666 0 4.713335 6.766666 0
+ L3 2263842 0.000000 4.060000 3.453334 0 6.860000 2.940000 0
+ L3 2263842 0.000000 3.920000 2.240000 0 4.666666 0.326665 0
+ L3 2263842 0.000000 2.706666 2.053335 0 1.633334 0.653335 0
+ L3 2263842 0.000000 2.146666 3.173335 0 0.093335 2.706666 0
+ L3 2263842 0.000000 2.426665 4.153334 0 0.793335 5.646665 0
+ L3 2263842 0.000000 3.500000 6.953334 0 3.453334 4.946665 0
+ L3 2263842 0.000000 5.833334 6.113334 0 4.340000 4.573334 0
+ L3 2263842 0.000000 4.946665 3.780000 0 6.906665 4.060000 0
+ L3 2263842 0.000000 6.486665 1.773334 0 4.713335 2.706666 0
+ L3 2263842 0.000000 5.600000 2.660000 0 6.673334 2.380000 0
+ L3 2263842 0.000000 5.926666 3.360000 0 6.906665 3.406665 0
+ L3 2263842 0.000000 6.813334 4.713335 0 5.740000 4.340000 0
+ L3 2263842 0.000000 6.113334 5.786665 0 5.273334 4.993334 0
+ L3 2263842 0.000000 4.013335 6.906665 0 3.780000 5.786665 0
+ L3 2263842 0.000000 1.400000 6.253335 0 2.193334 5.273334 0
+ L3 2263842 0.000000 0.373335 4.900000 0 1.586666 4.293335 0
+ L3 2263842 0.000000 0.373335 1.960000 0 2.006665 2.753335 0
+ L3 2263842 0.000000 3.033335 1.820000 0 2.426665 0.233335 0
+ END$SEGS
+STRUCTURE 507 3 0 0 0 Fn3 2 40.625000 357.083333 0 0.000000 "Lg Conifer 32"" Tree Conifer-32b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.546719 -14.915742 0
+ -4.315612 -12.185911 0
+ -5.259591 -15.146572 0
+ -7.717749 -11.617068 0
+ -14.099965 -13.266405 0
+ -12.307208 -8.318394 0
+ -17.745858 -4.419538 0
+ -14.999738 -1.587601 0
+ -18.604021 0.000000 0
+ -13.669703 1.505916 0
+ -17.542059 5.808534 0
+ -13.096021 5.951955 0
+ -14.356116 11.241932 0
+ -9.679129 9.182341 0
+ -8.291431 14.772321 0
+ -4.777627 9.752600 0
+ -1.909215 15.202583 0
+ 2.460704 9.509983 0
+ 2.178272 -11.975619 0
+ F4 26624 0.000000 28 0
+ -9.896021 5.951955 0
+ -11.156116 11.241932 0
+ -6.479129 9.182341 0
+ -5.091431 14.772321 0
+ -1.577627 9.752600 0
+ 1.290785 15.202583 0
+ 5.660704 9.509983 0
+ 10.255045 12.872441 0
+ 8.452903 8.109638 0
+ 10.906290 4.113445 0
+ 15.060756 1.115612 0
+ 12.057186 -1.673417 0
+ 14.889123 -5.706782 0
+ 10.182862 -5.951955 0
+ 9.268158 -8.023822 0
+ 9.139433 -12.657900 0
+ 5.378272 -11.975619 0
+ 2.653281 -14.915742 0
+ -1.115612 -12.185911 0
+ -2.059591 -15.146572 0
+ -4.517749 -11.617068 0
+ -10.899965 -13.266405 0
+ -9.107208 -8.318394 0
+ -14.545858 -4.419538 0
+ -11.799738 -1.587601 0
+ -15.404021 0.000000 0
+ -10.469703 1.505916 0
+ -14.342059 5.808534 0
+ F4 11206591 0.000000 26 0
+ 2.145407 10.040504 0
+ 6.496183 15.010598 0
+ 8.023822 11.284840 0
+ 6.736577 6.264588 0
+ 11.857111 6.496183 0
+ 15.262877 3.721115 0
+ 9.268158 -0.300357 0
+ 14.758319 -6.306974 0
+ 10.658786 -7.253020 0
+ 7.594740 -6.564945 0
+ 7.423108 -10.512493 0
+ 6.748462 -14.316831 0
+ 2.016682 -9.268158 0
+ -1.673417 -9.783055 0
+ -2.531580 -11.756829 0
+ -5.739346 -14.190692 0
+ -5.706782 -7.508924 0
+ -13.181576 -9.271252 0
+ -11.667902 -4.036463 0
+ -6.994026 -1.115612 0
+ -12.298600 -1.009116 0
+ -14.821389 2.522790 0
+ -4.805711 3.303927 0
+ -12.613948 9.775810 0
+ -3.690100 8.667444 0
+ -3.888667 15.554667 0
+ L3 26624 0.000000 -8.881984 -5.234793 0 -11.713921 -5.106068 0
+ L3 26624 0.000000 -12.314635 -7.508924 0 -10.383769 -7.036934 0
+ L3 26624 0.000000 -3.947549 -12.657900 0 -3.647192 -9.096525 0
+ L3 26624 0.000000 -3.647192 -9.096525 0 -5.792598 -11.628105 0
+ L3 26624 0.000000 5.106068 -12.786625 0 5.449333 -9.783055 0
+ L3 26624 0.000000 5.449333 -9.783055 0 7.079843 -11.628105 0
+ L3 26624 0.000000 12.271727 -6.607853 0 8.281270 -4.762803 0
+ L3 26624 0.000000 8.281270 -4.762803 0 12.271727 -3.818824 0
+ L3 26624 0.000000 11.156116 2.703213 0 8.152546 2.746121 0
+ L3 26624 0.000000 8.152546 2.746121 0 10.641218 6.092955 0
+ L3 26624 0.000000 7.637648 10.126320 0 4.333722 7.251475 0
+ L3 26624 0.000000 4.333722 7.251475 0 4.419538 12.486268 0
+ L3 26624 0.000000 -1.544693 13.344430 0 -1.587601 8.924892 0
+ L3 26624 0.000000 -1.587601 8.924892 0 -3.733008 10.769942 0
+ L3 26624 0.000000 -2.059591 -9.439790 0 -2.574488 -7.251475 0
+ L3 26624 0.000000 3.475559 -9.997596 0 3.518467 -7.466016 0
+ L3 26624 0.000000 6.693669 -8.581627 0 4.676987 -6.908210 0
+ L3 26624 0.000000 7.766373 -6.564945 0 5.578058 -3.432651 0
+ L3 26624 0.000000 10.040504 -1.802142 0 7.337291 -2.531580 0
+ L3 26624 0.000000 10.297953 0.729438 0 5.835507 1.373060 0
+ L3 26624 0.000000 6.264588 3.175202 0 8.367087 6.178772 0
+ L3 26624 0.000000 6.693669 7.036934 0 3.303927 4.548262 0
+ L3 26624 0.000000 2.660304 5.964231 0 1.802142 8.581627 0
+ L3 26624 0.000000 0.128724 8.538719 0 -0.471990 5.106068 0
+ L3 26624 0.000000 -3.475559 7.766373 0 -2.531580 4.376630 0
+ L3 26624 0.000000 -6.564945 -1.244336 0 -3.432651 0.300357 0
+ L3 26624 0.000000 -2.789029 -4.247906 0 -1.415969 -1.544693 0
+ L3 26624 0.000000 2.145407 -6.350404 0 0.600714 -3.432651 0
+ L3 26624 0.000000 4.119181 -4.676987 0 2.317039 -2.789029 0
+ L3 26624 0.000000 5.706782 -1.244336 0 2.274131 -0.686530 0
+ L3 26624 0.000000 3.690100 2.274131 0 1.587601 0.986887 0
+ L3 26624 0.000000 0.429081 3.218110 0 0.557806 1.587601 0
+ L3 26624 0.000000 -0.643622 1.072703 0 -1.973774 2.874845 0
+ L3 26624 0.000000 -2.617396 -1.115612 0 -0.815255 -0.085816 0
+ L3 26624 0.000000 1.373060 -2.188315 0 0.514898 -0.471990 0
+ L3 26624 0.000000 -7.821314 -2.773515 0 -9.929185 -3.827451 0
+ L3 26624 0.000000 -9.762774 2.274283 0 -7.100200 1.442228 0
+ L3 26624 0.000000 -7.710373 8.265076 0 -5.325150 7.543962 0
+ F4 26624 0.000000 4 0
+ -7.211140 -4.271214 0
+ -5.824382 -2.662575 0
+ -3.383689 -1.719580 0
+ -4.936857 -3.716511 0
+ F4 26624 0.000000 4 0
+ -6.545496 2.274283 0
+ -3.550100 2.551634 0
+ -2.218812 1.331287 0
+ -4.659506 1.386758 0
+ F4 26624 0.000000 4 0
+ -3.272748 -5.380620 0
+ -3.771981 -7.155670 0
+ -5.602501 -8.043195 0
+ -5.103268 -6.600967 0
+ F4 26624 0.000000 4 0
+ -10.872181 -0.055470 0
+ -8.486957 -0.610173 0
+ -5.879853 0.221881 0
+ -8.542428 0.665644 0
+ F4 26624 0.000000 4 0
+ -8.986190 -7.044729 0
+ -7.654903 -5.713442 0
+ -5.602501 -5.269679 0
+ -6.767378 -6.600967 0
+ F4 26624 0.000000 4 0
+ -7.599432 7.322081 0
+ -5.824382 5.491561 0
+ -3.771981 4.714976 0
+ -5.768912 6.711907 0
+ END$SEGS
+STRUCTURE 508 3 0 0 0 Fn3 2 687.625000 762.250000 0 0.000000 "Lg Conifer 32"" Tree Conifer-32b"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -0.546719 -14.915742 0
+ -4.315612 -12.185911 0
+ -5.259591 -15.146572 0
+ -7.717749 -11.617068 0
+ -14.099965 -13.266405 0
+ -12.307208 -8.318394 0
+ -17.745858 -4.419538 0
+ -14.999738 -1.587601 0
+ -18.604021 0.000000 0
+ -13.669703 1.505916 0
+ -17.542059 5.808534 0
+ -13.096021 5.951955 0
+ -14.356116 11.241932 0
+ -9.679129 9.182341 0
+ -8.291431 14.772321 0
+ -4.777627 9.752600 0
+ -1.909215 15.202583 0
+ 2.460704 9.509983 0
+ 2.178272 -11.975619 0
+ F4 26624 0.000000 28 0
+ -9.896021 5.951955 0
+ -11.156116 11.241932 0
+ -6.479129 9.182341 0
+ -5.091431 14.772321 0
+ -1.577627 9.752600 0
+ 1.290785 15.202583 0
+ 5.660704 9.509983 0
+ 10.255045 12.872441 0
+ 8.452903 8.109638 0
+ 10.906290 4.113445 0
+ 15.060756 1.115612 0
+ 12.057186 -1.673417 0
+ 14.889123 -5.706782 0
+ 10.182862 -5.951955 0
+ 9.268158 -8.023822 0
+ 9.139433 -12.657900 0
+ 5.378272 -11.975619 0
+ 2.653281 -14.915742 0
+ -1.115612 -12.185911 0
+ -2.059591 -15.146572 0
+ -4.517749 -11.617068 0
+ -10.899965 -13.266405 0
+ -9.107208 -8.318394 0
+ -14.545858 -4.419538 0
+ -11.799738 -1.587601 0
+ -15.404021 0.000000 0
+ -10.469703 1.505916 0
+ -14.342059 5.808534 0
+ F4 11206591 0.000000 26 0
+ 2.145407 10.040504 0
+ 6.496183 15.010598 0
+ 8.023822 11.284840 0
+ 6.736577 6.264588 0
+ 11.857111 6.496183 0
+ 15.262877 3.721115 0
+ 9.268158 -0.300357 0
+ 14.758319 -6.306974 0
+ 10.658786 -7.253020 0
+ 7.594740 -6.564945 0
+ 7.423108 -10.512493 0
+ 6.748462 -14.316831 0
+ 2.016682 -9.268158 0
+ -1.673417 -9.783055 0
+ -2.531580 -11.756829 0
+ -5.739346 -14.190692 0
+ -5.706782 -7.508924 0
+ -13.181576 -9.271252 0
+ -11.667902 -4.036463 0
+ -6.994026 -1.115612 0
+ -12.298600 -1.009116 0
+ -14.821389 2.522790 0
+ -4.805711 3.303927 0
+ -12.613948 9.775810 0
+ -3.690100 8.667444 0
+ -3.888667 15.554667 0
+ L3 26624 0.000000 -8.881984 -5.234793 0 -11.713921 -5.106068 0
+ L3 26624 0.000000 -12.314635 -7.508924 0 -10.383769 -7.036934 0
+ L3 26624 0.000000 -3.947549 -12.657900 0 -3.647192 -9.096525 0
+ L3 26624 0.000000 -3.647192 -9.096525 0 -5.792598 -11.628105 0
+ L3 26624 0.000000 5.106068 -12.786625 0 5.449333 -9.783055 0
+ L3 26624 0.000000 5.449333 -9.783055 0 7.079843 -11.628105 0
+ L3 26624 0.000000 12.271727 -6.607853 0 8.281270 -4.762803 0
+ L3 26624 0.000000 8.281270 -4.762803 0 12.271727 -3.818824 0
+ L3 26624 0.000000 11.156116 2.703213 0 8.152546 2.746121 0
+ L3 26624 0.000000 8.152546 2.746121 0 10.641218 6.092955 0
+ L3 26624 0.000000 7.637648 10.126320 0 4.333722 7.251475 0
+ L3 26624 0.000000 4.333722 7.251475 0 4.419538 12.486268 0
+ L3 26624 0.000000 -1.544693 13.344430 0 -1.587601 8.924892 0
+ L3 26624 0.000000 -1.587601 8.924892 0 -3.733008 10.769942 0
+ L3 26624 0.000000 -2.059591 -9.439790 0 -2.574488 -7.251475 0
+ L3 26624 0.000000 3.475559 -9.997596 0 3.518467 -7.466016 0
+ L3 26624 0.000000 6.693669 -8.581627 0 4.676987 -6.908210 0
+ L3 26624 0.000000 7.766373 -6.564945 0 5.578058 -3.432651 0
+ L3 26624 0.000000 10.040504 -1.802142 0 7.337291 -2.531580 0
+ L3 26624 0.000000 10.297953 0.729438 0 5.835507 1.373060 0
+ L3 26624 0.000000 6.264588 3.175202 0 8.367087 6.178772 0
+ L3 26624 0.000000 6.693669 7.036934 0 3.303927 4.548262 0
+ L3 26624 0.000000 2.660304 5.964231 0 1.802142 8.581627 0
+ L3 26624 0.000000 0.128724 8.538719 0 -0.471990 5.106068 0
+ L3 26624 0.000000 -3.475559 7.766373 0 -2.531580 4.376630 0
+ L3 26624 0.000000 -6.564945 -1.244336 0 -3.432651 0.300357 0
+ L3 26624 0.000000 -2.789029 -4.247906 0 -1.415969 -1.544693 0
+ L3 26624 0.000000 2.145407 -6.350404 0 0.600714 -3.432651 0
+ L3 26624 0.000000 4.119181 -4.676987 0 2.317039 -2.789029 0
+ L3 26624 0.000000 5.706782 -1.244336 0 2.274131 -0.686530 0
+ L3 26624 0.000000 3.690100 2.274131 0 1.587601 0.986887 0
+ L3 26624 0.000000 0.429081 3.218110 0 0.557806 1.587601 0
+ L3 26624 0.000000 -0.643622 1.072703 0 -1.973774 2.874845 0
+ L3 26624 0.000000 -2.617396 -1.115612 0 -0.815255 -0.085816 0
+ L3 26624 0.000000 1.373060 -2.188315 0 0.514898 -0.471990 0
+ L3 26624 0.000000 -7.821314 -2.773515 0 -9.929185 -3.827451 0
+ L3 26624 0.000000 -9.762774 2.274283 0 -7.100200 1.442228 0
+ L3 26624 0.000000 -7.710373 8.265076 0 -5.325150 7.543962 0
+ F4 26624 0.000000 4 0
+ -7.211140 -4.271214 0
+ -5.824382 -2.662575 0
+ -3.383689 -1.719580 0
+ -4.936857 -3.716511 0
+ F4 26624 0.000000 4 0
+ -6.545496 2.274283 0
+ -3.550100 2.551634 0
+ -2.218812 1.331287 0
+ -4.659506 1.386758 0
+ F4 26624 0.000000 4 0
+ -3.272748 -5.380620 0
+ -3.771981 -7.155670 0
+ -5.602501 -8.043195 0
+ -5.103268 -6.600967 0
+ F4 26624 0.000000 4 0
+ -10.872181 -0.055470 0
+ -8.486957 -0.610173 0
+ -5.879853 0.221881 0
+ -8.542428 0.665644 0
+ F4 26624 0.000000 4 0
+ -8.986190 -7.044729 0
+ -7.654903 -5.713442 0
+ -5.602501 -5.269679 0
+ -6.767378 -6.600967 0
+ F4 26624 0.000000 4 0
+ -7.599432 7.322081 0
+ -5.824382 5.491561 0
+ -3.771981 4.714976 0
+ -5.768912 6.711907 0
+ END$SEGS
+STRUCTURE 509 3 0 0 0 Fn3 2 657.625000 724.250000 0 0.000000 "Lg Conifer 16"" Tree Conifer-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -2.157806 6.092955 0
+ -0.273360 7.457871 0
+ 1.089136 5.987810 0
+ 1.230352 -4.754991 0
+ -0.954607 -7.601291 0
+ -2.388813 -4.876300 0
+ -4.145715 -7.386160 0
+ -4.839564 -4.591171 0
+ -7.178058 -5.620966 0
+ -6.548010 -2.975977 0
+ -8.771030 -2.904267 0
+ -6.834852 -0.752958 0
+ -9.302011 0.000000 0
+ -7.499869 0.793801 0
+ -8.872929 2.209769 0
+ -6.153604 4.159197 0
+ -7.049982 6.633202 0
+ -3.858874 5.808534 0
+ -2.629795 7.573286 0
+ F4 26624 0.000000 28 0
+ -4.948010 -2.975977 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.545715 -7.386160 0
+ -0.788813 -4.876300 0
+ 0.645393 -7.601291 0
+ 2.830352 -4.754991 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 5.453145 -2.056722 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 5.091431 2.975977 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.689136 5.987810 0
+ 1.326640 7.457871 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -2.258874 5.808534 0
+ -5.449982 6.633202 0
+ -4.553604 4.159197 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -5.234852 -0.752958 0
+ -7.171030 -2.904267 0
+ F4 11206591 0.000000 26 0
+ 1.072703 -5.020252 0
+ 3.248092 -7.505299 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 5.928556 -3.248092 0
+ 7.631439 -1.860557 0
+ 4.634079 0.150178 0
+ 7.379160 3.153487 0
+ 5.329393 3.626510 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 3.374231 7.158416 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.869673 7.095346 0
+ -2.853391 3.754462 0
+ -6.590788 4.635626 0
+ -5.833951 2.018232 0
+ -3.497013 0.557806 0
+ -6.149300 0.504558 0
+ -7.410695 -1.261395 0
+ -2.402856 -1.651963 0
+ -6.306974 -4.887905 0
+ -1.845050 -4.333722 0
+ -1.944333 -7.777333 0
+ L3 26624 0.000000 -4.440992 2.617396 0 -5.856961 2.553034 0
+ L3 26624 0.000000 -6.157318 3.754462 0 -5.191885 3.518467 0
+ L3 26624 0.000000 -1.973774 6.328950 0 -1.823596 4.548262 0
+ L3 26624 0.000000 -1.823596 4.548262 0 -2.896299 5.814053 0
+ L3 26624 0.000000 2.553034 6.393312 0 2.724667 4.891528 0
+ L3 26624 0.000000 2.724667 4.891528 0 3.539921 5.814053 0
+ L3 26624 0.000000 6.135864 3.303927 0 4.140635 2.381402 0
+ L3 26624 0.000000 4.140635 2.381402 0 6.135864 1.909412 0
+ L3 26624 0.000000 5.578058 -1.351606 0 4.076273 -1.373060 0
+ L3 26624 0.000000 4.076273 -1.373060 0 5.320609 -3.046478 0
+ L3 26624 0.000000 3.818824 -5.063160 0 2.166861 -3.625738 0
+ L3 26624 0.000000 2.166861 -3.625738 0 2.209769 -6.243134 0
+ L3 26624 0.000000 -0.772346 -6.672215 0 -0.793801 -4.462446 0
+ L3 26624 0.000000 -0.793801 -4.462446 0 -1.866504 -5.384971 0
+ L3 26624 0.000000 -1.029795 4.719895 0 -1.287244 3.625738 0
+ L3 26624 0.000000 1.737780 4.998798 0 1.759234 3.733008 0
+ L3 26624 0.000000 3.346835 4.290814 0 2.338493 3.454105 0
+ L3 26624 0.000000 3.883186 3.282472 0 2.789029 1.716325 0
+ L3 26624 0.000000 5.020252 0.901071 0 3.668646 1.265790 0
+ L3 26624 0.000000 5.148976 -0.364719 0 2.917753 -0.686530 0
+ L3 26624 0.000000 3.132294 -1.587601 0 4.183543 -3.089386 0
+ L3 26624 0.000000 3.346835 -3.518467 0 1.651963 -2.274131 0
+ L3 26624 0.000000 1.330152 -2.982115 0 0.901071 -4.290814 0
+ L3 26624 0.000000 0.064362 -4.269360 0 -0.235995 -2.553034 0
+ L3 26624 0.000000 -1.737780 -3.883186 0 -1.265790 -2.188315 0
+ L3 26624 0.000000 -3.282472 0.622168 0 -1.716325 -0.150178 0
+ L3 26624 0.000000 -1.394514 2.123953 0 -0.707984 0.772346 0
+ L3 26624 0.000000 1.072703 3.175202 0 0.300357 1.716325 0
+ L3 26624 0.000000 2.059591 2.338493 0 1.158520 1.394514 0
+ L3 26624 0.000000 2.853391 0.622168 0 1.137066 0.343265 0
+ L3 26624 0.000000 1.845050 -1.137066 0 0.793801 -0.493444 0
+ L3 26624 0.000000 0.214541 -1.609055 0 0.278903 -0.793801 0
+ L3 26624 0.000000 -0.321811 -0.536352 0 -0.986887 -1.437423 0
+ L3 26624 0.000000 -1.308698 0.557806 0 -0.407627 0.042908 0
+ L3 26624 0.000000 0.686530 1.094157 0 0.257449 0.235995 0
+ L3 26624 0.000000 -3.910657 1.386758 0 -4.964593 1.913726 0
+ L3 26624 0.000000 -4.881387 -1.137141 0 -3.550100 -0.721114 0
+ L3 26624 0.000000 -3.855186 -4.132538 0 -2.662575 -3.771981 0
+ F4 26624 0.000000 4 0
+ -3.605570 2.135607 0
+ -2.912191 1.331287 0
+ -1.691844 0.859790 0
+ -2.468429 1.858255 0
+ F4 26624 0.000000 4 0
+ -3.272748 -1.137141 0
+ -1.775050 -1.275817 0
+ -1.109406 -0.665644 0
+ -2.329753 -0.693379 0
+ F4 26624 0.000000 4 0
+ -1.636374 2.690310 0
+ -1.885991 3.577835 0
+ -2.801251 4.021597 0
+ -2.551634 3.300483 0
+ F4 26624 0.000000 4 0
+ -5.436090 0.027735 0
+ -4.243479 0.305087 0
+ -2.939926 -0.110941 0
+ -4.271214 -0.332822 0
+ F4 26624 0.000000 4 0
+ -4.493095 3.522365 0
+ -3.827451 2.856721 0
+ -2.801251 2.634840 0
+ -3.383689 3.300483 0
+ F4 26624 0.000000 4 0
+ -3.799716 -3.661040 0
+ -2.912191 -2.745780 0
+ -1.885991 -2.357488 0
+ -2.884456 -3.355954 0
+ END$SEGS
+STRUCTURE 510 3 0 0 0 Fn3 2 703.625000 732.250000 0 0.000000 "Lg Conifer 16"" Tree Conifer-16a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 19 0
+ -2.157806 6.092955 0
+ -0.273360 7.457871 0
+ 1.089136 5.987810 0
+ 1.230352 -4.754991 0
+ -0.954607 -7.601291 0
+ -2.388813 -4.876300 0
+ -4.145715 -7.386160 0
+ -4.839564 -4.591171 0
+ -7.178058 -5.620966 0
+ -6.548010 -2.975977 0
+ -8.771030 -2.904267 0
+ -6.834852 -0.752958 0
+ -9.302011 0.000000 0
+ -7.499869 0.793801 0
+ -8.872929 2.209769 0
+ -6.153604 4.159197 0
+ -7.049982 6.633202 0
+ -3.858874 5.808534 0
+ -2.629795 7.573286 0
+ F4 26624 0.000000 28 0
+ -4.948010 -2.975977 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.545715 -7.386160 0
+ -0.788813 -4.876300 0
+ 0.645393 -7.601291 0
+ 2.830352 -4.754991 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 5.453145 -2.056722 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 5.091431 2.975977 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.689136 5.987810 0
+ 1.326640 7.457871 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -2.258874 5.808534 0
+ -5.449982 6.633202 0
+ -4.553604 4.159197 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -5.234852 -0.752958 0
+ -7.171030 -2.904267 0
+ F4 11206591 0.000000 26 0
+ 1.072703 -5.020252 0
+ 3.248092 -7.505299 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 5.928556 -3.248092 0
+ 7.631439 -1.860557 0
+ 4.634079 0.150178 0
+ 7.379160 3.153487 0
+ 5.329393 3.626510 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 3.374231 7.158416 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.869673 7.095346 0
+ -2.853391 3.754462 0
+ -6.590788 4.635626 0
+ -5.833951 2.018232 0
+ -3.497013 0.557806 0
+ -6.149300 0.504558 0
+ -7.410695 -1.261395 0
+ -2.402856 -1.651963 0
+ -6.306974 -4.887905 0
+ -1.845050 -4.333722 0
+ -1.944333 -7.777333 0
+ L3 26624 0.000000 -4.440992 2.617396 0 -5.856961 2.553034 0
+ L3 26624 0.000000 -6.157318 3.754462 0 -5.191885 3.518467 0
+ L3 26624 0.000000 -1.973774 6.328950 0 -1.823596 4.548262 0
+ L3 26624 0.000000 -1.823596 4.548262 0 -2.896299 5.814053 0
+ L3 26624 0.000000 2.553034 6.393312 0 2.724667 4.891528 0
+ L3 26624 0.000000 2.724667 4.891528 0 3.539921 5.814053 0
+ L3 26624 0.000000 6.135864 3.303927 0 4.140635 2.381402 0
+ L3 26624 0.000000 4.140635 2.381402 0 6.135864 1.909412 0
+ L3 26624 0.000000 5.578058 -1.351606 0 4.076273 -1.373060 0
+ L3 26624 0.000000 4.076273 -1.373060 0 5.320609 -3.046478 0
+ L3 26624 0.000000 3.818824 -5.063160 0 2.166861 -3.625738 0
+ L3 26624 0.000000 2.166861 -3.625738 0 2.209769 -6.243134 0
+ L3 26624 0.000000 -0.772346 -6.672215 0 -0.793801 -4.462446 0
+ L3 26624 0.000000 -0.793801 -4.462446 0 -1.866504 -5.384971 0
+ L3 26624 0.000000 -1.029795 4.719895 0 -1.287244 3.625738 0
+ L3 26624 0.000000 1.737780 4.998798 0 1.759234 3.733008 0
+ L3 26624 0.000000 3.346835 4.290814 0 2.338493 3.454105 0
+ L3 26624 0.000000 3.883186 3.282472 0 2.789029 1.716325 0
+ L3 26624 0.000000 5.020252 0.901071 0 3.668646 1.265790 0
+ L3 26624 0.000000 5.148976 -0.364719 0 2.917753 -0.686530 0
+ L3 26624 0.000000 3.132294 -1.587601 0 4.183543 -3.089386 0
+ L3 26624 0.000000 3.346835 -3.518467 0 1.651963 -2.274131 0
+ L3 26624 0.000000 1.330152 -2.982115 0 0.901071 -4.290814 0
+ L3 26624 0.000000 0.064362 -4.269360 0 -0.235995 -2.553034 0
+ L3 26624 0.000000 -1.737780 -3.883186 0 -1.265790 -2.188315 0
+ L3 26624 0.000000 -3.282472 0.622168 0 -1.716325 -0.150178 0
+ L3 26624 0.000000 -1.394514 2.123953 0 -0.707984 0.772346 0
+ L3 26624 0.000000 1.072703 3.175202 0 0.300357 1.716325 0
+ L3 26624 0.000000 2.059591 2.338493 0 1.158520 1.394514 0
+ L3 26624 0.000000 2.853391 0.622168 0 1.137066 0.343265 0
+ L3 26624 0.000000 1.845050 -1.137066 0 0.793801 -0.493444 0
+ L3 26624 0.000000 0.214541 -1.609055 0 0.278903 -0.793801 0
+ L3 26624 0.000000 -0.321811 -0.536352 0 -0.986887 -1.437423 0
+ L3 26624 0.000000 -1.308698 0.557806 0 -0.407627 0.042908 0
+ L3 26624 0.000000 0.686530 1.094157 0 0.257449 0.235995 0
+ L3 26624 0.000000 -3.910657 1.386758 0 -4.964593 1.913726 0
+ L3 26624 0.000000 -4.881387 -1.137141 0 -3.550100 -0.721114 0
+ L3 26624 0.000000 -3.855186 -4.132538 0 -2.662575 -3.771981 0
+ F4 26624 0.000000 4 0
+ -3.605570 2.135607 0
+ -2.912191 1.331287 0
+ -1.691844 0.859790 0
+ -2.468429 1.858255 0
+ F4 26624 0.000000 4 0
+ -3.272748 -1.137141 0
+ -1.775050 -1.275817 0
+ -1.109406 -0.665644 0
+ -2.329753 -0.693379 0
+ F4 26624 0.000000 4 0
+ -1.636374 2.690310 0
+ -1.885991 3.577835 0
+ -2.801251 4.021597 0
+ -2.551634 3.300483 0
+ F4 26624 0.000000 4 0
+ -5.436090 0.027735 0
+ -4.243479 0.305087 0
+ -2.939926 -0.110941 0
+ -4.271214 -0.332822 0
+ F4 26624 0.000000 4 0
+ -4.493095 3.522365 0
+ -3.827451 2.856721 0
+ -2.801251 2.634840 0
+ -3.383689 3.300483 0
+ F4 26624 0.000000 4 0
+ -3.799716 -3.661040 0
+ -2.912191 -2.745780 0
+ -1.885991 -2.357488 0
+ -2.884456 -3.355954 0
+ END$SEGS
+DRAW 511 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 703.000000 445.750000 0.000000 0 1500.000000 "OPHIR"
+ END$SEGS
+DRAW 512 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 207.000000 439.000000 355.000000 0 1500.000000 "MATTERHORN"
+ END$SEGS
+DRAW 513 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 96.500000 253.500000 0.000000 0 1500.000000 "LIZARD\n HEAD"
+ END$SEGS
+DRAW 514 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 279.000000 663.000000 0.000000 0 1500.000000 "AMES"
+ END$SEGS
+DRAW 515 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 435.000000 796.000000 0.000000 0 1500.000000 "VANCE JUNCTION"
+ END$SEGS
+DRAW 516 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 132.000000 940.000000 0.000000 0 1500.000000 "RIDGWAY"
+ END$SEGS
+DRAW 517 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 348.000000 267.000000 0 348.000000 267.000000 0
+ END$SEGS
+DRAW 518 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 203.999936 203.999997 0 240.348181 251.141154 0
+ END$SEGS
+DRAW 519 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 240.000000 251.000000 0 277.000000 266.000000 0
+ END$SEGS
+DRAW 520 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 277.000000 266.000000 0 315.000000 266.000000 0
+ END$SEGS
+DRAW 521 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 314.000000 266.000049 0 390.000000 258.000000 0
+ END$SEGS
+DRAW 522 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 390.000000 258.000000 0 443.000001 258.000001 0
+ END$SEGS
+DRAW 523 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 204.186387 204.241811 0 204.028559 136.400012 0
+ END$SEGS
+DRAW 524 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 204.354993 115.230638 0 222.000000 84.000000 0
+ END$SEGS
+DRAW 525 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 222.000000 84.000000 0 267.000000 69.000000 0
+ END$SEGS
+DRAW 526 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 443.000001 258.000001 0 498.000000 267.000000 0
+ END$SEGS
+DRAW 527 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 498.000000 267.000000 0 588.000000 240.000000 0
+ END$SEGS
+DRAW 528 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 588.000000 240.000000 0 658.000000 230.000000 0
+ END$SEGS
+DRAW 529 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 657.000000 231.000000 0 696.000000 192.000000 0
+ END$SEGS
+DRAW 530 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 696.000000 192.000000 0 717.570136 124.203620 0
+ END$SEGS
+DRAW 531 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 717.000000 123.000000 0 744.000000 180.000000 0
+ END$SEGS
+DRAW 532 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 744.000000 180.000000 0 768.000000 252.000000 0
+ END$SEGS
+DRAW 533 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 768.000000 252.000000 0 771.000000 315.000000 0
+ END$SEGS
+DRAW 534 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 771.000000 315.000000 0 756.000000 372.000000 0
+ END$SEGS
+DRAW 535 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 756.000000 372.000000 0 756.000000 432.000000 0
+ END$SEGS
+DRAW 536 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 756.000000 480.000000 0 768.000000 531.000000 0
+ END$SEGS
+STRUCTURE 537 3 0 0 0 Fn3 2 721.000000 294.000000 0 0.000000 "Lg Shade 32"" Tree Shade-32a"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 21 0
+ -9.679129 -9.182341 0
+ -8.306068 -14.374226 0
+ -5.216682 -15.704378 0
+ -1.741123 -11.413564 0
+ 2.249333 -15.146572 0
+ 7.055045 -12.872441 0
+ 5.939433 12.657900 0
+ 1.391171 15.060756 0
+ -0.496787 12.143003 0
+ -4.315612 12.185911 0
+ -5.259591 15.146572 0
+ -11.138005 13.258614 0
+ -10.408567 9.783055 0
+ -15.257186 9.439790 0
+ -17.745858 4.419538 0
+ -14.999738 1.587601 0
+ -18.604021 0.000000 0
+ -17.660042 -3.604283 0
+ -13.841218 -4.977344 0
+ -16.587339 -7.208567 0
+ -14.356116 -11.241932 0
+ F4 26624 0.000000 28 0
+ -13.387339 -7.208567 0
+ -11.156116 -11.241932 0
+ -6.479129 -9.182341 0
+ -5.106068 -14.374226 0
+ -2.016682 -15.704378 0
+ 1.458877 -11.413564 0
+ 5.449333 -15.146572 0
+ 10.255045 -12.872441 0
+ 8.452903 -8.109638 0
+ 14.202593 -6.522037 0
+ 15.060756 -1.115612 0
+ 12.057186 1.673417 0
+ 14.889123 5.706782 0
+ 12.743717 9.311066 0
+ 9.268158 8.023822 0
+ 9.139433 12.657900 0
+ 4.591171 15.060756 0
+ 2.703213 12.143003 0
+ -1.115612 12.185911 0
+ -2.059591 15.146572 0
+ -7.938005 13.258614 0
+ -7.208567 9.783055 0
+ -12.057186 9.439790 0
+ -14.545858 4.419538 0
+ -11.799738 1.587601 0
+ -15.404021 0.000000 0
+ -14.460042 -3.604283 0
+ -10.641218 -4.977344 0
+ F4 65280 0.000000 26 0
+ 2.145407 -10.040504 0
+ 5.148976 -13.044074 0
+ 8.023822 -11.284840 0
+ 6.736577 -6.264588 0
+ 12.486268 -4.676987 0
+ 12.872441 -2.188315 0
+ 9.268158 0.300357 0
+ 12.400451 5.020252 0
+ 11.027391 6.650761 0
+ 7.594740 6.564945 0
+ 7.423108 10.512493 0
+ 4.462446 12.143003 0
+ 2.016682 9.268158 0
+ -1.673417 9.783055 0
+ -2.531580 11.756829 0
+ -5.663874 10.941575 0
+ -5.706782 7.508924 0
+ -8.324179 7.423108 0
+ -10.040504 3.990457 0
+ -6.994026 1.115612 0
+ -9.868871 -0.386173 0
+ -9.396882 -2.445764 0
+ -4.805711 -3.303927 0
+ -6.564945 -6.436220 0
+ -3.690100 -8.667444 0
+ -2.531580 -11.199024 0
+ L3 65280 0.000000 -2.722067 -13.221467 0 -1.166600 -12.054867 0
+ L3 65280 0.000000 -3.888667 -12.443733 0 -4.277533 -10.499400 0
+ L3 65280 0.000000 -8.943933 -8.166200 0 -6.221867 -8.166200 0
+ L3 65280 0.000000 -10.888267 -7.388467 0 -9.721667 -6.221867 0
+ L3 65280 0.000000 -8.166200 -6.610733 0 -6.610733 -5.444133 0
+ L3 65280 0.000000 -7.388467 -4.277533 0 -9.721667 -3.888667 0
+ L3 65280 0.000000 -13.221467 -3.110933 0 -10.499400 -3.110933 0
+ L3 65280 0.000000 -13.221467 -0.777733 0 -10.888267 -1.944333 0
+ L3 65280 0.000000 -8.943933 1.166600 0 -10.888267 0.777733 0
+ L3 65280 0.000000 -10.499400 2.722067 0 -13.221467 4.277533 0
+ L3 65280 0.000000 -12.054867 5.833000 0 -10.110533 6.221867 0
+ L3 65280 0.000000 -9.332800 8.943933 0 -8.555067 7.777333 0
+ L3 65280 0.000000 -5.833000 11.666000 0 -6.610733 12.832600 0
+ L3 65280 0.000000 -3.499800 12.443733 0 -2.722067 13.610333 0
+ L3 65280 0.000000 -0.388867 10.499400 0 0.000000 11.666000 0
+ L3 65280 0.000000 1.944333 10.499400 0 0.777733 11.277133 0
+ L3 65280 0.000000 5.055267 12.443733 0 4.666400 13.999200 0
+ L3 65280 0.000000 7.388467 11.666000 0 8.555067 12.054867 0
+ L3 65280 0.000000 13.610333 5.444133 0 12.443733 5.833000 0
+ L3 65280 0.000000 11.666000 7.388467 0 12.443733 8.555067 0
+ L3 65280 0.000000 13.610333 -1.166600 0 12.054867 -0.777733 0
+ L3 65280 0.000000 -10.888267 -9.721667 0 -10.110533 -8.166200 0
+ L3 65280 0.000000 -12.443733 -7.388467 0 -11.277133 -8.166200 0
+ F4 26624 0.000000 4 0
+ 5.990793 -6.157204 0
+ 3.550100 -5.436090 0
+ 3.272748 -3.605570 0
+ 4.881387 -4.271214 0
+ F4 26624 0.000000 5 0
+ -2.329753 -7.377551 0
+ -2.107872 -6.101734 0
+ 0.277352 -5.047798 0
+ 0.942995 -6.600967 0
+ -0.277352 -7.765843 0
+ F4 26624 0.000000 4 0
+ 7.599432 0.277352 0
+ 4.714976 0.942995 0
+ 4.104803 -0.499233 0
+ 8.043195 -0.721114 0
+ F4 26624 0.000000 4 0
+ 1.830520 7.377551 0
+ 0.388292 6.268145 0
+ 0.776584 3.938392 0
+ 1.664109 4.271214 0
+ F4 26624 0.000000 3 0
+ 6.767378 5.547031 0
+ 5.990793 3.827451 0
+ 4.770447 4.881387 0
+ F4 26624 0.000000 5 0
+ -5.824382 0.665644 0
+ -5.047798 0.110941 0
+ -2.385223 -0.554703 0
+ -0.942995 0.942995 0
+ -4.271214 1.442228 0
+ F4 26624 0.000000 4 0
+ -5.103268 6.434556 0
+ -3.550100 6.046264 0
+ -2.440694 3.439159 0
+ -4.160273 3.882922 0
+ L3 26624 0.000000 0.777733 -8.555067 0 1.555467 -7.388467 0
+ L3 26624 0.000000 5.444133 -7.388467 0 3.499800 -6.610733 0
+ L3 26624 0.000000 6.221867 -9.332800 0 5.055267 -8.555067 0
+ L3 26624 0.000000 3.499800 -10.110533 0 2.722067 -8.555067 0
+ L3 26624 0.000000 -1.555467 -9.721667 0 -0.777733 -8.555067 0
+ L3 26624 0.000000 -4.666400 -6.221867 0 -3.110933 -6.221867 0
+ L3 26624 0.000000 -3.499800 -4.277533 0 -1.555467 -5.055267 0
+ L3 26624 0.000000 -4.666400 -2.333200 0 -3.110933 -1.166600 0
+ L3 26624 0.000000 -6.999600 -1.944333 0 -5.444133 -1.166600 0
+ L3 26624 0.000000 -8.943933 -0.777733 0 -6.999600 0.000000 0
+ L3 26624 0.000000 -6.221867 1.944333 0 -7.777333 3.499800 0
+ L3 26624 0.000000 -6.999600 5.444133 0 -5.833000 3.888667 0
+ L3 26624 0.000000 -4.277533 8.555067 0 -3.110933 6.999600 0
+ L3 26624 0.000000 -1.555467 6.999600 0 -1.944333 9.332800 0
+ L3 26624 0.000000 -1.166600 4.277533 0 -0.777733 5.833000 0
+ L3 26624 0.000000 2.722067 6.999600 0 3.499800 9.332800 0
+ L3 26624 0.000000 4.666400 6.610733 0 6.999600 7.777333 0
+ L3 26624 0.000000 10.499400 2.722067 0 8.555067 3.110933 0
+ L3 26624 0.000000 10.499400 6.221867 0 8.555067 5.444133 0
+ L3 26624 0.000000 11.277133 4.666400 0 9.332800 4.277533 0
+ L3 26624 0.000000 4.666400 11.277133 0 4.277533 9.721667 0
+ L3 26624 0.000000 6.999600 10.110533 0 5.833000 8.943933 0
+ L3 26624 0.000000 5.444133 10.499400 0 4.666400 8.166200 0
+ L3 26624 0.000000 11.666000 -1.944333 0 9.332800 -2.333200 0
+ L3 26624 0.000000 9.721667 -5.055267 0 7.777333 -3.888667 0
+ L3 26624 0.000000 11.666000 -3.888667 0 9.721667 -3.499800 0
+ L3 26624 0.000000 -3.888667 10.888267 0 -3.499800 9.332800 0
+ L3 26624 0.000000 -8.555067 5.444133 0 -7.388467 4.666400 0
+ L3 26624 0.000000 5.444133 -12.443733 0 4.666400 -10.499400 0
+ L3 26624 0.000000 6.999600 -11.277133 0 5.833000 -10.110533 0
+ END$SEGS
+DRAW 538 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 32960 0.000000 16 0
+ 481.000000 336.000000 0
+ 478.500000 326.750000 0
+ 459.000000 327.000000 0
+ 438.000000 323.000000 0
+ 428.000000 312.000000 0
+ 410.000000 302.000000 0
+ 384.000000 298.000000 0
+ 358.000000 301.000000 0
+ 345.000000 317.000000 0
+ 346.000000 331.000000 0
+ 366.000000 339.000000 0
+ 383.000000 343.000000 0
+ 408.000000 345.000000 0
+ 425.000000 339.000000 0
+ 438.000000 333.000000 0
+ 459.000000 336.000000 0
+ END$SEGS
+DRAW 539 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 16777088 360.250000 317.750000 0.000000 0 1000.000000 "Trout Lake"
+ END$SEGS
+DRAW 540 0 0 0 0 0.000000 0.000000 0 0.000000
+ G3 8421504 0.000000 12.165525 336.000000 348.000000 0
+ END$SEGS
+DRAW 541 0 0 0 0 0.000000 0.000000 0 0.000000
+ G3 8421504 0.000000 18.110770 264.000000 312.000000 0
+ END$SEGS
+DRAW 542 0 0 0 0 0.000000 0.000000 0 0.000000
+ G3 8421504 0.000000 12.369317 240.000000 360.000000 0
+ END$SEGS
+DRAW 543 0 0 0 0 0.000000 0.000000 0 0.000000
+ G3 8421504 0.000000 9.219544 540.000000 324.000000 0
+ END$SEGS
+DRAW 544 0 0 0 0 0.000000 0.000000 0 0.000000
+ G3 8421504 0.000000 9.000000 528.000000 708.000000 0
+ END$SEGS
+DRAW 545 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 16776960 523.250000 701.250000 0.000000 0 1000.000000 "H"
+ END$SEGS
+DRAW 546 0 0 0 0 0.000000 0.000000 0 0.000000
+ Z 16776960 534.750000 317.500000 0.000000 0 1000.000000 "H"
+ END$SEGS
+DRAW 547 5 0 0 0 0.000000 0.000000 0 0.000000
+ F4 32960 0.000000 18 0
+ 565.500000 648.500000 0
+ 552.000000 658.000000 0
+ 559.500000 673.000000 0
+ 568.500000 681.000000 0
+ 560.000000 687.500000 0
+ 562.000000 700.500000 0
+ 573.000000 707.500000 0
+ 588.000000 709.500000 0
+ 599.500000 705.000000 0
+ 615.000000 702.500000 0
+ 626.500000 701.500000 0
+ 636.000000 694.500000 0
+ 637.000000 683.000000 1
+ 629.000000 674.500000 0
+ 615.000000 670.500000 0
+ 601.500000 669.000000 0
+ 584.000000 672.500000 0
+ 572.500000 663.000000 0
+ END$SEGS
+DRAW 548 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 16776960 569.000000 683.000000 0.000000 0 1000.000000 "Pond-less"
+ END$SEGS
+DRAW 549 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 337.552727 172.014949 0.000000 0 1500.000000 "RICO"
+ END$SEGS
+TURNOUT 550 0 0 0 0 Fn3 2 81.120985 200.101553 0 43.568143 "NMRA G #5 Left 5L"
+ T4 117 81.120985 200.101553 313.568143 0 0.0 0.0 0.0 0.0 0 0 0 98.453936
+ T4 551 99.272311 182.835535 133.568143 0 0.0 0.0 0.0 0.0 0 0 0 98.453936
+ T4 552 101.410415 185.586257 122.146957 10 8.089585 10.163743 0.0 0.0 1 2 0 98.453936
+ 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 25.051667 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ END$SEGS
+STRAIGHT 551 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 550 99.272311 182.835535 313.567991 0 0.0 0.0 0.0 0.0 0 0 0 98.950488
+ T4 612 138.197998 145.808694 133.567991 0 0.0 0.0 0.0 0.0 0 0 0 98.950488
+ END$SEGS
+CURVE 552 0 0 0 0 Fn3 2 139.721220 246.547573 0 72.000000 0 0.000000 0.000000
+ T4 613 203.129320 212.438735 28.277043 0 0.0 0.0 0.0 0.0 0 0 0 97.544341
+ T4 550 101.410415 185.586257 302.146957 10 8.089585 10.163743 0.0 0.0 1 2 0 97.544341
+ END$SEGS
+CURVE 553 0 0 0 0 Fn3 2 303.276383 117.917662 0 166.844782 0 0.000000 0.000000
+ T4 606 286.101153 283.876068 264.091422 0 0.0 0.0 0.0 0.0 0 0 0 95.067464
+ T4 116 321.610339 283.752059 96.308767 0 0.0 0.0 0.0 0.0 0 0 0 95.067464
+ END$SEGS
+DRAW 554 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 32896 0.031250 331.821324 155.769047 0 331.821166 95.769046 0
+ END$SEGS
+DRAW 555 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 32896 0.031250 271.821324 155.769205 0 271.821166 95.769205 0
+ END$SEGS
+STRAIGHT 556 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 557 225.911383 125.976982 270.000151 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 583 394.371135 126.013759 90.000151 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+TURNOUT 557 11 0 0 0 Fn3 2 200.859716 125.976849 0 359.999695 "NMRA G #5 3-WAY (SYM) 5-3WS"
+ T4 605 200.859716 125.976849 269.999695 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 559 225.564697 129.443648 78.578509 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 563 225.564735 122.510314 101.420881 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 556 225.911383 125.976982 89.999695 0 0.0 0.0 0.0 0.0 0 0 0 100.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 1.770000 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ S 0 0.000000 1.770000 0.000000 25.051667 0.000000
+ END$SEGS
+STRAIGHT 558 11 0 0 0 Fn3 2 0.000000 0.000000
+ E4 509.821286 117.944139 89.999543 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 582 449.408039 117.943886 269.999543 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+CURVE 559 11 0 0 0 Fn3 2 206.425197 224.181669 0 96.652020 0 0.000000 0.000000
+ T4 560 246.591928 136.271221 65.444229 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 557 225.564949 129.443698 258.578509 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 560 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 559 246.591928 136.271221 245.444077 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 561 263.549902 144.019434 65.444077 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+CURVE 561 11 0 0 0 Fn3 2 299.160623 66.080448 0 85.689025 0 0.000000 0.000000
+ T4 560 263.549902 144.019434 245.444077 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 570 299.160848 151.769472 90.000151 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+TURNOUT 562 11 0 0 0 Fn3 2 240.778100 119.437014 0 11.420729 "NMRA G #5 3-WAY (SYM) 5-3WS"
+ T4 563 240.778100 119.437014 281.420729 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 581 265.680373 117.943158 89.999543 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 567 264.307491 111.147106 112.841915 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 565 265.333735 114.476489 101.420729 0 0.0 0.0 0.0 0.0 0 0 0 100.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 1.770000 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ C 0 0.000000 57.751549 1.770077 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ S 0 0.000000 1.770000 0.000000 25.051667 0.000000
+ END$SEGS
+STRAIGHT 563 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 557 225.564735 122.510314 281.420729 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 562 240.778100 119.437014 101.420729 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 564 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 566 295.946409 109.949275 269.988344 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ E4 509.821274 109.993069 89.988344 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 565 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 562 265.333735 114.476489 281.420536 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 566 279.722274 111.569928 101.420536 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+CURVE 566 11 0 0 0 Fn3 2 295.929540 191.799563 0 81.850290 0 0.000000 0.000000
+ T4 564 295.946409 109.949275 89.988344 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 565 279.722274 111.569928 281.420536 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 567 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 562 264.307491 111.147106 292.841763 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 569 271.474474 108.128298 112.841763 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 568 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 569 302.071405 101.950513 269.988344 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ E4 509.832631 101.993055 89.988344 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+CURVE 569 11 0 0 0 Fn3 2 302.055170 180.728248 0 78.777736 0 0.000000 0.000000
+ T4 568 302.071405 101.950513 89.988344 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 567 271.474474 108.128298 292.841763 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 570 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 561 299.160848 151.769472 269.999999 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 573 350.784179 151.769545 89.999999 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 571 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 584 453.821285 140.893996 270.000151 9 0.500000 3.374730 104.000000 104.000000 1 1 0 104.000000
+ E4 509.828705 140.893922 90.000151 0 0.0 0.0 0.0 0.0 0 0 0 104.000000
+ END$SEGS
+TURNOUT 572 11 0 0 0 Fn3 2 441.428389 126.018758 0 180.000151 "NMRA G #5 Right 5R"
+ T4 574 441.428389 126.018758 90.000151 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 583 416.376722 126.018890 270.000151 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 577 416.723407 129.485556 281.421337 0 0.0 0.0 0.0 0.0 0 0 0 100.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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.769770 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+CURVE 573 11 0 0 0 Fn3 2 350.784372 79.769545 0 72.000000 0 0.000000 0.000000
+ T4 570 350.784179 151.769545 269.999847 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 585 373.661350 148.038453 108.526066 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 574 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 572 441.428389 126.018758 270.000151 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ E4 509.821703 126.018850 89.999999 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 575 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 576 413.337240 141.587592 97.104728 10 1.734047 3.431240 0.0 0.0 1 2 0 100.685616
+ T4 585 392.367032 144.201289 277.104880 9 1.704261 3.567598 100.000000 100.000000 1 1 0 100.685616
+ END$SEGS
+CURVE 576 11 0 0 0 Fn3 2 424.509022 231.217860 0 90.323826 0 0.000000 0.000000
+ T4 584 424.508545 140.894034 90.000151 11 2.687740 3.249769 0.0 0.0 1 3 0 101.734601
+ T4 575 413.337240 141.587592 277.104728 10 1.734047 3.431240 0.0 0.0 1 2 0 101.734601
+ END$SEGS
+CURVE 577 11 0 0 0 Fn3 2 431.657144 203.406614 0 75.414450 0 0.000000 0.000000
+ T4 572 416.723210 129.485596 101.421337 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 579 396.130994 136.884197 298.104218 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 578 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 585 390.902179 139.829908 299.947252 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 579 392.989701 138.627286 119.947035 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+CURVE 579 11 0 0 0 Fn3 2 448.753140 235.418425 0 111.705352 0 0.000000 0.000000
+ T4 577 396.130991 136.884191 118.104291 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 578 392.989701 138.627286 299.947035 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 580 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 582 424.703000 121.410278 101.421185 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 583 419.076126 122.547027 281.421337 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+STRAIGHT 581 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 562 265.680373 117.943158 269.999694 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 582 424.356372 117.943621 89.999543 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ END$SEGS
+TURNOUT 582 11 0 0 0 Fn3 2 449.408039 117.943886 0 179.999543 "NMRA G #5 Right 5R"
+ T4 558 449.408039 117.943886 89.999543 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 581 424.356372 117.943621 269.999543 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 580 424.703003 121.410291 281.420729 0 0.0 0.0 0.0 0.0 0 0 0 100.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 25.051667 0.000000
+ C 0 0.000000 57.751549 1.769770 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+TURNOUT 583 11 0 0 0 Fn3 2 394.371135 126.013759 0 0.000151 "NMRA G #5 Right 5R"
+ T4 556 394.371135 126.013759 270.000151 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 572 416.422803 126.013701 90.000151 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 580 419.076126 122.547027 101.421337 0 0.0 0.0 0.0 0.0 0 0 0 100.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 22.051667 0.000000
+ C 0 0.000000 57.751549 1.769770 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 24.705000 -3.466667
+ END$SEGS
+STRAIGHT 584 11 0 0 0 Fn3 2 0.000000 0.000000
+ T4 576 424.508545 140.894034 269.999999 11 2.687740 3.249769 0.0 0.0 1 3 0 103.048986
+ T4 571 453.821285 140.893996 89.999999 9 0.500000 3.374730 104.000000 104.000000 1 1 0 103.048986
+ END$SEGS
+TURNOUT 585 11 0 0 0 Fn3 2 373.661350 148.038453 0 18.526066 "NMRA G #2.5 NEW WYE 2.5NY"
+ T4 573 373.661350 148.038453 288.526066 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 575 392.367032 144.201289 97.104880 9 1.704261 3.567598 100.000000 100.000000 1 1 0 100.000000
+ T4 578 390.902179 139.829908 119.947252 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ D 0.000000 0.000000
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 18.955546 2.305145
+ C 0 0.000000 57.751549 1.769770 -57.751549 0.000076 11.421338
+ S 0 0.000000 13.206091 -1.143623 18.955546 -2.305145
+ END$SEGS
+DRAW 586 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 187.821261 131.769395 0 271.821324 155.769205 0
+ END$SEGS
+DRAW 587 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 187.821230 120.000002 0 271.821166 95.769205 0
+ END$SEGS
+DRAW 588 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 271.821324 155.769205 0 331.821324 155.769047 0
+ END$SEGS
+DRAW 589 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 271.821166 95.769205 0 331.821166 95.769046 0
+ END$SEGS
+DRAW 590 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 331.821324 155.769047 0 391.821324 155.768889 0
+ END$SEGS
+DRAW 591 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 331.821166 95.769046 0 391.821166 95.768889 0
+ END$SEGS
+DRAW 592 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 32896 0.031250 391.821324 155.768889 0 391.821166 95.768889 0
+ END$SEGS
+DRAW 593 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 391.821166 95.768889 0 451.821165 95.768730 0
+ END$SEGS
+DRAW 594 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 391.821324 155.768889 0 451.821324 155.768731 0
+ END$SEGS
+DRAW 595 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 451.821324 155.768731 0 511.821324 155.768573 0
+ END$SEGS
+DRAW 596 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 32896 0.031250 451.821165 95.768730 0 451.821324 155.768731 0
+ END$SEGS
+STRUCTURE 597 11 0 0 0 Fn3 2 452.821254 129.268727 0 0.000151 "Custom Rico Coal Pocket Rico-3"
+ D 0.000000 0.000000
+ F4 8553090 0.010417 4 0
+ 2.000000 7.250000 0
+ 34.875000 7.250000 0
+ 34.875000 0.000000 0
+ 2.000000 0.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 0.380000 0
+ 1.900000 0.380000 0
+ 1.900000 0.000000 0
+ 0.000000 0.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 0.780000 0
+ 1.900000 0.780000 0
+ 1.900000 0.400000 0
+ 0.000000 0.400000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 1.180000 0
+ 1.900000 1.180000 0
+ 1.900000 0.800000 0
+ 0.000000 0.800000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 1.580000 0
+ 1.900000 1.580000 0
+ 1.900000 1.200000 0
+ 0.000000 1.200000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 1.980000 0
+ 1.900000 1.980000 0
+ 1.900000 1.600000 0
+ 0.000000 1.600000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 2.380000 0
+ 1.900000 2.380000 0
+ 1.900000 2.000000 0
+ 0.000000 2.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 2.780000 0
+ 1.900000 2.780000 0
+ 1.900000 2.400000 0
+ 0.000000 2.400000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 3.180000 0
+ 1.900000 3.180000 0
+ 1.900000 2.800000 0
+ 0.000000 2.800000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 3.580000 0
+ 1.900000 3.580000 0
+ 1.900000 3.200000 0
+ 0.000000 3.200000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 3.980000 0
+ 1.900000 3.980000 0
+ 1.900000 3.600000 0
+ 0.000000 3.600000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 4.380000 0
+ 1.900000 4.380000 0
+ 1.900000 4.000000 0
+ 0.000000 4.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 4.780000 0
+ 1.900000 4.780000 0
+ 1.900000 4.400000 0
+ 0.000000 4.400000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 5.180000 0
+ 1.900000 5.180000 0
+ 1.900000 4.800000 0
+ 0.000000 4.800000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 5.580000 0
+ 1.900000 5.580000 0
+ 1.900000 5.200000 0
+ 0.000000 5.200000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 5.980000 0
+ 1.900000 5.980000 0
+ 1.900000 5.600000 0
+ 0.000000 5.600000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 6.380000 0
+ 1.900000 6.380000 0
+ 1.900000 6.000000 0
+ 0.000000 6.000000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 6.780000 0
+ 1.900000 6.780000 0
+ 1.900000 6.400000 0
+ 0.000000 6.400000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 7.180000 0
+ 1.900000 7.180000 0
+ 1.900000 6.800000 0
+ 0.000000 6.800000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 7.580000 0
+ 1.900000 7.580000 0
+ 1.900000 7.200000 0
+ 0.000000 7.200000 0
+ F4 8553090 0.010417 4 0
+ 0.000000 7.980000 0
+ 1.900000 7.980000 0
+ 1.900000 7.600000 0
+ 0.000000 7.600000 0
+ L3 0 0.010417 34.875000 7.250000 0 2.000000 7.250000 0
+ L3 0 0.010417 34.875000 0.000000 0 2.000000 0.000000 0
+ L3 0 0.010417 2.000000 7.250000 0 2.000000 0.000000 0
+ L3 0 0.010417 34.875000 7.250000 0 34.875000 0.000000 0
+ END$SEGS
+DRAW 598 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 32896 0.031250 271.821229 119.769205 0 331.821229 119.769047 0
+ END$SEGS
+DRAW 599 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 32896 0.031250 331.821229 119.769047 0 391.821229 119.768889 0
+ END$SEGS
+DRAW 600 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 32896 0.031250 391.821229 119.768889 0 451.821229 119.768730 0
+ END$SEGS
+DRAW 601 11 0 0 0 0.000000 0.000000 0 0.000000
+ L3 32896 0.031250 451.821229 119.768730 0 511.821229 119.768572 0
+ END$SEGS
+DRAW 602 11 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 32896 0.000000 451.821165 95.768730 0 511.821165 95.768573 0
+ END$SEGS
+STRUCTURE 603 11 0 0 0 Fn3 2 294.821251 128.394143 0 0.000151 "Custom Rico Depot Rico-1"
+ D 0.000000 0.000000
+ F4 12434814 0.000000 4 0
+ 63.000000 18.000000 0
+ 32.000000 18.000000 0
+ 32.000000 21.000000 0
+ 63.000000 21.000000 0
+ F4 12434814 0.000000 4 0
+ 63.000000 3.000000 0
+ 60.000000 3.000000 0
+ 60.000000 18.000000 0
+ 63.000000 18.000000 0
+ F4 12434814 0.000000 4 0
+ 63.000000 0.000000 0
+ 32.000000 0.000000 0
+ 32.000000 3.000000 0
+ 63.000000 3.000000 0
+ F4 12500670 0.000000 6 0
+ 30.000000 10.500000 0
+ 60.000000 10.500000 0
+ 60.000000 18.000000 0
+ 26.000000 18.000000 0
+ 26.000000 8.000000 0
+ 30.000000 8.000000 0
+ F4 12500670 0.000000 4 0
+ 0.000000 10.500000 0
+ 0.000000 20.500000 0
+ 26.000000 20.500000 0
+ 26.000000 10.500000 0
+ F4 8553090 0.000000 4 0
+ 0.000000 10.500000 0
+ 26.000000 10.500000 0
+ 26.000000 0.500000 0
+ 0.000000 0.500000 0
+ F4 8553090 0.000000 4 0
+ 26.000000 8.000000 0
+ 30.000000 8.000000 0
+ 30.000000 5.000000 0
+ 26.000000 5.000000 0
+ F4 8553090 0.000000 9 0
+ 30.000000 5.000000 0
+ 26.000000 5.000000 0
+ 26.000000 2.000000 0
+ 29.000000 2.000000 0
+ 29.000000 3.000000 0
+ 60.000000 3.000000 0
+ 60.000000 10.500000 0
+ 30.000000 10.500000 0
+ 30.000000 8.000000 0
+ F4 12500670 0.000000 3 0
+ 23.250000 17.750000 0
+ 16.000000 10.500000 0
+ 16.000000 17.750000 0
+ F4 12500670 0.000000 4 0
+ 23.250000 3.250000 0
+ 16.000000 3.250000 0
+ 16.000000 10.500000 0
+ 16.000000 10.500000 0
+ F4 8553090 0.000000 4 0
+ 16.000000 3.250000 0
+ 8.750000 3.250000 0
+ 16.000000 10.500000 0
+ 16.000000 3.250000 0
+ F4 8553090 0.000000 3 0
+ 16.000000 17.750000 0
+ 8.750000 17.750000 0
+ 16.000000 10.500000 0
+ F4 8553090 0.000000 3 0
+ 15.875000 14.125000 0
+ 12.375000 14.125000 0
+ 14.125000 15.812500 0
+ F4 8553090 0.000000 3 0
+ 12.375000 14.125000 0
+ 12.375000 17.500000 0
+ 14.125000 15.812500 0
+ F4 12500670 0.000000 3 0
+ 14.125000 15.812500 0
+ 12.375000 17.500000 0
+ 15.875000 17.500000 0
+ F4 12500670 0.000000 3 0
+ 15.875000 17.500000 0
+ 15.875000 14.125000 0
+ 14.125000 15.812500 0
+ G3 6842368 0.000000 0.257694 14.125000 15.812500 0
+ L3 0 0.000000 0.000000 20.500000 0 26.000000 20.500000 0
+ L3 0 0.000000 26.000000 20.500000 0 26.000000 18.000000 0
+ L3 0 0.000000 26.000000 18.000000 0 32.000000 18.000000 0
+ L3 0 0.000000 32.000000 18.000000 0 60.000000 18.000000 0
+ L3 0 0.000000 60.000000 18.000000 0 60.000000 3.000000 0
+ L3 0 0.000000 26.000000 2.000000 0 26.000000 0.500000 0
+ L3 0 0.000000 26.000000 0.500000 0 0.000000 0.500000 0
+ L3 0 0.000000 0.000000 20.500000 0 0.000000 0.500000 0
+ L3 0 0.000000 23.250000 3.250000 0 8.750000 3.250000 0
+ L3 0 0.000000 8.750000 3.250000 0 23.250000 17.750000 0
+ L3 0 0.000000 23.250000 17.750000 0 8.750000 17.750000 0
+ L3 0 0.000000 8.750000 17.750000 0 23.250000 3.250000 0
+ L3 0 0.000000 26.000000 10.500000 0 0.000000 10.500000 0
+ L3 0 0.000000 32.000000 18.000000 0 32.000000 21.000000 0
+ L3 0 0.000000 32.000000 21.000000 0 63.000000 21.000000 0
+ L3 0 0.000000 63.000000 21.000000 0 63.000000 0.000000 0
+ L3 0 0.000000 63.000000 0.000000 0 32.000000 0.000000 0
+ L3 0 0.000000 32.000000 0.000000 0 32.000000 3.000000 0
+ L3 0 0.000000 26.000000 18.000000 0 26.000000 2.000000 0
+ L3 0 0.000000 12.375000 17.500000 0 15.875000 17.500000 0
+ L3 0 0.000000 15.875000 17.500000 0 12.375000 14.125000 0
+ L3 0 0.000000 12.375000 14.125000 0 15.875000 14.125000 0
+ L3 0 0.000000 15.875000 14.125000 0 12.375000 17.500000 0
+ L3 0 0.000000 12.375000 17.500000 0 12.375000 14.125000 0
+ L3 0 0.000000 15.875000 14.125000 0 15.875000 17.500000 0
+ L3 0 0.000000 60.000000 18.000000 0 60.000000 3.000000 0
+ L3 0 0.000000 29.000000 2.000000 0 26.000000 2.000000 0
+ L3 0 0.000000 29.000000 3.000000 0 32.000000 3.000000 0
+ L3 0 0.000000 29.000000 2.000000 0 29.000000 3.000000 0
+ L3 0 0.000000 26.000000 8.000000 0 30.000000 8.000000 0
+ L3 0 0.000000 30.000000 8.000000 0 30.000000 10.500000 0
+ L3 0 0.000000 30.000000 10.500000 0 60.000000 10.500000 0
+ L3 0 0.000000 32.000000 3.000000 0 60.000000 3.000000 0
+ L3 0 0.000000 26.000000 5.000000 0 30.000000 5.000000 0
+ L3 0 0.000000 30.000000 5.000000 0 30.000000 8.000000 0
+ END$SEGS
+STRUCTURE 604 11 0 0 0 Fn3 2 265.321250 127.769222 0 0.000151 "Custom Rico Tank Rico-2"
+ D 0.000000 0.000000
+ G3 6842368 0.010417 0.250000 8.000000 9.300000 0
+ G3 6842368 0.010417 0.200200 8.000000 9.300000 0
+ G3 6842368 0.010417 0.100000 8.000000 9.300000 0
+ F4 4276545 0.010417 4 0
+ 7.500000 1.800000 0
+ 8.500000 1.800000 0
+ 8.400000 0.500000 0
+ 7.600000 0.500000 0
+ G3 4276545 0.010417 0.400000 8.000000 0.500000 0
+ G3 12434814 0.010417 7.400000 8.000000 9.300000 0
+ F4 12434814 0.010417 4 0
+ 10.210800 4.199000 0
+ 11.250000 4.799000 0
+ 12.000000 3.500000 0
+ 10.960800 2.900000 0
+ L3 0 0.010417 8.250000 9.300000 0 8.965000 9.300000 0
+ L3 0 0.010417 9.680000 9.300000 0 10.395000 9.300000 0
+ L3 0 0.010417 11.110000 9.300000 0 11.825000 9.300000 0
+ L3 0 0.010417 13.255000 9.300000 0 13.970000 9.300000 0
+ L3 0 0.010417 14.685000 9.300000 0 15.400000 9.300000 0
+ L3 0 0.010417 8.216500 9.425000 0 8.835700 9.782500 0
+ L3 0 0.010417 8.125000 9.516500 0 8.482500 10.135700 0
+ L3 0 0.010417 8.000000 9.550000 0 8.000000 10.265000 0
+ L3 0 0.010417 7.875000 9.516500 0 7.517500 10.135700 0
+ L3 0 0.010417 7.783500 9.425000 0 7.164300 9.782500 0
+ L3 0 0.010417 7.750000 9.300000 0 7.035000 9.300000 0
+ L3 0 0.010417 7.783500 9.175000 0 7.164300 8.817500 0
+ L3 0 0.010417 7.875000 9.083500 0 7.517500 8.464300 0
+ L3 0 0.010417 8.000000 9.050000 0 8.000000 8.335000 0
+ L3 0 0.010417 8.125000 9.083500 0 8.482500 8.464300 0
+ L3 0 0.010417 8.216500 9.175000 0 8.835700 8.817500 0
+ L3 0 0.010417 8.959700 9.400900 0 9.670800 9.475600 0
+ L3 0 0.010417 8.917800 9.598200 0 9.597800 9.819100 0
+ L3 0 0.010417 8.717100 9.945700 0 9.248500 10.424100 0
+ L3 0 0.010417 8.392500 10.181600 0 8.683300 10.834800 0
+ L3 0 0.010417 8.200600 10.243900 0 8.349300 10.943300 0
+ L3 0 0.010417 7.799400 10.243900 0 7.650700 10.943300 0
+ L3 0 0.010417 7.432800 10.080700 0 7.012500 10.659100 0
+ L3 0 0.010417 7.282900 9.945700 0 6.751500 10.424100 0
+ L3 0 0.010417 7.082200 9.598200 0 6.402200 9.819100 0
+ L3 0 0.010417 7.040300 9.199100 0 6.329200 9.124400 0
+ L3 0 0.010417 7.082200 9.001800 0 6.402200 8.780900 0
+ L3 0 0.010417 7.282900 8.654300 0 6.751500 8.175900 0
+ L3 0 0.010417 7.607500 8.418400 0 7.316700 7.765200 0
+ L3 0 0.010417 7.799400 8.356100 0 7.650700 7.656700 0
+ L3 0 0.010417 8.200600 8.356100 0 8.349300 7.656700 0
+ L3 0 0.010417 8.567200 8.519300 0 8.987500 7.940900 0
+ L3 0 0.010417 8.717100 8.654300 0 9.248500 8.175900 0
+ L3 0 0.010417 8.917800 9.001800 0 9.597800 8.780900 0
+ L3 0 0.010417 9.654500 9.591700 0 10.358600 9.715900 0
+ L3 0 0.010417 9.578700 9.874600 0 10.250600 10.119100 0
+ L3 0 0.010417 9.454900 10.140000 0 10.074100 10.497500 0
+ L3 0 0.010417 9.287000 10.379900 0 9.834700 10.839500 0
+ L3 0 0.010417 9.079900 10.587000 0 9.539500 11.134700 0
+ L3 0 0.010417 8.840000 10.754900 0 9.197500 11.374100 0
+ L3 0 0.010417 8.574600 10.878700 0 8.819100 11.550600 0
+ L3 0 0.010417 8.291700 10.954500 0 8.415900 11.658600 0
+ L3 0 0.010417 8.000000 10.980000 0 8.000000 11.695000 0
+ L3 0 0.010417 7.708300 10.954500 0 7.584100 11.658600 0
+ L3 0 0.010417 7.425400 10.878700 0 7.180900 11.550600 0
+ L3 0 0.010417 7.160000 10.754900 0 6.802500 11.374100 0
+ L3 0 0.010417 6.920100 10.587000 0 6.460500 11.134700 0
+ L3 0 0.010417 6.713000 10.379900 0 6.165300 10.839500 0
+ L3 0 0.010417 6.545100 10.140000 0 5.925900 10.497500 0
+ L3 0 0.010417 6.421300 9.874600 0 5.749400 10.119100 0
+ L3 0 0.010417 6.345500 9.591700 0 5.641400 9.715900 0
+ L3 0 0.010417 6.320000 9.300000 0 5.605000 9.300000 0
+ L3 0 0.010417 6.345500 9.008300 0 5.641400 8.884100 0
+ L3 0 0.010417 6.421300 8.725400 0 5.749400 8.480900 0
+ L3 0 0.010417 6.545100 8.460000 0 5.925900 8.102500 0
+ L3 0 0.010417 6.713000 8.220100 0 6.165300 7.760500 0
+ L3 0 0.010417 6.920100 8.013000 0 6.460500 7.465300 0
+ L3 0 0.010417 7.160000 7.845100 0 6.802500 7.225900 0
+ L3 0 0.010417 7.425400 7.721300 0 7.180900 7.049400 0
+ L3 0 0.010417 7.708300 7.645500 0 7.584100 6.941400 0
+ L3 0 0.010417 8.000000 7.620000 0 8.000000 6.905000 0
+ L3 0 0.010417 8.291700 7.645500 0 8.415900 6.941400 0
+ L3 0 0.010417 8.574600 7.721300 0 8.819100 7.049400 0
+ L3 0 0.010417 8.840000 7.845100 0 9.197500 7.225900 0
+ L3 0 0.010417 9.079900 8.013000 0 9.539500 7.465300 0
+ L3 0 0.010417 9.287000 8.220100 0 9.834700 7.760500 0
+ L3 0 0.010417 9.454900 8.460000 0 10.074100 8.102500 0
+ L3 0 0.010417 9.578700 8.725400 0 10.250600 8.480900 0
+ L3 0 0.010417 9.654500 9.008300 0 10.358600 8.884100 0
+ L3 0 0.010417 10.385900 9.508700 0 11.098200 9.571100 0
+ L3 0 0.010417 10.323900 9.879400 0 11.017600 10.052400 0
+ L3 0 0.010417 10.204600 10.235800 0 10.862800 10.515200 0
+ L3 0 0.010417 10.031100 10.569200 0 10.637400 10.948000 0
+ L3 0 0.010417 9.807500 10.871300 0 10.347100 11.340300 0
+ L3 0 0.010417 9.539500 11.134700 0 9.999100 11.682400 0
+ L3 0 0.010417 9.233500 11.352900 0 9.601800 11.965800 0
+ L3 0 0.010417 8.897200 11.520600 0 9.165000 12.183500 0
+ L3 0 0.010417 8.538800 11.633600 0 8.699600 12.330300 0
+ L3 0 0.010417 8.167100 11.689200 0 8.216900 12.402400 0
+ L3 0 0.010417 7.791300 11.685900 0 7.728900 12.398200 0
+ L3 0 0.010417 7.420600 11.623900 0 7.247600 12.317600 0
+ L3 0 0.010417 7.064200 11.504600 0 6.784800 12.162800 0
+ L3 0 0.010417 6.730800 11.331100 0 6.352000 11.937400 0
+ L3 0 0.010417 6.428700 11.107500 0 5.959700 11.647100 0
+ L3 0 0.010417 6.165300 10.839500 0 5.617600 11.299100 0
+ L3 0 0.010417 5.947100 10.533500 0 5.334200 10.901800 0
+ L3 0 0.010417 5.779400 10.197200 0 5.116500 10.465000 0
+ L3 0 0.010417 5.666400 9.838800 0 4.969700 9.999600 0
+ L3 0 0.010417 5.610800 9.467100 0 4.897600 9.516900 0
+ L3 0 0.010417 5.614100 9.091300 0 4.901800 9.028900 0
+ L3 0 0.010417 5.676100 8.720600 0 4.982400 8.547600 0
+ L3 0 0.010417 5.795400 8.364200 0 5.137200 8.084800 0
+ L3 0 0.010417 5.968900 8.030800 0 5.362600 7.652000 0
+ L3 0 0.010417 6.192500 7.728700 0 5.652900 7.259700 0
+ L3 0 0.010417 6.460500 7.465300 0 6.000900 6.917600 0
+ L3 0 0.010417 6.766500 7.247100 0 6.398200 6.634200 0
+ L3 0 0.010417 7.102800 7.079400 0 6.835000 6.416500 0
+ L3 0 0.010417 7.461200 6.966400 0 7.300400 6.269700 0
+ L3 0 0.010417 7.832900 6.910800 0 7.783100 6.197600 0
+ L3 0 0.010417 8.208700 6.914100 0 8.271100 6.201800 0
+ L3 0 0.010417 8.579400 6.976100 0 8.752400 6.282400 0
+ L3 0 0.010417 8.935800 7.095400 0 9.215200 6.437200 0
+ L3 0 0.010417 9.269200 7.268900 0 9.648000 6.662600 0
+ L3 0 0.010417 9.571300 7.492500 0 10.040300 6.952900 0
+ L3 0 0.010417 9.834700 7.760500 0 10.382400 7.300900 0
+ L3 0 0.010417 10.052900 8.066500 0 10.665800 7.698200 0
+ L3 0 0.010417 10.220600 8.402800 0 10.883500 8.135000 0
+ L3 0 0.010417 10.333600 8.761200 0 11.030300 8.600400 0
+ L3 0 0.010417 10.389200 9.132900 0 11.102400 9.083100 0
+ L3 0 0.010417 11.079700 9.732800 0 11.787800 9.832300 0
+ L3 0 0.010417 10.989500 10.157200 0 11.676800 10.354300 0
+ L3 0 0.010417 10.841100 10.565000 0 11.494300 10.855800 0
+ L3 0 0.010417 10.637400 10.948000 0 11.243800 11.326900 0
+ L3 0 0.010417 10.382400 11.299100 0 10.930100 11.758700 0
+ L3 0 0.010417 10.081000 11.611200 0 10.559400 12.142500 0
+ L3 0 0.010417 9.739100 11.878300 0 10.138900 12.471100 0
+ L3 0 0.010417 9.363300 12.095200 0 9.676800 12.737900 0
+ L3 0 0.010417 8.961000 12.257800 0 9.182000 12.937800 0
+ L3 0 0.010417 8.540000 12.362800 0 8.664200 13.066900 0
+ L3 0 0.010417 8.108500 12.408100 0 8.133500 13.122700 0
+ L3 0 0.010417 7.674900 12.393000 0 7.600200 13.104000 0
+ L3 0 0.010417 7.247600 12.317600 0 7.074600 13.011400 0
+ L3 0 0.010417 6.835000 12.183500 0 6.567100 12.846500 0
+ L3 0 0.010417 6.445000 11.993300 0 6.087500 12.612500 0
+ L3 0 0.010417 6.085300 11.750700 0 5.645100 12.314100 0
+ L3 0 0.010417 5.762900 11.460400 0 5.248500 11.957100 0
+ L3 0 0.010417 5.484000 11.128000 0 4.905500 11.548300 0
+ L3 0 0.010417 5.254000 10.760100 0 4.622700 11.095700 0
+ L3 0 0.010417 5.077600 10.363700 0 4.405700 10.608200 0
+ L3 0 0.010417 4.958000 9.946600 0 4.258600 10.095300 0
+ L3 0 0.010417 4.897600 9.516900 0 4.184300 9.566800 0
+ L3 0 0.010417 4.897600 9.083100 0 4.184300 9.033200 0
+ L3 0 0.010417 4.958000 8.653400 0 4.258600 8.504700 0
+ L3 0 0.010417 5.077600 8.236300 0 4.405700 7.991800 0
+ L3 0 0.010417 5.254000 7.839900 0 4.622700 7.504300 0
+ L3 0 0.010417 5.484000 7.472000 0 4.905500 7.051700 0
+ L3 0 0.010417 5.762900 7.139600 0 5.248500 6.642900 0
+ L3 0 0.010417 6.085300 6.849300 0 5.645100 6.285900 0
+ L3 0 0.010417 6.445000 6.606700 0 6.087500 5.987500 0
+ L3 0 0.010417 6.835000 6.416500 0 6.567100 5.753500 0
+ L3 0 0.010417 7.247600 6.282400 0 7.074600 5.588600 0
+ L3 0 0.010417 7.674900 6.207000 0 7.600200 5.496000 0
+ L3 0 0.010417 8.108500 6.191900 0 8.133500 5.477300 0
+ L3 0 0.010417 8.540000 6.237200 0 8.664200 5.533100 0
+ L3 0 0.010417 8.961000 6.342200 0 9.182000 5.662200 0
+ L3 0 0.010417 9.363300 6.504800 0 9.676800 5.862100 0
+ L3 0 0.010417 9.739100 6.721700 0 10.138900 6.128900 0
+ L3 0 0.010417 10.081000 6.988800 0 10.559400 6.457500 0
+ L3 0 0.010417 10.382400 7.300900 0 10.930100 6.841300 0
+ L3 0 0.010417 10.637400 7.652000 0 11.243800 7.273100 0
+ L3 0 0.010417 10.841100 8.035000 0 11.494300 7.744200 0
+ L3 0 0.010417 10.989500 8.442800 0 11.676800 8.245700 0
+ L3 0 0.010417 11.079700 8.867200 0 11.787800 8.767700 0
+ L3 0 0.010417 11.815700 9.566800 0 12.528900 9.616700 0
+ L3 0 0.010417 11.748200 10.062600 0 12.448900 10.205100 0
+ L3 0 0.010417 11.616600 10.545300 0 12.292700 10.778100 0
+ L3 0 0.010417 11.423100 11.006700 0 12.063000 11.325700 0
+ L3 0 0.010417 11.171100 11.438900 0 11.763800 11.838700 0
+ L3 0 0.010417 10.864800 11.834500 0 11.400300 12.308300 0
+ L3 0 0.010417 10.509400 12.186800 0 10.978500 12.726400 0
+ L3 0 0.010417 10.111200 12.489600 0 10.505800 13.085800 0
+ L3 0 0.010417 9.676800 12.737900 0 9.990200 13.380500 0
+ L3 0 0.010417 9.213700 12.927300 0 9.440600 13.605400 0
+ L3 0 0.010417 8.729800 13.054700 0 8.866300 13.756600 0
+ L3 0 0.010417 8.233500 13.117900 0 8.277200 13.831500 0
+ L3 0 0.010417 7.733200 13.115700 0 7.683300 13.828900 0
+ L3 0 0.010417 7.237400 13.048200 0 7.094900 13.748900 0
+ L3 0 0.010417 6.754700 12.916600 0 6.521900 13.592700 0
+ L3 0 0.010417 6.293300 12.723100 0 5.974300 13.363000 0
+ L3 0 0.010417 5.861100 12.471100 0 5.461300 13.063800 0
+ L3 0 0.010417 5.465500 12.164800 0 4.991700 12.700300 0
+ L3 0 0.010417 5.113200 11.809400 0 4.573600 12.278500 0
+ L3 0 0.010417 4.810400 11.411200 0 4.214200 11.805800 0
+ L3 0 0.010417 4.562100 10.976800 0 3.919500 11.290200 0
+ L3 0 0.010417 4.372700 10.513700 0 3.694600 10.740600 0
+ L3 0 0.010417 4.245300 10.029800 0 3.543400 10.166300 0
+ L3 0 0.010417 4.182100 9.533500 0 3.468500 9.577200 0
+ L3 0 0.010417 4.184300 9.033200 0 3.471100 8.983300 0
+ L3 0 0.010417 4.251800 8.537400 0 3.551100 8.394900 0
+ L3 0 0.010417 4.383400 8.054700 0 3.707300 7.821900 0
+ L3 0 0.010417 4.576900 7.593300 0 3.937000 7.274300 0
+ L3 0 0.010417 4.828900 7.161100 0 4.236200 6.761300 0
+ L3 0 0.010417 5.135200 6.765500 0 4.599700 6.291700 0
+ L3 0 0.010417 5.490600 6.413200 0 5.021500 5.873600 0
+ L3 0 0.010417 5.888800 6.110400 0 5.494200 5.514200 0
+ L3 0 0.010417 6.323200 5.862100 0 6.009800 5.219500 0
+ L3 0 0.010417 6.786300 5.672700 0 6.559400 4.994600 0
+ L3 0 0.010417 7.270200 5.545300 0 7.133700 4.843400 0
+ L3 0 0.010417 7.766500 5.482100 0 7.722800 4.768500 0
+ L3 0 0.010417 8.266800 5.484300 0 8.316700 4.771100 0
+ L3 0 0.010417 8.762600 5.551800 0 8.905100 4.851100 0
+ L3 0 0.010417 9.245300 5.683400 0 9.478100 5.007300 0
+ L3 0 0.010417 9.706700 5.876900 0 10.025700 5.237000 0
+ L3 0 0.010417 10.138900 6.128900 0 10.538700 5.536200 0
+ L3 0 0.010417 10.534500 6.435200 0 11.008300 5.899700 0
+ L3 0 0.010417 10.886800 6.790600 0 11.426400 6.321500 0
+ L3 0 0.010417 11.189600 7.188800 0 11.785800 6.794200 0
+ L3 0 0.010417 11.437900 7.623200 0 12.080500 7.309800 0
+ L3 0 0.010417 11.627300 8.086300 0 12.305400 7.859400 0
+ L3 0 0.010417 11.754700 8.570200 0 12.456600 8.433700 0
+ L3 0 0.010417 11.817900 9.066500 0 12.531500 9.022800 0
+ L3 0 0.010417 12.537200 9.458400 0 13.251800 9.483400 0
+ L3 0 0.010417 12.495800 9.931800 0 13.203900 10.031400 0
+ L3 0 0.010417 12.405100 10.398300 0 13.098900 10.571300 0
+ L3 0 0.010417 12.266200 10.852800 0 12.938100 11.097300 0
+ L3 0 0.010417 12.080500 11.290200 0 12.723200 11.603600 0
+ L3 0 0.010417 11.850100 11.705800 0 12.456500 12.084700 0
+ L3 0 0.010417 11.577600 12.095100 0 12.141000 12.535300 0
+ L3 0 0.010417 11.265800 12.453700 0 11.780100 12.950400 0
+ L3 0 0.010417 10.918300 12.777800 0 11.377800 13.325600 0
+ L3 0 0.010417 10.538700 13.063800 0 10.938600 13.656600 0
+ L3 0 0.010417 10.131400 13.308600 0 10.467100 13.939900 0
+ L3 0 0.010417 9.700700 13.509400 0 9.968600 14.172400 0
+ L3 0 0.010417 9.251400 13.664100 0 9.448500 14.351400 0
+ L3 0 0.010417 8.788400 13.771000 0 8.912500 14.475200 0
+ L3 0 0.010417 8.316700 13.828900 0 8.366600 14.542200 0
+ L3 0 0.010417 7.841600 13.837200 0 7.816600 14.551800 0
+ L3 0 0.010417 7.368200 13.795800 0 7.268600 14.503900 0
+ L3 0 0.010417 6.901700 13.705100 0 6.728700 14.398900 0
+ L3 0 0.010417 6.447200 13.566200 0 6.202700 14.238100 0
+ L3 0 0.010417 6.009800 13.380500 0 5.696400 14.023200 0
+ L3 0 0.010417 5.594200 13.150100 0 5.215300 13.756500 0
+ L3 0 0.010417 5.204900 12.877600 0 4.764700 13.441000 0
+ L3 0 0.010417 4.846300 12.565800 0 4.349600 13.080100 0
+ L3 0 0.010417 4.522200 12.218300 0 3.974400 12.677800 0
+ L3 0 0.010417 4.236200 11.838700 0 3.643400 12.238600 0
+ L3 0 0.010417 3.991400 11.431400 0 3.360100 11.767100 0
+ L3 0 0.010417 3.790600 11.000700 0 3.127600 11.268600 0
+ L3 0 0.010417 3.635900 10.551400 0 2.948600 10.748500 0
+ L3 0 0.010417 3.529000 10.088400 0 2.824800 10.212500 0
+ L3 0 0.010417 3.471100 9.616700 0 2.757800 9.666600 0
+ L3 0 0.010417 3.462800 9.141600 0 2.748200 9.116600 0
+ L3 0 0.010417 3.504200 8.668200 0 2.796100 8.568600 0
+ L3 0 0.010417 3.594900 8.201700 0 2.901100 8.028700 0
+ L3 0 0.010417 3.733800 7.747200 0 3.061900 7.502700 0
+ L3 0 0.010417 3.919500 7.309800 0 3.276800 6.996400 0
+ L3 0 0.010417 4.149900 6.894200 0 3.543500 6.515300 0
+ L3 0 0.010417 4.422400 6.504900 0 3.859000 6.064700 0
+ L3 0 0.010417 4.734200 6.146300 0 4.219900 5.649600 0
+ L3 0 0.010417 5.081700 5.822200 0 4.622200 5.274400 0
+ L3 0 0.010417 5.461300 5.536200 0 5.061400 4.943400 0
+ L3 0 0.010417 5.868600 5.291400 0 5.532900 4.660100 0
+ L3 0 0.010417 6.299300 5.090600 0 6.031400 4.427600 0
+ L3 0 0.010417 6.748600 4.935900 0 6.551500 4.248600 0
+ L3 0 0.010417 7.211600 4.829000 0 7.087500 4.124800 0
+ L3 0 0.010417 7.683300 4.771100 0 7.633400 4.057800 0
+ L3 0 0.010417 8.158400 4.762800 0 8.183400 4.048200 0
+ L3 0 0.010417 8.631800 4.804200 0 8.731400 4.096100 0
+ L3 0 0.010417 9.098300 4.894900 0 9.271300 4.201100 0
+ L3 0 0.010417 9.552800 5.033800 0 9.797300 4.361900 0
+ L3 0 0.010417 9.990200 5.219500 0 10.303600 4.576800 0
+ L3 0 0.010417 10.405800 5.449900 0 10.784700 4.843500 0
+ L3 0 0.010417 10.795100 5.722400 0 11.235300 5.159000 0
+ L3 0 0.010417 11.153700 6.034200 0 11.650400 5.519900 0
+ L3 0 0.010417 11.477800 6.381700 0 12.025600 5.922200 0
+ L3 0 0.010417 11.763800 6.761300 0 12.356600 6.361400 0
+ L3 0 0.010417 12.008600 7.168600 0 12.639900 6.832900 0
+ L3 0 0.010417 12.209400 7.599300 0 12.872400 7.331400 0
+ L3 0 0.010417 12.364100 8.048600 0 13.051400 7.851500 0
+ L3 0 0.010417 12.471000 8.511600 0 13.175200 8.387500 0
+ L3 0 0.010417 12.528900 8.983300 0 13.242200 8.933400 0
+ L3 0 0.010417 13.235000 9.758000 0 13.947300 9.820300 0
+ L3 0 0.010417 13.175200 10.212500 0 13.879300 10.336700 0
+ L3 0 0.010417 13.075900 10.660100 0 13.766600 10.845100 0
+ L3 0 0.010417 12.938100 11.097300 0 13.610000 11.341900 0
+ L3 0 0.010417 12.762600 11.520900 0 13.410700 11.823000 0
+ L3 0 0.010417 12.551000 11.927500 0 13.170200 12.285000 0
+ L3 0 0.010417 12.304600 12.314100 0 12.890300 12.724300 0
+ L3 0 0.010417 12.025600 12.677800 0 12.573300 13.137400 0
+ L3 0 0.010417 11.715800 13.015800 0 12.221400 13.521400 0
+ L3 0 0.010417 11.377800 13.325600 0 11.837400 13.873300 0
+ L3 0 0.010417 11.014100 13.604600 0 11.424300 14.190300 0
+ L3 0 0.010417 10.627500 13.851000 0 10.985000 14.470200 0
+ L3 0 0.010417 10.220900 14.062600 0 10.523000 14.710700 0
+ L3 0 0.010417 9.797300 14.238100 0 10.041900 14.910000 0
+ L3 0 0.010417 9.360100 14.375900 0 9.545100 15.066600 0
+ L3 0 0.010417 8.912500 14.475200 0 9.036700 15.179300 0
+ L3 0 0.010417 8.458000 14.535000 0 8.520300 15.247300 0
+ L3 0 0.010417 8.000000 14.555000 0 8.000000 15.270000 0
+ L3 0 0.010417 7.542000 14.535000 0 7.479700 15.247300 0
+ L3 0 0.010417 7.087500 14.475200 0 6.963300 15.179300 0
+ L3 0 0.010417 6.639900 14.375900 0 6.454900 15.066600 0
+ L3 0 0.010417 6.202700 14.238100 0 5.958100 14.910000 0
+ L3 0 0.010417 5.779100 14.062600 0 5.477000 14.710700 0
+ L3 0 0.010417 5.372500 13.851000 0 5.015000 14.470200 0
+ L3 0 0.010417 4.985900 13.604600 0 4.575700 14.190300 0
+ L3 0 0.010417 4.622200 13.325600 0 4.162600 13.873300 0
+ L3 0 0.010417 4.284200 13.015800 0 3.778600 13.521400 0
+ L3 0 0.010417 3.974400 12.677800 0 3.426700 13.137400 0
+ L3 0 0.010417 3.695400 12.314100 0 3.109700 12.724300 0
+ L3 0 0.010417 3.449000 11.927500 0 2.829800 12.285000 0
+ L3 0 0.010417 3.237400 11.520900 0 2.589300 11.823000 0
+ L3 0 0.010417 3.061900 11.097300 0 2.390000 11.341900 0
+ L3 0 0.010417 2.924100 10.660100 0 2.233400 10.845100 0
+ L3 0 0.010417 2.824800 10.212500 0 2.120700 10.336700 0
+ L3 0 0.010417 2.765000 9.758000 0 2.052700 9.820300 0
+ L3 0 0.010417 2.745000 9.300000 0 2.030000 9.300000 0
+ L3 0 0.010417 2.765000 8.842000 0 2.052700 8.779700 0
+ L3 0 0.010417 2.824800 8.387500 0 2.120700 8.263300 0
+ L3 0 0.010417 2.924100 7.939900 0 2.233400 7.754900 0
+ L3 0 0.010417 3.061900 7.502700 0 2.390000 7.258100 0
+ L3 0 0.010417 3.237400 7.079100 0 2.589300 6.777000 0
+ L3 0 0.010417 3.449000 6.672500 0 2.829800 6.315000 0
+ L3 0 0.010417 3.695400 6.285900 0 3.109700 5.875700 0
+ L3 0 0.010417 3.974400 5.922200 0 3.426700 5.462600 0
+ L3 0 0.010417 4.284200 5.584200 0 3.778600 5.078600 0
+ L3 0 0.010417 4.622200 5.274400 0 4.162600 4.726700 0
+ L3 0 0.010417 4.985900 4.995400 0 4.575700 4.409700 0
+ L3 0 0.010417 5.372500 4.749000 0 5.015000 4.129800 0
+ L3 0 0.010417 5.779100 4.537400 0 5.477000 3.889300 0
+ L3 0 0.010417 6.202700 4.361900 0 5.958100 3.690000 0
+ L3 0 0.010417 6.639900 4.224100 0 6.454900 3.533400 0
+ L3 0 0.010417 7.087500 4.124800 0 6.963300 3.420700 0
+ L3 0 0.010417 7.542000 4.065000 0 7.479700 3.352700 0
+ L3 0 0.010417 8.000000 4.045000 0 8.000000 3.330000 0
+ L3 0 0.010417 8.458000 4.065000 0 8.520300 3.352700 0
+ L3 0 0.010417 8.912500 4.124800 0 9.036700 3.420700 0
+ L3 0 0.010417 9.360100 4.224100 0 9.545100 3.533400 0
+ L3 0 0.010417 9.797300 4.361900 0 10.041900 3.690000 0
+ L3 0 0.010417 11.377800 5.274400 0 11.837400 4.726700 0
+ L3 0 0.010417 11.715800 5.584200 0 12.221400 5.078600 0
+ L3 0 0.010417 12.025600 5.922200 0 12.573300 5.462600 0
+ L3 0 0.010417 12.304600 6.285900 0 12.890300 5.875700 0
+ L3 0 0.010417 12.551000 6.672500 0 13.170200 6.315000 0
+ L3 0 0.010417 12.762600 7.079100 0 13.410700 6.777000 0
+ L3 0 0.010417 12.938100 7.502700 0 13.610000 7.258100 0
+ L3 0 0.010417 13.075900 7.939900 0 13.766600 7.754900 0
+ L3 0 0.010417 13.175200 8.387500 0 13.879300 8.263300 0
+ L3 0 0.010417 13.235000 8.842000 0 13.947300 8.779700 0
+ L3 0 0.010417 13.968000 9.456300 0 14.682700 9.475000 0
+ L3 0 0.010417 13.942500 9.872200 0 14.654200 9.940700 0
+ L3 0 0.010417 13.888100 10.285300 0 14.593300 10.403300 0
+ L3 0 0.010417 13.805000 10.693700 0 14.500300 10.860600 0
+ L3 0 0.010417 13.693700 11.095200 0 14.375600 11.310200 0
+ L3 0 0.010417 13.554600 11.488000 0 14.219800 11.750100 0
+ L3 0 0.010417 13.388400 11.870200 0 14.033800 12.178000 0
+ L3 0 0.010417 13.196000 12.239800 0 13.818300 12.591900 0
+ L3 0 0.010417 12.978300 12.595100 0 13.574500 12.989700 0
+ L3 0 0.010417 12.736300 12.934300 0 13.303600 13.369600 0
+ L3 0 0.010417 12.471300 13.255800 0 13.006800 13.729600 0
+ L3 0 0.010417 12.184400 13.558100 0 12.685600 14.068100 0
+ L3 0 0.010417 11.877200 13.839600 0 12.341600 14.383300 0
+ L3 0 0.010417 11.551100 14.099000 0 11.976400 14.673800 0
+ L3 0 0.010417 11.207700 14.335000 0 11.591800 14.938100 0
+ L3 0 0.010417 10.848600 14.546500 0 11.189800 15.174900 0
+ L3 0 0.010417 10.475700 14.732500 0 10.772200 15.383100 0
+ L3 0 0.010417 10.090700 14.891900 0 10.341100 15.561700 0
+ L3 0 0.010417 9.695600 15.024200 0 9.898600 15.709700 0
+ L3 0 0.010417 9.292100 15.128500 0 9.446900 15.826500 0
+ L3 0 0.010417 8.882400 15.204400 0 8.988100 15.911600 0
+ L3 0 0.010417 8.468400 15.251600 0 8.524500 15.964400 0
+ L3 0 0.010417 8.052100 15.269800 0 8.058300 15.984700 0
+ L3 0 0.010417 7.635500 15.258900 0 7.591900 15.972500 0
+ L3 0 0.010417 7.220800 15.218900 0 7.127400 15.927800 0
+ L3 0 0.010417 6.809800 15.150200 0 6.667200 15.850800 0
+ L3 0 0.010417 6.404600 15.052900 0 6.213500 15.741900 0
+ L3 0 0.010417 6.007200 14.927600 0 5.768500 15.601600 0
+ L3 0 0.010417 5.619500 14.774800 0 5.334400 15.430500 0
+ L3 0 0.010417 5.243400 14.595500 0 4.913200 15.229700 0
+ L3 0 0.010417 4.880700 14.390300 0 4.507100 14.999900 0
+ L3 0 0.010417 4.533200 14.160300 0 4.118000 14.742400 0
+ L3 0 0.010417 4.202600 13.906600 0 3.747800 14.458300 0
+ L3 0 0.010417 3.890500 13.630500 0 3.398300 14.149100 0
+ L3 0 0.010417 3.598500 13.333300 0 3.071300 13.816300 0
+ L3 0 0.010417 3.327800 13.016400 0 2.768300 13.461500 0
+ L3 0 0.010417 3.080000 12.681400 0 2.490700 13.086400 0
+ L3 0 0.010417 2.856100 12.330000 0 2.240000 12.692900 0
+ L3 0 0.010417 2.657200 11.963800 0 2.017400 12.282800 0
+ L3 0 0.010417 2.484400 11.584600 0 1.823900 11.858200 0
+ L3 0 0.010417 2.338500 11.194300 0 1.660500 11.421200 0
+ L3 0 0.010417 2.220200 10.794800 0 1.527900 10.973800 0
+ L3 0 0.010417 2.130000 10.387900 0 1.426900 10.518200 0
+ L3 0 0.010417 2.068400 9.975800 0 1.358000 10.056800 0
+ L3 0 0.010417 2.035700 9.560400 0 1.321400 9.591600 0
+ L3 0 0.010417 2.032000 9.143700 0 1.317300 9.125000 0
+ L3 0 0.010417 2.057500 8.727800 0 1.345800 8.659300 0
+ L3 0 0.010417 2.111900 8.314700 0 1.406700 8.196700 0
+ L3 0 0.010417 2.195000 7.906300 0 1.499700 7.739400 0
+ L3 0 0.010417 2.306300 7.504800 0 1.624400 7.289800 0
+ L3 0 0.010417 2.445400 7.112000 0 1.780200 6.849900 0
+ L3 0 0.010417 2.611600 6.729800 0 1.966200 6.422000 0
+ L3 0 0.010417 2.804000 6.360200 0 2.181700 6.008100 0
+ L3 0 0.010417 3.021700 6.004900 0 2.425500 5.610300 0
+ L3 0 0.010417 3.263700 5.665700 0 2.696400 5.230400 0
+ L3 0 0.010417 3.528700 5.344200 0 2.993200 4.870400 0
+ L3 0 0.010417 3.815600 5.041900 0 3.314400 4.531900 0
+ L3 0 0.010417 4.122800 4.760400 0 3.658400 4.216700 0
+ L3 0 0.010417 4.448900 4.501000 0 4.023600 3.926200 0
+ L3 0 0.010417 4.792300 4.265000 0 4.408200 3.661900 0
+ L3 0 0.010417 5.151400 4.053500 0 4.810200 3.425100 0
+ L3 0 0.010417 5.524300 3.867500 0 5.227800 3.216900 0
+ L3 0 0.010417 5.909300 3.708100 0 5.658900 3.038300 0
+ L3 0 0.010417 6.304400 3.575800 0 6.101400 2.890300 0
+ L3 0 0.010417 6.707900 3.471500 0 6.553100 2.773500 0
+ L3 0 0.010417 7.117600 3.395600 0 7.011900 2.688400 0
+ L3 0 0.010417 7.531600 3.348400 0 7.475500 2.635600 0
+ L3 0 0.010417 7.947900 3.330200 0 7.941700 2.615300 0
+ L3 0 0.010417 8.364500 3.341100 0 8.408100 2.627500 0
+ L3 0 0.010417 8.779200 3.381100 0 8.872600 2.672200 0
+ L3 0 0.010417 9.190200 3.449800 0 9.332800 2.749200 0
+ L3 0 0.010417 9.595400 3.547100 0 9.786500 2.858100 0
+ L3 0 0.010417 9.992800 3.672400 0 10.231500 2.998400 0
+ L3 0 0.010417 10.380500 3.825200 0 10.665600 3.169500 0
+ L3 0 0.010417 11.466800 4.439700 0 11.882000 3.857600 0
+ L3 0 0.010417 11.797400 4.693400 0 12.252200 4.141700 0
+ L3 0 0.010417 12.109500 4.969500 0 12.601700 4.450900 0
+ L3 0 0.010417 12.401500 5.266700 0 12.928700 4.783700 0
+ L3 0 0.010417 12.672200 5.583600 0 13.231700 5.138500 0
+ L3 0 0.010417 12.920000 5.918600 0 13.509300 5.513600 0
+ L3 0 0.010417 13.143900 6.270000 0 13.760000 5.907100 0
+ L3 0 0.010417 13.342800 6.636200 0 13.982600 6.317200 0
+ L3 0 0.010417 13.515600 7.015400 0 14.176100 6.741800 0
+ L3 0 0.010417 13.661500 7.405700 0 14.339500 7.178800 0
+ L3 0 0.010417 13.779800 7.805200 0 14.472100 7.626200 0
+ L3 0 0.010417 13.870000 8.212100 0 14.573100 8.081800 0
+ L3 0 0.010417 13.931600 8.624200 0 14.642000 8.543200 0
+ L3 0 0.010417 13.964300 9.039600 0 14.678600 9.008400 0
+ L3 0 0.010417 14.648400 9.998800 0 15.359500 10.073500 0
+ L3 0 0.010417 14.538900 10.689900 0 15.238300 10.838500 0
+ L3 0 0.010417 14.357800 11.365800 0 15.037800 11.586700 0
+ L3 0 0.010417 14.107100 12.019000 0 14.760200 12.309900 0
+ L3 0 0.010417 13.789400 12.642500 0 14.408600 13.000000 0
+ L3 0 0.010417 13.408300 13.229300 0 13.986700 13.649600 0
+ L3 0 0.010417 12.967900 13.773100 0 13.499300 14.251600 0
+ L3 0 0.010417 12.473100 14.267900 0 12.951600 14.799300 0
+ L3 0 0.010417 11.929300 14.708300 0 12.349600 15.286700 0
+ L3 0 0.010417 11.342500 15.089400 0 11.700000 15.708600 0
+ L3 0 0.010417 10.719000 15.407100 0 11.009900 16.060200 0
+ L3 0 0.010417 10.065800 15.657800 0 10.286700 16.337800 0
+ L3 0 0.010417 9.389900 15.838900 0 9.538500 16.538300 0
+ L3 0 0.010417 8.698800 15.948400 0 8.773500 16.659500 0
+ L3 0 0.010417 8.000000 15.985000 0 8.000000 16.700000 0
+ L3 0 0.010417 7.301200 15.948400 0 7.226500 16.659500 0
+ L3 0 0.010417 6.610100 15.838900 0 6.461500 16.538300 0
+ L3 0 0.010417 5.934200 15.657800 0 5.713300 16.337800 0
+ L3 0 0.010417 5.281000 15.407100 0 4.990100 16.060200 0
+ L3 0 0.010417 4.657500 15.089400 0 4.300000 15.708600 0
+ L3 0 0.010417 4.070700 14.708300 0 3.650400 15.286700 0
+ L3 0 0.010417 3.526900 14.267900 0 3.048400 14.799300 0
+ L3 0 0.010417 3.032100 13.773100 0 2.500700 14.251600 0
+ L3 0 0.010417 2.591700 13.229300 0 2.013300 13.649600 0
+ L3 0 0.010417 2.210600 12.642500 0 1.591400 13.000000 0
+ L3 0 0.010417 1.892900 12.019000 0 1.239800 12.309900 0
+ L3 0 0.010417 1.642200 11.365800 0 0.962200 11.586700 0
+ L3 0 0.010417 1.461100 10.689900 0 0.761700 10.838500 0
+ L3 0 0.010417 1.351600 9.998800 0 0.640500 10.073500 0
+ L3 0 0.010417 1.315000 9.300000 0 0.600000 9.300000 0
+ L3 0 0.010417 1.351600 8.601200 0 0.640500 8.526500 0
+ L3 0 0.010417 1.461100 7.910100 0 0.761700 7.761500 0
+ L3 0 0.010417 1.642200 7.234200 0 0.962200 7.013300 0
+ L3 0 0.010417 1.892900 6.581000 0 1.239800 6.290100 0
+ L3 0 0.010417 2.210600 5.957500 0 1.591400 5.600000 0
+ L3 0 0.010417 2.591700 5.370700 0 2.013300 4.950400 0
+ L3 0 0.010417 3.032100 4.826900 0 2.500700 4.348400 0
+ L3 0 0.010417 3.526900 4.332100 0 3.048400 3.800700 0
+ L3 0 0.010417 4.070700 3.891700 0 3.650400 3.313300 0
+ L3 0 0.010417 4.657500 3.510600 0 4.300000 2.891400 0
+ L3 0 0.010417 5.281000 3.192900 0 4.990100 2.539800 0
+ L3 0 0.010417 5.934200 2.942200 0 5.713300 2.262200 0
+ L3 0 0.010417 6.610100 2.761100 0 6.461500 2.061700 0
+ L3 0 0.010417 7.301200 2.651600 0 7.226500 1.940500 0
+ L3 0 0.010417 8.000000 2.615000 0 8.000000 1.900000 0
+ L3 0 0.010417 8.698800 2.651600 0 8.773500 1.940500 0
+ L3 0 0.010417 9.389900 2.761100 0 9.538500 2.061700 0
+ L3 0 0.010417 10.065800 2.942200 0 10.286700 2.262200 0
+ L3 0 0.010417 10.719000 3.192900 0 11.009900 2.539800 0
+ L3 0 0.010417 11.929300 3.891700 0 12.349600 3.313300 0
+ L3 0 0.010417 12.473100 4.332100 0 12.951600 3.800700 0
+ L3 0 0.010417 12.967900 4.826900 0 13.499300 4.348400 0
+ L3 0 0.010417 13.408300 5.370700 0 13.986700 4.950400 0
+ L3 0 0.010417 13.789400 5.957500 0 14.408600 5.600000 0
+ L3 0 0.010417 14.107100 6.581000 0 14.760200 6.290100 0
+ L3 0 0.010417 14.357800 7.234200 0 15.037800 7.013300 0
+ L3 0 0.010417 14.538900 7.910100 0 15.238300 7.761500 0
+ L3 0 0.010417 14.648400 8.601200 0 15.359500 8.526500 0
+ A3 0 0.010417 0.965000 8.000000 9.300000 0 0.000000 360.000000
+ A3 0 0.010417 1.680000 8.000000 9.300000 0 0.000000 360.000000
+ A3 0 0.010417 2.395000 8.000000 9.300000 0 0.000000 360.000000
+ A3 0 0.010417 3.110000 8.000000 9.300000 0 0.000000 360.000000
+ A3 0 0.010417 3.825000 8.000000 9.300000 0 0.000000 360.000000
+ A3 0 0.010417 4.540000 8.000000 9.300000 0 0.000000 360.000000
+ A3 0 0.010417 5.255000 8.000000 9.300000 0 0.000000 360.000000
+ A3 0 0.375012 7.500000 8.000000 9.300000 0 0.000000 360.000000
+ L3 0 0.010417 10.384000 4.299000 0 11.134000 3.000000 0
+ L3 0 0.010417 10.557200 4.399000 0 11.307200 3.100000 0
+ L3 0 0.010417 10.730400 4.499000 0 11.480400 3.200000 0
+ L3 0 0.010417 10.903600 4.599000 0 11.653600 3.300000 0
+ L3 0 0.010417 11.076800 4.699000 0 11.826800 3.400000 0
+ A3 0 0.010417 5.970000 8.000000 9.300000 0 -203.885500 348.463600
+ A3 0 0.010417 6.685000 8.000000 9.300000 0 155.458400 349.701000
+ L3 0 0.010417 10.220900 4.537400 0 10.343000 4.275400 0
+ L3 0 0.010417 10.627500 4.749000 0 10.761500 4.517000 0
+ L3 0 0.010417 11.014100 4.995400 0 11.179900 4.758600 0
+ L3 0 0.010417 11.511500 3.217900 0 11.700000 2.891400 0
+ L3 0 0.010417 10.198300 4.220700 0 11.237500 4.820700 0
+ L3 0 0.010417 11.271700 4.811500 0 12.021700 3.512500 0
+ L3 0 0.010417 12.012500 3.478300 0 10.973300 2.878300 0
+ L3 0 0.010417 10.939100 2.887500 0 10.189100 4.186500 0
+ END$SEGS
+STRAIGHT 605 11 128 0 0 Fn3 2 0.000000 0.000000
+ T4 557 200.859716 125.976849 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 100.000000
+ T4 612 187.821245 125.976831 270.000000 9 -0.321245 -12.976831 100.000000 100.000000 1 1 0 100.000000
+ END$SEGS
+TURNOUT 606 0 0 0 0 Fn3 2 286.101153 283.876068 0 174.091422 "NMRA G #5 Left 5L"
+ T4 553 286.101153 283.876068 84.091422 0 0.0 0.0 0.0 0.0 0 0 0 95.456635
+ T4 611 261.182582 281.297149 264.091422 0 0.0 0.0 0.0 0.0 0 0 0 95.456635
+ T4 609 261.884280 277.884587 252.670236 0 0.0 0.0 0.0 0.0 0 0 0 95.456635
+ 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 25.051667 0.000000
+ C 0 0.000000 -57.751549 1.770077 57.751549 168.578738 11.421338
+ S 0 0.000000 13.206091 1.143623 24.705000 3.466667
+ END$SEGS
+STRAIGHT 607 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 53 173.740735 310.021836 306.667158 0 0.0 0.0 0.0 0.0 0 0 0 96.617659
+ T4 608 195.558884 293.778704 126.667158 0 0.0 0.0 0.0 0.0 0 0 0 96.617659
+ END$SEGS
+CURVE 608 0 0 0 0 Fn3 2 238.985724 352.109773 0 72.721413 0 0.000000 0.000000
+ T4 610 245.574112 279.687420 84.802158 0 0.0 0.0 0.0 0.0 0 0 0 96.228408
+ T4 607 195.558884 293.778704 306.667158 0 0.0 0.0 0.0 0.0 0 0 0 96.228408
+ END$SEGS
+CURVE 609 0 0 0 0 Fn3 2 283.331144 209.152993 0 72.000000 0 0.000000 0.000000
+ T4 613 219.923134 243.261999 208.277043 0 0.0 0.0 0.0 0.0 0 0 0 95.975751
+ T4 606 261.884463 277.884644 72.670236 0 0.0 0.0 0.0 0.0 0 0 0 95.975751
+ END$SEGS
+CURVE 610 0 0 0 0 Fn3 2 239.027659 351.650919 0 72.260647 0 0.000000 0.000000
+ T4 611 246.466459 279.774181 84.091422 0 0.0 0.0 0.0 0.0 0 0 0 95.859270
+ T4 608 245.574112 279.687420 264.802309 0 0.0 0.0 0.0 0.0 0 0 0 95.859270
+ END$SEGS
+STRAIGHT 611 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 606 261.182582 281.297149 84.091579 0 0.0 0.0 0.0 0.0 0 0 0 95.746173
+ T4 610 246.466459 279.774181 264.091579 0 0.0 0.0 0.0 0.0 0 0 0 95.746173
+ END$SEGS
+CURVE 612 0 0 0 0 Fn3 2 187.821436 197.976831 0 72.000000 0 0.000000 0.000000
+ T4 605 187.821245 125.976831 90.000000 9 -0.321245 -12.976831 100.000000 100.000000 1 1 0 99.647964
+ T4 551 138.197860 145.808826 313.567991 0 0.0 0.0 0.0 0.0 0 0 0 99.647964
+ END$SEGS
+STRAIGHT 613 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 552 203.129320 212.438735 208.583284 0 0.0 0.0 0.0 0.0 0 0 0 96.560157
+ T4 609 219.923134 243.261999 28.583284 0 0.0 0.0 0.0 0.0 0 0 0 96.560157
+ END$SEGS
+DRAW 614 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 511.821324 155.768573 0 511.821165 95.768573 0
+ END$SEGS
+DRAW 615 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 300.000000 1080.000000 0 300.000000 1200.000000 0
+ END$SEGS
+DRAW 616 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 360.000000 1200.000000 0 360.000000 948.000000 0
+ END$SEGS
+DRAW 617 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 360.000000 948.000000 0 480.000000 948.000000 0
+ END$SEGS
+DRAW 618 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 480.000000 948.000000 0 480.000000 828.000000 0
+ END$SEGS
+DRAW 619 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 480.000000 828.000000 0 780.000000 828.000000 0
+ END$SEGS
+TURNOUT 620 1 0 0 0 Fn3 2 137.230021 502.999758 0 0.000000 "NMRA G #4 Right 4R"
+ T4 623 137.230021 502.999758 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 107 158.780354 502.999758 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 621 158.347022 499.533092 104.250033 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ 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 21.550333 0.000000
+ C 0 0.000000 45.576853 1.770060 -45.576853 0.000000 14.250185
+ S 0 0.000000 12.989026 -1.402392 21.117000 -3.466667
+ END$SEGS
+STRAIGHT 621 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 620 158.347022 499.533092 284.249881 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 622 168.088980 497.059012 104.249881 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ END$SEGS
+CURVE 622 1 0 0 0 Fn3 2 185.812083 566.843787 0 72.000162 0 0.000000 0.000000
+ T4 108 185.812435 494.843625 89.999872 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ T4 621 168.088980 497.059012 284.249881 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ END$SEGS
+STRAIGHT 623 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 47 94.571269 502.999814 270.000000 10 -0.821269 -6.749814 0.0 0.0 1 2 0 88.460000
+ T4 620 137.230021 502.999758 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 88.460000
+ END$SEGS
+STRUCTURE 624 0 0 0 0 Fn3 2 713.170771 193.375300 0 89.551296 "Custom Favorite Mine Custom1"
+ D 0.000000 0.000000
+ F4 6842368 0.000000 4 0
+ 17.716535 0.984252 0
+ 17.716535 9.251969 0
+ 20.669291 9.251969 0
+ 20.669291 0.984252 0
+ F4 12430718 0.000000 4 0
+ 0.984252 5.905512 0
+ 0.984252 1.181102 0
+ -2.755906 1.181102 0
+ -2.755906 5.905512 0
+ F4 8553090 0.000000 4 0
+ 29.527559 0.984252 0
+ 29.527559 15.157480 0
+ 24.212598 15.157480 0
+ 24.212598 0.984252 0
+ F4 12500670 0.000000 5 0
+ 12.401575 19.291339 0
+ 12.401575 9.251969 0
+ 20.669291 9.251969 0
+ 20.669291 15.157480 0
+ 20.669291 19.291339 0
+ F4 12500670 0.000000 4 0
+ 24.212598 15.157480 0
+ 20.669291 15.157480 0
+ 20.669291 0.984252 0
+ 24.212598 0.984252 0
+ F4 8421504 0.000000 4 0
+ 0.000000 6.791339 0
+ -5.314961 6.791339 0
+ -5.314961 6.496063 0
+ 0.000000 6.496063 0
+ F4 8421504 0.000000 4 0
+ 0.000000 0.590551 0
+ -5.314961 0.590551 0
+ -5.314961 0.295276 0
+ 0.000000 0.295276 0
+ F4 12500670 0.000000 4 0
+ 3.543307 6.200787 0
+ -5.905512 6.200787 0
+ -5.905512 6.496063 0
+ 3.543307 6.496063 0
+ F4 12500670 0.000000 4 0
+ 3.543307 0.590551 0
+ -5.905512 0.590551 0
+ -5.905512 0.885827 0
+ 3.543307 0.885827 0
+ F4 8553090 0.000000 4 0
+ 13.976378 7.086614 0
+ 13.976378 6.496063 0
+ 0.590551 6.496063 0
+ 0.590551 7.086614 0
+ F4 8553090 0.000000 4 0
+ 13.976378 0.000000 0
+ 13.976378 0.590551 0
+ 0.590551 0.590551 0
+ 0.590551 0.000000 0
+ F4 6908265 0.000000 4 0
+ -0.295276 3.346457 0
+ 0.000000 3.346457 0
+ 0.000000 3.149606 0
+ -0.295276 3.149606 0
+ F4 6908265 0.000000 4 0
+ -1.328740 3.641732 0
+ 1.033465 3.641732 0
+ 1.033465 3.444882 0
+ -1.328740 3.444882 0
+ F4 6908265 0.000000 4 0
+ -0.098425 3.986220 0
+ -0.196850 3.986220 0
+ -0.196850 3.100394 0
+ -0.098425 3.100394 0
+ F4 6908265 0.000000 4 0
+ -0.295276 3.937008 0
+ 0.000000 3.937008 0
+ 0.000000 3.740157 0
+ -0.295276 3.740157 0
+ L3 4276545 0.000000 -1.316437 3.543307 0 17.716535 3.543307 0
+ L3 4276545 0.000000 -1.304134 3.592520 0 17.716535 3.592520 0
+ L3 4276545 0.000000 -1.310285 3.567913 0 17.716535 3.567913 0
+ L3 4276545 0.000000 17.716535 3.518701 0 -1.310285 3.518701 0
+ L3 4276545 0.000000 -1.304134 3.494094 0 17.716535 3.494094 0
+ F4 12500670 0.000000 4 0
+ 3.543307 7.283465 0
+ 3.838583 7.283465 0
+ 3.838583 6.299213 0
+ 3.543307 6.299213 0
+ F4 12500670 0.000000 4 0
+ 4.330709 7.283465 0
+ 4.625984 7.283465 0
+ 4.625984 6.299213 0
+ 4.330709 6.299213 0
+ F4 12500670 0.000000 4 0
+ 5.118110 7.283465 0
+ 5.413386 7.283465 0
+ 5.413386 6.299213 0
+ 5.118110 6.299213 0
+ F4 12500670 0.000000 4 0
+ 5.905512 7.283465 0
+ 6.200787 7.283465 0
+ 6.200787 6.299213 0
+ 5.905512 6.299213 0
+ F4 12500670 0.000000 4 0
+ 6.692913 7.283465 0
+ 6.988189 7.283465 0
+ 6.988189 6.299213 0
+ 6.692913 6.299213 0
+ F4 12500670 0.000000 4 0
+ 7.480315 7.283465 0
+ 7.775591 7.283465 0
+ 7.775591 6.299213 0
+ 7.480315 6.299213 0
+ F4 12500670 0.000000 4 0
+ 8.267717 7.283465 0
+ 8.562992 7.283465 0
+ 8.562992 6.299213 0
+ 8.267717 6.299213 0
+ F4 12500670 0.000000 4 0
+ 9.055118 7.283465 0
+ 9.350394 7.283465 0
+ 9.350394 6.299213 0
+ 9.055118 6.299213 0
+ F4 12500670 0.000000 4 0
+ 9.842520 7.283465 0
+ 10.137795 7.283465 0
+ 10.137795 6.299213 0
+ 9.842520 6.299213 0
+ F4 12500670 0.000000 4 0
+ 10.629921 7.283465 0
+ 10.925197 7.283465 0
+ 10.925197 6.299213 0
+ 10.629921 6.299213 0
+ F4 12500670 0.000000 4 0
+ 11.417323 7.283465 0
+ 11.712598 7.283465 0
+ 11.712598 6.299213 0
+ 11.417323 6.299213 0
+ F4 12500670 0.000000 4 0
+ 12.204724 7.283465 0
+ 12.500000 7.283465 0
+ 12.500000 6.299213 0
+ 12.204724 6.299213 0
+ F4 12500670 0.000000 4 0
+ 12.992126 7.283465 0
+ 13.287402 7.283465 0
+ 13.287402 6.299213 0
+ 12.992126 6.299213 0
+ F4 12500670 0.000000 4 0
+ -5.610236 6.496063 0
+ -5.019685 6.496063 0
+ -5.019685 0.590551 0
+ -5.610236 0.590551 0
+ F4 12500670 0.000000 4 0
+ -4.429134 6.496063 0
+ -3.838583 6.496063 0
+ -3.838583 0.590551 0
+ -4.429134 0.590551 0
+ F4 12500670 0.000000 4 0
+ 1.771654 6.496063 0
+ 2.362205 6.496063 0
+ 2.362205 0.590551 0
+ 1.771654 0.590551 0
+ F4 12500670 0.000000 4 0
+ 0.000000 6.496063 0
+ 0.590551 6.496063 0
+ 0.590551 7.086614 0
+ 0.000000 7.086614 0
+ F4 12500670 0.000000 4 0
+ 0.000000 0.000000 0
+ 0.000000 0.590551 0
+ 0.590551 0.590551 0
+ 0.590551 0.000000 0
+ F4 12500670 0.000000 4 0
+ 0.590551 6.496063 0
+ 0.000000 6.496063 0
+ 0.000000 0.590551 0
+ 0.590551 0.590551 0
+ G3 0 0.000000 0.196850 20.078740 18.110236 0
+ G3 0 0.000000 0.590551 25.984252 12.795276 0
+ L3 0 0.000000 12.401575 19.291339 0 20.669291 19.291339 0
+ L3 0 0.000000 20.669291 19.291339 0 20.669291 15.157480 0
+ L3 0 0.000000 20.669291 15.157480 0 29.527559 15.157480 0
+ L3 0 0.000000 29.527559 15.157480 0 29.527559 0.984252 0
+ L3 0 0.000000 29.527559 0.984252 0 20.669291 0.984252 0
+ L3 0 0.000000 20.669291 0.984252 0 20.669291 9.251969 0
+ L3 0 0.000000 20.669291 9.251969 0 12.401575 9.251969 0
+ L3 0 0.000000 12.401575 9.251969 0 12.401575 19.291339 0
+ L3 0 0.000000 24.212598 15.157480 0 24.212598 0.984252 0
+ L3 0 0.000000 20.669291 15.157480 0 20.669291 9.251969 0
+ END$SEGS
+STRUCTURE 625 0 0 0 0 Fn3 2 712.613393 222.411174 0 88.059707 "Scratch Favorite Bin Fav-2"
+ D 0.000000 0.000000
+ F4 8553090 0.000000 4 0
+ -8.562992 0.000000 0
+ -8.562992 6.496063 0
+ 0.295276 6.496063 0
+ 0.295276 0.000000 0
+ F4 0 0.000000 4 0
+ -8.858268 0.000000 0
+ -8.858268 0.590551 0
+ 0.000000 0.590551 0
+ 0.000000 0.000000 0
+ F4 0 0.000000 4 0
+ -8.858268 1.771654 0
+ -8.858268 2.362205 0
+ 0.000000 2.362205 0
+ 0.000000 1.771654 0
+ F4 0 0.000000 4 0
+ -8.858268 4.133858 0
+ -8.858268 4.724409 0
+ 0.000000 4.724409 0
+ 0.000000 4.133858 0
+ F4 0 0.000000 4 0
+ -0.590551 0.590551 0
+ -0.590551 1.771654 0
+ 0.000000 1.771654 0
+ 0.000000 0.590551 0
+ F4 0 0.000000 4 0
+ -0.590551 2.362205 0
+ -0.590551 4.133858 0
+ 0.000000 4.133858 0
+ 0.000000 2.362205 0
+ F4 0 0.000000 4 0
+ -8.858268 0.590551 0
+ -8.858268 1.771654 0
+ -8.267717 1.771654 0
+ -8.267717 0.590551 0
+ F4 0 0.000000 4 0
+ -8.858268 2.362205 0
+ -8.858268 4.133858 0
+ -8.267717 4.133858 0
+ -8.267717 2.362205 0
+ F4 0 0.000000 4 0
+ -8.858268 6.496063 0
+ -8.858268 5.905512 0
+ 0.000000 5.905512 0
+ 0.000000 6.496063 0
+ F4 0 0.000000 4 0
+ -0.590551 4.724409 0
+ -0.590551 5.905512 0
+ 0.000000 5.905512 0
+ 0.000000 4.724409 0
+ F4 0 0.000000 4 0
+ -8.858268 4.724409 0
+ -8.858268 5.905512 0
+ -8.267717 5.905512 0
+ -8.267717 4.724409 0
+ F4 6842368 0.000000 4 0
+ -8.858268 2.362205 0
+ -8.858268 4.133858 0
+ -11.220472 4.133858 0
+ -11.220472 2.362205 0
+ F4 6842368 0.000000 4 0
+ 5.019685 4.133858 0
+ 5.314961 4.133858 0
+ 5.314961 2.362205 0
+ 5.019685 2.362205 0
+ F4 6842368 0.000000 4 0
+ 5.610236 4.133858 0
+ 5.905512 4.133858 0
+ 5.905512 2.362205 0
+ 5.610236 2.362205 0
+ F4 6842368 0.000000 4 0
+ 6.200787 4.133858 0
+ 6.496063 4.133858 0
+ 6.496063 2.362205 0
+ 6.200787 2.362205 0
+ F4 6842368 0.000000 4 0
+ 6.791339 4.133858 0
+ 7.086614 4.133858 0
+ 7.086614 2.362205 0
+ 6.791339 2.362205 0
+ F4 6842368 0.000000 4 0
+ 7.381890 4.133858 0
+ 7.677165 4.133858 0
+ 7.677165 2.362205 0
+ 7.381890 2.362205 0
+ F4 6842368 0.000000 4 0
+ 7.972441 4.133858 0
+ 8.267717 4.133858 0
+ 8.267717 2.362205 0
+ 7.972441 2.362205 0
+ F4 6842368 0.000000 4 0
+ 8.562992 4.133858 0
+ 8.858268 4.133858 0
+ 8.858268 2.362205 0
+ 8.562992 2.362205 0
+ F4 6842368 0.000000 4 0
+ 9.153543 4.133858 0
+ 9.448819 4.133858 0
+ 9.448819 2.362205 0
+ 9.153543 2.362205 0
+ F4 6842368 0.000000 4 0
+ 9.744094 4.133858 0
+ 10.039370 4.133858 0
+ 10.039370 2.362205 0
+ 9.744094 2.362205 0
+ F4 6842368 0.000000 4 0
+ 10.334646 4.133858 0
+ 10.629921 4.133858 0
+ 10.629921 2.362205 0
+ 10.334646 2.362205 0
+ F4 6842368 0.000000 4 0
+ 10.925197 4.133858 0
+ 11.220472 4.133858 0
+ 11.220472 2.362205 0
+ 10.925197 2.362205 0
+ F4 6842368 0.000000 4 0
+ 11.515748 4.133858 0
+ 11.811024 4.133858 0
+ 11.811024 2.362205 0
+ 11.515748 2.362205 0
+ F4 6842368 0.000000 4 0
+ 12.106299 4.133858 0
+ 12.401575 4.133858 0
+ 12.401575 2.362205 0
+ 12.106299 2.362205 0
+ F4 6842368 0.000000 4 0
+ 12.696850 4.133858 0
+ 12.992126 4.133858 0
+ 12.992126 2.362205 0
+ 12.696850 2.362205 0
+ F4 6842368 0.000000 4 0
+ 13.287402 4.133858 0
+ 13.582677 4.133858 0
+ 13.582677 2.362205 0
+ 13.287402 2.362205 0
+ F4 6842368 0.000000 4 0
+ 13.877953 4.133858 0
+ 14.173228 4.133858 0
+ 14.173228 2.362205 0
+ 13.877953 2.362205 0
+ F4 6842368 0.000000 4 0
+ 14.468504 4.133858 0
+ 14.763780 4.133858 0
+ 14.763780 2.362205 0
+ 14.468504 2.362205 0
+ F4 6842368 0.000000 4 0
+ 15.059055 4.133858 0
+ 15.354331 4.133858 0
+ 15.354331 2.362205 0
+ 15.059055 2.362205 0
+ F4 6842368 0.000000 4 0
+ 15.649606 4.133858 0
+ 15.944882 4.133858 0
+ 15.944882 2.362205 0
+ 15.649606 2.362205 0
+ F4 6842368 0.000000 4 0
+ 16.240157 4.133858 0
+ 16.535433 4.133858 0
+ 16.535433 2.362205 0
+ 16.240157 2.362205 0
+ F4 6842368 0.000000 4 0
+ 16.830709 4.133858 0
+ 17.125984 4.133858 0
+ 17.125984 2.362205 0
+ 16.830709 2.362205 0
+ F4 6842368 0.000000 4 0
+ 17.421260 4.133858 0
+ 17.716535 4.133858 0
+ 17.716535 2.362205 0
+ 17.421260 2.362205 0
+ F4 6842368 0.000000 4 0
+ 18.011811 4.133858 0
+ 18.307087 4.133858 0
+ 18.307087 2.362205 0
+ 18.011811 2.362205 0
+ F4 6842368 0.000000 4 0
+ 18.602362 4.133858 0
+ 18.897638 4.133858 0
+ 18.897638 2.362205 0
+ 18.602362 2.362205 0
+ F4 6842368 0.000000 4 0
+ 19.783465 4.133858 0
+ 20.078740 4.133858 0
+ 20.078740 2.362205 0
+ 19.783465 2.362205 0
+ F4 6842368 0.000000 4 0
+ 20.964567 4.133858 0
+ 21.259843 4.133858 0
+ 21.259843 2.362205 0
+ 20.964567 2.362205 0
+ F4 6842368 0.000000 4 0
+ 22.145669 4.133858 0
+ 22.440945 4.133858 0
+ 22.440945 2.362205 0
+ 22.145669 2.362205 0
+ F4 6842368 0.000000 4 0
+ 23.326772 4.133858 0
+ 23.622047 4.133858 0
+ 23.622047 2.362205 0
+ 23.326772 2.362205 0
+ F4 6842368 0.000000 4 0
+ 24.507874 4.133858 0
+ 24.803150 4.133858 0
+ 24.803150 2.362205 0
+ 24.507874 2.362205 0
+ F4 6842368 0.000000 4 0
+ 19.192913 4.133858 0
+ 19.488189 4.133858 0
+ 19.488189 2.362205 0
+ 19.192913 2.362205 0
+ F4 6842368 0.000000 4 0
+ 20.374016 4.133858 0
+ 20.669291 4.133858 0
+ 20.669291 2.362205 0
+ 20.374016 2.362205 0
+ F4 6842368 0.000000 4 0
+ 21.555118 4.133858 0
+ 21.850394 4.133858 0
+ 21.850394 2.362205 0
+ 21.555118 2.362205 0
+ F4 6842368 0.000000 4 0
+ 22.736220 4.133858 0
+ 23.031496 4.133858 0
+ 23.031496 2.362205 0
+ 22.736220 2.362205 0
+ F4 6842368 0.000000 4 0
+ 23.917323 4.133858 0
+ 24.212598 4.133858 0
+ 24.212598 2.362205 0
+ 23.917323 2.362205 0
+ F4 6842368 0.000000 4 0
+ 25.098425 4.133858 0
+ 25.393701 4.133858 0
+ 25.393701 2.362205 0
+ 25.098425 2.362205 0
+ F4 6842368 0.000000 4 0
+ 25.688976 4.133858 0
+ 25.984252 4.133858 0
+ 25.984252 2.362205 0
+ 25.688976 2.362205 0
+ F4 6842368 0.000000 4 0
+ 4.429134 4.133858 0
+ 4.724409 4.133858 0
+ 4.724409 2.362205 0
+ 4.429134 2.362205 0
+ F4 6842368 0.000000 4 0
+ 3.838583 4.133858 0
+ 4.133858 4.133858 0
+ 4.133858 2.362205 0
+ 3.838583 2.362205 0
+ F4 6842368 0.000000 4 0
+ 3.248031 4.133858 0
+ 3.543307 4.133858 0
+ 3.543307 2.362205 0
+ 3.248031 2.362205 0
+ F4 6842368 0.000000 4 0
+ 2.657480 4.133858 0
+ 2.952756 4.133858 0
+ 2.952756 2.362205 0
+ 2.657480 2.362205 0
+ F4 6842368 0.000000 4 0
+ 2.066929 4.133858 0
+ 2.362205 4.133858 0
+ 2.362205 2.362205 0
+ 2.066929 2.362205 0
+ F4 6842368 0.000000 4 0
+ 1.476378 4.133858 0
+ 1.771654 4.133858 0
+ 1.771654 2.362205 0
+ 1.476378 2.362205 0
+ F4 6842368 0.000000 4 0
+ 0.885827 4.133858 0
+ 1.181102 4.133858 0
+ 1.181102 2.362205 0
+ 0.885827 2.362205 0
+ F4 6842368 0.000000 4 0
+ 0.295276 4.133858 0
+ 0.590551 4.133858 0
+ 0.590551 2.362205 0
+ 0.295276 2.362205 0
+ F4 6842368 0.000000 4 0
+ 0.000000 1.771654 0
+ 0.000000 4.724409 0
+ -0.295276 4.724409 0
+ -0.295276 1.771654 0
+ F4 6842368 0.000000 4 0
+ -0.590551 1.771654 0
+ -0.590551 4.724409 0
+ -0.885827 4.724409 0
+ -0.885827 1.771654 0
+ F4 6842368 0.000000 4 0
+ -1.181102 1.771654 0
+ -1.181102 4.724409 0
+ -1.476378 4.724409 0
+ -1.476378 1.771654 0
+ F4 6842368 0.000000 4 0
+ -1.771654 1.771654 0
+ -1.771654 4.724409 0
+ -2.066929 4.724409 0
+ -2.066929 1.771654 0
+ F4 6842368 0.000000 4 0
+ -2.362205 1.771654 0
+ -2.362205 4.724409 0
+ -2.657480 4.724409 0
+ -2.657480 1.771654 0
+ F4 6842368 0.000000 4 0
+ -2.952756 1.771654 0
+ -2.952756 4.724409 0
+ -3.248031 4.724409 0
+ -3.248031 1.771654 0
+ F4 6842368 0.000000 4 0
+ -3.543307 1.771654 0
+ -3.543307 4.724409 0
+ -3.838583 4.724409 0
+ -3.838583 1.771654 0
+ F4 6842368 0.000000 4 0
+ -4.133858 1.771654 0
+ -4.133858 4.724409 0
+ -4.429134 4.724409 0
+ -4.429134 1.771654 0
+ F4 6842368 0.000000 4 0
+ -4.724409 1.771654 0
+ -4.724409 4.724409 0
+ -5.019685 4.724409 0
+ -5.019685 1.771654 0
+ F4 6842368 0.000000 4 0
+ -5.314961 1.771654 0
+ -5.314961 4.724409 0
+ -5.610236 4.724409 0
+ -5.610236 1.771654 0
+ F4 6842368 0.000000 4 0
+ -5.905512 1.771654 0
+ -5.905512 4.724409 0
+ -6.200787 4.724409 0
+ -6.200787 1.771654 0
+ F4 6842368 0.000000 4 0
+ -6.496063 1.771654 0
+ -6.496063 4.724409 0
+ -6.791339 4.724409 0
+ -6.791339 1.771654 0
+ F4 8484438 0.000000 4 0
+ -6.791339 2.854331 0
+ -2.066929 2.854331 0
+ -2.066929 2.706693 0
+ -6.791339 2.706693 0
+ F4 8484438 0.000000 4 0
+ -6.791339 3.789370 0
+ -2.066929 3.789370 0
+ -2.066929 3.641732 0
+ -6.791339 3.641732 0
+ L3 0 0.000000 -6.791339 3.690945 0 -2.066929 3.690945 0
+ L3 0 0.000000 -6.791339 2.755906 0 -2.066929 2.755906 0
+ L3 0 0.000000 -2.066929 2.805118 0 -6.791339 2.805118 0
+ F4 8484438 0.000000 4 0
+ -2.066929 2.854331 0
+ 2.657480 2.854331 0
+ 2.657480 2.706693 0
+ -2.066929 2.706693 0
+ F4 8484438 0.000000 4 0
+ -2.066929 3.789370 0
+ 2.657480 3.789370 0
+ 2.657480 3.641732 0
+ -2.066929 3.641732 0
+ L3 0 0.000000 -2.066929 3.690945 0 2.657480 3.690945 0
+ L3 0 0.000000 -2.066929 2.755906 0 2.657480 2.755906 0
+ L3 0 0.000000 2.657480 2.805118 0 -2.066929 2.805118 0
+ F4 8484438 0.000000 4 0
+ 2.657480 2.854331 0
+ 7.381890 2.854331 0
+ 7.381890 2.706693 0
+ 2.657480 2.706693 0
+ F4 8484438 0.000000 4 0
+ 2.657480 3.789370 0
+ 7.381890 3.789370 0
+ 7.381890 3.641732 0
+ 2.657480 3.641732 0
+ L3 0 0.000000 2.657480 3.690945 0 7.381890 3.690945 0
+ L3 0 0.000000 2.657480 2.755906 0 7.381890 2.755906 0
+ L3 0 0.000000 7.381890 2.805118 0 2.657480 2.805118 0
+ F4 8484438 0.000000 4 0
+ 7.381890 2.854331 0
+ 12.106299 2.854331 0
+ 12.106299 2.706693 0
+ 7.381890 2.706693 0
+ F4 8484438 0.000000 4 0
+ 7.381890 3.789370 0
+ 12.106299 3.789370 0
+ 12.106299 3.641732 0
+ 7.381890 3.641732 0
+ L3 0 0.000000 7.381890 3.690945 0 12.106299 3.690945 0
+ L3 0 0.000000 7.381890 2.755906 0 12.106299 2.755906 0
+ L3 0 0.000000 12.106299 2.805118 0 7.381890 2.805118 0
+ F4 8484438 0.000000 4 0
+ 12.106299 2.854331 0
+ 16.830709 2.854331 0
+ 16.830709 2.706693 0
+ 12.106299 2.706693 0
+ F4 8484438 0.000000 4 0
+ 12.106299 3.789370 0
+ 16.830709 3.789370 0
+ 16.830709 3.641732 0
+ 12.106299 3.641732 0
+ L3 0 0.000000 12.106299 3.690945 0 16.830709 3.690945 0
+ L3 0 0.000000 12.106299 2.755906 0 16.830709 2.755906 0
+ L3 0 0.000000 16.830709 2.805118 0 12.106299 2.805118 0
+ L3 0 0.000000 16.830709 3.740157 0 12.106299 3.740157 0
+ L3 0 0.000000 -2.066929 3.740157 0 -6.791339 3.740157 0
+ L3 0 0.000000 2.657480 3.740157 0 -2.066929 3.740157 0
+ L3 0 0.000000 7.381890 3.740157 0 2.657480 3.740157 0
+ L3 0 0.000000 12.106299 3.740157 0 7.381890 3.740157 0
+ F4 8484438 0.000000 4 0
+ 16.830709 2.854331 0
+ 21.555118 2.854331 0
+ 21.555118 2.706693 0
+ 16.830709 2.706693 0
+ F4 8484438 0.000000 4 0
+ 16.830709 3.789370 0
+ 21.555118 3.789370 0
+ 21.555118 3.641732 0
+ 16.830709 3.641732 0
+ L3 0 0.000000 16.830709 3.690945 0 21.555118 3.690945 0
+ L3 0 0.000000 16.830709 2.755906 0 21.555118 2.755906 0
+ L3 0 0.000000 21.555118 2.805118 0 16.830709 2.805118 0
+ L3 0 0.000000 21.555118 3.740157 0 16.830709 3.740157 0
+ F4 8484438 0.000000 4 0
+ 21.555118 2.854331 0
+ 26.279528 2.854331 0
+ 26.279528 2.706693 0
+ 21.555118 2.706693 0
+ F4 8484438 0.000000 4 0
+ 21.555118 3.789370 0
+ 26.279528 3.789370 0
+ 26.279528 3.641732 0
+ 21.555118 3.641732 0
+ L3 0 0.000000 21.555118 3.690945 0 26.279528 3.690945 0
+ L3 0 0.000000 21.555118 2.755906 0 26.279528 2.755906 0
+ L3 0 0.000000 26.279528 2.805118 0 21.555118 2.805118 0
+ L3 0 0.000000 26.279528 3.740157 0 21.555118 3.740157 0
+ END$SEGS
+CURVE 626 1 0 0 0 Fn3 2 627.793702 312.673231 0 72.000000 0 0.000000 0.000000
+ T4 628 618.224781 241.311926 97.637156 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ T4 52 597.365038 247.419139 295.000000 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+STRAIGHT 627 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 629 681.999632 234.000090 270.000000 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ E4 750.000000 234.000000 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+STRAIGHT 628 1 0 0 0 Fn3 2 0.000000 0.000000
+ T4 626 618.224781 241.311926 277.637004 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ T4 629 663.594547 235.228572 97.637004 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+CURVE 629 1 0 0 0 Fn3 2 682.000000 372.492076 0 138.491986 0 0.000000 0.000000
+ T4 627 682.000368 234.000090 90.000000 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ T4 628 663.594547 235.228572 277.637004 0 0.0 0.0 0.0 0.0 0 0 0 93.673170
+ END$SEGS
+DRAW 630 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.104167 456.000000 702.000000 0 268.000000 702.000000 0 131584
+ END$SEGS
+DRAW 631 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.104167 268.000000 702.000000 0 178.000000 738.000000 0 131584
+ END$SEGS
+DRAW 632 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.104167 456.000000 690.000000 0 396.000000 684.000000 0 131584
+ END$SEGS
+DRAW 633 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.104167 456.000000 702.000000 0 456.000000 690.000000 0 131584
+ END$SEGS
+DRAW 634 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.104167 396.000000 684.000000 0 260.000000 684.000000 0 131584
+ END$SEGS
+DRAW 635 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.104167 260.000000 684.000000 0 216.000000 702.000000 0 131584
+ END$SEGS
+DRAW 636 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.102041 178.000000 738.000000 0 174.000000 728.000000 0 131584
+ END$SEGS
+DRAW 637 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.102041 174.000000 728.000000 0 216.000000 702.000000 0 131584
+ END$SEGS
+DRAW 638 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.102041 216.000000 702.000000 0 223.258621 719.896552 0 131584
+ END$SEGS
+DRAW 639 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.100000 268.125000 702.000000 0 260.000000 684.000000 0 131584
+ END$SEGS
+DRAW 640 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.104167 324.000000 702.000000 0 324.000000 684.000000 0 131584
+ END$SEGS
+DRAW 641 9 0 0 0 0.000000 0.000000 0 0.000000
+ B3 16760832 0.104167 396.297030 684.029703 0 396.250000 702.000000 0 131584
+ END$SEGS
+STRUCTURE 642 9 0 0 0 Fn3 2 132.833333 383.833333 0 2.913549 "Custom Matterhorn Bench Custom1"
+ D 0.000000 0.000000
+ L3 26624 0.000000 1.162012 30.102871 0 4.502166 6.336438 0
+ L3 26624 0.000000 1.162012 30.102871 0 238.826348 63.504416 0
+ L3 26624 0.000000 60.786856 36.967855 0 63.709491 16.172226 0
+ L3 26624 0.000000 62.272258 37.176615 0 65.194893 16.380985 0
+ L3 26624 0.000000 179.619024 53.668627 0 182.541659 32.872998 0
+ L3 26624 0.000000 181.104426 53.877387 0 184.027061 33.081758 0
+ L3 26624 0.000000 240.472341 41.014624 0 237.549706 61.810254 0
+ L3 26624 0.000000 2.856174 28.826229 0 5.778809 8.030599 0
+ L3 26624 0.000000 45.932835 34.880259 0 48.855470 14.084629 0
+ L3 26624 0.000000 31.078814 32.792662 0 34.001449 11.997033 0
+ L3 26624 0.000000 16.224793 30.705066 0 19.147428 9.909436 0
+ L3 26624 0.000000 47.418237 35.089018 0 50.340872 14.293389 0
+ L3 26624 0.000000 32.564216 33.001422 0 35.486851 12.205792 0
+ L3 26624 0.000000 17.710195 30.913825 0 20.632830 10.118196 0
+ L3 26624 0.000000 75.640877 39.055452 0 78.563512 18.259822 0
+ L3 26624 0.000000 90.494898 41.143048 0 93.417533 20.347419 0
+ L3 26624 0.000000 105.348919 43.230645 0 108.271554 22.435015 0
+ L3 26624 0.000000 77.126279 39.264211 0 80.048914 18.468582 0
+ L3 26624 0.000000 91.980300 41.351808 0 94.902935 20.556178 0
+ L3 26624 0.000000 106.834321 43.439404 0 109.756956 22.643775 0
+ L3 26624 0.000000 164.765003 51.581031 0 167.687638 30.785401 0
+ L3 26624 0.000000 149.910982 49.493434 0 152.833617 28.697805 0
+ L3 26624 0.000000 135.056961 47.405838 0 137.979596 26.610208 0
+ L3 26624 0.000000 195.958447 55.964984 0 198.881082 35.169354 0
+ L3 26624 0.000000 210.812468 58.052580 0 213.735103 37.256951 0
+ L3 26624 0.000000 225.666489 60.140177 0 228.589124 39.344547 0
+ L3 26624 0.000000 194.473045 55.756224 0 197.395680 34.960594 0
+ L3 26624 0.000000 209.327066 57.843820 0 212.249701 37.048191 0
+ L3 26624 0.000000 224.181087 59.931417 0 227.103722 39.135787 0
+ L3 26624 0.000000 121.688342 45.527001 0 124.610977 24.731372 0
+ L3 26624 0.000000 136.542363 47.614597 0 139.464998 26.818968 0
+ L3 26624 0.000000 151.396384 49.702194 0 154.319019 28.906565 0
+ L3 26624 0.000000 166.250405 51.789791 0 169.173040 30.994161 0
+ L3 26624 0.000000 118.717538 45.109482 0 121.640173 24.313852 0
+ L3 26624 0.000000 121.688342 45.527001 0 125.154280 46.014107 0
+ L3 26624 0.000000 125.154280 46.014107 0 125.641386 42.548169 0
+ L3 26624 0.000000 125.641386 42.548169 0 122.175448 42.061063 0
+ L3 26624 0.000000 122.175448 42.061063 0 121.688342 45.527001 0
+ L3 26624 0.000000 121.688342 45.527001 0 125.641386 42.548169 0
+ L3 26624 0.000000 125.154280 46.014107 0 122.175448 42.061063 0
+ L3 26624 0.000000 62.759364 33.710677 0 62.272258 37.176615 0
+ L3 26624 0.000000 243.470433 41.237982 0 240.565822 61.905362 0
+ L3 26624 0.000000 124.402217 26.216774 0 127.868156 26.703879 0
+ L3 26624 0.000000 127.868156 26.703879 0 128.076915 25.218477 0
+ L3 26624 0.000000 128.076915 25.218477 0 124.610977 24.731372 0
+ L3 26624 0.000000 124.610977 24.731372 0 124.402217 26.216774 0
+ L3 26624 0.000000 124.402217 26.216774 0 128.076915 25.218477 0
+ L3 26624 0.000000 127.868156 26.703879 0 124.610977 24.731372 0
+ L3 26624 0.000000 64.986133 17.866388 0 68.452072 18.353493 0
+ L3 26624 0.000000 68.452072 18.353493 0 68.660831 16.868091 0
+ L3 26624 0.000000 68.660831 16.868091 0 65.194893 16.380985 0
+ L3 26624 0.000000 65.194893 16.380985 0 64.986133 17.866388 0
+ L3 26624 0.000000 64.986133 17.866388 0 68.660831 16.868091 0
+ L3 26624 0.000000 68.452072 18.353493 0 65.194893 16.380985 0
+ L3 26624 0.000000 338.536296 39.694662 0 361.556330 3.210116 0
+ L3 26624 0.000000 360.073266 2.749612 0 337.482176 38.554322 0
+ L3 26624 0.000000 300.358088 59.781189 0 338.536296 39.694662 0
+ L3 26624 0.000000 337.482176 38.554322 0 300.015364 58.266566 0
+ L3 26624 0.000000 238.826348 63.504416 0 300.358088 59.781189 0
+ L3 26624 0.000000 238.735751 62.007154 0 300.267491 58.283927 0
+ L3 26624 0.000000 283.228276 41.237982 0 283.228276 59.314954 0
+ L3 26624 0.000000 281.728276 41.237982 0 281.728276 59.405717 0
+ L3 26624 0.000000 269.220748 41.237982 0 269.220748 60.162536 0
+ L3 26624 0.000000 267.720748 41.237982 0 267.720748 60.253299 0
+ L3 26624 0.000000 255.213220 41.237982 0 255.213220 61.010118 0
+ L3 26624 0.000000 253.713220 41.237982 0 253.713220 61.100882 0
+ L3 26624 0.000000 298.505496 58.390544 0 294.624268 41.237982 0
+ L3 26624 0.000000 332.180446 41.343693 0 335.277903 39.714042 0
+ L3 26624 0.000000 335.277903 39.714042 0 333.648252 36.616586 0
+ L3 26624 0.000000 333.648252 36.616586 0 330.550795 38.246236 0
+ L3 26624 0.000000 330.550795 38.246236 0 332.180446 41.343693 0
+ L3 26624 0.000000 332.180446 41.343693 0 333.648252 36.616586 0
+ L3 26624 0.000000 335.277903 39.714042 0 330.550795 38.246236 0
+ L3 26624 0.000000 356.876518 7.816144 0 358.744169 4.856096 0
+ L3 26624 0.000000 358.744169 4.856096 0 355.784122 2.988445 0
+ L3 26624 0.000000 355.784122 2.988445 0 353.916471 5.948493 0
+ L3 26624 0.000000 353.916471 5.948493 0 356.876518 7.816144 0
+ L3 26624 0.000000 356.876518 7.816144 0 355.784122 2.988445 0
+ L3 26624 0.000000 358.744169 4.856096 0 353.916471 5.948493 0
+ L3 26624 0.000000 322.235691 30.199624 0 325.333147 28.569973 0
+ L3 26624 0.000000 325.333147 28.569973 0 324.634725 27.242491 0
+ L3 26624 0.000000 324.634725 27.242491 0 321.537269 28.872142 0
+ L3 26624 0.000000 321.537269 28.872142 0 322.235691 30.199624 0
+ L3 26624 0.000000 322.235691 30.199624 0 324.634725 27.242491 0
+ L3 26624 0.000000 325.333147 28.569973 0 321.537269 28.872142 0
+ L3 26624 0.000000 342.692073 3.137474 0 344.559723 0.177427 0
+ L3 26624 0.000000 344.559723 0.177427 0 343.291132 -0.622995 0
+ L3 26624 0.000000 343.291132 -0.622995 0 341.423481 2.337052 0
+ L3 26624 0.000000 341.423481 2.337052 0 342.692073 3.137474 0
+ L3 26624 0.000000 342.692073 3.137474 0 343.291132 -0.622995 0
+ L3 26624 0.000000 344.559723 0.177427 0 341.423481 2.337052 0
+ L3 26624 0.000000 301.389673 57.543502 0 297.730639 41.372895 0
+ L3 26624 0.000000 305.106578 37.492226 0 312.553399 51.668874 0
+ L3 26624 0.000000 306.434060 36.793804 0 313.881338 50.971324 0
+ L3 26624 0.000000 316.168924 31.672044 0 323.615744 45.848693 0
+ L3 26624 0.000000 317.496406 30.973622 0 324.943684 45.151142 0
+ L3 26624 0.000000 336.107841 39.277353 0 324.853743 27.102740 0
+ L3 26624 0.000000 331.504127 18.017609 0 345.041587 26.571536 0
+ L3 26624 0.000000 332.304549 16.749017 0 345.842841 25.303470 0
+ L3 26624 0.000000 338.310831 37.240976 0 327.056711 25.066337 0
+ L3 26624 0.000000 338.174309 7.446011 0 351.711769 15.999939 0
+ L3 26624 0.000000 338.974731 6.177419 0 352.513023 14.731872 0
+ L3 26624 0.000000 359.244572 4.062944 0 343.410931 -0.853532 0
+ L3 26624 0.000000 300.358088 59.781186 0 295.822774 39.737982 0
+ L3 26624 0.000000 234.083768 61.323148 0 237.549706 61.810254 0
+ L3 26624 0.000000 237.549706 61.810254 0 238.036812 58.344316 0
+ L3 26624 0.000000 238.036812 58.344316 0 234.570874 57.857210 0
+ L3 26624 0.000000 234.570874 57.857210 0 234.083768 61.323148 0
+ L3 26624 0.000000 234.083768 61.323148 0 238.036812 58.344316 0
+ L3 26624 0.000000 237.549706 61.810254 0 234.570874 57.857210 0
+ L3 26624 0.000000 236.797643 42.012921 0 240.263581 42.500026 0
+ L3 26624 0.000000 240.263581 42.500026 0 240.472341 41.014624 0
+ L3 26624 0.000000 240.472341 41.014624 0 237.006403 40.527518 0
+ L3 26624 0.000000 237.006403 40.527518 0 236.797643 42.012921 0
+ L3 26624 0.000000 236.797643 42.012921 0 240.472341 41.014624 0
+ L3 26624 0.000000 240.263581 42.500026 0 237.006403 40.527518 0
+ L3 26624 0.000000 294.335538 58.618220 0 297.830547 58.431384 0
+ L3 26624 0.000000 297.830547 58.431384 0 297.643711 54.936375 0
+ L3 26624 0.000000 297.643711 54.936375 0 294.148702 55.123210 0
+ L3 26624 0.000000 294.148702 55.123210 0 294.335538 58.618220 0
+ L3 26624 0.000000 294.335538 58.618220 0 297.643711 54.936375 0
+ L3 26624 0.000000 297.830547 58.431384 0 294.148702 55.123210 0
+ L3 26624 0.000000 291.124268 44.737982 0 294.624268 44.737982 0
+ L3 26624 0.000000 294.624268 44.737982 0 294.624268 41.237982 0
+ L3 26624 0.000000 294.624268 41.237982 0 291.124268 41.237982 0
+ L3 26624 0.000000 291.124268 41.237982 0 291.124268 44.737982 0
+ L3 26624 0.000000 291.124268 44.737982 0 294.624268 41.237982 0
+ L3 26624 0.000000 294.624268 44.737982 0 291.124268 41.237982 0
+ L3 26624 0.000000 63.757660 37.385375 0 64.244766 33.919436 0
+ L3 26624 0.000000 64.244766 33.919436 0 62.759364 33.710677 0
+ L3 26624 0.000000 62.272258 37.176615 0 64.244766 33.919436 0
+ L3 26624 0.000000 63.757660 37.385375 0 62.759364 33.710677 0
+ L3 26624 0.000000 62.272258 37.176615 0 63.757660 37.385375 0
+ L3 26624 0.000000 1.370772 28.617469 0 239.035108 62.019013 0
+ L3 26624 0.000000 338.536294 39.694660 0 325.173934 25.239340 0
+ L3 26624 0.000000 361.556292 3.210104 0 342.756524 -2.627379 0
+ L3 26624 0.000000 327.272599 21.913157 0 325.173934 25.239340 0
+ L3 26624 0.000000 326.228053 26.379680 0 329.046220 21.913157 0
+ L3 26624 0.000000 342.756524 -2.627379 0 341.654742 -0.881160 0
+ L3 26624 0.000000 4.502166 6.336438 0 123.334335 23.037210 0
+ L3 26624 0.000000 4.293407 7.821840 0 123.125575 24.522612 0
+ L3 26624 0.000000 241.955692 41.237982 0 238.826348 63.504416 0
+ L3 26624 0.000000 119.994180 46.803643 0 123.125575 24.522612 0
+ L3 26624 0.000000 181.104426 53.877387 0 184.570364 54.364493 0
+ L3 26624 0.000000 184.570364 54.364493 0 185.057470 50.898555 0
+ L3 26624 0.000000 185.057470 50.898555 0 181.591532 50.411449 0
+ L3 26624 0.000000 181.591532 50.411449 0 181.104426 53.877387 0
+ L3 26624 0.000000 181.104426 53.877387 0 185.057470 50.898555 0
+ L3 26624 0.000000 184.570364 54.364493 0 181.591532 50.411449 0
+ L3 26624 0.000000 183.818302 34.567160 0 187.284240 35.054266 0
+ L3 26624 0.000000 187.284240 35.054266 0 187.492999 33.568863 0
+ L3 26624 0.000000 187.492999 33.568863 0 184.027061 33.081758 0
+ L3 26624 0.000000 184.027061 33.081758 0 183.818302 34.567160 0
+ L3 26624 0.000000 183.818302 34.567160 0 187.492999 33.568863 0
+ L3 26624 0.000000 187.284240 35.054266 0 184.027061 33.081758 0
+ L3 26624 0.000000 123.334335 23.037210 0 242.166503 39.737982 0
+ L3 26624 0.000000 123.125575 24.522612 0 241.957743 41.223384 0
+ L3 26624 0.000000 242.166503 39.737982 0 295.822774 39.737982 0
+ L3 26624 0.000000 241.955692 41.237982 0 296.162189 41.237982 0
+ L3 26624 0.000000 329.046220 21.913157 0 344.239588 -2.166875 0
+ L3 26624 0.000000 342.756524 -2.627379 0 327.272599 21.913157 0
+ L3 26624 0.000000 295.822774 42.376671 0 326.228053 26.379680 0
+ L3 26624 0.000000 325.173934 25.239340 0 295.822774 40.681733 0
+ END$SEGS
+STRUCTURE 643 9 0 0 0 Fn3 2 354.043637 399.966928 0 0.550904 "Custom High Siding Bench Custom1"
+ D 0.000000 0.000000
+ L3 26624 0.270842 106.757424 99.722260 0 109.496553 97.543459 0
+ L3 26624 0.270842 109.496553 97.543459 0 108.562781 96.369546 0
+ L3 26624 0.270842 108.562781 96.369546 0 105.823652 98.548348 0
+ L3 26624 0.270842 105.823652 98.548348 0 106.757424 99.722260 0
+ L3 26624 0.270842 106.757424 99.722260 0 108.562781 96.369546 0
+ L3 26624 0.270842 109.496553 97.543459 0 105.823652 98.548348 0
+ L3 26624 0.270842 106.517284 101.829944 0 96.565614 89.318980 0
+ L3 26624 0.270842 106.757424 99.722260 0 98.672183 89.557719 0
+ L3 26624 0.270842 104.230545 101.364702 0 96.175059 91.237567 0
+ L3 26624 0.270842 98.672183 89.557719 0 100.850984 92.296847 0
+ L3 26624 0.270842 100.850984 92.296847 0 103.590113 90.118046 0
+ L3 26624 0.270842 103.590113 90.118046 0 101.411311 87.378917 0
+ L3 26624 0.270842 101.411311 87.378917 0 98.672183 89.557719 0
+ L3 26624 0.270842 100.850984 92.296847 0 101.411311 87.378917 0
+ L3 26624 0.270842 103.590113 90.118046 0 98.672183 89.557719 0
+ L3 26624 0.270842 209.337996 -0.386512 0 96.564499 89.317578 0
+ L3 26624 0.270842 210.271768 0.787401 0 97.498271 90.491491 0
+ L3 26624 0.270842 209.953878 2.797340 0 212.132680 5.536469 0
+ L3 26624 0.270842 209.097856 1.721172 0 212.251881 5.686326 0
+ L3 26624 0.270842 106.502879 101.811834 0 61.813686 126.076086 0
+ L3 26624 0.270842 105.554702 100.619813 0 61.097948 124.757861 0
+ L3 26624 0.270842 97.498271 90.491491 0 55.059146 113.588010 0
+ L3 26624 0.270842 96.550094 89.299469 0 54.342597 112.268291 0
+ L3 26624 0.270842 61.114644 124.604050 0 6.319798 130.068021 0
+ L3 26624 0.270842 61.891079 126.034065 0 6.476593 131.559825 0
+ L3 26624 0.270842 61.891079 126.034065 0 54.399933 112.237090 0
+ L3 26624 0.270842 172.255049 49.539764 0 106.517284 101.829944 0
+ L3 26624 0.270842 171.321277 48.365852 0 105.583512 100.656032 0
+ L3 26624 0.270842 167.408236 51.478425 0 170.147365 49.299624 0
+ L3 26624 0.270842 170.147365 49.299624 0 169.213593 48.125712 0
+ L3 26624 0.270842 169.213593 48.125712 0 166.474464 50.304513 0
+ L3 26624 0.270842 166.474464 50.304513 0 167.408236 51.478425 0
+ L3 26624 0.270842 167.408236 51.478425 0 169.213593 48.125712 0
+ L3 26624 0.270842 170.147365 49.299624 0 166.474464 50.304513 0
+ L3 26624 0.270842 161.501796 44.053013 0 164.240925 41.874212 0
+ L3 26624 0.270842 164.240925 41.874212 0 162.062124 39.135083 0
+ L3 26624 0.270842 162.062124 39.135083 0 159.322995 41.313884 0
+ L3 26624 0.270842 159.322995 41.313884 0 161.501796 44.053013 0
+ L3 26624 0.270842 161.501796 44.053013 0 162.062124 39.135083 0
+ L3 26624 0.270842 164.240925 41.874212 0 159.322995 41.313884 0
+ L3 26624 0.270842 170.373026 49.583320 0 162.062124 39.135083 0
+ L3 26624 0.270842 172.374492 47.280344 0 164.409948 37.267539 0
+ L3 26624 0.270842 172.255049 49.539764 0 162.303379 37.028801 0
+ L3 26624 0.270842 213.299711 4.594047 0 171.321277 48.365852 0
+ L3 26624 0.270842 209.422477 -0.280305 0 214.319771 5.876438 0
+ L3 26624 0.270842 214.319771 5.876438 0 172.255049 49.539764 0
+ L3 26624 0.270842 6.319798 130.068021 0 9.800624 129.702171 0
+ L3 26624 0.270842 9.800624 129.702171 0 9.434775 126.221344 0
+ L3 26624 0.270842 9.434775 126.221344 0 5.953948 126.587194 0
+ L3 26624 0.270842 6.319798 130.068021 0 9.434775 126.221344 0
+ L3 26624 0.270842 9.800624 129.702171 0 5.953948 126.587194 0
+ L3 26624 0.270842 5.953810 126.585884 0 6.319798 130.068021 0
+ L3 26624 0.270842 5.953810 126.585884 0 6.319798 130.068021 0
+ L3 26624 0.270842 5.971522 126.569542 0 55.059146 113.588010 0
+ L3 26624 0.270842 5.793952 125.064935 0 54.675645 112.137863 0
+ L3 26624 0.270842 5.793952 125.064935 0 6.476593 131.559825 0
+ L3 26624 0.270842 209.097856 1.721172 0 206.358727 3.899974 0
+ L3 26624 0.270842 206.358727 3.899974 0 207.292499 5.073886 0
+ L3 26624 0.270842 210.031628 2.895085 0 209.097856 1.721172 0
+ L3 26624 0.270842 210.080718 2.922560 0 206.358727 3.899974 0
+ L3 26624 0.270842 207.292499 5.073886 0 210.080718 2.922560 0
+ L3 26624 0.270842 207.292499 5.073886 0 209.097856 1.721172 0
+ L3 26624 0.270842 211.269019 4.484939 0 208.529890 6.663740 0
+ L3 26624 0.270842 208.529890 6.663740 0 209.463662 7.837652 0
+ L3 26624 0.270842 212.202791 5.658851 0 211.269019 4.484939 0
+ L3 26624 0.270842 212.251881 5.686326 0 208.529890 6.663740 0
+ L3 26624 0.270842 209.463662 7.837652 0 212.251881 5.686326 0
+ L3 26624 0.270842 209.463662 7.837652 0 211.269019 4.484939 0
+ L3 26624 0.270842 167.149077 35.088738 0 164.409948 37.267539 0
+ L3 26624 0.270842 164.409948 37.267539 0 165.343720 38.441451 0
+ L3 26624 0.270842 168.082849 36.262650 0 167.149077 35.088738 0
+ L3 26624 0.270842 168.131939 36.290126 0 164.409948 37.267539 0
+ L3 26624 0.270842 165.343720 38.441451 0 168.131939 36.290126 0
+ L3 26624 0.270842 165.343720 38.441451 0 167.149077 35.088738 0
+ END$SEGS
+STRUCTURE 644 9 0 0 0 Fn3 2 615.166667 379.562500 0 0.000000 "Custom Ophir Bench Custom1"
+ D 0.000000 0.000000
+ L3 26624 0.270842 40.084026 96.397649 0 34.750693 48.397649 0
+ L3 26624 0.270842 30.084026 12.397649 0 34.750693 48.397649 0
+ L3 26624 0.270842 62.084026 12.397649 0 30.084026 12.397649 0
+ L3 26624 0.270842 24.084026 138.397649 0 40.084026 96.397649 0
+ L3 26624 0.270842 68.084026 138.397649 0 24.084026 138.397649 0
+ L3 26624 0.270842 34.750693 48.397649 0 88.084026 48.397649 0
+ L3 26624 0.270842 62.084026 12.397649 0 88.084026 48.397649 0
+ L3 26624 0.270842 88.084026 96.397649 0 40.084026 96.397649 0
+ L3 26624 0.270842 88.084026 48.397649 0 88.084026 96.397649 0
+ L3 26624 0.270842 88.084026 96.397649 0 68.084026 138.397649 0
+ L3 26624 0.270842 86.584026 48.397649 0 86.584026 96.397649 0
+ L3 26624 0.270842 86.584026 53.397649 0 86.584026 49.897649 0
+ L3 26624 0.270842 86.584026 49.897649 0 85.084026 49.897649 0
+ L3 26624 0.270842 85.084026 49.897649 0 85.084026 53.397649 0
+ L3 26624 0.270842 85.084026 53.397649 0 86.584026 53.397649 0
+ L3 26624 0.270842 86.584026 53.397649 0 85.084026 49.897649 0
+ L3 26624 0.270842 86.584026 49.897649 0 85.084026 53.397649 0
+ L3 26624 0.270842 86.584026 94.897649 0 86.584026 91.397649 0
+ L3 26624 0.270842 86.584026 91.397649 0 85.084026 91.397649 0
+ L3 26624 0.270842 85.084026 91.397649 0 85.084026 94.897649 0
+ L3 26624 0.270842 85.084026 94.897649 0 86.584026 94.897649 0
+ L3 26624 0.270842 86.584026 94.897649 0 85.084026 91.397649 0
+ L3 26624 0.270842 86.584026 91.397649 0 85.084026 94.897649 0
+ L3 26624 0.270842 83.896760 101.702570 0 85.401343 98.542471 0
+ L3 26624 0.270842 85.401343 98.542471 0 84.047014 97.897649 0
+ L3 26624 0.270842 84.047014 97.897649 0 82.542431 101.057749 0
+ L3 26624 0.270842 82.542431 101.057749 0 83.896760 101.702570 0
+ L3 26624 0.270842 83.896760 101.702570 0 84.047014 97.897649 0
+ L3 26624 0.270842 85.401343 98.542471 0 82.542431 101.057749 0
+ L3 26624 0.270842 67.137148 136.897755 0 68.641731 133.737655 0
+ L3 26624 0.270842 68.641731 133.737655 0 67.287402 133.092834 0
+ L3 26624 0.270842 67.287402 133.092834 0 65.782819 136.252934 0
+ L3 26624 0.270842 65.782819 136.252934 0 67.137148 136.897755 0
+ L3 26624 0.270842 67.137148 136.897755 0 67.287402 133.092834 0
+ L3 26624 0.270842 68.641731 133.737655 0 65.782819 136.252934 0
+ L3 26624 0.270842 41.426590 94.897649 0 44.926590 94.897649 0
+ L3 26624 0.270842 44.926590 94.897649 0 44.926590 91.397649 0
+ L3 26624 0.270842 44.926590 91.397649 0 41.426590 91.397649 0
+ L3 26624 0.270842 41.426590 91.397649 0 41.426590 94.897649 0
+ L3 26624 0.270842 41.426590 94.897649 0 44.926590 91.397649 0
+ L3 26624 0.270842 44.926590 94.897649 0 41.426590 91.397649 0
+ L3 26624 0.270842 36.815479 53.397649 0 40.315479 53.397649 0
+ L3 26624 0.270842 40.315479 53.397649 0 40.315479 49.897649 0
+ L3 26624 0.270842 40.315479 49.897649 0 36.815479 49.897649 0
+ L3 26624 0.270842 36.815479 49.897649 0 36.815479 53.397649 0
+ L3 26624 0.270842 36.815479 53.397649 0 40.315479 49.897649 0
+ L3 26624 0.270842 40.315479 53.397649 0 36.815479 49.897649 0
+ L3 26624 0.270842 32.179910 17.397649 0 35.679910 17.397649 0
+ L3 26624 0.270842 35.679910 17.397649 0 35.679910 13.897649 0
+ L3 26624 0.270842 35.679910 13.897649 0 32.179910 13.897649 0
+ L3 26624 0.270842 32.179910 13.897649 0 32.179910 17.397649 0
+ L3 26624 0.270842 32.179910 17.397649 0 35.679910 13.897649 0
+ L3 26624 0.270842 35.679910 17.397649 0 32.179910 13.897649 0
+ L3 26624 0.270842 27.593946 136.897649 0 31.093946 136.897649 0
+ L3 26624 0.270842 31.093946 136.897649 0 31.093946 133.397649 0
+ L3 26624 0.270842 31.093946 133.397649 0 27.593946 133.397649 0
+ L3 26624 0.270842 27.593946 133.397649 0 27.593946 136.897649 0
+ L3 26624 0.270842 27.593946 136.897649 0 31.093946 133.397649 0
+ L3 26624 0.270842 31.093946 136.897649 0 27.593946 133.397649 0
+ L3 26624 0.270842 63.366392 16.734943 0 61.317059 13.897649 0
+ L3 26624 0.270842 61.317059 13.897649 0 60.101076 14.775935 0
+ L3 26624 0.270842 60.101076 14.775935 0 62.150409 17.613228 0
+ L3 26624 0.270842 62.150409 17.613228 0 63.366392 16.734943 0
+ L3 26624 0.270842 63.366392 16.734943 0 60.101076 14.775935 0
+ L3 26624 0.270842 61.317059 13.897649 0 62.150409 17.613228 0
+ L3 26624 0.270842 84.516197 46.019364 0 82.466864 43.182070 0
+ L3 26624 0.270842 82.466864 43.182070 0 81.250881 44.060356 0
+ L3 26624 0.270842 81.250881 44.060356 0 83.300214 46.897649 0
+ L3 26624 0.270842 83.300214 46.897649 0 84.516197 46.019364 0
+ L3 26624 0.270842 84.516197 46.019364 0 81.250881 44.060356 0
+ L3 26624 0.270842 82.466864 43.182070 0 83.300214 46.897649 0
+ L3 26624 0.270842 60.233726 12.397649 0 86.233726 48.397649 0
+ L3 26624 0.270842 61.317059 13.897649 0 31.791021 13.897649 0
+ L3 26624 0.270842 36.068799 46.897649 0 85.150392 46.897649 0
+ L3 26624 0.270842 36.457688 49.897649 0 86.584026 49.897649 0
+ L3 26624 0.270842 31.596576 12.397649 0 36.263243 48.397649 0
+ L3 26624 0.270842 67.136926 136.897649 0 26.260612 136.897649 0
+ L3 26624 0.270842 86.422640 96.397649 0 66.422640 138.397649 0
+ L3 26624 0.270842 41.426590 94.897649 0 36.241518 48.232002 0
+ L3 26624 0.270842 25.689184 138.397649 0 41.117755 97.897649 0
+ L3 26624 0.270842 86.584026 94.897649 0 39.917359 94.897649 0
+ L3 26624 0.270842 85.708354 97.897649 0 39.512598 97.897649 0
+ L3 26624 0.270842 -1.242367 150.333532 0 4.376732 164.241290 0
+ L3 26624 0.270842 0.671348 151.065940 0 5.204732 162.286461 0
+ L3 26624 0.270842 64.095025 138.397649 0 3.816151 162.859945 0
+ L3 26624 0.270842 68.084026 138.397649 0 4.376732 164.241290 0
+ L3 26624 0.270842 24.084026 138.397649 0 -1.242367 150.333532 0
+ L3 26624 0.270842 27.491798 138.397649 0 -0.684965 151.706577 0
+ L3 26624 0.270842 9.742623 5.407015 0 13.242623 5.407015 0
+ L3 26624 0.270842 13.242623 5.407015 0 13.242623 1.907015 0
+ L3 26624 0.270842 13.242623 1.907015 0 9.742623 1.907015 0
+ L3 26624 0.270842 9.742623 1.907015 0 9.742623 5.407015 0
+ L3 26624 0.270842 9.742623 5.407015 0 13.242623 1.907015 0
+ L3 26624 0.270842 13.242623 5.407015 0 9.742623 1.907015 0
+ L3 26624 0.270842 33.000000 12.397649 0 33.000000 11.604159 0
+ L3 26624 0.270842 32.297255 1.907015 0 32.597255 0.407015 0
+ L3 26624 0.270842 28.797255 3.407015 0 32.297255 3.407015 0
+ L3 26624 0.270842 32.297255 3.407015 0 32.297255 1.907015 0
+ L3 26624 0.270842 32.297255 1.907015 0 28.797255 1.907015 0
+ L3 26624 0.270842 28.797255 1.907015 0 28.797255 3.407015 0
+ L3 26624 0.270842 28.797255 3.407015 0 32.297255 1.907015 0
+ L3 26624 0.270842 32.297255 3.407015 0 28.797255 1.907015 0
+ L3 26624 0.270842 8.242623 0.407015 0 32.597255 0.407015 0
+ L3 26624 0.270842 9.742623 1.907015 0 32.297255 1.907015 0
+ L3 26624 0.270842 32.597255 0.407015 0 62.084026 12.397649 0
+ L3 26624 0.270842 32.297255 1.907015 0 58.184026 12.397649 0
+ L3 26624 0.270842 8.242623 6.875000 0 9.742623 6.875000 0
+ L3 26624 0.270842 8.242623 6.875000 0 8.242623 0.407015 0
+ L3 26624 0.270842 9.742623 6.875000 0 9.742623 0.407015 0
+ L3 26624 0.270842 10.242566 5.407015 0 33.000000 11.604159 0
+ L3 26624 0.270842 9.742623 6.875000 0 30.084026 12.397649 0
+ END$SEGS
+BZRLIN 645 0 128 16777215 0.200000 Fn3 2 510.000000 336.000000 513.875000 335.375000 512.250000 341.125000 516.000000 339.000000 1 0.000000 0.000000
+ A3 16777215 0.200000 -2.841070 510.524776 338.792184 0 165.907295 24.736975
+ A3 16777215 0.200000 -2.062339 510.649535 338.019481 0 129.349589 34.692034
+ A3 16777215 0.200000 -5.472028 507.959625 340.115446 0 114.541286 13.920916
+ A3 16777215 0.200000 10.087405 522.055650 333.528501 0 295.320186 5.406247
+ A3 16777215 0.200000 1.774601 514.932044 337.814310 0 299.292090 29.995747
+ A3 16777215 0.200000 1.268850 514.597337 338.207218 0 333.223728 37.098719
+ A3 16777215 0.200000 3.549226 514.150073 335.971011 0 10.957272 20.456842
+ END$SEGS
+BZRLIN 646 0 128 16777215 0.200000 Fn3 2 507.259246 335.820342 507.932233 339.009713 512.716290 336.932233 511.823851 340.736070 1 0.000000 0.000000
+ A3 16777215 0.200000 2.284113 509.506358 335.410880 0 280.326961 50.180938
+ A3 16777215 0.200000 5.800321 511.156661 332.305469 0 331.420103 13.867628
+ A3 16777215 0.200000 -13.839147 505.982516 351.250688 0 160.257203 4.231132
+ A3 16777215 0.200000 -2.338246 509.910791 340.440886 0 136.333247 25.047089
+ A3 16777215 0.200000 -1.428237 510.492599 339.736117 0 98.997952 34.696467
+ A3 16777215 0.200000 -3.104964 508.826087 339.927237 0 74.900454 22.771095
+ END$SEGS
+BZRLIN 647 0 128 16777215 0.106667 Fn3 2 500.572070 333.206694 504.085330 331.456479 504.245724 337.429535 507.193116 334.284538 1 0.000000 0.000000
+ A3 16777215 0.106667 -2.841070 501.904261 335.716065 0 183.226243 24.736977
+ A3 16777215 0.106667 -2.062339 501.793337 334.941256 0 146.668532 34.692038
+ A3 16777215 0.106667 -5.472028 499.849330 337.742956 0 131.860229 13.920916
+ A3 16777215 0.106667 10.087403 511.345403 327.258395 0 312.639129 5.406247
+ A3 16777215 0.106667 1.774601 505.820609 333.470525 0 316.611035 29.995746
+ A3 16777215 0.106667 1.268850 505.618042 333.945258 0 350.542671 37.098716
+ A3 16777215 0.106667 3.549226 504.525359 331.943581 0 28.276211 20.456842
+ END$SEGS
+BZRLIN 648 0 128 16777215 0.120000 Fn3 2 495.353480 327.671259 498.767583 325.734728 499.248811 331.690528 502.022891 328.391648 1 0.000000 0.000000
+ A3 16777215 0.120000 -2.841070 496.818630 330.105394 0 186.307512 24.736977
+ A3 16777215 0.120000 -2.062339 496.666219 329.337667 0 149.749799 34.692040
+ A3 16777215 0.120000 -5.472028 494.875620 332.239812 0 134.941495 13.920917
+ A3 16777215 0.120000 10.087405 505.791504 321.152466 0 315.720395 5.406247
+ A3 16777215 0.120000 1.774601 500.608613 327.652587 0 319.692300 29.995748
+ A3 16777215 0.120000 1.268850 500.431857 328.137523 0 353.623939 37.098720
+ A3 16777215 0.120000 3.549226 499.233158 326.197474 0 31.357483 20.456842
+ END$SEGS
+BZRLIN 649 0 128 16777215 0.120000 Fn3 2 505.125000 330.124999 505.797986 333.314370 510.582043 331.236890 509.689604 335.040727 1 0.000000 0.000000
+ A3 16777215 0.120000 2.284112 507.372111 329.715538 0 280.326941 50.180950
+ A3 16777215 0.120000 5.800319 509.022413 326.610128 0 331.420097 13.867633
+ A3 16777215 0.120000 -13.839148 503.848268 345.555345 0 160.257201 4.231132
+ A3 16777215 0.120000 -2.338246 507.776545 334.745543 0 136.333246 25.047089
+ A3 16777215 0.120000 -1.428238 508.358352 334.040774 0 98.997952 34.696466
+ A3 16777215 0.120000 -3.104964 506.691840 334.231894 0 74.900454 22.771095
+ END$SEGS
+BZRLIN 650 0 128 16777215 0.106667 Fn3 2 492.562627 331.236817 495.059769 333.331878 497.543530 328.745588 499.187648 332.289950 1 0.000000 0.000000
+ A3 16777215 0.106667 2.284112 494.078640 329.528347 0 318.415706 50.180952
+ A3 16777215 0.106667 5.800318 493.461851 326.066175 0 9.508865 13.867635
+ A3 16777215 0.106667 -13.839146 501.076464 344.168953 0 198.345970 4.231132
+ A3 16777215 0.106667 -2.338246 497.499869 333.237755 0 174.422013 25.047091
+ A3 16777215 0.106667 -1.428238 497.523025 332.324157 0 137.086721 34.696464
+ A3 16777215 0.106667 -3.104965 496.329285 333.502619 0 112.989227 22.771092
+ END$SEGS
+BZRLIN 651 0 128 16777215 0.200000 Fn3 2 512.687500 335.124999 513.360486 338.314370 518.144543 336.236890 517.252104 340.040727 1 0.000000 0.000000
+ A3 16777215 0.200000 2.284112 514.934611 334.715538 0 280.326941 50.180950
+ A3 16777215 0.200000 5.800319 516.584913 331.610128 0 331.420097 13.867633
+ A3 16777215 0.200000 -13.839148 511.410768 350.555345 0 160.257201 4.231132
+ A3 16777215 0.200000 -2.338246 515.339045 339.745543 0 136.333246 25.047089
+ A3 16777215 0.200000 -1.428238 515.920852 339.040774 0 98.997952 34.696466
+ A3 16777215 0.200000 -3.104964 514.254340 339.231894 0 74.900454 22.771095
+ END$SEGS
+BZRLIN 652 0 128 16777215 0.200000 Fn3 2 508.437500 339.187500 512.312500 338.562500 510.687500 344.312500 514.437500 342.187500 1 0.000000 0.000000
+ A3 16777215 0.200000 -2.841070 508.962276 341.979684 0 165.907295 24.736975
+ A3 16777215 0.200000 -2.062339 509.087035 341.206981 0 129.349589 34.692034
+ A3 16777215 0.200000 -5.472028 506.397125 343.302946 0 114.541286 13.920916
+ A3 16777215 0.200000 10.087405 520.493150 336.716001 0 295.320186 5.406247
+ A3 16777215 0.200000 1.774601 513.369544 341.001810 0 299.292090 29.995747
+ A3 16777215 0.200000 1.268850 513.034837 341.394718 0 333.223728 37.098719
+ A3 16777215 0.200000 3.549226 512.587573 339.158511 0 10.957272 20.456842
+ END$SEGS
+DRAW 653 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 514.750000 344.773576 0 0.000000 360.000000
+ END$SEGS
+DRAW 654 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.226667 1.000000 515.500000 344.374986 0 0.000000 360.000000
+ END$SEGS
+DRAW 655 0 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.160000 1.000000 516.250000 343.124986 0 0.000000 360.000000
+ END$SEGS
+DRAW 656 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.133333 1.000000 517.250000 342.374986 0 0.000000 360.000000
+ END$SEGS
+DRAW 657 0 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 517.750000 341.249986 0 0.000000 360.000000
+ END$SEGS
+DRAW 658 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.120000 1.000000 518.500000 340.624986 0 0.000000 360.000000
+ END$SEGS
+DRAW 659 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 518.959002 341.086276 0 181.693440 360.000000
+ END$SEGS
+DRAW 660 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.226667 1.000000 518.221109 341.506857 0 181.693440 360.000000
+ END$SEGS
+DRAW 661 0 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.160000 1.000000 517.508376 342.778475 0 181.693440 360.000000
+ END$SEGS
+DRAW 662 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.133333 1.000000 516.530977 343.557699 0 181.693440 360.000000
+ END$SEGS
+DRAW 663 0 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 516.064441 344.696984 0 181.693440 360.000000
+ END$SEGS
+DRAW 664 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.120000 1.000000 515.333238 345.343875 0 181.693440 360.000000
+ END$SEGS
+DRAW 665 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 516.510803 345.277757 0 0.000000 360.000000
+ END$SEGS
+DRAW 666 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.226667 1.000000 517.260803 344.879167 0 0.000000 360.000000
+ END$SEGS
+DRAW 667 0 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.160000 1.000000 518.010803 343.629167 0 0.000000 360.000000
+ END$SEGS
+DRAW 668 0 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.133333 1.000000 519.010803 342.879167 0 0.000000 360.000000
+ END$SEGS
+DRAW 669 9 0 0 0 0.000000 0.000000 0 0.000000
+ M3 0 0.000000 493.846493 368.600636 0 564.000000 397.750000 0 -1
+ END$SEGS
+DRAW 670 9 0 0 0 0.000000 0.000000 0 0.000000
+ M3 0 0.000000 473.290275 405.663138 0 505.082809 444.852075 0 -1
+ END$SEGS
+DRAW 671 9 0 0 0 0.000000 0.000000 0 0.000000
+ M3 0 0.000000 360.000001 433.750000 0 360.000000 525.000000 0 -1
+ END$SEGS
+DRAW 672 9 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 0.083333 300.000000 600.000000 0 299.154881 596.526409 0
+ END$SEGS
+BZRLIN 673 9 128 16777215 0.106667 Fn3 2 449.342831 331.518709 452.524107 329.219637 453.655232 335.086807 456.051018 331.503745 1 0.000000 0.000000
+ A3 16777215 0.106667 -2.841070 451.065951 333.777588 0 192.600158 24.736977
+ A3 16777215 0.106667 -2.062339 450.830310 333.031193 0 156.042450 34.692036
+ A3 16777215 0.106667 -5.472028 449.368594 336.112113 0 141.234147 13.920916
+ A3 16777215 0.106667 10.087406 459.003463 323.895113 0 322.013047 5.406246
+ A3 16777215 0.106667 1.774601 454.564256 330.924152 0 325.984950 29.995747
+ A3 16777215 0.106667 1.268850 454.441717 331.425539 0 359.916588 37.098722
+ A3 16777215 0.106667 3.549226 453.037598 329.628565 0 37.650135 20.456843
+ END$SEGS
+BZRLIN 674 9 128 16777215 0.120000 Fn3 2 443.292334 326.907180 446.345431 324.440430 447.790294 330.238318 449.990019 326.531656 1 0.000000 0.000000
+ A3 16777215 0.120000 -2.841071 445.134384 329.070173 0 195.681433 24.736973
+ A3 16777215 0.120000 -2.062339 444.858963 328.337521 0 159.123721 34.692040
+ A3 16777215 0.120000 -5.472026 443.564967 331.492557 0 144.315412 13.920920
+ A3 16777215 0.120000 10.087403 452.529212 318.775326 0 325.094312 5.406248
+ A3 16777215 0.120000 1.774600 448.474251 326.032818 0 329.066217 29.995755
+ A3 16777215 0.120000 1.268850 448.378840 326.540067 0 2.997865 37.098720
+ A3 16777215 0.120000 3.549228 446.880158 324.821165 0 40.731408 20.456837
+ END$SEGS
+BZRLIN 675 9 128 16777215 0.120000 Fn3 2 453.333027 327.736599 454.516501 330.773767 458.898300 327.944817 458.637335 331.843216 1 0.000000 0.000000
+ A3 16777215 0.120000 2.284112 455.483440 326.966603 0 289.700858 50.180943
+ A3 16777215 0.120000 5.800317 456.605905 323.633868 0 340.794008 13.867636
+ A3 16777215 0.120000 -13.839157 454.586588 343.168854 0 169.631120 4.231129
+ A3 16777215 0.120000 -2.338246 456.701743 331.863567 0 145.707167 25.047087
+ A3 16777215 0.120000 -1.428237 457.160991 331.073447 0 108.371869 34.696470
+ A3 16777215 0.120000 -3.104963 455.547862 331.533450 0 84.274368 22.771097
+ END$SEGS
+BZRLIN 676 9 128 16777215 0.106667 Fn3 2 441.119496 330.879690 443.924529 332.540048 445.628122 327.610454 447.827580 330.839697 1 0.000000 0.000000
+ A3 16777215 0.106667 2.284112 442.336995 328.947111 0 327.789619 50.180958
+ A3 16777215 0.106667 5.800316 441.164534 325.631634 0 18.882785 13.867638
+ A3 16777215 0.106667 -13.839148 451.625990 342.252431 0 207.719894 4.231132
+ A3 16777215 0.106667 -2.338246 446.316715 332.049746 0 183.795938 25.047089
+ A3 16777215 0.106667 -1.428238 446.190758 331.144575 0 146.460647 34.696463
+ A3 16777215 0.106667 -3.104965 445.204902 332.501734 0 122.363152 22.771093
+ END$SEGS
+BZRLIN 677 9 128 16777215 0.106667 Fn3 2 469.174097 332.210184 471.961101 329.446337 473.986883 335.067666 475.799096 331.156910 1 0.000000 0.000000
+ A3 16777215 0.106667 -2.841068 471.226139 334.175074 0 201.505915 24.736986
+ A3 16777215 0.106667 -2.062338 470.877790 333.474156 0 164.948188 34.692052
+ A3 16777215 0.106667 -5.472028 469.910650 336.744223 0 150.139887 13.920914
+ A3 16777215 0.106667 10.087402 477.538056 323.182942 0 330.918788 5.406249
+ A3 16777215 0.106667 1.774602 474.240530 330.814468 0 334.890696 29.995739
+ A3 16777215 0.106667 1.268851 474.197088 331.328781 0 8.822322 37.098709
+ A3 16777215 0.106667 3.549226 472.531709 329.770841 0 46.555857 20.456846
+ END$SEGS
+BZRLIN 678 9 128 16777215 0.120000 Fn3 2 461.482633 329.840923 464.117047 326.931263 466.442059 332.435576 468.041438 328.433063 1 0.000000 0.000000
+ A3 16777215 0.120000 -2.841071 463.637327 331.692673 0 204.587173 24.736974
+ A3 16777215 0.120000 -2.062339 463.251805 331.011491 0 168.029457 34.692044
+ A3 16777215 0.120000 -5.472025 462.461839 334.328813 0 153.221144 13.920925
+ A3 16777215 0.120000 10.087414 469.349274 320.377139 0 334.000045 5.406242
+ A3 16777215 0.120000 1.774601 466.466720 328.174893 0 337.971942 29.995750
+ A3 16777215 0.120000 1.268849 466.450986 328.690799 0 11.903587 37.098737
+ A3 16777215 0.120000 3.549225 464.704271 327.224630 0 49.637148 20.456845
+ END$SEGS
+BZRLIN 679 9 128 16777215 0.120000 Fn3 2 471.530681 329.105950 473.170069 331.923289 477.061095 328.450100 477.406785 332.341902 1 0.000000 0.000000
+ A3 16777215 0.120000 2.284111 473.535966 328.012334 0 298.606602 50.180959
+ A3 16777215 0.120000 5.800320 474.128960 324.546004 0 349.699764 13.867629
+ A3 16777215 0.120000 -13.839138 475.158188 344.158076 0 178.536861 4.231135
+ A3 16777215 0.120000 -2.338246 475.497679 332.661655 0 154.612902 25.047093
+ A3 16777215 0.120000 -1.428237 475.829071 331.809964 0 117.277607 34.696467
+ A3 16777215 0.120000 -3.104964 474.306602 332.514150 0 93.180111 22.771094
+ END$SEGS
+BZRLIN 680 9 128 16777215 0.106667 Fn3 2 458.075972 333.351918 461.104228 334.558014 462.024136 329.424117 464.696995 332.273933 1 0.000000 0.000000
+ A3 16777215 0.106667 2.284112 458.979612 331.254157 0 336.695362 50.180952
+ A3 16777215 0.106667 5.800317 457.308019 328.160158 0 27.788522 13.867638
+ A3 16777215 0.106667 -13.839152 470.216413 342.961053 0 216.625633 4.231131
+ A3 16777215 0.106667 -2.338246 463.391671 333.703290 0 192.701677 25.047089
+ A3 16777215 0.106667 -1.428238 463.127104 332.828531 0 155.366383 34.696466
+ A3 16777215 0.106667 -3.104965 462.363234 334.321948 0 131.268887 22.771093
+ END$SEGS
+DRAW 681 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 438.380434 330.901694 0 25.887026 360.000000
+ END$SEGS
+DRAW 682 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.226667 1.000000 438.881153 330.215651 0 25.887026 360.000000
+ END$SEGS
+DRAW 683 9 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.160000 1.000000 439.010148 328.763632 0 25.887026 360.000000
+ END$SEGS
+DRAW 684 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.133333 1.000000 439.582356 327.652291 0 25.887026 360.000000
+ END$SEGS
+DRAW 685 9 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 439.541011 326.421879 0 25.887026 360.000000
+ END$SEGS
+DRAW 686 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.120000 1.000000 439.942880 325.532145 0 25.887026 360.000000
+ END$SEGS
+DRAW 687 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 440.557223 325.746748 0 207.580466 360.000000
+ END$SEGS
+DRAW 688 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.226667 1.000000 440.076997 326.447289 0 207.580466 360.000000
+ END$SEGS
+DRAW 689 9 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.160000 1.000000 439.990968 327.902487 0 207.580466 360.000000
+ END$SEGS
+DRAW 690 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.133333 1.000000 439.451852 329.030251 0 207.580466 360.000000
+ END$SEGS
+DRAW 691 9 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 439.529540 330.258905 0 207.580466 360.000000
+ END$SEGS
+DRAW 692 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.120000 1.000000 439.154139 331.160127 0 207.580466 360.000000
+ END$SEGS
+DRAW 693 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.146667 1.000000 440.184677 330.586521 0 25.887026 360.000000
+ END$SEGS
+DRAW 694 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.226667 1.000000 440.685396 329.900478 0 25.887026 360.000000
+ END$SEGS
+DRAW 695 9 3 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.160000 1.000000 440.814390 328.448459 0 25.887026 360.000000
+ END$SEGS
+DRAW 696 9 4 0 0 0.000000 0.000000 0 0.000000
+ A3 16777215 0.133333 1.000000 441.386599 327.337118 0 25.887026 360.000000
+ END$SEGS
+DRAW 697 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 16777088 377.500000 310.750000 0.000000 0 500.000000 "Elev 8790"
+ END$SEGS
+DRAW 698 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 109.250000 217.500000 0.000000 1 750.000000 " Elev 9830 "
+ END$SEGS
+DRAW 699 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 712.750000 434.500000 0.000000 1 750.000000 " Elev 5650 "
+ END$SEGS
+DRAW 700 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 281.500000 649.000000 0.000000 1 750.000000 " Elev 3145 "
+ END$SEGS
+DRAW 701 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 256.733489 428.850055 354.920392 1 750.000000 " Elev 8456 "
+ END$SEGS
+DRAW 702 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 506.000000 784.500000 0.000000 1 750.000000 " Elev 1530 "
+ END$SEGS
+DRAW 703 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 207.609940 788.183781 37.571168 0 1500.000000 "Gazebo"
+ END$SEGS
+DRAW 704 7 0 0 0 0.000000 0.000000 0 0.000000
+ Z 8388608 333.500000 160.000000 0.000000 1 750.000000 " Elev 10000 "
+ END$SEGS
+DRAW 705 9 0 0 0 0.000000 0.000000 0 0.000000
+ M3 0 0.083333 563.250000 397.625000 0 623.375000 379.875000 0 -1
+ END$SEGS
+BZRLIN 706 0 128 16777215 0.200000 Fn3 2 438.294565 327.683255 441.386760 325.265699 442.738620 331.085974 444.997403 327.415004 1 0.000000 0.000000
+ A3 16777215 0.200000 -2.841069 440.101750 329.875459 0 194.764138 24.736979
+ A3 16777215 0.200000 -2.062339 439.838094 329.138493 0 158.206425 34.692040
+ A3 16777215 0.200000 -5.472028 438.493754 332.272410 0 143.398122 13.920916
+ A3 16777215 0.200000 10.087408 447.660445 319.700313 0 324.177022 5.406245
+ A3 16777215 0.200000 1.774601 443.489816 326.891963 0 328.148925 29.995741
+ A3 16777215 0.200000 1.268850 443.386296 327.397620 0 2.080556 37.098720
+ A3 16777215 0.200000 3.549225 441.915326 325.654947 0 39.814102 20.456846
+ END$SEGS
+BZRLIN 707 0 128 16777215 0.200000 Fn3 2 440.182427 329.098655 442.311111 331.567198 445.498485 327.438788 446.552680 331.201007 1 0.000000 0.000000
+ A3 16777215 0.200000 2.284113 441.952896 327.655529 0 309.183795 50.180934
+ A3 16777215 0.200000 5.800321 441.899536 324.139249 0 0.276932 13.867630
+ A3 16777215 0.200000 -13.839158 446.511267 343.229179 0 189.114037 4.231130
+ A3 16777215 0.200000 -2.338247 444.734706 331.865764 0 165.190089 25.047081
+ A3 16777215 0.200000 -1.428238 444.904132 330.967713 0 127.854800 34.696463
+ A3 16777215 0.200000 -3.104963 443.536793 331.939397 0 103.757297 22.771099
+ END$SEGS
+BZRLIN 708 0 128 16777215 0.200000 Fn3 2 440.226058 325.619856 442.354741 328.088399 445.542115 323.959988 446.596309 327.722208 1 0.000000 0.000000
+ A3 16777215 0.200000 2.284112 441.996526 324.176732 0 309.183779 50.180957
+ A3 16777215 0.200000 5.800319 441.943166 320.660452 0 0.276940 13.867632
+ A3 16777215 0.200000 -13.839143 446.554896 339.750365 0 189.114043 4.231133
+ A3 16777215 0.200000 -2.338245 444.778335 328.386963 0 165.190081 25.047096
+ A3 16777215 0.200000 -1.428237 444.947761 327.488913 0 127.854776 34.696476
+ A3 16777215 0.200000 -3.104964 443.580421 328.460597 0 103.757278 22.771095
+ END$SEGS
+BZRLIN 709 0 128 16777215 0.200000 Fn3 2 438.464443 331.229056 441.556638 328.811500 442.908498 334.631775 445.167281 330.960805 1 0.000000 0.000000
+ A3 16777215 0.200000 -2.841069 440.271628 333.421260 0 194.764138 24.736979
+ A3 16777215 0.200000 -2.062339 440.007972 332.684294 0 158.206425 34.692040
+ A3 16777215 0.200000 -5.472028 438.663632 335.818211 0 143.398122 13.920916
+ A3 16777215 0.200000 10.087408 447.830323 323.246114 0 324.177022 5.406245
+ A3 16777215 0.200000 1.774601 443.659694 330.437764 0 328.148925 29.995741
+ A3 16777215 0.200000 1.268850 443.556174 330.943421 0 2.080556 37.098720
+ A3 16777215 0.200000 3.549225 442.085204 329.200748 0 39.814102 20.456846
+ END$SEGS
+BZRLIN 710 0 128 16777215 0.200000 Fn3 2 445.000009 328.848263 448.092205 326.430708 449.444064 332.250983 451.702847 328.580012 1 0.000000 0.000000
+ A3 16777215 0.200000 -2.841070 446.807194 331.040468 0 194.764119 24.736976
+ A3 16777215 0.200000 -2.062340 446.543538 330.303502 0 158.206417 34.692030
+ A3 16777215 0.200000 -5.472030 445.199197 333.437420 0 143.398118 13.920912
+ A3 16777215 0.200000 10.087399 454.365884 320.865330 0 324.177017 5.406250
+ A3 16777215 0.200000 1.774600 450.195259 328.056972 0 328.148924 29.995756
+ A3 16777215 0.200000 1.268850 450.091740 328.562629 0 2.080574 37.098720
+ A3 16777215 0.200000 3.549227 448.620768 326.819954 0 39.814117 20.456837
+ END$SEGS
+BZRLIN 711 0 128 16777215 0.200000 Fn3 2 446.887872 330.263664 449.016556 332.732207 452.203929 328.603796 453.258124 332.366016 1 0.000000 0.000000
+ A3 16777215 0.200000 2.284113 448.658341 328.820539 0 309.183792 50.180942
+ A3 16777215 0.200000 5.800319 448.604980 325.304259 0 0.276940 13.867632
+ A3 16777215 0.200000 -13.839143 453.216710 344.394173 0 189.114043 4.231133
+ A3 16777215 0.200000 -2.338246 451.440150 333.030771 0 165.190082 25.047094
+ A3 16777215 0.200000 -1.428237 451.609576 332.132722 0 127.854785 34.696468
+ A3 16777215 0.200000 -3.104965 450.242235 333.104406 0 103.757293 22.771091
+ END$SEGS
+BZRLIN 712 0 128 16777215 0.200000 Fn3 2 446.931502 326.784864 449.060185 329.253407 452.247559 325.124997 453.301754 328.887217 1 0.000000 0.000000
+ A3 16777215 0.200000 2.284112 448.701971 325.341739 0 309.183780 50.180947
+ A3 16777215 0.200000 5.800321 448.648611 321.825458 0 0.276931 13.867629
+ A3 16777215 0.200000 -13.839140 453.260336 340.915371 0 189.114029 4.231134
+ A3 16777215 0.200000 -2.338247 451.483779 329.551972 0 165.190073 25.047089
+ A3 16777215 0.200000 -1.428238 451.653205 328.653923 0 127.854787 34.696459
+ A3 16777215 0.200000 -3.104965 450.285865 329.625607 0 103.757293 22.771092
+ END$SEGS
+BZRLIN 713 0 128 16777215 0.200000 Fn3 2 445.169887 332.394064 448.262083 329.976509 449.613942 335.796784 451.872725 332.125813 1 0.000000 0.000000
+ A3 16777215 0.200000 -2.841070 446.977072 334.586269 0 194.764119 24.736976
+ A3 16777215 0.200000 -2.062340 446.713416 333.849303 0 158.206417 34.692030
+ A3 16777215 0.200000 -5.472030 445.369075 336.983221 0 143.398118 13.920912
+ A3 16777215 0.200000 10.087399 454.535762 324.411131 0 324.177017 5.406250
+ A3 16777215 0.200000 1.774600 450.365137 331.602773 0 328.148924 29.995756
+ A3 16777215 0.200000 1.268850 450.261618 332.108430 0 2.080574 37.098720
+ A3 16777215 0.200000 3.549227 448.790646 330.365755 0 39.814117 20.456837
+ END$SEGS
+BZRLIN 714 0 128 16777215 0.120000 Fn3 2 456.040858 328.936518 459.454961 326.999987 459.936189 332.955787 462.710269 329.656907 1 0.000000 0.000000
+ A3 16777215 0.120000 -2.841070 457.506008 331.370653 0 186.307512 24.736977
+ A3 16777215 0.120000 -2.062339 457.353597 330.602926 0 149.749799 34.692040
+ A3 16777215 0.120000 -5.472028 455.562998 333.505071 0 134.941495 13.920917
+ A3 16777215 0.120000 10.087405 466.478882 322.417725 0 315.720395 5.406247
+ A3 16777215 0.120000 1.774601 461.295991 328.917846 0 319.692300 29.995748
+ A3 16777215 0.120000 1.268850 461.119235 329.402782 0 353.623939 37.098720
+ A3 16777215 0.120000 3.549226 459.920536 327.462733 0 31.357483 20.456842
+ END$SEGS
+BZRLIN 715 0 128 16777215 0.106667 Fn3 2 454.562505 332.877076 457.059647 334.972137 459.543408 330.385847 461.187526 333.930209 1 0.000000 0.000000
+ A3 16777215 0.106667 2.284112 456.078518 331.168606 0 318.415706 50.180952
+ A3 16777215 0.106667 5.800318 455.461729 327.706434 0 9.508865 13.867635
+ A3 16777215 0.106667 -13.839146 463.076342 345.809212 0 198.345970 4.231132
+ A3 16777215 0.106667 -2.338246 459.499747 334.878014 0 174.422013 25.047091
+ A3 16777215 0.106667 -1.428238 459.522903 333.964416 0 137.086721 34.696464
+ A3 16777215 0.106667 -3.104965 458.329163 335.142878 0 112.989227 22.771092
+ END$SEGS
+BZRLIN 716 0 128 16777215 0.120000 Fn3 2 472.165858 327.999018 475.579961 326.062487 476.061189 332.018287 478.835269 328.719407 1 0.000000 0.000000
+ A3 16777215 0.120000 -2.841070 473.631008 330.433153 0 186.307512 24.736977
+ A3 16777215 0.120000 -2.062339 473.478597 329.665426 0 149.749799 34.692040
+ A3 16777215 0.120000 -5.472028 471.687998 332.567571 0 134.941495 13.920917
+ A3 16777215 0.120000 10.087405 482.603882 321.480225 0 315.720395 5.406247
+ A3 16777215 0.120000 1.774601 477.420991 327.980346 0 319.692300 29.995748
+ A3 16777215 0.120000 1.268850 477.244235 328.465282 0 353.623939 37.098720
+ A3 16777215 0.120000 3.549226 476.045536 326.525233 0 31.357483 20.456842
+ END$SEGS
+BZRLIN 717 0 128 16777215 0.106667 Fn3 2 472.937505 333.627076 475.434647 335.722137 477.918408 331.135847 479.562526 334.680209 1 0.000000 0.000000
+ A3 16777215 0.106667 2.284112 474.453518 331.918606 0 318.415706 50.180952
+ A3 16777215 0.106667 5.800318 473.836729 328.456434 0 9.508865 13.867635
+ A3 16777215 0.106667 -13.839146 481.451342 346.559212 0 198.345970 4.231132
+ A3 16777215 0.106667 -2.338246 477.874747 335.628014 0 174.422013 25.047091
+ A3 16777215 0.106667 -1.428238 477.897903 334.714416 0 137.086721 34.696464
+ A3 16777215 0.106667 -3.104965 476.704163 335.892878 0 112.989227 22.771092
+ END$SEGS
+BZRLIN 718 0 128 16777215 0.106667 Fn3 2 462.274087 333.816289 464.665784 330.704050 467.426243 336.003389 468.698312 331.885141 1 0.000000 0.000000
+ A3 16777215 0.106667 -2.841069 464.570820 335.488620 0 209.203346 24.736980
+ A3 16777215 0.106667 -2.062339 464.131727 334.840677 0 172.645629 34.692043
+ A3 16777215 0.106667 -5.472028 463.611302 338.210817 0 157.837327 13.920916
+ A3 16777215 0.106667 10.087404 469.353556 323.750103 0 338.616227 5.406247
+ A3 16777215 0.106667 1.774602 467.107923 331.754542 0 342.588133 29.995742
+ A3 16777215 0.106667 1.268850 467.133760 332.270040 0 16.519764 37.098713
+ A3 16777215 0.106667 3.549226 465.274714 330.949202 0 54.253303 20.456844
+ END$SEGS
+BZRLIN 719 0 128 16777215 0.120000 Fn3 2 464.267212 329.989203 466.269188 332.561573 469.659946 328.598509 470.523797 332.408940 1 0.000000 0.000000
+ A3 16777215 0.120000 2.284112 466.107947 328.636849 0 306.304044 50.180949
+ A3 16777215 0.120000 5.800318 466.231311 325.122330 0 357.397199 13.867632
+ A3 16777215 0.120000 -13.839140 469.878143 344.419825 0 186.234301 4.231134
+ A3 16777215 0.120000 -2.338246 468.674721 332.981521 0 162.310343 25.047091
+ A3 16777215 0.120000 -1.428238 468.889051 332.093118 0 124.975053 34.696462
+ A3 16777215 0.120000 -3.104965 467.474620 332.994881 0 100.877560 22.771091
+ END$SEGS
+BZRLIN 720 0 128 16777215 0.120000 Fn3 2 486.555633 327.765692 488.557609 330.338062 491.948368 326.374998 492.812219 330.185429 1 0.000000 0.000000
+ A3 16777215 0.120000 2.284112 488.396368 326.413338 0 306.304046 50.180950
+ A3 16777215 0.120000 5.800320 488.519732 322.898816 0 357.397199 13.867630
+ A3 16777215 0.120000 -13.839146 492.166565 342.196319 0 186.234300 4.231133
+ A3 16777215 0.120000 -2.338247 490.963143 330.758011 0 162.310347 25.047086
+ A3 16777215 0.120000 -1.428238 491.177473 329.869607 0 124.975058 34.696462
+ A3 16777215 0.120000 -3.104964 489.763043 330.771369 0 100.877560 22.771095
+ END$SEGS
+DRAW 721 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 60.458333 1079.479167 0 60.000000 1044.000000 0
+ END$SEGS
+DRAW 722 0 0 0 0 0.000000 0.000000 0 0.000000
+ Q3 0 0.000000 60.000000 1044.000000 0 240.000000 1044.000000 0
+ END$SEGS
+CURVE 723 0 0 0 0 Fn3 2 180.251238 955.094070 0 82.000000 0 0.000000 0.000000
+ T4 724 98.259898 956.285775 180.832708 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 731 262.238647 956.530981 178.995937 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+CURVE 724 0 0 0 0 Fn3 2 180.251235 955.093847 0 82.000000 0 0.000000 0.000000
+ T4 727 107.293112 917.662413 152.839741 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 723 98.259895 956.285552 0.832708 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+STRAIGHT 725 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 730 182.227100 852.349489 123.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 726 171.436692 859.361160 303.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+STRAIGHT 726 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 725 171.436692 859.361160 123.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 353 147.672680 874.803155 303.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+CORNU 727 0 0 0 0 Fn3 2 107.293112 917.662413 332.839741 82.000000 180.251235 955.093847 128.846025 891.171170 134.437235 0.000000 0.000000 0.000000
+ T4 724 107.293112 917.662413 332.839741 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 353 128.846025 891.171170 134.437235 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ W3 0 0.000000 107.293112 917.662413 109.904962 912.571621 113.160144 907.820213 116.898419 903.488559
+ SUBSEGS
+ C 0 0.000000 -72.194974 171.438485 950.790731 229.065157 13.620441
+ SUBSEND
+ W3 0 0.000000 116.898419 903.488559 120.636694 899.156905 124.760624 895.177094 128.846025 891.171170
+ SUBSEGS
+ C 0 0.000000 -129.149411 214.322150 988.271735 225.161895 3.806626
+ C 0 0.000000 -511.313478 485.320950 1257.732353 224.200783 0.961988
+ SUBSEND
+ END$SEGS
+STRAIGHT 728 0 0 0 0 Fn3 2 0.000000 0.000000
+ T4 353 126.666436 888.453201 123.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 729 108.261694 900.412711 303.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ END$SEGS
+CORNU 729 0 0 0 0 Fn3 2 108.261694 900.412711 123.016049 0.000000 0.000000 0.000000 60.808331 969.066074 347.904705 306.706971 360.706544 1033.332922
+ T4 728 108.261694 900.412711 123.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 355 60.808331 969.066074 347.904705 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ W3 0 0.000000 108.261694 900.412711 102.220730 904.338165 96.198052 908.331094 90.725340 913.016374
+ SUBSEGS
+ C 0 0.000000 288.581929 264.361942 1143.131153 212.746410 2.146464
+ C 0 0.000000 114.482357 164.765835 1000.333127 214.890727 5.405648
+ SUBSEND
+ W3 0 0.000000 90.725340 913.016374 85.252628 917.701655 80.342803 923.058441 76.287439 929.012974
+ SUBSEGS
+ C 0 0.000000 83.575399 144.951090 976.612092 220.453018 11.112757
+ C 0 0.000000 76.384615 139.409250 972.027464 231.675549 4.051895
+ SUBSEND
+ W3 0 0.000000 76.287439 929.012974 72.232076 934.967506 69.035594 941.485253 66.561440 948.251419
+ SUBSEGS
+ C 0 0.000000 84.330477 146.158567 976.232196 235.948995 11.011613
+ C 0 0.000000 98.176548 158.778392 981.936258 246.779611 3.154244
+ SUBSEND
+ W3 0 0.000000 66.561440 948.251419 64.087285 955.017584 62.317915 962.021673 60.808331 969.066074
+ SUBSEGS
+ C 0 0.000000 124.921354 184.004483 990.824604 250.074384 4.954973
+ C 0 0.000000 204.054990 260.450673 1011.272403 255.027708 3.035177
+ SUBSEND
+ END$SEGS
+CORNU 730 0 0 0 0 Fn3 2 218.030807 836.875672 111.594751 0.000000 0.000000 0.000000 182.227100 852.349489 303.016049 0.000000 0.000000 0.000000
+ T4 350 218.030807 836.875672 111.594751 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 725 182.227100 852.349489 303.016049 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ W3 0 0.000000 218.030807 836.875672 211.965643 839.276397 205.754257 841.281562 199.622348 843.506283
+ SUBSEGS
+ C 0 0.000000 -247.366783 127.953106 606.492658 19.089132 2.265922
+ C 0 0.000000 915.713900 508.328030 1705.615759 199.089303 0.612217
+ SUBSEND
+ W3 0 0.000000 199.622348 843.506283 196.556394 844.618644 193.534069 845.861818 190.630354 847.347032
+ SUBSEGS
+ C 0 0.000000 78.453437 225.882880 917.434128 199.555975 7.145584
+ SUBSEND
+ W3 0 0.000000 190.630354 847.347032 187.726638 848.832245 184.961932 850.572379 182.227100 852.349489
+ SUBSEGS
+ C 0 0.000000 80.134106 227.620270 918.433044 207.490411 5.246186
+ S 0 0.000000 184.285530 851.026995 182.227100 852.349489
+ SUBSEND
+ END$SEGS
+CORNU 731 0 0 0 0 Fn3 2 262.238647 956.530981 358.995937 82.000000 180.251238 955.094070 260.167782 909.964455 191.961484 0.000000 0.000000 0.000000
+ T4 723 262.238647 956.530981 358.995937 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ T4 90 260.167782 909.964455 191.961484 0 0.0 0.0 0.0 0.0 0 0 0 6.820000
+ W3 0 0.000000 262.238647 956.530981 262.375176 948.740920 262.294241 940.950232 262.434601 933.160239
+ SUBSEGS
+ C 0 0.000000 844.738359 -582.402408 943.709791 89.130348 0.792615
+ C 0 0.000000 -815.733918 1078.068368 945.942377 269.102167 0.820796
+ SUBSEND
+ W3 0 0.000000 262.434601 933.160239 262.504781 929.265243 262.462558 925.362812 262.088661 921.485168
+ SUBSEGS
+ C 0 0.000000 116.930914 145.535426 930.435972 88.664997 4.295130
+ C 0 0.000000 74.604748 187.824144 928.602036 93.230724 2.243292
+ SUBSEND
+ W3 0 0.000000 262.088661 921.485168 261.714764 917.607523 260.975167 913.775499 260.167782 909.964455
+ SUBSEGS
+ C 0 0.000000 88.678098 173.883410 930.630594 95.919474 5.662276
+ C 0 0.000000 211.424528 53.368649 953.946830 101.214882 0.791974
+ SUBSEND
+ END$SEGS
+DRAW 732 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 840.000000 480.000000 0 0.000000 480.000000 0
+ END$SEGS
+DRAW 733 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 720.000000 0 840.000000 720.000000 0
+ END$SEGS
+DRAW 734 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 600.000000 0 843.000000 600.000000 0
+ END$SEGS
+DRAW 735 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 840.000000 0 359.999364 840.000000 0
+ END$SEGS
+DRAW 736 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 360.000000 0 840.000000 360.000000 0
+ END$SEGS
+DRAW 737 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 240.000000 0 840.000000 240.000000 0
+ END$SEGS
+DRAW 738 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 120.000000 0 840.000000 120.000000 0
+ END$SEGS
+DRAW 739 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 120.000000 0.000000 0 120.000001 600.000159 0
+ END$SEGS
+DRAW 740 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 240.000000 600.000318 0 240.000000 0.000000 0
+ END$SEGS
+DRAW 741 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 360.000000 0.000000 0 360.000001 600.000478 0
+ END$SEGS
+DRAW 742 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 480.000000 780.000000 0 480.000000 0.000000 0
+ END$SEGS
+DRAW 743 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 600.000000 0.000000 0 600.000007 779.963876 0
+ END$SEGS
+DRAW 744 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 960.000000 0 360.000000 960.000000 0
+ END$SEGS
+DRAW 745 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 360.000000 960.000000 0 360.000001 600.000000 0
+ END$SEGS
+DRAW 746 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 240.000000 600.000000 0 240.000000 1044.000000 0
+ END$SEGS
+DRAW 747 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 120.000001 600.000000 0 120.000000 1044.000000 0
+ END$SEGS
+DRAW 748 10 0 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 719.999802 779.987959 0 720.000000 0.000000 0
+ END$SEGS
+DRAW 749 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 60.000000 0 840.000000 60.000000 0
+ END$SEGS
+DRAW 750 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 180.000000 0 840.000000 180.000000 0
+ END$SEGS
+DRAW 751 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 300.000000 0 840.000000 300.000000 0
+ END$SEGS
+DRAW 752 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 420.000000 0 840.000000 420.000000 0
+ END$SEGS
+DRAW 753 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 540.000000 0 840.000000 540.000000 0
+ END$SEGS
+DRAW 754 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 660.000000 0 840.000000 660.000000 0
+ END$SEGS
+DRAW 755 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 1020.000000 0 360.000000 1020.000000 0
+ END$SEGS
+DRAW 756 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 900.000000 0 360.000000 900.000000 0
+ END$SEGS
+DRAW 757 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 0.000000 780.000000 0 360.000000 780.000000 0
+ END$SEGS
+DRAW 758 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 180.000000 600.000000 0 180.000000 1044.000000 0
+ END$SEGS
+DRAW 759 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 300.000000 600.000000 0 299.999999 1080.000000 0
+ END$SEGS
+DRAW 760 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 780.000000 780.000000 0 780.000000 0.000000 0
+ END$SEGS
+DRAW 761 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 660.000000 780.000000 0 660.000000 0.000000 0
+ END$SEGS
+DRAW 762 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 540.000000 780.000000 0 540.000000 0.000000 0
+ END$SEGS
+DRAW 763 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 420.000000 780.000000 0 420.000000 0.000000 0
+ END$SEGS
+DRAW 764 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 180.000000 600.000000 0 180.000000 0.000000 0
+ END$SEGS
+DRAW 765 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 300.000000 0.000000 0 300.000000 600.000000 0
+ END$SEGS
+DRAW 766 10 1 0 0 0.000000 0.000000 0 0.000000
+ L3 16711680 -2.000000 60.000000 0.000000 0 60.000000 1044.000000 0
+ END$SEGS
+BZRLIN 767 0 128 16777215 0.120000 Fn3 2 487.571857 333.353449 490.063944 330.320999 492.649819 335.707684 494.055737 331.633188 1 0.000000 0.000000
+ A3 16777215 0.120000 -2.841070 489.812735 335.099915 0 207.331363 24.736975
+ A3 16777215 0.120000 -2.062339 489.395043 334.437973 0 170.773653 34.692038
+ A3 16777215 0.120000 -5.472027 488.764806 337.789313 0 155.965347 13.920918
+ A3 16777215 0.120000 10.087407 494.976375 323.523893 0 336.744247 5.406245
+ A3 16777215 0.120000 1.774601 492.470464 331.450707 0 340.716150 29.995744
+ A3 16777215 0.120000 1.268850 492.479448 331.966773 0 14.647784 37.098719
+ A3 16777215 0.120000 3.549226 490.664540 330.585912 0 52.381328 20.456843
+ END$SEGS
+BZRLIN 768 0 128 16777215 0.200000 Fn3 2 498.607247 329.177291 499.945228 332.149631 504.175869 329.099253 504.115574 333.005912 1 0.000000 0.000000
+ A3 16777215 0.200000 2.284113 500.715252 328.297809 0 292.646414 50.180937
+ A3 16777215 0.200000 5.800323 501.664977 324.911792 0 343.739553 13.867626
+ A3 16777215 0.200000 -13.839154 500.652165 344.524738 0 172.576652 4.231131
+ A3 16777215 0.200000 -2.338247 502.183585 333.125700 0 148.652701 25.047085
+ A3 16777215 0.200000 -1.428237 502.601625 332.313024 0 111.317402 34.696472
+ A3 16777215 0.200000 -3.104963 501.014265 332.855312 0 87.219897 22.771101
+ END$SEGS
+CURVE 769 0 0 0 0 Fn3 2 412.682632 348.175416 0 72.000000 0 0.000000 0.000000
+ T4 310 458.733388 292.828077 50.238461 0 0.0 0.0 0.0 0.0 0 0 0 92.661755
+ T4 770 458.526074 292.656240 230.452740 0 0.0 0.0 0.0 0.0 0 0 0 92.661755
+ END$SEGS
+CURVE 770 0 0 0 0 Fn3 2 412.680882 348.175554 0 72.001221 0 0.000000 0.000000
+ T4 769 458.526074 292.656240 50.451736 0 0.0 0.0 0.0 0.0 0 0 0 92.691432
+ T4 50 456.162114 290.786023 232.850577 0 0.0 0.0 0.0 0.0 0 0 0 92.691432
+ END$SEGS
+STRUCTURE 771 9 0 0 0 Fn3 2 108.000000 483.000000 0 0.000000 "Ophir High Line L"
+ D 0.000000 0.000000
+ L3 26624 0.000000 97.535108 59.691071 0 168.744251 49.048793 0
+ L3 26624 0.000000 168.744251 49.048793 0 192.480631 45.501367 0
+ L3 26624 0.000000 170.517964 60.916983 0 194.254344 57.369558 0
+ L3 26624 0.000000 169.631108 54.982888 0 193.367488 51.435462 0
+ L3 26624 0.000000 97.535108 59.691071 0 99.752250 74.526309 0
+ L3 26624 0.000000 168.744251 49.048794 0 170.961392 63.884032 0
+ L3 26624 0.000000 99.752250 74.526309 0 170.961392 63.884031 0
+ L3 26624 0.000000 192.480630 45.501360 0 194.697771 60.336598 0
+ L3 26624 0.000000 4.050044 50.818617 0 69.047354 62.279406 0
+ L3 26624 0.000000 1.966264 62.636309 0 66.963574 74.097098 0
+ L3 26624 0.000000 1.966264 62.636309 0 4.050044 50.818617 0
+ L3 26624 0.000000 133.881442 54.259075 0 136.098583 69.094313 0
+ L3 26624 0.000000 132.397918 54.480789 0 134.615059 69.316027 0
+ L3 26624 0.000000 193.964154 45.279646 0 196.181295 60.114884 0
+ L3 26624 0.000000 167.260727 49.270508 0 169.477869 64.105746 0
+ L3 26624 0.000000 99.018632 59.469357 0 101.235773 74.304595 0
+ L3 26624 0.000000 65.486362 73.836626 0 67.570142 62.018933 0
+ L3 26624 0.000000 3.443476 62.896782 0 5.527256 51.079089 0
+ L3 26624 0.000000 3.789571 52.295828 0 68.786881 63.756617 0
+ L3 26624 0.000000 2.226737 61.159098 0 67.224047 72.619887 0
+ L3 26624 0.000000 99.530536 73.042785 0 170.739678 62.400507 0
+ L3 26624 0.000000 97.756823 61.174595 0 168.965965 50.532317 0
+ L3 26624 0.000000 250.559773 38.338040 0 252.333486 50.206231 0
+ L3 26624 0.000000 240.069690 52.039067 0 238.295977 40.170877 0
+ L3 26624 0.000000 241.553213 51.817353 0 239.779501 39.949163 0
+ L3 26624 0.000000 251.821583 36.632802 0 254.038724 51.468040 0
+ L3 26624 0.000000 192.702345 46.984891 0 252.043297 38.116326 0
+ L3 26624 0.000000 192.480631 45.501367 0 251.821583 36.632802 0
+ L3 26624 0.000000 194.476058 58.853081 0 253.817010 49.984516 0
+ L3 26624 0.000000 194.697772 60.336605 0 254.038724 51.468040 0
+ L3 26624 0.000000 66.963574 74.097098 0 69.074808 62.123707 0
+ L3 6842368 0.000000 167.635680 41.631174 0 191.372060 38.083748 0
+ L3 6842368 0.000000 191.150346 36.600225 0 167.413966 40.147650 0
+ L3 6842368 0.000000 167.413966 40.147650 0 167.635680 41.631174 0
+ L3 6842368 0.000000 96.000000 52.337199 0 167.635680 41.631174 0
+ L3 6842368 0.000000 96.000000 50.820540 0 167.413966 40.147650 0
+ L3 6842368 0.000000 96.000000 0.000000 0 0.000000 0.000000 0
+ L3 6842368 0.000000 96.000000 1.500000 0 0.000000 1.500000 0
+ L3 6842368 0.000000 72.000000 49.000000 0 96.000000 49.000000 0
+ L3 6842368 0.000000 0.000000 39.442504 0 72.000000 52.138058 0
+ L3 6842368 0.000000 0.000000 37.919364 0 72.000000 50.614918 0
+ L3 6842368 0.000000 72.000000 47.500000 0 96.000000 47.500000 0
+ L3 6842368 0.000000 96.000000 30.000000 0 0.000000 30.000000 0
+ L3 6842368 0.000000 96.000000 28.500000 0 0.000000 28.500000 0
+ L3 6842368 0.000000 94.500000 28.500000 0 94.500000 1.500000 0
+ L3 6842368 0.000000 1.500000 1.500000 0 1.500000 28.500000 0
+ L3 6842368 0.000000 0.000000 0.000000 0 0.000000 30.000000 0
+ L3 6842368 0.000000 80.000000 1.500000 0 80.000000 28.500000 0
+ L3 6842368 0.000000 78.500000 1.500000 0 78.500000 28.500000 0
+ L3 6842368 0.000000 64.000000 1.500000 0 64.000000 28.500000 0
+ L3 6842368 0.000000 62.500000 1.500000 0 62.500000 28.500000 0
+ L3 6842368 0.000000 48.000000 1.500000 0 48.000000 28.500000 0
+ L3 6842368 0.000000 46.500000 1.500000 0 46.500000 28.500000 0
+ L3 6842368 0.000000 32.000000 1.500000 0 32.000000 28.500000 0
+ L3 6842368 0.000000 30.500000 1.500000 0 30.500000 28.500000 0
+ L3 6842368 0.000000 16.000000 1.500000 0 16.000000 28.500000 0
+ L3 6842368 0.000000 14.500000 1.500000 0 14.500000 28.500000 0
+ L3 6842368 0.000000 96.000000 30.000000 0 96.000000 0.000000 0
+ L3 6842368 0.000000 191.372060 38.083748 0 250.713012 29.215183 0
+ L3 6842368 0.000000 191.150346 36.600225 0 250.491298 27.731660 0
+ L3 6842368 0.000000 249.096190 28.500000 0 244.723389 1.500000 0
+ L3 6842368 0.000000 250.858669 30.000000 0 246.000000 0.000000 0
+ L3 6842368 0.000000 246.000000 0.000000 0 192.000000 0.000000 0
+ L3 6842368 0.000000 246.000000 1.500000 0 192.000000 1.500000 0
+ L3 6842368 0.000000 192.000000 28.500000 0 250.615735 28.500000 0
+ L3 6842368 0.000000 192.000000 30.000000 0 250.830304 30.000000 0
+ L3 6842368 0.000000 192.000000 0.000000 0 96.000000 0.000000 0
+ L3 6842368 0.000000 192.000000 1.500000 0 96.000000 1.500000 0
+ L3 6842368 0.000000 192.000000 30.000000 0 96.000000 30.000000 0
+ L3 6842368 0.000000 192.000000 28.500000 0 96.000000 28.500000 0
+ L3 6842368 0.000000 190.500000 28.500000 0 190.500000 1.500000 0
+ L3 6842368 0.000000 97.500000 1.500000 0 97.500000 28.500000 0
+ L3 6842368 0.000000 176.000000 1.500000 0 176.000000 28.500000 0
+ L3 6842368 0.000000 174.500000 1.500000 0 174.500000 28.500000 0
+ L3 6842368 0.000000 160.000000 1.500000 0 160.000000 28.500000 0
+ L3 6842368 0.000000 158.500000 1.500000 0 158.500000 28.500000 0
+ L3 6842368 0.000000 144.000000 1.500000 0 144.000000 28.500000 0
+ L3 6842368 0.000000 142.500000 1.500000 0 142.500000 28.500000 0
+ L3 6842368 0.000000 128.000000 1.500000 0 128.000000 28.500000 0
+ L3 6842368 0.000000 126.500000 1.500000 0 126.500000 28.500000 0
+ L3 6842368 0.000000 112.000000 1.500000 0 112.000000 28.500000 0
+ L3 6842368 0.000000 110.500000 1.500000 0 110.500000 28.500000 0
+ L3 6842368 0.000000 192.000000 30.000000 0 192.000000 0.000000 0
+ L3 6842368 0.000000 193.500000 1.500000 0 193.500000 28.500000 0
+ L3 6842368 0.000000 240.000000 1.500000 0 240.000000 28.500000 0
+ L3 6842368 0.000000 238.500000 1.500000 0 238.500000 28.500000 0
+ L3 6842368 0.000000 224.000000 1.500000 0 224.000000 28.500000 0
+ L3 6842368 0.000000 222.500000 1.500000 0 222.500000 28.500000 0
+ L3 6842368 0.000000 208.000000 1.500000 0 208.000000 28.500000 0
+ L3 6842368 0.000000 206.500000 1.500000 0 206.500000 28.500000 0
+ L3 6842368 0.000000 1.500000 5.000000 0 5.000000 5.000000 0
+ L3 6842368 0.000000 5.000000 5.000000 0 5.000000 1.500000 0
+ L3 6842368 0.000000 5.000000 1.500000 0 1.500000 5.000000 0
+ L3 6842368 0.000000 1.500000 5.000000 0 1.500000 1.500000 0
+ L3 6842368 0.000000 1.500000 1.500000 0 5.000000 1.500000 0
+ L3 6842368 0.000000 5.000000 5.000000 0 1.500000 1.500000 0
+ L3 6842368 0.000000 97.500000 5.000000 0 101.000000 5.000000 0
+ L3 6842368 0.000000 101.000000 5.000000 0 101.000000 1.500000 0
+ L3 6842368 0.000000 101.000000 1.500000 0 97.500000 5.000000 0
+ L3 6842368 0.000000 97.500000 5.000000 0 97.500000 1.500000 0
+ L3 6842368 0.000000 97.500000 1.500000 0 101.000000 1.500000 0
+ L3 6842368 0.000000 101.000000 5.000000 0 97.500000 1.500000 0
+ L3 6842368 0.000000 48.000000 5.000000 0 51.500000 5.000000 0
+ L3 6842368 0.000000 51.500000 5.000000 0 51.500000 1.500000 0
+ L3 6842368 0.000000 51.500000 1.500000 0 48.000000 5.000000 0
+ L3 6842368 0.000000 48.000000 5.000000 0 48.000000 1.500000 0
+ L3 6842368 0.000000 48.000000 1.500000 0 51.500000 1.500000 0
+ L3 6842368 0.000000 51.500000 5.000000 0 48.000000 1.500000 0
+ L3 6842368 0.000000 144.000000 5.000000 0 147.500000 5.000000 0
+ L3 6842368 0.000000 147.500000 5.000000 0 147.500000 1.500000 0
+ L3 6842368 0.000000 147.500000 1.500000 0 144.000000 5.000000 0
+ L3 6842368 0.000000 144.000000 5.000000 0 144.000000 1.500000 0
+ L3 6842368 0.000000 144.000000 1.500000 0 147.500000 1.500000 0
+ L3 6842368 0.000000 147.500000 5.000000 0 144.000000 1.500000 0
+ L3 6842368 0.000000 193.500000 5.000000 0 197.000000 5.000000 0
+ L3 6842368 0.000000 197.000000 5.000000 0 197.000000 1.500000 0
+ L3 6842368 0.000000 197.000000 1.500000 0 193.500000 5.000000 0
+ L3 6842368 0.000000 193.500000 5.000000 0 193.500000 1.500000 0
+ L3 6842368 0.000000 193.500000 1.500000 0 197.000000 1.500000 0
+ L3 6842368 0.000000 197.000000 5.000000 0 193.500000 1.500000 0
+ L3 6842368 0.000000 240.000000 5.000000 0 243.500000 5.000000 0
+ L3 6842368 0.000000 243.500000 5.000000 0 243.500000 1.500000 0
+ L3 6842368 0.000000 243.500000 1.500000 0 240.000000 5.000000 0
+ L3 6842368 0.000000 240.000000 5.000000 0 240.000000 1.500000 0
+ L3 6842368 0.000000 240.000000 1.500000 0 243.500000 1.500000 0
+ L3 6842368 0.000000 243.500000 5.000000 0 240.000000 1.500000 0
+ L3 6842368 0.000000 1.500000 25.500000 0 3.000000 25.500000 0
+ L3 6842368 0.000000 3.000000 25.500000 0 3.000000 28.500000 0
+ L3 6842368 0.000000 3.000000 28.500000 0 1.500000 28.500000 0
+ L3 6842368 0.000000 1.500000 28.500000 0 1.500000 25.500000 0
+ L3 6842368 0.000000 1.500000 25.500000 0 3.000000 28.500000 0
+ L3 6842368 0.000000 1.500000 28.500000 0 3.000000 25.500000 0
+ L3 6842368 0.000000 48.000000 25.500000 0 49.500000 25.500000 0
+ L3 6842368 0.000000 49.500000 25.500000 0 49.500000 28.500000 0
+ L3 6842368 0.000000 49.500000 28.500000 0 48.000000 28.500000 0
+ L3 6842368 0.000000 48.000000 28.500000 0 48.000000 25.500000 0
+ L3 6842368 0.000000 48.000000 25.500000 0 49.500000 28.500000 0
+ L3 6842368 0.000000 48.000000 28.500000 0 49.500000 25.500000 0
+ L3 6842368 0.000000 97.500000 25.500000 0 99.000000 25.500000 0
+ L3 6842368 0.000000 99.000000 25.500000 0 99.000000 28.500000 0
+ L3 6842368 0.000000 99.000000 28.500000 0 97.500000 28.500000 0
+ L3 6842368 0.000000 97.500000 28.500000 0 97.500000 25.500000 0
+ L3 6842368 0.000000 97.500000 25.500000 0 99.000000 28.500000 0
+ L3 6842368 0.000000 97.500000 28.500000 0 99.000000 25.500000 0
+ L3 6842368 0.000000 144.000000 25.500000 0 145.500000 25.500000 0
+ L3 6842368 0.000000 145.500000 25.500000 0 145.500000 28.500000 0
+ L3 6842368 0.000000 145.500000 28.500000 0 144.000000 28.500000 0
+ L3 6842368 0.000000 144.000000 28.500000 0 144.000000 25.500000 0
+ L3 6842368 0.000000 144.000000 25.500000 0 145.500000 28.500000 0
+ L3 6842368 0.000000 144.000000 28.500000 0 145.500000 25.500000 0
+ L3 6842368 0.000000 193.500000 25.500000 0 195.000000 25.500000 0
+ L3 6842368 0.000000 195.000000 25.500000 0 195.000000 28.500000 0
+ L3 6842368 0.000000 195.000000 28.500000 0 193.500000 28.500000 0
+ L3 6842368 0.000000 193.500000 28.500000 0 193.500000 25.500000 0
+ L3 6842368 0.000000 193.500000 25.500000 0 195.000000 28.500000 0
+ L3 6842368 0.000000 193.500000 28.500000 0 195.000000 25.500000 0
+ L3 6842368 0.000000 240.000000 25.500000 0 241.500000 25.500000 0
+ L3 6842368 0.000000 241.500000 25.500000 0 241.500000 28.500000 0
+ L3 6842368 0.000000 241.500000 28.500000 0 240.000000 28.500000 0
+ L3 6842368 0.000000 240.000000 28.500000 0 240.000000 25.500000 0
+ L3 6842368 0.000000 240.000000 25.500000 0 241.500000 28.500000 0
+ L3 6842368 0.000000 240.000000 28.500000 0 241.500000 25.500000 0
+ L3 6842368 0.000000 66.963574 74.097098 0 99.752250 74.526309 0
+ L3 6842368 0.000000 69.074808 62.123707 0 97.955168 62.501757 0
+ L3 6842368 0.000000 68.810904 63.620381 0 98.179803 64.004826 0
+ L3 6842368 0.000000 67.227478 72.600424 0 99.527615 73.023240 0
+ L3 6842368 0.000000 66.963574 74.097098 0 69.047354 62.279406 0
+ L3 6842368 0.000000 68.747111 72.620317 0 70.330536 63.640273 0
+ L3 6842368 0.000000 98.007982 73.003348 0 96.660171 63.984934 0
+ L3 6842368 0.000000 99.752250 74.526309 0 97.955168 62.501757 0
+ END$SEGS
+CAR 16 Fn3 "Accucraft AMS Box Car Box Car Moffat Logo AM2201-04 Denver & Rio Grande Western D&RGW 3491" 512 30100 21.750 5.000 0 0 16.310 22.750 8535808 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 772 0 428.466 512.667 118.000
+ T4 773 438.509820 507.326657 117.999711 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 782 418.422708 518.007033 297.999711 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 19 Fn3 "Accucraft AMS Box Car Box Car Moffat Logo AM2201-13 Denver & Rio Grande Western D&RGW 3471" 512 30100 21.750 5.000 0 0 16.310 22.750 8535808 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 773 0 448.340 501.605 121.848
+ T4 774 458.002256 495.603133 121.847764 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 772 438.677198 507.607492 301.847764 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 17 Fn3 "Accucraft AMS Box Car Box Car AM2201-20 Rio Grande Southern RGS 8510" 512 30100 21.750 5.000 0 0 16.310 22.750 8535808 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 774 0 466.923 488.503 128.000
+ T4 775 475.886169 481.499866 128.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 773 457.958925 495.506164 308.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 18 Fn3 "Accucraft AMS Box Car Box Car AM2201-21 Rio Grande Southern RGS 8511" 512 30100 21.750 5.000 0 0 16.310 22.750 8535808 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 775 0 484.850 474.497 128.000
+ T4 784 493.813414 467.493567 128.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 774 475.886169 481.499866 308.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 9 Fn3 "Accucraft AMS Jackson & Sharp Coach Jackson & Sharp Coach Red AM54-012A Rio Grande Southern RGS 253" 512 50100 25.500 5.000 0 0 19.125 26.500 8535808 0.000 0.000 0 20200513 0 0 0 0 0 0 0 "" 776 0 325.843 151.770 270.000
+ T4 778 312.593116 151.769491 269.999919 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 777 339.093116 151.769528 89.999919 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 10 Fn3 "Accucraft AMS Jackson & Sharp Coach Jackson & Sharp Coach Red AM54-012C Rio Grande Southern RGS 255" 512 50100 25.500 5.000 0 0 19.125 26.500 8535808 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 777 0 352.343 151.753 91.240
+ E4 365.589890 151.465843 91.240409 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 776 339.096100 152.039503 271.240409 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 3 Fn3 "Accucraft AMS Jackson & Sharp Combine Jackson & Sharp Combine Red AM54-022B Rio Grande Southern RGS 201" 512 50100 25.500 5.000 0 0 19.130 26.500 8535808 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 778 0 299.343 151.769 270.000
+ T4 783 286.093116 151.769454 269.999919 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 776 312.593116 151.769491 89.999919 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 43 Fn3 "Custom 2-8-0, Baldwin Consolidation C-19 " 518 10201 18.000 5.000 0 0 8.000 19.600 5592405 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 779 0 263.784 144.126 245.616
+ E4 254.858175 140.080057 245.616081 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 783 272.709847 148.171894 65.616081 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 40 Fn3 "Custom 2-8-2, Baldwin Mikado K-27 " 518 10201 24.150 5.000 0 0 10.000 25.750 5592405 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 780 0 516.986 449.280 130.791
+ E4 526.733769 440.868898 130.790755 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 784 507.238431 457.691333 310.790755 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 46 Fn3 "Custom CONX Framed Tank Car " 512 30100 18.000 5.000 0 0 13.200 19.600 12632256 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 781 0 316.400 117.943 270.000
+ E4 306.600000 117.943254 269.999694 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 785 326.200000 117.943358 89.999694 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 15 Fn3 "Custom D&RGW Long Caboose " 0 90100 15.000 5.050 0 0 13.400 16.600 8405056 0.000 0.000 0 0 0 0 0 0 0 0 0 ""
+CAR 14 Fn3 "Custom D&RGW Short Caboose " 512 90100 9.600 5.050 0 0 8.400 11.200 8405056 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 782 0 413.022 519.647 108.327
+ T4 772 418.337449 517.885713 108.327282 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ E4 407.705560 521.407492 288.327282 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 41 Fn3 "Custom Tender, Consolidation Short " 512 10201 12.000 5.000 0 0 8.000 13.600 5592405 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 783 0 279.471 149.477 256.716
+ T4 779 272.852599 147.914041 256.715635 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 778 286.088685 151.039105 76.715635 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 42 Fn3 "Custom Tender, Mikado Long " 512 10201 15.000 5.000 0 0 8.000 16.600 5592405 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 784 0 500.354 462.384 128.000
+ T4 780 506.894392 457.273587 128.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 775 493.813414 467.493567 308.000000 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ END$SEGS
+CAR 45 Fn3 "Custom UTLX Frameless Tank Car " 512 30100 18.000 4.500 0 0 13.200 19.600 0 0.000 0.000 0 0 0 0 0 0 0 0 0 "" 785 0 336.000 117.943 90.000
+ E4 345.800000 117.943392 89.999833 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ T4 781 326.200000 117.943335 269.999833 0 0.0 0.0 0.0 0.0 0 0 0 0.000000
+ 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/4DBrix(Lego Track).xtp b/app/lib/params/4DBrix(Lego Track).xtp
new file mode 100644
index 0000000..316af41
--- /dev/null
+++ b/app/lib/params/4DBrix(Lego Track).xtp
@@ -0,0 +1,230 @@
+CONTENTS 4DBrix(Lego) Track Components
+SUBCONTENTS 4DBrix(Lego) Track - Straight Track
+TURNOUT LEGO "4DBrix(Lego) Straight Track (S4/32mm) S4"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.259843 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.259843 0.000000
+END
+TURNOUT LEGO "4DBrix(Lego) Straight Track (S8/64mm) S8"
+ 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
+END
+TURNOUT LEGO "4DBrix(Lego) Straight Track (S16/128mm) S16"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.039370 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+END
+TURNOUT LEGO "4DBrix(Lego) Straight Track (S24/192mm) S24"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.559055 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 7.559055 0.000000
+END
+TURNOUT LEGO "4DBrix(Lego) Straight Track (S32/256mm) S32"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.078740 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+END
+TURNOUT LEGO "4DBrix(Lego) Straight Track (S48/384mm) S48"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 15.118110 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 15.118110 0.000000
+END
+
+
+SUBCONTENTS 4DBrix(Lego) Track - Curve Track
+TURNOUT LEGO "4DBrix(Lego) Curve Track R40/320mm 22.5d R40"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.821209 -0.958998 112.500000
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 22.500000
+END
+TURNOUT LEGO "4DBrix(Lego) Curve Track R88/704mm 11.25d R88"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.407228 -0.532565 101.250000
+ C 0 0.000000 27.716535 0.000000 -27.716535 0.000000 11.250000
+END
+TURNOUT LEGO "4DBrix(Lego) Curve Track R56/448mm 18d R56-18"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.450378 -0.863255 108.000000
+ C 0 0.000000 17.637795 0.000000 -17.637795 0.000000 18.000000
+END
+TURNOUT LEGO "4DBrix(Lego) Curve Track R72/576mm 15d R72-15"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.869282 -0.772706 105.000000
+ C 0 0.000000 22.677165 0.000000 -22.677165 0.000000 15.000000
+END
+
+
+SUBCONTENTS 4DBrix(Lego) Track - Crossing Track
+TURNOUT LEGO "4DBrix(Lego) Crossing Track 90D S16/128mm C90"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.039370 0.000000 90.000000
+ E 2.519692 2.519685 0.000000
+ E 2.519678 -2.519685 180.000000
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+ S 0 0.000000 2.519692 2.519685 2.519678 -2.519685
+END
+
+
+SUBCONTENTS 4DBrix(Lego) Track - Bumper Track
+TURNOUT LEGO "4DBrix(Lego) Bumper Track (S5/40mm) BUMPER"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 1.574803 0.000000
+ L3 0 0.315000 0.944803 0.738189 0 1.574803 0.738189 0
+ L3 0 0.315000 0.944803 -0.738189 0 1.574803 -0.738189 0
+END
+
+
+SUBCONTENTS 4DBrix(Lego) Track - Turnouts
+TURNOUT LEGO "4DBrix(Lego) Lefthand Switch S26.7/R40 P26.7-LH"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 8.409449 0.000000 90.000000
+ E 10.296841 4.080679 67.500000
+ S 0 0.000000 0.000000 0.000000 8.409449 0.000000
+ C 0 0.000000 -12.598425 0.000000 12.598425 143.130102 36.869898
+END
+TURNOUT LEGO "4DBrix(Lego) Righthand Switch S26.7/R40 P26.7-RH"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 8.409449 0.000000 90.000000
+ E 10.296841 -4.080679 112.500000
+ S 0 0.000000 0.000000 0.000000 8.409449 0.000000
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 36.869898
+END
+TURNOUT LEGO "4DBrix(Lego) Lefthand Switch S32/R40 P32-LH"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.078740 0.000000 90.000000
+ E 10.296841 4.080679 67.500000
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+ C 0 0.000000 -12.598425 0.000000 12.598425 143.130102 36.869898
+END
+TURNOUT LEGO "4DBrix(Lego) Righthand Switch S32/R40 P32-RH"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 10.078740 0.000000 90.000000
+ E 10.296841 -4.080679 112.500000
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 36.869898
+END
+TURNOUT LEGO "4DBrix(Lego) Curved Lefthand Switch S32/R40 P32-CLH"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 9.860579 0.958998 67.500000
+ E 8.908432 3.689993 45.000000
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+ C 0 0.000000 -12.598425 5.039370 12.598425 157.500000 22.500000
+ C 0 0.000000 -12.598425 0.000000 12.598425 135.000000 45.000000
+END
+TURNOUT LEGO "4DBrix(Lego) Curve Righthand Switch S32/R40 P32-CRH"
+ P "Normal" 1 2
+ P "Reverse" 3
+ E 0.000000 0.000000 270.000000
+ E 9.860579 -0.958998 112.500000
+ E 8.908432 -3.689993 135.000000
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+ C 0 0.000000 12.598425 5.039370 -12.598425 0.000000 22.500000
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 45.000000
+ END
+TURNOUT LEGO "4DBrix(Lego) Lefthand Switch S40/R104 P40-LH"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 12.598425 0.000000 90.000000
+ E 12.535142 2.493395 67.500000
+ S 0 0.000000 0.000000 0.000000 12.598425 0.000000
+ C 0 0.000000 32.755906 0.000000 32.755906 157.500000 22.500000
+END
+TURNOUT LEGO "4DBrix(Lego) Righthand Switch S40/R104 P40-RH"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 12.598425 0.000000 90.000000
+ E 12.535142 -2.493395 112.500000
+ S 0 0.000000 0.000000 0.000000 12.598425 0.000000
+ C 0 0.000000 32.755906 0.000000 -32.755906 0.000000 22.500000
+END
+TURNOUT LEGO "4DBrix(Lego) Double Crossover S48/384mm DCOS"
+ P "Normal" 1 0 6
+ P "Reverse" 2 3 0 4 5
+ E 0.000000 0.000000 270.000000
+ E 15.118110 0.000000 90.000000
+ E 0.000000 5.039370 270.000000
+ E 15.118110 5.039370 90.000000
+ S 0 0.000000 0.000000 0.000000 15.118110 0.000000
+ C 0 0.000000 -12.598425 0.000000 12.598425 143.130102 36.869898
+ C 0 0.000000 12.598425 15.118110 -7.559055 323.130102 36.869898
+ C 0 0.000000 12.598425 0.000000 -7.559055 0.000000 36.869898
+ C 0 0.000000 -12.598425 15.118110 12.598425 180.000000 36.869898
+ S 0 0.000000 0.000000 5.039370 15.118110 5.039370
+END
+TURNOUT LEGO "4DBrix(Lego) LeftHand Crossover S48/384mm COS-LH"
+ P "Normal" 1 0 4
+ P "Reverse" 2 3
+ E 0.000000 0.000000 270.000000
+ E 10.078740 0.000000 90.000000
+ E 5.039370 5.039370 270.000000
+ E 15.118110 5.039370 90.000000
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+ C 0 0.000000 -12.598425 0.000000 12.598425 143.130102 36.869898
+ C 0 0.000000 12.598425 15.118110 -7.559055 323.130102 36.869898
+ S 0 0.000000 5.039370 5.039370 15.118110 5.039370
+END
+TURNOUT LEGO "4DBrix(Lego) RightHand Crossover S48/384mm COS-RH"
+ P "Normal" 1 0 4
+ P "Reverse" 2 3
+ E 0.000000 0.000000 270.000000
+ E 10.078740 0.000000 90.000000
+ E 5.039370 -5.039370 270.000000
+ E 15.118110 -5.039370 90.000000
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 36.869898
+ C 0 0.000000 -12.598425 15.118110 7.559055 180.000000 36.869898
+ S 0 0.000000 5.039370 -5.039370 15.118110 -5.039370
+END
+TURNOUT LEGO "4DBrix(Lego) 3-Way Swicth S32/256mm 3WS"
+ P "Normal" 1
+ P "Reverse1" 2
+ P "Reverse2" 3
+ E 0.000000 0.000000 270.000000
+ E 7.559055 2.519685 53.130102
+ E 10.078740 0.000000 90.000000
+ E 7.559055 -2.519685 126.869898
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+ C 0 0.000000 12.598425 0.000000 12.598425 143.130102 36.869898
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 36.869898
+END
+TURNOUT LEGO "4DBrix(Lego) 3W/Wye Curve Track R40/320mm 8.1d R40-8.1"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.781686 -0.126621 98.130102
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 8.130102
+END
+TURNOUT LEGO "4DBrix(Lego) WYE Switch S24/192mm YS"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 7.559055 2.519685 53.130102
+ E 7.559055 -2.519685 126.869898
+ C 0 0.000000 12.598425 0.000000 12.598425 143.130102 36.869898
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 36.869898
+END
+
diff --git a/app/lib/params/5in-MiniTrain.xtp b/app/lib/params/5in-MiniTrain.xtp
new file mode 100644
index 0000000..9b8952b
--- /dev/null
+++ b/app/lib/params/5in-MiniTrain.xtp
@@ -0,0 +1,889 @@
+CONTENTS 5" Gauge Mini Train Systems
+# by Russell Shilling 20210823
+
+SUBCONTENTS Straight Track
+TURNOUT 5" "Mini Train Systems Straight Single Str 1.5m"
+ U "Straight Section" "" "Mini Train Systems" "Straight Single" "Str 1.5m" 59.055118 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Straight Double Str 3.0m"
+ U "Straight Section" "" "Mini Train Systems" "Straight Double" "Str 3.0m" 118.110236 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Straight Half Str 750mm"
+ U "Straight Section" "" "Mini Train Systems" "Straight Half" "Str 750mm" 29.527559 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 29.527559 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 29.527559 0.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Buffer Half Buf 750mm"
+ U "Straight Section" "" "Mini Train Systems" "Buffer" "Buffer 750mm" 29.527559 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 29.527559 0.000000
+ L 0 1.500000 25.527559 -2.000000 25.527559 2.000000
+ L 0 0.800000 25.527559 -1.7500000 29.527559 -3.000000
+ L 0 0.800000 25.527559 1.7500000 29.527559 3.000000
+ END$SEGS
+
+SUBCONTENTS Curved Track
+TURNOUT 5" "Mini Train Systems Curved 2.5m 45deg Crv 2.5m 45d"
+ U "Curved Section" "" "Mini Train Systems" "Curve 2.5m/45deg" "Crv 2.5/45" 98.425197 45.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 69.597124 28.828073 45.000000
+ C 0 0.000000 -98.425197 0.000000 98.425197 135.000000 45.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 3.8m 22.5deg Crv 3.8m 22.5d"
+ U "Curved Section" "" "Mini Train Systems" "Curve 3.8m/22.5deg" "Crv 3.8/22.5" 149.606299 22.500000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 57.251852 11.388101 67.500000
+ C 0 0.000000 -149.606299 0.000000 149.606299 157.500000 22.500000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 5m 22.5deg Crv 5m 22.5d"
+ U "Curved Section" "" "Mini Train Systems" "Curve 5m/22.5deg" "Crv 5/22.5" 196.850394 22.500000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 75.331384 14.984344 67.500000
+ C 0 0.000000 -196.850394 0.000000 196.850394 157.500000 22.500000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 6.25m 15deg Crv 6.25m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 6.25m 15deg" "Crv 6.25m 15deg" 246.062992 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 63.685789 8.384393 75.000000
+ C 0 0.000000 -246.062992 0.000000 246.062992 165.000000 15.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 6.25m 22.5deg Crv 6.25m 22.5d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 6.25m 22.5deg" "Crv 6.25m 22.5deg" 246.062992 22.500000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 94.164230 18.730430 67.500000
+ C 0 0.000000 -246.062992 0.000000 246.062992 157.500000 22.500000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 8.5m 15deg Crv 8.5m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 8.5m 15deg" "Crv 8.5m 15deg" 334.645669 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 86.612673 11.402775 75.000000
+ C 0 0.000000 -334.645669 0.000000 334.645669 165.000000 15.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 10m 15deg Crv 10m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 10m 15deg" "Crv 10m 15deg" 393.700787 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 101.897262 13.415029 75.000000
+ C 0 0.000000 -393.700787 0.000000 393.700787 165.000000 15.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 12m 15deg Crv 12m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 12m 15deg" "Crv 12m 15deg" 472.440945 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 122.276714 16.098035 75.000000
+ C 0 0.000000 -472.440945 0.000000 472.440945 165.000000 15.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 14m 15deg Crv 14m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 14m 15deg" "Crv 14m 15deg" 551.181102 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 142.656167 18.781041 75.000000
+ C 0 0.000000 -551.181102 0.000000 551.181102 165.000000 15.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Curved 18m 7.5deg Crv 18m 7.5d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 18m 7.5deg" "Crv 18m 7.5deg" 708.661417 7.500000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 92.498876 6.062697 82.500000
+ C 0 0.000000 -708.661417 0.000000 708.661417 172.500000 7.500000
+ END$SEGS
+
+SUBCONTENTS Turnouts (Points)
+TURNOUT 5" "Mini Train Systems Left Turnout 3.8m 22.5deg Lft 3.8m 22.5d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ E 57.251852 11.388101 67.500000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ C 0 0.000000 -149.606299 0.000000 149.606299 157.500000 22.500000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Right Turnout 3.8m 22.5deg Rgt 3.8m 22.5d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ E 57.251852 -11.388101 112.500000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ C 0 0.000000 149.606299 0.000000 -149.606299 0.000000 22.500000
+ END$SEGS
+
+TURNOUT 5" "Mini Train Systems Left Turnout 6.25m 15deg Lft 6.25m 15d"
+ U "Regular Turnout" "" "Mini Train Systems" "Left Turnout 6.25m 15deg" "L 6.25m/15d" "Right" "R 6.25m/22.5d" 94.164230 22.500000 18.730430 88.582677 0.000000 0.000000 0
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 88.582677 0.000000 90.000000
+ E 63.685789 8.384393 75.000000
+ S 0 0.000000 0.000000 0.000000 88.582677 0.000000
+ C 0 0.000000 -246.062992 0.000000 246.062992 165.000000 15.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Right Turnout 6.25m 22.5deg Rgt 6.25m 15d"
+ U "Regular Turnout" "" "Mini Train Systems" "Left Turnout 6.25m 15deg" "L 6.25m/15d" "Right" "R 6.25m/22.5d" 94.164230 22.500000 18.730430 88.582677 0.000000 0.000000 0
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 88.582677 0.000000 90.000000
+ E 63.685789 -8.384393 105.000000
+ S 0 0.000000 0.000000 0.000000 88.582677 0.000000
+ C 0 0.000000 246.062992 0.000000 -246.062992 0.000000 15.000000
+ END$SEGS
+
+TURNOUT 5" "Mini Train Systems Left Turnout 10m 15deg Lft 10m 15d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 101.897262 13.415029 75.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 -393.700787 0.000000 393.700787 165.000000 15.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Right Turnout 10m 15deg Rgt 10m 15d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 101.897262 -13.415029 105.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 393.700787 0.000000 -393.700787 0.000000 15.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Wye Turnout 10m 15deg Wye 10m 15d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 101.897262 13.415029 75.000000
+ E 101.897262 -13.415029 105.000000
+ C 0 0.000000 -393.700787 0.000000 393.700787 165.000000 15.000000
+ C 0 0.000000 393.700787 0.000000 -393.700787 0.000000 15.000000
+ END$SEGS
+
+TURNOUT 5" "Mini Train Systems Left Turnout 14m 12deg Lft 14m 12d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 114.596995 12.044630 78.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 -551.181102 0.000000 551.181102 168.000000 12.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Right Turnout 14m 12deg Rgt 14m 12d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 114.596995 -12.044630 102.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 551.181102 0.000000 -551.181102 0.000000 12.000000
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Turnout Extender 14m 3deg Ext 14m 3d"
+ U "Curved Section" "" "Mini Train Systems" "Turnout Curve 14m/3d" "14m/3d" 551.181102 3.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 28.846590 0.755375 87.000000
+ C 0 0.000000 -551.181102 -0.000000 551.181102 177.000000 3.000000
+ END$SEGS
+
+SUBCONTENTS Diamond Crossing
+TURNOUT 5" "Mini Train Systems Diamond 15 Degree Xng 15d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 15 Degree" "X 15d" 118.110236 15.000000 118.110236 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 2.012254 15.284589 285.000000
+ E 116.097982 -15.284589 105.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ S 0 0.000000 2.012254 15.284589 116.097982 -15.284589
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Diamond 22.5 Degree Xng 22.5d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 22.5 Degree" "X 22.5d" 68.897638 22.500000 68.897638 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 68.897638 0.000000 90.000000
+ E 2.622260 13.182992 292.500000
+ E 66.275378 -13.182992 112.500000
+ S 0 0.000000 0.000000 0.000000 68.897638 0.000000
+ S 0 0.000000 2.622260 13.182992 66.275378 -13.182992
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Diamond 30 Degree Xng 30d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 30 Degree" "X 30d" 59.055118 30.000000 59.055118 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ E 3.955943 14.763780 300.000000
+ E 55.099175 -14.763780 120.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ S 0 0.000000 3.955943 14.763780 55.099175 -14.763780
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Diamond 45 Degree Xng 45d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 45 Degree" "X 45d" 59.055118 45.000000 59.055118 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ E 8.648422 20.879137 315.000000
+ E 50.406696 -20.879137 135.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ S 0 0.000000 8.648422 20.879137 50.406696 -20.879137
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Diamond 60 Degree Xng 60d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 60 Degree" "X 60d" 59.055118 60.000000 59.055118 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ E 14.763780 25.571616 330.000000
+ E 44.291339 -25.571616 150.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ S 0 0.000000 14.763780 25.571616 44.291339 -25.571616
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Diamond 75 Degree Xng 75d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 75 Degree" "X 75d" 29.527559 75.000000 29.527559 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 29.527559 0.000000 90.000000
+ E 10.942632 14.260716 345.000000
+ E 18.584927 -14.260716 165.000000
+ S 0 0.000000 0.000000 0.000000 29.527559 0.000000
+ S 0 0.000000 10.942632 14.260716 18.584927 -14.260716
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Diamond 90 Degree Xng 90d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 90 Degree" "X 90d" 29.527559 90.000000 29.527559 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 29.527559 0.000000 90.000000
+ E 14.763780 14.763780 360.000000
+ E 14.763780 -14.763780 180.000000
+ S 0 0.000000 0.000000 0.000000 29.527559 0.000000
+ S 0 0.000000 14.763780 14.763780 14.763780 -14.763780
+ END$SEGS
+
+SUBCONTENTS Special Track
+TURNOUT 5" "Mini Train Systems Level Crossing Single LvlX 1.5m"
+ U "Straight Section" "" "Mini Train Systems" "Straight Single" "Str 1.5m" 59.055118 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+#
+ F4 15263744 0.000000 4 0
+ 0.500000 6.000000 0
+ 4.000000 6.000000 0
+ 1.000000 3.000000 0
+ 0.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 4.000000 6.000000 0
+ 7.000000 6.000000 0
+ 4.000000 3.000000 0
+ 1.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 7.000000 6.000000 0
+ 10.000000 6.000000 0
+ 7.000000 3.000000 0
+ 4.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 10.000000 6.000000 0
+ 13.000000 6.000000 0
+ 10.000000 3.000000 0
+ 7.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 13.000000 6.000000 0
+ 16.000000 6.000000 0
+ 13.000000 3.000000 0
+ 10.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 16.000000 6.000000 0
+ 19.000000 6.000000 0
+ 16.000000 3.000000 0
+ 13.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 19.000000 6.000000 0
+ 22.000000 6.000000 0
+ 19.000000 3.000000 0
+ 16.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 22.000000 6.000000 0
+ 25.000000 6.000000 0
+ 22.000000 3.000000 0
+ 19.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 25.000000 6.000000 0
+ 28.000000 6.000000 0
+ 25.000000 3.000000 0
+ 22.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 28.000000 6.000000 0
+ 31.000000 6.000000 0
+ 28.000000 3.000000 0
+ 25.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 31.000000 6.000000 0
+ 34.000000 6.000000 0
+ 31.000000 3.000000 0
+ 28.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 34.000000 6.000000 0
+ 37.000000 6.000000 0
+ 34.000000 3.000000 0
+ 31.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 37.000000 6.000000 0
+ 40.000000 6.000000 0
+ 37.000000 3.000000 0
+ 34.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 40.000000 6.000000 0
+ 43.000000 6.000000 0
+ 40.000000 3.000000 0
+ 37.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 43.000000 6.000000 0
+ 46.000000 6.000000 0
+ 43.000000 3.000000 0
+ 40.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 46.000000 6.000000 0
+ 49.000000 6.000000 0
+ 46.000000 3.000000 0
+ 43.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 49.000000 6.000000 0
+ 52.000000 6.000000 0
+ 49.000000 3.000000 0
+ 46.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 52.000000 6.000000 0
+ 55.000000 6.000000 0
+ 52.000000 3.000000 0
+ 49.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 55.000000 6.000000 0
+ 58.000000 6.000000 0
+ 55.000000 3.000000 0
+ 52.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 58.000000 6.000000 0
+ 58.500000 6.000000 0
+ 58.500000 3.000000 0
+ 55.000000 3.000000 0
+#
+ F4 15263744 0.000000 4 0
+ 0.500000 -3.000000 0
+ 4.000000 -3.000000 0
+ 1.000000 -6.000000 0
+ 0.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 4.000000 -3.000000 0
+ 7.000000 -3.000000 0
+ 4.000000 -6.000000 0
+ 1.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 7.000000 -3.000000 0
+ 10.000000 -3.000000 0
+ 7.000000 -6.000000 0
+ 4.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 10.000000 -3.000000 0
+ 13.000000 -3.000000 0
+ 10.000000 -6.000000 0
+ 7.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 13.000000 -3.000000 0
+ 16.000000 -3.000000 0
+ 13.000000 -6.000000 0
+ 10.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 16.000000 -3.000000 0
+ 19.000000 -3.000000 0
+ 16.000000 -6.000000 0
+ 13.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 19.000000 -3.000000 0
+ 22.000000 -3.000000 0
+ 19.000000 -6.000000 0
+ 16.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 22.000000 -3.000000 0
+ 25.000000 -3.000000 0
+ 22.000000 -6.000000 0
+ 19.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 25.000000 -3.000000 0
+ 28.000000 -3.000000 0
+ 25.000000 -6.000000 0
+ 22.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 28.000000 -3.000000 0
+ 31.000000 -3.000000 0
+ 28.000000 -6.000000 0
+ 25.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 31.000000 -3.000000 0
+ 34.000000 -3.000000 0
+ 31.000000 -6.000000 0
+ 28.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 34.000000 -3.000000 0
+ 37.000000 -3.000000 0
+ 34.000000 -6.000000 0
+ 31.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 37.000000 -3.000000 0
+ 40.000000 -3.000000 0
+ 37.000000 -6.000000 0
+ 34.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 40.000000 -3.000000 0
+ 43.000000 -3.000000 0
+ 40.000000 -6.000000 0
+ 37.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 43.000000 -3.000000 0
+ 46.000000 -3.000000 0
+ 43.000000 -6.000000 0
+ 40.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 46.000000 -3.000000 0
+ 49.000000 -3.000000 0
+ 46.000000 -6.000000 0
+ 43.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 49.000000 -3.000000 0
+ 52.000000 -3.000000 0
+ 49.000000 -6.000000 0
+ 46.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 52.000000 -3.000000 0
+ 55.000000 -3.000000 0
+ 52.000000 -6.000000 0
+ 49.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 55.000000 -3.000000 0
+ 58.000000 -3.000000 0
+ 55.000000 -6.000000 0
+ 52.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 58.000000 -3.000000 0
+ 58.500000 -3.000000 0
+ 58.500000 -6.000000 0
+ 55.000000 -6.000000 0
+ END$SEGS
+TURNOUT 5" "Mini Train Systems Level Crossing Double LvlX 3.0m"
+ U "Straight Section" "" "Mini Train Systems" "Straight Double" "Str 3.0m" 118.110236 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+#
+ F4 15263744 0.000000 3 0
+ 0.500000 6.000000 0
+ 3.500000 6.000000 0
+ 0.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 3.500000 6.000000 0
+ 6.500000 6.000000 0
+ 3.500000 3.000000 0
+ 0.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 6.500000 6.000000 0
+ 9.500000 6.000000 0
+ 6.500000 3.000000 0
+ 3.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 9.500000 6.000000 0
+ 12.500000 6.000000 0
+ 9.500000 3.000000 0
+ 6.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 12.500000 6.000000 0
+ 15.500000 6.000000 0
+ 12.500000 3.000000 0
+ 9.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 15.500000 6.000000 0
+ 18.500000 6.000000 0
+ 15.500000 3.000000 0
+ 12.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 18.500000 6.000000 0
+ 21.500000 6.000000 0
+ 18.500000 3.000000 0
+ 15.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 21.500000 6.000000 0
+ 24.500000 6.000000 0
+ 21.500000 3.000000 0
+ 18.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 24.500000 6.000000 0
+ 27.500000 6.000000 0
+ 24.500000 3.000000 0
+ 21.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 27.500000 6.000000 0
+ 30.500000 6.000000 0
+ 27.500000 3.000000 0
+ 24.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 30.500000 6.000000 0
+ 33.500000 6.000000 0
+ 30.500000 3.000000 0
+ 27.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 33.500000 6.000000 0
+ 36.500000 6.000000 0
+ 33.500000 3.000000 0
+ 30.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 36.500000 6.000000 0
+ 39.500000 6.000000 0
+ 36.500000 3.000000 0
+ 33.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 39.500000 6.000000 0
+ 42.500000 6.000000 0
+ 39.500000 3.000000 0
+ 36.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 42.500000 6.000000 0
+ 45.500000 6.000000 0
+ 42.500000 3.000000 0
+ 39.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 45.500000 6.000000 0
+ 48.500000 6.000000 0
+ 45.500000 3.000000 0
+ 42.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 48.500000 6.000000 0
+ 51.500000 6.000000 0
+ 48.500000 3.000000 0
+ 45.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 51.500000 6.000000 0
+ 54.500000 6.000000 0
+ 51.500000 3.000000 0
+ 48.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 54.500000 6.000000 0
+ 57.500000 6.000000 0
+ 54.500000 3.000000 0
+ 51.500000 3.000000 0
+ F4 0 0.000000 4 0
+ 57.500000 6.000000 0
+ 60.500000 6.000000 0
+ 57.500000 3.000000 0
+ 54.500000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 61.000000 6.000000 0
+ 64.000000 6.000000 0
+ 61.000000 3.000000 0
+ 58.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 64.000000 6.000000 0
+ 67.000000 6.000000 0
+ 64.000000 3.000000 0
+ 61.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 67.000000 6.000000 0
+ 70.000000 6.000000 0
+ 67.000000 3.000000 0
+ 64.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 70.000000 6.000000 0
+ 73.000000 6.000000 0
+ 70.000000 3.000000 0
+ 67.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 73.000000 6.000000 0
+ 76.000000 6.000000 0
+ 73.000000 3.000000 0
+ 70.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 76.000000 6.000000 0
+ 79.000000 6.000000 0
+ 76.000000 3.000000 0
+ 73.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 79.000000 6.000000 0
+ 82.000000 6.000000 0
+ 79.000000 3.000000 0
+ 76.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 82.000000 6.000000 0
+ 85.000000 6.000000 0
+ 82.000000 3.000000 0
+ 79.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 85.000000 6.000000 0
+ 88.000000 6.000000 0
+ 85.000000 3.000000 0
+ 82.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 88.000000 6.000000 0
+ 91.000000 6.000000 0
+ 88.000000 3.000000 0
+ 85.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 91.000000 6.000000 0
+ 94.000000 6.000000 0
+ 91.000000 3.000000 0
+ 88.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 94.000000 6.000000 0
+ 97.000000 6.000000 0
+ 94.000000 3.000000 0
+ 91.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 97.000000 6.000000 0
+ 100.000000 6.000000 0
+ 97.000000 3.000000 0
+ 94.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 100.000000 6.000000 0
+ 103.000000 6.000000 0
+ 100.000000 3.000000 0
+ 97.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 103.000000 6.000000 0
+ 106.000000 6.000000 0
+ 103.000000 3.000000 0
+ 100.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 106.000000 6.000000 0
+ 109.000000 6.000000 0
+ 106.000000 3.000000 0
+ 103.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 109.000000 6.000000 0
+ 112.000000 6.000000 0
+ 109.000000 3.000000 0
+ 106.000000 3.000000 0
+ F4 0 0.000000 4 0
+ 112.000000 6.000000 0
+ 115.000000 6.000000 0
+ 112.000000 3.000000 0
+ 109.000000 3.000000 0
+ F4 15263744 0.000000 4 0
+ 115.000000 6.000000 0
+ 118.000000 6.000000 0
+ 115.000000 3.000000 0
+ 112.000000 3.000000 0
+ F4 0 0.000000 3 0
+ 118.000000 6.000000 0
+ 118.000000 3.000000 0
+ 115.000000 3.000000 0
+#
+ F4 15263744 0.000000 3 0
+ 0.500000 -3.000000 0
+ 3.500000 -3.000000 0
+ 0.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 3.500000 -3.000000 0
+ 6.500000 -3.000000 0
+ 3.500000 -6.000000 0
+ 0.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 6.500000 -3.000000 0
+ 9.500000 -3.000000 0
+ 6.500000 -6.000000 0
+ 3.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 9.500000 -3.000000 0
+ 12.500000 -3.000000 0
+ 9.500000 -6.000000 0
+ 6.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 12.500000 -3.000000 0
+ 15.500000 -3.000000 0
+ 12.500000 -6.000000 0
+ 9.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 15.500000 -3.000000 0
+ 18.500000 -3.000000 0
+ 15.500000 -6.000000 0
+ 12.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 18.500000 -3.000000 0
+ 21.500000 -3.000000 0
+ 18.500000 -6.000000 0
+ 15.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 21.500000 -3.000000 0
+ 24.500000 -3.000000 0
+ 21.500000 -6.000000 0
+ 18.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 24.500000 -3.000000 0
+ 27.500000 -3.000000 0
+ 24.500000 -6.000000 0
+ 21.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 27.500000 -3.000000 0
+ 30.500000 -3.000000 0
+ 27.500000 -6.000000 0
+ 24.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 30.500000 -3.000000 0
+ 33.500000 -3.000000 0
+ 30.500000 -6.000000 0
+ 27.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 33.500000 -3.000000 0
+ 36.500000 -3.000000 0
+ 33.500000 -6.000000 0
+ 30.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 36.500000 -3.000000 0
+ 39.500000 -3.000000 0
+ 36.500000 -6.000000 0
+ 33.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 39.500000 -3.000000 0
+ 42.500000 -3.000000 0
+ 39.500000 -6.000000 0
+ 36.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 42.500000 -3.000000 0
+ 45.500000 -3.000000 0
+ 42.500000 -6.000000 0
+ 39.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 45.500000 -3.000000 0
+ 48.500000 -3.000000 0
+ 45.500000 -6.000000 0
+ 42.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 48.500000 -3.000000 0
+ 51.500000 -3.000000 0
+ 48.500000 -6.000000 0
+ 45.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 51.500000 -3.000000 0
+ 54.500000 -3.000000 0
+ 51.500000 -6.000000 0
+ 48.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 54.500000 -3.000000 0
+ 57.500000 -3.000000 0
+ 54.500000 -6.000000 0
+ 51.500000 -6.000000 0
+ F4 0 0.000000 4 0
+ 57.500000 -3.000000 0
+ 60.500000 -3.000000 0
+ 57.500000 -6.000000 0
+ 54.500000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 61.000000 -3.000000 0
+ 64.000000 -3.000000 0
+ 61.000000 -6.000000 0
+ 58.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 64.000000 -3.000000 0
+ 67.000000 -3.000000 0
+ 64.000000 -6.000000 0
+ 61.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 67.000000 -3.000000 0
+ 70.000000 -3.000000 0
+ 67.000000 -6.000000 0
+ 64.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 70.000000 -3.000000 0
+ 73.000000 -3.000000 0
+ 70.000000 -6.000000 0
+ 67.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 73.000000 -3.000000 0
+ 76.000000 -3.000000 0
+ 73.000000 -6.000000 0
+ 70.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 76.000000 -3.000000 0
+ 79.000000 -3.000000 0
+ 76.000000 -6.000000 0
+ 73.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 79.000000 -3.000000 0
+ 82.000000 -3.000000 0
+ 79.000000 -6.000000 0
+ 76.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 82.000000 -3.000000 0
+ 85.000000 -3.000000 0
+ 82.000000 -6.000000 0
+ 79.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 85.000000 -3.000000 0
+ 88.000000 -3.000000 0
+ 85.000000 -6.000000 0
+ 82.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 88.000000 -3.000000 0
+ 91.000000 -3.000000 0
+ 88.000000 -6.000000 0
+ 85.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 91.000000 -3.000000 0
+ 94.000000 -3.000000 0
+ 91.000000 -6.000000 0
+ 88.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 94.000000 -3.000000 0
+ 97.000000 -3.000000 0
+ 94.000000 -6.000000 0
+ 91.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 97.000000 -3.000000 0
+ 100.000000 -3.000000 0
+ 97.000000 -6.000000 0
+ 94.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 100.000000 -3.000000 0
+ 103.000000 -3.000000 0
+ 100.000000 -6.000000 0
+ 97.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 103.000000 -3.000000 0
+ 106.000000 -3.000000 0
+ 103.000000 -6.000000 0
+ 100.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 106.000000 -3.000000 0
+ 109.000000 -3.000000 0
+ 106.000000 -6.000000 0
+ 103.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 109.000000 -3.000000 0
+ 112.000000 -3.000000 0
+ 109.000000 -6.000000 0
+ 106.000000 -6.000000 0
+ F4 0 0.000000 4 0
+ 112.000000 -3.000000 0
+ 115.000000 -3.000000 0
+ 112.000000 -6.000000 0
+ 109.000000 -6.000000 0
+ F4 15263744 0.000000 4 0
+ 115.000000 -3.000000 0
+ 118.000000 -3.000000 0
+ 115.000000 -6.000000 0
+ 112.000000 -6.000000 0
+ F4 0 0.000000 3 0
+ 118.000000 -3.000000 0
+ 118.000000 -6.000000 0
+ 115.000000 -6.000000 0
+ END$SEGS
diff --git a/app/lib/params/7.25-AccuTie.xtp b/app/lib/params/7.25-AccuTie.xtp
new file mode 100644
index 0000000..8931ec8
--- /dev/null
+++ b/app/lib/params/7.25-AccuTie.xtp
@@ -0,0 +1,74 @@
+CONTENTS 7-1/4" Gauge AccuTie Turnout
+
+TURNOUT 7-1/4" "AccuTie AccuTie #5 Left 5L"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #5 Left" "5L" "AccTtie #5 Right" "5R" 109.000000 11.700000 10.000000 109.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 109.000000 0.000000 90.000000
+ E 109.000000 10.000000 78.300000
+ S 0 0.000000 0.000000 0.000000 18.899073 0.000000
+ S 0 0.000000 18.899073 0.000000 109.000000 0.000000
+ C 0 0.000000 -408.096357 18.899073 408.096357 168.300000 11.700000
+ S 0 0.000000 101.655829 8.479095 109.000000 10.000000
+ END$SEGS
+TURNOUT 7-1/4" "AccuTie AccuTie #5 Right 5R"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #5 Left" "5L" "AccTtie #5 Right" "5R" 109.000000 11.700000 10.000000 109.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 109.000000 0.000000 90.000000
+ E 109.000000 -10.000000 101.700000
+ S 0 0.000000 0.000000 0.000000 18.899073 -0.000000
+ S 0 0.000000 18.899073 -0.000000 109.000000 0.000000
+ C 0 0.000000 408.096357 18.899073 -408.096357 0.000000 11.700000
+ S 0 0.000000 101.655829 -8.479095 109.000000 -10.000000
+ END$SEGS
+TURNOUT 7-1/4" "AccuTie AccuTie #7 Left 7L"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #7 Left" "7L" "AccTtie #7 Right" "7R" 161.000000 8.300000 10.000000 161.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 161.000000 0.000000 90.000000
+ E 161.000000 10.000000 81.700000
+ S 0 0.000000 0.000000 0.000000 30.679402 0.000000
+ S 0 0.000000 30.679402 0.000000 161.000000 0.000000
+ C 0 0.000000 -851.360408 30.679402 851.360408 171.700000 8.300000
+ S 0 0.000000 153.578557 8.917328 161.000000 10.000000
+ END$SEGS
+TURNOUT 7-1/4" "AccuTie AccuTie #7 Right 7R"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #7 Left" "7L" "AccTtie #7 Right" "7R" 161.000000 8.300000 10.000000 161.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 161.000000 0.000000 90.000000
+ E 161.000000 -10.000000 98.300000
+ S 0 0.000000 0.000000 0.000000 30.679402 -0.000000
+ S 0 0.000000 30.679402 -0.000000 161.000000 0.000000
+ C 0 0.000000 851.360408 30.679402 -851.360408 0.000000 8.300000
+ S 0 0.000000 153.578557 -8.917328 161.000000 -10.000000
+ END$SEGS
+TURNOUT 7-1/4" "AccuTie AccuTie #9 Left 9L"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #9 Left" "9L" "AccTtie #9 Right" "9R" 191.000000 6.200000 10.000000 191.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 191.000000 0.000000 90.000000
+ E 191.000000 10.000000 83.800000
+ S 0 0.000000 0.000000 0.000000 13.855291 0.000000
+ S 0 0.000000 13.855291 0.000000 191.000000 0.000000
+ C 0 0.000000 -1571.199902 13.855291 1571.199902 173.800000 6.200000
+ S 0 0.000000 183.543868 9.190005 191.000000 10.000000
+ END$SEGS
+TURNOUT 7-1/4" "AccuTie AccuTie #9 Right 9R"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #9 Left" "9L" "AccTtie #9 Right" "9R" 191.000000 6.200000 10.000000 191.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 191.000000 0.000000 90.000000
+ E 191.000000 -10.000000 96.200000
+ S 0 0.000000 0.000000 0.000000 13.855291 -0.000000
+ S 0 0.000000 13.855291 -0.000000 191.000000 0.000000
+ C 0 0.000000 1571.199902 13.855291 -1571.199902 0.000000 6.200000
+ S 0 0.000000 183.543868 -9.190005 191.000000 -10.000000
+ END$SEGS
diff --git a/app/lib/params/7.25-MiniRailway.xtp b/app/lib/params/7.25-MiniRailway.xtp
new file mode 100644
index 0000000..d9ad320
--- /dev/null
+++ b/app/lib/params/7.25-MiniRailway.xtp
@@ -0,0 +1,65 @@
+CONTENTS 7-1/4" Gauge Miniature Railway Workshop Portable Track
+
+SUBCONTENTS Straight Track
+TURNOUT 7-1/4" "Miniature Railway Workshop Buffer Buf"
+ U "Straight Section" "" "Miniature Railway Workshop" "Buffer" "Buf" 17.066929 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 17.066929 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 17.066929 0.000000
+ L 0 2.000000 12.066929 -3.000000 12.066929 3.000000
+ L 0 1.000000 12.066929 -2.500000 17.066929 -5.000000
+ L 0 1.000000 12.066929 2.500000 17.0669299 5.000000
+ END$SEGS
+TURNOUT 7-1/4" "Miniature Railway Workshop Straight Str"
+ U "Straight Section" "" "Miniature Railway Workshop" "Straight" "Str" 58.661417 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 58.661417 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 58.661417 0.000000
+ END$SEGS
+
+SUBCONTENTS Curved Track
+TURNOUT 7-1/4" "Miniature Railway Workshop Curve 4.5m 18deg Crv 4.5/18"
+ U "Curved Section" "" "Miniature Railway Workshop" "Curve 4.5m 18deg" "Crv 4.5/18" 177.165354 18.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 54.747105 8.671090 72.000000
+ C 0 0.000000 -177.165354 0.000000 177.165354 162.000000 18.000000
+ END$SEGS
+TURNOUT 7-1/4" "Miniature Railway Workshop Curve I 9.4m 8.4deg Crv 9.4/8.4"
+ U "Curved Section" "" "Miniature Railway Workshop" "Curve I 9.4m 8.4deg" "Crv 19.4/8.4" 370.078740 8.400000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 54.062223 3.970082 81.600000
+ C 0 0.000000 -370.078740 0.000000 370.078740 171.600000 8.400000
+ END$SEGS
+TURNOUT 7-1/4" "Miniature Railway Workshop Curve A 15m 5.6deg Crv 15/5.6"
+ U "Curved Section" "" "Miniature Railway Workshop" "Curve A 15m 5.6deg" "Crv 15/5.6" 590.551181 5.600000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 57.627697 2.818465 84.400000
+ C 0 0.000000 -590.551181 0.000000 590.551181 174.400000 5.600000
+ END$SEGS
+
+SUBCONTENTS Turnouts (Points)
+TURNOUT 7-1/4" "Mini Railway Workshop Left Turnout 18.8m 16.8deg Lft 18.8m 16.8d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 117.322834 0.000000 90.000000
+ E 106.964523 15.795147 73.200000
+ S 0 0.000000 0.000000 0.000000 117.322834 0.000000
+ C 0 0.000000 -370.078740 0.000000 370.078740 163.200000 16.800000
+ L 0 0.000000 58.6614179 -6.500000 58.661417 11.250000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Railway Workshop Right Turnout 18.8m 16.8deg Rgt 18.8m 16.8d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 117.322834 0.000000 90.000000
+ E 106.964523 -15.795147 106.800000
+ S 0 0.000000 0.000000 0.000000 117.322834 0.000000
+ C 0 0.000000 370.078740 0.000000 -370.078740 0.000000 16.800000
+ L 0 0.000000 58.6614179 -11.250000 58.661417 6.500000
+ END$SEGS
diff --git a/app/lib/params/7.25-MiniTrain.xtp b/app/lib/params/7.25-MiniTrain.xtp
new file mode 100644
index 0000000..cd64a55
--- /dev/null
+++ b/app/lib/params/7.25-MiniTrain.xtp
@@ -0,0 +1,921 @@
+CONTENTS 7-1/4" Gauge Mini Train Systems
+# by Russell Shilling 20210823
+
+SUBCONTENTS Straight Track
+TURNOUT 7-1/4" "Mini Train Systems Straight Single Str 1.5m"
+ U "Straight Section" "" "Mini Train Systems" "Straight Single" "Str 1.5m" 59.055118 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Straight Double Str 3.0m"
+ U "Straight Section" "" "Mini Train Systems" "Straight Double" "Str 3.0m" 118.110236 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Straight Half Str 750mm"
+ U "Straight Section" "" "Mini Train Systems" "Straight Half" "Str 750mm" 29.527559 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 29.527559 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 29.527559 0.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Buffer Half Buf 750mm"
+ U "Straight Section" "" "Mini Train Systems" "Buffer" "Buffer 750mm" 29.527559 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 29.527559 0.000000
+ L 0 2.000000 23.527559 -3.000000 23.527559 3.000000
+ L 0 1.000000 23.527559 -2.500000 29.527559 -5.000000
+ L 0 1.000000 23.527559 2.500000 29.527559 5.000000
+ END$SEGS
+
+SUBCONTENTS Curved Track
+TURNOUT 7-1/4" "Mini Train Systems Curved 6.25m 15deg Crv 6.25m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 6.25m 15deg" "Crv 6.25m 15deg" 246.062992 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 63.685789 8.384393 75.000000
+ C 0 0.000000 -246.062992 0.000000 246.062992 165.000000 15.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Curved 6.25m 22.5deg Crv 6.25m 22.5d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 6.25m 22.5deg" "Crv 6.25m 22.5deg" 246.062992 22.500000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 94.164230 18.730430 67.500000
+ C 0 0.000000 -246.062992 0.000000 246.062992 157.500000 22.500000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Curved 8.5m 15deg Crv 8.5m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 8.5m 15deg" "Crv 8.5m 15deg" 334.645669 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 86.612673 11.402775 75.000000
+ C 0 0.000000 -334.645669 0.000000 334.645669 165.000000 15.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Curved 10m 15deg Crv 10m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 10m 15deg" "Crv 10m 15deg" 393.700787 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 101.897262 13.415029 75.000000
+ C 0 0.000000 -393.700787 0.000000 393.700787 165.000000 15.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Curved 12m 15deg Crv 12m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 12m 15deg" "Crv 12m 15deg" 472.440945 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 122.276714 16.098035 75.000000
+ C 0 0.000000 -472.440945 0.000000 472.440945 165.000000 15.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Curved 14m 15deg Crv 14m 15d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 14m 15deg" "Crv 14m 15deg" 551.181102 15.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 142.656167 18.781041 75.000000
+ C 0 0.000000 -551.181102 0.000000 551.181102 165.000000 15.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Curved 18m 7.5deg Crv 18m 7.5d"
+ U "Curved Section" "" "Mini Train Systems" "Curved 18m 7.5deg" "Crv 18m 7.5deg" 708.661417 7.500000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 92.498876 6.062697 82.500000
+ C 0 0.000000 -708.661417 0.000000 708.661417 172.500000 7.500000
+ END$SEGS
+
+SUBCONTENTS Turnouts (Points)
+TURNOUT 7-1/4" "Mini Train Systems Left Turnout 6.25m 22.5deg Lft 6.25m 22.5d"
+ U "Regular Turnout" "" "Mini Train Systems" "Left Turnout 6.25m 22.5deg" "L 6.25m/22.5d" "Right" "R 6.25m/22.5d" 94.164230 22.500000 18.730430 88.582677 0.000000 0.000000 0
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 88.582677 0.000000 90.000000
+ E 94.164230 18.730430 67.500000
+ S 0 0.000000 0.000000 0.000000 88.582677 0.000000
+ C 0 0.000000 -246.062992 0.000000 246.062992 157.500000 22.500000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Right Turnout 6.25m 22.5deg Rgt 6.25m 22.5d"
+ U "Regular Turnout" "" "Mini Train Systems" "Left Turnout 6.25m 22.5deg" "L 6.25m/22.5d" "Right" "R 6.25m/22.5d" 94.164230 22.500000 18.730430 88.582677 0.000000 0.000000 0
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 88.582677 0.000000 90.000000
+ E 94.164230 -18.730430 112.500000
+ S 0 0.000000 0.000000 0.000000 88.582677 0.000000
+ C 0 0.000000 246.062992 0.000000 -246.062992 0.000000 22.500000
+ END$SEGS
+
+TURNOUT 7-1/4" "Mini Train Systems Left Turnout 10m 15deg Lft 10m 15d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 101.897262 13.415029 75.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 -393.700787 0.000000 393.700787 165.000000 15.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Right Turnout 10m 15deg Rgt 10m 15d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 101.897262 -13.415029 105.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 393.700787 0.000000 -393.700787 0.000000 15.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Wye Turnout 10m 15deg Wye 10m 15d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 101.897262 13.415029 75.000000
+ E 101.897262 -13.415029 105.000000
+ C 0 0.000000 -393.700787 0.000000 393.700787 165.000000 15.000000
+ C 0 0.000000 393.700787 0.000000 -393.700787 0.000000 15.000000
+ END$SEGS
+
+TURNOUT 7-1/4" "Mini Train Systems Left Turnout 14m 12deg Lft 14m 12d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 114.596995 12.044630 78.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 -551.181102 0.000000 551.181102 168.000000 12.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Right Turnout 14m 12deg Rgt 14m 12d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 114.596995 -12.044630 102.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 551.181102 0.000000 -551.181102 0.000000 12.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Turnout Extender 14m/3d Ext 14m 3d"
+ U "Curved Section" "" "Mini Train Systems" "Turnout Curve 14m/3d" "14m/3d" 551.181102 3.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 28.846590 0.755375 87.000000
+ C 0 0.000000 -551.181102 0.000000 551.181102 177.000000 3.000000
+ END$SEGS
+
+TURNOUT 7-1/4" "Mini Train Systems Left Turnout 18m 12.5deg Lft 18m 12.5d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 177.165354 0.000000 90.000000
+ E 153.382404 16.798105 77.500000
+ S 0 0.000000 0.000000 0.000000 177.165354 0.000000
+ C 0 0.000000 -708.661417 0.000000 708.661417 167.500000 12.500000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Right Turnout 18m 12.5deg Rgt 18m 12.5d"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 177.165354 0.000000 90.000000
+ E 153.382404 -16.798105 102.500000
+ S 0 0.000000 0.000000 0.000000 177.165354 0.000000
+ C 0 0.000000 708.661417 0.000000 -708.661417 0.000000 12.500000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Turnout Extender 18m/2.5d Ext 18m 2.5d"
+ U "Curved Section" "" "Mini Train Systems" "Turnout Curve 14m/2.5d" "18m/2.5d" 551.181102 3.000000 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 28.846590 0.755375 87.000000
+ C 0 0.000000 -551.181102 -0.000000 551.181102 177.000000 3.000000
+ END$SEGS
+
+SUBCONTENTS Special Turnouts (Points)
+TURNOUT 7-1/4" "Mini Train Systems 3-Way Turnout 10m 15deg 3Way 10m 15d"
+ P "Normal" 1
+ P "Left" 2
+ P "Right" 3
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 101.897262 13.415029 75.000000
+ E 101.897262 -13.415029 105.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ C 0 0.000000 -393.700787 0.000000 393.700787 165.000000 15.000000
+ C 0 0.000000 393.700787 0.000000 -393.700787 0.000000 15.000000
+ END$SEGS
+
+TURNOUT 7-1/4" "Mini Train Systems Single Slip Turnout 15 deg SS 10m 15d"
+ U "Single Slipswitch" "" "Mini Train Systems" "Single Slip Turnout" "SS 15d" 147.637795 15.000000 147.637795 0.000000 0.000000 0
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 4
+ E 0.000000 0.000000 270.000000
+ E 147.637795 0.000000 90.000000
+ E 2.515318 19.105737 285.000000
+ E 145.122477 -19.105737 105.000000
+ S 0 0.000000 0.000000 0.000000 14.500000 0.000000
+ S 0 0.000000 14.500000 0.000000 147.637795 0.000000
+ S 0 0.000000 2.515318 19.105737 131.116553 -15.352860
+ S 0 0.000000 131.116553 -15.352860 145.122477 -19.105737
+ C 0 0.000000 450.571761 14.500000 -450.571761 0.000000 15.000000
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Double Slip Turnout 15 deg DS 10m 15d"
+ U "Double Slipswitch" "" "Mini Train Systems" "Double Slip Turnout (Points)" "DS 15d" 147.637795 15.000000 147.637795 0.000000 0.000000 0
+ 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 147.637795 0.000000 90.000000
+ E 2.515318 19.105737 285.000000
+ E 145.122477 -19.105737 105.000000
+ S 0 0.000000 0.000000 0.000000 14.500000 0.000000
+ S 0 0.000000 14.500000 0.000000 133.137795 0.000000
+ S 0 0.000000 133.137795 0.000000 147.637795 0.000000
+ S 0 0.000000 2.515318 19.105737 16.521242 15.352860
+ S 0 0.000000 16.521242 15.352860 131.116553 -15.352860
+ S 0 0.000000 131.116553 -15.352860 145.122477 -19.105737
+ C 0 0.000000 450.571761 14.500000 -450.571761 0.000000 15.000000
+ C 0 0.000000 -450.571761 133.137795 450.571761 180.000000 15.000000
+ END$SEGS
+
+SUBCONTENTS Diamond Crossing
+TURNOUT 7-1/4" "Mini Train Systems Diamond 15 Degree Xng 15d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 15 Degree" "X 15d" 118.110236 15.000000 118.110236 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ E 2.012254 15.284589 285.000000
+ E 116.097982 -15.284589 105.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+ S 0 0.000000 2.012254 15.284589 116.097982 -15.284589
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Diamond 22.5 Degree Xng 22.5d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 22.5 Degree" "X 22.5d" 68.897638 22.500000 68.897638 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 68.897638 0.000000 90.000000
+ E 2.622260 13.182992 292.500000
+ E 66.275378 -13.182992 112.500000
+ S 0 0.000000 0.000000 0.000000 68.897638 0.000000
+ S 0 0.000000 2.622260 13.182992 66.275378 -13.182992
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Diamond 30 Degree Xng 30d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 30 Degree" "X 30d" 59.055118 30.000000 59.055118 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ E 3.955943 14.763780 300.000000
+ E 55.099175 -14.763780 120.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ S 0 0.000000 3.955943 14.763780 55.099175 -14.763780
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Diamond 45 Degree Xng 45d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 45 Degree" "X 45d" 59.055118 45.000000 59.055118 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ E 8.648422 20.879137 315.000000
+ E 50.406696 -20.879137 135.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ S 0 0.000000 8.648422 20.879137 50.406696 -20.879137
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Diamond 60 Degree Xng 60d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 60 Degree" "X 60d" 59.055118 60.000000 59.055118 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ E 14.763780 25.571616 330.000000
+ E 44.291339 -25.571616 150.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ S 0 0.000000 14.763780 25.571616 44.291339 -25.571616
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Diamond 75 Degree Xng 75d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 75 Degree" "X 75d" 29.527559 75.000000 29.527559 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 29.527559 0.000000 90.000000
+ E 10.942632 14.260716 345.000000
+ E 18.584927 -14.260716 165.000000
+ S 0 0.000000 0.000000 0.000000 29.527559 0.000000
+ S 0 0.000000 10.942632 14.260716 18.584927 -14.260716
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Diamond 90 Degree Xng 90d"
+ U "Crossing" "" "Mini Train Systems" "Diamond 90 Degree" "X 90d" 29.527559 90.000000 29.527559 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 29.527559 0.000000 90.000000
+ E 14.763780 14.763780 360.000000
+ E 14.763780 -14.763780 180.000000
+ S 0 0.000000 0.000000 0.000000 29.527559 0.000000
+ S 0 0.000000 14.763780 14.763780 14.763780 -14.763780
+ END$SEGS
+
+SUBCONTENTS Special Track
+TURNOUT 7-1/4" "Mini Train Systems Level Crossing Single LvlX 1.5m"
+ U "Straight Section" "" "Mini Train Systems" "Straight Single" "Str 1.5m" 59.055118 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+#
+ F4 15263744 0.000000 4 0
+ 0.500000 7.250000 0
+ 4.000000 7.250000 0
+ 1.000000 4.250000 0
+ 0.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 4.000000 7.250000 0
+ 7.000000 7.250000 0
+ 4.000000 4.250000 0
+ 1.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 7.000000 7.250000 0
+ 10.000000 7.250000 0
+ 7.000000 4.250000 0
+ 4.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 10.000000 7.250000 0
+ 13.000000 7.250000 0
+ 10.000000 4.250000 0
+ 7.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 13.000000 7.250000 0
+ 16.000000 7.250000 0
+ 13.000000 4.250000 0
+ 10.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 16.000000 7.250000 0
+ 19.000000 7.250000 0
+ 16.000000 4.250000 0
+ 13.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 19.000000 7.250000 0
+ 22.000000 7.250000 0
+ 19.000000 4.250000 0
+ 16.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 22.000000 7.250000 0
+ 25.000000 7.250000 0
+ 22.000000 4.250000 0
+ 19.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 25.000000 7.250000 0
+ 28.000000 7.250000 0
+ 25.000000 4.250000 0
+ 22.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 28.000000 7.250000 0
+ 31.000000 7.250000 0
+ 28.000000 4.250000 0
+ 25.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 31.000000 7.250000 0
+ 34.000000 7.250000 0
+ 31.000000 4.250000 0
+ 28.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 34.000000 7.250000 0
+ 37.000000 7.250000 0
+ 34.000000 4.250000 0
+ 31.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 37.000000 7.250000 0
+ 40.000000 7.250000 0
+ 37.000000 4.250000 0
+ 34.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 40.000000 7.250000 0
+ 43.000000 7.250000 0
+ 40.000000 4.250000 0
+ 37.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 43.000000 7.250000 0
+ 46.000000 7.250000 0
+ 43.000000 4.250000 0
+ 40.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 46.000000 7.250000 0
+ 49.000000 7.250000 0
+ 46.000000 4.250000 0
+ 43.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 49.000000 7.250000 0
+ 52.000000 7.250000 0
+ 49.000000 4.250000 0
+ 46.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 52.000000 7.250000 0
+ 55.000000 7.250000 0
+ 52.000000 4.250000 0
+ 49.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 55.000000 7.250000 0
+ 58.000000 7.250000 0
+ 55.000000 4.250000 0
+ 52.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 58.000000 7.250000 0
+ 58.500000 7.250000 0
+ 58.500000 4.250000 0
+ 55.000000 4.250000 0
+#
+ F4 15263744 0.000000 4 0
+ 0.500000 -4.250000 0
+ 4.000000 -4.250000 0
+ 1.000000 -7.250000 0
+ 0.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 4.000000 -4.250000 0
+ 7.000000 -4.250000 0
+ 4.000000 -7.250000 0
+ 1.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 7.000000 -4.250000 0
+ 10.000000 -4.250000 0
+ 7.000000 -7.250000 0
+ 4.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 10.000000 -4.250000 0
+ 13.000000 -4.250000 0
+ 10.000000 -7.250000 0
+ 7.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 13.000000 -4.250000 0
+ 16.000000 -4.250000 0
+ 13.000000 -7.250000 0
+ 10.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 16.000000 -4.250000 0
+ 19.000000 -4.250000 0
+ 16.000000 -7.250000 0
+ 13.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 19.000000 -4.250000 0
+ 22.000000 -4.250000 0
+ 19.000000 -7.250000 0
+ 16.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 22.000000 -4.250000 0
+ 25.000000 -4.250000 0
+ 22.000000 -7.250000 0
+ 19.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 25.000000 -4.250000 0
+ 28.000000 -4.250000 0
+ 25.000000 -7.250000 0
+ 22.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 28.000000 -4.250000 0
+ 31.000000 -4.250000 0
+ 28.000000 -7.250000 0
+ 25.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 31.000000 -4.250000 0
+ 34.000000 -4.250000 0
+ 31.000000 -7.250000 0
+ 28.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 34.000000 -4.250000 0
+ 37.000000 -4.250000 0
+ 34.000000 -7.250000 0
+ 31.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 37.000000 -4.250000 0
+ 40.000000 -4.250000 0
+ 37.000000 -7.250000 0
+ 34.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 40.000000 -4.250000 0
+ 43.000000 -4.250000 0
+ 40.000000 -7.250000 0
+ 37.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 43.000000 -4.250000 0
+ 46.000000 -4.250000 0
+ 43.000000 -7.250000 0
+ 40.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 46.000000 -4.250000 0
+ 49.000000 -4.250000 0
+ 46.000000 -7.250000 0
+ 43.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 49.000000 -4.250000 0
+ 52.000000 -4.250000 0
+ 49.000000 -7.250000 0
+ 46.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 52.000000 -4.250000 0
+ 55.000000 -4.250000 0
+ 52.000000 -7.250000 0
+ 49.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 55.000000 -4.250000 0
+ 58.000000 -4.250000 0
+ 55.000000 -7.250000 0
+ 52.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 58.000000 -4.250000 0
+ 58.500000 -4.250000 0
+ 58.500000 -7.250000 0
+ 55.000000 -7.250000 0
+ END$SEGS
+TURNOUT 7-1/4" "Mini Train Systems Level Crossing Double LvlX 3.0m"
+ U "Straight Section" "" "Mini Train Systems" "Straight Double" "Str 3.0m" 118.110236 0.000000 0.000000 0
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 118.110236 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 118.110236 0.000000
+#
+ F4 15263744 0.000000 3 0
+ 0.500000 7.250000 0
+ 3.500000 7.250000 0
+ 0.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 3.500000 7.250000 0
+ 6.500000 7.250000 0
+ 3.500000 4.250000 0
+ 0.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 6.500000 7.250000 0
+ 9.500000 7.250000 0
+ 6.500000 4.250000 0
+ 3.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 9.500000 7.250000 0
+ 12.500000 7.250000 0
+ 9.500000 4.250000 0
+ 6.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 12.500000 7.250000 0
+ 15.500000 7.250000 0
+ 12.500000 4.250000 0
+ 9.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 15.500000 7.250000 0
+ 18.500000 7.250000 0
+ 15.500000 4.250000 0
+ 12.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 18.500000 7.250000 0
+ 21.500000 7.250000 0
+ 18.500000 4.250000 0
+ 15.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 21.500000 7.250000 0
+ 24.500000 7.250000 0
+ 21.500000 4.250000 0
+ 18.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 24.500000 7.250000 0
+ 27.500000 7.250000 0
+ 24.500000 4.250000 0
+ 21.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 27.500000 7.250000 0
+ 30.500000 7.250000 0
+ 27.500000 4.250000 0
+ 24.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 30.500000 7.250000 0
+ 33.500000 7.250000 0
+ 30.500000 4.250000 0
+ 27.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 33.500000 7.250000 0
+ 36.500000 7.250000 0
+ 33.500000 4.250000 0
+ 30.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 36.500000 7.250000 0
+ 39.500000 7.250000 0
+ 36.500000 4.250000 0
+ 33.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 39.500000 7.250000 0
+ 42.500000 7.250000 0
+ 39.500000 4.250000 0
+ 36.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 42.500000 7.250000 0
+ 45.500000 7.250000 0
+ 42.500000 4.250000 0
+ 39.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 45.500000 7.250000 0
+ 48.500000 7.250000 0
+ 45.500000 4.250000 0
+ 42.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 48.500000 7.250000 0
+ 51.500000 7.250000 0
+ 48.500000 4.250000 0
+ 45.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 51.500000 7.250000 0
+ 54.500000 7.250000 0
+ 51.500000 4.250000 0
+ 48.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 54.500000 7.250000 0
+ 57.500000 7.250000 0
+ 54.500000 4.250000 0
+ 51.500000 4.250000 0
+ F4 0 0.000000 4 0
+ 57.500000 7.250000 0
+ 60.500000 7.250000 0
+ 57.500000 4.250000 0
+ 54.500000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 61.000000 7.250000 0
+ 64.000000 7.250000 0
+ 61.000000 4.250000 0
+ 58.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 64.000000 7.250000 0
+ 67.000000 7.250000 0
+ 64.000000 4.250000 0
+ 61.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 67.000000 7.250000 0
+ 70.000000 7.250000 0
+ 67.000000 4.250000 0
+ 64.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 70.000000 7.250000 0
+ 73.000000 7.250000 0
+ 70.000000 4.250000 0
+ 67.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 73.000000 7.250000 0
+ 76.000000 7.250000 0
+ 73.000000 4.250000 0
+ 70.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 76.000000 7.250000 0
+ 79.000000 7.250000 0
+ 76.000000 4.250000 0
+ 73.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 79.000000 7.250000 0
+ 82.000000 7.250000 0
+ 79.000000 4.250000 0
+ 76.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 82.000000 7.250000 0
+ 85.000000 7.250000 0
+ 82.000000 4.250000 0
+ 79.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 85.000000 7.250000 0
+ 88.000000 7.250000 0
+ 85.000000 4.250000 0
+ 82.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 88.000000 7.250000 0
+ 91.000000 7.250000 0
+ 88.000000 4.250000 0
+ 85.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 91.000000 7.250000 0
+ 94.000000 7.250000 0
+ 91.000000 4.250000 0
+ 88.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 94.000000 7.250000 0
+ 97.000000 7.250000 0
+ 94.000000 4.250000 0
+ 91.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 97.000000 7.250000 0
+ 100.000000 7.250000 0
+ 97.000000 4.250000 0
+ 94.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 100.000000 7.250000 0
+ 103.000000 7.250000 0
+ 100.000000 4.250000 0
+ 97.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 103.000000 7.250000 0
+ 106.000000 7.250000 0
+ 103.000000 4.250000 0
+ 100.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 106.000000 7.250000 0
+ 109.000000 7.250000 0
+ 106.000000 4.250000 0
+ 103.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 109.000000 7.250000 0
+ 112.000000 7.250000 0
+ 109.000000 4.250000 0
+ 106.000000 4.250000 0
+ F4 0 0.000000 4 0
+ 112.000000 7.250000 0
+ 115.000000 7.250000 0
+ 112.000000 4.250000 0
+ 109.000000 4.250000 0
+ F4 15263744 0.000000 4 0
+ 115.000000 7.250000 0
+ 118.000000 7.250000 0
+ 115.000000 4.250000 0
+ 112.000000 4.250000 0
+ F4 0 0.000000 3 0
+ 118.000000 7.250000 0
+ 118.000000 4.250000 0
+ 115.000000 4.250000 0
+#
+ F4 15263744 0.000000 3 0
+ 0.500000 -4.250000 0
+ 3.500000 -4.250000 0
+ 0.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 3.500000 -4.250000 0
+ 6.500000 -4.250000 0
+ 3.500000 -7.250000 0
+ 0.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 6.500000 -4.250000 0
+ 9.500000 -4.250000 0
+ 6.500000 -7.250000 0
+ 3.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 9.500000 -4.250000 0
+ 12.500000 -4.250000 0
+ 9.500000 -7.250000 0
+ 6.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 12.500000 -4.250000 0
+ 15.500000 -4.250000 0
+ 12.500000 -7.250000 0
+ 9.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 15.500000 -4.250000 0
+ 18.500000 -4.250000 0
+ 15.500000 -7.250000 0
+ 12.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 18.500000 -4.250000 0
+ 21.500000 -4.250000 0
+ 18.500000 -7.250000 0
+ 15.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 21.500000 -4.250000 0
+ 24.500000 -4.250000 0
+ 21.500000 -7.250000 0
+ 18.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 24.500000 -4.250000 0
+ 27.500000 -4.250000 0
+ 24.500000 -7.250000 0
+ 21.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 27.500000 -4.250000 0
+ 30.500000 -4.250000 0
+ 27.500000 -7.250000 0
+ 24.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 30.500000 -4.250000 0
+ 33.500000 -4.250000 0
+ 30.500000 -7.250000 0
+ 27.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 33.500000 -4.250000 0
+ 36.500000 -4.250000 0
+ 33.500000 -7.250000 0
+ 30.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 36.500000 -4.250000 0
+ 39.500000 -4.250000 0
+ 36.500000 -7.250000 0
+ 33.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 39.500000 -4.250000 0
+ 42.500000 -4.250000 0
+ 39.500000 -7.250000 0
+ 36.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 42.500000 -4.250000 0
+ 45.500000 -4.250000 0
+ 42.500000 -7.250000 0
+ 39.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 45.500000 -4.250000 0
+ 48.500000 -4.250000 0
+ 45.500000 -7.250000 0
+ 42.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 48.500000 -4.250000 0
+ 51.500000 -4.250000 0
+ 48.500000 -7.250000 0
+ 45.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 51.500000 -4.250000 0
+ 54.500000 -4.250000 0
+ 51.500000 -7.250000 0
+ 48.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 54.500000 -4.250000 0
+ 57.500000 -4.250000 0
+ 54.500000 -7.250000 0
+ 51.500000 -7.250000 0
+ F4 0 0.000000 4 0
+ 57.500000 -4.250000 0
+ 60.500000 -4.250000 0
+ 57.500000 -7.250000 0
+ 54.500000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 61.000000 -4.250000 0
+ 64.000000 -4.250000 0
+ 61.000000 -7.250000 0
+ 58.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 64.000000 -4.250000 0
+ 67.000000 -4.250000 0
+ 64.000000 -7.250000 0
+ 61.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 67.000000 -4.250000 0
+ 70.000000 -4.250000 0
+ 67.000000 -7.250000 0
+ 64.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 70.000000 -4.250000 0
+ 73.000000 -4.250000 0
+ 70.000000 -7.250000 0
+ 67.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 73.000000 -4.250000 0
+ 76.000000 -4.250000 0
+ 73.000000 -7.250000 0
+ 70.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 76.000000 -4.250000 0
+ 79.000000 -4.250000 0
+ 76.000000 -7.250000 0
+ 73.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 79.000000 -4.250000 0
+ 82.000000 -4.250000 0
+ 79.000000 -7.250000 0
+ 76.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 82.000000 -4.250000 0
+ 85.000000 -4.250000 0
+ 82.000000 -7.250000 0
+ 79.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 85.000000 -4.250000 0
+ 88.000000 -4.250000 0
+ 85.000000 -7.250000 0
+ 82.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 88.000000 -4.250000 0
+ 91.000000 -4.250000 0
+ 88.000000 -7.250000 0
+ 85.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 91.000000 -4.250000 0
+ 94.000000 -4.250000 0
+ 91.000000 -7.250000 0
+ 88.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 94.000000 -4.250000 0
+ 97.000000 -4.250000 0
+ 94.000000 -7.250000 0
+ 91.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 97.000000 -4.250000 0
+ 100.000000 -4.250000 0
+ 97.000000 -7.250000 0
+ 94.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 100.000000 -4.250000 0
+ 103.000000 -4.250000 0
+ 100.000000 -7.250000 0
+ 97.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 103.000000 -4.250000 0
+ 106.000000 -4.250000 0
+ 103.000000 -7.250000 0
+ 100.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 106.000000 -4.250000 0
+ 109.000000 -4.250000 0
+ 106.000000 -7.250000 0
+ 103.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 109.000000 -4.250000 0
+ 112.000000 -4.250000 0
+ 109.000000 -7.250000 0
+ 106.000000 -7.250000 0
+ F4 0 0.000000 4 0
+ 112.000000 -4.250000 0
+ 115.000000 -4.250000 0
+ 112.000000 -7.250000 0
+ 109.000000 -7.250000 0
+ F4 15263744 0.000000 4 0
+ 115.000000 -4.250000 0
+ 118.000000 -4.250000 0
+ 115.000000 -7.250000 0
+ 112.000000 -7.250000 0
+ F4 0 0.000000 3 0
+ 118.000000 -4.250000 0
+ 118.000000 -7.250000 0
+ 115.000000 -7.250000 0
+ END$SEGS
diff --git a/app/lib/params/7.5-AccuTie.xtp b/app/lib/params/7.5-AccuTie.xtp
new file mode 100644
index 0000000..d81bfe7
--- /dev/null
+++ b/app/lib/params/7.5-AccuTie.xtp
@@ -0,0 +1,74 @@
+CONTENTS 7-1/2" Gauge AccuTie Turnout
+
+TURNOUT 7-1/2" "AccuTie AccuTie #5 Left 5L"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #5 Left" "5L" "AccTtie #5 Right" "5R" 109.000000 11.700000 10.000000 109.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 109.000000 0.000000 90.000000
+ E 109.000000 10.000000 78.300000
+ S 0 0.000000 0.000000 0.000000 18.899073 0.000000
+ S 0 0.000000 18.899073 0.000000 109.000000 0.000000
+ C 0 0.000000 -408.096357 18.899073 408.096357 168.300000 11.700000
+ S 0 0.000000 101.655829 8.479095 109.000000 10.000000
+ END$SEGS
+TURNOUT 7-1/2" "AccuTie AccuTie #5 Right 5R"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #5 Left" "5L" "AccTtie #5 Right" "5R" 109.000000 11.700000 10.000000 109.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 109.000000 0.000000 90.000000
+ E 109.000000 -10.000000 101.700000
+ S 0 0.000000 0.000000 0.000000 18.899073 -0.000000
+ S 0 0.000000 18.899073 -0.000000 109.000000 0.000000
+ C 0 0.000000 408.096357 18.899073 -408.096357 0.000000 11.700000
+ S 0 0.000000 101.655829 -8.479095 109.000000 -10.000000
+ END$SEGS
+TURNOUT 7-1/2" "AccuTie AccuTie #7 Left 7L"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #7 Left" "7L" "AccTtie #7 Right" "7R" 161.000000 8.300000 10.000000 161.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 161.000000 0.000000 90.000000
+ E 161.000000 10.000000 81.700000
+ S 0 0.000000 0.000000 0.000000 30.679402 0.000000
+ S 0 0.000000 30.679402 0.000000 161.000000 0.000000
+ C 0 0.000000 -851.360408 30.679402 851.360408 171.700000 8.300000
+ S 0 0.000000 153.578557 8.917328 161.000000 10.000000
+ END$SEGS
+TURNOUT 7-1/2" "AccuTie AccuTie #7 Right 7R"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #7 Left" "7L" "AccTtie #7 Right" "7R" 161.000000 8.300000 10.000000 161.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 161.000000 0.000000 90.000000
+ E 161.000000 -10.000000 98.300000
+ S 0 0.000000 0.000000 0.000000 30.679402 -0.000000
+ S 0 0.000000 30.679402 -0.000000 161.000000 0.000000
+ C 0 0.000000 851.360408 30.679402 -851.360408 0.000000 8.300000
+ S 0 0.000000 153.578557 -8.917328 161.000000 -10.000000
+ END$SEGS
+TURNOUT 7-1/2" "AccuTie AccuTie #9 Left 9L"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #9 Left" "9L" "AccTtie #9 Right" "9R" 191.000000 6.200000 10.000000 191.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 191.000000 0.000000 90.000000
+ E 191.000000 10.000000 83.800000
+ S 0 0.000000 0.000000 0.000000 13.855291 0.000000
+ S 0 0.000000 13.855291 0.000000 191.000000 0.000000
+ C 0 0.000000 -1571.199902 13.855291 1571.199902 173.800000 6.200000
+ S 0 0.000000 183.543868 9.190005 191.000000 10.000000
+ END$SEGS
+TURNOUT 7-1/2" "AccuTie AccuTie #9 Right 9R"
+ U "Regular Turnout" "" "AccuTie" "AccuTie #9 Left" "9L" "AccTtie #9 Right" "9R" 191.000000 6.200000 10.000000 191.000000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 191.000000 0.000000 90.000000
+ E 191.000000 -10.000000 96.200000
+ S 0 0.000000 0.000000 0.000000 13.855291 -0.000000
+ S 0 0.000000 13.855291 -0.000000 191.000000 0.000000
+ C 0 0.000000 1571.199902 13.855291 -1571.199902 0.000000 6.200000
+ S 0 0.000000 183.543868 -9.190005 191.000000 -10.000000
+ END$SEGS
diff --git a/app/lib/params/AccucraftFn3.cars b/app/lib/params/AccucraftFn3.cars
new file mode 100644
index 0000000..0d4b188
--- /dev/null
+++ b/app/lib/params/AccucraftFn3.cars
@@ -0,0 +1,329 @@
+CONTENTS=Accucraft Fn3 Scale Cars
+MANUF=Accucraft AMS
+SCALE=Fn3
+ORDER=#DRN
+# Manufacturer%Prototype%#:Part%D:Description%R:Road%Reporting Mark%Number
+#
+# Jackson & Sharp Coach ($275.00)
+# STK NO. RAILROAD
+#====================================
+TYPE=passenger
+COUPLERLENGTH=0.5
+PROTO=Jackson & Sharp Coach
+DESC=Jackson & Sharp Coach
+LENGTH=25.5
+WIDTH=5.0
+#
+PART=AM54-010BX%Bumble Bee Single Stripe%Undec%Undec
+PART=AM54-010GX%Dark Green%Undec%Undec
+PART=AM54-010RX%Red%Undec%Undec
+#
+PART=AM54-011A%Green%D&RGW%257
+PART=AM54-011B%Green%D&RGW%281
+PART=AM54-011C%Green%D&RGW%285
+PART=AM54-011D%Green%D&RGW%302
+#
+PART=AM54-012A%Red%RGS%253
+PART=AM54-012B%Red%RGS%254
+PART=AM54-012C%Red%RGS%255
+PART=AM54-012D%Red%RGS%258
+#
+PART=AM54-013A%Green%C&S%71
+PART=AM54-013B%Green%C&S%73
+PART=AM54-013C%Green%C&S%74
+PART=AM54-013D%Green%C&S%77
+#
+PART=AM54-014A%Red%D&RGW%274
+PART=AM54-014B%Red%D&RGW%284
+PART=AM54-014C%Red%D&RGW%306
+PART=AM54-014D%Red%D&RGW%309
+#
+PART=AM54-015A%Bumble Bee Double Stripe%D&RGW%280
+PART=AM54-015B%Bumble Bee Double Stripe%D&RGW%306
+PART=AM54-015C%Bumble Bee Double Stripe%D&RGW%320
+PART=AM54-015D%Bumble Bee Double Stripe%D&RGW%284
+#
+PART=AM54-016A%Bumble Bee Single Stripe%D&RGW%330
+PART=AM54-016B%Bumble Bee Single Stripe%D&RGW%331
+PART=AM54-016C%Bumble Bee Single Stripe%D&RGW%332
+PART=AM54-016D%Bumble Bee Single Stripe%D&RGW%333
+#
+# Jackson & Sharp Combine ($275.00)
+# STK NO. RAILROAD
+#====================================
+TYPE=passenger
+COUPLERLENGTH=0.5
+PROTO=Jackson & Sharp Combine
+DESC=Jackson & Sharp Combine
+LENGTH=25.5
+WIDTH=5.0
+#
+PART=AM54-020BX%Bumble Bee Yellow%Undec%Undec
+PART=AM54-020GX%Green%Undec%Undec
+PART=AM54-020RX%Red%Undec%Undec
+#
+PART=AM54-021A%Green%D&RGW%202
+PART=AM54-021B%Green%D&RGW%210
+PART=AM54-021C%Green%D&RGW%214
+PART=AM54-021D%Green%D&RGW%215
+#
+PART=AM54-022A%Red%RGS%200
+PART=AM54-022B%Red%RGS%201
+PART=AM54-022C%Red%RGS%202
+PART=AM54-022D%Red%RGS%203
+#
+PART=AM54-023A%Green%C&S%26
+PART=AM54-023B%Green%C&S%28
+PART=AM54-023C%Green%C&S%29
+PART=AM54-023D%Green%C&S%30
+#
+PART=AM54-024A%Red%D&RGW%208
+PART=AM54-024B%Red%D&RGW%209
+PART=AM54-024C%Red%D&RGW%211
+PART=AM54-024D%Red%D&RGW%212
+#
+PART=AM54-025A%Bumble Bee Double Stripe%D&RGW%212
+PART=AM54-025B%Bumble Bee Double Stripe%D&RGW%214
+PART=AM54-025C%Bumble Bee Double Stripe%D&RGW%240
+PART=AM54-025D%Bumble Bee Double Stripe%D&RGW%242
+#
+# Drop Bottom Gondola ($220.00)
+# STK NO. RAILROAD
+#====================================
+TYPE=freight
+COUPLERLENGTH=0.5
+PROTO=Gondola, Drop Bottom
+DESC=Drop-Bottom Gondola
+LENGTH=21.75
+WIDTH=5.5
+#
+PART=AM20-501X%Data Only%Undec%Data Only
+#
+PART=AM20-502A%Moffat Logo%D&RG%706
+PART=AM20-502B%Moffat Logo%D&RG%714
+PART=AM20-502C%Moffat Logo%D&RG%715
+PART=AM20-502D%Moffat Logo%D&RG%717
+#
+PART=AM20-503A%Moffat Logo%D&RG%721
+PART=AM20-503B%Moffat Logo%D&RG%726
+PART=AM20-503C%Moffat Logo%D&RG%728
+PART=AM20-503D%Moffat Logo%D&RG%733
+#
+PART=AM20-504A%Moffat Logo%D&RG%743
+PART=AM20-504B%Moffat Logo%D&RG%746
+PART=AM20-504C%Moffat Logo%D&RG%749
+PART=AM20-504D%Moffat Logo%D&RG%754
+#
+PART=AM20-505A%Flying Rio Grande%D&RGW%752
+PART=AM20-505B%Flying Rio Grande%D&RGW%758
+PART=AM20-505C%Flying Rio Grande%D&RGW%768
+PART=AM20-505D%Flying Rio Grande%D&RGW%771
+#
+PART=AM20-506A%Flying Rio Grande%D&RGW%778
+PART=AM20-506B%Flying Rio Grande%D&RGW%781
+PART=AM20-506C%Flying Rio Grande%D&RGW%785
+PART=AM20-506D%Flying Rio Grande%D&RGW%789
+#
+PART=AM20-507A%Flying Rio Grande%D&RGW%791
+PART=AM20-507B%Flying Rio Grande%D&RGW%794
+PART=AM20-507C%Flying Rio Grande%D&RGW%798
+PART=AM20-507D%Flying Rio Grande%D&RGW%799
+#
+# Box Car ($170.00)
+# STK NO. RAILROAD
+#====================================
+TYPE=freight
+COUPLERLENGTH=0.5
+PROTO=Box Car
+DESC=Box Car
+LENGTH=21.75
+WIDTH=5.0
+#
+PART=AM2201-04%Moffat Logo%D&RG%3491
+PART=AM2201-05%Moffat Logo%D&RG%3522
+PART=AM2201-06%Moffat Logo%D&RG%3046
+PART=AM2201-07%Moffat Logo%D&RG%3033
+PART=AM2201-08%Moffat Logo%D&RG%3186
+PART=AM2201-09%Moffat Logo%D&RG%3337
+PART=AM2201-10%Moffat Logo%D&RG%3415
+PART=AM2201-11%Moffat Logo%D&RG%3422
+PART=AM2201-12%Moffat Logo%D&RG%3449
+PART=AM2201-13%Moffat Logo%D&RG%3471
+PART=AM2201-14%Moffat Logo%D&RG%3473
+#
+PART=AM2201-16%%SPNG%33
+PART=AM2201-17%%SPNG%35
+#
+PART=AM2201-19%%RGS%8509
+PART=AM2201-20%%RGS%8510
+PART=AM2201-21%%RGS%8511
+PART=AM2201-22%%RGS%8512
+#
+PART=AM2201-23%Red%Navy Yard%210
+PART=AM2201-24%Red%Navy Yard%211
+PART=AM2201-25%Red%Navy Yard%215
+PART=AM2201-26%Red%Navy Yard%218
+#
+PART=AM2201-30%Flying Rio Grande%D&RGW%3083
+PART=AM2201-31%Flying Rio Grande%D&RGW%3240
+PART=AM2201-32%Flying Rio Grande%D&RGW%3328
+PART=AM2201-33%Flying Rio Grande%D&RGW%3339
+PART=AM2201-34%Flying Rio Grande%D&RGW%3446
+PART=AM2201-35%Flying Rio Grande%D&RGW%3543
+#
+PART=AM20-202A%%PCR%1508
+PART=AM20-202B%%PCR%1516
+PART=AM20-202C%%PCR%1524
+PART=AM20-202D%%PCR%1532
+#
+PART=AM20-203A%%NCORy%01001
+PART=AM20-203B%%NCORy%01005
+PART=AM20-203C%%NCORy%01009
+PART=AM20-203D%%NCORy%01017
+#
+PART=AM20-204A%%NCO%682
+PART=AM20-204B%%NCO%684
+PART=AM20-204C%%NCO%688
+PART=AM20-204D%%NCO%695
+#
+PART=AM20-206A%%C&C%5
+PART=AM20-206B%%C&C%7
+PART=AM20-206C%%C&C%9
+PART=AM20-206D%%C&C%11
+#
+# 3-Bay Hopper ($150.00)
+# STK NO. RAILROAD
+#====================================
+TYPE=freight
+COUPLERLENGTH=0.5
+PROTO=3-Bay Hopper
+DESC=3-Bay Hopper
+LENGTH=18.38
+WIDTH=4.75
+#
+PART=AM20-301X%Black%Undec%Undec
+#
+PART=AM20-302A%Black%EBT%870
+PART=AM20-302B%Black%EBT%872
+PART=AM20-302C%Black%EBT%877
+PART=AM20-302D%Black%EBT%885
+#
+PART=AM20-303A%Black%EBT%871
+PART=AM20-303B%Black%EBT%874
+PART=AM20-303C%Black%EBT%900
+PART=AM20-303D%Black%EBT%903
+#
+PART=AM20-304A%Black%EBT%908
+PART=AM20-304B%Black%EBT%919
+PART=AM20-304C%Black%EBT%933
+PART=AM20-304D%Black%EBT%942
+#
+PART=AM20-308A%Black%EBT%920
+PART=AM20-308B%Black%EBT%922
+PART=AM20-308C%Black%EBT%935
+PART=AM20-308D%Black%EBT%946
+#
+# Tank Car ($160.00)
+# STK NO. RAILROAD
+#====================================
+TYPE=freight
+COUPLERLENGTH=0.5
+PROTO=Framed Tank Car
+DESC=Tank Car
+LENGTH=19.5
+WIDTH=5.0
+#
+PART=AM2208-01%Silver Data Only%Undec%Undec
+PART=AM2208-02%Black Data Only%Undec%Undec
+#
+PART=AM2208-03%Conoco Silver%%8
+PART=AM2208-04%Conoco Silver%%9
+PART=AM2208-05%Shell Oil Black%%A-12
+PART=AM2208-06%Shell Oil Black%%A-13
+PART=AM2208-07%N.C.N.G. Black%%305
+PART=AM2208-08%N.C.N.G. Black%%1003
+PART=AM2208-09%Conoco Black%%8
+PART=AM2208-10%Conoco Black%%16
+#
+PART=AM31-450A%Associated Oil Co Silver%%301
+PART=AM31-450B%Associated Oil Co Silver%%302
+PART=AM31-450C%Associated Oil Co Silver%%1003
+PART=AM31-450D%Associated Oil Co Silver%%1004
+#
+# Long Logging Car ($110.00)
+# STK NO. RAILROAD
+#====================================
+TYPE=freight
+COUPLERLENGTH=0.5
+PROTO=Long Logging Car
+DESC=Logging Car
+LENGTH=23.5
+WIDTH=5.0
+#
+PART=AM32-150x%Long%Undec%Undec
+#
+PART=AM32-151A%Long%WSLC%11
+PART=AM32-151B%Long%WSLC%12
+PART=AM32-151C%Long%WSLC%13
+PART=AM32-151D%Long%WSLC%14
+#
+PART=AM32-152A%Long%WSLC%15
+PART=AM32-152B%Long%WSLC%16
+PART=AM32-152C%Long%WSLC%17
+PART=AM32-152D%Long%WSLC%18
+#
+PART=AM32-153A%Long%WSLC%19
+PART=AM32-153B%Long%WSLC%20
+PART=AM32-153C%Long%WSLC%21
+PART=AM32-153D%Long%WSLC%22
+#
+PART=AM32-154A%Long%Swayne%51
+PART=AM32-154B%Long%Swayne%52
+PART=AM32-154C%Long%Swayne%53
+PART=AM32-154D%Long%Swayne%54
+#
+PART=AM32-155A%Long%Swayne%55
+PART=AM32-155B%Long%Swayne%56
+PART=AM32-155C%Long%Swayne%57
+PART=AM32-155D%Long%Swayne%58
+#
+PART=AM32-156A%Long%Swayne%59
+PART=AM32-156B%Long%Swayne%60
+PART=AM32-156C%Long%Swayne%61
+PART=AM32-156D%Long%Swayne%62
+#
+# Short Logging Car ($100.00)
+# STK NO. RAILROAD
+#====================================
+TYPE=freight
+COUPLERLENGTH=0.5
+PROTO=Short Logging Car
+DESC=Logging Car
+LENGTH=19.0
+WIDTH=5.0
+#
+PART=AM2216-01%Short%Undec%Undec
+#
+PART=AM2216-02%Short%WSLC%35
+PART=AM2216-03%Short%WSLC%36
+PART=AM2216-04%Short%WSLC%37
+PART=AM2216-05%Short%WSLC%41
+PART=AM2216-06%Short%WSLC%42
+PART=AM2216-07%Short%WSLC%43
+#
+PART=AM32-164A%Short%Swayne%63
+PART=AM32-164B%Short%Swayne%64
+PART=AM32-164C%Short%Swayne%65
+PART=AM32-164D%Short%Swayne%66
+#
+PART=AM32-165A%Short%Swayne%67
+PART=AM32-165B%Short%Swayne%68
+PART=AM32-165C%Short%Swayne%69
+PART=AM32-165D%Short%Swayne%70
+#
+PART=AM32-166A%Short%Swayne%71
+PART=AM32-166B%Short%Swayne%72
+PART=AM32-166C%Short%Swayne%73
+PART=AM32-166D%Short%Swayne%74
+#
+# END
diff --git a/app/lib/params/AccucraftOn3.cars b/app/lib/params/AccucraftOn3.cars
new file mode 100644
index 0000000..f5aabdc
--- /dev/null
+++ b/app/lib/params/AccucraftOn3.cars
@@ -0,0 +1,36 @@
+CONTENTS=Accucraft On3 Scale Cars
+MANUF=Accucraft AMS
+SCALE=O
+ORDER=#RDN
+#
+# Jackson & Sharp Coach ($)
+# STK NO. % RAILROAD % ? % ROAD#
+#====================================
+TYPE=passenger
+COUPLERLENGTH=0.25
+PROTO=Passenger, Coach
+DESC=Jackson & Sharp Coach
+LENGTH=11.3
+WIDTH=2.1
+#
+PART=6103X%Bumble Bee Yellow%%Unlettered
+PART=6113X%Green
+PART=6123X%Red
+PART=6133X%D&RGW Green
+PART=6143X%RGS Red
+PART=6153X%C&S Green
+PART=6163X%D&RG Red
+PART=6173X%D&RGW Yellow Double Stripe
+#
+# Jackson & Sharp Combine ($)
+#STK NO. RAILROAD
+#====================================
+PROTO=Passenger, Combine
+DESC=Combine
+LENGTH=11.3
+WIDTH=2.1
+#
+PART=6103X%Bumble Bee Yellow%%Unlettered
+#
+#
+## End
diff --git a/app/lib/params/Any-CTC_panel.xtp b/app/lib/params/Any-CTC_panel.xtp
index 7b73cab..7c8f8d7 100644
--- a/app/lib/params/Any-CTC_panel.xtp
+++ b/app/lib/params/Any-CTC_panel.xtp
@@ -246,7 +246,7 @@ STRUCTURE * "Signals 2 Aspect Signal 2DS"
L 0 0.020000 -0.100000 0.000000 0.100000 0.000000
END
SUBCONTENTS Track Symbols - Straights
-TURNOUT * " 0.5"" Straight (adjustable to 6""" S"
+TURNOUT * " 0.5"" Straight (adjustable to 6) S"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 0.500000 0.000000 90.000000
@@ -254,7 +254,7 @@ TURNOUT * " 0.5"" Straight (adjustable to 6""" S"
S 16777215 0 0.000000 0.000000 0.500000 0.000000
L 0 0.080000 0.000000 0.000000 0.500000 0.000000
END
-TURNOUT * "Block Gap" BG"
+TURNOUT * "Block Gap BG"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 0.500000 0.000000 90.000000
@@ -264,48 +264,60 @@ TURNOUT * "Block Gap" BG"
END
SUBCONTENTS Track Symbols - Turnouts
-TURNOUT * "Turnout LH(GAP)" LHG"
- P "Normal" 1 0 2 0 3
+TURNOUT * "Turnout LH(GAP) LHG" 256
+# UseOldPaths - connection angle too large
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 1.000000 0.000000 90.000000
E 1.000000 0.500000 90.000000
- S 16777215 0 0.000000 0.000000 1.000000 0.000000
+ S 16777215 0 0.000000 0.000000 0.300000 0.000000
+ S 16777215 0 0.300000 0.000000 1.000000 0.000000
S 16777215 0 0.300000 0.000000 0.800000 0.500000
S 16777215 0 0.800000 0.500000 1.000000 0.500000
L 0 0.080000 0.050000 0.000000 0.950000 0.000000
L 0 0.080000 0.300000 0.000000 0.825000 0.525000
L 0 0.080000 0.800000 0.500000 0.950000 0.500000
END
-TURNOUT * "Turnout RH(GAP)" RHG"
- P "Normal" 1 0 2 0 3
+TURNOUT * "Turnout RH(GAP) RHG" 256
+# UseOldPaths - connection angle too large
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 1.000000 0.000000 90.000000
E 1.000000 -0.500000 90.000000
- S 16777215 0 0.000000 0.000000 1.000000 0.000000
+ S 16777215 0 0.000000 0.000000 0.300000 0.000000
+ S 16777215 0 0.300000 0.000000 1.000000 0.000000
S 16777215 0 0.300000 0.000000 0.800000 -0.500000
S 16777215 0 0.800000 -0.500000 1.000000 -0.500000
L 0 0.080000 0.050000 0.000000 0.950000 0.000000
L 0 0.080000 0.300000 0.000000 0.825000 -0.525000
L 0 0.080000 0.800000 -0.500000 0.950000 -0.500000
END
-TURNOUT * "Turnout LH" LH"
- P "Normal" 1 0 2 0 3
+TURNOUT * "Turnout LH LH" 256
+# UseOldPaths - connection angle too large
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 1.000000 0.000000 90.000000
E 1.000000 0.500000 90.000000
- S 16777215 0 0.000000 0.000000 1.000000 0.000000
+ S 16777215 0 0.000000 0.000000 0.300000 0.000000
+ S 16777215 0 0.300000 0.000000 1.000000 0.000000
S 16777215 0 0.300000 0.000000 0.800000 0.500000
S 16777215 0 0.800000 0.500000 1.000000 0.500000
L 0 0.080000 0.000000 0.000000 1.000000 0.000000
L 0 0.080000 0.300000 0.000000 0.825000 0.525000
L 0 0.080000 0.800000 0.500000 1.000000 0.500000
END
-TURNOUT * "Turnout RH" RH"
- P "Normal" 1 0 2 0 3
+TURNOUT * "Turnout RH RH" 256
+# UseOldPaths - connection angle too large
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
E 1.000000 0.000000 90.000000
E 1.000000 -0.500000 90.000000
- S 16777215 0 0.000000 0.000000 1.000000 0.000000
+ S 16777215 0 0.000000 0.000000 0.300000 0.000000
+ S 16777215 0 0.300000 0.000000 1.000000 0.000000
S 16777215 0 0.300000 0.000000 0.800000 -0.500000
S 16777215 0 0.800000 -0.500000 1.000000 -0.500000
L 0 0.080000 0.000000 0.000000 1.000000 0.000000
@@ -314,7 +326,7 @@ TURNOUT * "Turnout RH" RH"
END
SUBCONTENTS Track Symbols - Crossovers
-TURNOUT * "Crossover LH(GAP)" COLHG"
+TURNOUT * "Crossover LH(GAP) COLHG"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.000000 0.500000 270.000000
@@ -326,7 +338,7 @@ TURNOUT * "Crossover LH(GAP)" COLHG"
L 0 0.080000 0.250000 0.000000 0.750000 0.500000
L 0 0.080000 0.050000 0.500000 0.950000 0.500000
END
-TURNOUT * "Crossover RH(GAP)" CORHG"
+TURNOUT * "Crossover RH(GAP) CORHG"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.000000 -0.500000 270.000000
@@ -338,7 +350,7 @@ TURNOUT * "Crossover RH(GAP)" CORHG"
L 0 0.080000 0.250000 0.000000 0.750000 -0.500000
L 0 0.080000 0.050000 -0.500000 0.950000 -0.500000
END
-TURNOUT * "Crossover LH" COLH"
+TURNOUT * "Crossover LH COLH"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.000000 0.500000 270.000000
@@ -350,7 +362,7 @@ TURNOUT * "Crossover LH" COLH"
L 0 0.080000 0.250000 0.000000 0.750000 0.500000
L 0 0.080000 0.000000 0.500000 1.000000 0.500000
END
-TURNOUT * "Crossover RH" CORH"
+TURNOUT * "Crossover RH CORH"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.000000 -0.500000 270.000000
@@ -362,7 +374,7 @@ TURNOUT * "Crossover RH" CORH"
L 0 0.080000 0.250000 0.000000 0.750000 -0.500000
L 0 0.080000 0.000000 -0.500000 1.000000 -0.500000
END
-TURNOUT * "Dbl.Crossover(GAP)" DBLCOG"
+TURNOUT * "Dbl.Crossover(GAP) DBLCOG"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.000000 0.500000 270.000000
@@ -375,7 +387,7 @@ TURNOUT * "Dbl.Crossover(GAP)" DBLCOG"
L 0 0.080000 0.250000 0.500000 0.750000 0.000000
L 0 0.080000 0.050000 0.500000 0.950000 0.500000
END
-TURNOUT * "Dbl.Crossover" DBLCO"
+TURNOUT * "Dbl.Crossover DBLCO"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.000000 0.500000 270.000000
@@ -390,7 +402,7 @@ TURNOUT * "Dbl.Crossover" DBLCO"
END
SUBCONTENTS Track Symbols - Crossings
-TURNOUT * "90 Crossing" 90C"
+TURNOUT * "90 Crossing 90C"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.500000 0.000000 90.000000
@@ -401,7 +413,7 @@ TURNOUT * "90 Crossing" 90C"
L 0 0.080000 0.000000 0.000000 0.500000 0.000000
L 0 0.080000 0.250000 0.250000 0.250000 -0.250000
END
-TURNOUT * "45 Crossing" 45C"
+TURNOUT * "45 Crossing 45C"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.500000 0.000000 90.000000
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-MTB Switch Machines.xtp b/app/lib/params/Any-MTB Switch Machines.xtp
new file mode 100755
index 0000000..a1dc26f
--- /dev/null
+++ b/app/lib/params/Any-MTB Switch Machines.xtp
@@ -0,0 +1,220 @@
+CONTENTS MTB Switch Machine
+STRUCTURE * "MTB MP1 Switch Machine MP1"
+#Base
+ L 32768 0.020000 -0.590550 1.456691 0.590550 1.456691
+ L 32768 0.020000 -0.590550 0.742125 -0.590550 1.456691
+ L 32768 0.020000 0.590550 0.742125 0.590550 1.456691
+ L 32768 0.020000 -0.590550 0.157481 -0.590550 0.250000
+ L 32768 0.020000 0.590550 0.157481 0.590550 0.250000
+ L 32768 0.020000 -0.590550 0.157481 0.590550 0.157481
+#MountTab
+ L 32768 0.020000 -0.748770 0.742125 -0.590550 0.742125
+ A 32768 0.020000 0.078000 -0.748770 0.667125 270.000000 90.000000
+ L 32768 0.020000 -0.826770 0.667125 -0.826770 0.353415
+ A 32768 0.020000 0.078000 -0.748770 0.353415 188.797411 81.202589
+ L 32768 0.020000 -0.760699 0.276333 -0.590550 0.250000
+#MountTabSlot
+ A 32768 0.020000 0.049212 -0.708660 0.397638 90.000000 180.000000
+ L 32768 0.020000 -0.757873 0.397638 -0.757873 0.594488
+ L 32768 0.020000 -0.659447 0.397638 -0.659447 0.594488
+ A 32768 0.020000 0.049212 -0.708660 0.594488 270.000000 180.000000
+#MountTab
+ L 32768 0.020000 0.748770 0.742125 0.590550 0.742125
+ A 32768 0.020000 0.078000 0.748770 0.667125 0.000000 90.000000
+ L 32768 0.020000 0.826770 0.667125 0.826770 0.353415
+ A 32768 0.020000 0.078000 0.748770 0.353415 90.000000 81.202589
+ L 32768 0.020000 0.760699 0.276333 0.590550 0.250000
+#MountTabSlot
+ A 32768 0.020000 0.049212 0.708660 0.397638 90.000000 180.000000
+ L 32768 0.020000 0.757873 0.397638 0.757873 0.594488
+ L 32768 0.020000 0.659447 0.397638 0.659447 0.594488
+ A 32768 0.020000 0.049212 0.708660 0.594488 270.000000 180.000000
+#
+ L 32768 0.020000 -0.551180 0.078741 0.551180 0.078741
+ L 32768 0.020000 -0.551180 0.078741 -0.551180 0.157481
+ L 32768 0.020000 0.551180 0.078741 0.551180 0.157481
+#
+ L 32768 0.020000 -0.393700 0.000000 -0.196850 0.000000
+ L 32768 0.020000 -0.393700 0.078741 -0.393700 0.000000
+ L 32768 0.020000 0.196850 0.000000 0.393700 0.000000
+ L 32768 0.020000 0.393700 0.078741 0.393700 0.000000
+#
+ L 32768 0.020000 -0.196850 -0.078739 0.196850 -0.078739
+ L 32768 0.020000 -0.196850 -0.078739 -0.196850 0.078741
+ L 32768 0.020000 0.196850 -0.078739 0.196850 0.078741
+ A 32768 0.010000 0.019685 -0.098425 0.000000 0.000000 360.000000
+ A 32768 0.010000 0.019685 0.098425 0.000000 0.000000 360.000000
+#
+ L 32768 0.020000 -0.157480 -0.118109 0.157480 -0.118109
+ L 32768 0.020000 -0.157480 -0.078739 -0.157480 -0.118109
+ L 32768 0.020000 0.157480 -0.078739 0.157480 -0.118109
+#WiringConnector
+ L 32768 0.020000 -0.590550 1.417321 -0.629920 1.417321
+ L 32768 0.020000 -0.629920 1.417321 -0.629920 0.742125
+END
+STRUCTURE * "MTB MP5 Switch Machine MP5"
+#Base
+ L 32768 0.020000 -0.610235 1.574801 0.610235 1.574801
+ L 32768 0.020000 -0.610235 0.742125 -0.610235 1.574801
+ L 32768 0.020000 0.610235 0.742125 0.610235 1.574801
+ L 32768 0.020000 -0.610235 0.157481 -0.610235 0.250000
+ L 32768 0.020000 0.610235 0.157481 0.610235 0.250000
+ L 32768 0.020000 -0.610235 0.157481 0.610235 0.157481
+#MountTab
+ L 32768 0.020000 -0.768455 0.742125 -0.610235 0.742125
+ A 32768 0.020000 0.078000 -0.768455 0.667125 270.000000 90.000000
+ L 32768 0.020000 -0.846455 0.667125 -0.846455 0.353415
+ A 32768 0.020000 0.078000 -0.768455 0.353415 188.797411 81.202589
+ L 32768 0.020000 -0.780384 0.276333 -0.610235 0.250000
+#MountTabSlot
+ A 32768 0.020000 0.049212 -0.728345 0.397638 90.000000 180.000000
+ L 32768 0.020000 -0.777558 0.397638 -0.777558 0.594488
+ L 32768 0.020000 -0.679132 0.397638 -0.679132 0.594488
+ A 32768 0.020000 0.049212 -0.728345 0.594488 270.000000 180.000000
+#MountTab
+ L 32768 0.020000 0.768455 0.742125 0.610235 0.742125
+ A 32768 0.020000 0.078000 0.768455 0.667125 0.000000 90.000000
+ L 32768 0.020000 0.846455 0.667125 0.846455 0.353415
+ A 32768 0.020000 0.078000 0.768455 0.353415 90.000000 81.202589
+ L 32768 0.020000 0.780384 0.276333 0.610235 0.250000
+#MountTabSlot
+ A 32768 0.020000 0.049212 0.728345 0.397638 90.000000 180.000000
+ L 32768 0.020000 0.777558 0.397638 0.777558 0.594488
+ L 32768 0.020000 0.679132 0.397638 0.679132 0.594488
+ A 32768 0.020000 0.049212 0.728345 0.594488 270.000000 180.000000
+#
+ L 32768 0.020000 -0.551180 0.078741 0.551180 0.078741
+ L 32768 0.020000 -0.551180 0.078741 -0.551180 0.157481
+ L 32768 0.020000 0.551180 0.078741 0.551180 0.157481
+#
+ L 32768 0.020000 -0.393700 0.000000 -0.196850 0.000000
+ L 32768 0.020000 -0.393700 0.078741 -0.393700 0.000000
+ L 32768 0.020000 0.196850 0.000000 0.393700 0.000000
+ L 32768 0.020000 0.393700 0.078741 0.393700 0.000000
+#
+ L 32768 0.020000 -0.196850 -0.078739 0.196850 -0.078739
+ L 32768 0.020000 -0.196850 -0.078739 -0.196850 0.078741
+ L 32768 0.020000 0.196850 -0.078739 0.196850 0.078741
+ A 32768 0.010000 0.019685 -0.098425 0.000000 0.000000 360.000000
+ A 32768 0.010000 0.019685 0.098425 0.000000 0.000000 360.000000
+#
+ L 32768 0.020000 -0.157480 -0.118109 0.157480 -0.118109
+ L 32768 0.020000 -0.157480 -0.078739 -0.157480 -0.118109
+ L 32768 0.020000 0.157480 -0.078739 0.157480 -0.118109
+#WiringConnector
+ L 32768 0.020000 -0.846455 0.610236 -0.944880 0.610236
+ L 32768 0.020000 -0.944880 0.610236 -0.944880 1.476376
+ L 32768 0.020000 -0.944880 1.476376 -0.610235 1.476376
+END
+STRUCTURE * "MTB MP6 Switch Machine MP6"
+#Base
+ L 32768 0.020000 -0.610235 1.574801 0.610235 1.574801
+ L 32768 0.020000 -0.610235 0.742125 -0.610235 1.574801
+ L 32768 0.020000 0.610235 0.742125 0.610235 1.574801
+ L 32768 0.020000 -0.610235 0.157481 -0.610235 0.250000
+ L 32768 0.020000 0.610235 0.157481 0.610235 0.250000
+ L 32768 0.020000 -0.610235 0.157481 0.610235 0.157481
+#MountTab
+ L 32768 0.020000 -0.768455 0.742125 -0.610235 0.742125
+ A 32768 0.020000 0.078000 -0.768455 0.667125 270.000000 90.000000
+ L 32768 0.020000 -0.846455 0.667125 -0.846455 0.353415
+ A 32768 0.020000 0.078000 -0.768455 0.353415 188.797411 81.202589
+ L 32768 0.020000 -0.780384 0.276333 -0.610235 0.250000
+#MountTabSlot
+ A 32768 0.020000 0.049212 -0.728345 0.397638 90.000000 180.000000
+ L 32768 0.020000 -0.777558 0.397638 -0.777558 0.594488
+ L 32768 0.020000 -0.679132 0.397638 -0.679132 0.594488
+ A 32768 0.020000 0.049212 -0.728345 0.594488 270.000000 180.000000
+#MountTab
+ L 32768 0.020000 0.768455 0.742125 0.610235 0.742125
+ A 32768 0.020000 0.078000 0.768455 0.667125 0.000000 90.000000
+ L 32768 0.020000 0.846455 0.667125 0.846455 0.353415
+ A 32768 0.020000 0.078000 0.768455 0.353415 90.000000 81.202589
+ L 32768 0.020000 0.780384 0.276333 0.610235 0.250000
+#MountTabSlot
+ A 32768 0.020000 0.049212 0.728345 0.397638 90.000000 180.000000
+ L 32768 0.020000 0.777558 0.397638 0.777558 0.594488
+ L 32768 0.020000 0.679132 0.397638 0.679132 0.594488
+ A 32768 0.020000 0.049212 0.728345 0.594488 270.000000 180.000000
+#
+ L 32768 0.020000 -0.551180 0.078741 0.551180 0.078741
+ L 32768 0.020000 -0.551180 0.078741 -0.551180 0.157481
+ L 32768 0.020000 0.551180 0.078741 0.551180 0.157481
+#
+ L 32768 0.020000 -0.393700 0.000000 -0.196850 0.000000
+ L 32768 0.020000 -0.393700 0.078741 -0.393700 0.000000
+ L 32768 0.020000 0.196850 0.000000 0.393700 0.000000
+ L 32768 0.020000 0.393700 0.078741 0.393700 0.000000
+#
+ L 32768 0.020000 -0.196850 -0.078739 0.196850 -0.078739
+ L 32768 0.020000 -0.196850 -0.078739 -0.196850 0.078741
+ L 32768 0.020000 0.196850 -0.078739 0.196850 0.078741
+ A 32768 0.010000 0.019685 -0.098425 0.000000 0.000000 360.000000
+ A 32768 0.010000 0.019685 0.098425 0.000000 0.000000 360.000000
+#
+ L 32768 0.020000 -0.157480 -0.118109 0.157480 -0.118109
+ L 32768 0.020000 -0.157480 -0.078739 -0.157480 -0.118109
+ L 32768 0.020000 0.157480 -0.078739 0.157480 -0.118109
+#WiringConnector
+ L 32768 0.020000 -0.846455 0.610236 -0.944880 0.610236
+ L 32768 0.020000 -0.944880 0.610236 -0.944880 1.476376
+ L 32768 0.020000 -0.944880 1.476376 -0.610235 1.476376
+END
+STRUCTURE * "MTB MP7 Switch Machine MP7"
+ X pier 0.000000 ""
+#Base
+ L 32768 0.020000 -0.610235 1.574801 0.610235 1.574801
+ L 32768 0.020000 -0.610235 0.742125 -0.610235 1.574801
+ L 32768 0.020000 0.610235 0.742125 0.610235 1.574801
+ L 32768 0.020000 -0.610235 0.157481 -0.610235 0.250000
+ L 32768 0.020000 0.610235 0.157481 0.610235 0.250000
+ L 32768 0.020000 -0.610235 0.157481 0.610235 0.157481
+#MountTab
+ L 32768 0.020000 -0.768455 0.742125 -0.610235 0.742125
+ A 32768 0.020000 0.078000 -0.768455 0.667125 270.000000 90.000000
+ L 32768 0.020000 -0.846455 0.667125 -0.846455 0.353415
+ A 32768 0.020000 0.078000 -0.768455 0.353415 188.797411 81.202589
+ L 32768 0.020000 -0.780384 0.276333 -0.610235 0.250000
+#MountTabSlot
+ A 32768 0.020000 0.049212 -0.728345 0.397638 90.000000 180.000000
+ L 32768 0.020000 -0.777558 0.397638 -0.777558 0.594488
+ L 32768 0.020000 -0.679132 0.397638 -0.679132 0.594488
+ A 32768 0.020000 0.049212 -0.728345 0.594488 270.000000 180.000000
+#MountTab
+ L 32768 0.020000 0.768455 0.742125 0.610235 0.742125
+ A 32768 0.020000 0.078000 0.768455 0.667125 0.000000 90.000000
+ L 32768 0.020000 0.846455 0.667125 0.846455 0.353415
+ A 32768 0.020000 0.078000 0.768455 0.353415 90.000000 81.202589
+ L 32768 0.020000 0.780384 0.276333 0.610235 0.250000
+#MountTabSlot
+ A 32768 0.020000 0.049212 0.728345 0.397638 90.000000 180.000000
+ L 32768 0.020000 0.777558 0.397638 0.777558 0.594488
+ L 32768 0.020000 0.679132 0.397638 0.679132 0.594488
+ A 32768 0.020000 0.049212 0.728345 0.594488 270.000000 180.000000
+#
+ L 32768 0.020000 -0.551180 0.078741 0.551180 0.078741
+ L 32768 0.020000 -0.551180 0.078741 -0.551180 0.157481
+ L 32768 0.020000 0.551180 0.078741 0.551180 0.157481
+#
+ L 32768 0.020000 -0.393700 0.000000 -0.196850 0.000000
+ L 32768 0.020000 -0.393700 0.078741 -0.393700 0.000000
+ L 32768 0.020000 0.196850 0.000000 0.393700 0.000000
+ L 32768 0.020000 0.393700 0.078741 0.393700 0.000000
+#
+ L 32768 0.020000 -0.196850 -0.078739 0.196850 -0.078739
+ L 32768 0.020000 -0.196850 -0.078739 -0.196850 0.078741
+ L 32768 0.020000 0.196850 -0.078739 0.196850 0.078741
+ A 32768 0.010000 0.019685 -0.098425 0.000000 0.000000 360.000000
+ A 32768 0.010000 0.019685 0.098425 0.000000 0.000000 360.000000
+#
+ L 32768 0.020000 -0.157480 -0.118109 0.157480 -0.118109
+ L 32768 0.020000 -0.157480 -0.078739 -0.157480 -0.118109
+ L 32768 0.020000 0.157480 -0.078739 0.157480 -0.118109
+#WiringConnector
+ L 32768 0.020000 -0.846455 0.610236 -0.944880 0.610236
+ L 32768 0.020000 -0.944880 0.610236 -0.944880 1.476376
+ L 32768 0.020000 -0.944880 1.476376 -0.610235 1.476376
+END
+
+
+
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/BrickTracks(Lego Track).xtp b/app/lib/params/BrickTracks(Lego Track).xtp
new file mode 100644
index 0000000..940d1ac
--- /dev/null
+++ b/app/lib/params/BrickTracks(Lego Track).xtp
@@ -0,0 +1,75 @@
+CONTENTS BrickTracks (Lego) Track Components
+
+SUBCONTENTS BrickTracks (Lego) Track - Straight Track
+TURNOUT LEGO "BrickTracks(Lego) Straight Track (S1.6/12.8mm) S1.6"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.503937 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.503937 0.000000
+END
+TURNOUT LEGO "BrickTracks(Lego) Straight Track (S4/32mm) S4"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.259843 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.259843 0.000000
+END
+TURNOUT LEGO "BrickTracks(Lego) Straight Track (S8/64mm) S8"
+ 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
+END
+
+
+SUBCONTENTS BrickTracks (Lego) Track - Curve Track
+TURNOUT LEGO "BrickTracks(Lego) Curve Track R56/448mm 22.5d R56"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.749692 -1.342597 112.500000
+ C 0 0.000000 17.637795 0.000000 -17.637795 0.000000 22.500000
+END
+TURNOUT LEGO "BrickTracks(Lego) Curve Track R72/576mm 11.25d R72.5"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.424095 -0.435735 101.250000
+ C 0 0.000000 22.677165 0.000000 -22.677165 0.000000 11.250000
+END
+TURNOUT LEGO "BrickTracks(Lego) Curve Track R88/704mm 11.25d R88"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.407228 -0.532565 101.250000
+ C 0 0.000000 27.716535 0.000000 -27.716535 0.000000 11.250000
+END
+TURNOUT LEGO "BrickTracks(Lego) Curve Track R104/832mm 11.25d R104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.390360 -0.629396 101.250000
+ C 0 0.000000 32.755906 0.000000 -32.755906 0.000000 11.250000
+END
+TURNOUT LEGO "BrickTracks(Lego) Curve Track R120/960mm 11.25d R120"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.373492 -0.726226 101.250000
+ C 0 0.000000 37.795276 0.000000 -37.795276 0.000000 11.250000
+END
+
+
+SUBCONTENTS BrickTracks (Lego) Track - Turnouts
+TURNOUT LEGO "BrickTracks(Lego) Lefthand Switch S40/R104 P40-LH"
+ P "P0" 1
+ P "P1" 2
+ E 0.000000 0.000000 270.000000
+ E 12.598425 0.000000 90.000000
+ E 12.535142 2.493395 67.500000
+ S 0 0.000000 0.000000 0.000000 12.598425 0.000000
+ C 0 0.000000 32.755906 0.000000 32.755906 157.500000 22.500000
+END
+TURNOUT LEGO "BrickTracks(Lego) Righthand Switch S40/R104 P40-RH"
+ P "P0" 1
+ P "P1" 2
+ E 0.000000 0.000000 270.000000
+ E 12.598425 0.000000 90.000000
+ E 12.535142 -2.493395 112.500000
+ S 0 0.000000 0.000000 0.000000 12.598425 0.000000
+ C 0 0.000000 32.755906 0.000000 -32.755906 0.000000 22.500000
+END
diff --git a/app/lib/params/BrioWoodTrack.xtp b/app/lib/params/BrioWoodTrack.xtp
new file mode 100644
index 0000000..aa53a11
--- /dev/null
+++ b/app/lib/params/BrioWoodTrack.xtp
@@ -0,0 +1,990 @@
+CONTENTS Brio Track - O55
+SUBCONTENTS Brio Track - Straight Tracks
+TURNOUT O55 "Brio Track Str. Track 54mm A2-B2-C2"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.125984 0.000000 90.000000
+ S 16777215 0.000000 0.000000 0.000000 2.125984 0.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 2.125984 0.787402 0
+ L3 0 0.030000 2.125984 0.787402 0 2.125984 -0.787402 0
+ L3 0 0.030000 2.125984 -0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 2.125984 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 2.125984 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 2.125984 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 2.125984 -0.629921 0
+END
+TURNOUT O55 "Brio Track Str. Track 72mm A3-B3-C3"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.834645 0.000000 90.000000
+ S 16777215 0.000000 0.000000 0.000000 2.834645 0.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 2.834645 0.787402 0
+ L3 0 0.030000 2.834645 0.787402 0 2.834645 -0.787402 0
+ L3 0 0.030000 2.834645 -0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 2.834645 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 2.834645 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 2.834645 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 2.834645 -0.629921 0
+END
+TURNOUT O55 "Brio Track Str. Track 108mm A1-B1-C1"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.251969 0.000000 90.000000
+ S 16777215 0.000000 0.000000 0.000000 4.251969 0.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 4.251969 0.787402 0
+ L3 0 0.030000 4.251969 0.787402 0 4.251969 -0.787402 0
+ L3 0 0.030000 4.251969 -0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 4.251969 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 4.251969 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 4.251969 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 4.251969 -0.629921 0
+END
+TURNOUT O55 "Brio Track Str. Track 144mm A-B-C"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.669291 0.000000 90.000000
+ S 16777215 0.000000 0.000000 0.000000 5.669291 0.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 5.669291 0.787402 0
+ L3 0 0.030000 5.669291 0.787402 0 5.669291 -0.787402 0
+ L3 0 0.030000 5.669291 -0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 -0.629921 0
+END
+TURNOUT O55 "Brio Track Str. Track 216mm D"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.503937 0.000000 90.000000
+ S 16777215 0.000000 0.000000 0.000000 8.503937 0.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 8.503937 0.787402 0
+ L3 0 0.030000 8.503937 0.787402 0 8.503937 -0.787402 0
+ L3 0 0.030000 8.503937 -0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 8.503937 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 8.503937 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 8.503937 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 8.503937 -0.629921 0
+END
+
+
+SUBCONTENTS Brio Track - Double Straight Tracks
+TURNOUT O55 "Brio Track Dbl. Str. Track 216mm K"
+ P "Normal" 1 0 2
+ E 0.000000 0.905512 270.000000
+ E 0.000000 -0.905512 270.000000
+ E 8.503937 0.905512 90.000000
+ E 8.503937 -0.905512 90.000000
+ S 16777215 0.000000 0.000000 0.905512 8.503937 0.905512
+ S 16777215 0.000000 0.000000 -0.905512 8.503937 -0.905512
+#Outlines
+ L3 0 0.030000 0.000000 1.692914 0 8.503937 1.692914 0
+ L3 0 0.030000 8.503937 1.692914 0 8.503937 -1.692914 0
+ L3 0 0.030000 8.503937 -1.692914 0 0.000000 -1.692914 0
+ L3 0 0.030000 0.000000 -1.692914 0 0.000000 1.692914 0
+#Slots
+ L3 0 0.030000 0.000000 1.535433 0 8.503937 1.535433 0
+ L3 0 0.030000 0.000000 1.299213 0 8.503937 1.299213 0
+ L3 0 0.030000 0.000000 0.511811 0 8.503937 0.511811 0
+ L3 0 0.030000 0.000000 0.275591 0 8.503937 0.275591 0
+ L3 0 0.030000 0.000000 -0.275591 0 8.503937 -0.275591 0
+ L3 0 0.030000 0.000000 -0.511811 0 8.503937 -0.511811 0
+ L3 0 0.030000 0.000000 -1.299213 0 8.503937 -1.299213 0
+ L3 0 0.030000 0.000000 -1.535433 0 8.503937 -1.535433 0
+END
+TURNOUT O55 "Brio Track Dbl. Str. Track 216mm K1"
+ 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.905512 270.000000
+ E 0.000000 -0.905512 270.000000
+ E 8.503937 0.905512 90.000000
+ E 8.503937 -0.905512 90.000000
+ S 16777215 0.000000 0.000000 0.905512 1.809423 0.905512
+ S 16777215 0.000000 1.809423 0.905512 6.694514 0.905512
+ S 16777215 0.000000 6.694514 0.905512 8.503937 0.905512
+ S 16777215 0.000000 0.000000 -0.905512 1.809423 -0.905512
+ S 16777215 0.000000 1.809423 -0.905512 6.694514 -0.905512
+ S 16777215 0.000000 6.694514 -0.905512 8.503937 -0.905512
+ C 16777215 0.000000 3.169192 1.809423 -2.263680 0.000076 29.286834
+ S 16777215 0.000000 3.359734 0.500432 5.144203 -0.500432
+ C 16777215 0.000000 -3.169192 6.694514 2.263680 180.000076 29.286834
+ C 16777215 0.000000 -3.169192 1.809423 2.263680 150.713242 29.286834
+ S 16777215 0.000000 3.359734 -0.500432 5.144203 0.500432
+ C 16777215 0.000000 3.169192 6.694514 -2.263680 330.713242 29.286834
+#Outlines
+ L3 0 0.030000 0.000000 1.692914 0 8.503937 1.692914 0
+ L3 0 0.030000 8.503937 1.692914 0 8.503937 -1.692914 0
+ L3 0 0.030000 8.503937 -1.692914 0 0.000000 -1.692914 0
+ L3 0 0.030000 0.000000 -1.692914 0 0.000000 1.692914 0
+#Slots
+ L3 0 0.030000 0.000000 1.535433 0 8.503937 1.535433 0
+ L3 0 0.030000 0.000000 1.299213 0 8.503937 1.299213 0
+ L3 0 0.030000 0.000000 0.511811 0 8.503937 0.511811 0
+ L3 0 0.030000 0.000000 0.275591 0 8.503937 0.275591 0
+ L3 0 0.030000 0.000000 -0.275591 0 8.503937 -0.275591 0
+ L3 0 0.030000 0.000000 -0.511811 0 8.503937 -0.511811 0
+ L3 0 0.030000 0.000000 -1.299213 0 8.503937 -1.299213 0
+ L3 0 0.030000 0.000000 -1.535433 0 8.503937 -1.535433 0
+END
+
+
+SUBCONTENTS Brio Track - Single Curve Tracks
+TURNOUT O55 "Brio Track Crv. Track 88mm E1"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.006596 -1.245373 135.000000
+ C 16777215 0.000000 4.251969 0.000000 -4.251969 0.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 2.449819 -1.802150 0 3.563373 -0.688596 0
+ A3 0 0.030000 3.464567 0.000000 -4.251969 0 0.000000 45.000000
+ A3 0 0.030000 5.039370 0.000000 -4.251969 0 0.000000 45.000000
+#Slots
+ A3 0 0.030000 3.622047 0.000000 -4.251969 0 0.000000 45.000000
+ A3 0 0.030000 3.858268 0.000000 -4.251969 0 0.000000 45.000000
+ A3 0 0.030000 4.645669 0.000000 -4.251969 0 0.000000 45.000000
+ A3 0 0.030000 4.881890 0.000000 -4.251969 0 0.000000 45.000000
+END
+TURNOUT O55 "Brio Track Crv. Track 182mm E"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.623448 -2.329308 135.000000
+ C 16777215 0.000000 7.952756 0.000000 -7.952756 0.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 5.066671 -2.886085 0 6.180225 -1.772531 0
+ A3 0 0.030000 7.165354 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.740157 0.000000 -7.952756 0 0.000000 45.000000
+#Slots
+ A3 0 0.030000 7.322835 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 7.559055 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.346457 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.582677 0.000000 -7.952756 0 0.000000 45.000000
+END
+
+
+SUBCONTENTS Brio Track - Double Curve Tracks
+TURNOUT O55 "Brio Track Crv. Track 88mm EE1"
+ P "Normal" 1 0 2
+ E 0.000000 0.905512 270.000000
+ E 3.006596 -2.150885 135.000000
+ E 0.000000 -0.905512 270.000000
+ E 4.287183 -0.870297 135.000000
+ C 16777215 0.000000 4.251969 0.000000 -5.157480 0.000000 45.000000
+ C 16777215 0.000000 6.062992 0.000000 -5.157480 0.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 1.692913 0 0.000000 -1.692913 0
+ L3 0 0.030000 2.449819 -2.707662 0 4.843960 -0.313520 0
+ A3 0 0.030000 3.464567 0.000000 -5.157480 0 0.000000 45.000000
+ A3 0 0.030000 6.850394 0.000000 -5.157480 0 0.000000 45.000000
+#Slots
+ A3 0 0.030000 3.622047 0.000000 -5.157480 0 0.000000 45.000000
+ A3 0 0.030000 3.858268 0.000000 -5.157480 0 0.000000 45.000000
+ A3 0 0.030000 4.645669 0.000000 -5.157480 0 0.000000 45.000000
+ A3 0 0.030000 4.881890 0.000000 -5.157480 0 0.000000 45.000000
+ A3 0 0.030000 5.433071 0.000000 -5.157480 0 0.000000 45.000000
+ A3 0 0.030000 5.669291 0.000000 -5.157480 0 0.000000 45.000000
+ A3 0 0.030000 6.456693 0.000000 -5.157480 0 0.000000 45.000000
+ A3 0 0.030000 6.692913 0.000000 -5.157480 0 0.000000 45.000000
+END
+TURNOUT O55 "Brio Track Crv. Track 182mm EE"
+ P "Normal" 1 0 2
+ E 0.000000 0.905512 270.000000
+ E 5.623448 -3.234820 135.000000
+ E 0.000000 -0.905512 270.000000
+ E 6.904035 -1.954233 135.000000
+ C 16777215 0.000000 7.952756 0.000000 -8.858268 0.000000 45.000000
+ C 16777215 0.000000 9.763780 0.000000 -8.858268 0.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 1.692913 0 0.000000 -1.692913 0
+ L3 0 0.030000 5.066671 -3.791597 0 7.460812 -1.397456 0
+ A3 0 0.030000 7.165354 0.000000 -8.858268 0 0.000000 45.000000
+ A3 0 0.030000 10.551181 0.000000 -8.858268 0 0.000000 45.000000
+#Slots
+ A3 0 0.030000 7.322835 0.000000 -8.858268 0 0.000000 45.000000
+ A3 0 0.030000 7.559055 0.000000 -8.858268 0 0.000000 45.000000
+ A3 0 0.030000 8.346457 0.000000 -8.858268 0 0.000000 45.000000
+ A3 0 0.030000 8.582677 0.000000 -8.858268 0 0.000000 45.000000
+ A3 0 0.030000 9.133858 0.000000 -8.858268 0 0.000000 45.000000
+ A3 0 0.030000 9.370079 0.000000 -8.858268 0 0.000000 45.000000
+ A3 0 0.030000 10.157480 0.000000 -8.858268 0 0.000000 45.000000
+ A3 0 0.030000 10.393701 0.000000 -8.858268 0 0.000000 45.000000
+END
+
+
+SUBCONTENTS Brio Track - Misc Tracks
+TURNOUT O55 "Brio Track Buffer Stops 40mm R/S"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 16777215 0.000000 0.000000 0.000000 0.900000 0.000000
+#Buffer
+ L3 8424071 0.787402 0.787402 0.787402 0 0.787402 -0.787402 0
+ L3 0 0.050000 0.393701 0.787402 0 0.393701 -0.787402 0
+ L3 0 0.050000 1.181102 0.787402 0 1.181102 -0.787402 0
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ L3 0 0.030000 0.000000 0.787402 0 1.574803 0.787402 0
+ L3 0 0.030000 1.574803 0.787402 0 1.574803 -0.787402 0
+ L3 0 0.030000 1.574803 -0.787402 0 0.000000 -0.787402 0
+END
+TURNOUT O55 "Brio Track Ramp Track 54mm U/V"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 16777215 0.000000 0.000000 0.000000 2.125984 0.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 2.125984 0.787402 0
+ L3 0 0.030000 2.125984 0.787402 0 2.125984 -0.787402 0
+ L3 0 0.030000 2.125984 -0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 2.125984 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 2.125984 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 2.125984 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 2.125984 -0.629921 0
+END
+
+
+SUBCONTENTS Brio Track - Track Switches
+TURNOUT O55 "Brio Track Switching Track F/G"
+ P "Normal" 1 3 5 4 2
+ P "Route" 1 7 9 8 6
+ E 0.000000 0.000000 270.000000
+ E 5.669291 0.905512 90.000000
+ E 5.669291 -0.905512 90.000000
+ S 16777215 0.000000 0.000000 0.000000 0.300000 0.000000
+ S 16777215 0.000000 5.369291 0.905512 5.669291 0.905512
+ C 16777215 0.000000 -6.000000 0.300000 6.000000 165.383320 14.616680
+ C 16777215 0.000000 6.000000 5.369291 -5.094488 345.383320 14.616680
+ S 16777215 0.000000 1.814106 0.194186 3.855185 0.711326
+ S 16777215 0.000000 5.369291 -0.905512 5.669291 -0.905512
+ C 16777215 0.000000 6.000000 0.300000 -6.000000 0.000000 14.616680
+ C 16777215 0.000000 -6.000000 5.369291 5.094488 180.000000 14.616680
+ S 16777215 0.000000 1.814106 -0.194186 3.855185 -0.711326
+# S 16777215 0.000000 0.000000 0.000000 5.669291 0.905512
+# S 16777215 0.000000 0.000000 0.000000 5.669291 -0.905512
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ L3 0 0.030000 0.000000 0.787402 0 5.669291 1.692913 0
+ L3 0 0.030000 5.669291 1.692913 0 5.669291 -1.692913 0
+ L3 0 0.030000 5.669291 -1.692913 0 0.000000 -0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 1.535433 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 1.299213 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 0.511811 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 0.275591 0
+
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 -0.275591 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 -0.511811 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 -1.299213 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 -1.535433 0
+END
+TURNOUT O55 "Brio Track Parallel Switch F1/G1"
+ P "Normal" 1
+ P "Route" 2 3 4
+ E 0.000000 0.000000 270.000000
+ E 5.669291 0.000000 90.000000
+ E 5.669291 1.811024 90.000000
+ S 16777215 0.000000 0.000000 0.000000 5.669291 0.000000
+ C 16777215 0.000000 -4.251969 0.000000 4.251969 153.916728 26.083272
+ S 16777215 0.000000 1.869493 0.433038 3.799799 1.377986
+ C 16777215 0.000000 4.251969 5.669291 -2.440945 333.916728 26.083272
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ A3 0 0.030000 3.464567 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 1.523290 1.140247 0 3.453596 2.085195 0
+ A3 0 0.030000 5.039370 5.669291 -2.440945 0 333.916728 26.083272
+ L3 0 0.030000 5.669291 2.598425 0 5.669291 -0.787402 0
+ L3 0 0.030000 5.669291 -0.787402 0 0.000000 -0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 -0.629921 0
+ A3 0 0.030000 3.622047 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 1.592531 0.998805 0 3.522837 1.943754 0
+ A3 0 0.030000 4.881890 5.669291 -2.440945 0 333.916728 26.083272
+ A3 0 0.030000 3.858268 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 1.696391 0.786642 0 3.626698 1.731591 0
+ A3 0 0.030000 4.645669 5.669291 -2.440945 0 333.916728 26.083272
+ A3 0 0.030000 4.645669 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 2.042594 0.079433 0 3.972900 1.024381 0
+ A3 0 0.030000 3.858268 5.669291 -2.440945 0 333.916728 26.083272
+ A3 0 0.030000 4.881890 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 2.146454 -0.132730 0 4.076761 0.812219 0
+ A3 0 0.030000 3.622047 5.669291 -2.440945 0 333.916728 26.083272
+END
+TURNOUT O55 "Brio Track 3-Way Parallel Switch F2/G2"
+ P "Normal" 1
+ P "Route" 2 3 4
+ P "Route" 5 6 7
+ E 0.000000 0.000000 270.000000
+ E 5.669291 0.000000 90.000000
+ E 5.669291 1.811024 90.000000
+ E 5.669291 -1.811024 90.000000
+ S 16777215 0.000000 0.000000 0.000000 5.669291 0.000000
+ C 16777215 0.000000 -4.251969 0.000000 4.251969 153.916728 26.083272
+ S 16777215 0.000000 1.869493 0.433038 3.799799 1.377986
+ C 16777215 0.000000 4.251969 5.669291 -2.440945 333.916728 26.083272
+ C 16777215 0.000000 4.251969 0.000000 -4.251969 0.000000 26.083272
+ S 16777215 0.000000 1.869493 -0.433038 3.799799 -1.377986
+ C 16777215 0.000000 -4.251969 5.669291 2.440945 180.000000 26.083272
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ A3 0 0.030000 3.464567 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 1.523290 1.140247 0 3.453596 2.085195 0
+ A3 0 0.030000 5.039370 5.669291 -2.440945 0 333.916728 26.083272
+ L3 0 0.030000 5.669291 2.598425 0 5.669291 -2.598425 0
+ A3 0 0.030000 3.464567 0.000000 -4.251969 0 0.000000 26.083272
+ L3 0 0.030000 1.523290 -1.140247 0 3.453596 -2.085195 0
+ A3 0 0.030000 5.039370 5.669291 2.440945 0 180.000000 26.083272
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 -0.629921 0
+ A3 0 0.030000 3.622047 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 1.592531 0.998805 0 3.522837 1.943754 0
+ A3 0 0.030000 4.881890 5.669291 -2.440945 0 333.916728 26.083272
+ A3 0 0.030000 3.858268 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 1.696391 0.786642 0 3.626698 1.731591 0
+ A3 0 0.030000 4.645669 5.669291 -2.440945 0 333.916728 26.083272
+ A3 0 0.030000 4.645669 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 2.042594 0.079433 0 3.972900 1.024381 0
+ A3 0 0.030000 3.858268 5.669291 -2.440945 0 333.916728 26.083272
+ A3 0 0.030000 4.881890 0.000000 4.251969 0 153.916728 26.083272
+ L3 0 0.030000 2.146454 -0.132730 0 4.076761 0.812219 0
+ A3 0 0.030000 3.622047 5.669291 -2.440945 0 333.916728 26.083272
+ A3 0 0.030000 3.622047 0.000000 -4.251969 0 0.000000 26.083272
+ L3 0 0.030000 1.592531 -0.998805 0 3.522837 -1.943754 0
+ A3 0 0.030000 4.881890 5.669291 2.440945 0 180.000000 26.083272
+ A3 0 0.030000 3.858268 0.000000 -4.251969 0 0.000000 26.083272
+ L3 0 0.030000 1.696391 -0.786642 0 3.626698 -1.731591 0
+ A3 0 0.030000 4.645669 5.669291 2.440945 0 180.000000 26.083272
+ A3 0 0.030000 4.645669 0.000000 -4.251969 0 0.000000 26.083272
+ L3 0 0.030000 2.042594 -0.079433 0 3.972900 -1.024381 0
+ A3 0 0.030000 3.858268 5.669291 2.440945 0 180.000000 26.083272
+ A3 0 0.030000 4.881890 0.000000 -4.251969 0 0.000000 26.083272
+ L3 0 0.030000 2.146454 0.132730 0 4.076761 -0.812219 0
+ A3 0 0.030000 3.622047 5.669291 2.440945 0 180.000000 26.083272
+END
+TURNOUT O55 "Brio Track Double Curve Switch I/J"
+ P "Normal" 1
+ P "Route R" 2
+ P "Route L" 3
+ E 0.000000 0.000000 270.000000
+ E 5.669291 0.000000 90.000000
+ E 5.623448 -2.329308 135.000000
+ E 5.623448 2.329308 45.000000
+ S 16777215 0.000000 0.000000 0.000000 5.669291 0.000000
+ C 16777215 0.000000 7.952756 0.000000 -7.952756 0.000000 45.000000
+ C 16777215 0.000000 7.952756 0.000000 7.952756 135.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ A3 0 0.030000 7.165354 0.000000 7.952756 0 135.000000 45.000000
+ L3 0 0.030000 5.066671 2.886085 0 6.180225 1.772531 0
+ L3 0 0.030000 6.180225 1.772531 0 6.180225 0.787402 0
+ L3 0 0.030000 6.180225 0.787402 0 5.669291 0.787402 0
+ L3 0 0.030000 5.669291 0.787402 0 5.669291 -0.787402 0
+ L3 0 0.030000 5.669291 -0.787402 0 6.180225 -0.787402 0
+ L3 0 0.030000 6.180225 -0.787402 0 6.180225 -1.772531 0
+ L3 0 0.030000 5.066671 -2.886085 0 6.180225 -1.772531 0
+ A3 0 0.030000 7.165354 0.000000 -7.952756 0 0.000000 45.000000
+#Slots
+ A3 0 0.030000 7.322835 0.000000 7.952756 0 135.000000 45.000000
+ A3 0 0.030000 7.559055 0.000000 7.952756 0 135.000000 45.000000
+ A3 0 0.030000 8.346457 0.000000 7.952756 0 135.000000 45.000000
+ A3 0 0.030000 8.582677 0.000000 7.952756 0 135.000000 45.000000
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 -0.629921 0
+ A3 0 0.030000 7.322835 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 7.559055 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.346457 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.582677 0.000000 -7.952756 0 0.000000 45.000000
+END
+TURNOUT O55 "Brio Track Curve Switch L/M-L1/M1"
+ P "Normal" 1
+ P "ROute" 2
+ E 0.000000 0.000000 270.000000
+ E 5.669291 0.000000 90.000000
+ E 5.623448 -2.329308 135.000000
+ S 16777215 0.000000 0.000000 0.000000 5.669291 0.000000
+ C 16777215 0.000000 7.952756 0.000000 -7.952756 0.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ L3 0 0.030000 0.000000 0.787402 0 5.669291 0.787402 0
+ L3 0 0.030000 5.669291 0.787402 0 5.669291 -0.787402 0
+ L3 0 0.030000 5.669291 -0.787402 0 6.180225 -0.787402 0
+ L3 0 0.030000 6.180225 -0.787402 0 6.180225 -1.772531 0
+ L3 0 0.030000 5.066671 -2.886085 0 6.180225 -1.772531 0
+ A3 0 0.030000 7.165354 0.000000 -7.952756 0 0.000000 45.000000
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 -0.629921 0
+ A3 0 0.030000 7.322835 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 7.559055 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.346457 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.582677 0.000000 -7.952756 0 0.000000 45.000000
+END
+TURNOUT O55 "Brio Track Mechanical Switch L1/M1"
+ P "Normal" 1
+ P "ROute" 2
+ E 0.000000 0.000000 270.000000
+ E 5.669291 0.000000 90.000000
+ E 5.623448 -2.329308 135.000000
+ S 16777215 0.000000 0.000000 0.000000 5.669291 0.000000
+ C 16777215 0.000000 7.952756 0.000000 -7.952756 0.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ L3 0 0.030000 0.000000 0.787402 0 5.669291 0.787402 0
+ L3 0 0.030000 5.669291 0.787402 0 5.669291 -0.787402 0
+ L3 0 0.030000 5.669291 -0.787402 0 6.180225 -0.787402 0
+ L3 0 0.030000 6.180225 -0.787402 0 6.180225 -1.772531 0
+ L3 0 0.030000 5.066671 -2.886085 0 6.180225 -1.772531 0
+ A3 0 0.030000 7.165354 0.000000 -7.952756 0 0.000000 45.000000
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 -0.629921 0
+ A3 0 0.030000 7.322835 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 7.559055 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.346457 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.582677 0.000000 -7.952756 0 0.000000 45.000000
+END
+TURNOUT O55 "Brio Track Short Curve Switch 88mm O/P"
+ P "Normal" 1
+ P "ROute" 2
+ E 0.000000 0.000000 270.000000
+ E 3.006596 1.245373 45.000000
+ E 3.006596 -1.245373 135.000000
+ C 16777215 0.000000 4.251969 0.000000 4.251969 135.000000 45.000000
+ C 16777215 0.000000 4.251969 0.000000 -4.251969 0.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 0.000000 -0.787402 0
+ A3 0 0.030000 3.464567 0.000000 4.251969 0 135.000000 45.000000
+ L3 0 0.030000 2.449819 1.802150 0 3.563373 0.688596 0
+ L3 0 0.030000 3.563373 0.688596 0 3.563373 -0.688596 0
+ L3 0 0.030000 3.563373 -0.688596 0 2.449819 -1.802150 0
+ A3 0 0.030000 3.464567 0.000000 -4.251969 0 0.000000 45.000000
+#Slots
+ A3 0 0.030000 3.622047 0.000000 4.251969 0 135.000000 45.000000
+ A3 0 0.030000 3.858268 0.000000 4.251969 0 135.000000 45.000000
+ A3 0 0.030000 4.645669 0.000000 4.251969 0 135.000000 45.000000
+ A3 0 0.030000 4.881890 0.000000 4.251969 0 135.000000 45.000000
+ A3 0 0.030000 3.622047 0.000000 -4.251969 0 0.000000 45.000000
+ A3 0 0.030000 3.858268 0.000000 -4.251969 0 0.000000 45.000000
+ A3 0 0.030000 4.645669 0.000000 -4.251969 0 0.000000 45.000000
+ A3 0 0.030000 4.881890 0.000000 -4.251969 0 0.000000 45.000000
+END
+TURNOUT O55 "Brio Track Medimun Curve Switch 108/88mm O1/P1"
+ P "Normal" 1
+ P "ROute" 2
+ E 0.000000 0.000000 270.000000
+ E 3.006596 1.245373 45.000000
+ E 4.251969 0.000000 90.000000
+ S 16777215 0.000000 0.000000 0.000000 4.251969 0.000000
+ C 16777215 0.000000 4.251969 0.000000 4.251969 135.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 0.000000 -0.787402 0
+ A3 0 0.030000 3.464567 0.000000 4.251969 0 135.000000 45.000000
+ L3 0 0.030000 2.449819 1.802150 0 3.563373 0.688596 0
+ L3 0 0.030000 3.563373 0.688596 0 3.633239 0.787402 0
+ L3 0 0.030000 3.633239 0.787402 0 4.251969 0.787402 0
+ L3 0 0.030000 4.251969 0.787402 0 4.251969 -0.787402 0
+ L3 0 0.030000 4.251969 -0.787402 0 0.000000 -0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 4.251969 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 4.251969 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 4.251969 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 4.251969 -0.629921 0
+ A3 0 0.030000 3.622047 0.000000 4.251969 0 135.000000 45.000000
+ A3 0 0.030000 3.858268 0.000000 4.251969 0 135.000000 45.000000
+ A3 0 0.030000 4.645669 0.000000 4.251969 0 135.000000 45.000000
+ A3 0 0.030000 4.881890 0.000000 4.251969 0 135.000000 45.000000
+END
+TURNOUT O55 "Brio Track Tee Switch 216mm T"
+ P "Normal" 1
+ P "Route L" 2
+ P "Route R" 3
+ E 0.000000 0.000000 270.000000
+ E 8.503937 0.000000 90.000000
+ E 4.251969 -4.251969 180.000000
+ S 16777215 0.000000 0.000000 0.000000 8.503937 0.000000
+ C 16777215 0.000000 4.251969 0.000000 -4.251969 0.000000 90.000000
+ C 16777215 0.000000 4.251969 8.503937 -4.251969 270.000000 90.000000
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ L3 0 0.030000 0.000000 0.787402 0 8.503937 0.787402 0
+ L3 0 0.030000 8.503937 0.787402 0 8.503937 -0.787402 0
+ A3 0 0.030000 3.464567 8.503937 -4.251969 0 270.000000 90.000000
+ L3 0 0.030000 3.464567 -4.251969 0 5.000000 -4.251969 0
+ A3 0 0.030000 3.464567 0.000000 -4.251969 0 0.000000 90.000000
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 8.503937 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 8.503937 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 8.503937 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 8.503937 -0.629921 0
+ A3 0 0.030000 3.622047 0.000000 -4.251969 0 0.000000 90.000000
+ A3 0 0.030000 3.858268 0.000000 -4.251969 0 0.000000 90.000000
+ A3 0 0.030000 4.645669 0.000000 -4.251969 0 0.000000 90.000000
+ A3 0 0.030000 4.881890 0.000000 -4.251969 0 0.000000 90.000000
+ A3 0 0.030000 3.622047 8.503937 -4.251969 0 270.000000 90.000000
+ A3 0 0.030000 3.858268 8.503937 -4.251969 0 270.000000 90.000000
+ A3 0 0.030000 4.645669 8.503937 -4.251969 0 270.000000 90.000000
+ A3 0 0.030000 4.881890 8.503937 -4.251969 0 270.000000 90.000000
+END
+TURNOUT O55 "Brio Track Star Switch 216mm X" 512
+ P "Normal" 1
+ P "R1" 2
+ P "R2" 3
+ P "R3" 4
+ P "R4" 5
+ P "R5" 6
+ E 4.251969 4.251969 0.000000
+ E 8.503937 0.000000 90.000000
+ E 4.251969 -4.251969 180.000000
+ E 0.000000 0.000000 270.000000
+ S 16777215 0.000000 0.000000 0.000000 8.503937 0.000000
+ C 16777215 0.000000 4.251969 0.000000 -4.251969 0.000000 90.000000
+ C 16777215 0.000000 4.251969 8.503937 -4.251969 270.000000 90.000000
+ S 16777215 0.000000 4.251969 4.251969 4.251969 -4.251969
+ C 16777215 0.000000 4.251969 0.000000 4.251969 90.000000 90.000000
+ C 16777215 0.000000 4.251969 8.503937 4.251969 180.000000 90.000000
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ A3 0 0.030000 3.464567 0.000000 4.251969 0 90.000000 90.000000
+ L3 0 0.030000 3.464567 4.251969 0 5.000000 4.251969 0
+ A3 0 0.030000 3.464567 8.503937 4.251969 0 180.000000 90.000000
+ L3 0 0.030000 8.503937 0.787402 0 8.503937 -0.787402 0
+ A3 0 0.030000 3.464567 8.503937 -4.251969 0 270.000000 90.000000
+ L3 0 0.030000 3.464567 -4.251969 0 5.000000 -4.251969 0
+ A3 0 0.030000 3.464567 0.000000 -4.251969 0 0.000000 90.000000
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 8.503937 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 8.503937 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 8.503937 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 8.503937 -0.629921 0
+ A3 0 0.030000 3.622047 0.000000 -4.251969 0 0.000000 90.000000
+ A3 0 0.030000 3.858268 0.000000 -4.251969 0 0.000000 90.000000
+ A3 0 0.030000 4.645669 0.000000 -4.251969 0 0.000000 90.000000
+ A3 0 0.030000 4.881890 0.000000 -4.251969 0 0.000000 90.000000
+ A3 0 0.030000 3.622047 8.503937 -4.251969 0 270.000000 90.000000
+ A3 0 0.030000 3.858268 8.503937 -4.251969 0 270.000000 90.000000
+ A3 0 0.030000 4.645669 8.503937 -4.251969 0 270.000000 90.000000
+ A3 0 0.030000 4.881890 8.503937 -4.251969 0 270.000000 90.000000
+ L3 0 0.030000 3.622048 4.251969 0 3.622048 -4.251969 0
+ L3 0 0.030000 3.858268 4.251969 0 3.858268 -4.251969 0
+ L3 0 0.030000 4.645670 4.251969 0 4.645670 -4.251969 0
+ L3 0 0.030000 4.881890 4.251969 0 4.881890 -4.251969 0
+ A3 0 0.030000 3.622047 0.000000 4.251969 0 90.000000 90.000000
+ A3 0 0.030000 3.858268 0.000000 4.251969 0 90.000000 90.000000
+ A3 0 0.030000 4.645669 0.000000 4.251969 0 90.000000 90.000000
+ A3 0 0.030000 4.881890 0.000000 4.251969 0 90.000000 90.000000
+ A3 0 0.030000 3.622047 8.503937 4.251969 0 180.000000 90.000000
+ A3 0 0.030000 3.858268 8.503937 4.251969 0 180.000000 90.000000
+ A3 0 0.030000 4.645669 8.503937 4.251969 0 180.000000 90.000000
+ A3 0 0.030000 4.881890 8.503937 4.251969 0 180.000000 90.000000
+END
+TURNOUT O55 "Brio Track 5 Point Switch Q"
+ P "Normal" 1 2 3
+ P "R1" 1 4 5
+ P "R2" 1 2 6 7
+ P "R3" 1 2 8 9
+ P "R4" 1 10 11
+ E 0.000000 0.000000 270.000000
+ E 5.132580 3.006596 45.000000
+ E 6.054291 1.627158 67.500000
+ E 6.377953 0.000000 90.000000
+ E 6.054291 -1.627158 112.500000
+ E 5.132580 -3.006596 135.000000
+ S 16777215 0.000000 0.000000 0.000000 0.364761 0.000000
+ S 16777215 0.000000 0.364761 0.000000 1.280215 0.000000
+ S 16777215 0.000000 1.280215 0.000000 6.377953 0.000000
+ C 16777215 0.000000 -4.251969 0.364761 4.251969 135.000000 45.000000
+ S 16777215 0.000000 3.371357 1.245373 5.132580 3.006596
+ C 16777215 0.000000 -4.251969 1.280215 4.251969 157.500000 22.500000
+ S 16777215 0.000000 2.907373 0.323662 6.054291 1.627158
+ C 16777215 0.000000 4.251969 1.280215 -4.251969 0.00000 22.500000
+ S 16777215 0.000000 2.907373 -0.323662 6.054291 -1.627158
+ C 16777215 0.000000 4.251969 0.364761 -4.251969 0.000000 45.000000
+ S 16777215 0.000000 3.371357 -1.245373 5.132580 -3.006596
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ L3 0 0.030000 0.000000 0.787402 0 4.575803 3.563373 0
+ L3 0 0.030000 4.575803 3.563373 0 5.730629 2.408547 0
+ L3 0 0.030000 5.730629 2.408547 0 6.377953 0.845769 0
+ L3 0 0.030000 6.377953 0.845769 0 6.377953 -0.845769 0
+ L3 0 0.030000 5.730629 -2.408547 0 6.377953 -0.845769 0
+ L3 0 0.030000 4.575803 -3.563373 0 5.730629 -2.408547 0
+ L3 0 0.030000 0.000000 -0.787402 0 4.575803 -3.563373 0
+#Slots
+ A3 0 0.030000 3.622047 0.364761 4.251969 0 135.000000 45.000000
+ L3 0 0.030000 2.925935 1.690794 0 4.687158 3.452017 0
+ A3 0 0.030000 3.858268 0.364761 4.251969 0 135.000000 45.000000
+ L3 0 0.030000 3.092968 1.523761 0 4.854192 3.284984 0
+ A3 0 0.030000 4.645669 0.364761 4.251969 0 135.000000 45.000000
+ L3 0 0.030000 3.649745 0.966984 0 5.410969 2.728207 0
+ A3 0 0.030000 4.881890 0.364761 4.251969 0 135.000000 45.000000
+ L3 0 0.030000 3.816779 0.799951 0 5.578002 2.561174 0
+ A3 0 0.030000 3.622047 1.280215 4.251969 0 157.500000 22.500000
+ L3 0 0.030000 2.666313 0.905633 0 5.813230 2.209129 0
+ A3 0 0.030000 3.858268 1.280215 4.251969 0 157.500000 22.500000
+ L3 0 0.030000 2.756710 0.687394 0 5.903628 1.990890 0
+ A3 0 0.030000 4.645669 1.280215 4.251969 0 157.500000 22.500000
+ L3 0 0.030000 3.058036 -0.040070 0 6.204954 1.263426 0
+ A3 0 0.030000 4.881890 1.280215 4.251969 0 157.500000 22.500000
+ L3 0 0.030000 3.148433 -0.258310 0 6.295351 1.045187 0
+ L3 0 0.030000 0.000000 0.629921 0 6.377953 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 6.377953 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 6.377953 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 6.377953 -0.629921 0
+ A3 0 0.030000 4.645669 1.280215 -4.251969 0 0.000000 22.500000
+ L3 0 0.030000 3.058036 0.040070 0 6.204954 -1.263426 0
+ A3 0 0.030000 4.881890 1.280215 -4.251969 0 0.000000 22.500000
+ L3 0 0.030000 3.148433 0.258310 0 6.295351 -1.045187 0
+ A3 0 0.030000 3.622047 1.280215 -4.251969 0 0.000000 22.500000
+ L3 0 0.030000 2.666313 -0.905633 0 5.813230 -2.209129 0
+ A3 0 0.030000 3.858268 1.280215 -4.251969 0 0.000000 22.500000
+ L3 0 0.030000 2.756710 -0.687394 0 5.903628 -1.990890 0
+ A3 0 0.030000 4.645669 0.364761 -4.251969 0 0.000000 45.000000
+ L3 0 0.030000 3.649745 -0.966984 0 5.410969 -2.728207 0
+ A3 0 0.030000 4.881890 0.364761 -4.251969 0 0.000000 45.000000
+ L3 0 0.030000 3.816779 -0.799951 0 5.578002 -2.561174 0
+ A3 0 0.030000 3.622047 0.364761 -4.251969 0 0.000000 45.000000
+ L3 0 0.030000 2.925935 -1.690794 0 4.687158 -3.452017 0
+ A3 0 0.030000 3.858268 0.364761 -4.251969 0 0.000000 45.000000
+ L3 0 0.030000 3.092968 -1.523761 0 4.854192 -3.284984 0
+END
+
+
+SUBCONTENTS Brio Track - Cross Tracks
+TURNOUT O55 "Brio Track Crossing Track 108mm H"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.251969 0.000000 90.000000
+ E 2.125985 2.125985 0.000000
+ E 2.125985 -2.125985 180.000000
+ S 16777215 0.000000 0.000000 0.000000 4.251969 0.000000
+ S 16777215 0.000000 2.125985 2.125985 2.125985 -2.125985
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+
+ L3 0 0.030000 0.000000 0.787402 0 1.338583 0.787402 0
+ L3 0 0.030000 1.338583 0.787402 0 1.338583 2.125985 0
+ L3 0 0.030000 1.338583 2.125985 0 2.913387 2.125985 0
+ L3 0 0.030000 2.913387 2.125985 0 2.913387 0.787402 0
+ L3 0 0.030000 2.913387 0.787402 0 4.251969 0.787402 0
+
+ L3 0 0.030000 4.251969 0.787402 0 4.251969 -0.787402 0
+
+ L3 0 0.030000 4.251969 -0.787402 0 2.913387 -0.787402 0
+ L3 0 0.030000 2.913387 -2.125985 0 2.913387 -0.787402 0
+ L3 0 0.030000 1.338583 -2.125985 0 2.913387 -2.125985 0
+ L3 0 0.030000 1.338583 -0.787402 0 1.338583 -2.125985 0
+ L3 0 0.030000 1.338583 -0.787402 0 0.000000 -0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 4.251969 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 4.251969 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 4.251969 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 4.251969 -0.629921 0
+
+ L3 0 0.030000 1.496064 2.125985 0 1.496064 -2.125985 0
+ L3 0 0.030000 1.732284 2.125985 0 1.732284 -2.125985 0
+ L3 0 0.030000 2.519686 2.125985 0 2.519686 -2.125985 0
+ L3 0 0.030000 2.755906 2.125985 0 2.755906 -2.125985 0
+END
+TURNOUT O55 "Brio Track Cross Track 116mm H1"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.566929 0.000000 90.000000
+ E 2.283465 2.283465 0.000000
+ E 2.283465 -2.283465 180.000000
+ S 16777215 0.000000 0.000000 0.000000 4.566929 0.000000
+ S 16777215 0.000000 2.283465 2.283465 2.283465 -2.283465
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ A3 0 0.030000 1.496063 0.000000 2.283465 0 90.000000 90.000000
+ L3 0 0.030000 1.496063 2.283465 0 3.070867 2.283465 0
+ A3 0 0.030000 1.496063 4.566929 2.283465 0 180.000000 90.000000
+ L3 0 0.030000 4.566929 0.787402 0 4.566929 -0.787402 0
+ A3 0 0.030000 1.496063 4.566929 -2.283465 0 270.000000 90.000000
+ L3 0 0.030000 1.496063 -2.283465 0 3.070867 -2.283465 0
+ A3 0 0.030000 1.496063 0.000000 -2.283465 0 0.000000 90.000000
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 4.566929 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 4.566929 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 4.566929 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 4.566929 -0.629921 0
+ L3 0 0.030000 1.653544 2.283465 0 1.653544 -2.283465 0
+ L3 0 0.030000 1.889764 2.283465 0 1.889764 -2.283465 0
+ L3 0 0.030000 2.677166 2.283465 0 2.677166 -2.283465 0
+ L3 0 0.030000 2.913386 2.283465 0 2.913386 -2.283465 0
+END
+
+
+TURNOUT O55 "Brio Track Criss-Cross 144mm H2"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.669291 0.000000 90.000000
+ E 4.839043 2.004397 45.000000
+ E 0.830248 -2.004397 225.000000
+ S 16777215 0.000000 0.000000 0.000000 5.669291 0.000000
+ S 16777215 0.000000 0.830248 -2.004397 4.839043 2.004397
+#Outlines
+ L3 0 0.030000 0.000000 -0.787402 0 0.000000 0.787402 0
+ L3 0 0.030000 0.000000 0.787402 0 2.508493 0.787402 0
+ L3 0 0.030000 2.508493 0.787402 0 4.282266 2.561174 0
+ L3 0 0.030000 4.282266 2.561174 0 5.395820 1.447620 0
+ L3 0 0.030000 5.395820 1.447620 0 4.735601 0.787402 0
+ L3 0 0.030000 4.735601 0.787402 0 5.669291 0.787402 0
+ L3 0 0.030000 5.669291 0.787402 0 5.669291 -0.787402 0
+ L3 0 0.030000 5.669291 -0.787402 0 3.160798 -0.787402 0
+ L3 0 0.030000 3.160798 -0.787402 0 1.387025 -2.561174 0
+ L3 0 0.030000 1.387025 -2.561174 0 0.273471 -1.447620 0
+ L3 0 0.030000 0.273471 -1.447620 0 0.933690 -0.787402 0
+ L3 0 0.030000 0.000000 -0.787402 0 0.933690 -0.787402 0
+#Slots
+ L3 0 0.030000 0.000000 0.629921 0 5.669291 0.629921 0
+ L3 0 0.030000 0.000000 0.393701 0 5.669291 0.393701 0
+ L3 0 0.030000 0.000000 -0.393701 0 5.669291 -0.393701 0
+ L3 0 0.030000 0.000000 -0.629921 0 5.669291 -0.629921 0
+ L3 0 0.030000 0.384827 -1.558976 0 4.393621 2.449819 0
+ L3 0 0.030000 0.551860 -1.726009 0 4.560654 2.282786 0
+ L3 0 0.030000 1.108637 -2.282786 0 5.117431 1.726009 0
+ L3 0 0.030000 1.275670 -2.449819 0 5.284464 1.558976 0
+END
+TURNOUT O55 "Brio Track Curve Crossing 182mm H3"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.623448 -2.329308 135.000000
+ E 0.556777 1.344179 315.000000
+ E 6.180225 -0.985130 90.000000
+ C 16777215 0.000000 7.952756 0.000000 -7.952756 0.000000 45.000000
+ C 16777215 0.000000 7.952756 6.180225 6.967626 180.000000 45.000000
+#Outlines
+ L3 0 0.030000 0.000000 0.787402 0 0.000000 -0.787402 0
+ L3 0 0.030000 5.066671 -2.886085 0 6.180225 -1.772531 0
+ A3 0 0.030000 7.165354 0.000000 -7.952756 0 0.000000 45.000000
+ L3 0 0.030000 0.000000 0.787402 0 1.113554 1.900956 0
+ L3 0 0.030000 6.180225 -0.197728 0 6.180225 -1.772531 0
+ A3 0 0.030000 7.165354 6.180225 6.967626 0 180.000000 45.000000
+#Slots
+ A3 0 0.030000 7.322835 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 7.559055 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.346457 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 8.582677 0.000000 -7.952756 0 0.000000 45.000000
+ A3 0 0.030000 7.322835 6.180225 6.967626 0 180.000000 45.000000
+ A3 0 0.030000 7.559055 6.180225 6.967626 0 180.000000 45.000000
+ A3 0 0.030000 8.346457 6.180225 6.967626 0 180.000000 45.000000
+ A3 0 0.030000 8.582677 6.180225 6.967626 0 180.000000 45.000000
+END
+
+
+SUBCONTENTS Brio Track - Turn Tables
+TURNOUT O55 "Brio Track Turn Table 144mm 33360" 512
+ P "1" 3 4 5
+ P "2" 6 7 8
+ A3 8424071 0.030000 2.125984 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.030000 2.086614 0.000000 0.000000 0 0.000000 360.000000
+ E 0.000000 2.834646 0.000000
+ E 2.834646 0.000000 90.000000
+ E 0.000000 -2.834646 180.000000
+ E -2.834646 0.000000 270.000000
+ S 16777215 0 0.000000 2.834646 0.000000 2.125984
+ S 16777215 0 0.000000 2.125984 0.000000 -2.125984
+ S 16777215 0 0.000000 -2.125984 0.000000 -2.834646
+ S 16777215 0 2.834646 0.000000 2.125984 0.000000
+ S 16777215 0 2.125984 0.000000 -2.125984 0.000000
+ S 16777215 0 -2.125984 0.000000 -2.834646 0.000000
+#Outlines
+ L3 0 0.030000 -2.834646 -2.834646 0 -2.834646 2.834646 0
+ L3 0 0.030000 -2.834646 2.834646 0 2.834646 2.834646 0
+ L3 0 0.030000 2.834646 2.834646 0 2.834646 -2.834646 0
+ L3 0 0.030000 2.834646 -2.834646 0 -2.834646 -2.834646 0
+#Slots
+ L3 0 0.030000 -2.834646 0.629921 0 -2.005984 0.629921 0
+ L3 0 0.030000 -2.834646 0.393701 0 -2.065984 0.393701 0
+ L3 0 0.030000 -2.834646 -0.393701 0 -2.065984 -0.393701 0
+ L3 0 0.030000 -2.834646 -0.629921 0 -2.005984 -0.629921 0
+ L3 0 0.030000 2.005984 0.629921 0 2.834646 0.629921 0
+ L3 0 0.030000 2.065984 0.393701 0 2.834646 0.393701 0
+ L3 0 0.030000 2.065984 -0.393701 0 2.834646 -0.393701 0
+ L3 0 0.030000 2.005984 -0.629921 0 2.834646 -0.629921 0
+ L3 0 0.030000 -0.629921 2.834646 0 -0.629921 2.005984 0
+ L3 0 0.030000 -0.393701 2.834646 0 -0.393701 2.065984 0
+ L3 0 0.030000 0.393701 2.834646 0 0.393701 2.065984 0
+ L3 0 0.030000 0.629921 2.834646 0 0.629921 2.005984 0
+ L3 0 0.030000 -0.629921 -2.834646 0 -0.629921 -2.005984 0
+ L3 0 0.030000 -0.393701 -2.834646 0 -0.393701 -2.065984 0
+ L3 0 0.030000 0.393701 -2.834646 0 0.393701 -2.065984 0
+ L3 0 0.030000 0.629921 -2.834646 0 0.629921 -2.005984 0
+END
+TURNOUT O55 "Brio Track Turn Table 144mm 33361" 512
+ P "1" 3 4 5
+ P "2" 6 7 8
+ P "3" 9 10 11
+ A3 8424071 0.030000 2.125984 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.030000 2.086614 0.000000 0.000000 0 0.000000 360.000000
+ E 0.000000 2.834646 0.000000
+ E 2.834646 0.000000 90.000000
+ E 2.004397 -2.004397 135.000000
+ E 0.000000 -2.834646 180.000000
+ E -2.834646 0.000000 270.000000
+ E -2.004397 2.004397 315.000000
+ S 16777215 0 0.000000 2.834646 0.000000 2.125984
+ S 16777215 0 0.000000 2.125984 0.000000 -2.125984
+ S 16777215 0 0.000000 -2.125984 0.000000 -2.834646
+ S 16777215 0 2.834646 0.000000 2.125984 0.000000
+ S 16777215 0 2.125984 0.000000 -2.125984 0.000000
+ S 16777215 0 -2.125984 0.000000 -2.834646 0.000000
+ S 16777215 0 2.004397 -2.004397 1.503298 -1.503298
+ S 16777215 0 1.503298 -1.503298 -1.503298 1.503298
+ S 16777215 0 -1.503298 1.503298 -2.004397 2.004397
+#Outlines
+ L3 0 0.030000 -2.834646 -1.953636 0 -2.834646 1.174149 0
+ L3 0 0.030000 -2.834646 1.174149 0 -1.174149 2.834646 0
+ L3 0 0.030000 -1.174149 2.834646 0 1.174149 2.834646 0
+ L3 0 0.030000 1.174149 2.834646 0 2.834646 1.174149 0
+ L3 0 0.030000 2.834646 1.174149 0 2.834646 -1.174149 0
+ L3 0 0.030000 2.834646 -1.174149 0 1.174149 -2.834646 0
+ L3 0 0.030000 1.174149 -2.834646 0 -1.953636 -2.834646 0
+ L3 0 0.030000 -1.953636 -2.834646 0 -2.834646 -1.953636 0
+ A3 8424071 0.030000 0.246063 -1.760807 -1.760807 0 0.000000 360.000000
+#Slots
+ L3 0 0.030000 -2.834646 0.629921 0 -2.005984 0.629921 0
+ L3 0 0.030000 -2.834646 0.393701 0 -2.065984 0.393701 0
+ L3 0 0.030000 -2.834646 -0.393701 0 -2.065984 -0.393701 0
+ L3 0 0.030000 -2.834646 -0.629921 0 -2.005984 -0.629921 0
+ L3 0 0.030000 2.005984 0.629921 0 2.834646 0.629921 0
+ L3 0 0.030000 2.065984 0.393701 0 2.834646 0.393701 0
+ L3 0 0.030000 2.065984 -0.393701 0 2.834646 -0.393701 0
+ L3 0 0.030000 2.005984 -0.629921 0 2.834646 -0.629921 0
+ L3 0 0.030000 -0.629921 2.834646 0 -0.629921 2.005984 0
+ L3 0 0.030000 -0.393701 2.834646 0 -0.393701 2.065984 0
+ L3 0 0.030000 0.393701 2.834646 0 0.393701 2.065984 0
+ L3 0 0.030000 0.629921 2.834646 0 0.629921 2.005984 0
+ L3 0 0.030000 -0.629921 -2.834646 0 -0.629921 -2.005984 0
+ L3 0 0.030000 -0.393701 -2.834646 0 -0.393701 -2.065984 0
+ L3 0 0.030000 0.393701 -2.834646 0 0.393701 -2.065984 0
+ L3 0 0.030000 0.629921 -2.834646 0 0.629921 -2.005984 0
+ L3 0 0.030000 -1.558976 2.449819 0 -0.990372 1.881215 0
+ L3 0 0.030000 -1.726009 2.282786 0 -1.198908 1.755685 0
+ L3 0 0.030000 -2.282786 1.726009 0 -1.755685 1.198908 0
+ L3 0 0.030000 -2.449819 1.558976 0 -1.881215 0.990372 0
+ L3 0 0.030000 1.558976 -2.449819 0 0.990372 -1.881215 0
+ L3 0 0.030000 1.726009 -2.282786 0 1.198908 -1.755685 0
+ L3 0 0.030000 2.282786 -1.726009 0 1.755685 -1.198908 0
+ L3 0 0.030000 2.449819 -1.558976 0 1.881215 -0.990372 0
+END
+TURNOUT O55 "Brio Track Turn Table 216mm 33460" 512
+ P "1" 3 4 5
+ P "2" 6 7
+ P "3" 8 9 10
+ P "4" 11 12
+ P "5" 13 14 15
+ P "6" 16 17 18
+ A3 8424071 0.030000 3.188976 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.030000 3.149606 0.000000 0.000000 0 0.000000 360.000000
+ E 0.000000 4.251969 0.000000
+ E 1.627158 3.928307 22.500000
+ E 3.006596 3.006596 45.000000
+ E 3.928307 1.627158 67.500000
+ E 4.251969 0.000000 90.000000
+ E 3.006596 -3.006596 135.000000
+ E 0.000000 -4.251969 180.000000
+ E -3.006596 -3.006596 225.000000
+ E -4.251969 0.000000 270.000000
+ E -3.006596 3.006596 315.000000
+ S 16777215 0 0.000000 4.251969 0.000000 3.188976
+ S 16777215 0 0.000000 3.188976 0.000000 -3.188976
+ S 16777215 0 0.000000 -3.188976 0.000000 -4.251969
+ S 16777215 0 1.627158 3.928307 1.220368 2.946230
+ S 16777215 0 1.220368 2.946230 -1.220368 -2.946230
+ S 16777215 0 3.006596 3.006596 2.254947 2.254947
+ S 16777215 0 2.254947 2.254947 -2.254947 -2.254947
+ S 16777215 0 -2.254947 -2.254947 -3.006596 -3.006596
+ S 16777215 0 3.928307 1.627158 2.946230 1.220368
+ S 16777215 0 2.946230 1.220368 -2.946230 -1.220368
+ S 16777215 0 4.251969 0.000000 3.188976 0.000000
+ S 16777215 0 3.188976 0.000000 -3.188976 0.000000
+ S 16777215 0 -3.188976 0.000000 -4.251969 0.000000
+ S 16777215 0 3.006596 -3.006596 2.254947 -2.254947
+ S 16777215 0 2.254947 -2.254947 -2.254947 2.254947
+ S 16777215 0 -2.254947 2.254947 -3.006596 3.006596
+#Outlines
+ L3 0 0.030000 -4.251969 -0.845769 0 -4.251969 0.845769 0
+ L3 0 0.030000 -4.251969 0.845769 0 -3.604645 2.408547 0
+ L3 0 0.030000 -3.604645 2.408547 0 -2.408547 3.604645 0
+ L3 0 0.030000 -2.408547 3.604645 0 -0.845769 4.251969 0
+ L3 0 0.030000 -0.845769 4.251969 0 0.845769 4.251969 0
+ L3 0 0.030000 0.845769 4.251969 0 2.408547 3.604645 0
+ L3 0 0.030000 2.408547 3.604645 0 3.604645 2.408547 0
+ L3 0 0.030000 3.604645 2.408547 0 4.251969 0.845769 0
+ L3 0 0.030000 4.251969 0.845769 0 4.251969 -0.845769 0
+ L3 0 0.030000 4.251969 -0.845769 0 3.604645 -2.408547 0
+ L3 0 0.030000 3.604645 -2.408547 0 2.408547 -3.604645 0
+ L3 0 0.030000 2.408547 -3.604645 0 0.845769 -4.251969 0
+ L3 0 0.030000 0.845769 -4.251969 0 -0.845769 -4.251969 0
+ L3 0 0.030000 -0.845769 -4.251969 0 -2.408547 -3.604645 0
+ L3 0 0.030000 -2.408547 -3.604645 0 -3.604645 -2.408547 0
+ L3 0 0.030000 -3.604645 -2.408547 0 -4.251969 -0.845769 0
+#Slots
+ L3 0 0.030000 -4.251969 0.629921 0 -3.126143 0.629921 0
+ L3 0 0.030000 -4.251969 0.393701 0 -3.164581 0.393701 0
+ L3 0 0.030000 -4.251969 -0.393701 0 -3.164581 -0.393701 0
+ L3 0 0.030000 -4.251969 -0.629921 0 -3.126143 -0.629921 0
+ L3 0 0.030000 3.126143 0.629921 0 4.251969 0.629921 0
+ L3 0 0.030000 3.164581 0.393701 0 4.251969 0.393701 0
+ L3 0 0.030000 3.164581 -0.393701 0 4.251969 -0.393701 0
+ L3 0 0.030000 3.126143 -0.629921 0 4.251969 -0.629921 0
+ L3 0 0.030000 -0.629921 4.251969 0 -0.629921 3.126143 0
+ L3 0 0.030000 -0.393701 4.251969 0 -0.393701 3.164581 0
+ L3 0 0.030000 0.393701 4.251969 0 0.393701 3.164581 0
+ L3 0 0.030000 0.629921 4.251969 0 0.629921 3.126143 0
+ L3 0 0.030000 -0.629921 -4.251969 0 -0.629921 -3.126143 0
+ L3 0 0.030000 -0.393701 -4.251969 0 -0.393701 -3.164581 0
+ L3 0 0.030000 0.393701 -4.251969 0 0.393701 -3.164581 0
+ L3 0 0.030000 0.629921 -4.251969 0 0.629921 -3.126143 0
+ L3 0 0.030000 -2.561174 3.452017 0 -1.765095 2.655938 0
+ L3 0 0.030000 -2.728207 3.284984 0 -1.959308 2.516085 0
+ L3 0 0.030000 -3.284984 2.728207 0 -2.516085 1.959308 0
+ L3 0 0.030000 -3.452017 2.561174 0 -2.655938 1.765095 0
+ L3 0 0.030000 2.561174 -3.452017 0 1.765095 -2.655938 0
+ L3 0 0.030000 2.728207 -3.284984 0 1.959308 -2.516085 0
+ L3 0 0.030000 3.284984 -2.728207 0 2.516085 -1.959308 0
+ L3 0 0.030000 3.452017 -2.561174 0 2.655938 -1.765095 0
+ L3 0 0.030000 2.561174 3.452017 0 1.765095 2.655938 0
+ L3 0 0.030000 2.728207 3.284984 0 1.959308 2.516085 0
+ L3 0 0.030000 3.284984 2.728207 0 2.516085 1.959308 0
+ L3 0 0.030000 3.452017 2.561174 0 2.655938 1.765095 0
+ L3 0 0.030000 -2.561174 -3.452017 0 -1.765095 -2.655938 0
+ L3 0 0.030000 -2.728207 -3.284984 0 -1.959308 -2.516085 0
+ L3 0 0.030000 -3.284984 -2.728207 0 -2.516085 -1.959308 0
+ L3 0 0.030000 -3.452017 -2.561174 0 -2.655938 -1.765095 0
+ L3 0 0.030000 0.614352 3.129240 0 1.045187 4.169367 0
+ L3 0 0.030000 0.847300 3.074354 0 1.263426 4.078969 0
+ L3 0 0.030000 1.574765 2.773028 0 1.990890 3.777644 0
+ L3 0 0.030000 1.778294 2.647119 0 2.209129 3.687246 0
+ L3 0 0.030000 2.647119 1.778294 0 3.687246 2.209129 0
+ L3 0 0.030000 2.773028 1.574765 0 3.777644 1.990890 0
+ L3 0 0.030000 3.074354 0.847300 0 4.078969 1.263426 0
+ L3 0 0.030000 3.129240 0.614352 0 4.169367 1.045187 0
+END
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/Circuits.xtp b/app/lib/params/Circuits.xtp
index 1c0d708..748a41b 100644
--- a/app/lib/params/Circuits.xtp
+++ b/app/lib/params/Circuits.xtp
@@ -1,5 +1,5 @@
CONTENTS Circuit Diagram Components
-STRUCTURE N "Electrical Schematics SPST 104"
+STRUCTURE * "Electrical Schematics SPST 104"
A3 0 0.010417 0.200000 0.800000 0.200000 0 0.000000 360.000000
A3 0 0.010417 0.200000 2.800000 0.200000 0 0.000000 360.000000
Q3 0 0.031250 0.800000 0.200000 0 2.800000 0.800000 0
@@ -8,7 +8,7 @@ STRUCTURE N "Electrical Schematics SPST 104"
Q3 0 0.031250 0.600000 0.200000 0 0.000000 0.200000 0
Q3 0 0.031250 3.000000 0.200000 0 3.400000 0.200000 0
END
-STRUCTURE N "Electrical Schematics SPDT 106"
+STRUCTURE * "Electrical Schematics SPDT 106"
A3 0 0.010417 0.200000 0.800000 0.600000 0 0.000000 360.000000
A3 0 0.010417 0.200000 1.800000 0.600000 0 0.000000 360.000000
A3 0 0.010417 0.200000 2.800000 0.600000 0 0.000000 360.000000
@@ -19,7 +19,7 @@ STRUCTURE N "Electrical Schematics SPDT 106"
Q3 0 0.031250 2.400000 1.400000 0 2.200000 1.400000 0
Q3 0 0.031250 2.400000 1.400000 0 2.400000 1.200000 0
END
-STRUCTURE N "Electrical Schematics DPST 107"
+STRUCTURE * "Electrical Schematics DPST 107"
A3 0 0.010417 0.200000 0.600000 0.200000 0 0.000000 360.000000
A3 0 0.010417 0.200000 0.600000 1.200000 0 0.000000 360.000000
A3 0 0.010417 0.200000 2.000000 1.200000 0 0.000000 360.000000
@@ -38,7 +38,7 @@ STRUCTURE N "Electrical Schematics DPST 107"
Q3 0 0.031250 1.800000 0.600000 0 1.800000 0.800000 0
Q3 0 0.031250 1.800000 1.600000 0 1.800000 1.800000 0
END
-STRUCTURE N "Electrical Schematics DPDT 108"
+STRUCTURE * "Electrical Schematics DPDT 108"
A3 0 0.010417 0.118996 2.046875 3.079098 0 0.000000 360.000000
A3 0 0.010417 0.112673 2.031250 2.079098 0 0.000000 360.000000
A3 0 0.010417 0.122035 2.046875 1.094723 0 0.000000 360.000000
@@ -61,7 +61,7 @@ STRUCTURE N "Electrical Schematics DPDT 108"
Q3 0 0.031250 2.156250 1.125973 0 2.546875 1.125973 0
Q3 0 0.031250 2.156250 0.110348 0 2.578125 0.110348 0
END
-STRUCTURE N "Electrical Schematics DPDT Center Off 109"
+STRUCTURE * "Electrical Schematics DPDT Center Off 109"
A3 0 0.010417 0.118996 2.046875 3.079098 0 0.000000 360.000000
A3 0 0.010417 0.112673 2.031250 2.079098 0 0.000000 360.000000
A3 0 0.010417 0.122035 2.046875 1.094723 0 0.000000 360.000000
@@ -95,7 +95,7 @@ STRUCTURE N "Electrical Schematics DPDT Center Off 109"
Q3 0 0.031250 2.812500 0.391598 0 3.156250 0.391598 0
Q3 0 0.031250 2.906250 0.266598 0 3.109375 0.266598 0
END
-STRUCTURE N "Electrical Schematics Simple Connector 110"
+STRUCTURE * "Electrical Schematics Simple Connector 110"
Q3 0 0.031250 0.000000 0.156250 0 0.984375 0.156250 0
Q3 0 0.031250 0.765625 0.312500 0 0.984375 0.156250 0
Q3 0 0.031250 0.796875 0.000000 0 0.984375 0.156250 0
@@ -103,17 +103,17 @@ STRUCTURE N "Electrical Schematics Simple Connector 110"
Q3 0 0.031250 1.109375 0.343750 0 1.328125 0.156250 0
Q3 0 0.031250 1.328125 0.156250 0 2.062500 0.156250 0
END
-STRUCTURE N "Electrical Schematics Wire Connection 111"
+STRUCTURE * "Electrical Schematics Wire Connection 111"
G3 0 0.000000 0.069877 0.069877 0.069877 0
END
-STRUCTURE N "Electrical Schematics Wire Crossover 105"
+STRUCTURE * "Electrical Schematics Wire Crossover 105"
Q3 0 0.031250 0.000000 0.000000 0 0.562500 0.000000 0
Q3 0 0.031250 0.562500 0.000000 0 0.562500 0.125000 0
Q3 0 0.031250 0.562500 0.125000 0 0.937500 0.125000 0
Q3 0 0.031250 0.937500 0.125000 0 0.937500 0.000000 0
Q3 0 0.031250 0.937500 0.000000 0 1.437500 0.000000 0
END
-STRUCTURE N "Electrical Schematics Rotary * Contact 111"
+STRUCTURE * "Electrical Schematics Rotary * Contact 111"
A3 0 0.010417 0.066291 0.921875 0.937500 0 0.000000 360.000000
A3 0 0.010417 0.091109 0.921875 0.937500 0 0.000000 360.000000
A3 0 0.010417 0.078125 0.906250 1.781250 0 0.000000 360.000000
@@ -131,7 +131,7 @@ STRUCTURE N "Electrical Schematics Rotary * Contact 111"
1.312500 1.609375 0
1.187500 1.609375 0
END
-STRUCTURE N "Electrical Schematics Rotary 6 Contacts 103"
+STRUCTURE * "Electrical Schematics Rotary 6 Contacts 103"
A3 0 0.010417 0.000000 0.934859 0.782543 0 0.000000 360.000000
A3 0 0.010417 0.078125 0.934859 0.782543 0 0.000000 360.000000
A3 0 0.010417 0.015625 0.919234 0.782543 0 0.000000 360.000000
@@ -149,7 +149,7 @@ STRUCTURE N "Electrical Schematics Rotary 6 Contacts 103"
1.153609 1.532543 0
1.012984 1.532543 0
END
-STRUCTURE N "Electrical Schematics Resistor 102"
+STRUCTURE * "Electrical Schematics Resistor 102"
L3 0 0.010417 0.484375 0.380208 0 1.921875 0.380208 0
L3 0 0.010417 1.921875 0.380208 0 1.921875 0.005208 0
L3 0 0.010417 1.921875 0.005208 0 0.484375 0.005208 0
@@ -157,7 +157,7 @@ STRUCTURE N "Electrical Schematics Resistor 102"
Q3 0 0.031250 0.468750 0.192708 0 0.000000 0.192708 0
Q3 0 0.031250 1.906250 0.208333 0 2.296875 0.208333 0
END
-STRUCTURE N "Electrical Schematics Fuse 101"
+STRUCTURE * "Electrical Schematics Fuse 101"
L3 0 0.010417 0.484375 0.380208 0 1.921875 0.380208 0
L3 0 0.010417 1.921875 0.380208 0 1.921875 0.005208 0
L3 0 0.010417 1.921875 0.005208 0 0.484375 0.005208 0
@@ -166,7 +166,7 @@ STRUCTURE N "Electrical Schematics Fuse 101"
Q3 0 0.031250 1.906250 0.208333 0 2.296875 0.208333 0
Q3 0 0.031250 0.468750 0.223958 0 1.906250 0.208333 0
END
-STRUCTURE N "Electrical Schematics Variable Resistor 112"
+STRUCTURE * "Electrical Schematics Variable Resistor 112"
L3 0 0.010417 0.484375 0.831434 0 1.921875 0.831434 0
L3 0 0.010417 1.921875 0.831434 0 1.921875 0.456434 0
L3 0 0.010417 1.921875 0.456434 0 0.484375 0.456434 0
@@ -177,7 +177,7 @@ STRUCTURE N "Electrical Schematics Variable Resistor 112"
L3 0 0.010417 1.453125 1.206434 0 1.671875 1.237684 0
L3 0 0.010417 1.640625 1.065809 0 1.671875 1.237684 0
END
-STRUCTURE N "Electrical Schematics Ammeter 113"
+STRUCTURE * "Electrical Schematics Ammeter 113"
A3 0 0.010417 0.508953 1.031250 0.508953 0 0.000000 360.000000
Q3 0 0.031250 0.000000 0.493328 0 0.515625 0.493328 0
Q3 0 0.031250 1.515625 0.508953 0 2.078125 0.508953 0
@@ -191,7 +191,7 @@ STRUCTURE N "Electrical Schematics Ammeter 113"
Q3 0 0.031250 0.875000 0.493328 0 1.140625 0.493328 0
Q3 0 0.031250 0.875000 0.805828 0 1.000000 0.805828 0
END
-STRUCTURE N "Electrical Schematics Voltmeter 114"
+STRUCTURE * "Electrical Schematics Voltmeter 114"
A3 0 0.010417 0.508953 1.031250 0.508953 0 0.000000 360.000000
Q3 0 0.031250 0.000000 0.493328 0 0.515625 0.493328 0
Q3 0 0.031250 1.515625 0.508953 0 2.078125 0.508953 0
@@ -208,7 +208,7 @@ STRUCTURE N "Electrical Schematics Voltmeter 114"
Q3 0 0.031250 1.031250 0.196453 0 1.031250 0.196453 0
Q3 0 0.031250 0.906250 0.212078 0 1.156250 0.212078 0
END
-STRUCTURE N "Electrical Schematics Diode 115"
+STRUCTURE * "Electrical Schematics Diode 115"
A3 0 0.010417 0.450965 0.796875 0.450965 0 0.000000 360.000000
Q3 0 0.031250 0.984375 0.685340 0 1.000000 0.200965 0
Q3 0 0.031250 0.000000 0.450965 0 1.656250 0.450965 0
@@ -216,7 +216,7 @@ STRUCTURE N "Electrical Schematics Diode 115"
Q3 0 0.031250 0.968750 0.450965 0 0.687500 0.107215 0
Q3 0 0.031250 0.687500 0.732215 0 0.687500 0.107215 0
END
-STRUCTURE N "Electrical Schematics Light Emitting Diode 116"
+STRUCTURE * "Electrical Schematics Light Emitting Diode 116"
A3 0 0.010417 0.450965 0.796875 0.450965 0 0.000000 360.000000
Q3 0 0.031250 0.984375 0.685340 0 1.000000 0.200965 0
Q3 0 0.031250 0.000000 0.450965 0 1.656250 0.450965 0
@@ -234,7 +234,7 @@ STRUCTURE N "Electrical Schematics Light Emitting Diode 116"
L3 0 0.010417 1.359375 0.904090 0 1.281250 0.904090 0
L3 0 0.010417 1.375000 0.919715 0 1.359375 0.825965 0
END
-STRUCTURE N "Electrical Schematics Light Sensitive Diode 117"
+STRUCTURE * "Electrical Schematics Light Sensitive Diode 117"
A3 0 0.010417 0.450965 0.796875 0.450965 0 0.000000 360.000000
Q3 0 0.031250 0.984375 0.685340 0 1.000000 0.200965 0
Q3 0 0.031250 0.000000 0.450965 0 1.656250 0.450965 0
@@ -252,7 +252,7 @@ STRUCTURE N "Electrical Schematics Light Sensitive Diode 117"
L3 0 0.010417 1.234375 0.825965 0 1.250000 0.888465 0
L3 0 0.010417 1.250000 0.794715 0 1.312500 0.794715 0
END
-STRUCTURE N "Electrical Schematics Rheostat 118"
+STRUCTURE * "Electrical Schematics Rheostat 118"
Q3 0 0.031250 0.000000 0.828125 0 1.937500 0.812500 0
Q3 0 0.031250 0.156250 0.843750 0 0.312500 1.015625 0
Q3 0 0.031250 0.312500 1.015625 0 0.375000 0.671875 0
@@ -274,7 +274,7 @@ STRUCTURE N "Electrical Schematics Rheostat 118"
Q3 0 0.031250 1.031250 0.656250 0 0.828125 0.484375 0
Q3 0 0.031250 1.031250 0.656250 0 1.156250 0.453125 0
END
-STRUCTURE N "Electrical Schematics Dip Switch 120"
+STRUCTURE * "Electrical Schematics Dip Switch 120"
L3 0 0.010417 0.517172 1.005208 0 1.110922 1.005208 0
L3 0 0.010417 1.110922 1.005208 0 1.110922 0.005208 0
L3 0 0.010417 1.110922 0.005208 0 0.517172 0.005208 0
diff --git a/app/lib/params/EM-UK Fine Scale.xtp b/app/lib/params/EM-UK Fine Scale.xtp
index f81b1ce..3116c77 100644
--- a/app/lib/params/EM-UK Fine Scale.xtp
+++ b/app/lib/params/EM-UK Fine Scale.xtp
@@ -23,9 +23,11 @@ TURNOUT EM "EM B6-R"
S 0 0 10.165179 -0.798646 11.496063 -1.023622
END
# Double Slipswitch Design by - 32.100000 6.000000 32.100000
-TURNOUT EM "EM DS-6"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT EM "EM DS-6" 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.637795 0.000000 90.000000
E 0.088379 1.053141 279.594076
@@ -92,9 +94,11 @@ TURNOUT EM "EM Quarter turn, 1200R"
C 0 0 -47.244094 0.000063 47.244094 90.000076 90.000000
END
# Double Slipswitch Design by - 30.000000 7.000000 30.000000
-TURNOUT EM "EM DS-7"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT EM "EM DS-7" 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 11.811024 0.000000 90.000000
E 0.060570 0.843637 278.213218
@@ -465,9 +469,11 @@ TURNOUT EM "EM OUTSIDE SINGLE SLIP-4.5"
C 0 0.000000 63.275490 1.482635 -63.275490 0.000076 12.839751
END
# Double Slipswitch Design by - 43.700000 4.500000 43.700000
-TURNOUT EM "EM OUTSIDE DOUBLE SLIP-4.5"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT EM "EM OUTSIDE DOUBLE SLIP-4.5" 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.204724 0.000000 90.000000
E 0.215091 1.911625 282.839599
diff --git a/app/lib/params/F-NMRA-RP12-21.xtp b/app/lib/params/F-NMRA-RP12-21.xtp
index cd2f6fb..0da6d9a 100644
--- a/app/lib/params/F-NMRA-RP12-21.xtp
+++ b/app/lib/params/F-NMRA-RP12-21.xtp
@@ -558,9 +558,11 @@ TURNOUT F "NMRA F #8 Single Slip 8SS"
END
SUBCONTENTS NMRA F Scale Double Slip Turnouts
-TURNOUT F "NMRA F #6 Double Slip 6DS"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT F "NMRA F #6 Double Slip 6DS" 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 64.484000 0.000000 90.000000
E 0.444709 5.336560 279.527283
@@ -574,9 +576,11 @@ TURNOUT F "NMRA F #6 Double Slip 6DS"
C 0 0.000000 320.103594 5.566177 -320.103594 0.000076 9.527435
C 0 0.000000 -320.103594 58.916967 320.103523 180.000076 9.527435
END
-TURNOUT F "NMRA F #8 Double Slip 8DS"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT F "NMRA F #8 Double Slip 8DS" 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 90.664000 0.000000 90.000000
E 0.352770 5.644387 277.152669
diff --git a/app/lib/params/FastTrack-HO.xtp b/app/lib/params/FastTrack-HO.xtp
index c7bac97..4250ad0 100644
--- a/app/lib/params/FastTrack-HO.xtp
+++ b/app/lib/params/FastTrack-HO.xtp
@@ -126,30 +126,54 @@ TURNOUT HO "Fast Tracks #6 Right Curve 60-33 Turnout FT-6-R-60-33"
SUBCONTENTS Fast Track HO Scale - #8 Curve Turnouts
TURNOUT HO "Fast Tracks #8 Left Curve 18-15 Turnout FT-8-L-18-15"
- P "Normal" 1 6 4 5
+ U "Curved Turnout" "" "Fast Tracks" "#8 Left Curve 18-15 TurnoutL" "FT-8-L-18-151" "#8 Right Curve 18-15 Turnout" "FT-8-R-18-15" 12.195184 48.357832 5.385980 40.457778 4.641370 12.899568 0.000000 0.000000 0
+ P "Normal" 1 4 5
P "Reverse" 1 2 3
E 0.000000 0.000000 270.000000
- E 12.899568 4.641347 49.542222
- E 12.195184 5.383598 41.642160
- S 0 0.000000 0.000000 0.000000 0.853970 0.000000
- C 0 0.000000 -14.598485 0.853989 14.598485 131.642084 48.357992
- S 0 0.000000 11.763573 4.898159 12.195184 5.383598
- C 0 0.000000 -17.647609 0.954021 17.647609 139.542146 40.457930
- S 0 0.000000 12.405339 4.219843 12.899568 4.641347
- S 0 0.000000 0.853970 0.000000 0.953998 0.000000
+ E 12.899568 4.641370 49.542222
+ E 12.195184 5.385980 41.642168
+ S 0 0.000000 0.000000 0.000000 0.848631 0.000000
+ C 0 0.000000 -14.605613 0.848631 14.605613 131.642168 48.357832
+ S 0 0.000000 11.763540 4.900528 12.195184 5.385980
+ C 0 0.000000 -17.647747 0.953529 17.647436 139.540662 40.799907
+ S 0 0.000000 12.405298 4.219853 12.899568 4.641370
+#UseOldPaths - Seg6 is short
+# P "Normal" 1 6 4 5
+# P "Reverse" 1 2 3
+# E 0.000000 0.000000 270.000000
+# E 12.899568 4.641347 49.542222
+# E 12.195184 5.383598 41.642160
+# S 0 0.000000 0.000000 0.000000 0.853970 0.000000
+# C 0 0.000000 -14.598485 0.853989 14.598485 131.642084 48.357992
+# S 0 0.000000 11.763573 4.898159 12.195184 5.383598
+# C 0 0.000000 -17.647609 0.954021 17.647609 139.542146 40.457930
+# S 0 0.000000 12.405339 4.219843 12.899568 4.641347
+# S 0 0.000000 0.853970 0.000000 0.953998 0.000000
END
TURNOUT HO "Fast Tracks #8 Right Curve 18-15 Turnout FT-8-R-18-15"
- P "Normal" 1 6 4 5
+#UseOldPaths - Seg6 is short
+ U "Curved Turnout" "" "Fast Tracks" "#8 Left Curve 18-15 TurnoutL" "FT-8-L-18-151" "#8 Right Curve 18-15 Turnout" "FT-8-R-18-15" 12.195184 48.357832 5.385980 40.457778 4.641370 12.899568 0.000000 0.000000 0
+ P "Normal" 1 4 5
P "Reverse" 1 2 3
E 0.000000 0.000000 270.000000
- E 12.899568 -4.641347 130.457778
- E 12.195184 -5.383598 138.357840
- S 0 0.000000 0.000000 0.000000 0.853970 0.000000
- C 0 0.000000 14.598485 0.853912 -14.598485 0.000076 48.357992
- S 0 0.000000 11.763573 -4.898159 12.195184 -5.383598
- C 0 0.000000 17.647609 0.953928 -17.647609 0.000076 40.457930
- S 0 0.000000 12.405339 -4.219843 12.899568 -4.641347
- S 0 0.000000 0.853970 0.000000 0.953998 0.000000
+ E 12.899568 -4.641370 130.457778
+ E 12.195184 -5.385980 138.357832
+ S 0 0.000000 0.000000 0.000000 0.848631 -0.000000
+ C 0 0.000000 14.605613 0.848631 -14.605613 0.000000 48.357832
+ S 0 0.000000 11.763540 -4.900528 12.195184 -5.385980
+ C 0 0.000000 17.647747 0.953529 -17.647436 359.659431 40.799907
+ S 0 0.000000 12.405298 -4.219853 12.899568 -4.641370
+# P "Normal" 1 6 4 5
+# P "Reverse" 1 2 3
+# E 0.000000 0.000000 270.000000
+# E 12.899568 -4.641347 130.457778
+# E 12.195184 -5.383598 138.357840
+# S 0 0.000000 0.000000 0.000000 0.853970 0.000000
+# C 0 0.000000 14.598485 0.853912 -14.598485 0.000076 48.357992
+# S 0 0.000000 11.763573 -4.898159 12.195184 -5.383598
+# C 0 0.000000 17.647609 0.953928 -17.647609 0.000076 40.457930
+# S 0 0.000000 12.405339 -4.219843 12.899568 -4.641347
+# S 0 0.000000 0.853970 0.000000 0.953998 0.000000
END
TURNOUT HO "Fast Tracks #8 Left Curve 24-20 Turnout FT-8-L-24-20"
P "Normal" 1 4 5
@@ -487,9 +511,11 @@ TURNOUT HO "Fast Tracks #10 Right Curve 60-46 Turnout FT-10-R-60-46"
SUBCONTENTS Fast Track HO Scale - Slips
-TURNOUT HO "Fast Tracks #4 Slip Turnout (min length) FT-S-4"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Fast Tracks #4 Slip Turnout (min length) FT-S-4" 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 7.500000 0.000000 90.000000
E 0.119077 0.937495 284.477524
@@ -503,9 +529,11 @@ TURNOUT HO "Fast Tracks #4 Slip Turnout (min length) FT-S-4"
C 0 0.000000 19.294700 1.299227 -19.294700 0.000076 14.477676
C 0 0.000000 -19.294700 6.200721 19.294694 180.000076 14.477676
END
-TURNOUT HO "Fast Tracks #5 Slip Turnout (min length) FT-S-5"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Fast Tracks #5 Slip Turnout (min length) FT-S-5" 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.800000 0.000000 90.000000
E 0.088897 0.879994 281.536969
@@ -519,9 +547,12 @@ TURNOUT HO "Fast Tracks #5 Slip Turnout (min length) FT-S-5"
C 0 0.000000 30.693984 1.299234 -30.693984 0.000076 11.537121
C 0 0.000000 -30.693984 7.500684 30.693976 180.000076 11.537121
END
-TURNOUT HO "Fast Tracks #6 Slip Turnout (min length) FT-S-6" U "Double Slipswitch" "" "Fast Tracks" "#6 Slip Turnout (min length)" "FT-S-6" 10.200000 9.594076 10.200000 0.000000 0.031250 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Fast Tracks #6 Slip Turnout (min length) FT-S-6" 512
+ U "Double Slipswitch" "" "Fast Tracks" "#6 Slip Turnout (min length)" "FT-S-6" 10.200000 9.594076 10.200000 0.000000 0.031250 0
+ 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 10.200000 0.000000 90.000000
E 0.071331 0.849993 279.594076
@@ -535,9 +566,11 @@ TURNOUT HO "Fast Tracks #6 Slip Turnout (min length) FT-S-6" U "Double Slipswitc
C 0 0.000000 45.289320 1.299241 -45.289320 0.000076 9.594228
C 0 0.000000 -45.289320 8.900638 45.289310 180.000076 9.594228
END
-TURNOUT HO "Fast Tracks #8 Slip Turnout (min length) FT-S-8"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Fast Tracks #8 Slip Turnout (min length) FT-S-8" 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 15.400000 0.000000 90.000000
E 0.060392 0.962490 277.180762
diff --git a/app/lib/params/FastTrack_n.xtp b/app/lib/params/FastTrack_n.xtp
index 45395f4..0ef3742 100644
--- a/app/lib/params/FastTrack_n.xtp
+++ b/app/lib/params/FastTrack_n.xtp
@@ -402,10 +402,12 @@ TURNOUT N "Fast Track #6 Left Crossover AF-N-C-6-ME55"
S 0 0.000000 4.303441 0.458331 4.987898 0.632221
C 0 0.000000 14.885974 8.653321 -13.795422 345.745267 14.254733
END
-TURNOUT N "Fast Track #6 Slip Switch AF-N-S-6-ME55"
+TURNOUT N "Fast Track #6 Slip Switch AF-N-S-6-ME55" 512
U "Double Slipswitch" "" "Fast Track" "#6 Slip Switch" "AF-N-S-6-ME55" 5.629921 9.594068 5.629921 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.629921 0.000000 90.000000
E 0.039372 0.469160 279.594068
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-MicroEngineering250.xtp b/app/lib/params/G-MicroEngineering250.xtp
new file mode 100644
index 0000000..411b08d
--- /dev/null
+++ b/app/lib/params/G-MicroEngineering250.xtp
@@ -0,0 +1,49 @@
+CONTENTS Micro-Engineering G Code 250
+
+SUBCONTENTS Micro-Engineering G-Scale Track - 250 Al/NS Straight
+TURNOUT G "ME G-Trak 250 Alum 12"" Straight 22-001/23-001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 12.000000 0.000000
+ END$SEGS
+TURNOUT G "ME G-Trak 250 Alum 24"" Straight 22-002/23-002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 24.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT G "ME G-Trak 250 Alum 36"" Straight 22-003/23-003"
+ 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 Micro-Engineering G-Scale Track - 250 Al/NS Curve
+TURNOUT G "ME G-Trak 250 Alum 24"" Radius 30d Curve 22-102/23-102"
+ 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
+ END$SEGS
+TURNOUT G "ME G-Trak 250 Alum 48"" Radius 22.5d Curve 22-104/23-104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 18.368805 -3.653782 112.500000
+ C 0 0 48.000000 0.000000 -48.000000 0.000000 22.500000
+ END$SEGS
+TURNOUT G "ME G-Trak 250 Alum 80"" Radius 18d Curve 22-107/23-107"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 24.721360 -3.915479 108.000000
+ C 0 0 80.000000 0.000000 -80.000000 0.000000 18.000000
+ END$SEGS
+TURNOUT G "ME G-Trak 250 Alum 120"" Radius 12d Curve 22-110/23-110"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 24.949403 -2.622288 102.000000
+ C 0 0 120.000000 0.000000 -120.000000 0.000000 12.000000
+ END$SEGS
+
diff --git a/app/lib/params/G-MicroEngineering332.xtp b/app/lib/params/G-MicroEngineering332.xtp
new file mode 100644
index 0000000..61b3e99
--- /dev/null
+++ b/app/lib/params/G-MicroEngineering332.xtp
@@ -0,0 +1,49 @@
+CONTENTS Micro-Engineering G Code 332
+
+SUBCONTENTS Micro-Engineering G-Scale Track - 332 Aluminum Straight
+TURNOUT G "ME G-Trak 332 Alum 12"" Straight 20-001"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 12.000000 0.000000
+ END$SEGS
+TURNOUT G "ME G-Trak 332 Alum 24"" Straight 20-002"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 24.000000 0.000000 90.000000
+ S 0 0 0.000000 0.000000 24.000000 0.000000
+ END$SEGS
+TURNOUT G "ME G-Trak 332 Alum 36"" Straight 20-003"
+ 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 Micro-Engineering G-Scale Track - 332 Aluminum Curve
+TURNOUT G "ME G-Trak 332 Alum 24"" Radius 30d Curve 20-102"
+ 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
+ END$SEGS
+TURNOUT G "ME G-Trak 332 Alum 48"" Radius 22.5d Curve 20-104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 18.368805 -3.653782 112.500000
+ C 0 0 48.000000 0.000000 -48.000000 0.000000 22.500000
+ END$SEGS
+TURNOUT G "ME G-Trak 332 Alum 80"" Radius 18d Curve 20-107"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 24.721360 -3.915479 108.000000
+ C 0 0 80.000000 0.000000 -80.000000 0.000000 18.000000
+ END$SEGS
+TURNOUT G "ME G-Trak 332 Alum 120"" Radius 12d Curve 20-110"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 24.949403 -2.622288 102.000000
+ C 0 0 120.000000 0.000000 -120.000000 0.000000 12.000000
+ END$SEGS
+
diff --git a/app/lib/params/G-MicroEngineeringTrack.xtp b/app/lib/params/G-MicroEngineeringTrack.xtp
deleted file mode 100644
index 2357b0f..0000000
--- a/app/lib/params/G-MicroEngineeringTrack.xtp
+++ /dev/null
@@ -1,142 +0,0 @@
-CONTENTS Micro-Engineering G-Scale
-SUBCONTENTS Micro-Engineering G-Scale Track - 332 Aluminum Straight
-TURNOUT G "ME G-Trak 332 Alum 12"" Straight 20-001"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 12.000000 0.000000
-END
-TURNOUT G "ME G-Trak 332 Alum 24"" Straight 20-002"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 24.000000 0.000000
-END
-TURNOUT G "ME G-Trak 332 Alum 36"" Straight 20-003"
- 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 Micro-Engineering G-Scale Track - 332 Aluminum Curve
-TURNOUT G "ME G-Trak 332 Alum 24"" Radius 30d Curve 20-102
- 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
-END
-TURNOUT G "ME G-Trak 332 Alum 48"" Radius 22.5d Curve 20-104
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.368805 -3.653782 112.500000
- C 0 0 48.000000 0.000000 -48.000000 0.000000 22.500000
-END
-TURNOUT G "ME G-Trak 332 Alum 80"" Radius 18d Curve 20-107
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.721360 -3.915479 108.000000
- C 0 0 80.000000 0.000000 -80.000000 0.000000 18.000000
-END
-TURNOUT G "ME G-Trak 332 Alum 120"" Radius 12d Curve 20-110
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.949403 -2.622288 102.000000
- C 0 0 120.000000 0.000000 -120.000000 0.000000 12.000000
-END
-
-
-SUBCONTENTS Micro-Engineering G-Scale Track - 250 Aluminum Straight
-TURNOUT G "ME G-Trak 250 Alum 12"" Straight 22-001"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 12.000000 0.000000
-END
-TURNOUT G "ME G-Trak 250 Alum 24"" Straight 22-002"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 24.000000 0.000000
-END
-TURNOUT G "ME G-Trak 250 Alum 36"" Straight 22-003"
- 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 Micro-Engineering G-Scale Track - 250 Aluminum Curve
-TURNOUT G "ME G-Trak 250 Alum 24"" Radius 30d Curve 22-102
- 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
-END
-TURNOUT G "ME G-Trak 250 Alum 48"" Radius 22.5d Curve 22-104
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.368805 -3.653782 112.500000
- C 0 0 48.000000 0.000000 -48.000000 0.000000 22.500000
-END
-TURNOUT G "ME G-Trak 250 Alum 80"" Radius 18d Curve 22-107
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.721360 -3.915479 108.000000
- C 0 0 80.000000 0.000000 -80.000000 0.000000 18.000000
-END
-TURNOUT G "ME G-Trak 250 Alum 120"" Radius 12d Curve 22-110
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.949403 -2.622288 102.000000
- C 0 0 120.000000 0.000000 -120.000000 0.000000 12.000000
-END
-
-SUBCONTENTS Micro-Engineering G-Scale Track - 250 Nickle Silver Straight
-TURNOUT G "ME G-Trak 250 NS 12"" Straight 23-001"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 12.000000 0.000000
-END
-TURNOUT G "ME G-Trak 250 NS 24"" Straight 23-002"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.000000 0.000000 90.000000
- S 0 0 0.000000 0.000000 24.000000 0.000000
-END
-TURNOUT G "ME G-Trak 250 NS 36"" Straight 23-003"
- 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 Micro-Engineering G-Scale Track - 250 Nickle Silver Curve
-TURNOUT G "ME G-Trak 250 NS 24"" Radius 30d Curve 23-102
- 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
-END
-TURNOUT G "ME G-Trak 250 NS 48"" Radius 22.5d Curve 23-104
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 18.368805 -3.653782 112.500000
- C 0 0 48.000000 0.000000 -48.000000 0.000000 22.500000
-END
-TURNOUT G "ME G-Trak 250 NS 80"" Radius 18d Curve 23-107
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.721360 -3.915479 108.000000
- C 0 0 80.000000 0.000000 -80.000000 0.000000 18.000000
-END
-TURNOUT G "ME G-Trak 250 NS 120"" Radius 12d Curve 23-110
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 24.949403 -2.622288 102.000000
- C 0 0 120.000000 0.000000 -120.000000 0.000000 12.000000
-END
diff --git a/app/lib/params/G-NMRA-RP12-23.xtp b/app/lib/params/G-NMRA-RP12-23.xtp
index 6d36e4e..d58ae16 100644
--- a/app/lib/params/G-NMRA-RP12-23.xtp
+++ b/app/lib/params/G-NMRA-RP12-23.xtp
@@ -558,9 +558,11 @@ TURNOUT G "NMRA G #8 SINGLE SLIP 8SS"
END
SUBCONTENTS NMRA G Scale Double Slip Turnouts
-TURNOUT G "NMRA G #6 DOUBLE SLIP 6DS"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT G "NMRA G #6 DOUBLE SLIP 6DS" 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 41.312000 0.000000 90.000000
E 0.284905 3.418894 279.527283
@@ -574,9 +576,11 @@ TURNOUT G "NMRA G #6 DOUBLE SLIP 6DS"
C 0 0.000000 205.386612 3.540113 -205.386612 0.000076 9.527435
C 0 0.000000 -205.386612 37.771338 205.386567 180.000076 9.527435
END
-TURNOUT G "NMRA G #8 DOUBLE SLIP 8DS"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT G "NMRA G #8 DOUBLE SLIP 8DS" 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 57.938000 0.000000 90.000000
E 0.225435 3.606994 277.152669
diff --git a/app/lib/params/G-NQD-AMAX Plastic.xtp b/app/lib/params/G-NQD-AMAX Plastic.xtp
index 262504f..c404a88 100644
--- a/app/lib/params/G-NQD-AMAX Plastic.xtp
+++ b/app/lib/params/G-NQD-AMAX Plastic.xtp
@@ -8,7 +8,7 @@ TURNOUT G "Newqida/AMAX Straight 300mm 78010"
END
SUBCONTENTS Curve Track
-TURNOUT G "Newqida/AMAX Curved 650mm 30� 78020"
+TURNOUT G "Newqida/AMAX Curved 650mm 30° 78020"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 12.795276 3.428484 60.000000
diff --git a/app/lib/params/G-Piko.xtp b/app/lib/params/G-Piko.xtp
new file mode 100644
index 0000000..f55e459
--- /dev/null
+++ b/app/lib/params/G-Piko.xtp
@@ -0,0 +1,248 @@
+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
new file mode 100644
index 0000000..8ef81de
--- /dev/null
+++ b/app/lib/params/G-Playmobil RC Track.xtp
@@ -0,0 +1,61 @@
+CONTENTS Playmobil RC Track
+SUBCONTENTS Playmobil RC Track - STRAIGHTS
+TURNOUT G "Playmobil Straight Track 4384/4386"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.629921 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.629921 0.000000
+ END$SEGS
+TURNOUT G "Playmobil Straight Adjustment Track 7357"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.590551 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.590551 0.000000
+ END$SEGS
+
+SUBCONTENTS Playmobil RC Track - CURVES
+TURNOUT G "Playmobil Curve Track 4385/4387"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.629921 -2.848279 120.000000
+ C 0 0 21.259843 0.000000 -21.259843 0.000000 30.000000
+ END$SEGS
+
+SUBCONTENTS Playmobil RC Track - Switches
+TURNOUT G "Playmobil Left Switch 4388"
+ P "Normal" 1
+ P "Route" 2
+ E 0.000000 0.000000 270.000000
+ E 10.629921 0.000000 90.000000
+ E 10.629921 2.848279 60.000000
+ S 0 0.000000 0.000000 0.000000 10.629921 0.000000
+ C 0 0 21.259843 0.000000 21.259843 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Playmobil Right Switch 4389"
+ P "Normal" 1
+ P "Route" 2
+ E 0.000000 0.000000 270.000000
+ E 10.629921 0.000000 90.000000
+ E 10.629921 -2.848279 120.000000
+ S 0 0.000000 0.000000 0.000000 10.629921 0.000000
+ C 0 0 21.259843 0.000000 -21.259843 0.000000 30.000000
+ END$SEGS
+
+SUBCONTENTS Playmobil RC Track - Cross Over
+TURNOUT G "Playmobil Cross Over Track 4390"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 10.629921 0.000000 90.000000
+ E 10.629921 -2.848279 120.000000
+ E 0.000000 2.848279 300.000000
+ S 0 0.000000 0.000000 0.000000 10.629921 0.000000
+ S 0 0.000000 0.000000 2.848279 10.629921 -2.848279
+ END$SEGS
+
+SUBCONTENTS Playmobil RC Track - BUMPER
+TURNOUT G "Playmobil Track Bumper 4391"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 2.362205 0.000000
+ L3 0 3.000000 0.000000 0.000000 0 2.362205 0.000000 0
+ END$SEGS
diff --git a/app/lib/params/G-USA.xtp b/app/lib/params/G-USA.xtp
new file mode 100644
index 0000000..ab57287
--- /dev/null
+++ b/app/lib/params/G-USA.xtp
@@ -0,0 +1,194 @@
+CONTENTS USA Trains
+
+SUBCONTENTS USA Trains Straight Track
+TURNOUT G "USA Trains 6"" Straight R81015"
+ 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 G "USA Trains 12"" Straight R81000"
+ 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
+TURNOUT G "USA Trains 24"" Straight R81060"
+ 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
+ END$SEGS
+TURNOUT G "USA Trains 60"" Straight R81065"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 60.000000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 60.000000 0.000000
+ END$SEGS
+
+SUBCONTENTS USA Trains Curve Track
+TURNOUT G "USA Trains 4' Diameter R81100"
+ 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 "USA Trains 5' Diameter R81500"
+ 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
+TURNOUT G "USA Trains 8' Diameter R81600"
+ 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 G "USA Trains 10' Diameter R81700"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 30.000000 8.038476 60.000000
+ C 0 0.000000 -60.000000 0.000000 60.000000 150.000000 30.000000
+ END$SEGS
+TURNOUT G "USA Trains 16' Diameter R81800"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 36.737610 7.307565 67.500000
+ C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
+ END$SEGS
+TURNOUT G "USA Trains 20' Diameter R81900"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 45.922012 9.134456 67.500000
+ C 0 0.000000 -120.000000 0.000000 120.000000 157.500000 22.500000
+ END$SEGS
+
+SUBCONTENTS USA Trains Turnouts
+TURNOUT G "USA Trains Left-hand Remote Switch R81215"
+ 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 "USA Trains Right-hand Remote Switch R81205"
+ 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
+
+TURNOUT G "USA Trains 8' DIA Lefthand R81625"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 19.000000 0.000000 90.000000
+ E 18.368805 3.653782 67.500000
+ 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 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 19.000000 0.000000 90.000000
+ E 18.368805 -3.653782 112.500000
+ 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 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 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 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 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 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 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
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ E 36.000000 4.250000 80.405932
+ 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 G "USA Trains #6 Right-hand R81605"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 36.000000 0.000000 90.000000
+ E 36.000000 -4.250000 99.594068
+ 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
diff --git a/app/lib/params/G-aristo.xtp b/app/lib/params/G-aristo.xtp
index cf7d2f2..bf6346e 100644
--- a/app/lib/params/G-aristo.xtp
+++ b/app/lib/params/G-aristo.xtp
@@ -1,232 +1,236 @@
-CONTENTS Aristo-Craft
-TURNOUT G "Aristo-Craft .5' Straight 11001/20031/30031"
- 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 G "Aristo-Craft 1' Straight 11000/20030/30030"
- 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
-TURNOUT G "Aristo-Craft 2' Straight 11060/20060/30060"
- 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
- END
-TURNOUT G "Aristo-Craft 3' Straight 11070/20090/30090"
- 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 G "Aristo-Craft 4.5' Straight 11097/20093/30093"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 54.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 54.000000 0.000000
- END
-TURNOUT G "Aristo-Craft 5' Straight 10099/20195/30195"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 60.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 60.000000 0.000000
- END
-TURNOUT G "Aristo-Craft 4' Diameter 11100/30100"
- 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
-TURNOUT G "Aristo-Craft 5' Diameter 11500/20110/30110"
- 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
-TURNOUT G "Aristo-Craft 6.5' Diameter 11550/20112/30112"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 19.500000 5.225009 60.000000
- C 0 0.000000 -39.000000 0.000000 39.000000 150.000000 30.000000
- END
-TURNOUT G "Aristo-Craft 8' Diameter 11600/20115/30115"
- 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
-TURNOUT G "Aristo-Craft 9' Diameter 11700/20117/30117"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 27.000000 7.234628 60.000000
- C 0 0.000000 -54.000000 0.000000 54.000000 150.000000 30.000000
- END
-TURNOUT G "Aristo-Craft 10' Diameter 11800/20120/30120"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 30.000000 8.038476 60.000000
- C 0 0.000000 -60.000000 0.000000 60.000000 150.000000 30.000000
- END
-TURNOUT G "Aristo-Craft 11.5' Diameter 11801/20121/30121"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 26.405157 5.252312 67.500000
- C 0 0.000000 -69.000000 0.000000 69.000000 157.500000 22.500000
- END
-TURNOUT G "Aristo-Craft 12.5 Diameter 11802/20122/30112"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 28.701257 5.709035 67.500000
- C 0 0.000000 -75.000000 0.000000 75.000000 157.500000 22.500000
- END
-TURNOUT G "Aristo-Craft 14' Diameter 11803/20123/30123"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 32.145408 6.394119 67.500000
- C 0 0.000000 -84.000000 0.000000 84.000000 157.500000 22.500000
- END
-TURNOUT G "Aristo-Craft 15' Diameter 11804/20124/30124"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 34.441509 6.850842 67.500000
- C 0 0.000000 -90.000000 0.000000 90.000000 157.500000 22.500000
- END
-TURNOUT G "Aristo-Craft 16.5' Diameter 11805/20130/30130"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 37.885660 7.535926 67.500000
- C 0 0.000000 -99.000000 0.000000 99.000000 157.500000 22.500000
- END
-TURNOUT G "Aristo-Craft 20' Diameter 11820/20125/30125"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 45.922012 9.134456 67.500000
- C 0 0.000000 -120.000000 0.000000 120.000000 157.500000 22.500000
- END
-TURNOUT G "Aristo-Craft 90 Degree Crossing 20410/30410"
- U "Crossing" "" "Aristo-Craft" "90 Degree Crossing" "20410/30410" 5.750000 90.000000 5.750000 0.000000 0.000000 0
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.750000 0.000000 90.000000
- E 2.875000 2.875000 360.000000
- E 2.875000 -2.875000 180.000000
- S 0 0.000000 0.000000 0.000000 5.750000 0.000000
- S 0 0.000000 2.875000 2.875000 2.875000 -2.875000
- END
-TURNOUT G "Aristo-Craft 30 Degree Crossing 20405/30405"
- U "Crossing" "" "Aristo-Craft" "30 Degree Crossing" "20405/30405" 14.000000 30.000000 14.000000 0.000000 0.000000 0
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 14.000000 0.000000 90.000000
- E 0.937822 3.500000 300.000000
- E 13.062178 -3.500000 120.000000
- S 0 0.000000 0.000000 0.000000 14.000000 0.000000
- S 0 0.000000 0.937822 3.500000 13.062178 -3.500000
- END
-TURNOUT G "Aristo-Craft 19.5 Degree Crossing 20400/30400"
- U "Crossing" "" "Aristo-Craft" "19.5 Degree Crossing" "20400/30400" 19.000000 19.500000 19.000000 0.000000 0.000000 0
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 19.000000 0.000000 90.000000
- E 0.544906 3.171165 289.500000
- E 18.455094 -3.171165 109.500000
- S 0 0.000000 0.000000 0.000000 19.000000 0.000000
- S 0 0.000000 0.544906 3.171165 18.455094 -3.171165
- END
-TURNOUT G "Aristo-Craft Rerailer 11350/30350"
- 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
-TURNOUT G "Aristo-Craft Rerailer with Insulator Gap 11351/20351"
- 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
-TURNOUT G "Aristo-Craft Lefthand Manual Switch 20210/30350"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 12.000000 3.000000 60.000000
- S 0 0.000000 0.000000 0.000000 2.573848 0.000000
- S 0 0.000000 2.573848 0.000000 12.000000 0.000000
- C 0 0.000000 -15.786575 2.573848 15.786575 150.000000 30.000000
- S 0 0.000000 10.467135 2.115000 12.000000 3.000000
- END
-TURNOUT G "Aristo-Craft Righthand Manual Switch 20200/30300"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 12.000000 -3.000000 120.000000
- S 0 0.000000 0.000000 0.000000 2.573848 0.000000
- S 0 0.000000 2.573848 0.000000 12.000000 0.000000
- C 0 0.000000 15.786575 2.573848 -15.786575 0.000000 30.000000
- S 0 0.000000 10.467135 -2.115000 12.000000 -3.000000
- END
-TURNOUT G "Aristo-Craft Lefthand Remote Switch 20215/30360"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 12.000000 3.000000 60.000000
- S 0 0.000000 0.000000 0.000000 2.573848 0.000000
- S 0 0.000000 2.573848 0.000000 12.000000 0.000000
- C 0 0.000000 -15.786575 2.573848 15.786575 150.000000 30.000000
- S 0 0.000000 10.467135 2.115000 12.000000 3.000000
- END
-TURNOUT G "Aristo-Craft Righthand Remote Switch 20205/30310"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 12.000000 -3.000000 120.000000
- S 0 0.000000 0.000000 0.000000 2.573848 0.000000
- S 0 0.000000 2.573848 0.000000 12.000000 0.000000
- C 0 0.000000 15.786575 2.573848 -15.786575 0.000000 30.000000
- S 0 0.000000 10.467135 -2.115000 12.000000 -3.000000
- END
-TURNOUT G "Aristo-Craft #6 Lefthand 20340/20340"
- U "Regular Turnout" "" "Aristo-Craft" "#6 Lefthand" "20340/20340" "#6 Righthand" "20330/30330" 35.500000 9.594068 3.000000 35.500000 0.000000 0.000000 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 35.500000 0.000000 90.000000
- E 35.500000 3.000000 80.405932
- S 0 0.000000 0.000000 0.000000 1.770000 0.000000
- S 0 0.000000 1.770000 0.000000 35.500000 0.000000
- C 0 0.000000 -190.439935 1.770000 190.439935 170.405932 9.594068
- S 0 0.000000 33.509989 2.663627 35.500000 3.000000
- END
-TURNOUT G "Aristo-Craft #6 Righthand 20330/30330"
- U "Regular Turnout" "" "Aristo-Craft" "#6 Lefthand" "20340/20340" "#6 Righthand" "20330/30330" 35.500000 9.594068 3.000000 35.500000 0.000000 0.000000 0
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 35.500000 0.000000 90.000000
- E 35.500000 -3.000000 99.594068
- S 0 0.000000 0.000000 0.000000 1.770000 0.000000
- S 0 0.000000 1.770000 0.000000 35.500000 0.000000
- C 0 0.000000 190.439935 1.770000 -190.439935 0.000000 9.594068
- S 0 0.000000 33.509989 -2.663627 35.500000 -3.000000
- END
-TURNOUT G "Aristo-Craft #6 Wye 20345/30345"
- U "Wye Turnout" "" "Aristo-Craft" "#6 Wye" "20345/30345" 35.750000 9.594068 3.000000 3.000000 9.594068 35.750000 0.000000 0.000000 0
- P "Left" 1 2 3
- P "Right" 1 4 5
- E 0.000000 0.000000 270.000000
- E 35.750000 3.000000 80.405932
- E 35.750000 -3.000000 99.594068
- S 0 0.000000 0.000000 0.000000 1.771761 0.000000
- C 0 0.000000 -193.397975 1.771761 193.397975 170.405932 9.594068
- S 0 0.000000 34.004756 2.705000 35.750000 3.000000
- C 0 0.000000 193.397975 1.771761 -193.397975 0.000000 9.594068
- S 0 0.000000 34.004756 -2.705000 35.750000 -3.000000
- END
+CONTENTS Aristo-Craft
+SUBCONTENTS Straight
+TURNOUT G "Aristo-Craft 0.5' Straight 11001/20031/30031"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.905512 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.905512 0.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 1' Straight 11000/20030/30030"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.811024 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 11.811024 0.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 2' Straight 11060/20060/30060"
+ 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 "Aristo-Craft 3' Straight 11070/20090/30090"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 35.433071 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 35.433071 0.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 4.5' Straight 11097/20093/30093"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 53.149606 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 53.149606 0.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 5' Straight 10099/20195/30195"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 59.055118 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 59.055118 0.000000
+ END$SEGS
+
+SUBCONTENTS Curved
+TURNOUT G "Aristo-Craft 4' Diameter 11100/30100"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.811024 3.164754 60.000000
+ C 0 0.000000 -23.622047 0.000000 23.622047 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 5' Diameter 11500/20110/30110"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 14.763780 3.955943 60.000000
+ C 0 0.000000 -29.527559 0.000000 29.527559 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 6.5' Diameter 11550/20112/30112"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 19.192913 5.142726 60.000000
+ C 0 0.000000 -38.385827 0.000000 38.385827 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 8' Diameter 11600/20115/30115"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 18.079532 3.596243 67.500000
+ C 0 0.000000 -47.244094 0.000000 47.244094 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Aristo-Craft 9' Diameter 11700/20117/30117"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 26.574803 7.120697 60.000000
+ C 0 0.000000 -53.149606 0.000000 53.149606 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 10' Diameter 11800/20120/30120"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 29.527559 7.911886 60.000000
+ C 0 0.000000 -59.055118 0.000000 59.055118 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft 11.5' Diameter 11801/20121/30121"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 25.989328 5.169599 67.500000
+ C 0 0.000000 -67.913386 0.000000 67.913386 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Aristo-Craft 12.5' Diameter 11802/20122/30122"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 28.249269 5.619129 67.500000
+ C 0 0.000000 -73.818898 0.000000 73.818898 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Aristo-Craft 14' Diameter 11803/20123/30123"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 31.639181 6.293424 67.500000
+ C 0 0.000000 -82.677165 0.000000 82.677165 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Aristo-Craft 15' Diameter 11804/20124/30124"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 33.899123 6.742955 67.500000
+ C 0 0.000000 -88.582677 0.000000 88.582677 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Aristo-Craft 16.5' Diameter 11805/20130/30130"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 37.289035 7.417250 67.500000
+ C 0 0.000000 -97.440945 0.000000 97.440945 157.500000 22.500000
+ END$SEGS
+TURNOUT G "Aristo-Craft 20' Diameter 11820/20125/30125"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 45.198831 8.990606 67.500000
+ C 0 0.000000 -118.110236 0.000000 118.110236 157.500000 22.500000
+ END$SEGS
+
+SUBCONTENTS Crossing
+# Assumed 150mm
+TURNOUT A "Aristo-Craft 90 Degree Crossing 20410/30410"
+ U "Crossing" "" "Aristo-Craft" "90 Degree Crossing" "20410/30410" 5.905512 90.000000 5.905512 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.905512 0.000000 90.000000
+ E 2.952764 2.952756 360.000000
+ E 2.952748 -2.952756 180.000000
+ S 0 0.000000 0.000000 0.000000 5.905512 0.000000
+ S 0 0.000000 2.952764 2.952756 2.952748 -2.952756
+ END$SEGS
+# Assumed 360mm
+TURNOUT A "Aristo-Craft 30 Degree Crossing 20405/30405"
+ U "Crossing" "" "Aristo-Craft" "30 Degree Crossing" "20405/30405" 14.173228 30.000000 14.173228 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 14.173228 0.000000 90.000000
+ E 0.949420 3.543296 300.000000
+ E 13.223808 -3.543296 120.000000
+ S 0 0.000000 0.000000 0.000000 14.173228 0.000000
+ S 0 0.000000 0.949420 3.543296 13.223808 -3.543296
+ END$SEGS
+# Assumed 480mm
+TURNOUT A "Aristo-Craft 19.5 Degree Crossing 20400/30400"
+ U "Crossing" "" "Aristo-Craft" "19.5 Degree Crossing" "20400/30400" 18.897638 19.500000 18.897638 0.000000 0.000000 0
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 18.897638 0.000000 90.000000
+ E 0.541965 3.154066 289.500000
+ E 18.355673 -3.154066 109.500000
+ S 0 0.000000 0.000000 0.000000 18.897638 0.000000
+ S 0 0.000000 0.541965 3.154066 18.355673 -3.154066
+ END$SEGS
+
+SUBCONTENTS Aristo Misc
+TURNOUT G "Aristo-Craft Rerailer 11350/30350"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.811024 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 11.811024 0.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft Rerailer with Insulator Gap 11351/20351"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 11.811024 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 11.811024 0.000000
+ END$SEGS
+
+SUBCONTENTS Aristo Turnout
+TURNOUT G "Aristo-Craft Lefthand Manual Switch 20210/30350"
+ 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.000000 0.000000 0.000000 11.811024 0.000000
+ C 0 0.000000 -23.622047 0.000000 23.622047 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft Righthand Manual Switch 20200/30300"
+ 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.000000 0.000000 0.000000 11.811024 0.000000
+ C 0 0.000000 23.622047 0.000000 -23.622047 0.000000 30.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft Lefthand Remote Switch 20215/30360"
+ 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.000000 0.000000 0.000000 11.811024 0.000000
+ C 0 0.000000 -23.622047 0.000000 23.622047 150.000000 30.000000
+ END$SEGS
+TURNOUT G "Aristo-Craft Righthand Remote Switch 20205/30310"
+ 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.000000 0.000000 0.000000 11.811024 0.000000
+ C 0 0.000000 23.622047 0.000000 -23.622047 0.000000 30.000000
+ END$SEGS
+TURNOUT A "Aristo-Craft #6 Left-hand 20340/30340"
+ U "Regular Turnout" "" "Aristo-Craft" "#6 Left-hand" "20340/30340" "#6 Right-hand" "20330/30330" 35.433071 9.594076 3.149606 35.433071 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 35.433071 0.000000 90.000000
+ E 35.433071 3.149606 80.405924
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ S 0 0.000000 1.770000 0.000000 35.433071 0.000000
+ C 0 0.000000 -179.099071 1.770238 179.099071 170.405848 9.594228
+ S 0 0.000000 31.620314 2.505085 35.433071 3.149606
+ END$SEGS
+TURNOUT A "Aristo-Craft #6 Right-hand 20330/30330"
+ U "Regular Turnout" "" "Aristo-Craft" "#6 Left-hand" "20340/30340" "#6 Right-hand" "20330/30330" 35.433071 9.594076 3.149606 35.433071 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 35.433071 0.000000 90.000000
+ E 35.433071 -3.149606 99.594076
+ S 0 0.000000 0.000000 0.000000 1.770000 -0.000000
+ S 0 0.000000 1.770000 -0.000000 35.433071 0.000000
+ C 0 0.000000 179.099071 1.769287 -179.099071 0.000076 9.594228
+ S 0 0.000000 31.620314 -2.505085 35.433071 -3.149606
+ END$SEGS
+TURNOUT A "Aristo-Craft #6 Wye 20345/30345"
+ U "Wye Turnout" "" "Aristo-Craft" "#6 Wye" "20345/30345" 35.433071 9.594076 3.149606 3.149606 9.594076 35.433071 0.000000 0.000000 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 35.433071 3.149606 80.405924
+ E 35.433071 -3.149606 99.594076
+ S 0 0.000000 0.000000 0.000000 1.770000 0.000000
+ C 0 0.000000 -179.099071 1.770238 179.099071 170.405848 9.594228
+ S 0 0.000000 31.620314 2.505085 35.433071 3.149606
+ C 0 0.000000 179.099071 1.769287 -179.099071 0.000076 9.594228
+ S 0 0.000000 31.620314 -2.505085 35.433071 -3.149606
+ END$SEGS
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 c267699..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"
- 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
- 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
- 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
-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/BachmannEZ-HO.xtp b/app/lib/params/HO-Bachmann EZ.xtp
index 13438a0..5d677bc 100644
--- a/app/lib/params/BachmannEZ-HO.xtp
+++ b/app/lib/params/HO-Bachmann EZ.xtp
@@ -1,5 +1,4 @@
CONTENTS Bachmann E-Z Track Components
-# Created By Dwyane Ward July 2007
SUBCONTENTS Bachmann E-Z Track - Straight Track
TURNOUT HO "Bachmann E-Z Track Straight 2.25in 44513"
@@ -85,7 +84,7 @@ TURNOUT HO "Bachmann E-Z Track Straight 0.75in 44592E"
-SUBCONTENTS Bachmann True-Tack - Curve Track
+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
@@ -189,7 +188,7 @@ TURNOUT HO "Bachmann E-Z Track Curved 35.5in 18° 44507"
SUBCONTENTS Bachmann E-Z Track - Track Turnouts
-TURNOUT HO "Bachmann E-Z Track Left Snap Manual Turnout 44561/44461"
+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
@@ -204,7 +203,7 @@ TURNOUT HO "Bachmann E-Z Track Left Snap Manual Turnout 44561/44461"
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 44562/44462"
+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
@@ -219,7 +218,49 @@ TURNOUT HO "Bachmann E-Z Track Right Snap Manual Turnout 44562/44462"
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 #5 Left Turnout 44132"
+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
@@ -234,7 +275,7 @@ TURNOUT HO "Bachmann E-Z Track #5 Left Turnout 44132"
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"
+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
@@ -249,7 +290,7 @@ TURNOUT HO "Bachmann E-Z Track #5 Right Turnout 44133"
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"
+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
@@ -297,7 +338,7 @@ TURNOUT HO "Bachmann E-Z Track #6 Right Turnout 44136"
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"
+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
@@ -320,7 +361,7 @@ TURNOUT HO "Bachmann E-Z Track #6 Right Crossover Turnout 44138"
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"
+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
@@ -347,7 +388,7 @@ TURNOUT HO "Bachmann E-Z Track #6 Left Crossover Turnout 44137"
-SUBCONTENTS Bachmann True-Tack - Misc Track
+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
@@ -374,7 +415,7 @@ TURNOUT HO "Bachmann E-Z Track Crossing 90° w/o ext 44541/44411"
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° 2" Str 44541/44411"
+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
@@ -429,6 +470,9 @@ TURNOUT HO "Bachmann E-Z Track Crossing 30° 44540/44440"
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
@@ -572,4 +616,90 @@ TURNOUT HO "Bachmann E-Z Track Terminal Curved 18in 30° 44502/44402"
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-DapolHOOO.xtp b/app/lib/params/HO-DapolHOOO.xtp
index f5f1e07..e5e4074 100644
--- a/app/lib/params/HO-DapolHOOO.xtp
+++ b/app/lib/params/HO-DapolHOOO.xtp
@@ -115,3 +115,154 @@ STRUCTURE OO "Dapol House 3"
3.543307 1.023622 0
3.385827 1.023622 0
END
+STRUCTURE OO "Dapol Ticket office 4"
+ F3 12699578 0.000000 8
+ 0.255906 1.968504 0
+ 3.346457 1.988189 0
+ 3.346457 1.594488 0
+ 3.543307 1.594488 0
+ 3.543307 0.669291 0
+ 0.059055 0.649606 0
+ 0.059055 1.574803 0
+ 0.255906 1.574803 0
+ F3 8487804 0.000000 8
+ 0.059055 3.346457 0
+ 0.059055 2.421260 0
+ 0.255906 2.421260 0
+ 0.236220 2.027559 0
+ 3.346457 2.027559 0
+ 3.366142 2.421260 0
+ 3.543307 2.421260 0
+ 3.543307 3.346457 0
+ F3 12632256 0.000000 4
+ 0.039370 0.610236 0
+ 3.543307 0.610236 0
+ 3.543307 0.078740 0
+ 0.039370 0.078740 0
+ F3 0 0.000000 4
+ 0.059055 2.362205 0
+ 0.196850 2.362205 0
+ 0.196850 1.653543 0
+ 0.059055 1.653543 0
+ F3 0 0.000000 4
+ 3.405512 2.362205 0
+ 3.543307 2.362205 0
+ 3.543307 1.653543 0
+ 3.405512 1.653543 0
+ L3 0 0.062500 0.031250 3.377707 0 3.574557 3.377707 0
+ L3 0 0.062500 3.574557 3.377707 0 3.574557 0.621801 0
+ L3 0 0.062500 3.574557 0.621801 0 0.031250 0.621801 0
+ L3 0 0.062500 0.031250 0.621801 0 0.031250 3.377707 0
+ L3 0 0.062500 0.228100 1.999754 0 3.377707 1.999754 0
+ L3 0 0.062500 0.031250 2.393455 0 0.228100 2.393455 0
+ L3 0 0.062500 0.236220 2.381890 0 0.228100 1.606053 0
+ L3 0 0.062500 0.228100 1.606053 0 0.031250 1.606053 0
+ L3 0 0.062500 0.031250 1.606053 0 0.031250 2.393455 0
+ L3 0 0.062500 3.377707 2.393455 0 3.574557 2.393455 0
+ L3 0 0.062500 3.574557 2.393455 0 3.574557 1.606053 0
+ L3 0 0.062500 3.574557 1.606053 0 3.377707 1.606053 0
+ L3 0 0.062500 3.377707 1.606053 0 3.377707 2.393455 0
+ L3 0 0.062500 0.031250 0.621801 0 3.574557 0.621801 0
+ L3 0 0.062500 3.574557 0.621801 0 3.574557 0.031250 0
+ L3 0 0.062500 3.574557 0.031250 0 0.031250 0.031250 0
+ L3 0 0.062500 0.031250 0.031250 0 0.031250 0.621801 0
+ END
+STRUCTURE OO "Dapol Country Church 5"
+ F3 4287396675 0.000000 4
+ 0.196850 0.218110 0
+ 0.472441 0.218110 0
+ 0.472441 2.777165 0
+ 0.196850 2.777165 0
+ F3 4287396675 0.000000 4
+ 2.559055 0.000000 0
+ 2.834646 0.000000 0
+ 2.834646 2.995276 0
+ 2.559055 2.995276 0
+ F3 4287396675 0.000000 4
+ 7.952756 0.000000 0
+ 7.677165 0.000000 0
+ 7.677165 1.084252 0
+ 7.952756 1.084252 0
+ F3 4287396675 0.000000 4
+ 7.952756 2.995276 0
+ 7.677165 2.995276 0
+ 7.677165 1.911024 0
+ 7.952756 1.911024 0
+ F3 4287396675 0.000000 4
+ 0.452756 1.320472 0
+ 7.125984 1.320472 0
+ 7.125984 1.674803 0
+ 0.452756 1.674803 0
+ F3 4285427310 0.000000 4
+ 0.452756 2.777165 0
+ 2.539370 2.777165 0
+ 2.539370 1.674803 0
+ 0.452756 1.674803 0
+ F3 4285427310 0.000000 4
+ 0.452756 0.237795 0
+ 2.539370 0.237795 0
+ 2.539370 1.320472 0
+ 0.452756 1.320472 0
+ F3 4285427310 0.000000 4
+ 2.814961 2.975591 0
+ 7.677165 2.975591 0
+ 7.677165 1.674803 0
+ 2.814961 1.674803 0
+ F3 4285427310 0.000000 4
+ 2.814961 0.019685 0
+ 7.677165 0.019685 0
+ 7.677165 1.320472 0
+ 2.814961 1.320472 0
+ F3 4285427310 0.000000 4
+ 4.333858 2.975591 0
+ 5.908661 2.975591 0
+ 5.908661 4.041732 0
+ 4.333858 4.041732 0
+ F3 4289699918 0.000000 4
+ 4.314173 4.022047 0
+ 5.928346 4.022047 0
+ 5.928346 3.785827 0
+ 4.314173 3.785827 0
+ F3 4289699918 0.000000 4
+ 5.003150 3.785827 0
+ 5.259055 3.785827 0
+ 5.259055 2.975591 0
+ 5.003150 2.975591 0
+ F3 4287971113 0.000000 4
+ 7.952756 1.084252 0
+ 7.125984 1.084252 0
+ 7.125984 1.911024 0
+ 7.952756 1.911024 0
+ F3 4287528523 0.000000 4
+ 7.952756 2.737795 0
+ 8.051181 2.737795 0
+ 8.051181 0.118110 0
+ 7.952756 0.118110 0
+ F3 4285688658 0.000000 4
+ 0.196850 2.265354 0
+ 0.000000 2.265354 0
+ 0.000000 2.029134 0
+ 0.196850 2.029134 0
+ F3 4285688658 0.000000 4
+ 2.677165 2.975591 0
+ 2.972441 2.975591 0
+ 2.972441 3.093701 0
+ 2.677165 3.093701 0
+ F3 4285688658 0.000000 4
+ 7.578740 2.975591 0
+ 7.874016 2.975591 0
+ 7.874016 3.093701 0
+ 7.578740 3.093701 0
+ F3 4285688658 0.000000 4
+ 8.051181 2.560630 0
+ 8.228346 2.560630 0
+ 8.228346 2.324409 0
+ 8.051181 2.324409 0
+ L3 4278321666 0.000000 2.539370 2.757480 0 2.539370 0.237795 0
+ L3 4278321666 0.000000 0.177165 1.497638 0 7.106299 1.497638 0
+ L3 4278321666 0.000000 7.952756 0.237795 0 7.933071 2.718110 0
+ L3 4278321666 0.000000 7.952756 1.891339 0 7.125984 1.084252 0
+ L3 4278321666 0.000000 7.125984 1.891339 0 7.952756 1.084252 0
+ L3 4278321666 0.000000 4.314173 2.975591 0 5.888976 2.975591 0
+ L3 4278321666 0.000000 5.121260 4.022047 0 5.121260 2.975591 0
+ END
diff --git a/app/lib/params/HO-Frateschi.xtp b/app/lib/params/HO-Frateschi.xtp
index 89cb804..3069ed9 100644
--- a/app/lib/params/HO-Frateschi.xtp
+++ b/app/lib/params/HO-Frateschi.xtp
@@ -151,7 +151,7 @@ TURNOUT HO "Frateschi HO Track Right Turnout (OLD) 4165R"
S 0 0.000000 5.885678 -0.922245 6.496063 -1.144416
END
SUBCONTENTS Frateschi HO Track - TurnTable
-TURNOUT HO "Frateschi Turntable 220mm 20d 4500"
+TURNOUT HO "Frateschi Turntable 220mm 20d 4500" 512
P "1" 1
P "2" 2
P "3" 3
@@ -193,4 +193,4 @@ TURNOUT HO "Frateschi Turntable 220mm 20d 4500"
A 0 0.031250 5.080709 0.000000 0.000000 0.000000 360.000000
A 0 0.031250 1.377727 0.000000 0.000000 0.000000 360.000000
G 0 0.000000 0.750000 0.000000 0.000000 0.000000 360.000000
-END \ No newline at end of file
+END
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
new file mode 100644
index 0000000..5faab01
--- /dev/null
+++ b/app/lib/params/HO-Kato.xtp
@@ -0,0 +1,733 @@
+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-Marklin C-Track.xtp b/app/lib/params/HO-Marklin C-Track.xtp
index 9f8be72..3fbb566 100644
--- a/app/lib/params/HO-Marklin C-Track.xtp
+++ b/app/lib/params/HO-Marklin C-Track.xtp
@@ -1,8 +1,8 @@
-CONTENTS Mrklin C-Track HO-Scale
+CONTENTS Märklin C-Track HO-Scale
-SUBCONTENTS Mrklin C-Track Straight Tracks
-TURNOUT HO "Mrklin C-Track Straight 64.3mm 24064"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 64.3mm" "24064" 2.531496
+SUBCONTENTS Märklin C-Track Straight Tracks
+TURNOUT HO "Märklin C-Track Straight 64.3mm 24064"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 64.3mm" "24064" 2.531496
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.531496 0.000000 90.000000
@@ -10,8 +10,8 @@ TURNOUT HO "Mrklin C-Track Straight 64.3mm 24064"
L 8421376 0.030000 0.000000 0.787400 2.531496 0.787400
L 8421376 0.030000 0.000000 -0.787400 2.531496 -0.787400
END
-TURNOUT HO "Mrklin C-Track Straight 70.8mm 24071"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 70.8mm" "24071" 2.787401
+TURNOUT HO "Märklin C-Track Straight 70.8mm 24071"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 70.8mm" "24071" 2.787401
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.787401 0.000000 90.000000
@@ -19,8 +19,8 @@ TURNOUT HO "Mrklin C-Track Straight 70.8mm 24071"
L 8421376 0.030000 0.000000 0.787400 2.787401 0.787400
L 8421376 0.030000 0.000000 -0.787400 2.787401 -0.787400
END
-TURNOUT HO "Mrklin C-Track Straight 77.5mm 24077"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 77.5mm" "24077" 3.051181
+TURNOUT HO "Märklin C-Track Straight 77.5mm 24077"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 77.5mm" "24077" 3.051181
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.051181 0.000000 90.000000
@@ -28,8 +28,8 @@ TURNOUT HO "Mrklin C-Track Straight 77.5mm 24077"
L 8421376 0.030000 0.000000 0.787400 3.051181 0.787400
L 8421376 0.030000 0.000000 -0.787400 3.051181 -0.787400
END
-TURNOUT HO "Mrklin C-Track Straight 94.2mm 24094"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 94.2mm" "24094" 3.708661
+TURNOUT HO "Märklin C-Track Straight 94.2mm 24094"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 94.2mm" "24094" 3.708661
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.708661 0.000000 90.000000
@@ -37,8 +37,8 @@ TURNOUT HO "Mrklin C-Track Straight 94.2mm 24094"
L 8421376 0.030000 0.000000 0.787400 3.708661 0.787400
L 8421376 0.030000 0.000000 -0.787400 3.708661 -0.787400
END
-TURNOUT HO "Mrklin C-Track Straight 171.7mm 24172"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 171.7mm" "24172" 6.759843
+TURNOUT HO "Märklin C-Track Straight 171.7mm 24172"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 171.7mm" "24172" 6.759843
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.759843 0.000000 90.000000
@@ -46,8 +46,8 @@ TURNOUT HO "Mrklin C-Track Straight 171.7mm 24172"
L 8421376 0.030000 0.000000 0.787400 6.759843 0.787400
L 8421376 0.030000 0.000000 -0.787400 6.759843 -0.787400
END
-TURNOUT HO "Mrklin C-Track Straight 188.3mm 24188"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 188.3mm" "24188" 7.413386
+TURNOUT HO "Märklin C-Track Straight 188.3mm 24188"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 188.3mm" "24188" 7.413386
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.413386 0.000000 90.000000
@@ -55,26 +55,26 @@ TURNOUT HO "Mrklin C-Track Straight 188.3mm 24188"
L 8421376 0.030000 0.000000 0.787400 7.413386 0.787400
L 8421376 0.030000 0.000000 -0.787400 7.413386 -0.787400
END
-TURNOUT HO "Mrklin C-Track Straight 229.0mm 24229"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 229.0mm" "24229" 9.015748
+TURNOUT HO "Märklin C-Track Straight 229.3mm 24229"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 229.3mm" "24229" 9.027559
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 9.015748 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.015748 0.000000
- L 8421376 0.030000 0.000000 0.787400 9.015748 0.787400
- L 8421376 0.030000 0.000000 -0.787400 9.015748 -0.787400
+ E 9.027559 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.027559 0.000000
+ L 8421376 0.030000 0.000000 0.787400 9.027559 0.787400
+ L 8421376 0.030000 0.000000 -0.787400 9.027559 -0.787400
END
-TURNOUT HO "Mrklin C-Track Straight 236.0mm 24236"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 236.0mm" "24236" 9.291338
+TURNOUT HO "Märklin C-Track Straight 236.1mm 24236"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 236.1mm" "24236" 9.295276
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 9.291338 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.291338 0.000000
- L 8421376 0.030000 0.000000 0.787400 9.291338 0.787400
- L 8421376 0.030000 0.000000 -0.787400 9.291338 -0.787400
+ E 9.295276 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.295276 0.000000
+ L 8421376 0.030000 0.000000 0.787400 9.295276 0.787400
+ L 8421376 0.030000 0.000000 -0.787400 9.295276 -0.787400
END
-TURNOUT HO "Mrklin C-Track Straight 360.0mm 24360"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 360.0mm" "24360" 14.173228
+TURNOUT HO "Märklin C-Track Straight 360.0mm 24360"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 360.0mm" "24360" 14.173228
P "Normal" 1
E 0.000000 0.000000 270.000000
E 14.173228 0.000000 90.000000
@@ -83,9 +83,9 @@ TURNOUT HO "Mrklin C-Track Straight 360.0mm 24360"
L 8421376 0.030000 0.000000 -0.787400 14.173228 -0.787400
END
-SUBCONTENTS Mrklin C-Track Curve Tracks
-TURNOUT HO "Mrklin C-Track Curved R1=360mm 30 24130"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R1=360mm 30" "24130" 14.173228 30.000000
+SUBCONTENTS Märklin C-Track Curve Tracks
+TURNOUT HO "Märklin C-Track Curved R1=360mm 30° 24130"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R1=360mm 30°" "24130" 14.173228 30.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 1.898853 60.000000
@@ -93,8 +93,8 @@ TURNOUT HO "Mrklin C-Track Curved R1=360mm 30 24130"
A 8421376 0.030000 -13.385828 0.000000 14.173228 150.000000 30.000000
A 8421376 0.030000 -14.960628 0.000000 14.173228 150.000000 30.000000
END
-TURNOUT HO "Mrklin C-Track Curved R1=360mm 15 24115"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R1=360mm 15" "24115" 14.173228 15.000000
+TURNOUT HO "Märklin C-Track Curved R1=360mm 15° 24115"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R1=360mm 15°" "24115" 14.173228 15.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.668301 0.482941 75.000000
@@ -102,8 +102,8 @@ TURNOUT HO "Mrklin C-Track Curved R1=360mm 15 24115"
A 8421376 0.030000 -13.385828 0.000000 14.173228 165.000000 15.000000
A 8421376 0.030000 -14.960628 0.000000 14.173228 165.000000 15.000000
END
-TURNOUT HO "Mrklin C-Track Curved R1=360mm 7.5 24107"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R1=360mm 7.5" "24107" 14.173228 7.500000
+TURNOUT HO "Märklin C-Track Curved R1=360mm 7.5° 24107"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R1=360mm 7.5°" "24107" 14.173228 7.500000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.849976 0.121254 82.500000
@@ -111,8 +111,8 @@ TURNOUT HO "Mrklin C-Track Curved R1=360mm 7.5 24107"
A 8421376 0.030000 -13.385828 0.000000 14.173228 172.500000 7.500000
A 8421376 0.030000 -14.960628 0.000000 14.173228 172.500000 7.500000
END
-TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 30 24230"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R2=437.5mm 30" "24230" 17.224409 30.000000
+TURNOUT HO "Märklin C-Track Curved R2=437.5mm 30° 24230"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R2=437.5mm 30°" "24230" 17.224409 30.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.612205 2.307633 60.000000
@@ -120,8 +120,8 @@ TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 30 24230"
A 8421376 0.030000 -16.437009 0.000000 17.224409 150.000000 30.000000
A 8421376 0.030000 -18.011809 0.000000 17.224409 150.000000 30.000000
END
-TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 24.3 24224"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R2=437.5mm 24.3" "24224" 17.224409 24.300000
+TURNOUT HO "Märklin C-Track Curved R2=437.5mm 24.3° 24224"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R2=437.5mm 24.3°" "24224" 17.224409 24.300000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.088092 1.526026 65.700000
@@ -129,8 +129,8 @@ TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 24.3 24224"
A 8421376 0.030000 -16.437009 0.000000 17.224409 155.700000 24.300000
A 8421376 0.030000 -18.011809 0.000000 17.224409 155.700000 24.300000
END
-TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 15 24215"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R2=437.5mm 15" "24215" 17.224409 15.000000
+TURNOUT HO "Märklin C-Track Curved R2=437.5mm 15° 24215"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R2=437.5mm 15°" "24215" 17.224409 15.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.458005 0.586908 75.000000
@@ -138,8 +138,8 @@ TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 15 24215"
A 8421376 0.030000 -16.437009 0.000000 17.224409 165.000000 15.000000
A 8421376 0.030000 -18.011809 0.000000 17.224409 165.000000 15.000000
END
-TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 7.5 24207"
- U "Curved Section" "" "Mrklin C-Track" "Curved R2=437.5mm 7.5" "24207" 17.224409 7.500000
+TURNOUT HO "Märklin C-Track Curved R2=437.5mm 7.5° 24207"
+ U "Curved Section" "" "Märklin C-Track" "Curved R2=437.5mm 7.5°" "24207" 17.224409 7.500000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.248235 0.147357 82.500000
@@ -147,8 +147,8 @@ TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 7.5 24207"
A 8421376 0.030000 -16.437009 0.000000 17.224409 172.500076 7.500000
A 8421376 0.030000 -18.011809 0.000000 17.224409 172.500076 7.500000
END
-TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 5.7 24206"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R2=437.5mm 5.7" "24206" 17.224409 5.700000
+TURNOUT HO "Märklin C-Track Curved R2=437.5mm 5.7° 24206"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R2=437.5mm 5.7°" "24206" 17.224409 5.700000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.710724 0.085165 84.300000
@@ -156,8 +156,8 @@ TURNOUT HO "Mrklin C-Track Curved R2=437.5mm 5.7 24206"
A 8421376 0.030000 -16.437009 0.000000 17.224409 174.300000 5.700000
A 8421376 0.030000 -18.011809 0.000000 17.224409 174.300000 5.700000
END
-TURNOUT HO "Mrklin C-Track Curved R3=515mm 30 24330"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R3=515mm 30" "24330" 20.275591 30.000000
+TURNOUT HO "Märklin C-Track Curved R3=515mm 30° 24330"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R3=515mm 30°" "24330" 20.275591 30.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 10.137788 2.716410 60.000000
@@ -165,8 +165,8 @@ TURNOUT HO "Mrklin C-Track Curved R3=515mm 30 24330"
A 8421376 0.030000 -19.488191 0.000000 20.275591 150.000000 30.000000
A 8421376 0.030000 -21.062991 0.000000 20.275591 150.000000 30.000000
END
-TURNOUT HO "Mrklin C-Track Curved R4=579.3mm 30 24430"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R4=579.3mm 30" "24430" 22.812750 30.000000
+TURNOUT HO "Märklin C-Track Curved R4=579.3mm 30° 24430"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R4=579.3mm 30°" "24430" 22.812750 30.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 11.406375 3.056329 60.000000
@@ -174,8 +174,8 @@ TURNOUT HO "Mrklin C-Track Curved R4=579.3mm 30 24430"
A 8421376 0.030000 -22.025350 0.000000 22.812750 150.000000 30.000000
A 8421376 0.030000 -23.600150 0.000000 22.812750 150.000000 30.000000
END
-TURNOUT HO "Mrklin C-Track Curved R5=643.6mm 30 24530"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R5=643.6mm 30" "24530" 25.312500 30.000000
+TURNOUT HO "Märklin C-Track Curved R5=643.6mm 30° 24530"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R5=643.6mm 30°" "24530" 25.312500 30.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 12.656250 3.391232 60.000000
@@ -183,8 +183,8 @@ TURNOUT HO "Mrklin C-Track Curved R5=643.6mm 30 24530"
A 8421376 0.030000 -24.525100 0.000000 25.312500 150.000000 30.000000
A 8421376 0.030000 -26.099900 0.000000 25.312500 150.000000 30.000000
END
-TURNOUT HO "Mrklin C-Track Curved R=1114.6mm 12.1 24912"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved R=1114.6mm 12.1" "24912" 43.875000 12.100000
+TURNOUT HO "Märklin C-Track Curved R=1114.6mm 12.1° 24912"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved R=1114.6mm 12.1°" "24912" 43.875000 12.100000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 9.197014 0.974760 77.900000
@@ -194,9 +194,9 @@ TURNOUT HO "Mrklin C-Track Curved R=1114.6mm 12.1 24912"
END
-SUBCONTENTS Mrklin C-Track Turnouts
-TURNOUT HO "Mrklin C-Track Left Turnout 188.3mm R2=437.5mm 24.3 24611"
- U "Regular Turnout" "XtrkCad" "Mrklin C-Track" "Left Turnout" "24611" "Right Turnout" "24612" 7.088092 24.300000 1.526026 7.413386
+SUBCONTENTS Märklin C-Track Turnouts
+TURNOUT HO "Märklin C-Track Left Turnout 188.3mm R2=437.5mm 24.3° 24611"
+ U "Regular Turnout" "XtrkCad" "Märklin C-Track" "Left Turnout" "24611" "Right Turnout" "24612" 7.088092 24.300000 1.526026 7.413386
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
@@ -211,8 +211,8 @@ TURNOUT HO "Mrklin C-Track Left Turnout 188.3mm R2=437.5mm 24.3 24611"
A 8421376 0.030000 -13.424387 0.648601 14.211787 155.700000 24.300000
L 8421376 0.030000 6.180000 1.980000 6.760000 2.240000
END
-TURNOUT HO "Mrklin C-Track Right Turnout 188.3mm R2=437.5mm 24.3 24612"
- U "Regular Turnout" "XtrkCad" "Mrklin C-Track" "Left Turnout" "24611" "Right Turnout" "24612" 7.088092 24.300000 1.526026 7.413386
+TURNOUT HO "Märklin C-Track Right Turnout 188.3mm R2=437.5mm 24.3° 24612"
+ U "Regular Turnout" "XtrkCad" "Märklin C-Track" "Left Turnout" "24611" "Right Turnout" "24612" 7.088092 24.300000 1.526026 7.413386
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.000000 0.000000 270.000000
@@ -227,8 +227,8 @@ TURNOUT HO "Mrklin C-Track Right Turnout 188.3mm R2=437.5mm 24.3 24612"
A 8421376 0.030000 13.424387 0.648601 -14.211787 0.000000 24.300000
L 8421376 0.030000 6.180000 -1.980000 6.760000 -2.240000
END
-TURNOUT HO "Mrklin C-Track Curved Left Turnout R1=360mm 30 24671"
- U "Curved Turnout" "XtrkCad" "Mrklin C-Track" "Curved Left Turnout 30" "24671" "Curved Right Turnout 30" "24672" 7.086614 30.000000 1.898853 30.000000 1.898853 10.137795
+TURNOUT HO "Märklin C-Track Curved Left Turnout R1=360mm 30° 24671"
+ U "Curved Turnout" "XtrkCad" "Märklin C-Track" "Curved Left Turnout 30°" "24671" "Curved Right Turnout 30°" "24672" 7.086614 30.000000 1.898853 30.000000 1.898853 10.137795
P "Normal" 1 6 4 5
P "Reverse" 1 2 3
E -0.054784 -2944.110350 270.000000
@@ -245,8 +245,8 @@ TURNOUT HO "Mrklin C-Track Curved Left Turnout R1=360mm 30 24671"
A 8421376 0.030000 15.047713 2.996397 -2929.822762 150.000000 30.000000
L 32768 0.010417 7.413553 -2942.891285 9.697017 -2941.513332
END
-TURNOUT HO "Mrklin C-Track Curved Right Turnout R1=360mm 30 24672"
- U "Curved Turnout" "XtrkCad" "Mrklin C-Track" "Curved Right Turnout 30" "24672" "Curved Left Turnout 30" "24671" 7.086614 30.000000 1.898853 30.000000 1.898853 10.137795
+TURNOUT HO "Märklin C-Track Curved Right Turnout R1=360mm 30° 24672"
+ U "Curved Turnout" "XtrkCad" "Märklin C-Track" "Curved Right Turnout 30°" "24672" "Curved Left Turnout 30°" "24671" 7.086614 30.000000 1.898853 30.000000 1.898853 10.137795
P "Normal" 1 6 4 5
P "Reverse" 1 2 3
E 0.000000 -100.160054 270.000000
@@ -263,8 +263,8 @@ TURNOUT HO "Mrklin C-Track Curved Right Turnout R1=360mm 30 24672"
L 8421376 0.030000 7.440945 -101.365353 9.763780 -102.782676
A 8421376 0.030000 15.047562 3.051181 -114.444412 0.000000 29.636472
END
-TURNOUT HO "Mrklin C-Track 3-way Turnout 188.3mm R2=437.5mm 24.3 24630"
- U "3-way Turnout" "XtrkCad" "Mrklin C-Track" "3-way Turnout" "24630" 7.079991 24.300000 1.524282 7.413386 1.524282 24.300000 7.079991
+TURNOUT HO "Märklin C-Track 3-way Turnout 188.3mm R2=437.5mm 24.3° 24630"
+ U "3-way Turnout" "XtrkCad" "Märklin C-Track" "3-way Turnout" "24630" 7.079991 24.300000 1.524282 7.413386 1.524282 24.300000 7.079991
P "Left" 1 2 3
P "Normal" 1 6
P "Right" 1 4 5
@@ -281,10 +281,12 @@ TURNOUT HO "Mrklin C-Track 3-way Turnout 188.3mm R2=437.5mm 24.3 24630"
A 8421376 0.030000 -16.437009 0.000000 17.224409 155.700000 24.300000
A 8421376 0.030000 16.437009 0.000000 -17.224409 0.00000000 24.300000
END
-TURNOUT HO "Mrklin C-Track Double Slipswitch 188.3mm R2=437.5mm 24.3 24624"
- U "Double Slipswitch" "XtrkCad" "Mrklin C-Track" "Double Slip" "24624" 7.413386 24.300000 7.413386
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Märklin C-Track Double Slipswitch 188.3mm R2=437.5mm 24.3° 24624" 512
+ U "Double Slipswitch" "XtrkCad" "Märklin C-Track" "Double Slip" "24624" 7.413386 24.300000 7.413386
+ 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 7.413386 0.000000 90.000000
E 0.328401 1.525357 294.300000
@@ -304,7 +306,7 @@ TURNOUT HO "Mrklin C-Track Double Slipswitch 188.3mm R2=437.5mm 24.3 24624"
A 8421376 0.030000 13.424387 6.764785 14.211787 180.000000 24.300000
L 8421376 0.030000 1.233386 1.980000 0.653386 2.240000
END
-TURNOUT HO "Mrklin C-Track Left Turnout 236.1mm R=1114.6mm 12.1 24711"
+TURNOUT HO "Märklin C-Track Left Turnout 236.1mm R=1114.6mm 12.1° 24711"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -315,7 +317,7 @@ TURNOUT HO "Mrklin C-Track Left Turnout 236.1mm R=1114.6mm 12.1 24711"
L 8421376 0.030000 0.000000 -0.787400 9.312500 -0.787400
A 8421376 0.030000 -43.087600 0.000000 43.875000 167.900000 12.100000
END
-TURNOUT HO "Mrklin C-Track Right Turnout 236.1mm R=1114.6mm 12.1 24712"
+TURNOUT HO "Märklin C-Track Right Turnout 236.1mm R=1114.6mm 12.1° 24712"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -327,9 +329,9 @@ TURNOUT HO "Mrklin C-Track Right Turnout 236.1mm R=1114.6mm 12.1 24712"
A 8421376 0.030000 43.087600 0.000000 -43.875000 0.000000 12.100000
END
-SUBCONTENTS Mrklin C-Track Crossings
-TURNOUT HO "Mrklin C-Track Double Crossing 188.3mm 24.3 24640"
- U "Crossing" "XtrkCad" "Mrklin C-Track" "Double Crossing 188.3mm 24.3" "24640" 7.413386 24.300000 7.413386
+SUBCONTENTS Märklin C-Track Crossings
+TURNOUT HO "Märklin C-Track Double Crossing 188.3mm 24.3° 24640"
+ U "Crossing" "XtrkCad" "Märklin C-Track" "Double Crossing 188.3mm 24.3°" "24640" 7.413386 24.300000 7.413386
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 7.413386 0.000000 90.000000
@@ -342,8 +344,8 @@ TURNOUT HO "Mrklin C-Track Double Crossing 188.3mm 24.3 24640"
L 8421376 0.030000 0.653386 2.240000 3.900000 0.787400
L 8421376 0.030000 6.760000 -2.240000 3.513386 -0.787400
END
-TURNOUT HO "Mrklin C-Track Double Crossing 103.3mm 48.6 24649"
- U "Crossing" "XtrkCad" "Mrklin C-Track" "Double Crossing 103.3mm 48.6" "24649" 4.066929 48.600000 4.066929
+TURNOUT HO "Märklin C-Track Double Crossing 103.3mm 48.6° 24649"
+ U "Crossing" "XtrkCad" "Märklin C-Track" "Double Crossing 103.3mm 48.6°" "24649" 4.066929 48.600000 4.066929
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 4.066929 0.000000 90.000000
@@ -356,7 +358,7 @@ TURNOUT HO "Mrklin C-Track Double Crossing 103.3mm 48.6 24649"
L 8421376 0.030000 4.066929 0.787400 2.401575 0.787400
L 8421376 0.030000 2.401575 0.787400 1.300000 2.050000
END
-TURNOUT HO "Mrklin C-Track Wide Angle Crossing 236.1mm 12.1 24740"
+TURNOUT HO "Märklin C-Track Wide Angle Crossing 236.1mm 12.1° 24740"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 9.312500 0.000000 90.000000
@@ -370,9 +372,9 @@ TURNOUT HO "Mrklin C-Track Wide Angle Crossing 236.1mm 12.1 24740"
L 8421376 0.030000 4.656250 -0.787400 0.268500 -1.745943
END
-SUBCONTENTS Mrklin C-Track Miscellaneous Tracks
-TURNOUT HO "Mrklin C-Track Bumper 77.5mm 24977"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Bumper" "24977" 3.051181
+SUBCONTENTS Märklin C-Track Miscellaneous Tracks
+TURNOUT HO "Märklin C-Track Bumper 77.5mm 24977"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Bumper" "24977" 3.051181
P "Normal" 1
E 0.000000 0.000000 270.000000
S 0 0.000000 0.000000 0.000000 3.051181 0.000000
@@ -384,8 +386,8 @@ TURNOUT HO "Mrklin C-Track Bumper 77.5mm 24977"
3.040000 0.769333
1.653333 0.769333
END
-TURNOUT HO "Mrklin C-Track Bumper w/ Lantern 77.5mm 24978"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Bumper w/ Lantern" "24978" 3.051181
+TURNOUT HO "Märklin C-Track Bumper w/ Lantern 77.5mm 24978"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Bumper w/ Lantern" "24978" 3.051181
P "Normal" 1
E 0.000000 0.000000 270.000000
S 0 0.000000 0.000000 0.000000 3.051181 0.000000
@@ -398,8 +400,8 @@ TURNOUT HO "Mrklin C-Track Bumper w/ Lantern 77.5mm 24978"
1.653333 0.769333
G 16711680 0.026667 0.362706 1.600000 0.00000
END
-TURNOUT HO "Mrklin C-Track End Piece 16.5mm 24001"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "End Piece" "24001" 0.649606
+TURNOUT HO "Märklin C-Track End Piece 16.5mm 24001"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "End Piece" "24001" 0.649606
P "Normal" 1
E 0.000000 0.000000 270.000000
S 0 0.000000 0.000000 0.000000 0.649606 0.000000
@@ -411,8 +413,8 @@ TURNOUT HO "Mrklin C-Track End Piece 16.5mm 24001"
0.649606 0.769333
0.1 0.769333
END
-TURNOUT HO "Mrklin C-Track Uncoupler 94.2mm 24997"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Uncoupler" "24997" 3.708661
+TURNOUT HO "Märklin C-Track Uncoupler 94.2mm 24997"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Uncoupler" "24997" 3.708661
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.708661 0.000000 90.000000
@@ -425,8 +427,8 @@ TURNOUT HO "Mrklin C-Track Uncoupler 94.2mm 24997"
3.041994 0.090000
0.666667 0.090000
END
-TURNOUT HO "Mrklin C-Track Contact Track 94.2mm 24995"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Contact Track" "24995" 3.708661
+TURNOUT HO "Märklin C-Track Contact Track 94.2mm 24995"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Contact Track" "24995" 3.708661
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.708661 0.000000 90.000000
@@ -436,8 +438,8 @@ TURNOUT HO "Mrklin C-Track Contact Track 94.2mm 24995"
L 8421376 0.030000 0.000000 -0.787400 3.708661 -0.787400
G 16711680 0.030000 0.200000 1.854331 0.75000
END
-TURNOUT HO "Mrklin C-Track Straight w/ Contact 94.2mm 24994"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight w/ Contact" "24994" 3.708661
+TURNOUT HO "Märklin C-Track Straight w/ Contact 94.2mm 24994"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight w/ Contact" "24994" 3.708661
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.708661 0.000000 90.000000
@@ -446,8 +448,8 @@ TURNOUT HO "Mrklin C-Track Straight w/ Contact 94.2mm 24994"
L 8421376 0.030000 0.000000 -0.787400 3.708661 -0.787400
G 16711680 0.030000 0.400000 1.854331 0.00000
END
-TURNOUT HO "Mrklin C-Track Curved w/ Contact R1=360mm 15 24194"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved w/ Contact R1=360mm 15" "24194" 14.173228 15.000000
+TURNOUT HO "Märklin C-Track Curved w/ Contact R1=360mm 15° 24194"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved w/ Contact R1=360mm 15°" "24194" 14.173228 15.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.668301 0.482941 75.000000
@@ -456,8 +458,8 @@ TURNOUT HO "Mrklin C-Track Curved w/ Contact R1=360mm 15 24194"
A 8421376 0.030000 -14.960628 0.000000 14.173228 165.000000 15.000000
G 16711680 0.030000 0.400000 1.849976 0.121323
END
-TURNOUT HO "Mrklin C-Track Curved w/ Contact R2=437.5mm 15 24294"
- U "Curved Section" "XtrkCad" "Mrklin C-Track" "Curved w/ Contact R2=437.5mm 15" "24294" 17.224409 15.000000
+TURNOUT HO "Märklin C-Track Curved w/ Contact R2=437.5mm 15° 24294"
+ U "Curved Section" "XtrkCad" "Märklin C-Track" "Curved w/ Contact R2=437.5mm 15°" "24294" 17.224409 15.000000
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.458005 0.586908 75.000000
@@ -466,8 +468,8 @@ TURNOUT HO "Mrklin C-Track Curved w/ Contact R2=437.5mm 15 24294"
A 8421376 0.030000 -18.011809 0.000000 17.224409 165.000000 15.000000
G 16711680 0.030000 0.400000 2.248233 0.147372
END
-TURNOUT HO "Mrklin C-Track K-track Adaptor 180mm 24922"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "K-track Adaptor" "24922" 7.086614
+TURNOUT HO "Märklin C-Track K-track Adaptor 180mm 24922"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "K-track Adaptor" "24922" 7.086614
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -475,8 +477,8 @@ TURNOUT HO "Mrklin C-Track K-track Adaptor 180mm 24922"
L 8421376 0.030000 0.000000 0.787400 7.086614 0.787400
L 8421376 0.030000 0.000000 -0.787400 7.086614 -0.787400
END
-TURNOUT HO "Mrklin C-Track M-Track Adaptor 180mm 24951"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "M-Track Adaptor" "24951" 7.086614
+TURNOUT HO "Märklin C-Track M-Track Adaptor 180mm 24951"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "M-Track Adaptor" "24951" 7.086614
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -484,8 +486,8 @@ TURNOUT HO "Mrklin C-Track M-Track Adaptor 180mm 24951"
L 8421376 0.030000 0.000000 0.787400 7.086614 0.787400
L 8421376 0.030000 0.000000 -0.787400 7.086614 -0.787400
END
-TURNOUT HO "Mrklin C-Track Feeder Trk 188.3mm 24088"
- U "Straight Section" "XtrkCad" "Mrklin C-Track" "Straight 188.3mm" "24088" 7.413386
+TURNOUT HO "Märklin C-Track Feeder Trk 188.3mm 24088"
+ U "Straight Section" "XtrkCad" "Märklin C-Track" "Straight 188.3mm" "24088" 7.413386
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.413386 0.000000 90.000000
@@ -495,73 +497,73 @@ TURNOUT HO "Mrklin C-Track Feeder Trk 188.3mm 24088"
L 8421376 1.574800 1.574800 -1.574800 3.149600 -1.574800
END
-SUBCONTENTS Mrklin C-Track TurnTable
-TURNOUT HO "Marklin C-Track Turntable 10.35"" Dia 12d 30 Positions 74861"
- 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
- G3 0 0.000000 0.129736 0.000000 0.000000 0
+SUBCONTENTS Märklin C-Track TurnTable
+TURNOUT HO "Marklin C-Track Turntable 10.35"" Dia 12d 30 Positions 74861" 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
+ E 0.000000 5.177154 0.000000
+ E 1.076391 5.064020 12.000000
+ E 2.105738 4.729565 24.000000
+ E 3.043054 4.188405 36.000000
+ E 3.847375 3.464192 48.000000
+ E 4.483546 2.588577 60.000000
+ E 4.923766 1.599828 72.000000
+ E 5.148793 0.541160 84.000000
+ E 5.148793 -0.541160 96.000000
+ E 4.923766 -1.599828 108.000000
+ E 4.483546 -2.588577 120.000000
+ E 3.847375 -3.464192 132.000000
+ E 3.043054 -4.188405 144.000000
+ E 2.105738 -4.729565 156.000000
+ E 1.076391 -5.064020 168.000000
+ E 0.000000 -5.177154 180.000000
+ E -1.076391 -5.064020 192.000000
+ E -2.105738 -4.729565 204.000000
+ E -3.043054 -4.188405 216.000000
+ E -3.847375 -3.464192 228.000000
+ E -4.483546 -2.588577 240.000000
+ E -4.923766 -1.599828 252.000000
+ E -5.148793 -0.541160 264.000000
+ E -5.148793 0.541160 276.000000
+ E -4.923766 1.599828 288.000000
+ E -4.483546 2.588577 300.000000
+ E -3.847375 3.464192 312.000000
+ E -3.043054 4.188405 324.000000
+ E -2.105738 4.729565 336.000000
+ E -1.076391 5.064020 348.000000
+ S 16777215 0 0.000000 5.177154 0.000000 -5.177154
+ S 16777215 0 1.076391 5.064020 -1.076391 -5.064020
+ S 16777215 0 2.105738 4.729565 -2.105738 -4.729565
+ S 16777215 0 3.043054 4.188405 -3.043054 -4.188405
+ S 16777215 0 3.847375 3.464192 -3.847375 -3.464192
+ S 16777215 0 4.483546 2.588577 -4.483546 -2.588577
+ S 16777215 0 4.923766 1.599828 -4.923766 -1.599828
+ S 16777215 0 5.148793 0.541160 -5.148793 -0.541160
+ S 16777215 0 5.148793 -0.541160 -5.148793 0.541160
+ S 16777215 0 4.923766 -1.599828 -4.923766 1.599828
+ S 16777215 0 4.483546 -2.588577 -4.483546 2.588577
+ S 16777215 0 3.847375 -3.464192 -3.847375 3.464192
+ S 16777215 0 3.043054 -4.188405 -3.043054 4.188405
+ S 16777215 0 2.105738 -4.729565 -2.105738 4.729565
+ S 16777215 0 1.076391 -5.064020 -1.076391 5.064020
+ G3 0 0.000000 0.129736 0.000000 0.000000 0
A3 0 0.031250 5.177154 0.000000 0.000000 0 0.000000 360.000000
A3 0 0.031250 7.440945 0.000000 0.000000 0 0.000000 360.000000
- E 0.000000 5.177154 0.000000
- E 1.076391 5.064020 12.000000
- E 2.105738 4.729565 24.000000
- E 3.043054 4.188405 36.000000
- E 3.847375 3.464192 48.000000
- E 4.483546 2.588577 60.000000
- E 4.923766 1.599828 72.000000
- E 5.148793 0.541160 84.000000
- E 5.148793 -0.541160 96.000000
- E 4.923766 -1.599828 108.000000
- E 4.483546 -2.588577 120.000000
- E 3.847375 -3.464192 132.000000
- E 3.043054 -4.188405 144.000000
- E 2.105738 -4.729565 156.000000
- E 1.076391 -5.064020 168.000000
- E 0.000000 -5.177154 180.000000
- E -1.076391 -5.064020 192.000000
- E -2.105738 -4.729565 204.000000
- E -3.043054 -4.188405 216.000000
- E -3.847375 -3.464192 228.000000
- E -4.483546 -2.588577 240.000000
- E -4.923766 -1.599828 252.000000
- E -5.148793 -0.541160 264.000000
- E -5.148793 0.541160 276.000000
- E -4.923766 1.599828 288.000000
- E -4.483546 2.588577 300.000000
- E -3.847375 3.464192 312.000000
- E -3.043054 4.188405 324.000000
- E -2.105738 4.729565 336.000000
- E -1.076391 5.064020 348.000000
- S 16777215 0 0.000000 5.177154 0.000000 -5.177154
- S 16777215 0 1.076391 5.064020 -1.076391 -5.064020
- S 16777215 0 2.105738 4.729565 -2.105738 -4.729565
- S 16777215 0 3.043054 4.188405 -3.043054 -4.188405
- S 16777215 0 3.847375 3.464192 -3.847375 -3.464192
- S 16777215 0 4.483546 2.588577 -4.483546 -2.588577
- S 16777215 0 4.923766 1.599828 -4.923766 -1.599828
- S 16777215 0 5.148793 0.541160 -5.148793 -0.541160
- S 16777215 0 5.148793 -0.541160 -5.148793 0.541160
- S 16777215 0 4.923766 -1.599828 -4.923766 1.599828
- S 16777215 0 4.483546 -2.588577 -4.483546 2.588577
- S 16777215 0 3.847375 -3.464192 -3.847375 3.464192
- S 16777215 0 3.043054 -4.188405 -3.043054 4.188405
- S 16777215 0 2.105738 -4.729565 -2.105738 4.729565
- S 16777215 0 1.076391 -5.064020 -1.076391 5.064020
-END
-TURNOUT HO "Mrklin C-Track Turntable Position Track 57.5mm 74871"
+END
+TURNOUT HO "Märklin C-Track Turntable Position Track 57.5mm 74871"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.263792 0.000000 90.000000
diff --git a/app/lib/params/HO-Marklin K-track.xtp b/app/lib/params/HO-Marklin K-track.xtp
index a2944dd..9b42b6e 100644
--- a/app/lib/params/HO-Marklin K-track.xtp
+++ b/app/lib/params/HO-Marklin K-track.xtp
@@ -1,142 +1,144 @@
-CONTENTS Mrklin K-Track HO-Scale
-# From 'Mrklin Complete Program 1994/95 E'
+CONTENTS Märklin K-Track HO-Scale
+# From 'Märklin Complete Program 1994/95 E'
-SUBCONTENTS Mrklin K-Track Straight Tracks
+SUBCONTENTS Märklin K-Track Straight Tracks
# Straight Section Design by Dave Bullis - 7.086614
-TURNOUT HO "Mrklin K-Track Straight 180mm 2200"
+TURNOUT HO "Märklin K-Track Straight 180mm 2200"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
S 0 0 0.000000 0.000000 7.087000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 168.9mm 2206"
+TURNOUT HO "Märklin K-Track Straight 168.9mm 2206"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.649606 0.000000 90.000000
S 0 0 0.000000 0.000000 6.650000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 217.9mm 2209"
+TURNOUT HO "Märklin K-Track Straight 217.9mm 2209"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.578740 0.000000 90.000000
S 0 0 0.000000 0.000000 8.579000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 156mm 2207"
+TURNOUT HO "Märklin K-Track Straight 156mm 2207"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.141732 0.000000 90.000000
S 0 0 0.000000 0.000000 6.142000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 90mm 2201"
+TURNOUT HO "Märklin K-Track Straight 90mm 2201"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
S 0 0 0.000000 0.000000 3.543000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 45mm 2202"
+TURNOUT HO "Märklin K-Track Straight 45mm 2202"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.771654 0.000000 90.000000
S 0 0 0.000000 0.000000 1.772000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 41.3mm 2293"
+TURNOUT HO "Märklin K-Track Straight 41.3mm 2293"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.625984 0.000000 90.000000
S 0 0 0.000000 0.000000 1.626000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 35.1mm 2208"
+TURNOUT HO "Märklin K-Track Straight 35.1mm 2208"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.381890 0.000000 90.000000
S 0 0 0.000000 0.000000 1.382000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 30mm 2203"
+TURNOUT HO "Märklin K-Track Straight 30mm 2203"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.181102 0.000000 90.000000
S 0 0 0.000000 0.000000 1.181000 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight 22.5mm 2204"
+TURNOUT HO "Märklin K-Track Straight 22.5mm 2204"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 0.885827 0.000000 90.000000
S 0 0 0.000000 0.000000 0.886000 0.000000
END
-SUBCONTENTS Mrklin K-Track Curve Tracks
-TURNOUT HO "Mrklin K-Track Curved 295.4mm 45 2210"
+SUBCONTENTS Märklin K-Track Curve Tracks
+TURNOUT HO "Märklin K-Track Curved 295.4mm 45° 2210"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.223596 -3.406325 135.000000
C 0 0 11.630000 0.000000 -11.630000 0.000000 45.000000
END
-TURNOUT HO "Mrklin K-Track Curved 360mm 30 2221"
+TURNOUT HO "Märklin K-Track Curved 360mm 30° 2221"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 -1.898853 120.000000
C 0 0 14.173000 0.000000 -14.173000 0.000000 30.000000
END
-TURNOUT HO "Mrklin K-Track Curved 360mm 15 2223"
+TURNOUT HO "Märklin K-Track Curved 360mm 15° 2223"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.668301 -0.482941 105.000000
C 0 0 14.173000 0.000000 -14.173000 0.000000 15.000000
END
-TURNOUT HO "Mrklin K-Track Curved 360mm 7.5 2224"
+TURNOUT HO "Märklin K-Track Curved 360mm 7.5° 2224"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.849978 -0.121254 97.500000
C 0 0 14.173000 0.000000 -14.173000 0.000000 7.500000
END
-TURNOUT HO "Mrklin K-Track Curved 424.6mm 30 2231"
+TURNOUT HO "Märklin K-Track Curved 424.6mm 30° 2231"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.358268 -2.239591 120.000000
C 0 0 16.717000 0.000000 -16.717000 0.000000 30.000000
END
-TURNOUT HO "Mrklin K-Track Curved 424.6mm 22.5 2232"
+TURNOUT HO "Märklin K-Track Curved 424.6mm 22.5° 2232"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.397141 -1.272470 112.500000
C 0 0 16.717000 0.000000 -16.717000 0.000000 22.500000
END
-TURNOUT HO "Mrklin K-Track Curved 424.6mm 15 2233"
+TURNOUT HO "Märklin K-Track Curved 424.6mm 15° 2233"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.326558 -0.569602 105.000000
C 0 0 16.717000 0.000000 -16.717000 0.000000 15.000000
END
-TURNOUT HO "Mrklin K-Track Curved 424.6mm 7.5 2234"
+TURNOUT HO "Märklin K-Track Curved 424.6mm 7.5° 2234"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.181946 -0.143012 97.500000
C 0 0 16.717000 0.000000 -16.717000 0.000000 7.500000
END
-TURNOUT HO "Mrklin K-Track Curved 424.6mm 3.75 2235"
+TURNOUT HO "Märklin K-Track Curved 424.6mm 3.75° 2235"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.093314 -0.035791 93.750000
C 0 0 16.717000 0.000000 -16.717000 0.000000 3.750000
END
-TURNOUT HO "Mrklin K-Track Curved 553.9 30 2241"
+TURNOUT HO "Märklin K-Track Curved 553.9 30° 2241"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 10.903543 -2.921596 120.000000
C 0 0 21.807000 0.000000 -21.807000 0.000000 30.000000
END
-TURNOUT HO "Mrklin K-Track Curved 618.5 30 2251"
+TURNOUT HO "Märklin K-Track Curved 618.5 30° 2251"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 12.175197 -3.262334 120.000000
C 0 0 24.350000 0.000000 -24.350000 0.000000 30.000000
END
-SUBCONTENTS Mrklin K-Track Turnouts
+SUBCONTENTS Märklin K-Track Turnouts
# Double Slipswitch Design by Dave Bullis - 6.649606 22.500000 6.649606
-TURNOUT HO "Mrklin K-Track 22.5 Double Slip 2260"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Märklin K-Track 22.5° Double Slip 2260" 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 6.649606 0.000000 90.000000
E 0.253086 1.272347 292.500000
@@ -150,7 +152,7 @@ TURNOUT HO "Mrklin K-Track 22.5 Double Slip 2260"
C 0 0 10.193000 1.297000 -10.193000 0.000000 22.500000
C 0 0 -10.193000 5.352000 10.193000 180.000000 22.500000
END
-TURNOUT HO "Mrklin K-Track Left Turnout R424.6mm 2262"
+TURNOUT HO "Märklin K-Track Left Turnout R424.6mm 2262"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -159,7 +161,7 @@ TURNOUT HO "Mrklin K-Track Left Turnout R424.6mm 2262"
S 0 0 0.000000 0.000000 6.650000 0.000000
C 0 0 -16.717000 0.000000 16.717000 157.500000 22.500000
END
-TURNOUT HO "Mrklin K-Track Right Turnout R424.6mm 2263"
+TURNOUT HO "Märklin K-Track Right Turnout R424.6mm 2263"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -168,7 +170,7 @@ TURNOUT HO "Mrklin K-Track Right Turnout R424.6mm 2263"
S 0 0 0.000000 0.000000 6.650000 0.000000
C 0 0 16.717000 0.000000 -16.717000 0.000000 22.500000
END
-TURNOUT HO "Mrklin K-Track Left Manual Turnout R424.6mm 2265"
+TURNOUT HO "Märklin K-Track Left Manual Turnout R424.6mm 2265"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -177,7 +179,7 @@ TURNOUT HO "Mrklin K-Track Left Manual Turnout R424.6mm 2265"
S 0 0 0.000000 0.000000 6.650000 0.000000
C 0 0 -16.717000 0.000000 16.717000 157.500000 22.500000
END
-TURNOUT HO "Mrklin K-Track Right Manual Turnout R424.6mm 2266"
+TURNOUT HO "Märklin K-Track Right Manual Turnout R424.6mm 2266"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -186,7 +188,7 @@ TURNOUT HO "Mrklin K-Track Right Manual Turnout R424.6mm 2266"
S 0 0 0.000000 0.000000 6.650000 0.000000
C 0 0 16.717000 0.000000 -16.717000 0.000000 22.500000
END
-TURNOUT HO "Mrklin K-Track Left Curved Turnout 2268"
+TURNOUT HO "Märklin K-Track Left Curved Turnout 2268"
P "Normal" 1 2
P "Reverse" 3
E 0.000000 0.000000 270.000000
@@ -196,7 +198,7 @@ TURNOUT HO "Mrklin K-Track Left Curved Turnout 2268"
C 0 0 -16.717000 1.866000 16.703000 152.324000 25.352000
C 0 0 -14.173000 0.000000 14.173000 150.000000 30.000000
END
-TURNOUT HO "Mrklin K-Track Right Curved Turnout 2269"
+TURNOUT HO "Märklin K-Track Right Curved Turnout 2269"
P "Normal" 1 2
P "Reverse" 3
E 0.000000 0.000000 270.000000
@@ -206,7 +208,7 @@ TURNOUT HO "Mrklin K-Track Right Curved Turnout 2269"
C 0 0 14.173000 2.543000 -14.173000 0.000000 30.000000
C 0 0 14.173000 0.000000 -14.173000 0.000000 30.000000
END
-TURNOUT HO "Mrklin K-Track 3-Way Turnout 2270"
+TURNOUT HO "Märklin K-Track 3-Way Turnout 2270"
P "Normal" 1
P "Right" 2
P "Left" 3
@@ -218,7 +220,7 @@ TURNOUT HO "Mrklin K-Track 3-Way Turnout 2270"
C 0 0 16.717000 0.000000 -16.717000 0.000000 22.500000
C 0 0 -16.717000 0.000000 16.717000 157.500000 22.500000
END
-TURNOUT HO "Mrklin K-Track Large Left Turnout 2272"
+TURNOUT HO "Märklin K-Track Large Left Turnout 2272"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -227,7 +229,7 @@ TURNOUT HO "Mrklin K-Track Large Left Turnout 2272"
S 0 0 0.000000 0.000000 8.858000 0.000000
C 0 0 -35.528000 0.000000 35.528000 165.567000 14.433000
END
-TURNOUT HO "Mrklin K-Track Large Right Turnout 2273"
+TURNOUT HO "Märklin K-Track Large Right Turnout 2273"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -236,16 +238,18 @@ TURNOUT HO "Mrklin K-Track Large Right Turnout 2273"
S 0 0 0.000000 0.000000 8.858000 0.000000
C 0 0 35.528000 0.000000 -35.528000 0.000000 14.433000
END
-TURNOUT HO "Mrklin K-Track Large Curve 902.4mm 2274"
+TURNOUT HO "Märklin K-Track Large Curve 902.4mm 2274"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.855363 -1.121310 104.433333
C 0 0 35.528000 0.000000 -35.528000 0.000000 14.433000
END
# Double Slipswitch Design by Dave Bullis - 8.858268 14.433300 8.858368
-TURNOUT HO "Mrklin K-Track Large Double Slip 2275"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Märklin K-Track Large Double Slip 2275" 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.858268 0.000000 90.000000
E 0.139742 1.103986 284.433330
@@ -260,9 +264,9 @@ TURNOUT HO "Mrklin K-Track Large Double Slip 2275"
C 0 0 -24.734000 7.561000 24.734000 180.000000 14.433000
END
-SUBCONTENTS Mrklin K-Track Crossings
+SUBCONTENTS Märklin K-Track Crossings
# Crossing Design by Dave Bullis - 8.858268 14.433330 8.858268
-TURNOUT HO "Mrklin K-Track Large 14.433 Crossing 2257"
+TURNOUT HO "Märklin K-Track Large 14.433 Crossing 2257"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 8.858268 0.000000 90.000000
@@ -272,7 +276,7 @@ TURNOUT HO "Mrklin K-Track Large 14.433 Crossing 2257"
S 0 0 0.140000 1.104000 8.718000 -1.104000
END
# Crossing Design by Dave Bullis - 6.649606 22.500000 6.649606
-TURNOUT HO "Mrklin K-Track 22.5 Crossing 2259"
+TURNOUT HO "Märklin K-Track 22.5° Crossing 2259"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 6.649606 0.000000 90.000000
@@ -282,7 +286,7 @@ TURNOUT HO "Mrklin K-Track 22.5 Crossing 2259"
S 0 0 0.253000 1.272000 6.397000 -1.272000
END
# Crossing Design by Dave Bullis - 3.543307 45.000000 3.543307
-TURNOUT HO "Mrklin K-Track 45 Crossing 2258"
+TURNOUT HO "Märklin K-Track 45° Crossing 2258"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
@@ -292,8 +296,8 @@ TURNOUT HO "Mrklin K-Track 45 Crossing 2258"
S 0 0 0.519000 1.253000 3.024000 -1.253000
END
-SUBCONTENTS Mrklin K-Track Mics Tracks
-TURNOUT HO "Mrklin K-Track Straight Uncoupler 90mm 2297"
+SUBCONTENTS Märklin K-Track Misc Tracks
+TURNOUT HO "Märklin K-Track Straight Uncoupler 90mm 2297"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
@@ -304,31 +308,31 @@ TURNOUT HO "Mrklin K-Track Straight Uncoupler 90mm 2297"
2.876640 0.080000
0.666667 0.080000
END
-TURNOUT HO "Mrklin K-Track Straight Circuit 90mm 2299"
+TURNOUT HO "Märklin K-Track Straight Circuit 90mm 2299"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 3.543307 0.000000
- G 16711680 0.000000 0.400000 1.77000 0.000000
+ G 16711680 0.000000 0.400000 1.77000 0.000000
END
-TURNOUT HO "Mrklin K-Track Curved Circuit R=360mm 15 2229"
- U "Curved Section" "" "Mrklin K-Track" "Bogen Kontaktgleis-Schleifer" "2229" 6.581313 15.000000 0.000000 0.000000 0
+TURNOUT HO "Märklin K-Track Curved Circuit R=360mm 15° 2229"
+ U "Curved Section" "" "Märklin K-Track" "Bogen Kontaktgleis-Schleifer" "2229" 6.581313 15.000000 0.000000 0.000000 0
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.668301 -0.482941 105.000000
C 0 0 14.173228 0.000000 -14.173228 0.000000 15.000000
G 16711680 0.000000 0.400000 1.834150 -0.121254
END
-TURNOUT HO "Mrklin K-Track Curved Circuit R=424.6mm 15 2239"
- U "Curved Section" "" "Mrklin K-Track" "Bogen Kontaktgleis Schleifer" "2239" 6.581313 15.000000 0.000000 0.000000 0
+TURNOUT HO "Märklin K-Track Curved Circuit R=424.6mm 15° 2239"
+ U "Curved Section" "" "Märklin K-Track" "Bogen Kontaktgleis Schleifer" "2239" 6.581313 15.000000 0.000000 0.000000 0
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.326558 -0.569602 105.000000
C 0 0 16.717000 0.000000 -16.717000 0.000000 15.000000
G 16711680 0.0000000 0.400000 2.163279 -0.143016
END
-TURNOUT HO "Mrklin K-Track Lighted Bumper 38mm 7389"
- U "Straight Section" "" "Mrklin K-Track" "Prellbock beleuchtet" "7389" 0.589001 0.000000 0.000000 0
+TURNOUT HO "Märklin K-Track Lighted Bumper 38mm 7389"
+ U "Straight Section" "" "Märklin K-Track" "Prellbock beleuchtet" "7389" 0.589001 0.000000 0.000000 0
P "Normal" 1
E 0.000000 0.000000 270.000000
S 0 0.000000 0.000000 0.000000 1.496063 0.000000
@@ -339,8 +343,8 @@ TURNOUT HO "Mrklin K-Track Lighted Bumper 38mm 7389"
0.748031 0.769333
G 16711680 0.000000 0.300000 0.800000 0.00000
END
-TURNOUT HO "Mrklin K-Track Bumper 38mm 7391"
- U "Straight Section" "" "Mrklin K-Track" "Prellbock" "7391" 0.589001 0.000000 0.000000 0
+TURNOUT HO "Märklin K-Track Bumper 38mm 7391"
+ U "Straight Section" "" "Märklin K-Track" "Prellbock" "7391" 0.589001 0.000000 0.000000 0
P "Normal" 1
E 0.000000 0.000000 270.000000
S 0 0.000000 0.000000 0.000000 1.496063 0.000000
@@ -350,8 +354,8 @@ TURNOUT HO "Mrklin K-Track Bumper 38mm 7391"
1.500000 0.769333
0.748031 0.769333
END
-TURNOUT HO "Mrklin K-Track Straight Feeder 2290"
- U "Straight Section" "Dave Bullis" "Mrklin K-Track" "Straight Feeder" "2290" 7.086614 0.000000 0.000000 0
+TURNOUT HO "Märklin K-Track Straight Feeder 2290"
+ U "Straight Section" "Dave Bullis" "Märklin K-Track" "Straight Feeder" "2290" 7.086614 0.000000 0.000000 0
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -364,15 +368,15 @@ TURNOUT HO "Mrklin K-Track Straight Feeder 2290"
G3 0 0.000000 0.078740 3.395669 0.551181 0
G3 0 0.000000 0.078740 3.690945 0.551181 0
END
-TURNOUT HO "Mrklin K-Track Straight K to M Adapter 2291"
- U "Straight Section" "Dave Bullis" "Mrklin K-Track" "Straight K to M Adapter" "2291" 7.086614 0.000000 0.000000 0
+TURNOUT HO "Märklin K-Track Straight K to M Adapter 2291"
+ U "Straight Section" "Dave Bullis" "Märklin K-Track" "Straight K to M Adapter" "2291" 7.086614 0.000000 0.000000 0
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 7.086614 0.000000
END
-TURNOUT HO "Mrklin K-Track Straight Feeder w/ Capacitor 2292"
- U "Straight Section" "Dave Bullis" "Mrklin K-Track" "Straight Feeder w/ Capacitor" "2292" 7.086614 0.000000 0.000000 0
+TURNOUT HO "Märklin K-Track Straight Feeder w/ Capacitor 2292"
+ U "Straight Section" "Dave Bullis" "Märklin K-Track" "Straight Feeder w/ Capacitor" "2292" 7.086614 0.000000 0.000000 0
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -389,8 +393,8 @@ TURNOUT HO "Mrklin K-Track Straight Feeder w/ Capacitor 2292"
L3 0 0.040000 3.248031 0.078740 0 3.838583 0.078740 0
L3 0 0.040000 3.248031 -0.078740 0 3.838583 -0.078740 0
END
-TURNOUT HO "Mrklin K-Track Contact Set 2295"
- U "Straight Section" "Dave Bullis" "Mrklin K-Track" "Contact Set" "2295" 7.086614 0.000000 0.000000 0
+TURNOUT HO "Märklin K-Track Contact Set 2295"
+ U "Straight Section" "Dave Bullis" "Märklin K-Track" "Contact Set" "2295" 7.086614 0.000000 0.000000 0
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -410,83 +414,80 @@ TURNOUT HO "Mrklin K-Track Contact Set 2295"
L3 0 0.040000 3.543307 0.393701 0 3.543307 -0.393701 0
END
-SUBCONTENTS Mrklin K/M-Track Turntables
-TURNOUT HO "Marklin K/M-Track Turntable 12.2"" Dia 7.5d 48 Positions 7286"
+SUBCONTENTS Märklin K/M-Track Turntables
+TURNOUT HO "Marklin K/M-Track Turntable 12.2"" Dia 7.5d 48 Positions 7286" 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
- G3 0 0.000000 0.129736 0.000000 0.000000 0 0.000000 360.000000
- A3 0 0.031250 6.102362 0.000000 0.000000 0 0.000000 360.000000
- A3 0 0.031250 7.598425 0.000000 0.000000 0 0.000000 360.000000
- E 0.000000 6.102362 0.000000
- E 0.796518 6.050155 7.500000
- E 1.579408 5.894429 15.000000
- E 2.335273 5.637847 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.637847 2.335273 67.500000
- E 5.894429 1.579408 75.000000
- E 6.050155 0.796518 82.500000
- E 6.102362 0.000000 90.000000
- E 6.050155 -0.796518 97.500000
- E 5.894429 -1.579408 105.000000
- E 5.637847 -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.637847 157.500000
- E 1.579408 -5.894429 165.000000
- E 0.796518 -6.050155 172.500000
- E 0.000000 -6.102362 180.000000
- E -0.796518 -6.050155 187.500000
- E -1.579408 -5.894429 195.000000
- E -2.335273 -5.637847 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.637847 -2.335273 247.500000
- E -5.894429 -1.579408 255.000000
- E -6.050155 -0.796518 262.500000
- E -6.102362 0.000000 270.000000
- E -6.050155 0.796518 277.500000
- E -5.894429 1.579408 285.000000
- E -5.637847 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.637847 337.500000
- E -1.579408 5.894429 345.000000
- E -0.796518 6.050155 352.500000
+ 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.050155 7.500000
+ E 1.579408 5.894429 15.000000
+ E 2.335273 5.637847 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.637847 2.335273 67.500000
+ E 5.894429 1.579408 75.000000
+ E 6.050155 0.796518 82.500000
+ E 6.102362 0.000000 90.000000
+ E 6.050155 -0.796518 97.500000
+ E 5.894429 -1.579408 105.000000
+ E 5.637847 -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.637847 157.500000
+ E 1.579408 -5.894429 165.000000
+ E 0.796518 -6.050155 172.500000
+ E 0.000000 -6.102362 180.000000
+ E -0.796518 -6.050155 187.500000
+ E -1.579408 -5.894429 195.000000
+ E -2.335273 -5.637847 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.637847 -2.335273 247.500000
+ E -5.894429 -1.579408 255.000000
+ E -6.050155 -0.796518 262.500000
+ E -6.102362 0.000000 270.000000
+ E -6.050155 0.796518 277.500000
+ E -5.894429 1.579408 285.000000
+ E -5.637847 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.637847 337.500000
+ E -1.579408 5.894429 345.000000
+ E -0.796518 6.050155 352.500000
S 16777215 0 0.000000 6.102362 0.000000 -6.102362
S 16777215 0 0.796518 6.050155 -0.796518 -6.050155
S 16777215 0 1.579408 5.894429 -1.579408 -5.894429
@@ -511,17 +512,20 @@ TURNOUT HO "Marklin K/M-Track Turntable 12.2"" Dia 7.5d 48 Positions 7286"
S 16777215 0 2.335273 -5.637847 -2.335273 5.637847
S 16777215 0 1.579408 -5.894429 -1.579408 5.894429
S 16777215 0 0.796518 -6.050155 -0.796518 6.050155
+ G3 0 0.000000 0.129736 0.000000 0.000000 0 0.000000 360.000000
+ A3 0 0.031250 6.102362 0.000000 0.000000 0 0.000000 360.000000
+ A3 0 0.031250 7.598425 0.000000 0.000000 0 0.000000 360.000000
END
-TURNOUT HO "Mrklin K/M-Track Turntable Position Track 38mm 7287"
+TURNOUT HO "Märklin K/M-Track Turntable Position Track 38mm 7287"
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
-TURNOUT HO "Mrklin K/M-Track Turntable Position Dummy Track 38mm 7287"
+TURNOUT HO "Märklin K/M-Track Turntable Position Dummy Track 38mm 7287"
P "Normal" 1
E 0.000000 0.000000 270.000000
S 16777215 0.000000 0.000000 0.000000 1.496063 0.000000
- L3 0 0.060000 0.000000 0.324340 0 1.496063 0.324340 0
- L3 0 0.060000 0.000000 -0.324340 0 1.496063 -0.324340 0
+ L3 0 0.060000 0.000000 0.324340 0 1.496063 0.324340 0
+ L3 0 0.060000 0.000000 -0.324340 0 1.496063 -0.324340 0
END
diff --git a/app/lib/params/HO-Marklin M-Track.xtp b/app/lib/params/HO-Marklin M-Track.xtp
index 68db2ac..cbe1a9e 100644
--- a/app/lib/params/HO-Marklin M-Track.xtp
+++ b/app/lib/params/HO-Marklin M-Track.xtp
@@ -1,8 +1,8 @@
-CONTENTS Mrklin M-Track HO-Scale
+CONTENTS Märklin M-Track HO-Scale
-SUBCONTENTS Mrklin M-Track - Straight Tracks
-TURNOUT HO "Mrklin M-Track Straight 180mm 5106"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight 180mm" "5106" 7.086614 1.476378 0.053333 16754688
+SUBCONTENTS Märklin M-Track - Straight Tracks
+TURNOUT HO "Märklin M-Track Straight 180mm 5106"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight 180mm" "5106" 7.086614 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -10,8 +10,8 @@ TURNOUT HO "Mrklin M-Track Straight 180mm 5106"
L3 16754688 0.053333 -0.000000 -0.738189 0 7.086614 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 7.086614 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight 90mm 5107"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight 90mm" "5107" 3.543307 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight 90mm 5107"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight 90mm" "5107" 3.543307 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
@@ -19,8 +19,8 @@ TURNOUT HO "Mrklin M-Track Straight 90mm 5107"
L3 16754688 0.053333 -0.000000 -0.738189 0 3.543307 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 3.543307 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight 70mm 5129"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight 70mm" "5129" 2.755906 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight 70mm 5129"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight 70mm" "5129" 2.755906 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.755906 0.000000 90.000000
@@ -28,8 +28,8 @@ TURNOUT HO "Mrklin M-Track Straight 70mm 5129"
L3 16754688 0.053333 -0.000000 -0.738189 0 2.755906 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 2.755906 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight 45mm 5108"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight 45mm" "5108" 1.771654 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight 45mm 5108"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight 45mm" "5108" 1.771654 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.771654 0.000000 90.000000
@@ -37,8 +37,8 @@ TURNOUT HO "Mrklin M-Track Straight 45mm 5108"
L3 16754688 0.053333 -0.000000 -0.738189 0 1.771654 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 1.771654 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight 33.5mm 5109"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight 33.5mm" "5109" 1.318898 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight 33.5mm 5109"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight 33.5mm" "5109" 1.318898 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.318898 0.000000 90.000000
@@ -46,8 +46,8 @@ TURNOUT HO "Mrklin M-Track Straight 33.5mm 5109"
L3 16754688 0.053333 -0.000000 -0.738189 0 1.318898 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 1.318898 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight 22.5mm 5110"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight 22.5mm" "5110" 0.885827 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight 22.5mm 5110"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight 22.5mm" "5110" 0.885827 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 0.885827 0.000000 90.000000
@@ -55,8 +55,8 @@ TURNOUT HO "Mrklin M-Track Straight 22.5mm 5110"
L3 16754688 0.053333 -0.000000 -0.738189 0 0.885827 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 0.885827 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight 16mm 5210"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight 16mm" "5210" 0.629921 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight 16mm 5210"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight 16mm" "5210" 0.629921 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 0.629921 0.000000 90.000000
@@ -64,8 +64,8 @@ TURNOUT HO "Mrklin M-Track Straight 16mm 5210"
L3 16754688 0.053333 -0.000000 -0.738189 0 0.629921 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 0.629921 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight 8mm 5208"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight 8mm" "5208" 0.314961 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight 8mm 5208"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight 8mm" "5208" 0.314961 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 0.314961 0.000000 90.000000
@@ -74,9 +74,9 @@ TURNOUT HO "Mrklin M-Track Straight 8mm 5208"
L3 16754688 0.053333 0.000000 0.738189 0 0.314961 0.738189 0
END
-SUBCONTENTS Mrklin M-Track - Curve Tracks
-TURNOUT HO "Mrklin M-Track Curved R286 45 5120"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved R386 45" "5120" 11.259843 45.000000 1.476378 0.053333 16754688
+SUBCONTENTS Märklin M-Track - Curve Tracks
+TURNOUT HO "Märklin M-Track Curved R286 45° 5120"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved R386 45°" "5120" 11.259843 45.000000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.961911 3.297932 45.000000
@@ -84,8 +84,8 @@ TURNOUT HO "Mrklin M-Track Curved R286 45 5120"
A3 16754688 0.053333 11.998032 0.000000 11.259843 0 135.000000 45.000000
A3 16754688 0.053333 10.521654 0.000000 11.259843 0 135.000000 45.000000
END
-TURNOUT HO "Mrklin M-Track Curved R360 30 5100"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved R360 30" "5100" 14.173228 30.000000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved R360 30° 5100"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved R360 30°" "5100" 14.173228 30.000000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 1.898853 60.000000
@@ -93,8 +93,8 @@ TURNOUT HO "Mrklin M-Track Curved R360 30 5100"
A3 16754688 0.053333 14.911417 0.000000 14.173228 0 150.000000 30.000000
A3 16754688 0.053333 13.435039 0.000000 14.173228 0 150.000000 30.000000
END
-TURNOUT HO "Mrklin M-Track Curved R360 15 5101"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved R360 15" "5101" 14.173228 15.000000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved R360 15° 5101"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved R360 15°" "5101" 14.173228 15.000000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.668301 0.482941 75.000000
@@ -102,8 +102,8 @@ TURNOUT HO "Mrklin M-Track Curved R360 15 5101"
A3 16754688 0.053333 14.911417 0.000000 14.173228 0 165.000000 15.000000
A3 16754688 0.053333 13.435039 0.000000 14.173228 0 165.000000 15.000000
END
-TURNOUT HO "Mrklin M-Track Curved R360 7.5 5102"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved R360 7.5" "5102" 14.173228 7.500000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved R360 7.5° 5102"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved R360 7.5°" "5102" 14.173228 7.500000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.849978 0.121254 82.500000
@@ -111,8 +111,8 @@ TURNOUT HO "Mrklin M-Track Curved R360 7.5 5102"
A3 16754688 0.053333 14.911417 0.000000 14.173228 0 172.500000 7.500000
A3 16754688 0.053333 13.435039 0.000000 14.173228 0 172.500000 7.500000
END
-TURNOUT HO "Mrklin M-Track Curved R437.4 30 5200"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved R437.4 30" "5200" 17.220472 30.000000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved R437.4 30° 5200"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved R437.4 30°" "5200" 17.220472 30.000000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.610236 2.307106 60.000000
@@ -120,8 +120,8 @@ TURNOUT HO "Mrklin M-Track Curved R437.4 30 5200"
A3 16754688 0.053333 17.958661 0.000000 17.220472 0 150.000000 30.000000
A3 16754688 0.053333 16.482283 0.000000 17.220472 0 150.000000 30.000000
END
-TURNOUT HO "Mrklin M-Track Curved R437.4 2417' 5206"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved R437.4 2417'" "5206" 17.220472 24.299000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved R437.4 24°17' 5206"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved R437.4 24°17'" "5206" 17.220472 24.299000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086198 1.525554 65.701000
@@ -129,8 +129,8 @@ TURNOUT HO "Mrklin M-Track Curved R437.4 2417' 5206"
A3 16754688 0.053333 17.958661 0.000000 17.220472 0 155.701000 24.299000
A3 16754688 0.053333 16.482283 0.000000 17.220472 0 155.701000 24.299000
END
-TURNOUT HO "Mrklin M-Track Curved R437.4 15 5201"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved R437.4 15" "5201" 17.220472 15.000000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved R437.4 15° 5201"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved R437.4 15°" "5201" 17.220472 15.000000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.456986 0.586773 75.000000
@@ -138,8 +138,8 @@ TURNOUT HO "Mrklin M-Track Curved R437.4 15 5201"
A3 16754688 0.053333 17.958661 0.000000 17.220472 0 165.000000 15.000000
A3 16754688 0.053333 16.482283 0.000000 17.220472 0 165.000000 15.000000
END
-TURNOUT HO "Mrklin M-Track Curved R437.4 543' 5205"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved R437.4 543'" "5205" 17.220472 5.717000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved R437.4 5°43' 5205"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved R437.4 5°43'" "5205" 17.220472 5.717000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 1.715417 0.085654 84.283000
@@ -148,9 +148,9 @@ TURNOUT HO "Mrklin M-Track Curved R437.4 543' 5205"
A3 16754688 0.053333 16.482283 0.000000 17.220472 0 174.283000 5.717000
END
-SUBCONTENTS Mrklin M-Track - Crossings
-TURNOUT HO "Mrklin M-Track Crossing 30 5114"
- U "Crossing" "Dave Bullis" "Mrklin M-Track" "Crossing 30" "5114" 7.598425 30.000000 7.598425 1.476378 0.053333 16754688
+SUBCONTENTS Märklin M-Track - Crossings
+TURNOUT HO "Märklin M-Track Crossing 30° 5114"
+ U "Crossing" "Dave Bullis" "Märklin M-Track" "Crossing 30°" "5114" 7.598425 30.000000 7.598425 1.476378 0.053333 16754688
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 7.598425 0.000000 90.000000
@@ -167,8 +167,8 @@ TURNOUT HO "Mrklin M-Track Crossing 30 5114"
L3 16754688 0.053333 0.878092 2.538897 0 3.962669 0.758016 0
L3 16754688 0.053333 6.635968 -0.785414 0 7.458522 -1.260316 0
END
-TURNOUT HO "Mrklin M-Track Crossing 24 17' 5215"
- U "Crossing" "Dave Bullis" "Mrklin M-Track" "Crossing 24 17'" "5215" 7.086614 24.283000 7.086614 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Crossing 24° 17' 5215"
+ U "Crossing" "Dave Bullis" "Märklin M-Track" "Crossing 24° 17'" "5215" 7.086614 24.283000 7.086614 1.476378 0.053333 16754688
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -185,8 +185,8 @@ TURNOUT HO "Mrklin M-Track Crossing 24 17' 5215"
L3 16754688 0.053333 0.617069 2.130041 0 3.645019 0.763951 0
L3 16754688 0.053333 6.874834 -0.693213 0 7.076697 -0.784286 0
END
-TURNOUT HO "Mrklin M-Track Crossing 48 30' 5211"
- U "Crossing" "Dave Bullis" "Mrklin M-Track" "Crossing 48 30'" "5211" 3.858268 48.500000 3.858268 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Crossing 48° 30' 5211"
+ U "Crossing" "Dave Bullis" "Märklin M-Track" "Crossing 48° 30'" "5211" 3.858268 48.500000 3.858268 1.476378 0.053333 16754688
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 3.858268 0.000000 90.000000
@@ -204,8 +204,8 @@ TURNOUT HO "Mrklin M-Track Crossing 48 30' 5211"
L3 16754688 0.053333 3.600502 -0.775093 0 3.760288 -0.955697 0
END
-SUBCONTENTS Mrklin M-Track - Turnouts
-TURNOUT HO "Mrklin M-Track Left Turnout R437.4mm 5203"
+SUBCONTENTS Märklin M-Track - Turnouts
+TURNOUT HO "Märklin M-Track Left Turnout R437.4mm 5203"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.015738 0.764231 270.000000
@@ -223,7 +223,7 @@ TURNOUT HO "Mrklin M-Track Left Turnout R437.4mm 5203"
L3 16754688 0.052083 7.147492 1.498287 0 7.406116 1.615055 0
L3 16754688 0.052083 6.207448 2.693743 0 6.798588 2.960641 0
END
-TURNOUT HO "Mrklin M-Track Right Turnout R437.4mm 5204"
+TURNOUT HO "Märklin M-Track Right Turnout R437.4mm 5204"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.015740 2.220145 270.000000
@@ -241,7 +241,7 @@ TURNOUT HO "Mrklin M-Track Right Turnout R437.4mm 5204"
L3 16754688 0.052083 7.147494 1.486089 0 7.406118 1.369321 0
L3 16754688 0.052083 6.207450 0.290633 0 6.798590 0.023735 0
END
-TURNOUT HO "Mrklin M-Track Left Turnout R360 30 5118"
+TURNOUT HO "Märklin M-Track Left Turnout R360 30° 5118"
P "P0" 1 2
P "P1" 1 3 4 5
E 0.050937 0.764231 270.000000
@@ -265,7 +265,7 @@ TURNOUT HO "Mrklin M-Track Left Turnout R360 30 5118"
A3 255 0.062500 0.742961 4.779596 3.159672 0 160.201031 55.858005
A3 255 0.062500 0.777127 3.808337 2.014086 0 348.492336 54.906300
END
-TURNOUT HO "Mrklin M-Track Right Turnout R360 30 5119"
+TURNOUT HO "Märklin M-Track Right Turnout R360 30° 5119"
P "P0" 1 2
P "P1" 1 3 4 5
E 0.051021 2.564184 270.000000
@@ -289,7 +289,7 @@ TURNOUT HO "Mrklin M-Track Right Turnout R360 30 5119"
A3 255 0.062500 0.742961 4.779594 0.168716 0 323.940964 55.858005
A3 255 0.062500 0.777127 3.808335 1.314302 0 136.601365 54.906300
END
-TURNOUT HO "Mrklin M-Track Left Turnout R360 5138"
+TURNOUT HO "Märklin M-Track Left Turnout R360 5138"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.015738 0.764231 270.000000
@@ -307,7 +307,7 @@ TURNOUT HO "Mrklin M-Track Left Turnout R360 5138"
A3 16754688 0.052083 10.174306 0.664338 11.676726 0 157.500000 22.500000
L3 16754688 0.052083 4.557876 2.276893 0 5.157105 2.525102 0
END
-TURNOUT HO "Mrklin M-Track Right Turnout R360 5139"
+TURNOUT HO "Märklin M-Track Right Turnout R360 5139"
P "Normal" 1 2
P "Reverse" 1 3 4
E 0.015740 1.784930 270.000000
@@ -325,9 +325,11 @@ TURNOUT HO "Mrklin M-Track Right Turnout R360 5139"
A3 16754688 0.052083 10.174306 0.664340 -9.127565 0 0.000000 22.500000
L3 16754688 0.052083 4.557878 0.272268 0 5.157107 0.024059 0
END
-TURNOUT HO "Mrklin M-Track Double Slip 30 5128"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Märklin M-Track Double Slip 30° 5128" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
E 0.215299 0.738192 255.000000
E 7.554814 2.704807 75.000000
E 0.215300 2.704809 285.000000
@@ -362,7 +364,7 @@ TURNOUT HO "Mrklin M-Track Double Slip 30 5128"
L3 255 0.062500 1.153297 3.660763 0 2.531250 3.660763 0
L3 255 0.062500 5.287156 3.660763 0 6.665108 3.660763 0
END
-TURNOUT HO "Mrklin M-Track Left Curved Turnout 5141"
+TURNOUT HO "Märklin M-Track Left Curved Turnout 5141"
P "Normal" 1 6 4 5
P "Reverse" 1 2 3
E 0.015738 0.764231 270.000000
@@ -385,7 +387,7 @@ TURNOUT HO "Mrklin M-Track Left Curved Turnout 5141"
L3 255 0.062500 4.681093 2.279979 0 1.473613 2.279979 0
L3 255 0.062500 0.014716 1.501877 0 1.473452 2.280525 0
END
-TURNOUT HO "Mrklin M-Track Right Curved Turnout 5142"
+TURNOUT HO "Märklin M-Track Right Curved Turnout 5142"
P "Normal" 1 6 4 5
P "Reverse" 1 2 3
E 0.015762 2.560696 270.000000
@@ -408,7 +410,7 @@ TURNOUT HO "Mrklin M-Track Right Curved Turnout 5142"
L3 255 0.062500 4.681093 1.044914 0 1.473613 1.044914 0
L3 255 0.062500 0.014716 1.823015 0 1.473452 1.044368 0
END
-TURNOUT HO "Mrklin M-Track 3-Way Turnout 5214"
+TURNOUT HO "Märklin M-Track 3-Way Turnout 5214"
P "Left" 1 2 3
P "Normal" 1 6
P "Right" 1 4 5
@@ -435,10 +437,12 @@ TURNOUT HO "Mrklin M-Track 3-Way Turnout 5214"
L3 255 0.062500 0.013205 1.482042 0 1.469898 0.802908 0
L3 255 0.062500 1.469898 0.802908 0 4.895094 0.802908 0
END
-TURNOUT HO "Mrklin M-Track Double Slip 24 17' 5207"
- U "Double Slipswitch" "Dave Bullis" "Mrklin M-Track" "Double Slip 24 17'" "5207" 7.086614 24.283000 7.086614 1.476378 0.053333 16754688
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Märklin M-Track Double Slip 24° 17' 5207" 512
+ U "Double Slipswitch" "Dave Bullis" "Märklin M-Track" "Double Slip 24° 17'" "5207" 7.086614 24.283000 7.086614 1.476378 0.053333 16754688
+ 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 7.086614 0.000000 90.000000
E 0.313493 1.457164 294.283000
@@ -463,9 +467,9 @@ TURNOUT HO "Mrklin M-Track Double Slip 24 17' 5207"
A3 16754688 0.053333 9.702064 5.789414 10.440253 0 180.000000 24.283000
END
-SUBCONTENTS Mrklin M-Track - Misc track
-TURNOUT HO "Mrklin M-Track Bumper 7190"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Bumper" "7190" 2.755906 1.476378 0.053333 16754688
+SUBCONTENTS Märklin M-Track - Misc track
+TURNOUT HO "Märklin M-Track Bumper 7190"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Bumper" "7190" 2.755906 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
S 0 0.000000 0.000000 0.000000 2.755906 0.000000
@@ -477,8 +481,8 @@ TURNOUT HO "Mrklin M-Track Bumper 7190"
L3 16754688 0.053333 0.000000 -0.738189 0 2.755906 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 2.755906 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Lighted Bumper 7191"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Lighted Bumper" "7191" 2.755906 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Lighted Bumper 7191"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Lighted Bumper" "7191" 2.755906 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
S 0 0.000000 0.000000 0.000000 2.755906 0.000000
@@ -491,8 +495,8 @@ TURNOUT HO "Mrklin M-Track Lighted Bumper 7191"
L3 16754688 0.053333 0.000000 -0.738189 0 2.755906 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 2.755906 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight Feeder 5111"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight Feeder" "5111" 7.086614 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight Feeder 5111"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight Feeder" "5111" 7.086614 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -502,8 +506,8 @@ TURNOUT HO "Mrklin M-Track Straight Feeder 5111"
L3 16754688 0.053333 0.000000 -0.738189 0 7.086614 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 7.086614 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Straight Feeder w/Capacitor 5131"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight Feeder w/Capacitor" "5131" 7.086614 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Straight Feeder w/Capacitor 5131"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight Feeder w/Capacitor" "5131" 7.086614 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -517,8 +521,8 @@ TURNOUT HO "Mrklin M-Track Straight Feeder w/Capacitor 5131"
L3 16754688 0.053333 0.000000 -0.738189 0 7.086614 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 7.086614 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Curved Feeder 5103"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved Feeder" "5103" 14.173228 30.000000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved Feeder 5103"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved Feeder" "5103" 14.173228 30.000000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 1.898853 60.000000
@@ -528,8 +532,8 @@ TURNOUT HO "Mrklin M-Track Curved Feeder 5103"
A3 16754688 0.053333 14.911417 0.000000 14.173228 0 150.000000 30.000000
A3 16754688 0.053333 13.435039 0.000000 14.173228 0 150.000000 30.000000
END
-TURNOUT HO "Mrklin M-Track Uncoupler 5112"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Uncoupler" "5112" 3.543307 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Uncoupler 5112"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Uncoupler" "5112" 3.543307 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
@@ -542,9 +546,9 @@ TURNOUT HO "Mrklin M-Track Uncoupler 5112"
L3 16754688 0.053333 0.000000 0.738189 0 3.543307 0.738189 0
END
-SUBCONTENTS Mrklin M-Track - Circuit Tracks
-TURNOUT HO "Mrklin M-Track Straight Circuit 5146"
- U "Straight Section" "Dave Bullis" "Mrklin M-Track" "Straight Circuit" "5146" 3.543307 1.476378 0.053333 16754688
+SUBCONTENTS Märklin M-Track - Circuit Tracks
+TURNOUT HO "Märklin M-Track Straight Circuit 5146"
+ U "Straight Section" "Dave Bullis" "Märklin M-Track" "Straight Circuit" "5146" 3.543307 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
@@ -569,8 +573,8 @@ TURNOUT HO "Mrklin M-Track Straight Circuit 5146"
L3 16754688 0.053333 0.000000 -0.738189 0 3.543307 -0.738189 0
L3 16754688 0.053333 0.000000 0.738189 0 3.543307 0.738189 0
END
-TURNOUT HO "Mrklin M-Track Curved Circuit 5147"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved Circuit" "5147" 14.173228 15.000000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved Circuit 5147"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved Circuit" "5147" 14.173228 15.000000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.668301 0.482941 75.000000
@@ -595,8 +599,8 @@ TURNOUT HO "Mrklin M-Track Curved Circuit 5147"
A3 16754688 0.053333 14.911417 -0.000000 14.173228 0 165.000000 15.000000
A3 16754688 0.053333 13.435039 -0.000000 14.173228 0 165.000000 15.000000
END
-TURNOUT HO "Mrklin M-Track Curved Circuit 5213"
- U "Curved Section" "Dave Bullis" "Mrklin M-Track" "Curved Circuit" "5213" 17.220472 15.000000 1.476378 0.053333 16754688
+TURNOUT HO "Märklin M-Track Curved Circuit 5213"
+ U "Curved Section" "Dave Bullis" "Märklin M-Track" "Curved Circuit" "5213" 17.220472 15.000000 1.476378 0.053333 16754688
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.456986 0.586773 75.000000
@@ -623,8 +627,8 @@ TURNOUT HO "Mrklin M-Track Curved Circuit 5213"
END
-SUBCONTENTS Mrklin M-Track - Contact Tracks
-TURNOUT HO "Mrklin M-Track Contact Set 5145"
+SUBCONTENTS Märklin M-Track - Contact Tracks
+TURNOUT HO "Märklin M-Track Contact Set 5145"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
@@ -635,7 +639,7 @@ TURNOUT HO "Mrklin M-Track Contact Set 5145"
L3 8421376 0.150000 0.885827 -0.738189 0 0.885827 -0.888189 0
L3 8421376 0.150000 2.657480 -0.738189 0 2.657480 -0.888189 0
END
-TURNOUT HO "Mrklin M-Track Straight Contact 180mm 5115"
+TURNOUT HO "Märklin M-Track Straight Contact 180mm 5115"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -644,7 +648,7 @@ TURNOUT HO "Mrklin M-Track Straight Contact 180mm 5115"
L3 16754688 0.053333 0.000000 0.738189 0 7.086614 0.738189 0
L3 16754688 0.053333 0.000000 -0.738189 0 7.086614 -0.738189 0
END
-TURNOUT HO "Mrklin M-Track Curved Contact 5116"
+TURNOUT HO "Märklin M-Track Curved Contact 5116"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 1.898853 60.000000
@@ -654,8 +658,8 @@ TURNOUT HO "Mrklin M-Track Curved Contact 5116"
A3 16754688 0.053333 13.435039 0.000000 14.173228 0 150.000000 30.000000
END
-SUBCONTENTS Mrklin M-Track - Contact (old) Tracks
-TURNOUT HO "Mrklin M-Track Straight Contact(old) 90mm 3601D"
+SUBCONTENTS Märklin M-Track - Contact (old) Tracks
+TURNOUT HO "Märklin M-Track Straight Contact(old) 90mm 3601D"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 3.543307 0.000000 90.000000
@@ -666,7 +670,7 @@ TURNOUT HO "Mrklin M-Track Straight Contact(old) 90mm 3601D"
L3 8421376 0.150000 1.446850 -0.738189 0 1.446850 -0.888189 0
L3 8421376 0.150000 2.096457 -0.738189 0 2.096457 -0.888189 0
END
-TURNOUT HO "Mrklin M-Track Straight Contact(old) 180mm 5105"
+TURNOUT HO "Märklin M-Track Straight Contact(old) 180mm 5105"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -677,7 +681,7 @@ TURNOUT HO "Mrklin M-Track Straight Contact(old) 180mm 5105"
L3 8421376 0.150000 3.218504 -0.738189 0 3.218504 -0.888189 0
L3 8421376 0.150000 3.868110 -0.738189 0 3.868110 -0.888189 0
END
-TURNOUT HO "Mrklin Curve Contact(old) R360mm 30 5104"
+TURNOUT HO "Märklin Curve Contact(old) R360mm 30° 5104"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 -1.898853 120.000000
@@ -689,8 +693,8 @@ TURNOUT HO "Mrklin Curve Contact(old) R360mm 30 5104"
L3 8421376 0.150000 4.000000 -1.350000 0 3.955000 -1.500000 0
END
-SUBCONTENTS Mrklin M-Track - TurnTable
-TURNOUT HO "Mrklin M-Track Turntable 7186"
+SUBCONTENTS Märklin M-Track - TurnTable
+TURNOUT HO "Märklin M-Track Turntable 7186" 512
P "1" 1 2
P "2" 3 4 5
P "3" 6 7
@@ -776,8 +780,8 @@ TURNOUT HO "Mrklin M-Track Turntable 7186"
A 16711680 0 6.102362 0.000000 0.000000 0.000000 360.000000
END
-SUBCONTENTS Mrklin M-Track - Transfer Table
-TURNOUT HO "Mrklin M-Track Transfer Table 7294"
+SUBCONTENTS Märklin M-Track - Transfer Table
+TURNOUT HO "Märklin M-Track Transfer Table 7294" 512
P "P0" 1 2 3
P "P1" 4 5
P "P2" 6 7
@@ -830,83 +834,80 @@ TURNOUT HO "Mrklin M-Track Transfer Table 7294"
L3 0 0.052632 8.661417 -7.492126 0 13.385827 -7.492126 0
END
-SUBCONTENTS Mrklin - K/M-Track TurnTable
-TURNOUT HO "Marklin K/M-Track Turntable 12.2"" Dia 7.5d 48 Positions 7286"
- 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
- G3 0 0.000000 0.129736 0.000000 0.000000 0 0.000000 360.000000
- A3 0 0.031250 6.102362 0.000000 0.000000 0 0.000000 360.000000
- A3 0 0.031250 7.598425 0.000000 0.000000 0 0.000000 360.000000
- E 0.000000 6.102362 0.000000
- E 0.796518 6.050155 7.500000
- E 1.579408 5.894429 15.000000
- E 2.335273 5.637847 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.637847 2.335273 67.500000
- E 5.894429 1.579408 75.000000
- E 6.050155 0.796518 82.500000
- E 6.102362 0.000000 90.000000
- E 6.050155 -0.796518 97.500000
- E 5.894429 -1.579408 105.000000
- E 5.637847 -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.637847 157.500000
- E 1.579408 -5.894429 165.000000
- E 0.796518 -6.050155 172.500000
- E 0.000000 -6.102362 180.000000
- E -0.796518 -6.050155 187.500000
- E -1.579408 -5.894429 195.000000
- E -2.335273 -5.637847 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.637847 -2.335273 247.500000
- E -5.894429 -1.579408 255.000000
- E -6.050155 -0.796518 262.500000
- E -6.102362 0.000000 270.000000
- E -6.050155 0.796518 277.500000
- E -5.894429 1.579408 285.000000
- E -5.637847 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.637847 337.500000
- E -1.579408 5.894429 345.000000
- E -0.796518 6.050155 352.500000
+SUBCONTENTS Märklin - K/M-Track TurnTable
+TURNOUT HO "Marklin K/M-Track Turntable 12.2"" Dia 7.5d 48 Positions 7286" 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.050155 7.500000
+ E 1.579408 5.894429 15.000000
+ E 2.335273 5.637847 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.637847 2.335273 67.500000
+ E 5.894429 1.579408 75.000000
+ E 6.050155 0.796518 82.500000
+ E 6.102362 0.000000 90.000000
+ E 6.050155 -0.796518 97.500000
+ E 5.894429 -1.579408 105.000000
+ E 5.637847 -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.637847 157.500000
+ E 1.579408 -5.894429 165.000000
+ E 0.796518 -6.050155 172.500000
+ E 0.000000 -6.102362 180.000000
+ E -0.796518 -6.050155 187.500000
+ E -1.579408 -5.894429 195.000000
+ E -2.335273 -5.637847 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.637847 -2.335273 247.500000
+ E -5.894429 -1.579408 255.000000
+ E -6.050155 -0.796518 262.500000
+ E -6.102362 0.000000 270.000000
+ E -6.050155 0.796518 277.500000
+ E -5.894429 1.579408 285.000000
+ E -5.637847 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.637847 337.500000
+ E -1.579408 5.894429 345.000000
+ E -0.796518 6.050155 352.500000
S 16777215 0 0.000000 6.102362 0.000000 -6.102362
S 16777215 0 0.796518 6.050155 -0.796518 -6.050155
S 16777215 0 1.579408 5.894429 -1.579408 -5.894429
@@ -931,24 +932,27 @@ TURNOUT HO "Marklin K/M-Track Turntable 12.2"" Dia 7.5d 48 Positions 7286"
S 16777215 0 2.335273 -5.637847 -2.335273 5.637847
S 16777215 0 1.579408 -5.894429 -1.579408 5.894429
S 16777215 0 0.796518 -6.050155 -0.796518 6.050155
+ G3 0 0.000000 0.129736 0.000000 0.000000 0 0.000000 360.000000
+ A3 0 0.031250 6.102362 0.000000 0.000000 0 0.000000 360.000000
+ A3 0 0.031250 7.598425 0.000000 0.000000 0 0.000000 360.000000
END
-TURNOUT HO "Mrklin K/M-Track Turntable Position Spoke Track 38mm 7287"
+TURNOUT HO "Märklin K/M-Track Turntable Position Spoke Track 38mm 7287"
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
-TURNOUT HO "Mrklin K/M-Track Turntable Position Dummy Track 38mm 7287"
+TURNOUT HO "Märklin K/M-Track Turntable Position Dummy Track 38mm 7287"
P "Normal" 1
E 0.000000 0.000000 270.000000
S 16777215 0.000000 0.000000 0.000000 1.496063 0.000000
- L3 0 0.060000 0.000000 0.324340 0 1.496063 0.324340 0
- L3 0 0.060000 0.000000 -0.324340 0 1.496063 -0.324340 0
+ L3 0 0.060000 0.000000 0.324340 0 1.496063 0.324340 0
+ L3 0 0.060000 0.000000 -0.324340 0 1.496063 -0.324340 0
END
-SUBCONTENTS Mrklin M-Track - Bridges
-TURNOUT HO "Mrklin M-Track Plate Girder Bridge 180mm 7161"
+SUBCONTENTS Märklin M-Track - Bridges
+TURNOUT HO "Märklin M-Track Plate Girder Bridge 180mm 7161"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -958,7 +962,7 @@ TURNOUT HO "Mrklin M-Track Plate Girder Bridge 180mm 7161"
L3 11579568 0.053333 0.000000 1.181102 0 0.000000 -1.181102 0
L3 11579568 0.053333 7.086614 1.181102 0 7.086614 -1.181102 0
END
-TURNOUT HO "Mrklin M-Track Lattice Girder Bridge 180mm 7162"
+TURNOUT HO "Märklin M-Track Lattice Girder Bridge 180mm 7162"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -978,7 +982,7 @@ TURNOUT HO "Mrklin M-Track Lattice Girder Bridge 180mm 7162"
L3 11579568 0.053333 5.669291 -1.181102 0 6.377952 1.181102 0
L3 11579568 0.053333 6.377952 1.181102 0 7.086614 -1.181102 0
END
-TURNOUT HO "Mrklin M-Track Arched Bridge 180mm 7163"
+TURNOUT HO "Märklin M-Track Arched Bridge 180mm 7163"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 14.173228 0.000000 90.000000
@@ -1001,7 +1005,7 @@ TURNOUT HO "Mrklin M-Track Arched Bridge 180mm 7163"
L3 11579568 0.053333 8.661417 1.181102 0 10.236220 -1.181102 0
L3 11579568 0.053333 10.236220 1.181102 0 10.236220 -1.181102 0
END
-TURNOUT HO "Mrklin M-Track Curved Straight Approach Bridge Section R360 30 7167"
+TURNOUT HO "Märklin M-Track Curved Straight Approach Bridge Section R360 30° 7167"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 -1.898853 120.000000
@@ -1019,7 +1023,7 @@ TURNOUT HO "Mrklin M-Track Curved Straight Approach Bridge Section R360 30 716
A3 11579568 0.053333 12.795276 0.000000 -14.173228 0 28.7500000 1.250000
L3 11579568 0.053333 7.775591 -0.705510 0 6.397638 -3.092195 0
END
-TURNOUT HO "Mrklin M-Track Straight Approach Bridge Section 180mm 7168"
+TURNOUT HO "Märklin M-Track Straight Approach Bridge Section 180mm 7168"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 0.000000 90.000000
@@ -1037,7 +1041,7 @@ TURNOUT HO "Mrklin M-Track Straight Approach Bridge Section 180mm 7168"
L3 11579568 0.053333 6.889764 -1.377953 0 7.086614 -1.377953 0
L3 11579568 0.053333 7.086614 1.377953 0 7.086614 -1.377953 0
END
-STRUCTURE HO "Mrklin M-Track Bridge Pier (30mm) 7064"
+STRUCTURE HO "Märklin M-Track Bridge Pier (30mm) 7064"
X pier 1.181102 ""
L3 11579568 0.053333 -0.295276 1.692913 0 0.295276 1.692913 0
L3 11579568 0.053333 -0.295276 1.692913 0 -0.787402 1.200787 0
@@ -1048,7 +1052,7 @@ STRUCTURE HO "Mrklin M-Track Bridge Pier (30mm) 7064"
L3 11579568 0.053333 0.295276 -1.692913 0 0.787402 -1.200787 0
L3 11579568 0.053333 -0.295276 -1.692913 0 0.295276 -1.692913 0
END
-STRUCTURE HO "Mrklin M-Track Bridge Pier (6mm) 7065"
+STRUCTURE HO "Märklin M-Track Bridge Pier (6mm) 7065"
X pier 0.236220 ""
L3 11579568 0.053333 -0.295276 1.692913 0 0.295276 1.692913 0
L3 11579568 0.053333 -0.295276 1.692913 0 -0.787402 1.200787 0
@@ -1059,7 +1063,7 @@ STRUCTURE HO "Mrklin M-Track Bridge Pier (6mm) 7065"
L3 11579568 0.053333 0.295276 -1.692913 0 0.787402 -1.200787 0
L3 11579568 0.053333 -0.295276 -1.692913 0 0.295276 -1.692913 0
END
-STRUCTURE HO "Mrklin M-Track Bridge Pier (baseplate 3mm) 7066"
+STRUCTURE HO "Märklin M-Track Bridge Pier (baseplate 3mm) 7066"
X pier 0.118110 ""
L3 11579568 0.053333 -0.295276 1.692913 0 0.295276 1.692913 0
L3 11579568 0.053333 -0.295276 1.692913 0 -0.787402 1.200787 0
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 013c810..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,86 +65,106 @@ 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"
- P "Normal" 1 2 3 4
- P "Reverse" 1 2 5 6 7
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
E 0.000000 0.000000 270.000000
- E 9.930000 0.830000 80.473000
- E 9.680000 1.970000 69.666000
- C 0 0.000000 60.000000 0.000000 60.000000 179.952254 0.047746
- S 0 0.000000 0.050000 0.000021 0.549978 0.002473
- C 0 0.000000 -59.997741 -0.016498 59.997539 170.505131 8.953896
- C 0 0.000000 60.000000 -0.000742 60.002463 170.473000 0.047746
- C 0 0.000000 -20.009032 0.514864 20.011474 166.525509 13.373944
- C 0 0.000000 -42.289079 -5.246889 41.537410 159.398651 6.331063
- C 0 0.000000 30.000000 -0.744764 30.100487 159.666000 0.095493
- END
+ E 9.930000 0.830000 80.490000
+ E 9.681496 1.794000 69.640000
+ S 0 0.000000 0.000000 0.000000 1.204702 0.001944
+ C 0 0.000000 -56.711913 0.217496 56.705263 170.341157 8.661424
+ C 0 0.000000 -60.000000 0.016815 60.005407 170.490000 0.190986
+ 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$SEGS
TURNOUT HO "Peco Curved Right Turnout SL-86"
- P "Normal" 1 2 3 4
- P "Reverse" 1 2 5 6 7
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
E 0.000000 0.000000 270.000000
- E 9.930000 -0.830000 99.527000
- E 9.680000 -1.970000 110.334000
- C 0 0.000000 60.000000 0.000000 -60.000000 0.000000 0.047746
- S 0 0.000000 0.050000 -0.000021 0.549978 -0.002473
- C 0 0.000000 59.997741 -0.016498 -59.997539 0.540973 8.953896
- C 0 0.000000 60.000000 -0.000742 -60.002463 9.479254 0.047746
- C 0 0.000000 20.009032 0.514864 -20.011474 0.100547 13.373944
- C 0 0.000000 42.289079 -5.246889 -41.537410 14.270285 6.331063
- C 0 0.000000 30.000000 -0.744764 -30.100487 20.238507 0.095493
- END
+ E 9.930000 -0.830000 99.510000
+ E 9.681496 -1.794000 110.360000
+ S 0 0.000000 0.000000 0.000000 1.204702 -0.001944
+ C 0 0.000000 56.711913 0.217496 -56.705263 0.997419 8.661424
+ C 0 0.000000 60.000000 0.016815 -60.005407 9.319014 0.190986
+ 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$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"
P "Left" 1 2 3 4 5
P "Right" 1 2 6 7 8
E 0.000000 0.000000 270.000000
- E 5.733858 0.517717 78.000000
- E 5.733858 -0.517717 102.000000
- S 0 0.000000 0.000000 0.000000 0.050000 0.000000
- S 0 0.000000 0.050000 0.000000 0.837008 0.000000
- C 0 0.000000 -21.959287 1.049798 21.958256 174.182810 6.372407
- C 0 0.000000 -25.426526 0.368265 25.371829 167.930412 5.504160
- C 0 0.000000 23.701181 0.806106 23.700970 168.000000 0.120871
- C 0 0.000000 21.967293 1.049905 -21.966261 359.444707 6.370099
- C 0 0.000000 25.415926 0.370538 -25.361368 6.563042 5.506467
- C 0 0.000000 23.701181 10.661611 22.665537 192.120871 0.120871
- END
+ E 5.734000 0.517717 78.000000
+ E 5.733858 -0.518000 102.000000
+ S 0 0.000000 0.000000 0.000000 0.200000 0.000000
+ S 0 0.000000 0.200000 0.000000 0.987008 0.000000
+ C 0 0.000000 -21.538028 1.221044 21.536756 174.521400 6.101197
+ C 0 0.000000 -20.601246 0.999673 20.572063 167.273147 6.379205
+ C 0 0.000000 -23.701000 0.806285 23.700793 168.000000 0.483488
+ 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$SEGS
TURNOUT HO "Peco Large Y Turnout SL-98"
P "Left" 1 2 3 4
P "Right" 1 2 5 6
E 0.000000 0.000000 270.000000
- E 8.638189 0.479134 84.000000
- E 8.638189 -0.479134 96.000000
- S 0 0.000000 0.000000 0.000000 0.050000 0.000000
- S 0 0.000000 0.050000 0.000000 0.855906 0.000000
- C 0 0.000000 -56.219397 1.192646 56.218388 176.392954 3.950236
- C 0 0.000000 -108.369470 -3.503854 108.166608 173.593356 2.049359
- C 0 0.000000 54.238706 1.176210 -54.237760 359.661640 4.094836
- C 0 0.000000 116.607497 -4.432846 -116.362546 4.506721 1.904748
- END
+ E 8.640000 0.480000 83.500000
+ E 8.640000 -0.480000 96.500000
+ S 0 0.000000 0.000000 0.000000 0.200000 0.000000
+ S 0 0.000000 0.200000 0.000000 1.005906 0.000000
+ C 0 0.000000 -65.701925 0.696301 65.701195 173.230196 6.499810
+ 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$SEGS
TURNOUT HO "Peco Medium Radius 3 Way Turnout, Insulfrog SL-99"
- P "Normal" 1 2 3 4
- P "Left" 1 2 5 6 7
- P "Right" 1 2 8 9 10
+ P "Normal" 1 2 3 4 5
+ P "Left" 1 2 3 6 7 8
+ P "Right" 1 2 9 10 11
E 0.000000 0.000000 270.000000
- E 8.540945 0.994094 78.000000
- E 8.540945 -0.994094 102.000000
- E 8.644882 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 0.050000 0.000000
- S 0 0.000000 0.050000 0.000000 0.855118 0.000000
- S 0 0.000000 0.855118 0.000000 8.594882 0.000000
- S 0 0.000000 8.594882 0.000000 8.594882 0.000000
- C 0 0.000000 -26.000276 1.156979 25.998523 172.159155 8.506060
- C 0 0.000000 -63.372404 -5.584016 62.773069 167.166627 3.490515
- S 0 0.000000 8.492038 0.983699 8.492038 0.983699
- C 0 0.000000 25.160469 1.142991 -25.158822 359.344438 8.793112
- C 0 0.000000 69.079411 -6.862926 -68.355735 9.639618 3.203358
- S 0 0.000000 8.492038 -1.004490 8.492038 -1.004490
- END
+ E 8.540000 1.007480 78.000000
+ E 8.540000 -1.007480 102.000000
+ E 8.650000 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.200000 0.000000
+ S 0 0.000000 0.200000 0.000000 1.005118 0.000000
+ S 0 0.000000 1.005118 0.000000 1.541339 0.000000
+ S 0 0.000000 1.541339 0.000000 8.450000 0.000000
+ S 0 0.000000 8.450000 0.000000 8.650000 0.000000
+ C 0 0.000000 -19.950415 1.756712 19.949252 170.725608 9.892934
+ C 0 0.000000 -93.877293 -12.581420 92.481238 167.120240 2.103032
+ S 0 0.000000 8.344370 0.965898 8.540000 1.007480
+ 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$SEGS
SUBCONTENTS Peco HO Scale Code 100 Slip Turnouts
TURNOUT HO "Peco Single Slip, Insulfrog SL-80"
@@ -159,10 +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
-TURNOUT HO "Peco Double Slip, Insulfrog SL-90"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+END$SEGS
+TURNOUT HO "Peco Double Slip, Insulfrog SL-90" 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
@@ -175,7 +197,7 @@ TURNOUT HO "Peco Double Slip, Insulfrog SL-90"
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"
@@ -185,9 +207,9 @@ TURNOUT HO "PECO RH CatchPoint SL-84"
E 4.090000 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 0.649000 0.000000
S 0 0.000000 0.649000 0.000000 3.441000 0.000000
- S 0 0.000000 0.649000 -0.000000 3.441000 -0.20000
+ 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"
P "Closed" 1 2 4
P "Open" 1 3
@@ -195,9 +217,9 @@ TURNOUT HO "PECO LH CatchPoint SL-85"
E 4.090000 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 0.649000 0.000000
S 0 0.000000 0.649000 0.000000 3.441000 0.000000
- S 0 0.000000 0.649000 -0.000000 3.441000 0.20000
+ 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"
@@ -208,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
@@ -217,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"
@@ -225,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-Peco-Code75Finescale.xtp b/app/lib/params/HO-Peco-Code75Finescale.xtp
index b697d67..7719fae 100644
--- a/app/lib/params/HO-Peco-Code75Finescale.xtp
+++ b/app/lib/params/HO-Peco-Code75Finescale.xtp
@@ -69,32 +69,30 @@ TURNOUT HO "Peco RH Long Turnout, Electrofrog SL-E188"
SUBCONTENTS Peco HO Scale Code 75 Curved Turnouts
TURNOUT HO "Peco Curved Left Turnout, Electrofrog SL-E187"
- P "Normal" 1 2 3 4
- P "Reverse" 1 2 5 6 7
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
E 0.000000 0.000000 270.000000
- E 9.930000 0.830000 80.473000
- E 9.680000 1.970000 69.666000
- C 0 0.000000 60.000000 0.000000 60.000000 179.952254 0.047746
- S 0 0.000000 0.050000 0.000021 0.549978 0.002473
- C 0 0.000000 -59.997741 -0.016498 59.997539 170.505131 8.953896
- C 0 0.000000 60.000000 -0.000742 60.002463 170.473000 0.047746
- C 0 0.000000 -20.009032 0.514864 20.011474 166.525509 13.373944
- C 0 0.000000 -42.289079 -5.246889 41.537410 159.398651 6.331063
- C 0 0.000000 30.000000 -0.744764 30.100487 159.666000 0.095493
+ E 9.930000 0.830000 80.490000
+ E 9.681496 1.794000 69.640000
+ S 0 0.000000 0.000000 0.000000 1.204702 0.001944
+ C 0 0.000000 -56.711913 0.217496 56.705263 170.341157 8.661424
+ C 0 0.000000 -60.000000 0.016815 60.005407 170.490000 0.190986
+ 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
TURNOUT HO "Peco Curved Right Turnout, Electrofrog SL-E186"
- P "Normal" 1 2 3 4
- P "Reverse" 1 2 5 6 7
+ P "Normal" 1 2 3
+ P "Reverse" 1 4 5 6
E 0.000000 0.000000 270.000000
- E 9.930000 -0.830000 99.527000
- E 9.680000 -1.970000 110.334000
- C 0 0.000000 60.000000 0.000000 -60.000000 0.000000 0.047746
- S 0 0.000000 0.050000 -0.000021 0.549978 -0.002473
- C 0 0.000000 59.997741 -0.016498 -59.997539 0.540973 8.953896
- C 0 0.000000 60.000000 -0.000742 -60.002463 9.479254 0.047746
- C 0 0.000000 20.009032 0.514864 -20.011474 0.100547 13.373944
- C 0 0.000000 42.289079 -5.246889 -41.537410 14.270285 6.331063
- C 0 0.000000 30.000000 -0.744764 -30.100487 20.238507 0.095493
+ E 9.930000 -0.830000 99.510000
+ E 9.681496 -1.794000 110.360000
+ S 0 0.000000 0.000000 0.000000 1.204702 -0.001944
+ C 0 0.000000 56.711913 0.217496 -56.705263 0.997419 8.661424
+ C 0 0.000000 60.000000 0.016815 -60.005407 9.319014 0.190986
+ 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
SUBCONTENTS Peco HO Scale Code 75 WYE Turnouts
@@ -102,47 +100,50 @@ TURNOUT HO "Peco Short Y Turnout, Electrofrog SL-E197"
P "Left" 1 2 3 4 5
P "Right" 1 2 6 7 8
E 0.000000 0.000000 270.000000
- E 5.733858 0.517717 78.000000
- E 5.733858 -0.517717 102.000000
- S 0 0.000000 0.000000 0.000000 0.050000 0.000000
- S 0 0.000000 0.050000 0.000000 0.837008 0.000000
- C 0 0.000000 -21.959287 1.049798 21.958256 174.182810 6.372407
- C 0 0.000000 -25.426526 0.368265 25.371829 167.930412 5.504160
- C 0 0.000000 23.701181 0.806106 23.700970 168.000000 0.120871
- C 0 0.000000 21.967293 1.049905 -21.966261 359.444707 6.370099
- C 0 0.000000 25.415926 0.370538 -25.361368 6.563042 5.506467
- C 0 0.000000 23.701181 10.661611 22.665537 192.120871 0.120871
+ E 5.734000 0.517717 78.000000
+ E 5.733858 -0.518000 102.000000
+ S 0 0.000000 0.000000 0.000000 0.200000 0.000000
+ S 0 0.000000 0.200000 0.000000 0.987008 0.000000
+ C 0 0.000000 -21.538028 1.221044 21.536756 174.521400 6.101197
+ C 0 0.000000 -20.601246 0.999673 20.572063 167.273147 6.379205
+ C 0 0.000000 -23.701000 0.806285 23.700793 168.000000 0.483488
+ 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
TURNOUT HO "Peco Medium Y Turnout, Electrofrog SL-E198"
P "Left" 1 2 3 4
P "Right" 1 2 5 6
E 0.000000 0.000000 270.000000
- E 8.638189 0.479134 84.000000
- E 8.638189 -0.479134 96.000000
- S 0 0.000000 0.000000 0.000000 0.050000 0.000000
- S 0 0.000000 0.050000 0.000000 0.855906 0.000000
- C 0 0.000000 -56.219397 1.192646 56.218388 176.392954 3.950236
- C 0 0.000000 -108.369470 -3.503854 108.166608 173.593356 2.049359
- C 0 0.000000 54.238706 1.176210 -54.237760 359.661640 4.094836
- C 0 0.000000 116.607497 -4.432846 -116.362546 4.506721 1.904748
+ E 8.640000 0.480000 83.500000
+ E 8.640000 -0.480000 96.500000
+ S 0 0.000000 0.000000 0.000000 0.200000 0.000000
+ S 0 0.000000 0.200000 0.000000 1.005906 0.000000
+ C 0 0.000000 -65.701925 0.696301 65.701195 173.230196 6.499810
+ 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 Asymmetric 3 Way Turnout SL-E199"
- P "Left" 1 2 3 4
- P "Normal" 1 2 7
- P "Right" 1 5 6
+ P "Normal" 1 2 3 4 5
+ P "Left" 1 2 3 6 7 8
+ P "Right" 1 2 9 10 11
E 0.000000 0.000000 270.000000
- E 10.748031 1.082677 77.500000
- E 8.425197 -1.082677 102.500000
- E 10.826772 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 0.649600 -0.000000
- S 0 0.000000 0.649600 -0.000000 1.511778 0.000000
- C 0 0.000000 -39.743423 1.511778 39.743423 167.500000 12.500000
- S 0 0.000000 10.113829 0.942078 10.748031 1.082677
- C 0 0.000000 26.406268 0.649600 -26.406268 0.000000 12.500000
- S 0 0.000000 6.364962 -0.625934 8.425197 -1.082677
- S 0 0.000000 1.511778 0.000000 10.826772 0.000000
- END
-
+ E 10.630315 1.007480 78.090000
+ E 8.535433 -1.007480 101.910000
+ E 10.735433 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.200000 0.000000
+ S 0 0.000000 0.200000 0.000000 1.005512 0.000000
+ S 0 0.000000 1.005512 0.000000 3.100787 0.000000
+ S 0 0.000000 3.100787 0.000000 10.535433 0.000000
+ S 0 0.000000 10.535433 0.000000 10.735433 0.000000
+ C 0 0.000000 -23.992517 3.371444 23.990990 171.791219 8.855142
+ C 0 0.000000 -69.642421 -4.936395 68.891154 167.249063 3.051358
+ S 0 0.000000 10.434620 0.966205 10.630315 1.007480
+ C 0 0.000000 23.995796 1.276216 -23.994269 359.353614 8.854398
+ C 0 0.000000 69.629099 -7.028307 -68.878167 9.698811 3.052102
+ S 0 0.000000 8.339738 -0.966205 8.535433 -1.007480
+END
SUBCONTENTS Peco HO Scale Code 75 Slip Turnouts
TURNOUT HO "Peco Single Slip, Insulfrog SL-180"
P "Normal" 1 2 0 3 4
@@ -157,9 +158,11 @@ TURNOUT HO "Peco Single Slip, Insulfrog SL-180"
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
-TURNOUT HO "Peco Double Slip, Electrofrog SL-E190"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Peco Double Slip, Electrofrog SL-E190" 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.803150 0.000000 90.000000
E 0.107110 1.019087 282.000000
@@ -176,22 +179,24 @@ TURNOUT HO "Peco Double Slip, Electrofrog SL-E190"
SUBCONTENTS Peco HO Scale Code 75 CatchPoints
TURNOUT HO "PECO RH CatchPoint SL-184"
+# tighten angle for diverging path
P "Closed" 1 2
P "Open" 1 3
E 0.000000 0.000000 270.000000
E 3.579921 0.000000 90.000000
S 0 0.000000 0.000000 0.000000 0.649000 0.000000
S 0 0.000000 0.649000 0.000000 3.579921 0.000000
- S 0 0.000000 0.649000 0.000000 2.500000 0.12500
+ S 0 0.000000 0.649000 0.000000 2.500000 0.073273
END
TURNOUT HO "PECO LH CatchPoint SL-185"
+# tighten angle for diverging path
P "Closed" 1 2
P "Open" 1 3
E 0.000000 0.000000 270.000000
E 3.579921 0.000000 90.00000
S 0 0.000000 0.000000 0.000000 0.649000 0.000000
S 0 0.000000 0.649000 0.000000 3.579921 0.000000
- S 0 0.000000 0.649000 0.000000 2.500000 -0.12500
+ S 0 0.000000 0.649000 0.000000 2.500000 -0.073273
END
SUBCONTENTS Peco HO Scale Code 75 Crossings
@@ -300,4 +305,4 @@ TURNOUT HO "Peco Code 75 Inspection Pit(Mid Section) LK-156B"
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 \ No newline at end of file
+END
diff --git a/app/lib/params/HO-Peco-Code83.xtp b/app/lib/params/HO-Peco-Code83.xtp
index 09bf426..01cdf9b 100644
--- a/app/lib/params/HO-Peco-Code83.xtp
+++ b/app/lib/params/HO-Peco-Code83.xtp
@@ -129,9 +129,11 @@ TURNOUT HO "Peco Code 83 #7 Curved Right Turnout SL-8376/SLE-8376"
END
SUBCONTENTS Peco Code 83 HO Slip Turnouts
-TURNOUT HO "Peco Code 83 #6 Double Slip Switch SL-U8363"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Peco Code 83 #6 Double Slip Switch SL-U8363" 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.035433 0.000000 90.000000
E 0.082528 0.993201 279.500000
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-Piko-A Roadbed.xtp b/app/lib/params/HO-Piko-A Roadbed.xtp
new file mode 100644
index 0000000..361d7b2
--- /dev/null
+++ b/app/lib/params/HO-Piko-A Roadbed.xtp
@@ -0,0 +1,302 @@
+CONTENTS Piko A Roadbed Track Components
+
+SUBCONTENTS Piko A Roadbed Track - Straight Track
+TURNOUT HO "Piko A Roadbed Track Straight G239 239.07mm 55400"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.412205 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.412205 0.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 9.412205 0.826772 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 9.412205 -0.826772 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Straight G231 230.93mm 55401"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.091732 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.091732 0.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 9.091732 0.826772 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 9.091732 -0.826772 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Straight G119 119.54mm 55402"
+ 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
+ L3 8421481 0.030000 0.000000 0.826772 0 4.685039 0.826772 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 4.685039 -0.826772 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Straight G115 115.46mm 55403"
+ 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 8421481 0.030000 0.000000 0.826772 0 4.527559 0.826772 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 4.527559 -0.826772 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Straight G107 107.32mm 55404"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.212598 0.000000 90.000000
+ S 0 0 0.000000 0.000000 4.212598 0.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 4.212598 0.826772 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 4.212598 -0.826772 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Straight G62 61.88mm 55405"
+ 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
+ L3 8421481 0.030000 0.000000 0.826772 0 2.440945 0.826772 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 2.440945 -0.826772 0
+ END$SEGS
+
+
+SUBCONTENTS Piko A Roadbed Track - Curve Track
+TURNOUT HO "Piko A Roadbed Track Curved R1 360mm 30d 55411"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 7.086614 -1.898853 120.000000
+ C 0 0 14.173228 0.000000 -14.173228 0.000000 30.000000
+ A3 8421481 0.030000 15.000000 0.000000 -14.173228 0 0.000000 30.000000
+ A3 8421481 0.030000 13.346457 0.000000 -14.173228 0 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Curved R1 360mm 7.5d 55451"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.849978 -0.121254 97.500000
+ C 0 0 14.173228 0.000000 -14.173228 0.000000 7.500000
+ A3 8421481 0.030000 15.000000 0.000000 -14.173228 0 0.000000 7.500000
+ A3 8421481 0.030000 13.346457 0.000000 -14.173228 0 0.000000 7.500000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Curved R2 421.88mm 30d 55412"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.304724 -2.225244 120.000000
+ C 0 0 16.609449 0.000000 -16.609449 0.000000 30.000000
+ A3 8421481 0.030000 17.436220 0.000000 -16.609449 0 0.000000 30.000000
+ A3 8421481 0.030000 15.782677 0.000000 -16.609449 0 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Curved R2 421.88mm 7.5d 55452"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.167968 -0.142096 97.500000
+ C 0 0 16.609449 0.000000 -16.609449 0.000000 7.500000
+ A3 8421481 0.030000 17.436220 0.000000 -16.609449 0 0.000000 7.500000
+ A3 8421481 0.030000 15.782677 0.000000 -16.609449 0 0.000000 7.500000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Curved R3 483.75mm 30d 55413"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.522638 -2.551583 120.000000
+ C 0 0 19.045276 0.000000 -19.045276 0.000000 30.000000
+ A3 8421481 0.030000 19.872047 0.000000 -19.045276 0 0.000000 30.000000
+ A3 8421481 0.030000 18.218504 0.000000 -19.045276 0 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Curved R4 545.63mm 30d 55414"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.748031 -2.879926 120.000000
+ C 0 0 21.496063 0.000000 -21.496063 0.000000 30.000000
+ A3 8421481 0.030000 22.308268 0.000000 -21.496063 0 0.000000 30.000000
+ A3 8421481 0.030000 20.654724 0.000000 -21.496063 0 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Curved R9 907.98mm 15d 55419"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.252068 -1.218058 105.000000
+ C 0 0 35.746850 0.000000 -35.747244 0.000000 15.000000
+ A3 8421481 0.030000 36.574016 0.000000 -35.747244 0 0.000000 15.000000
+ A3 8421481 0.030000 34.920472 0.000000 -35.747244 0 0.000000 15.000000
+ END$SEGS
+
+
+SUBCONTENTS Piko A Roadbed Track - Track Turnouts
+TURNOUT HO "Piko A Roadbed Track WL R9/239mm 15d 55420"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.412205 0.000000 90.000000
+ E 9.252068 1.218058 75.000000
+ S 0 0 0.000000 0.000000 9.412205 0.000000
+ C 0 0 35.747244 0.000000 35.747244 165.000000 15.000000
+ L3 8421481 0.030000 0.000000 -0.826772 0 9.412205 -0.826772 0
+ A3 8421481 0.030000 34.920472 0.000000 35.747244 0 165.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track WR R9/239mm 15d 55421"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.412205 0.000000 90.000000
+ E 9.252068 -1.218058 105.000000
+ S 0 0 0.000000 0.000000 9.412205 0.000000
+ C 0 0 35.747244 0.000000 -35.747244 0.000000 15.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 9.412205 0.826772 0
+ A3 8421481 0.030000 34.920472 0.000000 -35.747244 0 0.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track BWL R2 30d 55422"
+ P "Normal" 1 3
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 8.304724 2.225244 60.000000
+ E 10.745669 2.225244 60.000000
+ S 0 0 0.000000 0.000000 2.440945 0.000000
+ C 0 0 16.609449 0.000000 16.609449 150.000000 30.000000
+ C 0 0 -16.609449 2.440945 16.609449 150.000000 30.000000
+ L3 8421481 0.030000 0.000000 -0.826772 0 2.440945 -0.826772 0
+ A3 8421481 0.030000 17.436220 2.440945 16.609449 0 150.000000 30.000000
+ A3 8421481 0.030000 15.782677 0.000000 16.609449 0 150.000000 30.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track BWR R2 30d 55423"
+ P "Normal" 1 3
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 8.304724 -2.225244 120.000000
+ E 10.745669 -2.225244 120.000000
+ S 0 0 0.000000 0.000000 2.440945 0.000000
+ C 0 0 16.609449 0.000000 -16.609449 0.000000 30.000000
+ C 0 0 16.609449 2.440945 -16.609449 0.000000 30.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 2.440945 0.826772 0
+ A3 8421481 0.030000 17.436220 2.440945 -16.609449 0 0.000000 30.000000
+ A3 8421481 0.030000 15.782677 0.000000 -16.609449 0 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track DKW 239mm 15d 55424"
+ P "Normal" 1 0 2
+ P "Reverse" 3 0 4
+ E 0.000000 0.000000 270.000000
+ E 0.160357 -1.218029 255.000000
+ E 9.412205 0.000000 90.000000
+ E 9.251848 1.218029 75.000000
+ S 0 0 0.000000 0.000000 9.412205 0.000000
+ S 0 0 0.160357 -1.218029 9.251848 1.218029
+ C 0 0 35.747244 0.000000 35.747244 165.000000 15.000000
+ C 0 0 35.747244 9.412205 -35.747244 345.000000 15.000000
+ A3 8421481 0.030000 34.920472 0.000000 35.747244 0 165.000000 15.000000
+ A3 8421481 0.030000 34.920472 9.412205 -35.747244 0 345.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track W3 R9/239mm 15d 55425"
+ P "Normal" 1
+ P "Left" 2
+ P "Right" 3
+ E 0.000000 0.000000 270.000000
+ E 9.412205 0.000000 90.000000
+ E 9.252068 1.218058 75.000000
+ E 9.252068 -1.218058 105.000000
+ S 0 0 0.000000 0.000000 9.412205 0.000000
+ C 0 0 35.747244 0.000000 35.747244 165.000000 15.000000
+ C 0 0 35.747244 0.000000 -35.747244 0.000000 15.000000
+ A3 8421481 0.030000 34.920472 0.000000 35.747244 0 165.000000 15.000000
+ A3 8421481 0.030000 34.920472 0.000000 -35.747244 0 0.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track WY R9/239mm 15d 55426"
+ P "Left" 1
+ P "Right" 2
+ E 0.000000 0.000000 270.000000
+ E 9.252068 1.218058 75.000000
+ E 9.252068 -1.218058 105.000000
+ C 0 0 35.747244 0.000000 35.747244 165.000000 15.000000
+ C 0 0 35.747244 0.000000 -35.747244 0.000000 15.000000
+ A3 8421481 0.030000 34.920472 0.000000 35.747244 0 165.000000 15.000000
+ A3 8421481 0.030000 34.920472 0.000000 -35.747244 0 0.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track BWL-R3 R3 30d 55427"
+ P "Normal" 1 3
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.522638 2.551583 60.000000
+ E 11.963583 2.551583 60.000000
+ S 0 0 0.000000 0.000000 2.440945 0.000000
+ C 0 0 19.045276 0.000000 19.045276 150.000000 30.000000
+ C 0 0 -19.045276 2.440945 19.045276 150.000000 30.000000
+ L3 8421481 0.030000 0.000000 -0.826772 0 2.440945 -0.826772 0
+ A3 8421481 0.030000 19.872047 2.440945 19.045276 0 150.000000 30.000000
+ A3 8421481 0.030000 18.218504 0.000000 19.045276 0 150.000000 30.000000
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track BWR-R3 R3 30d 55428"
+ P "Normal" 1 3
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 9.522638 -2.551583 120.000000
+ E 11.963583 -2.551583 120.000000
+ S 0 0 0.000000 0.000000 2.440945 0.000000
+ C 0 0 19.045276 0.000000 -19.045276 0.000000 30.000000
+ C 0 0 19.045276 2.440945 -19.045276 0.000000 30.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 2.440945 0.826772 0
+ A3 8421481 0.030000 19.872047 2.440945 -19.045276 0 0.000000 30.000000
+ A3 8421481 0.030000 18.218504 0.000000 -19.045276 0 0.000000 30.000000
+ END$SEGS
+
+
+SUBCONTENTS Piko A Roadbed Track - Track Crossing
+TURNOUT HO "Piko A Roadbed Track K15 239.07mm 15d 55440"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 0.160357 -1.218029 255.000000
+ E 9.412205 0.000000 90.000000
+ E 9.251848 1.218029 75.000000
+ S 0 0 0.000000 0.000000 9.412205 0.000000
+ S 0 0 0.160239 -1.218029 9.251848 1.218029
+ L3 8421481 0.030000 0.000000 0.826772 0 4.597256 0.826772 0
+ L3 8421481 0.030000 4.597256 0.826772 0 9.037864 2.016629 0
+ L3 8421481 0.030000 0.374341 -2.016629 0 4.814949 -0.826772 0
+ L3 8421481 0.030000 4.814949 -0.826772 0 9.412205 -0.826772 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track K30 119.54mm 30d 55441"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 0.315262 -1.176575 240.000000
+ E 4.706299 0.000000 90.000000
+ E 4.391037 1.176575 60.000000
+ S 0 0 0.000000 0.000000 4.706299 0.000000
+ S 0 0 0.315262 -1.176575 4.391037 1.176575
+ L3 8421481 0.030000 0.000000 0.826772 0 2.131617 0.826772 0
+ L3 8421481 0.030000 2.131617 0.826772 0 3.977651 1.892580 0
+ L3 8421481 0.030000 0.728648 -1.892500 0 2.574682 -0.826772 0
+ L3 8421481 0.030000 2.574682 -0.826772 0 4.706299 -0.826772 0
+ END$SEGS
+
+
+SUBCONTENTS Piko A Roadbed Track - Misc. Straight Track
+TURNOUT HO "Piko A Roadbed Track Terminal G231 230.93mm 55406"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.091732 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.091732 0.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 9.091732 0.826772 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 9.091732 -0.826772 0
+ L3 8421481 0.500000 7.591732 0.826772 0 8.091732 0.826772 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Transition to Fleischmann Profi 230.93mm 55432"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.091732 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.091732 0.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 9.091732 0.639764 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 9.091732 -0.639764 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Transition to ROCO Geo 230.93mm 55433"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.091732 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.091732 0.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 9.091732 0.800000 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 9.091732 -0.800000 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Transition to Piko A 230.93mm 55434"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.091732 0.000000 90.000000
+ S 0 0 0.000000 0.000000 9.091732 0.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 9.091732 0.585534 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 9.091732 -0.585534 0
+ END$SEGS
+TURNOUT HO "Piko A Roadbed Track Bumper 61.88mm 55446"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ S 0 0 0.000000 0.000000 2.440945 0.000000
+ L3 8421481 0.030000 0.000000 0.826772 0 3.000000 0.826772 0
+ L3 8421481 0.030000 0.000000 -0.826772 0 3.000000 -0.826772 0
+ L3 8421481 0.030000 3.000000 0.826772 0 3.000000 -0.826772 0
+ L3 0 0.080000 1.000000 0.280000 0 2.000000 0.280000 0
+ L3 0 0.080000 1.000000 -0.280000 0 2.000000 -0.280000 0
+ L3 0 0.100000 1.440945 0.400000 0 1.440945 -0.400000 0
+ END$SEGS
diff --git a/app/lib/params/Piko-A.xtp b/app/lib/params/HO-Piko-A.xtp
index 8a33628..6487147 100644
--- a/app/lib/params/Piko-A.xtp
+++ b/app/lib/params/HO-Piko-A.xtp
@@ -2,97 +2,124 @@ CONTENTS Piko A Track Components
# Created By Arne Fuetterer Oct 2010
SUBCONTENTS Piko A Track - Straight Track
-TURNOUT HO "Piko A Track Straight G239 239mm 55200"
+TURNOUT HO "Piko A Track Straight G239 239.07mm 55200"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 9.412205 0.000000 90.000000
S 0 0 0.000000 0.000000 9.412205 0.000000
- END
-TURNOUT HO "Piko A Track Straight G231 231mm 55201"
+ END$SEGS
+TURNOUT HO "Piko A Track Straight G231 230.93mm 55201"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 9.091732 0.000000 90.000000
S 0 0 0.000000 0.000000 9.091732 0.000000
- END
-TURNOUT HO "Piko A Track Straight G119 119mm 55202"
+ END$SEGS
+TURNOUT HO "Piko A Track Straight G119 119.54mm 55202"
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 "Piko A Track Straight G115 115mm 55203"
+ END$SEGS
+TURNOUT HO "Piko A Track Straight G115 115.46mm 55203"
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 "Piko A Track Straight G107 107mm 55204"
+ END$SEGS
+TURNOUT HO "Piko A Track Straight G107 107.32mm 55204"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.212598 0.000000 90.000000
S 0 0 0.000000 0.000000 4.212598 0.000000
- END
-TURNOUT HO "Piko A Track Straight G62 62mm 55205"
+ END$SEGS
+TURNOUT HO "Piko A Track Straight G62 61.88mm 55205"
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
+ END$SEGS
+
+
+SUBCONTENTS Piko A Track - Misc. Straight Track
+TURNOUT HO "Piko A Track Adaptor Track GUE62-H 61.88mm 55207"
+ 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 HO "Piko A Track Adaptor Track GUE62-U 61.88mm 55208"
+ 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
SUBCONTENTS Piko A Track - Curve Track
-TURNOUT HO "Piko A Track Curved R1 360mm 30° 55211"
+TURNOUT HO "Piko A Track Curved R1 360mm 30d 55211"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.086614 -1.898853 120.000000
C 0 0 14.173228 0.000000 -14.173228 0.000000 30.000000
- END
-TURNOUT HO "Piko A Track Curved R2 422mm 30° 55212"
+ END$SEGS
+TURNOUT HO "Piko A Track Curved R1 360mm 7.5d 55251"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.849978 -0.121254 97.500000
+ C 0 0 14.173228 0.000000 -14.173228 0.000000 7.500000
+ END$SEGS
+TURNOUT HO "Piko A Track Curved R2 421.88mm 30d 55212"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 8.304724 -2.225244 120.000000
C 0 0 16.609449 0.000000 -16.609449 0.000000 30.000000
- END
-TURNOUT HO "Piko A Track Curved R3 484mm 30° 55213"
+ END$SEGS
+TURNOUT HO "Piko A Track Curved R2 421.88mm 7.5d 55252"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.167968 -0.142096 97.500000
+ C 0 0 16.609449 0.000000 -16.609449 0.000000 7.500000
+ END$SEGS
+TURNOUT HO "Piko A Track Curved R3 483.75mm 30d 55213"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 9.522638 -2.551583 120.000000
C 0 0 19.045276 0.000000 -19.045276 0.000000 30.000000
- END
-TURNOUT HO "Piko A Track Curved R4 546mm 30° 55214"
+ END$SEGS
+TURNOUT HO "Piko A Track Curved R4 545.63mm 30d 55214"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 10.748031 -2.879926 120.000000
C 0 0 21.496063 0.000000 -21.496063 0.000000 30.000000
- END
-TURNOUT HO "Piko A Track Curved R9 907.98mm 15° 55219"
+ END$SEGS
+TURNOUT HO "Piko A Track Curved R9 907.98mm 15d 55219"
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 9.251966 -1.218044 105.000000
- C 0 0 35.746850 0.000000 -35.746850 0.000000 15.000000
- END
+ E 9.252068 -1.218058 105.000000
+ C 0 0 35.746850 0.000000 -35.747244 0.000000 15.000000
+ END$SEGS
SUBCONTENTS Piko A Track - Track Turnouts
-TURNOUT HO "Piko A Track WL, 239mm, 15° 55220"
+TURNOUT HO "Piko A Track WL R9/239mm 15d 55220"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
E 9.412205 0.000000 90.000000
- E 9.251966 1.218044 75.000000
+ E 9.252068 1.218058 75.000000
S 0 0 0.000000 0.000000 9.412205 0.000000
- C 0 0 35.746850 0.000000 35.746850 165.000000 15.000000
- END
-TURNOUT HO "Piko A Track WR, 239mm, 15° 55221"
+ C 0 0 35.747244 0.000000 35.747244 165.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Track WR R9/239mm 15d 55221"
P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
E 9.412205 0.000000 90.000000
- E 9.251966 -1.218044 105.000000
+ E 9.252068 -1.218058 105.000000
S 0 0 0.000000 0.000000 9.412205 0.000000
- C 0 0 35.746850 0.000000 -35.746850 0.000000 15.000000
- END
-TURNOUT HO "Piko A Track BWL, R2, 30° 55222"
+ C 0 0 35.747244 0.000000 -35.747244 0.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Track BWL R2 30d 55222"
P "Normal" 1 3
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -101,8 +128,8 @@ TURNOUT HO "Piko A Track BWL, R2, 30° 55222"
S 0 0 0.000000 0.000000 2.440945 0.000000
C 0 0 16.609449 0.000000 16.609449 150.000000 30.000000
C 0 0 -16.609449 2.440945 16.609449 150.000000 30.000000
- END
-TURNOUT HO "Piko A Track BWR, R2, 30° 55223"
+ END$SEGS
+TURNOUT HO "Piko A Track BWR R2 30d 55223"
P "Normal" 1 3
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -111,41 +138,41 @@ TURNOUT HO "Piko A Track BWR, R2, 30° 55223"
S 0 0 0.000000 0.000000 2.440945 0.000000
C 0 0 16.609449 0.000000 -16.609449 0.000000 30.000000
C 0 0 16.609449 2.440945 -16.609449 0.000000 30.000000
- END
-TURNOUT HO "Piko A Track DKW, 239mm, 15° 55224"
+ END$SEGS
+TURNOUT HO "Piko A Track DKW 239mm 15d 55224"
P "Normal" 1 0 2
P "Reverse" 3 0 4
E 0.000000 0.000000 270.000000
- E 0.160239 -1.218044 255.000000
+ E 0.160357 -1.218029 255.000000
E 9.412205 0.000000 90.000000
- E 9.251966 1.218044 75.000000
+ E 9.251848 1.218029 75.000000
S 0 0 0.000000 0.000000 9.412205 0.000000
- S 0 0 0.160239 -1.218044 9.251966 1.218044
- C 0 0 35.746850 0.000000 35.746850 165.000000 15.000000
- C 0 0 35.746850 9.412205 -35.746850 -15.000000 15.000000
- END
-TURNOUT HO "Piko A Track W3, 239mm, 15° 55225"
+ S 0 0 0.160357 -1.218029 9.251848 1.218029
+ C 0 0 35.747244 0.000000 35.747244 165.000000 15.000000
+ C 0 0 35.747244 9.412205 -35.747244 345.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Track W3 R9/239mm 15d 55225"
P "Normal" 1
P "Left" 2
P "Right" 3
E 0.000000 0.000000 270.000000
E 9.412205 0.000000 90.000000
- E 9.251966 1.218044 75.000000
- E 9.251966 -1.218044 105.000000
+ E 9.252068 1.218058 75.000000
+ E 9.252068 -1.218058 105.000000
S 0 0 0.000000 0.000000 9.412205 0.000000
- C 0 0 35.746850 0.000000 35.746850 165.000000 15.000000
- C 0 0 35.746850 0.000000 -35.746850 0.000000 15.000000
- END
-TURNOUT HO "Piko A Track Y, 239mm, 15° 55226"
+ C 0 0 35.747244 0.000000 35.747244 165.000000 15.000000
+ C 0 0 35.747244 0.000000 -35.747244 0.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Track WY R9/239mm 15d 55226"
P "Left" 1
P "Right" 2
E 0.000000 0.000000 270.000000
- E 9.251966 1.218044 75.000000
- E 9.251966 -1.218044 105.000000
- C 0 0 35.746850 0.000000 35.746850 165.000000 15.000000
- C 0 0 35.746850 0.000000 -35.746850 0.000000 15.000000
- END
-TURNOUT HO "Piko A Track BWL-R3, R3, 30° 55227"
+ E 9.252068 1.218058 75.000000
+ E 9.252068 -1.218058 105.000000
+ C 0 0 35.747244 0.000000 35.747244 165.000000 15.000000
+ C 0 0 35.747244 0.000000 -35.747244 0.000000 15.000000
+ END$SEGS
+TURNOUT HO "Piko A Track BWL-R3 R3 30d 55227"
P "Normal" 1 3
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -154,8 +181,8 @@ TURNOUT HO "Piko A Track BWL-R3, R3, 30° 55227"
S 0 0 0.000000 0.000000 2.440945 0.000000
C 0 0 19.045276 0.000000 19.045276 150.000000 30.000000
C 0 0 -19.045276 2.440945 19.045276 150.000000 30.000000
- END
-TURNOUT HO "Piko A Track BWR-R3, R3, 30° 55228"
+ END$SEGS
+TURNOUT HO "Piko A Track BWR-R3 R3 30d 55228"
P "Normal" 1 3
P "Reverse" 2
E 0.000000 0.000000 270.000000
@@ -164,20 +191,20 @@ TURNOUT HO "Piko A Track BWR-R3, R3, 30° 55228"
S 0 0 0.000000 0.000000 2.440945 0.000000
C 0 0 19.045276 0.000000 -19.045276 0.000000 30.000000
C 0 0 19.045276 2.440945 -19.045276 0.000000 30.000000
- END
+ END$SEGS
SUBCONTENTS Piko A Track - Track Crossing
-TURNOUT HO "Piko A Track K15, 239mm, 15° 55240"
+TURNOUT HO "Piko A Track K15 239.07mm 15d 55240"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
- E 0.160239 -1.218044 255.000000
+ E 0.160357 -1.218029 255.000000
E 9.412205 0.000000 90.000000
- E 9.251966 1.218044 75.000000
+ E 9.251848 1.218029 75.000000
S 0 0 0.000000 0.000000 9.412205 0.000000
- S 0 0 0.160239 -1.218044 9.251966 1.218044
- END
-TURNOUT HO "Piko A Track K30, 119mm, 30° 55241"
+ S 0 0 0.160239 -1.218029 9.251848 1.218029
+ END$SEGS
+TURNOUT HO "Piko A Track K30 119.54mm 30d 55241"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 0.315262 -1.176575 240.000000
@@ -185,4 +212,4 @@ TURNOUT HO "Piko A Track K30, 119mm, 30° 55241"
E 4.391037 1.176575 60.000000
S 0 0 0.000000 0.000000 4.706299 0.000000
S 0 0 0.315262 -1.176575 4.391037 1.176575
- END
+ END$SEGS
diff --git a/app/lib/params/HO-Roco HO Code 83.xtp b/app/lib/params/HO-Roco HO Code 83.xtp
index a66e761..cd9d91d 100644
--- a/app/lib/params/HO-Roco HO Code 83.xtp
+++ b/app/lib/params/HO-Roco HO Code 83.xtp
@@ -1,469 +1,473 @@
-CONTENTS Roco HO Scale Code-83 Tracks
-#Original Designs by Peter Klapwijk, Dave Bullis and Mats Wikstrm
-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
- 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"
- 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 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"
- 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
- 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
- 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
-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-Slot-Car-AFX-Track.xtp b/app/lib/params/HO-Slot-Car-AFX-Track.xtp
index 7b72276..34103c7 100644
--- a/app/lib/params/HO-Slot-Car-AFX-Track.xtp
+++ b/app/lib/params/HO-Slot-Car-AFX-Track.xtp
@@ -346,7 +346,9 @@ TURNOUT HO "AFX Banked Curved R12 1/8 Circle 8991"
L 0 0.053333 6.363961 -4.886039 8.485281 -2.764719
END
TURNOUT HO "AFX HairPin Curved 8992"
- P "Normal" 1 -7 8 5 -10 -9 -4 0 2 -11 12 6 -14 -13 -3
+# Flip the subpaths so they have the minimum number of negatives
+# P "Normal" 1 -7 8 5 -10 -9 -4 0 2 -11 12 6 -14 -13 -3
+ P "Normal" 4 9 10 -5 -8 7 -1 0 3 13 14 -6 -12 11 -2
E 0.000000 0.000000 270.000000
E 0.000000 -1.500000 270.000000
E 0.000000 -3.000000 270.000000
diff --git a/app/lib/params/HO-Tillig Luna Tramway.xtp b/app/lib/params/HO-Tillig Luna Tramway.xtp
new file mode 100755
index 0000000..b4132c7
--- /dev/null
+++ b/app/lib/params/HO-Tillig Luna Tramway.xtp
@@ -0,0 +1,349 @@
+CONTENTS Tillig Luna Tramway Track
+SUBCONTENTS Tillig Luna Tramway Track - Curve Crossings
+TURNOUT HO "Tillig Luna Tramway Curve Crossing BK 250mm 25d 87653/87654"
+ P "Normal" 1 0 2
+ E 0.000000 0.587853 285.000000
+ E 0.000000 -0.587853 255.000000
+ E 3.779218 -1.379484 130.000000
+ E 3.779218 1.379484 50.000000
+ C 0 0.000000 9.842520 -2.547432 8.919291 140.000000 25.000000
+ C 0 0.000000 9.842520 -2.547432 -8.919291 15.000000 25.000000
+END
+TURNOUT HO "Tillig Luna Tramway Curve Crossing BKL 250mm 20d 87663/87664"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ E 0.000000 -0.924289 245.000000
+ E 2.802232 1.036351 45.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+ C 0 0.000000 9.842520 -4.157480 7.996063 135.000000 20.000000
+ END
+TURNOUT HO "Tillig Luna Tramway Curve Crossing BKR 250mm 20d 87668/87669"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ E 0.000000 0.924289 295.000000
+ E 2.802232 -1.036351 135.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+ C 0 0.000000 9.842520 -4.157480 -7.996063 25.000000 20.000000
+END
+TURNOUT HO "Tillig Luna Tramway Curve Crossing KG (SYM) 76mm 90d 87723/87724"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.992126 0.000000 90.000000
+ E 1.496063 1.496063 0.000000
+ E 1.496063 -1.496063 180.000000
+ S 0 0.000000 0.000000 0.000000 2.992126 0.000000
+ S 0 0.000000 1.496063 1.496063 1.496063 -1.496063
+END
+TURNOUT HO "Tillig Luna Tramway Curve Crossing KA (ASYM) 62mm 90d 87728/87729"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 2.440945 0.000000 90.000000
+ E 1.496063 0.944882 0.000000
+ E 1.496063 -1.496063 180.000000
+ S 0 0.000000 0.000000 0.000000 2.440945 0.000000
+ S 0 0.000000 1.496063 0.944882 1.496063 -1.496063
+END
+
+
+SUBCONTENTS Tillig Luna Tramway Track - Turnouts
+TURNOUT HO "Tillig Luna Tramway WL-250R 87583/87584"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ E 4.159629 0.922167 65.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+ C 0 0.000000 9.842520 0.000000 9.842520 155.000000 25.000000
+END
+TURNOUT HO "Tillig Luna Tramway WR-250R 87588/87589"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ E 4.159629 -0.922167 115.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+ C 0 0.000000 9.842520 0.000000 -9.842520 0.000000 25.000000
+END
+TURNOUT HO "Tillig Luna Tramway YWL 250R 15d / 204R 25d 87643/87644"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 3.394257 0.752489 65.000000
+ E 2.547432 -0.335376 105.000000
+ C 0 0.000000 8.031496 0.000000 8.031496 155.000000 25.000000
+ C 0 0.000000 9.842520 0.000000 -9.842520 0.000000 15.000000
+END
+TURNOUT HO "Tillig Luna Tramway YWR 250R 15d / 204R 25d 87648/87649"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 2.547432 0.335376 75.000000
+ E 3.394257 -0.752489 110.000000
+ C 0 0.000000 8.031496 0.000000 -8.031496 0.000000 25.000000
+ C 0 0.000000 9.842520 0.000000 9.842520 165.000000 15.000000
+END
+TURNOUT HO "Tillig Luna Tramway PWL-204R 87593/87594"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ E 4.159629 0.922167 60.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+ C 0 0.000000 8.031496 0.000000 8.031496 150.000000 30.000000
+END
+TURNOUT HO "Tillig Luna Tramway PWR-204R 87598/87599"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ E 4.159629 -0.922167 120.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+ C 0 0.000000 8.031496 0.000000 -8.031496 0.000000 30.000000
+END
+
+
+SUBCONTENTS Tillig Luna Tramway Track - 250mm Curve Track
+TURNOUT HO "Tillig Luna Tramway K1 250mm 90d 87756/87757"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 9.842520 -9.842520 180.000000
+ C 0 0.000000 9.842520 0.000000 -9.842520 0.000000 90.000000
+END
+TURNOUT HO "Tillig Luna Tramway B1 250mm 25d 87790"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.159629 -0.922167 115.000000
+ C 0 0.000000 9.842520 0.000000 -9.842520 0.000000 25.000000
+END
+TURNOUT HO "Tillig Luna Tramway B2 250mm 15d 87791"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.547432 -0.335376 105.000000
+ C 0 0.000000 9.842520 0.000000 -9.842520 0.000000 15.000000
+END
+TURNOUT HO "Tillig Luna Tramway B3 250mm 5d 87792"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.858649 -0.037454 95.000000
+ C 0 0.000000 9.842520 0.000000 -9.842520 0.000000 5.000000
+END
+TURNOUT HO "Tillig Luna Tramway B1e 250mm 25d 87796"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.159629 -0.922167 115.000000
+ C 0 0.000000 9.842520 0.000000 -9.842520 0.000000 25.000000
+END
+
+
+SUBCONTENTS Tillig Luna Tramway Track - 204mm Curve Track
+TURNOUT HO "Tillig Luna Tramway PK1 204mm 90d 87761/87762"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.031496 -8.031496 180.000000
+ C 0 0.000000 8.031496 0.000000 -8.031496 0.000000 90.000000
+END
+TURNOUT HO "Tillig Luna Tramway PB1 204mm 25d 87793"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.394257 -0.752489 115.000000
+ C 0 0.000000 8.031496 0.000000 -8.031496 0.000000 25.000000
+END
+TURNOUT HO "Tillig Luna Tramway PB2 204mm 15d 87794"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.078704 -0.273667 105.000000
+ C 0 0.000000 8.031496 0.000000 -8.031496 0.000000 15.000000
+END
+TURNOUT HO "Tillig Luna Tramway PB3 204mm 5d 87795"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.699991 -0.030562 95.000000
+ C 0 0.000000 8.031496 0.000000 -8.031496 0.000000 5.000000
+END
+TURNOUT HO "Tillig Luna Tramway PB1e 204mm 25d 87797"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.394257 -0.752489 115.000000
+ C 0 0.000000 8.031496 0.000000 -8.031496 0.000000 25.000000
+END
+
+SUBCONTENTS Tillig Luna Tramway Track - Straight Track
+TURNOUT HO "Tillig Luna Tramway A3 316.8mm 87501/87502"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 12.472441 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 12.472441 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway A2 211.2mm 87506/87507"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.314961 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 8.314961 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway A1 105.6mm 87511/87512"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway G1 105.6mm 87780"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway G2 95.3mm 87786"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.751969 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.751969 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway G3 66.2mm 87781"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.606299 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.606299 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway G4 46.9mm 87782"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.846457 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.846457 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway G5 30.5mm 87783"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.200787 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.200787 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway G6 10.9mm 87784"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.429134 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.429134 0.000000
+END
+TURNOUT HO "Tillig Luna Tramway G1e 105.6mm 87785"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.157480 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.157480 0.000000
+END
+
+
+SUBCONTENTS Tillig Luna Tramway Track - Track Assemblies
+TURNOUT HO "Tillig Luna Tramway Junction (Left) ALI 87611/87612"
+ P "Normal" 1 2
+ P "Route" 1 3 4 5
+ E 0.000000 0.000000 270.000000
+ E 16.637795 1.844488 90.000000
+ E 16.637795 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.159449 0.000000
+ S 0 0.000000 4.159449 0.000000 16.637795 0.000000
+ C 0 0.000000 -9.842520 4.159449 9.842520 155.000000 25.000000
+ C 0 0.000000 9.842520 12.478706 -7.998031 335.000000 25.000000
+ S 0 0.000000 12.478706 1.844488 16.637795 1.846457
+END
+TURNOUT HO "Tillig Luna Tramway Junction (Right) ARE 87616/87617"
+ P "Normal" 1 2
+ P "Route" 1 3 4 5
+ E 0.000000 0.000000 270.000000
+ E 16.637795 -1.844488 90.000000
+ E 16.637795 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.159449 0.000000
+ S 0 0.000000 4.159449 0.000000 16.637795 0.000000
+ C 0 0.000000 9.842520 4.159449 -9.842520 0.000000 25.000000
+ C 0 0.000000 -9.842520 12.478706 7.998031 180.000000 25.000000
+ S 0 0.000000 12.478706 -1.844488 16.637795 -1.846457
+END
+TURNOUT HO "Tillig Luna Tramway Depot 3-Stands 87631/87632"
+ P "Normal" 1 2 3
+ P "RLeft" 1 4 5 6
+ P "RRight" 1 2 7 8 9
+ E 0.000000 0.000000 270.000000
+ E 20.797244 1.844488 90.000000
+ E 20.797244 0.000000 90.000000
+ E 20.797244 -1.844488 90.000000
+ S 0 0.000000 0.000000 0.000000 4.159449 0.000000
+ S 0 0.000000 4.159449 0.000000 8.318898 0.000000
+ S 0 0.000000 8.318898 0.000000 20.797244 0.000000
+ C 0 0.000000 -9.842520 4.159449 9.842520 155.000000 25.000000
+ C 0 0.000000 9.842520 12.478706 -7.998031 335.000000 25.000000
+ S 0 0.000000 12.478706 1.844488 20.797244 1.846457
+ C 0 0.000000 9.842520 8.318898 -9.842520 0.000000 25.000000
+ C 0 0.000000 -9.842520 16.638155 7.998031 180.000000 25.000000
+ S 0 0.000000 16.638155 -1.844488 20.797244 -1.846457
+END
+TURNOUT HO "Tillig Luna Tramway Double-Track T-Crossing 87701" 256
+ P "3-5+4-6 Straight" 11 0 12
+ P "1-6+2-5 Right" 1 7 9 0 2 8 10
+# P "1-6+2-4+3-5" 1 7 9 0 2 4 6 0 11
+# P "1-3+2-5+4-6" 1 3 5 0 2 8 10 0 12
+ P "1-3+2-4 Left" 1 3 5 0 2 4 6
+# P "1" 1 3 5 0 2 4 6
+# P "2" 1 7 9 0 2 8 10
+# P "3" 11 0 12
+ E 0.000000 1.844488 270.000000
+ E 0.000000 0.000000 270.000000
+ E 12.157480 14.035433 0.000000
+ E 14.001969 14.001969 0.000000
+ E 12.157480 -12.157480 180.000000
+ E 14.001969 -12.157480 180.000000
+ S 0 0.000000 0.000000 1.844488 4.159449 1.844488
+ S 0 0.000000 0.000000 0.000000 4.159449 0.000000
+ C 0 0.000000 -7.998031 4.159449 9.875984 90.000000 90.000000
+ C 0 0.000000 -9.842520 4.159449 9.875984 90.000000 90.000000
+ S 0 0.000000 12.157480 9.842520 12.157480 14.001969
+ S 0 0.000000 14.001969 9.842520 14.001969 14.001969
+ C 0 0.000000 9.842520 4.159449 -7.998031 0.000000 90.000000
+ C 0 0.000000 7.998031 4.159449 -7.998031 0.000000 90.000000
+ S 0 0.000000 14.001969 -7.998031 14.001969 -12.157480
+ S 0 0.000000 12.157480 -7.998031 12.157480 -12.157480
+ S 0 0.000000 12.157480 14.001969 12.157480 -12.157480
+ S 0 0.000000 14.001969 14.001969 14.001969 -12.157480
+END
+TURNOUT HO "Tillig Luna Tramway Double-Track Curve Crossing 87656/87657" 256
+ P "1-5+2-6 Left" 1 5 0 2 6
+# P "1-5+2-3" 1 5 0 2 4
+# P "1-4+2-6" 1 3 0 2 6
+ P "1-4+2-3 Right" 1 3 0 2 4
+# P "1" 1 3 0 2 4
+# P "2" 1 5 0 2 6
+ E 0.000000 1.844488 270.000000
+ E 0.000000 0.000000 270.000000
+ E 9.321995 -1.879013 130.000000
+ E 10.486099 -0.458224 130.000000
+ E 9.321995 3.723501 50.000000
+ E 10.486099 2.302712 50.000000
+ S 0 0.000000 0.000000 1.844488 4.159449 1.844488
+ S 0 0.000000 0.000000 0.000000 4.159449 0.000000
+ C 0 0.000000 9.842520 4.159449 -8.031496 0.000000 40.000000
+ C 0 0.000000 8.031496 4.159449 -8.031496 0.000000 40.000000
+ C 0 0.000000 -8.031496 4.159449 9.875984 140.000000 40.000000
+ C 0 0.000000 -9.842520 4.159449 9.875984 140.000000 40.000000
+END
+
+
+SUBCONTENTS Tillig Luna Tramway Track - Straight Double Track Assy.
+TURNOUT HO "Tillig Luna Tramway Double Track Straight Z3 316.8mm 87516/87517"
+ P "Normal" 1 0 2
+ E 0.000000 0.923228 270.000000
+ E 12.472441 0.923228 90.000000
+ E 0.000000 -0.923228 270.000000
+ E 12.472441 -0.923228 90.000000
+ S 0 0.000000 0.000000 0.923228 12.472441 0.923228
+ S 0 0.000000 0.000000 -0.923228 12.472441 -0.923228
+END
+
+
+SUBCONTENTS Tillig Luna Tramway Track - Curve Double Track Assy.
+TURNOUT HO "Tillig Luna Tramway Double-Track Curve DK1 250/204mm 45d 87766/87767"
+ P "Normal" 1 0 2
+ E 0.000000 0.923228 270.000000
+ E 6.959712 -1.977295 135.000000
+ E 0.000000 -0.923228 270.000000
+ E 5.679125 -3.257883 135.000000
+ C 0 0.000000 9.877952 0.000000 -8.954724 0.000000 45.000000
+ C 0 0.000000 8.031496 0.000000 -8.954724 0.000000 45.000000
+END
diff --git a/app/lib/params/HO-TrixExpress Tracks.xtp b/app/lib/params/HO-TrixExpress Tracks.xtp
new file mode 100644
index 0000000..86c3a8d
--- /dev/null
+++ b/app/lib/params/HO-TrixExpress Tracks.xtp
@@ -0,0 +1,266 @@
+CONTENTS Trix Express H0 Scale
+SUBCONTENTS Trix Express Track - Straight Tracks
+TURNOUT HO "Trix Straight Track 183.5mm 04"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 7.224409 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 7.224409 0.000000
+ END$SEGS
+TURNOUT HO "Trix Straight Track 134.3mm 05"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 5.287402 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.287402 0.000000
+ END$SEGS
+TURNOUT HO "Trix Straight Track 95.5mm 06"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 3.759843 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.759843 0.000000
+ END$SEGS
+TURNOUT HO "Trix Straight Track 88.0mm 07"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 3.464567 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.464567 0.000000
+ END$SEGS
+TURNOUT HO "Trix Straight Track 49.2mm 08"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 1.937008 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.937008 0.000000
+ END$SEGS
+TURNOUT HO "Trix Straight Track 30.1mm 03"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 1.185039 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 1.185039 0.000000
+ END$SEGS
+
+SUBCONTENTS Trix Express Track - Curve Tracks
+TURNOUT HO "Trix Curve Track 30° R1=342.5mm 12"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 6.742126 -1.806547 120.000000
+ C 0 0.000000 13.484252 0.000000 -13.484252 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Trix Curve Track 24° 4/5 R1=342.5mm 14"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 5.484539 -1.165775 114.000000
+ C 0 0.000000 13.484252 0.000000 -13.484252 0.000000 24.000000
+ END$SEGS
+TURNOUT HO "Trix Curve Track 6° 1/5 R1=342.5mm 16"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 1.409488 -0.073868 96.000000
+ C 0 0.000000 13.484252 0.000000 -13.484252 0.000000 6.000000
+ END$SEGS
+TURNOUT HO "Trix Curve Track 30° R2=401.7mm 22"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 7.907480 -2.118803 120.000000
+ C 0 0.000000 15.814961 0.000000 -15.814961 0.000000 30.000000
+ END$SEGS
+TURNOUT HO "Trix Curve Track 24° 4/5 R2=401.7mm 24"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 6.432524 -1.367275 114.000000
+ C 0 0.000000 15.814961 0.000000 -15.814961 0.000000 24.000000
+ END$SEGS
+TURNOUT HO "Trix Curve Track 6° 1/5 R2=401.7mm 26"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 1.653114 -0.086636 96.000000
+ C 0 0.000000 15.814961 0.000000 -15.814961 0.000000 6.000000
+ END$SEGS
+
+SUBCONTENTS Trix Express Track - Isolation Tracks
+TURNOUT HO "Trix Straight Isolation Track 88.0mm 82"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 3.464567 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.464567 0.000000
+ END$SEGS
+TURNOUT HO "Trix Curve Isolation Track 24° 4/5 R1=342.5mm 84"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 5.484539 1.165775 114.000000
+ C 0 0.000000 13.484252 0.000000 -13.484252 0.000000 24.000000
+ END$SEGS
+TURNOUT HO "Trix Curve Isolation Track 24° 4/5 R2=401.7mm 86"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 6.432524 -1.367275 114.000000
+ C 0 0.000000 15.814961 0.000000 -15.814961 0.000000 24.000000
+ END$SEGS
+
+SUBCONTENTS Trix Express Track - Specialized Tracks
+TURNOUT HO "Trix Uncoupler Track 88.0mm 69"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 3.464567 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.464567 0.000000
+ F4 3100495 0.000000 4 0
+ 0.750000 0.400000 0
+ 0.750000 1.400000 0
+ 2.714567 1.400000 0
+ 2.714567 0.400000 0
+ L3 8424071 0.400000 0.750000 0.000000 0 2.714567 0.000000 0
+ END$SEGS
+TURNOUT HO "Trix Bumper/Buffer Track 88.0mm 91"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 3.464567 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 3.464567 0.000000
+ L3 10824234 0.100000 0.000000 0.250000 0 1.7322835 0.250000 0
+ L3 10824234 0.100000 0.000000 -0.250000 0 1.7322835 -0.250000 0
+ L3 10824234 0.100000 1.7322835 0.625000 0 1.7322835 -0.625000 0
+ END$SEGS
+TURNOUT HO "Trix Straight Powerfeed Track 183.5mm 90"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 7.224409 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 7.224409 0.000000
+ L3 16711680 0.030000 3.112205 0.000000 0 3.112205 0.625000 0
+ L3 16711680 0.030000 3.112205 0.625000 0 2.987205 0.875000 0
+ L3 16711680 0.030000 3.112205 0.625000 0 3.237205 0.875000 0
+ L3 32768 0.030000 4.112205 0.000000 0 4.112205 0.625000 0
+ L3 32768 0.030000 4.112205 0.625000 0 3.987205 0.875000 0
+ L3 32768 0.030000 4.112205 0.625000 0 4.237205 0.875000 0
+ END$SEGS
+TURNOUT HO "Trix Curve Powerfeed Track 30° R1=342.5mm 72"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 6.742126 -1.806547 120.000000
+ C 0 0.000000 13.484252 0.000000 -13.484252 0.000000 30.000000
+ A3 3100495 0.800000 14.271654 0.000000 -13.484252 0 20.00000 5.000000
+ END$SEGS
+
+SUBCONTENTS Trix Express Track - Turnouts
+TURNOUT HO "Trix Manual Turnout left 183.5mm R1=342mm 24° 52L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.224409 0.000000 90.000000
+ E 5.484646 1.165787 66.000000
+ S 0 0.000000 0.000000 0.000000 0.649647 0.000000
+ S 0 0.000000 0.649647 0.000000 7.224409 0.000000
+ C 0 0.000000 -10.428270 0.649647 10.428270 156.000000 24.000000
+ S 0 0.000000 4.891207 0.901571 5.484646 1.165787
+ F4 3100495 0.000000 6 0
+ 0.700000 -0.400000 0
+ 0.700000 -0.793701 0
+ 1.841732 -1.738583 0
+ 4.479528 -1.738583 0
+ 5.621260 -0.793701 0
+ 5.621260 -0.400000 0
+ END$SEGS
+TURNOUT HO "Trix Manual Turnout right 183.5mm R1=342mm 24° 52R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.224409 0.000000 90.000000
+ E 5.484646 -1.165787 114.000000
+ S 0 0.000000 0.000000 0.000000 0.649647 0.000000
+ S 0 0.000000 0.649647 0.000000 7.224409 0.000000
+ C 0 0.000000 10.428270 0.649647 -10.428270 0.000000 24.000000
+ S 0 0.000000 4.891207 -0.901571 5.484646 -1.165787
+ F4 3100495 0.000000 6 0
+ 0.700000 0.400000 0
+ 0.700000 0.793701 0
+ 1.841732 1.738583 0
+ 4.479528 1.738583 0
+ 5.621260 0.793701 0
+ 5.621260 0.400000 0
+ END$SEGS
+TURNOUT HO "Trix Remote Turnout left 183.5mm R1=342mm 24° 62L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.224409 0.000000 90.000000
+ E 5.484646 1.165787 66.000000
+ S 0 0.000000 0.000000 0.000000 0.649647 0.000000
+ S 0 0.000000 0.649647 0.000000 7.224409 0.000000
+ C 0 0.000000 -10.428270 0.649647 10.428270 156.000000 24.000000
+ S 0 0.000000 4.891207 0.901571 5.484646 1.165787
+ F4 3100495 0.000000 6 0
+ 0.700000 -0.400000 0
+ 0.700000 -0.793701 0
+ 1.841732 -1.738583 0
+ 4.479528 -1.738583 0
+ 5.621260 -0.793701 0
+ 5.621260 -0.400000 0
+ END$SEGS
+TURNOUT HO "Trix Remote Turnout right 183.5mm R1=342mm 24° 62R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 7.224409 0.000000 90.000000
+ E 5.484646 -1.165787 114.000000
+ S 0 0.000000 0.000000 0.000000 0.649647 0.000000
+ S 0 0.000000 0.649647 0.000000 7.224409 0.000000
+ C 0 0.000000 10.428270 0.649647 -10.428270 0.000000 24.000000
+ S 0 0.000000 4.891207 -0.901571 5.484646 -1.165787
+ F4 3100495 0.000000 6 0
+ 0.700000 0.400000 0
+ 0.700000 0.793701 0
+ 1.841732 1.738583 0
+ 4.479528 1.738583 0
+ 5.621260 0.793701 0
+ 5.621260 0.400000 0
+ END$SEGS
+TURNOUT HO "Trix Curved Turnout left R1 42° 43L"
+ P "Normal" 2 3
+ P "Reverse" 1
+ E 0.000000 0.000000 270.000000
+ E 11.353434 3.463500 48.000000
+ E 9.022726 3.463500 48.000000
+ C 0 0.000000 -13.484252 0.000000 13.484252 138.000000 42.000000
+ S 0 0.000000 0.000000 0.000000 2.330709 0.000000
+ C 0 0.000000 -13.484252 2.330709 13.484252 138.000000 42.000000
+ A3 3100495 0.800000 11.000000 0.649698 11.792002 0 155.00000 20.000000
+ END$SEGS
+TURNOUT HO "Trix Curved Turnout right R1 42° 43R"
+ P "Normal" 2 3
+ P "Reverse" 1
+ E 0.000000 0.000000 270.000000
+ E 11.353434 -3.463500 132.000000
+ E 9.022726 -3.463500 132.000000
+ C 0 0.000000 13.484252 0.000000 -13.484252 0.000000 42.000000
+ S 0 0.000000 0.000000 0.000000 2.330709 0.000000
+ C 0 0.000000 13.484252 2.330709 -13.484252 0.000000 42.000000
+ A3 3100495 0.800000 11.000000 0.649698 -11.792002 0 5.00000 20.000000
+ END$SEGS
+
+
+SUBCONTENTS Trix Express Track - Slips
+TURNOUT HO "Trix Double Slipswitch Turnout 30° 183.5mm 68" 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 7.224409 0.000000 90.000000
+ E 0.483940 1.806097 300.000000
+ E 6.740469 -1.806097 120.000000
+ S 0 0.000000 0.000000 0.000000 1.299247 0.000000
+ S 0 0.000000 1.299247 0.000000 5.925162 0.000000
+ S 0 0.000000 5.925162 0.000000 7.224409 0.000000
+ S 0 0.000000 0.483940 1.806097 1.609060 1.156501
+ S 0 0.000000 1.609060 1.156501 5.615349 -1.156501
+ S 0 0.000000 5.615349 -1.156501 6.740469 -1.806097
+ C 0 0.000000 8.632171 1.299213 -8.632171 0.000000 30.000000
+ C 0 0.000000 -8.632171 5.925172 8.632166 180.000000 30.000000
+ END$SEGS
+
+SUBCONTENTS Trix Express Track - Crossings
+TURNOUT HO "Trix 30° Crossing Track 183.5mm 04"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 7.224409 0.000000 90.000000
+ E 0.483940 1.806097 300.000000
+ E 6.740469 -1.806097 120.000000
+ S 0 0.000000 0.000000 0.000000 7.224409 0.000000
+ S 0 0.000000 0.483940 1.806097 6.740469 -1.806097
+ END$SEGS
diff --git a/app/lib/params/HO-WalthCornerstone 1.xtp b/app/lib/params/HO-Walthers Cornerstone 1.xtp
index b65af44..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"
-# 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"
-# 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.875000 0.000000
- S 0 0 -6.875000 0.000000 -6.2500000 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"
-# 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 Cornerstone Engineered Bridge System.xtp b/app/lib/params/HO-Walthers Cornerstone Engineered Bridge System.xtp
index 057cb3a..8327b09 100644
--- a/app/lib/params/HO-Walthers Cornerstone Engineered Bridge System.xtp
+++ b/app/lib/params/HO-Walthers Cornerstone Engineered Bridge System.xtp
@@ -136,7 +136,7 @@ END
SUBCONTENTS Walthers HO Cornerstone Engineered Bridge System - Truss Bridges
-TURNOUT HO "Walthers HO Cornerstone Engr Bridge System 109' Double-Track Truss Bridge (2-3/16" Tk Sp) 933-4510"
+TURNOUT HO "Walthers HO Cornerstone Engr Bridge System 109' Double-Track Truss Bridge (2-3/16"" Tk Sp) 933-4510"
P "Normal" 1 0 2
E 0.000000 1.093750 270.000000
E 15.017222 1.093750 90.000000
@@ -264,7 +264,7 @@ TURNOUT HO "Walthers HO Cornerstone Engr Bridge System 109' Single-Track Pratt D
L3 13528100 0.053333 0.000000 -0.500000 0 15.017222 -0.500000 0
L3 13528100 0.053333 0.000000 -0.593750 0 15.017222 -0.593750 0
END
-TURNOUT HO "Walthers HO Cornerstone Engr Bridge System 167' Double-Track Pratt Arched Truss Bridge (2-3/16" Tk Sp) 933-4522"
+TURNOUT HO "Walthers HO Cornerstone Engr Bridge System 167' Double-Track Pratt Arched Truss Bridge (2-3/16"" Tk Sp) 933-4522"
P "Normal" 1 0 2
E 0.000000 1.093750 270.000000
E 23.008037 1.093750 90.000000
@@ -413,7 +413,7 @@ END
SUBCONTENTS Walthers HO Cornerstone Engineered Bridge System - Swing Bridge
-TURNOUT HO "Walthers HO Cornerstone Engr Bridge System 200.5' Double-Track Truss Swing Bridge (2-1/16" Tk Sp) 933-3088"
+TURNOUT HO "Walthers HO Cornerstone Engr Bridge System 200.5' Double-Track Truss Swing Bridge (2-1/16"" Tk Sp) 933-3088"
P "Normal" 1 0 2
E 0.000000 1.031250 270.000000
E 27.625000 1.031250 90.000000
diff --git a/app/lib/params/HO-Walthers DCC Code 100.xtp b/app/lib/params/HO-Walthers DCC Code 100.xtp
new file mode 100644
index 0000000..0770c25
--- /dev/null
+++ b/app/lib/params/HO-Walthers DCC Code 100.xtp
@@ -0,0 +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"
+ 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
new file mode 100644
index 0000000..b6fb21e
--- /dev/null
+++ b/app/lib/params/HO-Walthers DCC Code 83.xtp
@@ -0,0 +1,267 @@
+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 651a2cf..1935bf6 100644
--- a/app/lib/params/HO-Weinert-Code75.xtp
+++ b/app/lib/params/HO-Weinert-Code75.xtp
@@ -1,168 +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"
- 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.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 261d73e..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"
- 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"
- 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,17 +304,19 @@ 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
E 0.394748 1.214910 306.000000
E 3.739110 -1.214910 126.000000
- S 0 0.000000 0.000000 0.000000 3.739110 0.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,10 +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"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 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
@@ -398,10 +353,12 @@ TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Left 6164"
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"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 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
@@ -414,10 +371,12 @@ TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Right 6165"
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"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 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
@@ -430,10 +389,12 @@ TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Left Elec 6166"
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"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 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
@@ -446,7 +407,9 @@ TURNOUT HO "Fleischmann-Profi DoubleSlip 18° Right Elec 6167"
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
@@ -457,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
@@ -469,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
@@ -480,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
@@ -492,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
@@ -505,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
@@ -519,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
@@ -532,7 +495,7 @@ TURNOUT HO "Fleischmann-Profi Curved Left Elec 6176"
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
@@ -546,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
@@ -557,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
@@ -569,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
@@ -580,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
@@ -592,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/Hornby Dublo 3 Rail with Turntable.xtp b/app/lib/params/Hornby Dublo 3 Rail with Turntable.xtp
index f0c88c6..8e22458 100644
--- a/app/lib/params/Hornby Dublo 3 Rail with Turntable.xtp
+++ b/app/lib/params/Hornby Dublo 3 Rail with Turntable.xtp
@@ -341,8 +341,16 @@ TURNOUT OO "Hornby Dublo TPO Apparatus 3475"
L3 0 0.000000 5.484373 2.037513 0 5.015373 2.037914 0
L3 0 0.052083 10.109370 0.718750 0 2.609370 0.718770 0
END
-TURNOUT OO "Hornby Dublo Turntable 32180"
- P "P0" 2 0 5 0 9 0 6 0 7 0 8 0 1 0 3 0 4
+TURNOUT OO "Hornby Dublo Turntable 32180" 512
+# fix paths
+#remove duplicate segment
+# P "P0" 2 0 5 0 9 0 6 0 7 0 8 0 1 0 3 0 4
+ P "P0" 1
+ P "P1" 3 7
+ P "P2" 6
+ P "P3" 2
+ P "P4" 5
+ P "P5" 4
E 0.000000 0.000000 270.000000
E 13.568310 -2.696000 112.500000
E 13.967835 -1.379104 101.25000
@@ -351,8 +359,8 @@ TURNOUT OO "Hornby Dublo Turntable 32180"
E 13.568414 2.695746 67.500000
S 0 0.000000 0.000000 0.000000 1.312000 0.000000
S 0 0.000000 12.792000 0.000000 14.104000 0.000000
- S 0 0.000000 0.000000 0.000000 1.312000 0.000000
- S 0 0.000000 12.792000 0.000000 14.104000 0.000000
+# S 0 0.000000 0.000000 0.000000 1.312000 0.000000
+# S 0 0.000000 12.792000 0.000000 14.104000 0.000000
S 0 0.000000 1.748044 2.194459 12.355973 -2.194417
S 0 0.000000 12.356058 2.194214 13.568414 2.695746
S 0 0.000000 12.687727 1.089118 13.975894 1.338057
diff --git a/app/lib/params/Lego - RC-FX Track.xtp b/app/lib/params/Lego - RC-FX Track.xtp
new file mode 100644
index 0000000..5491063
--- /dev/null
+++ b/app/lib/params/Lego - RC-FX Track.xtp
@@ -0,0 +1,66 @@
+CONTENTS Lego RC-FX Track Components
+SUBCONTENTS Lego RC-FX Track - Straight Track
+TURNOUT LEGO "Lego RC-FX Straight Track (S16/128mm) S16"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.039370 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+END
+
+
+SUBCONTENTS Lego RC-FX Track - Curve Track
+TURNOUT LEGO "Lego RC-FX Curve Track R40/320mm 22.5d R40"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.821209 -0.958998 112.500000
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 22.500000
+END
+
+
+SUBCONTENTS Lego RC-FX Track - Crossing Track
+TURNOUT LEGO "Lego RC-FX Crossing Track 90D S16/128mm C90"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 5.039370 0.000000 90.000000
+ E 2.519692 2.519685 0.000000
+ E 2.519678 -2.519685 180.000000
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+ S 0 0.000000 2.519692 2.519685 2.519678 -2.519685
+END
+
+
+SUBCONTENTS Lego Track - Turnouts
+TURNOUT LEGO "Lego RC-FX Lefthand Switch S32/R40 P32-LH"
+ P "P0" 1
+ P "P1" 2 3
+ E 0.000000 0.000000 270.000000
+ E 10.078740 0.000000 90.000000
+ E 10.296841 4.080679 67.500000
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+ C 0 0.000000 -12.598425 0.000000 12.598425 143.130102 36.869898
+ C 0 0.000000 12.617104 15.128424 -7.574668 323.151035 14.348965
+END
+TURNOUT LEGO "Lego RC-FX Righthand Switch S32/R40 P32-RH"
+ P "P0" 1
+ P "P1" 2 3
+ E 0.000000 0.000000 270.000000
+ E 10.078740 0.000000 90.000000
+ E 10.296841 -4.080679 112.500000
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+ C 0 0.000000 12.598425 0.000000 -12.598425 0.000000 36.869898
+ C 0 0.000000 -12.617104 15.128424 7.574668 202.500000 14.348965
+END
+TURNOUT LEGO "Lego RC-FX Double Crossover S48/384mm DCOS"
+ P "Normal" 1 0 6
+ P "Reverse" 2 3 0 4 5
+ E 0.000000 0.000000 270.000000
+ E 15.118110 0.000000 90.000000
+ E 0.000000 5.039370 270.000000
+ E 15.118110 5.039370 90.000000
+ S 0 0.000000 0.000000 0.000000 15.118110 0.000000
+ C 0 0.000000 -12.598425 0.000000 12.598425 143.130102 36.869898
+ C 0 0.000000 12.598425 15.118110 -7.559055 323.130102 36.869898
+ C 0 0.000000 12.598425 0.000000 -7.559055 0.000000 36.869898
+ C 0 0.000000 -12.598425 15.118110 12.598425 180.000000 36.869898
+ S 0 0.000000 0.000000 5.039370 15.118110 5.039370
+END
diff --git a/app/lib/params/Lego-Track.xtp b/app/lib/params/Lego-Track.xtp
deleted file mode 100644
index 784635a..0000000
--- a/app/lib/params/Lego-Track.xtp
+++ /dev/null
@@ -1,152 +0,0 @@
-CONTENTS Lego Track Components
-# Created By Dwyane Ward 01Jan2013
-
-SUBCONTENTS Lego - 9V Track
-TURNOUT LEGO "Lego Straight Track (9V) 2865/4515"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.039370 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.039370 0.000000
- END
-TURNOUT LEGO "Lego Curve Track (9V) 28674520"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.821209 0.958998 67.500000
- C 0 0.000000 -12.598425 0.000000 12.598425 157.500000 22.500000
- END
-TURNOUT LEGO "Lego Crossing Track (9V) 320874519"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.039370 0.000000 90.000000
- E 2.519692 2.519685 0.000000
- E 2.519678 -2.519685 180.000000
- S 0 0.000000 0.000000 0.000000 5.039370 0.000000
- S 0 0.000000 2.519692 2.519685 2.519678 -2.519685
- END
-TURNOUT LEGO "Lego Left Switch (9V) 2861/4531"
- P "P0" 1 5 4 3
- P "P1" 2
- E 0.000000 0.000000 270.000000
- E 10.078740 -0.000027 90.000000
- E 10.236648 4.068369 67.500000
- C 0 0.000000 -6.377953 0.000017 6.377953 166.446760 13.553240
- S 0 0.000000 0.000000 0.000000 10.078740 -0.000027
- C 0 0.000000 6.377953 12.677383 -1.824092 323.058181 14.441819
- C 0 0.000000 -15.666120 -0.571293 15.794471 143.057808 23.388952
- S 0 0.000000 1.494665 0.177605 3.100081 0.564621
- END
-TURNOUT LEGO "Lego Right Switch (9V) 2859/4531"
- P "P0" 1 5 4 3
- P "P1" 2
- E 0.000000 0.000000 269.999924
- E 10.078723 0.000000 90.000000
- E -0.157881 4.068390 292.500000
- C 0 0.000000 6.377953 10.078740 6.377953 180.000000 13.553240
- S 0 0.000000 10.078740 0.000000 0.000000 0.000000
- C 0 0.000000 -6.377953 -2.598648 -1.824058 22.500000 14.441819
- C 0 0.000000 15.666120 10.650075 15.794470 193.553240 23.388952
- S 0 0.000000 8.584076 0.177609 6.978661 0.564629
- END
-
-SUBCONTENTS Lego - 12V Track
-TURNOUT LEGO "Lego Straight Track (12V) 3242"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.039370 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.039370 0.000000
- END
-TURNOUT LEGO "Lego Curve Track (12V) 3241"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.821209 0.958998 67.500000
- C 0 0.000000 -12.598425 0.000000 12.598425 157.500000 22.500000
- END
-TURNOUT LEGO "Lego Crossing Track (12V) 3232"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.039370 0.000000 90.000000
- E 2.519692 2.519685 360.000000
- E 2.519678 -2.519685 180.000000
- S 0 0.000000 0.000000 0.000000 5.039370 0.000000
- S 0 0.000000 2.519692 2.519685 2.519678 -2.519685
- END
-TURNOUT LEGO "Lego Left Switch (12V) 73697/7859"
- P "P0" 1
- P "P1" 2 3 4
- E 0.000000 0.000000 270.000000
- E 10.078740 2.519685 90.000000
- E 10.078740 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 10.078740 0.000000
- C 0 0.000000 -10.236220 0.000000 10.236220 156.774050 23.225950
- S 0 0.000000 4.036786 0.829585 6.042006 1.690111
- C 0 0.000000 10.236220 10.078740 -7.716535 336.774050 23.225950
- END
-TURNOUT LEGO "Lego Right Switch (12V) 73696/7859"
- P "P0" 1
- P "P1" 2 3 4
- E 0.000000 0.000000 270.000000
- E 0.000000 2.519685 270.000000
- E 10.078740 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 10.078740 0.000000
- C 0 0.000000 10.236220 10.078740 10.236220 180.000000 23.225950
- S 0 0.000000 6.042006 0.829585 4.036787 1.690111
- C 0 0.000000 -10.236220 0.000000 -7.716535 0.000000 23.225950
- END
-
-SUBCONTENTS Lego - RC Track
-TURNOUT LEGO "Lego Straight Track (RC) 53401"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 5.039370 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 5.039370 0.000000
- END
-TURNOUT LEGO "Lego Curve Track (RC) 53400"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 4.821209 0.958998 67.500000
- C 0 0.000000 -12.598425 0.000000 12.598425 157.500000 22.500000
- END
-TURNOUT LEGO "Lego Left Switch (RC) 53407"
- P "P0" 1 5 4 3
- P "P1" 2
- E 0.000000 0.000000 270.000000
- E 10.078740 -0.000027 90.000000
- E 10.236648 4.068369 67.500000
- C 0 0.000000 -6.377953 0.000017 6.377953 166.446760 13.553240
- S 0 0.000000 0.000000 0.000000 10.078740 -0.000027
- C 0 0.000000 6.377953 12.677383 -1.824092 323.058181 14.441819
- C 0 0.000000 -15.666120 -0.571293 15.794471 143.057808 23.388952
- S 0 0.000000 1.494665 0.177605 3.100081 0.564621
- END
-TURNOUT LEGO "Lego Right Switch (RC) 53404"
- P "P0" 1 5 4 3
- P "P1" 2
- E 0.000000 0.000000 269.999924
- E 10.078723 0.000000 90.000000
- E -0.157881 4.068390 292.500000
- C 0 0.000000 6.377953 10.078740 6.377953 180.000000 13.553240
- S 0 0.000000 10.078740 0.000000 0.000000 0.000000
- C 0 0.000000 -6.377953 -2.598648 -1.824058 22.500000 14.441819
- C 0 0.000000 15.666120 10.650075 15.794470 193.553240 23.388952
- S 0 0.000000 8.584076 0.177609 6.978661 0.564629
- END
-TURNOUT LEGO "Lego Double Crossover (RC) 60128"
- 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 15.118110 0.000000 90.000000
- E 0.000000 5.039370 270.000000
- E 15.118110 5.039370 90.000000
- S 0 0.000000 0.000000 0.000000 2.220991 0.000000
- S 0 0.000000 2.220991 0.000000 12.897119 0.000000
- S 0 0.000000 12.897119 0.000000 15.118110 0.000000
- S 0 0.000000 0.000000 5.039370 2.220991 5.039370
- S 0 0.000000 2.220991 5.039370 12.897119 5.039370
- S 0 0.000000 12.897119 5.039370 15.118110 5.039370
- C 0 0.000000 -6.425198 2.221000 6.425198 139.921630 40.078446
- S 0 0.000000 6.357761 1.508868 8.760349 3.530502
- C 0 0.000000 6.425198 12.897126 -1.385823 319.921630 40.078446
- C 0 0.000000 6.425198 2.220966 -1.385828 0.000076 40.078446
- S 0 0.000000 6.357761 3.530502 8.760349 1.508868
- C 0 0.000000 -6.425198 12.897126 6.425193 180.000076 40.078446
- END
diff --git a/app/lib/params/Lionel27.xtp b/app/lib/params/Lionel27.xtp
index e99988a..8d495c6 100644
--- a/app/lib/params/Lionel27.xtp
+++ b/app/lib/params/Lionel27.xtp
@@ -58,11 +58,12 @@ TURNOUT O "Lionel O-27 Original O-27 Curve "
C 0 0.000000 -12.500000 0.000017 12.500000 135.000076 45.000000
END
TURNOUT O "Lionel O-27 Original O-27 Half Curve "
-# U "Curved Section" "" "Lionel O-27" "Original O-27 Curve" "" 12.500000 45.000000 0.000000 0.000000 0
+# U "Curved Section" "" "Lionel O-27" "Original Half Curved" "" 12.500000 22.500000 0.000000 0.000000 0
+# Fix bad def'n
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 8.838829 3.661159 22.500000
- C 0 0.000000 -12.500000 0.000017 12.500000 135.000076 22.500000
+ E 4.783543 0.951506 67.500000
+ C 0 0.000000 -12.500000 0.000000 12.500000 157.500000 22.500000
END
TURNOUT O "Lionel O-27 Track 42 Dia Curved Track Section 30° 6-65049"
P "Normal" 1
diff --git a/app/lib/params/ME Models(Lego Track).xtp b/app/lib/params/ME Models(Lego Track).xtp
new file mode 100644
index 0000000..55c2ed7
--- /dev/null
+++ b/app/lib/params/ME Models(Lego Track).xtp
@@ -0,0 +1,49 @@
+CONTENTS ME Models(Lego) Track Components
+
+
+SUBCONTENTS ME Models(Lego) Track - Straight Track
+TURNOUT LEGO "ME Models(Lego) Straight Track (S8/64mm) S8"
+ 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
+END
+TURNOUT LEGO "ME Models(Lego) Straight Track (S16/128mm) S16"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.039370 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 5.039370 0.000000
+END
+TURNOUT LEGO "ME Models(Lego) Straight Track (S32/256mm) S32"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 10.078740 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 10.078740 0.000000
+END
+
+
+SUBCONTENTS ME Models(Lego) Track - Curve Track
+TURNOUT LEGO "Lego Curve Track R56/448mm 22.5d R56"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.749692 -1.342597 112.500000
+ C 0 0.000000 17.637795 0.000000 -17.637795 0.000000 22.500000
+END
+TURNOUT LEGO "ME Models(Lego) Curve Track R72/576mm 22.5d R72"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 8.678175 -1.726196 112.500000
+ C 0 0.000000 22.677165 0.000000 -22.677165 0.000000 22.500000
+END
+TURNOUT LEGO "ME Models(Lego) Curve Track R88/704mm 11.25d R88"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 5.407228 -0.532565 101.250000
+ C 0 0.000000 27.716535 0.000000 -27.716535 0.000000 11.250000
+END
+TURNOUT LEGO "ME Models(Lego) Curve Track R104/832mm 11.25d R104"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 6.390360 -0.629396 101.250000
+ C 0 0.000000 32.755906 0.000000 -32.755906 0.000000 11.250000
+END
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-atlasn80.xtp b/app/lib/params/N-Atlas Code 80 Track.xtp
index 695703a..6f2223a 100644
--- a/app/lib/params/N-atlasn80.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
-
-SUBCONTENTS Atlas N-Scale Track - Crossings
-TURNOUT N "Atlas 90 Degree Crossing 2569"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.881890 0.000000 90.000000
- E 2.440945 2.440945 0.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
-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 0.954721 1.653629 330.000000
- E 2.864177 -1.653629 150.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 45 Degree Crossing 2567"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.000000 0.000000 90.000000
- E 0.585784 1.414211 315.000000
- E 3.414216 -1.414211 135.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 30 Degree Crossing 2566"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 2.549213 0.000000 90.000000
- E 0.170764 0.637301 300.000000
- E 2.378449 -0.637301 120.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 20 Degree Crossing 2565"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 4.901575 0.000000 90.000000
- E 0.147799 0.838215 290.000000
- E 4.753776 -0.838215 110.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 15 Degree Crossover 2564"
- P "Normal" 1 0 2
- E 0.000000 0.000000 270.000000
- E 5.039370 0.000000 90.000000
- E 0.085855 0.652139 285.000000
- E 4.953515 -0.652139 105.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
-
-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 - Bridge
-# 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 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-AtlasRoco Code80 Track.xtp b/app/lib/params/N-AtlasRoco Code80 Track.xtp
new file mode 100755
index 0000000..bcbef1b
--- /dev/null
+++ b/app/lib/params/N-AtlasRoco Code80 Track.xtp
@@ -0,0 +1,88 @@
+CONTENTS Atlas/Roco N-Scale Track (Old Prodcution)
+SUBCONTENTS Atlas/Roco N-Scale Track - Crossings
+TURNOUT N "Atlas/Roco 90 Degree Crossing 2569A"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 1.299213 0.000000 90.000000
+ E 0.649607 0.649607 0.000000
+ E 0.649607 -0.649607 180.000000
+ S 0 0 0.000000 0.000000 1.299213 0.000000
+ S 0 0 0.649607 0.649607 0.649607 -0.649607
+END
+TURNOUT N "Atlas/Roco Straight for Crossing 2569B"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.792615 0.000000 90.000000
+ S 0 0 0.000000 0.000000 1.792615 0.000000
+END
+
+SUBCONTENTS Atlas/Roco N-Scale Track - Remote Switches
+TURNOUT N "Atlas Left Remote Std #4 Switch 2550"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.910000 0.000000 90.000000
+ E 4.910000 0.646414 75.000000
+ S 0 0 0.000000 0.000000 4.910000 0.000000
+ C 0 0 -19.000000 -0.001000 19.000000 165.000000 15.000000
+ END
+TURNOUT N "Atlas Right Remote Std #4 Switch 2551"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 4.910000 0.000000 90.000000
+ E 4.910000 -0.646414 105.000000
+ S 0 0 0.000000 0.000000 4.910000 0.000000
+ C 0 0 19.000000 -0.001000 -19.000000 0.000000 15.000000
+ END
+TURNOUT N "Atlas #6 Left Remote Switch 2558"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 6.137500 0.000000 90.000000
+ E 6.137500 0.656250 75.000000
+ S 0 0 0.000000 0.000000 6.137500 0.000000
+ C 0 0 -19.000000 -0.001000 19.000000 165.000000 15.000000
+ END
+TURNOUT N "Atlas #6 Right Remote Switch 2559"
+ P "Normal" 1
+ P "Reverse" 2
+ E 0.000000 0.000000 270.000000
+ E 6.137500 0.000000 90.000000
+ E 6.137500 -0.656250 105.000000
+ S 0 0 0.000000 0.000000 6.137500 0.000000
+ C 0 0 19.000000 -0.001000 -19.000000 0.000000 15.000000
+ END
+
+SUBCONTENTS Atlas/Roco N-Scale Track - WYE Switches
+TURNOUT N "Atlas/Roco Remote #4 3-Way WYE Switch 2563"
+ P "Normal" 1 2
+ P "Reverse" 1 3
+ P "Reverse" 1 -4
+ E 0.000000 0.000000 270.000000
+ E 6.100000 0.000000 90.000000
+ E 6.100000 0.646414 75.000000
+ E 6.100000 -0.646414 105.000000
+ S 0 0 0.000000 0.000000 1.190000 0.000000
+ S 0 0 1.190000 0.000000 6.100000 0.000000
+ C 0 0 -19.000000 1.190000 19.000000 165.000000 15.000000
+ C 0 0 -19.000000 1.190000 -19.000000 0.000000 15.000000
+END
+
+SUBCONTENTS Atlas/Roco N-Scale Track - Slip Switches
+TURNOUT N "Atlas/Roco #6 Double Slip 2562"
+ 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 7.340000 0.000000 90.000000
+ E 0.050620 0.607443 279.527283
+ E 7.289380 -0.607443 99.527283
+ S 0 0.000000 0.000000 0.000000 0.708764 0.000000
+ S 0 0.000000 0.708764 0.000000 6.631236 0.000000
+ S 0 0.000000 6.631236 0.000000 7.340000 0.000000
+ S 0 0.000000 0.050620 0.607443 0.749352 0.490164
+ S 0 0.000000 0.749352 0.490164 6.590648 -0.490164
+ S 0 0.000000 6.590648 -0.490164 7.289380 -0.607443
+ C 0 0.000000 35.535849 0.708623 -35.535849 0.000076 9.527435
+ C 0 0.000000 -35.535849 6.631282 35.535842 180.000076 9.527435
+END
diff --git a/app/lib/params/N-AtlasTrueTrack.xtp b/app/lib/params/N-AtlasTrueTrack.xtp
index 1ed0206..9f4d021 100644
--- a/app/lib/params/N-AtlasTrueTrack.xtp
+++ b/app/lib/params/N-AtlasTrueTrack.xtp
@@ -35,7 +35,7 @@ TURNOUT N "Atlas True-Track Straight 1"" 2405"
END
SUBCONTENTS Atlas True-Track N-Scale Curved Track
-TURNOUT N "Atlas True-Track Curve 11.00R 22.5� 2410"
+TURNOUT N "Atlas True-Track Curve 11.00R 22.5° 2410"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.209518 -0.837325 112.500000
@@ -43,7 +43,7 @@ TURNOUT N "Atlas True-Track Curve 11.00R 22.5� 2410"
A 11579568 0.053333 10.500000 0.000000 -11.000000 0.000000 22.500000
A 11579568 0.053333 11.500000 0.000000 -11.000000 0.000000 22.500000
END
-TURNOUT N "Atlas True-Track Curve 11.00R 11.25� 2411"
+TURNOUT N "Atlas True-Track Curve 11.00R 11.25° 2411"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.145994 -0.211362 101.250000
@@ -51,7 +51,7 @@ TURNOUT N "Atlas True-Track Curve 11.00R 11.25� 2411"
A 11579568 0.053333 10.500000 0.000000 -11.000000 0.000000 11.250000
A 11579568 0.053333 11.500000 0.000000 -11.000000 0.000000 11.250000
END
-TURNOUT N "Atlas True-Track Curve 12.50R 22.5� 2412"
+TURNOUT N "Atlas True-Track Curve 12.50R 22.5° 2412"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 4.783543 -0.951506 112.500000
@@ -59,7 +59,7 @@ TURNOUT N "Atlas True-Track Curve 12.50R 22.5� 2412"
A 11579568 0.053333 12.000000 0.000000 -12.500000 0.000000 22.500000
A 11579568 0.053333 13.000000 0.000000 -12.500000 0.000000 22.500000
END
-TURNOUT N "Atlas True-Track Curve 12.50R 11.25� 2413"
+TURNOUT N "Atlas True-Track Curve 12.50R 11.25° 2413"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 2.438629 -0.240184 101.250000
@@ -67,7 +67,7 @@ TURNOUT N "Atlas True-Track Curve 12.50R 11.25� 2413"
A 11579568 0.053333 12.000000 0.000000 -12.500000 0.000000 11.250000
A 11579568 0.053333 13.000000 0.000000 -12.500000 0.000000 11.250000
END
-TURNOUT N "Atlas True-Track Curve 14.00R 22.5� 2414"
+TURNOUT N "Atlas True-Track Curve 14.00R 22.5° 2414"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 5.357568 -1.065687 112.500000
@@ -75,7 +75,7 @@ TURNOUT N "Atlas True-Track Curve 14.00R 22.5� 2414"
A 11579568 0.053333 13.500000 0.000000 -14.000000 0.000000 22.500000
A 11579568 0.053333 14.500000 0.000000 -14.000000 0.000000 22.500000
END
-TURNOUT N "Atlas True-Track Curve 15.50R 22.5� 2416"
+TURNOUT N "Atlas True-Track Curve 15.50R 22.5° 2416"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 5.931593 -1.179867 112.500000
@@ -83,7 +83,7 @@ TURNOUT N "Atlas True-Track Curve 15.50R 22.5� 2416"
A 11579568 0.053333 15.000000 0.000000 -15.500000 0.000000 22.500000
A 11579568 0.053333 16.000000 0.000000 -15.500000 0.000000 22.500000
END
-TURNOUT N "Atlas True-Track Curve 17.00R 22.5� 2495"
+TURNOUT N "Atlas True-Track Curve 17.00R 22.5° 2495"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 6.505618 -1.294048 112.500000
@@ -93,7 +93,7 @@ TURNOUT N "Atlas True-Track Curve 17.00R 22.5� 2495"
END
SUBCONTENTS Atlas True-Track N-Scale Crossings
-TURNOUT N "Atlas True-Track 90� Crossing 2420"
+TURNOUT N "Atlas True-Track 90° Crossing 2420"
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 2.000000 0.000000 90.000000
diff --git a/app/lib/params/BachmannEZ-N.xtp b/app/lib/params/N-Bachmann EZ.xtp
index ae0c2f6..65c67e9 100644
--- a/app/lib/params/BachmannEZ-N.xtp
+++ b/app/lib/params/N-Bachmann EZ.xtp
@@ -1,6 +1,6 @@
CONTENTS Bachmann EZ Track N Scale
#
-SUBCONTENTS Bachmann EZ Track N-Scale Straight Track
+SUBCONTENTS Bachmann EZ Track - Straight Tracks
TURNOUT N "Bachmann EZ Track Straight 30" 44887"
P "Normal" 1
E 0.000000 0.000000 270.000000
@@ -9,6 +9,14 @@ TURNOUT N "Bachmann EZ Track Straight 30" 44887"
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
@@ -106,7 +114,7 @@ TURNOUT N "Bachmann EZ Track Straight 3/4 44899D"
L 11579568 0.053333 0.000000 -0.445774 0.750000 -0.445774
END
-SUBCONTENTS Bachmann EZ Track N-Scale Curved Track
+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
@@ -261,7 +269,7 @@ TURNOUT N "Bachmann EZ Track Elec.Auto-Reversing Curve 11.25R 30° 44849"
A 11579568 0.053333 11.695774 0.000000 -11.250000 0.000000 30.000000
END
-SUBCONTENTS Bachmann EZ Track N-Scale Bumper Track
+SUBCONTENTS Bachmann EZ Track - Bumper Track
TURNOUT N "Bachmann EZ Track Hayes Bumper 44891"
P "Normal" 1
E 0.000000 0.000000 270.000000
@@ -281,7 +289,7 @@ TURNOUT N "Bachmann EZ Track Hayes Bumper 44891"
L 0 0.053333 0.746667 -0.106440 0.746667 0.106893
END
-SUBCONTENTS Bachmann EZ Track N-Scale Turnouts
+SUBCONTENTS Bachmann EZ Track - Turnouts
TURNOUT N "Bachmann EZ Track Turnout Left 44861"
P "Normal" 1
P "Reverse" 2
@@ -462,7 +470,7 @@ TURNOUT N "Bachmann EZ Track #6 Right Crossover Turnout 44876"
END
-SUBCONTENTS Bachmann EZ Track N-Scale Crossings
+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
@@ -552,3 +560,74 @@ TURNOUT N "Bachmann EZ Track Crossing 30° 44840"
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-Bonus Generic Industrial Structures.xtp b/app/lib/params/N-Bonus Generic Industrial Structures.xtp
index 5289af6..d981e06 100644
--- a/app/lib/params/N-Bonus Generic Industrial Structures.xtp
+++ b/app/lib/params/N-Bonus Generic Industrial Structures.xtp
@@ -193,7 +193,7 @@ STRUCTURE N "Bonus Industrial G GIS07"
L 0 0.000000 7.500000 3.000000 7.500000 2.750000
END
STRUCTURE N "Bonus Industrial H GIS08"
- F 13066516 0.000000 9
+ F 13066516 0.000000 8
0.000000 0.000000
9.500000 0.000000
9.500000 5.600000
diff --git a/app/lib/params/N-BritishFinescaleFineTraxC40.xtp b/app/lib/params/N-BritishFinescaleFineTraxC40.xtp
index 5304685..6a42d37 100644
--- a/app/lib/params/N-BritishFinescaleFineTraxC40.xtp
+++ b/app/lib/params/N-BritishFinescaleFineTraxC40.xtp
@@ -304,9 +304,11 @@ TURNOUT N "British Finescale Code 40 FineTrax FineTrax OS8 Single Slipswitch 226
END
SUBCONTENTS British Finescale Code 40 FineTrax - Double Slip Switches
-TURNOUT N "British Finescale Code 40 FineTrax FineTrax DS6 Double Slipswicth 160.2mm 2MDS6"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT N "British Finescale Code 40 FineTrax FineTrax DS6 Double Slipswicth 160.2mm 2MDS6" 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 6.307087 0.000000 90.000000
E 0.044107 0.525586 279.594076
@@ -320,9 +322,11 @@ TURNOUT N "British Finescale Code 40 FineTrax FineTrax DS6 Double Slipswicth 160
C 0 0.000000 29.133317 0.708622 -29.133317 0.000076 9.594228
C 0 0.000000 -29.133317 5.598386 29.133310 180.000076 9.594228
END
-TURNOUT N "British Finescale Code 40 FineTrax FineTrax DS7 Double Slipswitch 179.6mm 2MDS7"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT N "British Finescale Code 40 FineTrax FineTrax DS7 Double Slipswitch 179.6mm 2MDS7" 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 7.070866 0.000000 90.000000
E 0.036261 0.505057 278.213218
@@ -336,9 +340,11 @@ TURNOUT N "British Finescale Code 40 FineTrax FineTrax DS7 Double Slipswitch 179
C 0 0.000000 39.371434 0.708626 -39.371434 0.000076 8.213370
C 0 0.000000 -39.371434 6.362135 39.371426 180.000076 8.213370
END
-TURNOUT N "British Finescale Code 40 FineTrax FineTrax DS8 Double Slipswitch 200.2mm 2MDS8"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT N "British Finescale Code 40 FineTrax FineTrax DS8 Double Slipswitch 200.2mm 2MDS8" 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 7.881890 0.000000 90.000000
E 0.030909 0.492613 277.180762
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 eaa1b59..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"
- 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 d615edd..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,8 +107,10 @@ 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
-TURNOUT N "Kato Unitram Right turnout 180mm 40-211"
+ 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
P "Reverse" 1 3 0 4 6
E 0.000000 0.492126 270.000000
@@ -128,8 +132,9 @@ TURNOUT N "Kato Unitram Right turnout 180mm 40-211"
# 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
-TURNOUT N "Kato Unitram Left Turnout 180mm 40-210"
+ 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
P "Reverse" 1 3 0 4 6
E 0.000000 0.492126 270.000000
@@ -151,4 +156,5 @@ TURNOUT N "Kato Unitram Left Turnout 180mm 40-210"
# 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/minitrix.xtp b/app/lib/params/N-MiniTrix Track (De).xtp
index 4959429..1c24b5f 100644
--- a/app/lib/params/minitrix.xtp
+++ b/app/lib/params/N-MiniTrix Track (De).xtp
@@ -1,4 +1,4 @@
-CONTENTS Minitrix N Scale
+CONTENTS Minitrix N-Scale
###########################################################################
#
# Design Armin Poschmann 08.01.1999 nach Vorgaben aus dem Minitrix Katalog
@@ -284,8 +284,10 @@ TURNOUT N "Minitrix Kreuzung-15 14973"
END
TURNOUT N "Minitrix DKW-30 14968"
U "Double Slipswitch" "" "Minitrix" "DKW-30" "14968" 4.102362 30.000000 4.102362
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 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 4.102362 0.000000 90.000000
E 0.274806 1.025591 300.000000
@@ -301,8 +303,10 @@ TURNOUT N "Minitrix DKW-30 14968"
END
TURNOUT N "Minitrix DKW-15 14960"
U "Double Slipswitch" "" "Minitrix" "DKW-15" "14960" 5.110236 15.000000 5.110236
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 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 5.110236 0.000000 90.000000
E 0.087064 0.661313 285.000000
diff --git a/app/lib/params/N-MiniTrix Track.xtp b/app/lib/params/N-MiniTrix Track.xtp
new file mode 100644
index 0000000..1846523
--- /dev/null
+++ b/app/lib/params/N-MiniTrix Track.xtp
@@ -0,0 +1,607 @@
+CONTENTS Minitrix N Scale
+SUBCONTENTS Minitrix - Straight Track
+TURNOUT N "Minitrix Straight Track 17.2mm 14903"
+ 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$SEGS
+TURNOUT N "Minitrix Straight Track 27.9mm 14908"
+ 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 Straight Track 33.6mm 14909"
+ 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 Straight Track 50.0mm 14907"
+ 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 Straight Track 54.2mm 14906"
+ 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 Straight Track 76.3mm 14905"
+ 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 Straight Track 104.2mm 14904"
+ 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 Straight Track 312.6mm 14902"
+ 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
+
+
+SUBCONTENTS Minitrix Track - Curves
+TURNOUT N "Minitrix Curves Track R1(194.6mm) 6d 14916"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R1(194.6mm) 24d 14914"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R1(194.6mm) 30d 14912"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R2(228.2mm) 6d 14926"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R2(228.2mm) 24d 14924"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R2(228.2mm) 30d 14922"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R3(329.0mm) 15d 14917"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R4(362.6mm) 15d 14927"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R5(492.6mm) 15d 14918"
+ 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$SEGS
+TURNOUT N "Minitrix Curves Track R6(526.2mm) 15d 14928"
+ 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$SEGS
+
+
+SUBCONTENTS Minitrix Track - Switches
+TURNOUT N "Minitrix Lefthand Switch R1 24d 14961"
+ 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$SEGS
+TURNOUT N "Minitrix Righthand Switch R1 24d 14963"
+ 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$SEGS
+TURNOUT N "Minitrix Lefthand Switch R4 15d 14936"
+ 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$SEGS
+TURNOUT N "Minitrix Righthand Switch R4 15d 14937"
+ 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$SEGS
+TURNOUT N "Minitrix Lefthand Curved Switch R1/R2 42d 14966"
+ 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$SEGS
+TURNOUT N "Minitrix Righthand Curved Switch R1/R2 42d 14967"
+ 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$SEGS
+TURNOUT N "Minitrix Lefthand Curved Switch R3/R4 30d 14970"
+ 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$SEGS
+TURNOUT N "Minitrix Righthand Curved Switch R3/R4 30d 14971"
+ 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$SEGS
+TURNOUT N "Minitrix Three-way Switch R4 15d 14940"
+ 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$SEGS
+
+
+SUBCONTENTS Minitrix Track - Crossings and Slips Switches
+TURNOUT N "Minitrix Crossing 30d 14958"
+ 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$SEGS
+TURNOUT N "Minitrix Crossing 15d 14973"
+ 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$SEGS
+TURNOUT N "Minitrix Double Slip Switch 30d 14968"
+ 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$SEGS
+TURNOUT N "Minitrix Double Slip Switch 15d 14960"
+ 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$SEGS
+
+
+SUBCONTENTS Minitrix Track - Misc
+TURNOUT N "Minitrix Connection Track R1(194.6mm) 30d 14972"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.830709 -1.026435 120.000000
+ C 0 0.000000 7.661417 0.000000 -7.661417 0.000000 30.000000
+ A3 11579568 0.300000 7.661417 0.000000 -7.661417 0 11.250000 7.500000
+ END$SEGS
+TURNOUT N "Minitrix Contact Track 50.0mm 14979"
+ 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
+ L3 11579568 0.300000 0.656168 0.000000 0 1.312336 0.000000 0
+ END$SEGS
+TURNOUT N "Minitrix Contact Track 50.0mm 14980"
+ 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
+ L3 11579568 0.300000 0.328084 0.000000 0 1.640420 0.000000 0
+ END$SEGS
+TURNOUT N "Minitrix Buffer Stop 50.0mm 14991"
+ 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
+ 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 Buffer Stop(oldtime) 50.0mm 14976"
+ P "Normal" 1
+ E 0.944882 0.000000 90.000000
+ S 0 0 0.000000 0.000000 0.944882 0.000000
+ F3 8404992 0.000000 4
+ -1.023622 0.433071 0
+ -0.019685 0.433071 0
+ -0.019685 -0.433071 0
+ -1.023622 -0.433071 0
+ L3 0 0.000000 -1.043307 0.433071 0 -0.019685 0.433071 0
+ L3 0 0.000000 -0.019685 0.433071 0 -0.019685 -0.433071 0
+ L3 0 0.000000 -0.019685 -0.433071 0 -1.043307 -0.433071 0
+ L3 0 0.000000 -1.043307 -0.433071 0 -1.043307 0.433071 0
+ L3 0 0.000000 -1.043307 0.374016 0 -0.078740 0.374016 0
+ L3 0 0.000000 -0.078740 0.374016 0 -0.078740 -0.374016 0
+ L3 0 0.000000 -0.078740 -0.374016 0 -1.043307 -0.374016 0
+ L3 0 0.000000 -1.043307 -0.374016 0 -1.043307 0.374016 0
+ F3 6566400 0.000000 4
+ -1.003937 0.334646 0
+ -0.078740 0.334646 0
+ -0.078740 -0.334646 0
+ -1.003937 -0.334646 0
+ L3 4596480 0.000000 -1.003937 0.413386 0 -1.003937 0.334646 0
+ L3 4596480 0.000000 -0.964567 0.413386 0 -0.964567 0.354331 0
+ L3 4596480 0.000000 -0.905512 0.433071 0 -0.905512 0.354331 0
+ L3 4596480 0.000000 -0.846457 0.413386 0 -0.846457 0.334646 0
+ L3 4596480 0.000000 -0.787402 0.433071 0 -0.787402 0.354331 0
+ L3 4596480 0.000000 -0.748031 0.413386 0 -0.748031 0.334646 0
+ L3 4596480 0.000000 -0.669291 0.413386 0 -0.669291 0.334646 0
+ L3 4596480 0.000000 -0.610236 0.433071 0 -0.610236 0.354331 0
+ L3 4596480 0.000000 -0.551181 0.433071 0 -0.551181 0.374016 0
+ L3 4596480 0.000000 -0.492126 0.413386 0 -0.492126 0.334646 0
+ L3 4596480 0.000000 -0.433071 0.413386 0 -0.433071 0.354331 0
+ L3 4596480 0.000000 -0.393701 0.413386 0 -0.393701 0.334646 0
+ L3 4596480 0.000000 -0.354331 0.413386 0 -0.354331 0.334646 0
+ L3 4596480 0.000000 -0.295276 0.413386 0 -0.295276 0.354331 0
+ L3 4596480 0.000000 -0.255906 0.433071 0 -0.255906 0.354331 0
+ L3 4596480 0.000000 -0.196850 0.433071 0 -0.196850 0.334646 0
+ L3 4596480 0.000000 -0.157480 0.413386 0 -0.157480 0.334646 0
+ L3 4596480 0.000000 -0.098425 0.433071 0 -0.098425 0.334646 0
+ L3 4596480 0.000000 -0.098425 0.374016 0 -0.019685 0.374016 0
+ L3 4596480 0.000000 -0.098425 0.334646 0 -0.019685 0.334646 0
+ L3 4596480 0.000000 -0.098425 0.255906 0 -0.019685 0.255906 0
+ L3 4596480 0.000000 -0.098425 0.177165 0 -0.019685 0.177165 0
+ L3 4596480 0.000000 -0.118110 0.118110 0 -0.019685 0.118110 0
+ L3 4596480 0.000000 -0.098425 0.039370 0 -0.019685 0.039370 0
+ L3 4596480 0.000000 -0.098425 -0.059055 0 -0.019685 -0.059055 0
+ L3 4596480 0.000000 -0.118110 -0.137795 0 -0.019685 -0.137795 0
+ L3 4596480 0.000000 -0.098425 -0.196850 0 -0.019685 -0.196850 0
+ L3 4596480 0.000000 -0.098425 -0.275591 0 -0.019685 -0.275591 0
+ L3 4596480 0.000000 -0.118110 -0.334646 0 -0.039370 -0.334646 0
+ L3 4596480 0.000000 -0.098425 -0.374016 0 -0.019685 -0.374016 0
+ L3 4596480 0.000000 -0.098425 -0.374016 0 -0.098425 -0.433071 0
+ L3 4596480 0.000000 -0.177165 -0.374016 0 -0.196850 -0.433071 0
+ L3 4596480 0.000000 -0.255906 -0.374016 0 -0.255906 -0.452756 0
+ L3 4596480 0.000000 -0.354331 -0.334646 0 -0.354331 -0.433071 0
+ L3 4596480 0.000000 -0.452756 -0.354331 0 -0.472441 -0.433071 0
+ L3 4596480 0.000000 -0.531496 -0.354331 0 -0.531496 -0.433071 0
+ L3 4596480 0.000000 -0.629921 -0.354331 0 -0.629921 -0.452756 0
+ L3 4596480 0.000000 -0.728346 -0.354331 0 -0.728346 -0.413386 0
+ L3 4596480 0.000000 -0.826772 -0.374016 0 -0.846457 -0.413386 0
+ L3 4596480 0.000000 -0.905512 -0.354331 0 -0.925197 -0.433071 0
+ L3 4596480 0.000000 -0.984252 -0.354331 0 -0.984252 -0.452756 0
+ L3 4596480 0.000000 -1.043307 -0.354331 0 -0.098425 -0.354331 0
+ L3 4596480 0.000000 -1.043307 0.334646 0 -0.098425 0.334646 0
+ L3 4596480 0.000000 -0.098425 0.334646 0 -0.098425 -0.334646 0
+ L3 4596480 0.000000 -1.023622 0.334646 0 -1.023622 -0.374016 0
+ L3 4596480 0.000000 -0.728346 0.295276 0 -0.964567 0.059055 0
+ L3 4596480 0.000000 -0.551181 0.255906 0 -0.984252 -0.196850 0
+ L3 4596480 0.000000 -0.334646 0.236220 0 -0.787402 -0.275591 0
+ L3 4596480 0.000000 -0.236220 0.078740 0 -0.334646 -0.137795 0
+ L3 4596480 0.000000 -0.354331 -0.137795 0 -0.531496 -0.177165 0
+ L3 4596480 0.000000 -0.157480 0.039370 0 -0.433071 -0.314961 0
+ L3 4596480 0.000000 -0.531496 -0.196850 0 -0.629921 -0.275591 0
+ L3 4596480 0.000000 -0.177165 0.295276 0 -0.334646 0.098425 0
+ L3 4596480 0.000000 -0.669291 0.255906 0 -0.807087 0.098425 0
+ L3 4596480 0.000000 -0.885827 0.295276 0 -1.003937 0.196850 0
+ L3 4596480 0.000000 -0.157480 -0.157480 0 -0.275591 -0.314961 0
+ L3 4596480 0.000000 -0.452756 0.216535 0 -0.767717 -0.019685 0
+ L3 4596480 0.000000 -0.767717 -0.019685 0 -0.846457 -0.275591 0
+ L3 4596480 0.000000 -0.590551 0.314961 0 -0.669291 0.236220 0
+ L3 4596480 0.000000 -0.433071 0.314961 0 -0.452756 0.255906 0
+ L3 4596480 0.000000 -0.295276 0.295276 0 -0.393701 0.216535 0
+ L3 4596480 0.000000 -0.984252 -0.295276 0 -0.866142 -0.157480 0
+ END$SEGS
+TURNOUT N "Minitrix Uncoupling Track 76.3mm 14969"
+ 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
+ F4 4539717 0.000000 4 0
+ 0.826772 0.177165 0
+ 2.283465 0.177167 0
+ 2.283464 -0.177163 0
+ 0.826771 -0.177165 0
+ F4 0 0.000000 4 0
+ 1.191732 0.137795 0
+ 2.077559 0.137795 0
+ 2.077559 0.000000 0
+ 1.191732 0.000000 0
+ F4 4539717 0.000000 4 0
+ 0.196850 -0.316806 0
+ 1.889764 -0.316804 0
+ 1.889762 -0.887670 0
+ 0.196849 -0.887672 0
+ F4 4539717 0.000000 4 0
+ 1.231102 -0.177165 0
+ 1.664173 -0.177165 0
+ 1.664173 -0.334646 0
+ 1.231102 -0.334646 0
+ F4 0 0.000000 4 0
+ 0.275591 -0.433071 0
+ 1.702756 -0.433069 0
+ 1.702755 -0.814959 0
+ 0.275590 -0.814961 0
+ Y4 15066597 0.020833 4 0
+ 1.231102 0.096580 0
+ 1.408268 0.096580 0
+ 1.408268 0.037525 0
+ 1.231102 0.037525 0
+ Y4 16777215 0.020833 4 0
+ 0.187795 -0.651452 0
+ 0.286220 -0.651452 0
+ 0.286220 -0.671137 0
+ 0.187795 -0.671137 0
+ Y4 32832 0.020833 4 0
+ 0.187795 -0.572712 0
+ 0.286220 -0.572712 0
+ 0.286220 -0.592397 0
+ 0.187795 -0.592397 0
+ Z 0 -0.039370 -0.601316 0.000000 0 10.000000 "+ve"
+ Z 0 -0.013648 -0.708661 0.000000 0 10.000000 "-ve"
+ Y4 0 0.020833 4 0
+ 1.246194 0.540416 0
+ 1.265879 0.540416 0
+ 1.265879 0.205770 0
+ 1.246194 0.205770 0
+ Z 12632256 0.374016 -0.708661 0.000000 0 18.000000 "Decoupler"
+ END$SEGS
+TURNOUT N "Minitrix Grade Crossing Track 104.2mm 14974"
+ P "Normal" 2
+ E 0.000000 0.000000 270.000000
+ E 4.102362 0.000000 90.000000
+ L3 11579568 1.322835 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.661418 0
+ 4.102362 0.661418 0
+ 2.801181 0.218750 0
+ 1.301181 0.218750 0
+ Y4 0 0.020000 6 0
+ 0.650591 0.000000 0
+ 1.301181 0.150000 0
+ 2.801181 0.150000 0
+ 3.451773 0.000000 0
+ 2.801181 -0.150000 0
+ 1.301181 -0.150000 0
+ Y4 0 0.020000 4 0
+ 0.000000 -0.661418 0
+ 4.102362 -0.661418 0
+ 2.801181 -0.218750 0
+ 1.301181 -0.218750 0
+ END$SEGS
+TURNOUT N "Minitrix Adjustable Track 86.5-120mm 14975"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.405512 0.000000 90.000000
+ X adjustable 3.405512 4.724409
+ S 0 0.000000 0.000000 0.000000 3.405512 0.000000
+ END$SEGS
+
+
+SUBCONTENTS Minitrix Track - Turntable
+TURNOUT N "Minitrix Turntable 24 Pos 15d 66570"
+ 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.598425 0.000000
+ E 0.672522 2.509886 15.000000
+ E 1.299213 2.250302 30.000000
+ E 1.837364 1.837364 45.000000
+ E 2.250302 1.299213 60.000000
+ E 2.509886 0.672522 75.000000
+ E 2.598425 0.000000 90.000000
+ E 2.509886 -0.672522 105.000000
+ E 2.250302 -1.299213 120.000000
+ E 1.837364 -1.837364 135.000000
+ E 1.299213 -2.250302 150.000000
+ E 0.672522 -2.509886 165.000000
+ E 0.000000 -2.598425 180.000000
+ E -0.672522 -2.509886 195.000000
+ E -1.299213 -2.250302 210.000000
+ E -1.837364 -1.837364 225.000000
+ E -2.250302 -1.299213 240.000000
+ E -2.509886 -0.672522 255.000000
+ E -2.598425 0.000000 270.000000
+ E -2.509886 0.672522 285.000000
+ E -2.250302 1.299213 300.000000
+ E -1.837364 1.837364 315.000000
+ E -1.299213 2.250302 330.000000
+ E -0.672522 2.509886 345.000000
+ S 16777215 0 0.000000 2.598425 0.000000 -2.598425
+ S 16777215 0 0.672522 2.509886 -0.672522 -2.509886
+ S 16777215 0 1.299213 2.250302 -1.299213 -2.250302
+ S 16777215 0 1.837364 1.837364 -1.837364 -1.837364
+ S 16777215 0 2.250302 1.299213 -2.250302 -1.299213
+ S 16777215 0 2.509886 0.672522 -2.509886 -0.672522
+ S 16777215 0 2.598425 0.000000 -2.598425 0.000000
+ S 16777215 0 2.509886 -0.672522 -2.509886 0.672522
+ S 16777215 0 2.250302 -1.299213 -2.250302 1.299213
+ S 16777215 0 1.837364 -1.837364 -1.837364 1.837364
+ S 16777215 0 1.299213 -2.250302 -1.299213 2.250302
+ S 16777215 0 0.672522 -2.509886 -0.672522 2.509886
+ A3 8424071 0.031250 2.598425 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 3.346457 0.000000 0.000000 0 0.000000 360.000000
+ A3 8424071 0.031250 0.649606 0.000000 0.000000 0 0.000000 360.000000
+ END$SEGS
+TURNOUT N "Minitrix Turntable Extension Track 19mm 66571"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.748032 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.748032 0.000000
+ END$SEGS
+TURNOUT N "Minitrix Transfer Table 7 Pos 66540"
+ 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
+ E 0.000000 0.000000 270.000000
+ E 8.661417 0.000000 90.000000
+ E 0.000000 1.322835 270.000000
+ E 8.661417 1.322835 90.000000
+ E 0.000000 2.645669 270.000000
+ E 8.661417 2.645669 90.000000
+ E 0.000000 3.968504 270.000000
+ E 8.661417 3.968504 90.000000
+ E 0.000000 5.291339 270.000000
+ E 8.661417 5.291339 90.000000
+ E 0.000000 6.614173 270.000000
+ E 8.661417 6.614173 90.000000
+ E 0.000000 7.937008 270.000000
+ E 8.661417 7.937008 90.000000
+ S 0 0 0.000000 0.000000 0.984287 0.000000
+ S 16777215 0 0.984287 0.000000 7.677159 0.000000
+ S 0 0 7.677159 0.000000 8.661417 0.000000
+ S 0 0 0.000000 1.322835 0.984287 1.322835
+ S 16777215 0 0.984287 1.322835 7.677159 1.322835
+ S 0 0 7.677159 1.322835 8.661417 1.322835
+ S 0 0 0.000000 2.645669 0.984287 2.645669
+ S 16777215 0 0.984287 2.645669 7.677159 2.645669
+ S 0 0 7.677159 2.645669 8.661417 2.645669
+ S 0 0 0.000000 3.968504 0.984287 3.968504
+ S 16777215 0 0.984287 3.968504 7.677159 3.968504
+ S 0 0 7.677159 3.968504 8.661417 3.968504
+ S 0 0 0.000000 5.291339 0.984287 5.291339
+ S 16777215 0 0.984287 5.291339 7.677159 5.291339
+ S 0 0 7.677159 5.291339 8.661417 5.291339
+ S 0 0 0.000000 6.614173 0.984287 6.614173
+ S 16777215 0 0.984287 6.614173 7.677159 6.614173
+ S 0 0 7.677159 6.614173 8.661417 6.614173
+ S 0 0 0.000000 7.937008 0.984287 7.937008
+ S 16777215 0 0.984287 7.937008 7.677159 7.937008
+ S 0 0 7.677159 7.937008 8.661417 7.937008
+ L3 0 0.030000 0.000000 -1.937008 0 0.000000 9.874016 0
+ L3 0 0.030000 0.000000 9.874016 0 8.661417 9.874016 0
+ L3 0 0.030000 8.661417 9.874016 0 8.661417 -1.937008 0
+ L3 0 0.030000 8.661417 -1.937008 0 0.000000 -1.937008 0
+ L3 0 0.030000 0.984287 -0.952768 0 0.984287 8.889838 0
+ L3 0 0.030000 0.984287 8.889838 0 3.405517 8.889838 0
+ L3 0 0.030000 3.405517 8.889838 0 3.405517 9.165348 0
+ L3 0 0.030000 3.405517 9.165348 0 5.255874 9.165506 0
+ L3 0 0.030000 5.255874 9.165506 0 5.255874 8.889838 0
+ L3 0 0.030000 5.255874 8.889838 0 7.677159 8.889838 0
+ L3 0 0.030000 7.677159 8.889838 0 7.677159 -0.952768 0
+ L3 0 0.030000 7.677159 -0.952768 0 5.255898 -0.952758 0
+ L3 0 0.030000 5.255898 -0.952758 0 5.255874 -1.228364 0
+ L3 0 0.030000 5.255874 -1.228364 0 3.405517 -1.228364 0
+ L3 0 0.030000 3.405517 -1.228364 0 3.405486 -0.952752 0
+ L3 0 0.030000 3.405486 -0.952752 0 0.984287 -0.952768 0
+ END$SEGS
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-N- 90ft-ROUNDHOUSE.xtp b/app/lib/params/N-N- 90ft-ROUNDHOUSE.xtp
index 9cfb8f7..bf65b6a 100644
--- a/app/lib/params/N-N- 90ft-ROUNDHOUSE.xtp
+++ b/app/lib/params/N-N- 90ft-ROUNDHOUSE.xtp
@@ -1,7 +1,30 @@
# Parameter file by Rick Uhlenkott
CONTENTS N NP 90ft ROUNDHOUSE rdu
-TURNOUT N "SCRATCH NP N 90' roundhouse - Lewiston, ID layout 1"
- P "P0" 1 13 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 14 0 15 0 16 0 17 0 18 0 19 0 20 0 21 0 22 0 23 0 24
+TURNOUT N "SCRATCH NP N 90' roundhouse - Lewiston, ID layout 1" 512
+# P "P0" 1 13 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 14 0 15 0 16 0 17 0 18 0 19 0 20 0 21 0 22 0 23 0 24
+ P "P0" 17
+ P "P1" 2
+ P "P2" 16
+ P "P3" 15
+ P "P4" 1 13
+ P "P5" 3
+ P "P6" 4
+ P "P7" 24
+ P "P8" 5
+ P "P9" 23
+ P "P10" 6
+ P "P11" 22
+ P "P12" 7
+ P "P13" 19
+ P "P14" 8
+ P "P15" 18
+ P "P16" 12 14
+ P "P17" 9
+ P "P18" 20
+ P "P19" 11
+ P "P20" 21
+ P "P21" 10
+
E 0.000000 0.000000 246.054764
E -0.259539 1.160894 252.054857
E 7.749404 2.709102 54.054762
diff --git a/app/lib/params/N-NTram Track.xtp b/app/lib/params/N-NTram Track.xtp
new file mode 100755
index 0000000..646803c
--- /dev/null
+++ b/app/lib/params/N-NTram Track.xtp
@@ -0,0 +1,258 @@
+CONTENTS N-Tram N Scale Tram Track System
+#http://www.n-tram-shop.de
+#mfg by Wolfgang Besenhart
+SUBCONTENTS N-Tram N Scale Tram Track System - Straights
+TURNOUT N "N-Tram Tram Track System Straight Track 2.8mm A3-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.110236 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.110236 0.000000
+ L 11579568 0.026666 -0.000000 -0.255906 0.110236 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 0.110236 0.255906
+ END
+TURNOUT N "N-Tram Tram Track System Straight Track 5mm A5-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 0.196850 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.196850 0.000000
+ L 11579568 0.026666 -0.000000 -0.255906 0.196850 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 0.196850 0.255906
+ END
+TURNOUT N "N-Tram Tram Track System Straight Track 60mm LB3-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.362205 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.362205 0.000000
+ L 11579568 0.026666 -0.000000 -0.255906 2.362205 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 2.362205 0.255906
+ END
+TURNOUT N "N-Tram Tram Track System Straight Track 65mm LW3-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.559055 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 2.559055 0.000000
+ L 11579568 0.026666 -0.000000 -0.255906 2.559055 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 2.559055 0.255906
+ END
+TURNOUT N "N-Tram Tram Track System Straight Track 109.7mm LB12-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.318898 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.318898 0.000000
+ L 11579568 0.026666 -0.000000 -0.255906 4.318898 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 4.318898 0.255906
+ END
+TURNOUT N "N-Tram Tram Track System Straight Track 112.5mm LW12-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.429134 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.429134 0.000000
+ L 11579568 0.026666 -0.000000 -0.255906 4.429134 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 4.429134 0.255906
+ END
+TURNOUT N "N-Tram Tram Track System Straight Track 125mm LX-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.921260 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 4.921260 0.000000
+ L 11579568 0.026666 -0.000000 -0.255906 4.921260 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 4.921260 0.255906
+ END
+
+SUBCONTENTS N-Tram N Scale Tram Track System - Curves
+TURNOUT N "N-Tram Tram Track System Curve Track R1 22.5d 114mm R1-N-22.5"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 1.717556 0.341643 67.500000
+ C 0 0.000000 4.488189 0.000000 4.488189 157.500000 22.500000
+ A 11579568 0.026666 4.744095 0.000000 4.488189 157.500000 22.500000
+ A 11579568 0.026666 4.232283 0.000000 4.488189 157.500000 22.500000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R1 45d 114mm R1-N-45"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.173629 1.314560 45.000000
+ C 0 0.000000 4.488189 0.000000 4.488189 135.000000 45.000000
+ A 11579568 0.026666 4.744095 0.000000 4.488189 135.000000 45.000000
+ A 11579568 0.026666 4.232283 0.000000 4.488189 135.000000 45.000000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R2 22.5d 139mm R2-N-22.5"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.094212 0.416565 67.500000
+ C 0 0.000000 5.472441 0.000000 5.472441 157.500000 22.500000
+ A 11579568 0.026666 5.728347 0.000000 5.472441 157.500000 22.500000
+ A 11579568 0.026666 5.216535 0.000000 5.472441 157.500000 22.500000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R2 45d 139mm R2-N-45"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.869600 1.602841 45.000000
+ C 0 0.000000 5.472441 0.000000 5.472441 135.000000 45.000000
+ A 11579568 0.026666 5.728347 0.000000 5.472441 135.000000 45.000000
+ A 11579568 0.026666 5.216535 0.000000 5.472441 135.000000 45.000000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R3 22.5d 164mm R3-N-22.5"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.470869 0.491486 67.500000
+ C 0 0.000000 6.456693 0.000000 6.456693 157.500000 22.500000
+ A 11579568 0.026666 6.712599 0.000000 6.456693 157.500000 22.500000
+ A 11579568 0.026666 6.200787 0.000000 6.456693 157.500000 22.500000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R3 45d 164mm R3-N-45"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.565571 1.891122 45.000000
+ C 0 0.000000 6.456693 0.000000 6.456693 135.000000 45.000000
+ A 11579568 0.026666 6.712599 0.000000 6.456693 135.000000 45.000000
+ A 11579568 0.026666 6.200787 0.000000 6.456693 135.000000 45.000000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R4 22.5d 189mm R4-N-22.5"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 2.847526 0.566408 67.500000
+ C 0 0.000000 7.440945 0.000000 7.440945 157.500000 22.500000
+ A 11579568 0.026666 7.696851 0.000000 7.440945 157.500000 22.500000
+ A 11579568 0.026666 7.185039 0.000000 7.440945 157.500000 22.500000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R5 22.5d 214mm R5-N-22.5"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 3.224183 0.641330 67.500000
+ C 0 0.000000 8.425197 0.000000 8.425197 157.500000 22.500000
+ A 11579568 0.026666 8.681103 0.000000 8.425197 157.500000 22.500000
+ A 11579568 0.026666 8.169291 0.000000 8.425197 157.500000 22.500000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R11 475mm R11-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.155862 0.467624 77.160000
+ C 0 0.000000 18.700787 0.000000 18.700787 167.160000 12.840000
+ A 11579568 0.026666 18.956693 0.000000 18.700787 167.160000 12.840000
+ A 11579568 0.026666 18.444881 0.000000 18.700787 167.160000 12.840000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R12 500mm R12-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.374591 0.492235 77.160000
+ C 0 0.000000 19.685039 0.000000 19.685039 167.160000 12.840000
+ A 11579568 0.026666 19.940945 0.000000 19.685039 167.160000 12.840000
+ A 11579568 0.026666 19.429133 0.000000 19.685039 167.160000 12.840000
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R13 525mm R13-N"
+ P "Normal" 1
+ E 0.000000 0.000000 270.000000
+ E 4.593321 0.516847 77.160000
+ C 0 0.000000 20.669291 0.000000 20.669291 167.160000 12.840000
+ A 11579568 0.026666 20.925197 0.000000 20.669291 167.160000 12.840000
+ A 11579568 0.026666 20.413385 0.000000 20.669291 167.160000 12.840000
+ END
+
+SUBCONTENTS N-Tram N Scale Tram Track System - Turnouts
+TURNOUT N "N-Tram Tram Track System Righthand R3 Turnout 65mm/R164mm W3R-N"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 2.559055 0.000000 90.000000
+ E 2.460630 -0.492126 112.500000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 2.559055 0.000000
+ C 0 0.000000 4.616309 0.354282 -4.616309 0.000000 22.500000
+ S 0 0.000000 2.120895 -0.351400 2.460630 -0.492126
+ L 11579568 0.026666 0.000000 -0.255906 0.354299 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 2.559055 0.255906
+ A 11579568 0.026666 4.360403 0.354282 -4.616309 0.000000 22.500000
+ L 11579568 0.026666 2.022961 -0.587824 2.362696 -0.728551
+ END
+TURNOUT N "N-Tram Tram Track System Lefthand R3 Turnout 65mm/R164mm W3L-N"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 2.559055 0.000000 90.000000
+ E 2.460630 0.492126 67.500000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ S 0 0.000000 0.354300 0.000000 2.559055 0.000000
+ C 0 0.000000 -4.616309 0.354306 4.616309 157.500000 22.500000
+ S 0 0.000000 2.120895 0.351400 2.460630 0.492126
+ L 11579568 0.026666 -0.000001 -0.255906 2.559054 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 0.354300 0.255906
+ A 11579568 0.026666 4.360403 0.354306 4.616309 157.500000 22.500000
+ L 11579568 0.026666 2.022962 0.587825 2.362697 0.728551
+ END
+TURNOUT N "N-Tram Tram Track System Lefthand R12 Turnout 112.5mm/R500mm W12L-N"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.429134 0.000000 90.000000
+ E 4.374016 0.492126 77.160000
+ S 0 0.000000 0.000000 0.000000 0.354745 0.000000
+ S 0 0.000000 0.354745 0.000000 4.429134 0.000000
+ C 0 0.000000 -16.531733 0.354767 16.531733 167.160000 12.840000
+ S 0 0.000000 4.028619 0.413394 4.374016 0.492126
+ L 11579568 0.026666 -0.000000 -0.255906 4.429133 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 0.354745 0.255906
+ A 11579568 0.026666 16.275827 0.354745 16.531733 167.160000 12.840000
+ L 11579568 0.026666 3.971745 0.662900 4.317142 0.741632
+ END
+TURNOUT N "N-Tram Tram Track System Righthand R12 Turnout 112.5mm/R500mm W12R-N"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.429134 0.000000 90.000000
+ E 4.374016 -0.492126 102.840000
+ S 0 0.000000 0.000000 0.000000 0.354745 0.000000
+ S 0 0.000000 0.354745 0.000000 4.429134 0.000000
+ C 0 0.000000 16.531733 0.354745 -16.531733 0.000000 12.840000
+ S 0 0.000000 4.028619 -0.413394 4.374016 -0.492126
+ L 11579568 0.026666 -0.000000 -0.255906 0.354744 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 4.429134 0.255906
+ A 11579568 0.026666 16.275827 0.354679 -16.531733 0.000000 12.840000
+ L 11579568 0.026666 3.971744 -0.662899 4.317141 -0.741631
+ END
+TURNOUT N "N-Tram Tram Track System Wye R3 Turnout R164mm WY-N"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 2.460630 0.246063 78.750000
+ E 2.460630 -0.246063 101.250000
+ S 0 0.000000 0.000000 0.000000 0.354300 0.000000
+ C 0 0.000000 -8.826193 0.354312 8.826193 168.750000 11.250000
+ S 0 0.000000 2.076226 0.169597 2.460630 0.246063
+ C 0 0.000000 8.826193 0.354265 -8.826193 0.000000 11.250000
+ S 0 0.000000 2.076226 -0.169597 2.460630 -0.246063
+ L 11579568 0.026666 -0.000001 -0.255906 0.354299 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 0.354300 0.255906
+ A 11579568 0.026666 8.570288 0.354312 8.826193 168.750000 11.250000
+ L 11579568 0.026666 2.026300 0.420585 2.410704 0.497051
+ A 11579568 0.026666 8.570288 0.354265 -8.826193 0.000000 11.250000
+ L 11579568 0.026666 2.026299 -0.420585 2.410702 -0.497051
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R3 R164mm BYL-N"
+ P "Normal" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 2.460630 0.246063 78.750000
+ S 0 0.000000 0.000000 0.000000 0.587659 0.000000
+ C 0 0.000000 -6.456693 0.587659 6.456693 168.750000 11.250000
+ S 0 0.000000 1.847297 0.124064 2.460630 0.246063
+ L 11579568 0.026666 0.000000 -0.255906 0.587659 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 0.587659 0.255906
+ A 11579568 0.026666 6.712599 0.587659 6.456693 168.750000 11.250000
+ A 11579568 0.026666 6.200787 0.587659 6.456693 168.750000 11.250000
+ L 11579568 0.026666 1.797373 0.375052 2.410705 0.497051
+ L 11579568 0.026666 1.897222 -0.126925 2.510555 0.004925
+ END
+TURNOUT N "N-Tram Tram Track System Curve Track R3 R164mm BYR-N"
+ P "Normal" 1 2 3
+ E 0.000000 0.000000 270.000000
+ E 2.460630 -0.246063 101.250000
+ S 0 0.000000 0.000000 0.000000 0.587659 0.000000
+ C 0 0.000000 6.456693 0.587659 -6.456693 0.000000 11.250000
+ S 0 0.000000 1.847297 -0.124064 2.460630 -0.246063
+ L 11579568 0.026666 0.000000 -0.255906 0.587659 -0.255906
+ L 11579568 0.026666 0.000000 0.255906 0.587659 0.255906
+ A 11579568 0.026666 6.712599 0.587659 -6.456693 0.000000 11.250000
+ A 11579568 0.026666 6.200787 0.587659 -6.456693 0.000000 11.250000
+ L 11579568 0.026666 1.797373 -0.375052 2.410705 -0.497051
+ L 11579568 0.026666 1.897222 0.126925 2.510555 0.004925
+ END
diff --git a/app/lib/params/N-PecoCode55Finescale.xtp b/app/lib/params/N-PecoCode55Finescale.xtp
index 8880114..b88fd10 100644
--- a/app/lib/params/N-PecoCode55Finescale.xtp
+++ b/app/lib/params/N-PecoCode55Finescale.xtp
@@ -1,147 +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"
- P "Normal" 1 2 3
- P "Reverse" 1 4 5 6
+ 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.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
+ 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 N "Peco-55 Curved Left SL-E387F"
- P "Normal" 1 2 3
- P "Reverse" 1 4 5 6
+ 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.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
+ 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 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
@@ -150,11 +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"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 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
@@ -165,12 +171,12 @@ TURNOUT N "Peco-55 Double Slip SL-390F"
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
@@ -178,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
@@ -187,10 +193,10 @@ 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"
+TURNOUT N "Peco Turn Table NB-55" 512
P "1" 1 2 3
P "2" 4 5 6
P "3" 7 8 9
@@ -230,12 +236,12 @@ TURNOUT N "Peco Turn Table NB-55"
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
@@ -264,7 +270,7 @@ TURNOUT N "Peco Turn Table NB-55"
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
@@ -287,7 +293,7 @@ TURNOUT N "Peco Turn Table NB-55"
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
@@ -302,9 +308,9 @@ TURNOUT N "Peco Turn Table NB-55"
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
@@ -347,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
@@ -374,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
@@ -391,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-PecoCode80Streamline.xtp b/app/lib/params/N-PecoCode80Streamline.xtp
index 73267e7..d1ff7d2 100644
--- a/app/lib/params/N-PecoCode80Streamline.xtp
+++ b/app/lib/params/N-PecoCode80Streamline.xtp
@@ -57,30 +57,34 @@ TURNOUT N "Peco-80 Wye SL-1741/397"
S 0 0.000000 2.178781 -0.063715 5.000000 -0.261000
END
TURNOUT N "Peco-80 Curved Right SL-1734/386"
- P "Normal" 1 2 3
- P "Reverse" 1 4 5 6
+ U "Cornu Curved Turnout" "" "Peco80" "Left" "L" "Right" "R" 6.048031 19.633000 1.046457 17.992594 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.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
+ 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
+ C 0 0.000000 35.984252 0.002864 -35.984333 9.496551 0.318449
+ C 0 0.000000 13.822784 0.627931 -13.829204 0.762392 10.700460
+ C 0 0.000000 20.780522 -0.994216 -20.598145 12.137226 7.119669
+ C 0 0.000000 17.992594 0.002626 -17.993035 18.996118 0.636882
END
TURNOUT N "Peco-80 Curved Left SL-1735/387"
- P "Normal" 1 2 3
- P "Reverse" 1 4 5 6
+ U "Cornu Curved Turnout" "" "Peco80" "Left" "L" "Right" "R" 6.048031 19.633000 1.046457 17.992594 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.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
+ 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
+ C 0 0.000000 -35.984252 0.002864 35.984333 170.185000 0.318449
+ C 0 0.000000 -13.822784 0.627931 13.829204 168.537148 10.700460
+ C 0 0.000000 -20.780522 -0.994216 20.598145 160.743105 7.119669
+ C 0 0.000000 -17.992594 0.002626 17.993035 160.367000 0.636882
END
SUBCONTENTS Peco Code 80 - Crossings
# Crossing Design by Dave Bullis - 3.582677 25.000000 3.582677
@@ -127,7 +131,7 @@ TURNOUT N "Peco Right Catchpoint SL-384"
S 0 0.000000 1.102304 -0.016349 2.875000 -0.093750
END
SUBCONTENTS Peco - Turntables
-TURNOUT N "Peco Turn Table NB-55"
+TURNOUT N "Peco Turn Table NB-55" 512
P "1" 1 2 3
P "2" 4 5 6
P "3" 7 8 9
diff --git a/app/lib/params/N-ScaleScene Structures.xtp b/app/lib/params/N-ScaleScene Structures.xtp
new file mode 100755
index 0000000..8fbfb62
--- /dev/null
+++ b/app/lib/params/N-ScaleScene Structures.xtp
@@ -0,0 +1,233 @@
+CONTENTS ScaleScenes N Scale Structures
+SUBCONTENTS ScaleScenes N Scale Structures - Dockscenes
+STRUCTURE N "ScaleScenes Canal Boat 133 x 15mm T108b"
+ L3 255 0.041667 0.670443 0.611385 0 4.981466 0.611385 0
+ L3 255 0.041667 0.670443 0.020834 0 4.981466 0.020834 0
+ L3 255 0.020833 4.981466 0.611385 0 4.981466 0.001148 0
+ A3 255 0.041667 0.286791 4.961780 0.324594 0 0.000000 172.109925
+ L3 255 0.020833 0.670443 0.611385 0 0.670443 0.020834 0
+ A3 255 0.041667 1.265827 0.844627 -0.644977 0 319.398747 33.590731
+ A3 255 0.041667 1.430707 0.918968 1.429789 0 190.003498 28.881108
+ L3 255 0.020833 0.355482 0.434219 0 0.355482 0.178314 0
+ L3 255 0.020833 0.572017 0.434219 0 0.572017 0.178314 0
+ L3 255 0.020833 0.572017 0.197999 0 0.335797 0.197999 0
+ L3 255 0.020833 0.335797 0.434219 0 0.599576 0.434219 0
+ L3 255 0.041667 0.552332 0.375164 0 0.552332 0.375164 0
+ L3 255 0.020833 4.981466 0.434219 0 4.587765 0.434219 0
+ L3 255 0.020833 4.981466 0.197999 0 4.587765 0.197999 0
+ L3 255 0.020833 4.587765 0.446030 0 4.587765 0.190125 0
+ L3 255 0.020833 0.670443 0.552330 0 4.961781 0.552330 0
+ L3 255 0.020833 0.670443 0.079889 0 4.981466 0.079889 0
+END
+STRUCTURE N "ScaleScenes Canal Boat - Front Half ONLY T108b"
+ L3 255 0.041667 0.670443 0.611385 0 2.814991 0.611385 0
+ L3 255 0.041667 0.670443 0.020834 0 2.814991 0.020834 0
+ L3 255 0.020833 0.670443 0.611385 0 0.670443 0.020834 0
+ A3 255 0.041667 1.265827 0.844627 -0.644977 0 319.398747 33.590731
+ A3 255 0.041667 1.430707 0.918968 1.429789 0 190.003498 28.881108
+ L3 255 0.020833 0.355482 0.434219 0 0.355482 0.178314 0
+ L3 255 0.020833 0.572017 0.434219 0 0.572017 0.178314 0
+ L3 255 0.020833 0.572017 0.197999 0 0.335797 0.197999 0
+ L3 255 0.020833 0.335797 0.434219 0 0.599576 0.434219 0
+ L3 255 0.041667 0.552332 0.375164 0 0.552332 0.375164 0
+ L3 255 0.020833 0.670443 0.552330 0 2.814991 0.552330 0
+ L3 255 0.020833 0.670443 0.079889 0 2.814991 0.079889 0
+END
+STRUCTURE N "ScaleScenes Canal Bridge T018b"
+ L3 255 0.052083 4.055118 3.569349 0 4.055118 0.026042 0
+ L3 255 0.010417 4.055118 3.569349 0 0.196847 3.569349 0
+ L3 255 0.010417 4.055118 0.026042 0 0.196852 0.026036 0
+ L3 255 0.041667 3.149606 2.640215 0 3.149606 0.931553 0
+ L3 255 0.010417 1.614170 3.569349 0 1.614171 2.978794 0
+ L3 255 0.010417 7.814961 5.400059 0 7.814961 5.400059 0
+ L3 255 0.041667 2.834646 2.978798 0 1.614173 2.978798 0
+ L3 255 0.041667 2.795276 0.616593 0 1.614173 0.616593 0
+ A3 255 0.041667 0.314961 2.846457 2.675648 0 354.999880 100.000000
+ A3 255 0.041667 0.314961 2.830709 0.931552 0 86.468858 100.000000
+ L3 255 0.010417 1.614174 0.616593 0 1.614175 0.026038 0
+ L3 255 0.031250 3.110236 1.187459 0 1.062992 1.187459 0
+ L3 255 0.031250 3.149606 2.073286 0 0.196849 2.073286 0
+ L3 255 0.020833 0.196847 2.978798 0 0.196852 0.577223 0
+ L3 255 0.010417 4.055118 2.092971 0 4.055118 2.092971 0
+ L3 255 0.010417 4.015748 2.092971 0 4.015748 2.092971 0
+ A3 255 0.031250 2.345873 1.249483 3.549495 0 179.530677 25.000000
+ L3 255 0.010417 3.523622 1.600845 0 3.523622 1.600845 0
+ L3 255 0.052083 0.393701 0.577223 0 0.196850 0.577223 0
+ L3 255 0.052083 1.299213 0.026042 0 4.082677 0.026042 0
+ A3 255 0.052083 2.337761 -0.246435 5.250569 0 135.985084 32.592666
+ L3 255 0.052083 1.338583 3.569349 0 4.082677 3.569349 0
+ L3 255 0.010417 2.952756 2.506357 0 4.251969 2.506357 0
+ L3 255 0.010417 0.000000 1.187459 0 4.251969 1.187459 0
+ L3 255 0.010417 0.000000 2.073286 0 4.251969 2.073286 0
+ L3 255 0.052083 0.374016 0.596908 0 1.299213 0.045727 0
+ L3 255 0.031250 0.275591 1.423679 0 0.196850 1.423679 0
+ Z 255 1.594488 0.813443 0.000000 0 18.000000 "No Tow Path"
+ Z 255 2.657480 2.112656 0.000000 0 18.000000 "Tow Path"
+END
+STRUCTURE N "ScaleScenes Canal Bridge (Inverted) T018d(i)"
+ L3 255 0.052083 4.055118 3.569349 0 4.055118 0.026042 0
+ L3 255 0.010417 4.055118 3.569349 0 0.196847 3.569349 0
+ L3 255 0.010417 4.055118 0.026042 0 0.196852 0.026036 0
+ L3 255 0.041667 3.149606 2.640215 0 3.149606 0.931553 0
+ L3 255 0.010417 1.614170 3.569349 0 1.614171 2.978794 0
+ L3 255 0.041667 2.834646 2.978798 0 1.614173 2.978798 0
+ L3 255 0.041667 2.795276 0.616593 0 1.614173 0.616593 0
+ A3 255 0.041667 0.314961 2.846457 2.675648 0 354.999880 100.000000
+ A3 255 0.041667 0.314961 2.830709 0.931552 0 86.468858 100.000000
+ L3 255 0.010417 1.614174 0.616593 0 1.614175 0.026038 0
+ L3 255 0.031250 3.149607 1.620530 0 0.196851 1.620530 0
+ L3 255 0.031250 3.149606 2.506357 0 0.196849 2.506357 0
+ L3 255 0.020833 0.196847 2.978798 0 0.196852 0.577223 0
+ L3 255 0.010417 4.055118 2.526042 0 4.055118 2.526042 0
+ L3 255 0.010417 4.015748 2.526042 0 4.015748 2.526042 0
+ L3 255 0.010417 3.523622 1.600845 0 3.523622 1.600845 0
+ L3 255 0.052083 0.393701 0.577223 0 0.196850 0.577223 0
+ L3 255 0.052083 1.299213 0.026042 0 4.082677 0.026042 0
+ A3 255 0.052083 2.337761 -0.246435 5.250569 0 135.985084 32.592666
+ L3 255 0.052083 1.338583 3.569349 0 4.082677 3.569349 0
+ L3 255 0.010417 3.149607 1.167774 0 4.251969 1.167774 0
+ L3 255 0.010417 0.039370 1.620530 0 4.251969 1.620530 0
+ L3 255 0.010417 0.000000 2.506357 0 4.251969 2.506357 0
+ L3 255 0.052083 0.374016 0.596908 0 1.299213 0.045727 0
+ Z 255 1.594488 1.207144 0.000000 0 18.000000 "Tow Path"
+ Z 255 1.574804 2.506356 0.000000 0 18.000000 "No Tow Path"
+END
+STRUCTURE N "ScaleScenes Canal Lock T018"
+ L3 255 0.031250 2.402149 1.122833 0 7.646243 1.122833 0
+ L3 255 0.031250 2.402149 1.831487 0 8.630495 1.831487 0
+ L3 255 0.031250 2.488763 2.067708 0 8.630495 2.067708 0
+ L3 255 0.031250 1.748606 0.020464 0 8.630495 0.020464 0
+ A3 255 0.031250 0.787402 1.721046 1.969282 0 263.500000 180.000000
+ L3 255 0.052083 1.620790 0.447118 0 2.195311 1.483576 0
+ L3 255 0.052083 1.610810 2.520464 0 2.173802 1.477157 0
+ L3 255 0.052083 7.646241 0.414164 0 7.646242 1.831487 0
+ L3 255 0.010417 0.008448 2.756684 0 8.453330 2.756684 0
+ L3 255 0.031250 0.008448 0.571645 0 1.012385 0.571645 0
+ L3 255 0.031250 7.646243 1.004716 0 8.630495 1.004716 0
+ L3 255 0.031250 2.429708 1.044086 0 1.839157 1.044086 0
+ L3 255 0.031250 2.410023 1.126763 0 2.410023 1.024401 0
+ L3 255 0.031250 2.410023 1.839361 0 2.410023 1.914164 0
+ L3 255 0.031250 2.410023 1.910227 0 0.008448 1.910227 0
+ L3 255 0.031250 1.819472 1.024401 0 1.819472 1.130700 0
+ L3 255 0.031250 1.819472 1.122826 0 0.008448 1.122826 0
+ L3 255 0.031250 1.445456 1.122826 0 1.445456 0.729125 0
+ L3 255 0.031250 1.642306 0.571645 0 2.410023 0.571645 0
+ A3 255 0.031250 0.216098 1.661991 0.807865 0 166.041611 84.518490
+ L3 255 0.010417 2.398212 0.575582 0 2.398212 0.028338 0
+ L3 255 0.020833 1.524196 1.142511 0 1.524196 1.142511 0
+ L3 255 0.010417 1.012385 1.122826 0 1.012385 0.571645 0
+ A3 255 0.031250 0.729248 1.724268 0.744873 0 178.706428 78.764905
+ L3 255 0.020833 0.010417 1.122826 0 0.010417 0.551960 0
+ L3 255 0.020833 8.630495 2.067708 0 8.630495 0.000779 0
+END
+
+
+SUBCONTENTS ScaleScenes N Scale Structures - Railscenes
+TURNOUT N "ScaleScenes Inspection Pit (130mm x 36mm) R002c"
+ P "P0" 1
+ E 0.000000 0.000000 270.000000
+ E 5.472441 0.000000 90.000000
+# E 0.414503 1.064041 270.000000
+# E 5.886944 1.064041 90.000000
+ S 0 0.000000 0.000000 0.000000 5.472441 0.000000
+ L3 255 0.041667 -0.059055 -0.688908 0 5.093504 -0.688908 0
+ L3 255 0.041667 -0.039370 -0.688994 0 -0.039370 0.748013 0
+ L3 255 0.041667 -0.059055 0.728328 0 5.098425 0.728328 0
+ L3 255 0.041667 5.078740 0.728328 0 5.078740 -0.708680 0
+END
+STRUCTURE N "Scalescenes Platform Subway - Stairs or Escalators R006"
+ L3 11928561 0.072917 0.792610 1.572137 0 2.497334 1.572137 0
+ L3 11928561 0.072917 2.446153 1.580011 0 2.446153 0.792610 0
+ L3 11928561 0.072917 2.497334 0.798515 0 0.792610 0.798515 0
+ L3 11928561 0.010417 0.792610 0.792610 0 0.792608 0.005208 0
+ L3 11928561 0.010417 0.792610 1.580011 0 0.792610 2.367413 0
+ L3 11928561 0.010417 0.792610 2.367413 0 0.005208 2.367413 0
+ L3 11928561 0.010417 0.005208 2.367413 0 0.005208 0.005208 0
+ L3 11928561 0.010417 0.792610 0.005208 0 0.005208 0.005208 0
+ L3 11928561 0.072917 0.812295 1.574106 0 0.812295 0.753240 0
+ L3 11928561 0.031250 0.792610 1.580011 0 0.005208 1.580011 0
+ L3 11928561 0.031250 0.792610 0.792610 0 0.005208 0.792610 0
+ L3 11928561 0.031250 2.328043 1.520956 0 2.328043 0.812295 0
+ L3 11928561 0.031250 2.249303 1.540641 0 2.249303 0.831980 0
+ L3 11928561 0.031250 2.170563 1.520956 0 2.170563 0.812295 0
+ L3 11928561 0.031250 2.091823 1.560326 0 2.091823 0.831980 0
+ L3 11928561 0.031250 2.013082 1.520956 0 2.013082 0.792610 0
+ L3 11928561 0.031250 1.934342 1.540641 0 1.934342 0.831980 0
+ L3 11928561 0.031250 1.855602 1.520925 0 1.855602 0.812263 0
+ L3 11928561 0.031250 1.776862 1.540610 0 1.776862 0.831948 0
+ L3 11928561 0.031250 1.698122 1.520925 0 1.698122 0.812263 0
+ L3 11928561 0.031250 1.619382 1.560295 0 1.619382 0.831948 0
+ L3 11928561 0.031250 1.540641 1.520925 0 1.540641 0.792578 0
+ L3 11928561 0.031250 1.461901 1.540610 0 1.461901 0.831948 0
+ L3 11928561 0.031250 1.383161 1.520925 0 1.383161 0.812263 0
+ L3 11928561 0.031250 1.304421 1.540610 0 1.304421 0.831948 0
+ L3 11928561 0.031250 1.225681 1.520925 0 1.225681 0.812263 0
+ L3 11928561 0.031250 1.146941 1.560295 0 1.146941 0.831948 0
+ L3 11928561 0.031250 1.068200 1.520925 0 1.068200 0.792578 0
+ L3 11928561 0.031250 0.989460 1.540610 0 0.989460 0.831948 0
+END
+STRUCTURE N "Scalescenes Small Station & Waiting Room R003"
+ Z 255 0.178314 0.822755 0.000000 0 16.000000 "R003 Small Station & Room"
+ Z 255 0.178314 0.546713 0.000000 0 16.000000 "78W x 19D x 30mm high."
+ L3 255 0.041667 0.020833 1.123207 0 3.091699 1.123211 0
+ L3 255 0.041667 3.091699 1.142892 0 3.091699 0.394861 0
+ L3 255 0.041667 3.091699 0.394869 0 0.020833 0.394865 0
+ L3 255 0.041667 0.020833 0.394861 0 0.020833 1.142893 0
+ L3 255 0.041667 1.948850 0.551227 0 1.948850 0.020833 0
+ L3 255 0.041667 1.930193 0.020833 0 3.051212 0.020833 0
+ L3 255 0.041667 3.051212 0.414534 0 3.051212 0.020833 0
+ Z 255 2.087762 0.099585 0.000000 0 18.000000 "shelter"
+ L3 255 0.010417 1.948850 0.728392 0 1.948850 0.807133 0
+ L3 255 0.041667 1.948850 0.728392 0 1.948850 0.826818 0
+ L3 255 0.041667 1.948850 0.984298 0 1.948850 1.122093 0
+END
+STRUCTURE N "Scalescenes GWR Station & Goods Shed R003b "
+ Z 33023 0.237369 0.709809 0.000000 0 18.000000 "R003b GWR Station "
+ Z 33023 0.237369 0.397309 0.000000 0 18.000000 "& Goods Shed"
+ L3 11928561 0.041667 0.020833 1.083825 0 3.327920 1.083825 0
+ L3 11928561 0.041667 0.020833 1.083825 0 0.020833 0.020833 0
+ L3 11928561 0.041667 3.327920 1.083825 0 3.327920 0.020833 0
+ L3 11928561 0.041667 0.020833 0.020833 0 3.327920 0.020833 0
+END
+STRUCTURE N "ScaleScenes Island Platform and Toilet R004A"
+ L3 255 0.010417 0.020834 0.005208 0 5.493274 0.005208 0
+ L3 255 0.010417 0.020834 0.005208 0 0.020834 1.894972 0
+ L3 255 0.010417 5.493274 0.005208 0 5.493274 1.894972 0
+ L3 255 0.010417 0.020834 1.894972 0 5.493274 1.894972 0
+ L3 255 0.041667 0.020833 1.383168 0 6.103511 1.383168 0
+ L3 255 0.041667 0.020834 0.556389 0 6.280676 0.556389 0
+ L3 255 0.041667 0.020833 1.383161 0 0.020833 0.556389 0
+ L3 255 0.041667 6.280676 0.556389 0 6.280676 1.383161 0
+ L3 255 0.031250 1.989337 0.556389 0 1.989337 1.383161 0
+ L3 255 0.031250 2.934219 0.556389 0 2.934219 1.383161 0
+ L3 255 0.031250 5.493274 0.556389 0 5.493274 1.383161 0
+ L3 255 0.031250 6.083825 1.383161 0 6.083825 1.127255 0
+ Z 255 5.658837 0.592892 315.000000 0 18.000000 "Gents"
+ Z 255 2.154561 0.570888 315.000000 0 18.000000 "Walkway"
+ Z 255 2.993274 0.989460 0.000000 0 18.000000 "R004a Island Platform"
+ Z 255 2.993274 0.676960 0.000000 0 18.000000 "& Gent's Toillet"
+END
+STRUCTURE N "Scalescenes Station Platform R008"
+ L3 7803544 0.041667 1.181102 31.181102 0 7.795276 31.181102 0
+ L3 7803544 0.041667 7.795276 32.559055 0 7.795276 31.181102 0
+ Z 0 0.000000 0.000000 0.000000 0 18.000000 "R008 Station Platform\nany length, any width"
+END
+
+
+SUBCONTENTS ScaleScenes N Scale Structures - Townscenes
+STRUCTURE N "ScaleScenes Low Relief Warehouse (127mm x 14mm) T002b"
+ L3 255 0.041667 0.020833 0.020833 0 5.020833 0.020833 0
+ L3 255 0.041667 0.020833 0.572014 0 5.020833 0.572014 0
+ L3 255 0.041667 0.020833 0.572014 0 0.020833 0.020833 0
+ L3 255 0.041667 5.020833 0.572014 0 5.020833 0.020833 0
+ Z 255 0.375164 0.355479 0.000000 0 16.000000 "T002b ScaleScenes Low Relief Warehouse"
+ Z 255 0.375164 0.079437 0.000000 0 16.000000 "127W x 14D x 46H mm"
+END
+STRUCTURE N "Scalescenes Stone Warehouse - Mill T026c"
+ Z 255 0.276740 1.905421 0.000000 0 18.000000 "T026c Stone Warehouse"
+ Z 255 0.276740 1.592921 0.000000 0 18.000000 "82W x 61D x 96mm high."
+ L3 255 0.041667 0.020833 2.422408 0 3.249180 2.422408 0
+ L3 255 0.041667 3.249180 2.422408 0 3.249180 0.020833 0
+ L3 255 0.041667 3.249180 0.020833 0 0.020833 0.020833 0
+ L3 255 0.041667 0.020833 0.020833 0 0.020833 2.422408 0
+END
diff --git a/app/lib/params/N-Shinohara70.xtp b/app/lib/params/N-Shinohara70.xtp
index 9da047f..3b47c23 100644
--- a/app/lib/params/N-Shinohara70.xtp
+++ b/app/lib/params/N-Shinohara70.xtp
@@ -122,10 +122,12 @@ TURNOUT N "Shinohara #4 WYE Turnout 607"
C 0 0.000000 29.003880 1.923108 -29.003880 0.000076 9.300152
S 0 0.000000 6.610434 -0.381247 6.960000 -0.438500
END
-TURNOUT N "Shinohara #6 Dbl-Slip Turnout 614"
+TURNOUT N "Shinohara #6 Dbl-Slip Turnout 614" 512
U "Double Slipswitch" "" "Shinohara" "#6 Dbl-Slip Turnout" "614" 8.976378 9.300000 8.976378 0.000000 0.031250 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.976378 0.000000 90.000000
E 0.058993 0.725302 279.300000
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 ef7c10a..653f268 100644
--- a/app/lib/params/N-Tomix Track.xtp
+++ b/app/lib/params/N-Tomix Track.xtp
@@ -1,1705 +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"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 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"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 8 6 0 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"
-# 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-atlasn55.xtp b/app/lib/params/N-atlasn55.xtp
index 810953b..f8d6b7e 100644
--- a/app/lib/params/N-atlasn55.xtp
+++ b/app/lib/params/N-atlasn55.xtp
@@ -2,13 +2,13 @@ CONTENTS Atlas N Scale Code 55
SUBCONTENTS Atlas N-Scale Code 55 - Crossings
# 11 1/4 Degree Crossing Design by Geoffrey Dagley Modified by D.Ward
TURNOUT N "Atlas 11 1/4 Degree Crossing 2040"
- P "P0" 2 0 1
+ P "Normal" 2 0 1
E 0.000000 0.000000 270.000000
- E 6.338513 0.707107 78.750000
E 6.400000 0.000000 90.000000
- E 0.061487 -0.707107 258.750000
+ E 0.061487 0.624289 281.250000
+ E 6.338513 -0.624289 101.250000
S 0 0.000000 0.000000 0.000000 6.400000 0.000000
- S 0 0.000000 6.338513 0.707107 0.061487 -0.707107
+ S 0 0.000000 0.061487 0.624289 6.338513 -0.624289
END
# 22 1/2 Degree Crossing Design by Dwyane Ward
TURNOUT N "Atlas 22 1/2 Degree Crossing 2041"
diff --git a/app/lib/params/N-fl.xtp b/app/lib/params/N-fl.xtp
index 8cc0039..dccc21f 100644
--- a/app/lib/params/N-fl.xtp
+++ b/app/lib/params/N-fl.xtp
@@ -145,10 +145,12 @@ TURNOUT N "Fleischmann Crossing 15° 22245"
S 0 0.000000 0.000000 0.000000 4.433071 0.000000
S 0 0.000000 0.075527 0.573682 4.357544 -0.573682
END
-TURNOUT N "Fleischmann Double Slip R5 15° 22246"
+TURNOUT N "Fleischmann Double Slip R5 15° 22246" 512
U "Double Slipswitch" "" "Fleischmann" "Double slip" "22246" 5.110236 15.000000 5.110236 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.110236 0.000000 90.000000
E 0.087064 0.661313 285.000000
diff --git a/app/lib/params/N-kato-turntable.xtp b/app/lib/params/N-kato-turntable.xtp
index 151e4e6..c6f92ba 100644
--- a/app/lib/params/N-kato-turntable.xtp
+++ b/app/lib/params/N-kato-turntable.xtp
@@ -78,7 +78,7 @@ TURNOUT N "Kato Unitrack Curve 15R 381mm 10° 381-10"
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 160mm Turn Table 20-283"
+TURNOUT N "Kato Unitrack 160mm Turn Table 20-283" 512
P "1" 1 2 3
P "2" 4 5 6
P "3" 7 8 9
diff --git a/app/lib/params/N-walth-n.xtp b/app/lib/params/N-walthers-n.xtp
index 7d43e9e..2719287 100644
--- a/app/lib/params/N-walth-n.xtp
+++ b/app/lib/params/N-walthers-n.xtp
@@ -1,3050 +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"
- 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"
-# 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/NScale_SectorPlate_Traverser_Examples.xtp b/app/lib/params/NScale_SectorPlate_Traverser_Examples.xtp
index 6b48fb1..14c407d 100644
--- a/app/lib/params/NScale_SectorPlate_Traverser_Examples.xtp
+++ b/app/lib/params/NScale_SectorPlate_Traverser_Examples.xtp
@@ -1,7 +1,7 @@
CONTENTS Generic N Scale Example of Sector Plate and Traverser
#Examples of a Sector PLate and transverser end user will need to modify as required for their layout
#6" Radius with 3 positions on 15 degrees separation Length 10"
-TURNOUT N "SectorPlate 10"" Length 6"" Radius 3 pos 15 Degree XX"
+TURNOUT N "SectorPlate 10"" Length 6"" Radius 3 pos 15 Degree XX" 512
P "1" 1
P "2" 2
P "3" 3
@@ -17,7 +17,7 @@ TURNOUT N "SectorPlate 10"" Length 6"" Radius 3 pos 15 Degree XX"
END
#10" Length with 3 positions on 1.5" separation
-TURNOUT N "Traverser/Transfer Table 10"" Length 3 pos 1.5"" spacing XX"
+TURNOUT N "Traverser/Transfer Table 10"" Length 3 pos 1.5"" spacing XX" 512
P "1" 1
P "2" 2
P "3" 3
@@ -34,4 +34,4 @@ TURNOUT N "Traverser/Transfer Table 10"" Length 3 pos 1.5"" spacing XX"
L 0 0.000000 10.000000 -1.000000 10.000000 4.000000
L 0 0.000000 0.000000 4.000000 10.000000 4.000000
L 0 0.000000 0.000000 4.000000 0.000000 -1.000000
- END \ No newline at end of file
+ END
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-Atlas2Rail.xtp b/app/lib/params/O-Atlas2Rail.xtp
index aeb37bf..8857f50 100644
--- a/app/lib/params/O-Atlas2Rail.xtp
+++ b/app/lib/params/O-Atlas2Rail.xtp
@@ -218,7 +218,7 @@ TURNOUT O "Atlas O 2 Rail 18"" Single Track Plate Girder Bridge AT-7918"
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"
+TURNOUT O "Atlas O 2 Rail 24"" Turntable AT-6910" 512
P "1" 1
P "2" 2
P "3" 3
@@ -231,18 +231,18 @@ TURNOUT O "Atlas O 2 Rail 24"" Turntable AT-6910"
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
+# 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
diff --git a/app/lib/params/O-Atlas3Rrail.xtp b/app/lib/params/O-Atlas3Rrail.xtp
index b12ceb0..8d40f44 100644
--- a/app/lib/params/O-Atlas3Rrail.xtp
+++ b/app/lib/params/O-Atlas3Rrail.xtp
@@ -493,8 +493,8 @@ TURNOUT O "Atlas O 3 Rail 40"" Double Track Pratt Truss Bridge 6921"
E 0.000000 4.500000 270.000000
E 40.000000 4.500000 90.000000
S 0 0.000000 0.000000 0.000000 40.000000 0.000000
- L3 0 0.050000 0.000000 0.000000 0 40.000000 0.000000 0
S 0 0.000000 0.000000 4.500000 40.000000 4.500000
+ L3 0 0.050000 0.000000 0.000000 0 40.000000 0.000000 0
L3 0 0.050000 0.000000 4.500000 0 40.000000 4.500000 0
L3 0 0.100000 0.000000 -1.500000 0 40.000000 -1.500000 0
L3 0 0.100000 0.000000 6.000000 0 40.000000 6.000000 0
@@ -522,7 +522,7 @@ TURNOUT O "Atlas O 3 Rail 18"" Single Track Plate Girder Bridge 6918"
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 0 18.000000 0.000000 0
+ S 0 0.000000 0.000000 0.000000 18.000000 0.000000 0
L3 0 0.050000 0.000000 0.000000 0 18.000000 0.000000 0
L3 0 0.100000 1.500000 -2.000000 0 16.500000 -2.000000 0
L3 0 0.100000 1.500000 2.000000 0 16.500000 2.000000 0
@@ -539,7 +539,7 @@ TURNOUT O "Atlas O 3 Rail 18"" Single Track Plate Girder Bridge 6918"
L3 0 0.100000 13.500000 1.250000 0 13.500000 2.000000 0
L3 0 0.100000 16.500000 1.250000 0 16.500000 2.000000 0
END
-TURNOUT O "Atlas O 3 Rail 24"" Turntable 6910"
+TURNOUT O "Atlas O 3 Rail 24"" Turntable 6910" 512
P "1" 1
P "2" 2
P "3" 3
@@ -552,18 +552,18 @@ TURNOUT O "Atlas O 3 Rail 24"" Turntable 6910"
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
+# 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
diff --git a/app/lib/params/O-Bassett-Lowke (discontinued).xtp b/app/lib/params/O-Bassett-Lowke (discontinued).xtp
index 0ea4091..1b943a8 100644
--- a/app/lib/params/O-Bassett-Lowke (discontinued).xtp
+++ b/app/lib/params/O-Bassett-Lowke (discontinued).xtp
@@ -88,13 +88,17 @@ TURNOUT O "Bassett-Lowke O Scale 18""/457.2mm 15d Right Turnout RTS"
C 0 0.000000 35.370079 0.000000 -35.370079 0.000000 15.000000
END
TURNOUT O "Bassett-Lowke O Scale Three-Way Turnout(need to find data) TWT"
-# P "Normal" 1
+# Add fake seg to make path algorithm work
+ P "Normal" 1
E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
Z 0 0.000000 0.000000 0.000000 0 72.000000 "Future Addition - Need to find Data"
END
TURNOUT O "Bassett-Lowke O Scale Wye Turnout(need to find data) WYE"
-# P "Normal" 1
+# Add fake seg to make path algorithm work
+ P "Normal" 1
E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
Z 0 0.000000 0.000000 0.000000 0 72.000000 "Future Addition - Need to find Data"
END
@@ -180,7 +184,9 @@ TURNOUT O "Bassett-Lowke O Scale 24""/609.6mm Right Parallel Turnout RTP"
SUBCONTENTS Bassett-Lowke O Scale - Crossing
TURNOUT O "Bassett-Lowke O Scale Long Crossing(need to find data) DLC"
-# P "Normal" 1
+# Add fake seg to make path algorithm work
+ P "Normal" 1
E 0.000000 0.000000 270.000000
+ S 0 0.000000 0.000000 0.000000 12.000000 0.000000
Z 0 0.000000 0.000000 0.000000 0 72.000000 "Future Addition - Need to find Data"
END
diff --git a/app/lib/params/O-ETS.xtp b/app/lib/params/O-ETS.xtp
index 95edbc5..137e25d 100644
--- a/app/lib/params/O-ETS.xtp
+++ b/app/lib/params/O-ETS.xtp
@@ -205,7 +205,7 @@ TURNOUT O "Electric Train System O Scale 240mm/R672mm 22°30' Three-Way Remote T
END
SUBCONTENTS Electric Train System O Scale - Turntable
-TURNOUT O "Electric Train System O Scale 240mm 22°30' Turntable 863"
+TURNOUT O "Electric Train System O Scale 240mm 22°30' Turntable 863" 512
P "1" 1 2
P "2" 3 4 5
P "3" 6 7 8
diff --git a/app/lib/params/O-Lenz.xtp b/app/lib/params/O-Lenz.xtp
index ec48ff9..1cfa24a 100644
--- a/app/lib/params/O-Lenz.xtp
+++ b/app/lib/params/O-Lenz.xtp
@@ -107,9 +107,11 @@ TURNOUT O "Lenz O Scale 585.88mm/R1649.39mm 11°15' Three-Way Manual Turnout 450
S 0 0.000000 11.881688 -1.047143 17.928740 -2.250000
S 0 0.000000 1.471803 0.000000 23.066142 0.000000
END
-TURNOUT O "Lenz O Scale 585.88mm 11°15' Double Slip Turnout 45033"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT O "Lenz O Scale 585.88mm 11°15' Double Slip Turnout 45033" 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 23.066142 0.000000 90.000000
E 0.221601 2.249974 281.250000
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 890c882..279dee7 100644
--- a/app/lib/params/O-Ross.xtp
+++ b/app/lib/params/O-Ross.xtp
@@ -1,1748 +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"
- 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.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"
- 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 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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"
- 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/O-atlaso3rail.xtp b/app/lib/params/O-atlaso3rail.xtp
index 88be042..456119d 100644
--- a/app/lib/params/O-atlaso3rail.xtp
+++ b/app/lib/params/O-atlaso3rail.xtp
@@ -146,9 +146,11 @@ TURNOUT O "Atlas O 3 Rail #5 Right AT-6025"
A 0 0.050000 77.216289 1.176693 -77.216289 0.000076 11.537121
L 0 0.050000 16.620459 -1.560127 20.000000 -2.250000
END
-TURNOUT O "Atlas O 3 Rail #5 Dbl-Slip AT-6027"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT O "Atlas O 3 Rail #5 Dbl-Slip AT-6027" 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 23.250000 0.000000 90.000000
E 0.234870 2.324985 281.536969
@@ -493,8 +495,8 @@ TURNOUT O "Atlas O 3 Rail 40"" Double Track Pratt Truss Bridge AT-6921"
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
- L 0 0.050000 0.000000 0.000000 40.000000 0.000000
S 0 0.000000 0.000000 3.250000 40.000000 3.250000
+ L 0 0.050000 0.000000 0.000000 40.000000 0.000000
L 0 0.050000 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
@@ -539,7 +541,7 @@ TURNOUT O "Atlas O 3 Rail 18"" Single Track Plate Girder Bridge AT-6918"
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 3 Rail 24"" Turntable AT-6910"
+TURNOUT O "Atlas O 3 Rail 24"" Turntable AT-6910" 512
P "1" 1
P "2" 2
P "3" 3
@@ -552,18 +554,18 @@ TURNOUT O "Atlas O 3 Rail 24"" Turntable AT-6910"
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
+# 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
diff --git a/app/lib/params/O-nmra-lapped.xtp b/app/lib/params/O-nmra-lapped.xtp
index 59caa62..71517dc 100644
--- a/app/lib/params/O-nmra-lapped.xtp
+++ b/app/lib/params/O-nmra-lapped.xtp
@@ -3,9 +3,8 @@ CONTENTS NMRA O 2 Rail Lapped turnouts
#sterbejj@hotmail.com June 6, 2007
#Reference: John Armstrong article MRR May 1954
TURNOUT O "NMRA O #4 Right Lapped #4R + #4R"
- P "Normal" 1
- P "Right" 2 3 4 5
- P "Left" 6 7 8 9
+ P "P1" 2 3 4 5 0 6 7 8 9
+ P "P2" 1
E 0.000000 0.000000 270.000000
E 15.625000 -1.576999 104.250000
E 15.625000 0.000000 90.000000
@@ -21,9 +20,8 @@ TURNOUT O "NMRA O #4 Right Lapped #4R + #4R"
S 0 0 2.5625 0.938905 0.000000 1.576999
END
TURNOUT O "NMRA O #4 Left Lapped #4L + #4L"
- P "Normal" 1
- P "Right" 2 3 4 5
- P "Left" 6 7 8 9
+ P "P1" 2 3 4 5 0 6 7 8 9
+ P "P2" 1
E 0.000000 0.000000 270.000000
E 15.625000 1.576999 75.750000
E 15.625000 0.000000 90.000000
@@ -39,38 +37,50 @@ TURNOUT O "NMRA O #4 Left Lapped #4L + #4L"
S 0 0 2.5625 -0.938905 0.000000 -1.576999
END
TURNOUT O "NMRA O #5 Right Lapped #5R + #5R"
- P "Normal" 1
- P "Right" 2 3 4 5
- P "Left" 6 7 8 9
+ P "P1" 1 2 3
+ P "P2" 1 6 5 0 -3 4 7
E 0.000000 0.000000 270.000000
E 17.875000 0.000000 90.000000
E 0.000000 1.535771 281.416667
E 17.875000 -1.535771 101.416667
- S 0 0 0.000000 0.000000 17.875000 0.000000
- S 0 0 0.000000 0.000000 5.312500 0.000000
- C 0 0 228.000000 -6.608202 -227.688157 2.997007 0.912619
- C 0 0 52.000000 5.638694 -52.114009 3.637205 6.804034
- S 0 0 15.0625 -0.975062 17.875000 -1.535771
- S 0 0 17.875000 0.000000 12.562500 0.000000
- C 0 0 228.000000 24.483202 227.688157 182.997007 0.912619
- C 0 0 52.000000 12.236306 52.114009 183.637205 6.804034
- S 0 0 2.8125 0.975062 0.000000 1.535771
+# S 0 0 0.000000 0.000000 17.875000 0.000000
+# S 0 0 0.000000 0.000000 5.312500 0.000000
+# C 0 0 228.000000 -6.608202 -227.688157 2.997007 0.912619
+# C 0 0 52.000000 5.638694 -52.114009 3.637205 6.804034
+# S 0 0 15.0625 -0.975062 17.875000 -1.535771
+# S 0 0 17.875000 0.000000 12.562500 0.000000
+# C 0 0 228.000000 24.483202 227.688157 182.997007 0.912619
+# C 0 0 52.000000 12.236306 52.114009 183.637205 6.804034
+# S 0 0 2.8125 0.975062 0.000000 1.535771
+ S 0 0 0.000 0.000 5.320 0.000
+ S 0 0 5.320 0.000 12.555 0.000
+ S 0 0 12.555 0.000 17.875 0.000
+ C 0 0 49.149 12.555 49.149 180.000 11.279
+ S 0 0 14.933 -0.949 17.875 -1.536
+ C 0 0 49.149 5.320 -49.149 0.000 11.279
+ S 0 0 2.942 0.949 0.000 1.536
END
TURNOUT O "NMRA O #5 Left Lapped #5L + #5L"
- P "Normal" 1
- P "Right" 2 3 4 5
- P "Left" 6 7 8 9
+ P "P1" 1 2 3
+ P "P2" 1 -4 5 0 -3 6 7
E 0.000000 0.000000 270.000000
E 17.875000 0.000000 90.000000
E 0.000000 -1.535771 258.583333
E 17.875000 1.535771 78.583333
- S 0 0 0.000000 0.000000 17.875000 0.000000
- S 0 0 0.000000 0.000000 5.312500 0.000000
- C 0 0 -228.000000 -6.608202 227.688157 176.090374 0.912619
- C 0 0 -52.000000 5.638694 52.114009 169.558761 6.804034
- S 0 0 15.0625 0.975062 17.875000 1.535771
- S 0 0 17.875000 0.000000 12.562500 0.000000
- C 0 0 -228.000000 24.483202 -227.688157 356.090374 0.912619
- C 0 0 -52.000000 12.236306 -52.114009 349.558761 6.804034
- S 0 0 2.8125 -0.975062 0.000000 -1.535771
+# S 0 0 0.000000 0.000000 17.875000 0.000000
+# S 0 0 0.000000 0.000000 5.312500 0.000000
+# C 0 0 -228.000000 -6.608202 227.688157 176.090374 0.912619
+# C 0 0 -52.000000 5.638694 52.114009 169.558761 6.804034
+# S 0 0 15.0625 0.975062 17.875000 1.535771
+# S 0 0 17.875000 0.000000 12.562500 0.000000
+# C 0 0 -228.000000 24.483202 -227.688157 356.090374 0.912619
+# C 0 0 -52.000000 12.236306 -52.114009 349.558761 6.804034
+# S 0 0 2.8125 -0.975062 0.000000 -1.535771
+ S 0 0 0.000 0.000 5.320 0.000
+ S 0 0 5.320 0.000 12.555 0.000
+ S 0 0 12.555 0.000 17.875 0.000
+ C 0 0 49.149 5.320 49.149 168.721 11.279
+ S 0 0 14.933 0.949 17.875 1.536
+ C 0 0 -49.149 12.555 -49.149 348.721 11.279
+ S 0 0 2.942 -0.949 0.000 -1.536
END
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/OO9-Peco.xtp b/app/lib/params/OO9-Peco.xtp
new file mode 100755
index 0000000..bddcd01
--- /dev/null
+++ b/app/lib/params/OO9-Peco.xtp
@@ -0,0 +1,62 @@
+CONTENTS OO9 PECO Turnouts
+TURNOUT OO9 "Peco LH Small Radius 12"""" SL-E492"
+ U "Regular Turnout" "" "Peco" "LH Small Radius 12""""" "SL-E492" "RH Small Radius 12""""" "SL-E491" 4.796000 19.500000 0.656250 4.921000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.921000 0.000000 90.000000
+ E 4.796000 0.656250 70.500000
+ S 0 0.000000 0.000000 0.000000 1.331185 0.000000
+ S 0 0.000000 1.331185 0.000000 4.921000 0.000000
+ C 0 0.000000 -9.379199 1.331197 9.379199 160.499924 19.500152
+ S 0 0.000000 4.462046 0.537984 4.796000 0.656250
+ END
+TURNOUT OO9 "Peco RH Small Radius 12"""" SL-E491"
+ U "Regular Turnout" "" "Peco" "LH Small Radius 12""""" "SL-E492" "RH Small Radius 12""""" "SL-E491" 4.796000 19.500000 0.656250 4.921000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 4.921000 0.000000 90.000000
+ E 4.796000 -0.656250 109.500000
+ S 0 0.000000 0.000000 0.000000 1.331185 0.000000
+ S 0 0.000000 1.331185 0.000000 4.921000 0.000000
+ C 0 0.000000 9.379199 1.331147 -9.379199 0.000076 19.500152
+ S 0 0.000000 4.462046 -0.537984 4.796000 -0.656250
+ END
+TURNOUT OO9 "Peco LH Mainline Radius 18"""" SL-E496"
+ U "Regular Turnout" "" "Peco" "LH Mainline Radius 18""""" "SL-E496" "RH Mainline Radius 18""""" "SL-E495" 5.531250 14.000000 0.656250 5.629000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 5.629000 0.000000 90.000000
+ E 5.531250 0.656250 76.000000
+ S 0 0.000000 0.000000 0.000000 0.540879 0.000000
+ S 0 0.000000 0.540879 0.000000 5.629000 0.000000
+ C 0 0.000000 -19.207026 0.540904 19.207026 165.999924 14.000152
+ S 0 0.000000 5.187525 0.570542 5.531250 0.656250
+ END
+TURNOUT OO9 "Peco RH Mainline Radius 18"""" SL-E495"
+ U "Regular Turnout" "" "Peco" "LH Mainline Radius 18""""" "SL-E496" "RH Mainline Radius 18""""" "SL-E495" 5.531250 14.000000 0.656250 5.629000 0.000000 0.000000 0
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 5.629000 0.000000 90.000000
+ E 5.531250 -0.656250 104.000000
+ S 0 0.000000 0.000000 0.000000 0.540879 0.000000
+ S 0 0.000000 0.540879 0.000000 5.629000 0.000000
+ C 0 0.000000 19.207026 0.540802 -19.207026 0.000076 14.000152
+ S 0 0.000000 5.187525 -0.570542 5.531250 -0.656250
+ END
+TURNOUT OO9 "Peco Y Turnout Radius 18"""" SL-E497"
+ U "Wye Turnout" "" "Peco" "Y Turnout Radius 18""""" "SL-E497" 4.291339 11.250000 0.328125 0.328125 11.250000 4.291339 0.000000 0.000000 0
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 4.291339 0.328125 78.750000
+ E 4.291339 -0.328125 101.250000
+ S 0 0.000000 0.000000 0.000000 1.314185 0.000000
+ C 0 0.000000 -13.479213 1.314203 13.479213 168.749924 11.250152
+ S 0 0.000000 3.943882 0.259006 4.291339 0.328125
+ C 0 0.000000 13.479213 1.314131 -13.479213 0.000076 11.250152
+ S 0 0.000000 3.943882 -0.259006 4.291339 -0.328125
+ END
diff --git a/app/lib/params/On3-FastTrack.xtp b/app/lib/params/On3-FastTrack.xtp
new file mode 100644
index 0000000..6f21c9c
--- /dev/null
+++ b/app/lib/params/On3-FastTrack.xtp
@@ -0,0 +1,226 @@
+CONTENTS Fast Tracks On3 Gauge Track
+#Dimension obtain from Fast Tracks On3 PDF Templates
+SUBCONTENTS Fast track On3 Tracks - Turnouts
+TURNOUT On3 "Fast Track Lefthand Turnout TT-ON3-T-4L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.394306 0.000000 90.000000
+ E 11.394306 1.529958 75.522476
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 11.394306 0.000000
+ C 0 0.000000 -37.151543 0.750049 37.151543 165.522400 14.477676
+ S 0 0.000000 10.037981 1.179741 11.394306 1.529958
+END
+TURNOUT On3 "Fast Track Righthand Turnout TT-ON3-T-4R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 11.394306 0.000000 90.000000
+ E 11.394306 -1.529958 104.477524
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 11.394306 0.000000
+ C 0 0.000000 37.151543 0.749852 -37.151543 0.000076 14.477676
+ S 0 0.000000 10.037981 -1.179741 11.394306 -1.529958
+END
+TURNOUT On3 "Fast Track #5 Lefthand Turnout TT-ON3-T-5L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.465139 0.000000 90.000000
+ E 12.465139 1.484236 78.463031
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 12.465139 0.000000
+ C 0 0.000000 -43.990870 0.750058 43.990870 168.462955 11.537121
+ S 0 0.000000 9.548288 0.888819 12.465139 1.484236
+END
+TURNOUT On3 "Fast Track #5 Righthand Turnout TT-ON3-T-5R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.465139 0.000000 90.000000
+ E 12.465139 -1.484236 101.536969
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 12.465139 0.000000
+ C 0 0.000000 43.990870 0.749825 -43.990870 0.000076 11.537121
+ S 0 0.000000 9.548288 -0.888819 12.465139 -1.484236
+END
+TURNOUT On3 "Fast Track #6 Lefthand Turnout TT-ON3-T-6L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.833284 0.000000 90.000000
+ E 12.833284 1.249251 80.405924
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 12.833284 0.000000
+ C 0 0.000000 -55.918800 0.750074 55.918800 170.405848 9.594228
+ S 0 0.000000 10.069946 0.782144 12.833284 1.249251
+END
+TURNOUT On3 "Fast Track #6 Righthand Turnout TT-ON3-T-6R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 12.833284 0.000000 90.000000
+ E 12.833284 -1.249251 99.594076
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 12.833284 0.000000
+ C 0 0.000000 55.918800 0.749777 -55.918800 0.000076 9.594228
+ S 0 0.000000 10.069946 -0.782144 12.833284 -1.249251
+END
+TURNOUT On3 "Fast Track #7 Lefthand Turnout TT-ON3-T-7L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 15.824194 0.000000 90.000000
+ E 15.824194 1.297795 81.786782
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 15.824194 0.000000
+ C 0 0.000000 -84.724615 0.750112 84.724615 171.786706 8.213370
+ S 0 0.000000 12.853739 0.869025 15.824194 1.297795
+END
+TURNOUT On3 "Fast Track #7 Righthand Turnout TT-ON3-T-7R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 15.824194 0.000000 90.000000
+ E 15.824194 -1.297795 98.213218
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 15.824194 0.000000
+ C 0 0.000000 84.724615 0.749663 -84.724615 0.000076 8.213370
+ S 0 0.000000 12.853739 -0.869025 15.824194 -1.297795
+END
+TURNOUT On3 "Fast Track #8 Lefthand Turnout TT-ON3-T-8L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 16.543472 0.000000 90.000000
+ E 16.543472 1.279097 82.819238
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 16.543472 0.000000
+ C 0 0.000000 -89.904125 0.750119 89.904125 172.819162 7.180914
+ S 0 0.000000 11.988252 0.705171 16.543472 1.279097
+END
+TURNOUT On3 "Fast Track #8 Righthand Turnout TT-ON3-T-8R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 16.543472 0.000000 90.000000
+ E 16.543472 -1.279097 97.180762
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 16.543472 0.000000
+ C 0 0.000000 89.904125 0.749642 -89.904125 0.000076 7.180914
+ S 0 0.000000 11.988252 -0.705171 16.543472 -1.279097
+END
+TURNOUT On3 "Fast Track #9 Lefthand Turnout TT-ON3-T-9L"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 18.811201 0.000000 90.000000
+ E 18.811201 1.366384 83.620624
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 18.811201 0.000000
+ C 0 0.000000 -104.796630 0.750139 104.796630 173.620548 6.379528
+ S 0 0.000000 12.394346 0.648933 18.811201 1.366384
+END
+TURNOUT On3 "Fast Track #9 Righthand Turnout TT-ON3-T-9R"
+ P "Normal" 1 2
+ P "Reverse" 1 3 4
+ E 0.000000 0.000000 270.000000
+ E 18.811201 0.000000 90.000000
+ E 18.811201 -1.366384 96.379376
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ S 0 0.000000 0.750000 0.000000 18.811201 0.000000
+ C 0 0.000000 104.796630 0.749583 -104.796630 0.000076 6.379528
+ S 0 0.000000 12.394346 -0.648933 18.811201 -1.366384
+END
+
+
+SUBCONTENTS Fast track On3 Tracks - 3-Way Turnouts
+TURNOUT On3 "Fast Track #6 3-Way TT-ON3-W-6"
+ P "Left" 1 2 3
+ P "Normal" 1 4 7
+ P "Right" 1 4 5 6
+ E 0.000000 0.000000 270.000000
+ E 15.775772 1.739264 80.405924
+ E 15.775772 -1.248727 99.594076
+ E 15.775772 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ C 0 0.000000 -56.437814 0.750075 56.437814 170.405848 9.594228
+ S 0 0.000000 10.156450 0.789404 15.775772 1.739264
+ S 0 0.000000 0.750000 0.000000 1.646093 -0.000000
+ C 0 0.000000 80.341027 1.645773 -80.341027 0.000076 9.594228
+ S 0 0.000000 15.036474 -1.123742 15.775772 -1.248727
+ S 0 0.000000 1.646093 -0.000000 15.775772 0.000000
+END
+
+
+SUBCONTENTS Fast track On3 Tracks - Wye Turnouts
+TURNOUT On3 "Fast Track #5 WYE TT-ON3-Y-5"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 14.142324 0.853112 84.260825
+ E 14.142324 -0.853112 95.739175
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ C 0 0.000000 -97.837268 0.750130 97.837268 174.260749 5.739327
+ S 0 0.000000 10.533985 0.490441 14.142324 0.853112
+ C 0 0.000000 97.837268 0.749611 -97.837268 0.000076 5.739327
+ S 0 0.000000 10.533985 -0.490441 14.142324 -0.853112
+END
+TURNOUT On3 "Fast Track #6 WYE TT-ON3-Y-6"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 12.700240 0.684620 85.219804
+ E 12.700240 -0.684620 94.780196
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ C 0 0.000000 -90.168782 0.750120 90.168782 175.219728 4.780348
+ S 0 0.000000 8.264304 0.313651 12.700240 0.684620
+ C 0 0.000000 90.168782 0.749641 -90.168782 0.000076 4.780348
+ S 0 0.000000 8.264304 -0.313651 12.700240 -0.684620
+END
+TURNOUT On3 "Fast Track #7 WYE TT-ON3-Y-7"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 16.411938 0.679445 85.903953
+ E 16.411938 -0.679445 94.096047
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ C 0 0.000000 -172.660079 0.750229 172.660079 175.903877 4.096199
+ S 0 0.000000 13.083320 0.441055 16.411938 0.679445
+ C 0 0.000000 172.660079 0.749313 -172.660079 0.000076 4.096199
+ S 0 0.000000 13.083320 -0.441055 16.411938 -0.679445
+END
+TURNOUT On3 "Fast Track #8 WYE TT-ON3-Y-8"
+ P "Left" 1 2 3
+ P "Right" 1 4 5
+ E 0.000000 0.000000 270.000000
+ E 16.365500 0.628403 86.416675
+ E 16.365500 -0.628403 93.583325
+ S 0 0.000000 0.000000 0.000000 0.750000 0.000000
+ C 0 0.000000 -178.419226 0.750237 178.419226 176.416599 3.583477
+ S 0 0.000000 11.901674 0.348846 16.365500 0.628403
+ C 0 0.000000 178.419226 0.749290 -178.419226 0.000076 3.583477
+ S 0 0.000000 11.901674 -0.348846 16.365500 -0.628403
+END
+
+
+SUBCONTENTS Fast track On3 Tracks - Crossings
+TURNOUT On3 "Fast Track 14d Crossing TT-ON3-X-14"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 14.345238 0.000000 90.000000
+ E 0.213055 1.735203 284.000000
+ E 14.132183 -1.735203 104.000000
+ S 0 0.000000 0.000000 0.000000 14.345238 0.000000
+ S 0 0.000000 0.213055 1.735203 14.132183 -1.735203
+END
+TURNOUT On3 "Fast Track 19d Crossing TT-ON3-X-19"
+ P "Normal" 1 0 2
+ E 0.000000 0.000000 270.000000
+ E 12.322274 0.000000 90.000000
+ E 0.335664 2.005861 289.000000
+ E 11.986610 -2.005861 109.000000
+ S 0 0.000000 0.000000 0.000000 12.322274 0.000000
+ S 0 0.000000 0.335664 2.005861 11.986610 -2.005861
+END
diff --git a/app/lib/params/Piko-g.xtp b/app/lib/params/Piko-g.xtp
deleted file mode 100644
index ac870ee..0000000
--- a/app/lib/params/Piko-g.xtp
+++ /dev/null
@@ -1,183 +0,0 @@
-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-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
-
-
-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 G-WLR1 Switch Left 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 G-WRR1 Switch Right 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 G-WLR5 Switch Left 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 G-WRR5 Switch Right 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 35226"
- 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 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 35228"
- 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 35227"
- 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
diff --git a/app/lib/params/RocoGeoLineHO.xtp b/app/lib/params/RocoGeoLineHO.xtp
index 52e3774..14b92b7 100644
--- a/app/lib/params/RocoGeoLineHO.xtp
+++ b/app/lib/params/RocoGeoLineHO.xtp
@@ -152,9 +152,11 @@ TURNOUT HO "Roco Geoline Track Three-way Turnout 61160"
A3 11579568 0.053333 15.717333 0.657620 -16.517333 0 0.000076 22.500152
L3 11579568 0.053333 6.672469 -1.996420 0 7.272579 -2.245004 0
END
-TURNOUT HO "Roco Geoline Track Double Slip Turnout 61164"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Roco Geoline Track Double Slip Turnout 61164" 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 7.874016 0.000000 90.000000
E 0.299684 1.506622 292.500000
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
new file mode 100644
index 0000000..42298ff
--- /dev/null
+++ b/app/lib/params/TT-Berliner.xtp
@@ -0,0 +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
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-Kuehn.xtp b/app/lib/params/TT-Kuehn.xtp
index 4bd25da..874fb4e 100644
--- a/app/lib/params/TT-Kuehn.xtp
+++ b/app/lib/params/TT-Kuehn.xtp
@@ -38,31 +38,31 @@ TURNOUT TT "Kuehn Track G640 Straight(flex) 25.19 640mm 71640"
END
SUBCONTENTS Kuehn TT-Scale Track - Curve Track
-TURNOUT TT "Kuehn Track R1 Curve 12.64R 321mm 10 72110"
+TURNOUT TT "Kuehn Track R1 Curve 12.64R 321mm 10° 72110"
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
-TURNOUT TT "Kuehn Track R1 Curve 12.64R 321mm 30 72130"
+TURNOUT TT "Kuehn Track R1 Curve 12.64R 321mm 30° 72130"
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
-TURNOUT TT "Kuehn Track R2 Curve 14.37R 365mm 10 72210"
+TURNOUT TT "Kuehn Track R2 Curve 14.37R 365mm 10° 72210"
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
-TURNOUT TT "Kuehn Track R2 Curve 14.37R 365mm 20 72220"
+TURNOUT TT "Kuehn Track R2 Curve 14.37R 365mm 20° 72220"
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
-TURNOUT TT "Kuehn Track R2 Curve 14.37R 365mm 30 72230"
+TURNOUT TT "Kuehn Track R2 Curve 14.37R 365mm 30° 72230"
P "Normal" 1
E 0.000000 0.000000 270.000000
E 7.185039 -1.925225 120.000000
@@ -71,8 +71,8 @@ TURNOUT TT "Kuehn Track R2 Curve 14.37R 365mm 30 72230"
SUBCONTENTS Kuehn TT-Scale Track - Turnouts
TURNOUT TT "Kuehn Track WL20 Left Turnout 72620"
- P "Normal" 1
- P "Reverse" 2
+ 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
@@ -80,7 +80,7 @@ TURNOUT TT "Kuehn Track WL20 Left Turnout 72620"
C 0 0 14.370079 0.000000 14.370079 160.000000 20.000000
END
TURNOUT TT "Kuehn Track WR20 Right Turnout 72621"
- P "Normal" 1
+ P "Normal" 1
P "Reverse" 2
E 0.000000 0.000000 270.000000
E 5.066929 0.000000 90.000000
@@ -130,9 +130,11 @@ TURNOUT TT "Kuehn Track BWR Right Curve Turnout 72631"
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
-TURNOUT TT "Kuehn Track DKW20 Double-Slip Turnout 72600"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT TT "Kuehn Track DKW20 Double-Slip Turnout 72600" 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.152785 0.866492 290.000000
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-Turntable.xtp b/app/lib/params/TT-Roco-Turntable.xtp
index e4377c7..c4429f5 100644
--- a/app/lib/params/TT-Roco-Turntable.xtp
+++ b/app/lib/params/TT-Roco-Turntable.xtp
@@ -1,5 +1,5 @@
CONTENTS Roco TT Scale Turntable
-TURNOUT TT "Roco Turn Table 35900"
+TURNOUT TT "Roco Turn Table 35900" 512
P "1" 1
P "2" 2
P "3" 3
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
new file mode 100644
index 0000000..66917c5
--- /dev/null
+++ b/app/lib/params/TT-Zeuke.xtp
@@ -0,0 +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
diff --git a/app/lib/params/TilligAdvTT.xtp b/app/lib/params/TilligAdvTT.xtp
index dbe0c46..5365cbd 100644
--- a/app/lib/params/TilligAdvTT.xtp
+++ b/app/lib/params/TilligAdvTT.xtp
@@ -265,9 +265,11 @@ TURNOUT TT "Tillig DW-15 Asymmetrical 3-Way 83230"
END
SUBCONTENTS Pilz/Tillig TT-Scale Advance Track - Slips
-TURNOUT TT "Tillig DKW15 Double-Slip 83300/391"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT TT "Tillig DKW15 Double-Slip 83300/391" 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 6.535433 0.000000 90.000000
E 0.111343 0.845742 285.000000
diff --git a/app/lib/params/TilligH0EliteCode83.xtp b/app/lib/params/TilligH0EliteCode83.xtp
index 6412aff..133ed92 100644
--- a/app/lib/params/TilligH0EliteCode83.xtp
+++ b/app/lib/params/TilligH0EliteCode83.xtp
@@ -485,10 +485,12 @@ TURNOUT HO "Tillig Einfache Kreuzungsweiche - EKW I - 15° 85395"
L3 13276512 0.000000 7.334207 -1.700026 0 8.589075 -2.036277 0
A3 13276512 0.000000 23.316822 1.299226 -24.222333 0 0.000076 15.000152
END
-TURNOUT HO "Tillig Doppelkreuzungsweiche - DKW I - 15° 85390"
+TURNOUT HO "Tillig Doppelkreuzungsweiche - DKW I - 15° 85390" 512
U "Double Slipswitch" "" "Tillig" "Doppelkreuzungsweiche - DKW I - 15°" "85390" 8.976378 15.000000 8.976378 1.811024 0.000000 13276512
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.976378 0.000000 90.000000
E 0.152930 1.161622 285.000000
@@ -508,10 +510,12 @@ TURNOUT HO "Tillig Doppelkreuzungsweiche - DKW I - 15° 85390"
A3 13276512 0.000000 23.316822 1.299226 -24.222333 0 0.000076 15.000152
A3 13276512 0.000000 23.316822 7.677086 24.222325 0 180.000076 15.000152
END
-TURNOUT HO "Tillig Doppelkreuzungsweiche - DKW II (Bauart Baeseler) - 15° 85391"
+TURNOUT HO "Tillig Doppelkreuzungsweiche - DKW II (Bauart Baeseler) - 15° 85391" 512
U "Double Slipswitch" "" "Tillig" "Doppelkreuzungsweiche - DKW II (Bauart Baeseler) - 15°" "85391" 10.866142 15.000000 10.866142 1.811024 0.000000 13276512
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 10.866142 0.000000 90.000000
E 0.185125 1.406174 285.000000
diff --git a/app/lib/params/TilligTTModellGS.xtp b/app/lib/params/TilligTTModellGS.xtp
index 9df4773..f36e836 100644
--- a/app/lib/params/TilligTTModellGS.xtp
+++ b/app/lib/params/TilligTTModellGS.xtp
@@ -435,10 +435,12 @@ TURNOUT TT "Tillig Kreuzung - K2 - 30° 83170"
L3 13279072 0.000000 1.489268 -0.564335 0 2.863744 -1.357886 0
L3 13279072 0.000000 0.522081 1.357886 0 1.896557 0.564336 0
END
-TURNOUT TT "Tillig Doppelkreuzungsweiche - DKW 1 83300"
+TURNOUT TT "Tillig Doppelkreuzungsweiche - DKW 1 83300" 512
U "Double Slipswitch" "" "Tillig" "Doppelkreuzungsweiche - DKW 1" "83300" 6.535433 15.000000 6.535433 1.181102 0.000000 13279072
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 6.535433 0.000000 90.000000
E 0.111343 0.845742 285.000000
@@ -458,10 +460,12 @@ TURNOUT TT "Tillig Doppelkreuzungsweiche - DKW 1 83300"
A3 13279072 0.000000 17.059506 0.944019 -17.650057 0 0.000076 15.000152
A3 13279072 0.000000 17.059506 5.591366 17.650051 0 180.000076 15.000152
END
-TURNOUT TT "Tillig Doppelkreuzungsweiche - DKW II Bauart Baeseler 83391"
+TURNOUT TT "Tillig Doppelkreuzungsweiche - DKW II Bauart Baeseler 83391" 512
U "Double Slipswitch" "" "Tillig" "Doppelkreuzungsweiche - DKW II Bauart Baeseler" "83391" 8.212598 15.000000 8.212598 1.181102 0.000000 13279072
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.212598 0.000000 90.000000
E 0.139917 1.062782 285.000000
diff --git a/app/lib/params/TreeLgConif.xtp b/app/lib/params/TreeLgConif.xtp
new file mode 100644
index 0000000..f14dd01
--- /dev/null
+++ b/app/lib/params/TreeLgConif.xtp
@@ -0,0 +1,3023 @@
+CONTENTS Large Conifer Trees
+
+# DxfToXtp version 0.6 by Russell Shilling 2021
+STRUCTURE * "Lg Conifer 8"" Conifer-8a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -1.078903 3.046478 0
+ -0.136680 3.728935 0
+ 0.544568 2.993905 0
+ 0.615176 -2.377496 0
+ -0.477304 -3.800646 0
+ -1.194407 -2.438150 0
+ -2.072858 -3.693080 0
+ -2.419782 -2.295585 0
+ -3.589029 -2.810483 0
+ -3.274005 -1.487989 0
+ -4.385515 -1.452133 0
+ -3.417426 -0.376479 0
+ -4.651005 0.000000 0
+ -3.749934 0.396900 0
+ -4.436465 1.104885 0
+ -3.076802 2.079599 0
+ -3.524991 3.316601 0
+ -1.929437 2.904267 0
+ -1.314898 3.786643 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -2.474005 -1.487989 0
+ -2.789029 -2.810483 0
+ -1.619782 -2.295585 0
+ -1.272858 -3.693080 0
+ -0.394407 -2.438150 0
+ 0.322696 -3.800646 0
+ 1.415176 -2.377496 0
+ 2.563761 -3.218110 0
+ 2.113226 -2.027409 0
+ 2.726572 -1.028361 0
+ 3.765189 -0.278903 0
+ 3.014297 0.418354 0
+ 3.722281 1.426696 0
+ 2.545715 1.487989 0
+ 2.317039 2.005955 0
+ 2.284858 3.164475 0
+ 1.344568 2.993905 0
+ 0.663320 3.728935 0
+ -0.278903 3.046478 0
+ -0.514898 3.786643 0
+ -1.129437 2.904267 0
+ -2.724991 3.316601 0
+ -2.276802 2.079599 0
+ -3.636465 1.104885 0
+ -2.949934 0.396900 0
+ -3.851005 0.000000 0
+ -2.617426 -0.376479 0
+ -3.585515 -1.452133 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.536352 -2.510126 0
+ 1.624046 -3.752650 0
+ 2.005955 -2.821210 0
+ 1.684144 -1.566147 0
+ 2.964278 -1.624046 0
+ 3.815719 -0.930279 0
+ 2.317039 0.075089 0
+ 3.689580 1.576744 0
+ 2.664697 1.813255 0
+ 1.898685 1.641236 0
+ 1.855777 2.628123 0
+ 1.687116 3.579208 0
+ 0.504171 2.317039 0
+ -0.418354 2.445764 0
+ -0.632895 2.939207 0
+ -1.434837 3.547673 0
+ -1.426696 1.877231 0
+ -3.295394 2.317813 0
+ -2.916976 1.009116 0
+ -1.748507 0.278903 0
+ -3.074650 0.252279 0
+ -3.705347 -0.630697 0
+ -1.201428 -0.825982 0
+ -3.153487 -2.443952 0
+ -0.922525 -2.166861 0
+ -0.972167 -3.888667 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.220496 1.308698 0 -2.928480 1.276517 0
+ L3 26624 0.000000 -3.078659 1.877231 0 -2.595942 1.759234 0
+ L3 26624 0.000000 -0.986887 3.164475 0 -0.911798 2.274131 0
+ L3 26624 0.000000 -0.911798 2.274131 0 -1.448150 2.907026 0
+ L3 26624 0.000000 1.276517 3.196656 0 1.362333 2.445764 0
+ L3 26624 0.000000 1.362333 2.445764 0 1.769961 2.907026 0
+ L3 26624 0.000000 3.067932 1.651963 0 2.070318 1.190701 0
+ L3 26624 0.000000 2.070318 1.190701 0 3.067932 0.954706 0
+ L3 26624 0.000000 2.789029 -0.675803 0 2.038136 -0.686530 0
+ L3 26624 0.000000 2.038136 -0.686530 0 2.660304 -1.523239 0
+ L3 26624 0.000000 1.909412 -2.531580 0 1.083430 -1.812869 0
+ L3 26624 0.000000 1.083430 -1.812869 0 1.104885 -3.121567 0
+ L3 26624 0.000000 -0.386173 -3.336108 0 -0.396900 -2.231223 0
+ L3 26624 0.000000 -0.396900 -2.231223 0 -0.933252 -2.692486 0
+ L3 26624 0.000000 -0.514898 2.359948 0 -0.643622 1.812869 0
+ L3 26624 0.000000 0.868890 2.499399 0 0.879617 1.866504 0
+ L3 26624 0.000000 1.673417 2.145407 0 1.169247 1.727052 0
+ L3 26624 0.000000 1.941593 1.641236 0 1.394514 0.858163 0
+ L3 26624 0.000000 2.510126 0.450535 0 1.834323 0.632895 0
+ L3 26624 0.000000 2.574488 -0.182360 0 1.458877 -0.343265 0
+ L3 26624 0.000000 1.566147 -0.793801 0 2.091772 -1.544693 0
+ L3 26624 0.000000 1.673417 -1.759234 0 0.825982 -1.137066 0
+ L3 26624 0.000000 0.665076 -1.491058 0 0.450535 -2.145407 0
+ L3 26624 0.000000 0.032181 -2.134680 0 -0.117997 -1.276517 0
+ L3 26624 0.000000 -0.868890 -1.941593 0 -0.632895 -1.094157 0
+ L3 26624 0.000000 -1.641236 0.311084 0 -0.858163 -0.075089 0
+ L3 26624 0.000000 -0.697257 1.061976 0 -0.353992 0.386173 0
+ L3 26624 0.000000 0.536352 1.587601 0 0.150178 0.858163 0
+ L3 26624 0.000000 1.029795 1.169247 0 0.579260 0.697257 0
+ L3 26624 0.000000 1.426696 0.311084 0 0.568533 0.171633 0
+ L3 26624 0.000000 0.922525 -0.568533 0 0.396900 -0.246722 0
+ L3 26624 0.000000 0.107270 -0.804528 0 0.139451 -0.396900 0
+ L3 26624 0.000000 -0.160906 -0.268176 0 -0.493444 -0.718711 0
+ L3 26624 0.000000 -0.654349 0.278903 0 -0.203814 0.021454 0
+ L3 26624 0.000000 0.343265 0.547079 0 0.128724 0.117997 0
+ L3 26624 0.000000 -1.955328 0.693379 0 -2.482296 0.956863 0
+ L3 26624 0.000000 -2.440694 -0.568571 0 -1.775050 -0.360557 0
+ L3 26624 0.000000 -1.927593 -2.066269 0 -1.331287 -1.885991 0
+ F4 32768 0.000000 4 0
+ -1.802785 1.067803 0
+ -1.456096 0.665644 0
+ -0.845922 0.429895 0
+ -1.234214 0.929128 0
+ F4 32768 0.000000 4 0
+ -1.636374 -0.568571 0
+ -0.887525 -0.637909 0
+ -0.554703 -0.332822 0
+ -1.164876 -0.346689 0
+ F4 32768 0.000000 4 0
+ -0.818187 1.345155 0
+ -0.942995 1.788917 0
+ -1.400625 2.010799 0
+ -1.275817 1.650242 0
+ F4 32768 0.000000 4 0
+ -2.718045 0.013868 0
+ -2.121739 0.152543 0
+ -1.469963 -0.055470 0
+ -2.135607 -0.166411 0
+ F4 32768 0.000000 4 0
+ -2.246548 1.761182 0
+ -1.913726 1.428360 0
+ -1.400625 1.317420 0
+ -1.691844 1.650242 0
+ F4 32768 0.000000 4 0
+ -1.899858 -1.830520 0
+ -1.456096 -1.372890 0
+ -0.942995 -1.178744 0
+ -1.442228 -1.677977 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 8"" Conifer-8b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.136680 -3.728935 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -1.929437 -2.904267 0
+ -3.524991 -3.316601 0
+ -3.076802 -2.079599 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -3.417426 0.376479 0
+ -4.385515 1.452133 0
+ -3.274005 1.487989 0
+ -3.589029 2.810483 0
+ -2.419782 2.295585 0
+ -2.072858 3.693080 0
+ -1.194407 2.438150 0
+ -0.477304 3.800646 0
+ 0.615176 2.377496 0
+ 0.544568 -2.993905 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -2.474005 1.487989 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.272858 3.693080 0
+ -0.394407 2.438150 0
+ 0.322696 3.800646 0
+ 1.415176 2.377496 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 2.726572 1.028361 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 2.545715 -1.487989 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.344568 -2.993905 0
+ 0.663320 -3.728935 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.129437 -2.904267 0
+ -2.724991 -3.316601 0
+ -2.276802 -2.079599 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -2.617426 0.376479 0
+ -3.585515 1.452133 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.624046 3.752650 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 2.964278 1.624046 0
+ 3.815719 0.930279 0
+ 2.317039 -0.075089 0
+ 3.689580 -1.576744 0
+ 2.664697 -1.813255 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.687116 -3.579208 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.434837 -3.547673 0
+ -1.426696 -1.877231 0
+ -3.295394 -2.317813 0
+ -2.916976 -1.009116 0
+ -1.748507 -0.278903 0
+ -3.074650 -0.252279 0
+ -3.705347 0.630697 0
+ -1.201428 0.825982 0
+ -3.153487 2.443952 0
+ -0.922525 2.166861 0
+ -0.972167 3.888667 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.220496 -1.308698 0 -2.928480 -1.276517 0
+ L3 26624 0.000000 -3.078659 -1.877231 0 -2.595942 -1.759234 0
+ L3 26624 0.000000 -0.986887 -3.164475 0 -0.911798 -2.274131 0
+ L3 26624 0.000000 -0.911798 -2.274131 0 -1.448150 -2.907026 0
+ L3 26624 0.000000 1.276517 -3.196656 0 1.362333 -2.445764 0
+ L3 26624 0.000000 1.362333 -2.445764 0 1.769961 -2.907026 0
+ L3 26624 0.000000 3.067932 -1.651963 0 2.070318 -1.190701 0
+ L3 26624 0.000000 2.070318 -1.190701 0 3.067932 -0.954706 0
+ L3 26624 0.000000 2.789029 0.675803 0 2.038136 0.686530 0
+ L3 26624 0.000000 2.038136 0.686530 0 2.660304 1.523239 0
+ L3 26624 0.000000 1.909412 2.531580 0 1.083430 1.812869 0
+ L3 26624 0.000000 1.083430 1.812869 0 1.104885 3.121567 0
+ L3 26624 0.000000 -0.386173 3.336108 0 -0.396900 2.231223 0
+ L3 26624 0.000000 -0.396900 2.231223 0 -0.933252 2.692486 0
+ L3 26624 0.000000 -0.514898 -2.359948 0 -0.643622 -1.812869 0
+ L3 26624 0.000000 0.868890 -2.499399 0 0.879617 -1.866504 0
+ L3 26624 0.000000 1.673417 -2.145407 0 1.169247 -1.727052 0
+ L3 26624 0.000000 1.941593 -1.641236 0 1.394514 -0.858163 0
+ L3 26624 0.000000 2.510126 -0.450535 0 1.834323 -0.632895 0
+ L3 26624 0.000000 2.574488 0.182360 0 1.458877 0.343265 0
+ L3 26624 0.000000 1.566147 0.793801 0 2.091772 1.544693 0
+ L3 26624 0.000000 1.673417 1.759234 0 0.825982 1.137066 0
+ L3 26624 0.000000 0.665076 1.491058 0 0.450535 2.145407 0
+ L3 26624 0.000000 0.032181 2.134680 0 -0.117997 1.276517 0
+ L3 26624 0.000000 -0.868890 1.941593 0 -0.632895 1.094157 0
+ L3 26624 0.000000 -1.641236 -0.311084 0 -0.858163 0.075089 0
+ L3 26624 0.000000 -0.697257 -1.061976 0 -0.353992 -0.386173 0
+ L3 26624 0.000000 0.536352 -1.587601 0 0.150178 -0.858163 0
+ L3 26624 0.000000 1.029795 -1.169247 0 0.579260 -0.697257 0
+ L3 26624 0.000000 1.426696 -0.311084 0 0.568533 -0.171633 0
+ L3 26624 0.000000 0.922525 0.568533 0 0.396900 0.246722 0
+ L3 26624 0.000000 0.107270 0.804528 0 0.139451 0.396900 0
+ L3 26624 0.000000 -0.160906 0.268176 0 -0.493444 0.718711 0
+ L3 26624 0.000000 -0.654349 -0.278903 0 -0.203814 -0.021454 0
+ L3 26624 0.000000 0.343265 -0.547079 0 0.128724 -0.117997 0
+ L3 26624 0.000000 -1.955328 -0.693379 0 -2.482296 -0.956863 0
+ L3 26624 0.000000 -2.440694 0.568571 0 -1.775050 0.360557 0
+ L3 26624 0.000000 -1.927593 2.066269 0 -1.331287 1.885991 0
+ F4 32768 0.000000 4 0
+ -1.802785 -1.067803 0
+ -1.456096 -0.665644 0
+ -0.845922 -0.429895 0
+ -1.234214 -0.929128 0
+ F4 32768 0.000000 4 0
+ -1.636374 0.568571 0
+ -0.887525 0.637909 0
+ -0.554703 0.332822 0
+ -1.164876 0.346689 0
+ F4 32768 0.000000 4 0
+ -0.818187 -1.345155 0
+ -0.942995 -1.788917 0
+ -1.400625 -2.010799 0
+ -1.275817 -1.650242 0
+ F4 32768 0.000000 4 0
+ -2.718045 -0.013868 0
+ -2.121739 -0.152543 0
+ -1.469963 0.055470 0
+ -2.135607 0.166411 0
+ F4 32768 0.000000 4 0
+ -2.246548 -1.761182 0
+ -1.913726 -1.428360 0
+ -1.400625 -1.317420 0
+ -1.691844 -1.650242 0
+ F4 32768 0.000000 4 0
+ -1.899858 1.830520 0
+ -1.456096 1.372890 0
+ -0.942995 1.178744 0
+ -1.442228 1.677977 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 10"" Conifer-10a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -1.348629 3.808097 0
+ -0.170850 4.661169 0
+ 0.680710 3.742381 0
+ 0.768970 -2.971870 0
+ -0.596630 -4.750807 0
+ -1.493008 -3.047688 0
+ -2.591072 -4.616350 0
+ -3.024728 -2.869482 0
+ -4.486286 -3.513104 0
+ -4.092507 -1.859986 0
+ -5.481893 -1.815167 0
+ -4.271782 -0.470599 0
+ -5.813757 0.000000 0
+ -4.687418 0.496125 0
+ -5.545581 1.381106 0
+ -3.846002 2.599498 0
+ -4.406239 4.145751 0
+ -2.411796 3.630334 0
+ -1.643622 4.733304 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -3.092507 -1.859986 0
+ -3.486286 -3.513104 0
+ -2.024728 -2.869482 0
+ -1.591072 -4.616350 0
+ -0.493008 -3.047688 0
+ 0.403370 -4.750807 0
+ 1.768970 -2.971870 0
+ 3.204701 -4.022638 0
+ 2.641532 -2.534262 0
+ 3.408216 -1.285452 0
+ 4.706486 -0.348629 0
+ 3.767871 0.522943 0
+ 4.652851 1.783369 0
+ 3.182144 1.859986 0
+ 2.896299 2.507444 0
+ 2.856073 3.955594 0
+ 1.680710 3.742381 0
+ 0.829150 4.661169 0
+ -0.348629 3.808097 0
+ -0.643622 4.733304 0
+ -1.411796 3.630334 0
+ -3.406239 4.145751 0
+ -2.846002 2.599498 0
+ -4.545581 1.381106 0
+ -3.687418 0.496125 0
+ -4.813757 0.000000 0
+ -3.271782 -0.470599 0
+ -4.481893 -1.815167 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.670440 -3.137657 0
+ 2.030057 -4.690812 0
+ 2.507444 -3.526512 0
+ 2.105180 -1.957684 0
+ 3.705347 -2.030057 0
+ 4.769649 -1.162848 0
+ 2.896299 0.093862 0
+ 4.611975 1.970929 0
+ 3.330871 2.266569 0
+ 2.373356 2.051545 0
+ 2.319721 3.285154 0
+ 2.108894 4.474010 0
+ 0.630213 2.896299 0
+ -0.522943 3.057205 0
+ -0.791119 3.674009 0
+ -1.793546 4.434591 0
+ -1.783369 2.346539 0
+ -4.119242 2.897266 0
+ -3.646219 1.261395 0
+ -2.185633 0.348629 0
+ -3.843312 0.315349 0
+ -4.631684 -0.788372 0
+ -1.501785 -1.032477 0
+ -3.941859 -3.054941 0
+ -1.153156 -2.708576 0
+ -1.215208 -4.860833 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.775620 1.635873 0 -3.660600 1.595646 0
+ L3 26624 0.000000 -3.848324 2.346539 0 -3.244928 2.199042 0
+ L3 26624 0.000000 -1.233609 3.955594 0 -1.139747 2.842664 0
+ L3 26624 0.000000 -1.139747 2.842664 0 -1.810187 3.633783 0
+ L3 26624 0.000000 1.595646 3.995820 0 1.702917 3.057205 0
+ L3 26624 0.000000 1.702917 3.057205 0 2.212451 3.633783 0
+ L3 26624 0.000000 3.834915 2.064954 0 2.587897 1.488376 0
+ L3 26624 0.000000 2.587897 1.488376 0 3.834915 1.193383 0
+ L3 26624 0.000000 3.486286 -0.844754 0 2.547671 -0.858163 0
+ L3 26624 0.000000 2.547671 -0.858163 0 3.325381 -1.904049 0
+ L3 26624 0.000000 2.386765 -3.164475 0 1.354288 -2.266086 0
+ L3 26624 0.000000 1.354288 -2.266086 0 1.381106 -3.901959 0
+ L3 26624 0.000000 -0.482717 -4.170135 0 -0.496125 -2.789029 0
+ L3 26624 0.000000 -0.496125 -2.789029 0 -1.166565 -3.365607 0
+ L3 26624 0.000000 -0.643622 2.949934 0 -0.804528 2.266086 0
+ L3 26624 0.000000 1.086112 3.124249 0 1.099521 2.333130 0
+ L3 26624 0.000000 2.091772 2.681759 0 1.461558 2.158816 0
+ L3 26624 0.000000 2.426991 2.051545 0 1.743143 1.072703 0
+ L3 26624 0.000000 3.137657 0.563169 0 2.292904 0.791119 0
+ L3 26624 0.000000 3.218110 -0.227949 0 1.823596 -0.429081 0
+ L3 26624 0.000000 1.957684 -0.992251 0 2.614715 -1.930866 0
+ L3 26624 0.000000 2.091772 -2.199042 0 1.032477 -1.421332 0
+ L3 26624 0.000000 0.831345 -1.863822 0 0.563169 -2.681759 0
+ L3 26624 0.000000 0.040226 -2.668350 0 -0.147497 -1.595646 0
+ L3 26624 0.000000 -1.086112 -2.426991 0 -0.791119 -1.367697 0
+ L3 26624 0.000000 -2.051545 0.388855 0 -1.072703 -0.093862 0
+ L3 26624 0.000000 -0.871572 1.327470 0 -0.442490 0.482717 0
+ L3 26624 0.000000 0.670440 1.984501 0 0.187723 1.072703 0
+ L3 26624 0.000000 1.287244 1.461558 0 0.724075 0.871572 0
+ L3 26624 0.000000 1.783369 0.388855 0 0.710666 0.214541 0
+ L3 26624 0.000000 1.153156 -0.710666 0 0.496125 -0.308402 0
+ L3 26624 0.000000 0.134088 -1.005659 0 0.174314 -0.496125 0
+ L3 26624 0.000000 -0.201132 -0.335220 0 -0.616804 -0.898389 0
+ L3 26624 0.000000 -0.817936 0.348629 0 -0.254767 0.026818 0
+ L3 26624 0.000000 0.429081 0.683848 0 0.160906 0.147497 0
+ L3 26624 0.000000 -2.444160 0.866724 0 -3.102870 1.196079 0
+ L3 26624 0.000000 -3.050867 -0.710713 0 -2.218812 -0.450696 0
+ L3 26624 0.000000 -2.409492 -2.582836 0 -1.664109 -2.357488 0
+ F4 32768 0.000000 4 0
+ -2.253481 1.334754 0
+ -1.820120 0.832055 0
+ -1.057403 0.537369 0
+ -1.542768 1.161410 0
+ F4 32768 0.000000 4 0
+ -2.045468 -0.710713 0
+ -1.109406 -0.797386 0
+ -0.693379 -0.416027 0
+ -1.456096 -0.433362 0
+ F4 32768 0.000000 4 0
+ -1.022734 1.681444 0
+ -1.178744 2.236147 0
+ -1.750782 2.513498 0
+ -1.594771 2.062802 0
+ F4 32768 0.000000 4 0
+ -3.397556 0.017334 0
+ -2.652174 0.190679 0
+ -1.837454 -0.069338 0
+ -2.669509 -0.208014 0
+ F4 32768 0.000000 4 0
+ -2.808184 2.201478 0
+ -2.392157 1.785451 0
+ -1.750782 1.646775 0
+ -2.114806 2.062802 0
+ F4 32768 0.000000 4 0
+ -2.374823 -2.288150 0
+ -1.820120 -1.716113 0
+ -1.178744 -1.473430 0
+ -1.802785 -2.097471 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 10"" Conifer-10b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.170850 -4.661169 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -2.411796 -3.630334 0
+ -4.406239 -4.145751 0
+ -3.846002 -2.599498 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -4.271782 0.470599 0
+ -5.481893 1.815167 0
+ -4.092507 1.859986 0
+ -4.486286 3.513104 0
+ -3.024728 2.869482 0
+ -2.591072 4.616350 0
+ -1.493008 3.047688 0
+ -0.596630 4.750807 0
+ 0.768970 2.971870 0
+ 0.680710 -3.742381 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -3.092507 1.859986 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.591072 4.616350 0
+ -0.493008 3.047688 0
+ 0.403370 4.750807 0
+ 1.768970 2.971870 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 3.408216 1.285452 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.182144 -1.859986 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.680710 -3.742381 0
+ 0.829150 -4.661169 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -1.411796 -3.630334 0
+ -3.406239 -4.145751 0
+ -2.846002 -2.599498 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -3.271782 0.470599 0
+ -4.481893 1.815167 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.670440 3.137657 0
+ 2.030057 4.690812 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.705347 2.030057 0
+ 4.769649 1.162848 0
+ 2.896299 -0.093862 0
+ 4.611975 -1.970929 0
+ 3.330871 -2.266569 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 2.108894 -4.474010 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.793546 -4.434591 0
+ -1.783369 -2.346539 0
+ -4.119242 -2.897266 0
+ -3.646219 -1.261395 0
+ -2.185633 -0.348629 0
+ -3.843312 -0.315349 0
+ -4.631684 0.788372 0
+ -1.501785 1.032477 0
+ -3.941859 3.054941 0
+ -1.153156 2.708576 0
+ -1.215208 4.860833 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.775620 -1.635873 0 -3.660600 -1.595646 0
+ L3 26624 0.000000 -3.848324 -2.346539 0 -3.244928 -2.199042 0
+ L3 26624 0.000000 -1.233609 -3.955594 0 -1.139747 -2.842664 0
+ L3 26624 0.000000 -1.139747 -2.842664 0 -1.810187 -3.633783 0
+ L3 26624 0.000000 1.595646 -3.995820 0 1.702917 -3.057205 0
+ L3 26624 0.000000 1.702917 -3.057205 0 2.212451 -3.633783 0
+ L3 26624 0.000000 3.834915 -2.064954 0 2.587897 -1.488376 0
+ L3 26624 0.000000 2.587897 -1.488376 0 3.834915 -1.193383 0
+ L3 26624 0.000000 3.486286 0.844754 0 2.547671 0.858163 0
+ L3 26624 0.000000 2.547671 0.858163 0 3.325381 1.904049 0
+ L3 26624 0.000000 2.386765 3.164475 0 1.354288 2.266086 0
+ L3 26624 0.000000 1.354288 2.266086 0 1.381106 3.901959 0
+ L3 26624 0.000000 -0.482717 4.170135 0 -0.496125 2.789029 0
+ L3 26624 0.000000 -0.496125 2.789029 0 -1.166565 3.365607 0
+ L3 26624 0.000000 -0.643622 -2.949934 0 -0.804528 -2.266086 0
+ L3 26624 0.000000 1.086112 -3.124249 0 1.099521 -2.333130 0
+ L3 26624 0.000000 2.091772 -2.681759 0 1.461558 -2.158816 0
+ L3 26624 0.000000 2.426991 -2.051545 0 1.743143 -1.072703 0
+ L3 26624 0.000000 3.137657 -0.563169 0 2.292904 -0.791119 0
+ L3 26624 0.000000 3.218110 0.227949 0 1.823596 0.429081 0
+ L3 26624 0.000000 1.957684 0.992251 0 2.614715 1.930866 0
+ L3 26624 0.000000 2.091772 2.199042 0 1.032477 1.421332 0
+ L3 26624 0.000000 0.831345 1.863822 0 0.563169 2.681759 0
+ L3 26624 0.000000 0.040226 2.668350 0 -0.147497 1.595646 0
+ L3 26624 0.000000 -1.086112 2.426991 0 -0.791119 1.367697 0
+ L3 26624 0.000000 -2.051545 -0.388855 0 -1.072703 0.093862 0
+ L3 26624 0.000000 -0.871572 -1.327470 0 -0.442490 -0.482717 0
+ L3 26624 0.000000 0.670440 -1.984501 0 0.187723 -1.072703 0
+ L3 26624 0.000000 1.287244 -1.461558 0 0.724075 -0.871572 0
+ L3 26624 0.000000 1.783369 -0.388855 0 0.710666 -0.214541 0
+ L3 26624 0.000000 1.153156 0.710666 0 0.496125 0.308402 0
+ L3 26624 0.000000 0.134088 1.005659 0 0.174314 0.496125 0
+ L3 26624 0.000000 -0.201132 0.335220 0 -0.616804 0.898389 0
+ L3 26624 0.000000 -0.817936 -0.348629 0 -0.254767 -0.026818 0
+ L3 26624 0.000000 0.429081 -0.683848 0 0.160906 -0.147497 0
+ L3 26624 0.000000 -2.444160 -0.866724 0 -3.102870 -1.196079 0
+ L3 26624 0.000000 -3.050867 0.710713 0 -2.218812 0.450696 0
+ L3 26624 0.000000 -2.409492 2.582836 0 -1.664109 2.357488 0
+ F4 32768 0.000000 4 0
+ -2.253481 -1.334754 0
+ -1.820120 -0.832055 0
+ -1.057403 -0.537369 0
+ -1.542768 -1.161410 0
+ F4 32768 0.000000 4 0
+ -2.045468 0.710713 0
+ -1.109406 0.797386 0
+ -0.693379 0.416027 0
+ -1.456096 0.433362 0
+ F4 32768 0.000000 4 0
+ -1.022734 -1.681444 0
+ -1.178744 -2.236147 0
+ -1.750782 -2.513498 0
+ -1.594771 -2.062802 0
+ F4 32768 0.000000 4 0
+ -3.397556 -0.017334 0
+ -2.652174 -0.190679 0
+ -1.837454 0.069338 0
+ -2.669509 0.208014 0
+ F4 32768 0.000000 4 0
+ -2.808184 -2.201478 0
+ -2.392157 -1.785451 0
+ -1.750782 -1.646775 0
+ -2.114806 -2.062802 0
+ F4 32768 0.000000 4 0
+ -2.374823 2.288150 0
+ -1.820120 1.716113 0
+ -1.178744 1.473430 0
+ -1.802785 2.097471 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 12"" Conifer-12a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -1.618354 4.569717 0
+ -0.205020 5.593403 0
+ 0.816852 4.490857 0
+ 0.922764 -3.566244 0
+ -0.715956 -5.700969 0
+ -1.791610 -3.657225 0
+ -3.109287 -5.539620 0
+ -3.629673 -3.443378 0
+ -5.383543 -4.215724 0
+ -4.911008 -2.231983 0
+ -6.578272 -2.178200 0
+ -5.126139 -0.564719 0
+ -6.976508 0.000000 0
+ -5.624902 0.595350 0
+ -6.654697 1.657327 0
+ -4.615203 3.119398 0
+ -5.287487 4.974902 0
+ -2.894156 4.356400 0
+ -1.972346 5.679965 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -3.711008 -2.231983 0
+ -4.183543 -4.215724 0
+ -2.429673 -3.443378 0
+ -1.909287 -5.539620 0
+ -0.591610 -3.657225 0
+ 0.484044 -5.700969 0
+ 2.122764 -3.566244 0
+ 3.845642 -4.827165 0
+ 3.169839 -3.041114 0
+ 4.089859 -1.542542 0
+ 5.647783 -0.418354 0
+ 4.521445 0.627531 0
+ 5.583421 2.140043 0
+ 3.818573 2.231983 0
+ 3.475559 3.008933 0
+ 3.427287 4.746713 0
+ 2.016852 4.490857 0
+ 0.994980 5.593403 0
+ -0.418354 4.569717 0
+ -0.772346 5.679965 0
+ -1.694156 4.356400 0
+ -4.087487 4.974902 0
+ -3.415203 3.119398 0
+ -5.454697 1.657327 0
+ -4.424902 0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 -0.564719 0
+ -5.378272 -2.178200 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.804528 -3.765189 0
+ 2.436069 -5.628974 0
+ 3.008933 -4.231815 0
+ 2.526217 -2.349220 0
+ 4.446417 -2.436069 0
+ 5.723579 -1.395418 0
+ 3.475559 0.112634 0
+ 5.534370 2.365115 0
+ 3.997045 2.719883 0
+ 2.848028 2.461854 0
+ 2.783665 3.942185 0
+ 2.530673 5.368812 0
+ 0.756256 3.475559 0
+ -0.627531 3.668646 0
+ -0.949343 4.408811 0
+ -2.152255 5.321509 0
+ -2.140043 2.815846 0
+ -4.943091 3.476719 0
+ -4.375463 1.513674 0
+ -2.622760 0.418354 0
+ -4.611975 0.378418 0
+ -5.558021 -0.946046 0
+ -1.802142 -1.238972 0
+ -4.730231 -3.665929 0
+ -1.383787 -3.250291 0
+ -1.458250 -5.833000 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -3.330744 1.963047 0 -4.392720 1.914776 0
+ L3 26624 0.000000 -4.617988 2.815846 0 -3.893913 2.638850 0
+ L3 26624 0.000000 -1.480331 4.746713 0 -1.367697 3.411197 0
+ L3 26624 0.000000 -1.367697 3.411197 0 -2.172224 4.360539 0
+ L3 26624 0.000000 1.914776 4.794984 0 2.043500 3.668646 0
+ L3 26624 0.000000 2.043500 3.668646 0 2.654941 4.360539 0
+ L3 26624 0.000000 4.601898 2.477945 0 3.105476 1.786051 0
+ L3 26624 0.000000 3.105476 1.786051 0 4.601898 1.432059 0
+ L3 26624 0.000000 4.183543 -1.013705 0 3.057205 -1.029795 0
+ L3 26624 0.000000 3.057205 -1.029795 0 3.990457 -2.284858 0
+ L3 26624 0.000000 2.864118 -3.797370 0 1.625146 -2.719303 0
+ L3 26624 0.000000 1.625146 -2.719303 0 1.657327 -4.682350 0
+ L3 26624 0.000000 -0.579260 -5.004161 0 -0.595350 -3.346835 0
+ L3 26624 0.000000 -0.595350 -3.346835 0 -1.399878 -4.038728 0
+ L3 26624 0.000000 -0.772346 3.539921 0 -0.965433 2.719303 0
+ L3 26624 0.000000 1.303335 3.749098 0 1.319425 2.799756 0
+ L3 26624 0.000000 2.510126 3.218110 0 1.753870 2.590579 0
+ L3 26624 0.000000 2.912390 2.461854 0 2.091772 1.287244 0
+ L3 26624 0.000000 3.765189 0.675803 0 2.751484 0.949343 0
+ L3 26624 0.000000 3.861732 -0.273539 0 2.188315 -0.514898 0
+ L3 26624 0.000000 2.349220 -1.190701 0 3.137657 -2.317039 0
+ L3 26624 0.000000 2.510126 -2.638850 0 1.238972 -1.705598 0
+ L3 26624 0.000000 0.997614 -2.236587 0 0.675803 -3.218110 0
+ L3 26624 0.000000 0.048272 -3.202020 0 -0.176996 -1.914776 0
+ L3 26624 0.000000 -1.303335 -2.912390 0 -0.949343 -1.641236 0
+ L3 26624 0.000000 -2.461854 0.466626 0 -1.287244 -0.112634 0
+ L3 26624 0.000000 -1.045886 1.592965 0 -0.530988 0.579260 0
+ L3 26624 0.000000 0.804528 2.381402 0 0.225268 1.287244 0
+ L3 26624 0.000000 1.544693 1.753870 0 0.868890 1.045886 0
+ L3 26624 0.000000 2.140043 0.466626 0 0.852799 0.257449 0
+ L3 26624 0.000000 1.383787 -0.852799 0 0.595350 -0.370083 0
+ L3 26624 0.000000 0.160906 -1.206791 0 0.209177 -0.595350 0
+ L3 26624 0.000000 -0.241358 -0.402264 0 -0.740165 -1.078067 0
+ L3 26624 0.000000 -0.981524 0.418354 0 -0.305720 0.032181 0
+ L3 26624 0.000000 0.514898 0.820618 0 0.193087 0.176996 0
+ L3 26624 0.000000 -2.932993 1.040068 0 -3.723444 1.435294 0
+ L3 26624 0.000000 -3.661040 -0.852856 0 -2.662575 -0.540836 0
+ L3 26624 0.000000 -2.891390 -3.099404 0 -1.996931 -2.828986 0
+ F4 32768 0.000000 4 0
+ -2.704178 1.601705 0
+ -2.184143 0.998466 0
+ -1.268883 0.644842 0
+ -1.851322 1.393692 0
+ F4 32768 0.000000 4 0
+ -2.454561 -0.852856 0
+ -1.331287 -0.956863 0
+ -0.832055 -0.499233 0
+ -1.747315 -0.520034 0
+ F4 32768 0.000000 4 0
+ -1.227281 2.017732 0
+ -1.414493 2.683376 0
+ -2.100938 3.016198 0
+ -1.913726 2.475363 0
+ F4 32768 0.000000 4 0
+ -4.077068 0.020801 0
+ -3.182609 0.228815 0
+ -2.204945 -0.083205 0
+ -3.203410 -0.249616 0
+ F4 32768 0.000000 4 0
+ -3.369821 2.641773 0
+ -2.870588 2.142541 0
+ -2.100938 1.976130 0
+ -2.537767 2.475363 0
+ F4 32768 0.000000 4 0
+ -2.849787 -2.745780 0
+ -2.184143 -2.059335 0
+ -1.414493 -1.768116 0
+ -2.163342 -2.516965 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 12"" Conifer-12b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.205020 -5.593403 0
+ -1.618354 -4.569717 0
+ -1.972346 -5.679965 0
+ -2.894156 -4.356400 0
+ -5.287487 -4.974902 0
+ -4.615203 -3.119398 0
+ -6.654697 -1.657327 0
+ -5.624902 -0.595350 0
+ -6.976508 0.000000 0
+ -5.126139 0.564719 0
+ -6.578272 2.178200 0
+ -4.911008 2.231983 0
+ -5.383543 4.215724 0
+ -3.629673 3.443378 0
+ -3.109287 5.539620 0
+ -1.791610 3.657225 0
+ -0.715956 5.700969 0
+ 0.922764 3.566244 0
+ 0.816852 -4.490857 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -3.711008 2.231983 0
+ -4.183543 4.215724 0
+ -2.429673 3.443378 0
+ -1.909287 5.539620 0
+ -0.591610 3.657225 0
+ 0.484044 5.700969 0
+ 2.122764 3.566244 0
+ 3.845642 4.827165 0
+ 3.169839 3.041114 0
+ 4.089859 1.542542 0
+ 5.647783 0.418354 0
+ 4.521445 -0.627531 0
+ 5.583421 -2.140043 0
+ 3.818573 -2.231983 0
+ 3.475559 -3.008933 0
+ 3.427287 -4.746713 0
+ 2.016852 -4.490857 0
+ 0.994980 -5.593403 0
+ -0.418354 -4.569717 0
+ -0.772346 -5.679965 0
+ -1.694156 -4.356400 0
+ -4.087487 -4.974902 0
+ -3.415203 -3.119398 0
+ -5.454697 -1.657327 0
+ -4.424902 -0.595350 0
+ -5.776508 0.000000 0
+ -3.926139 0.564719 0
+ -5.378272 2.178200 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.804528 3.765189 0
+ 2.436069 5.628974 0
+ 3.008933 4.231815 0
+ 2.526217 2.349220 0
+ 4.446417 2.436069 0
+ 5.723579 1.395418 0
+ 3.475559 -0.112634 0
+ 5.534370 -2.365115 0
+ 3.997045 -2.719883 0
+ 2.848028 -2.461854 0
+ 2.783665 -3.942185 0
+ 2.530673 -5.368812 0
+ 0.756256 -3.475559 0
+ -0.627531 -3.668646 0
+ -0.949343 -4.408811 0
+ -2.152255 -5.321509 0
+ -2.140043 -2.815846 0
+ -4.943091 -3.476719 0
+ -4.375463 -1.513674 0
+ -2.622760 -0.418354 0
+ -4.611975 -0.378418 0
+ -5.558021 0.946046 0
+ -1.802142 1.238972 0
+ -4.730231 3.665929 0
+ -1.383787 3.250291 0
+ -1.458250 5.833000 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -3.330744 -1.963047 0 -4.392720 -1.914776 0
+ L3 26624 0.000000 -4.617988 -2.815846 0 -3.893913 -2.638850 0
+ L3 26624 0.000000 -1.480331 -4.746713 0 -1.367697 -3.411197 0
+ L3 26624 0.000000 -1.367697 -3.411197 0 -2.172224 -4.360539 0
+ L3 26624 0.000000 1.914776 -4.794984 0 2.043500 -3.668646 0
+ L3 26624 0.000000 2.043500 -3.668646 0 2.654941 -4.360539 0
+ L3 26624 0.000000 4.601898 -2.477945 0 3.105476 -1.786051 0
+ L3 26624 0.000000 3.105476 -1.786051 0 4.601898 -1.432059 0
+ L3 26624 0.000000 4.183543 1.013705 0 3.057205 1.029795 0
+ L3 26624 0.000000 3.057205 1.029795 0 3.990457 2.284858 0
+ L3 26624 0.000000 2.864118 3.797370 0 1.625146 2.719303 0
+ L3 26624 0.000000 1.625146 2.719303 0 1.657327 4.682350 0
+ L3 26624 0.000000 -0.579260 5.004161 0 -0.595350 3.346835 0
+ L3 26624 0.000000 -0.595350 3.346835 0 -1.399878 4.038728 0
+ L3 26624 0.000000 -0.772346 -3.539921 0 -0.965433 -2.719303 0
+ L3 26624 0.000000 1.303335 -3.749098 0 1.319425 -2.799756 0
+ L3 26624 0.000000 2.510126 -3.218110 0 1.753870 -2.590579 0
+ L3 26624 0.000000 2.912390 -2.461854 0 2.091772 -1.287244 0
+ L3 26624 0.000000 3.765189 -0.675803 0 2.751484 -0.949343 0
+ L3 26624 0.000000 3.861732 0.273539 0 2.188315 0.514898 0
+ L3 26624 0.000000 2.349220 1.190701 0 3.137657 2.317039 0
+ L3 26624 0.000000 2.510126 2.638850 0 1.238972 1.705598 0
+ L3 26624 0.000000 0.997614 2.236587 0 0.675803 3.218110 0
+ L3 26624 0.000000 0.048272 3.202020 0 -0.176996 1.914776 0
+ L3 26624 0.000000 -1.303335 2.912390 0 -0.949343 1.641236 0
+ L3 26624 0.000000 -2.461854 -0.466626 0 -1.287244 0.112634 0
+ L3 26624 0.000000 -1.045886 -1.592965 0 -0.530988 -0.579260 0
+ L3 26624 0.000000 0.804528 -2.381402 0 0.225268 -1.287244 0
+ L3 26624 0.000000 1.544693 -1.753870 0 0.868890 -1.045886 0
+ L3 26624 0.000000 2.140043 -0.466626 0 0.852799 -0.257449 0
+ L3 26624 0.000000 1.383787 0.852799 0 0.595350 0.370083 0
+ L3 26624 0.000000 0.160906 1.206791 0 0.209177 0.595350 0
+ L3 26624 0.000000 -0.241358 0.402264 0 -0.740165 1.078067 0
+ L3 26624 0.000000 -0.981524 -0.418354 0 -0.305720 -0.032181 0
+ L3 26624 0.000000 0.514898 -0.820618 0 0.193087 -0.176996 0
+ L3 26624 0.000000 -2.932993 -1.040068 0 -3.723444 -1.435294 0
+ L3 26624 0.000000 -3.661040 0.852856 0 -2.662575 0.540836 0
+ L3 26624 0.000000 -2.891390 3.099404 0 -1.996931 2.828986 0
+ F4 32768 0.000000 4 0
+ -2.704178 -1.601705 0
+ -2.184143 -0.998466 0
+ -1.268883 -0.644842 0
+ -1.851322 -1.393692 0
+ F4 32768 0.000000 4 0
+ -2.454561 0.852856 0
+ -1.331287 0.956863 0
+ -0.832055 0.499233 0
+ -1.747315 0.520034 0
+ F4 32768 0.000000 4 0
+ -1.227281 -2.017732 0
+ -1.414493 -2.683376 0
+ -2.100938 -3.016198 0
+ -1.913726 -2.475363 0
+ F4 32768 0.000000 4 0
+ -4.077068 -0.020801 0
+ -3.182609 -0.228815 0
+ -2.204945 0.083205 0
+ -3.203410 0.249616 0
+ F4 32768 0.000000 4 0
+ -3.369821 -2.641773 0
+ -2.870588 -2.142541 0
+ -2.100938 -1.976130 0
+ -2.537767 -2.475363 0
+ F4 32768 0.000000 4 0
+ -2.849787 2.745780 0
+ -2.184143 2.059335 0
+ -1.414493 1.768116 0
+ -2.163342 2.516965 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 14"" Conifer-14a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -1.888080 5.331336 0
+ -0.239190 6.525637 0
+ 0.952994 5.239333 0
+ 1.076558 -4.160617 0
+ -0.835281 -6.651130 0
+ -2.090212 -4.266763 0
+ -3.627501 -6.462890 0
+ -4.234619 -4.017274 0
+ -6.280801 -4.918345 0
+ -5.729509 -2.603980 0
+ -7.674651 -2.541234 0
+ -5.980495 -0.658838 0
+ -8.139259 0.000000 0
+ -6.562385 0.694575 0
+ -7.763813 1.933548 0
+ -5.384403 3.639298 0
+ -6.168735 5.804052 0
+ -3.376515 5.082467 0
+ -2.301071 6.626625 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -4.329509 -2.603980 0
+ -4.880801 -4.918345 0
+ -2.834619 -4.017274 0
+ -2.227501 -6.462890 0
+ -0.690212 -4.266763 0
+ 0.564719 -6.651130 0
+ 2.476558 -4.160617 0
+ 4.486582 -5.631693 0
+ 3.698145 -3.547967 0
+ 4.771502 -1.799632 0
+ 6.589081 -0.488080 0
+ 5.275019 0.732120 0
+ 6.513991 2.496717 0
+ 4.455002 2.603980 0
+ 4.054819 3.510422 0
+ 3.998502 5.537831 0
+ 2.352994 5.239333 0
+ 1.160810 6.525637 0
+ -0.488080 5.331336 0
+ -0.901071 6.626625 0
+ -1.976515 5.082467 0
+ -4.768735 5.804052 0
+ -3.984403 3.639298 0
+ -6.363813 1.933548 0
+ -5.162385 0.694575 0
+ -6.739259 0.000000 0
+ -4.580495 -0.658838 0
+ -6.274651 -2.541234 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.938615 -4.392720 0
+ 2.842080 -6.567137 0
+ 3.510422 -4.937117 0
+ 2.947253 -2.740757 0
+ 5.187486 -2.842080 0
+ 6.677509 -1.627988 0
+ 4.054819 0.131406 0
+ 6.456765 2.759301 0
+ 4.663219 3.173196 0
+ 3.322699 2.872163 0
+ 3.247610 4.599216 0
+ 2.952452 6.263614 0
+ 0.882299 4.054819 0
+ -0.732120 4.280087 0
+ -1.107566 5.143613 0
+ -2.510964 6.208428 0
+ -2.496717 3.285154 0
+ -5.766939 4.056173 0
+ -5.104707 1.765953 0
+ -3.059886 0.488080 0
+ -5.380637 0.441488 0
+ -6.484358 -1.103720 0
+ -2.102499 -1.445468 0
+ -5.518602 -4.276917 0
+ -1.614419 -3.792007 0
+ -1.701292 -6.805167 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -3.885868 2.290222 0 -5.124841 2.233905 0
+ L3 26624 0.000000 -5.387653 3.285154 0 -4.542899 3.078659 0
+ L3 26624 0.000000 -1.727052 5.537831 0 -1.595646 3.979730 0
+ L3 26624 0.000000 -1.595646 3.979730 0 -2.534262 5.087296 0
+ L3 26624 0.000000 2.233905 5.594148 0 2.384083 4.280087 0
+ L3 26624 0.000000 2.384083 4.280087 0 3.097431 5.087296 0
+ L3 26624 0.000000 5.368881 2.890936 0 3.623056 2.083726 0
+ L3 26624 0.000000 3.623056 2.083726 0 5.368881 1.670736 0
+ L3 26624 0.000000 4.880801 -1.182656 0 3.566739 -1.201428 0
+ L3 26624 0.000000 3.566739 -1.201428 0 4.655533 -2.665668 0
+ L3 26624 0.000000 3.341471 -4.430265 0 1.896003 -3.172520 0
+ L3 26624 0.000000 1.896003 -3.172520 0 1.933548 -5.462742 0
+ L3 26624 0.000000 -0.675803 -5.838188 0 -0.694575 -3.904640 0
+ L3 26624 0.000000 -0.694575 -3.904640 0 -1.633191 -4.711850 0
+ L3 26624 0.000000 -0.901071 4.129908 0 -1.126339 3.172520 0
+ L3 26624 0.000000 1.520557 4.373948 0 1.539329 3.266382 0
+ L3 26624 0.000000 2.928480 3.754462 0 2.046182 3.022342 0
+ L3 26624 0.000000 3.397788 2.872163 0 2.440400 1.501785 0
+ L3 26624 0.000000 4.392720 0.788437 0 3.210065 1.107566 0
+ L3 26624 0.000000 4.505354 -0.319129 0 2.553034 -0.600714 0
+ L3 26624 0.000000 2.740757 -1.389151 0 3.660600 -2.703213 0
+ L3 26624 0.000000 2.928480 -3.078659 0 1.445468 -1.989865 0
+ L3 26624 0.000000 1.163883 -2.609351 0 0.788437 -3.754462 0
+ L3 26624 0.000000 0.056317 -3.735690 0 -0.206495 -2.233905 0
+ L3 26624 0.000000 -1.520557 -3.397788 0 -1.107566 -1.914776 0
+ L3 26624 0.000000 -2.872163 0.544397 0 -1.501785 -0.131406 0
+ L3 26624 0.000000 -1.220200 1.858459 0 -0.619486 0.675803 0
+ L3 26624 0.000000 0.938615 2.778302 0 0.262812 1.501785 0
+ L3 26624 0.000000 1.802142 2.046182 0 1.013705 1.220200 0
+ L3 26624 0.000000 2.496717 0.544397 0 0.994932 0.300357 0
+ L3 26624 0.000000 1.614419 -0.994932 0 0.694575 -0.431763 0
+ L3 26624 0.000000 0.187723 -1.407923 0 0.244040 -0.694575 0
+ L3 26624 0.000000 -0.281585 -0.469308 0 -0.863526 -1.257745 0
+ L3 26624 0.000000 -1.145111 0.488080 0 -0.356674 0.037545 0
+ L3 26624 0.000000 0.600714 0.957388 0 0.225268 0.206495 0
+ L3 26624 0.000000 -3.421825 1.213413 0 -4.344019 1.674510 0
+ L3 26624 0.000000 -4.271214 -0.994999 0 -3.106337 -0.630975 0
+ L3 26624 0.000000 -3.373288 -3.615971 0 -2.329753 -3.300483 0
+ F4 32768 0.000000 4 0
+ -3.154874 1.868656 0
+ -2.548167 1.164876 0
+ -1.480364 0.752316 0
+ -2.159875 1.625973 0
+ F4 32768 0.000000 4 0
+ -2.863655 -0.994999 0
+ -1.553169 -1.116340 0
+ -0.970730 -0.582438 0
+ -2.038534 -0.606707 0
+ F4 32768 0.000000 4 0
+ -1.431827 2.354021 0
+ -1.650242 3.130606 0
+ -2.451094 3.518898 0
+ -2.232680 2.887923 0
+ F4 32768 0.000000 4 0
+ -4.756579 0.024268 0
+ -3.713044 0.266951 0
+ -2.572436 -0.097073 0
+ -3.737312 -0.291219 0
+ F4 32768 0.000000 4 0
+ -3.931458 3.082069 0
+ -3.349020 2.499631 0
+ -2.451094 2.305485 0
+ -2.960728 2.887923 0
+ F4 32768 0.000000 4 0
+ -3.324752 -3.203410 0
+ -2.548167 -2.402558 0
+ -1.650242 -2.062802 0
+ -2.523899 -2.936459 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 14"" Conifer-14b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.239190 -6.525637 0
+ -1.888080 -5.331336 0
+ -2.301071 -6.626625 0
+ -3.376515 -5.082467 0
+ -6.168735 -5.804052 0
+ -5.384403 -3.639298 0
+ -7.763813 -1.933548 0
+ -6.562385 -0.694575 0
+ -8.139259 0.000000 0
+ -5.980495 0.658838 0
+ -7.674651 2.541234 0
+ -5.729509 2.603980 0
+ -6.280801 4.918345 0
+ -4.234619 4.017274 0
+ -3.627501 6.462890 0
+ -2.090212 4.266763 0
+ -0.835281 6.651130 0
+ 1.076558 4.160617 0
+ 0.952994 -5.239333 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -4.329509 2.603980 0
+ -4.880801 4.918345 0
+ -2.834619 4.017274 0
+ -2.227501 6.462890 0
+ -0.690212 4.266763 0
+ 0.564719 6.651130 0
+ 2.476558 4.160617 0
+ 4.486582 5.631693 0
+ 3.698145 3.547967 0
+ 4.771502 1.799632 0
+ 6.589081 0.488080 0
+ 5.275019 -0.732120 0
+ 6.513991 -2.496717 0
+ 4.455002 -2.603980 0
+ 4.054819 -3.510422 0
+ 3.998502 -5.537831 0
+ 2.352994 -5.239333 0
+ 1.160810 -6.525637 0
+ -0.488080 -5.331336 0
+ -0.901071 -6.626625 0
+ -1.976515 -5.082467 0
+ -4.768735 -5.804052 0
+ -3.984403 -3.639298 0
+ -6.363813 -1.933548 0
+ -5.162385 -0.694575 0
+ -6.739259 0.000000 0
+ -4.580495 0.658838 0
+ -6.274651 2.541234 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.938615 4.392720 0
+ 2.842080 6.567137 0
+ 3.510422 4.937117 0
+ 2.947253 2.740757 0
+ 5.187486 2.842080 0
+ 6.677509 1.627988 0
+ 4.054819 -0.131406 0
+ 6.456765 -2.759301 0
+ 4.663219 -3.173196 0
+ 3.322699 -2.872163 0
+ 3.247610 -4.599216 0
+ 2.952452 -6.263614 0
+ 0.882299 -4.054819 0
+ -0.732120 -4.280087 0
+ -1.107566 -5.143613 0
+ -2.510964 -6.208428 0
+ -2.496717 -3.285154 0
+ -5.766939 -4.056173 0
+ -5.104707 -1.765953 0
+ -3.059886 -0.488080 0
+ -5.380637 -0.441488 0
+ -6.484358 1.103720 0
+ -2.102499 1.445468 0
+ -5.518602 4.276917 0
+ -1.614419 3.792007 0
+ -1.701292 6.805167 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -3.885868 -2.290222 0 -5.124841 -2.233905 0
+ L3 26624 0.000000 -5.387653 -3.285154 0 -4.542899 -3.078659 0
+ L3 26624 0.000000 -1.727052 -5.537831 0 -1.595646 -3.979730 0
+ L3 26624 0.000000 -1.595646 -3.979730 0 -2.534262 -5.087296 0
+ L3 26624 0.000000 2.233905 -5.594148 0 2.384083 -4.280087 0
+ L3 26624 0.000000 2.384083 -4.280087 0 3.097431 -5.087296 0
+ L3 26624 0.000000 5.368881 -2.890936 0 3.623056 -2.083726 0
+ L3 26624 0.000000 3.623056 -2.083726 0 5.368881 -1.670736 0
+ L3 26624 0.000000 4.880801 1.182656 0 3.566739 1.201428 0
+ L3 26624 0.000000 3.566739 1.201428 0 4.655533 2.665668 0
+ L3 26624 0.000000 3.341471 4.430265 0 1.896003 3.172520 0
+ L3 26624 0.000000 1.896003 3.172520 0 1.933548 5.462742 0
+ L3 26624 0.000000 -0.675803 5.838188 0 -0.694575 3.904640 0
+ L3 26624 0.000000 -0.694575 3.904640 0 -1.633191 4.711850 0
+ L3 26624 0.000000 -0.901071 -4.129908 0 -1.126339 -3.172520 0
+ L3 26624 0.000000 1.520557 -4.373948 0 1.539329 -3.266382 0
+ L3 26624 0.000000 2.928480 -3.754462 0 2.046182 -3.022342 0
+ L3 26624 0.000000 3.397788 -2.872163 0 2.440400 -1.501785 0
+ L3 26624 0.000000 4.392720 -0.788437 0 3.210065 -1.107566 0
+ L3 26624 0.000000 4.505354 0.319129 0 2.553034 0.600714 0
+ L3 26624 0.000000 2.740757 1.389151 0 3.660600 2.703213 0
+ L3 26624 0.000000 2.928480 3.078659 0 1.445468 1.989865 0
+ L3 26624 0.000000 1.163883 2.609351 0 0.788437 3.754462 0
+ L3 26624 0.000000 0.056317 3.735690 0 -0.206495 2.233905 0
+ L3 26624 0.000000 -1.520557 3.397788 0 -1.107566 1.914776 0
+ L3 26624 0.000000 -2.872163 -0.544397 0 -1.501785 0.131406 0
+ L3 26624 0.000000 -1.220200 -1.858459 0 -0.619486 -0.675803 0
+ L3 26624 0.000000 0.938615 -2.778302 0 0.262812 -1.501785 0
+ L3 26624 0.000000 1.802142 -2.046182 0 1.013705 -1.220200 0
+ L3 26624 0.000000 2.496717 -0.544397 0 0.994932 -0.300357 0
+ L3 26624 0.000000 1.614419 0.994932 0 0.694575 0.431763 0
+ L3 26624 0.000000 0.187723 1.407923 0 0.244040 0.694575 0
+ L3 26624 0.000000 -0.281585 0.469308 0 -0.863526 1.257745 0
+ L3 26624 0.000000 -1.145111 -0.488080 0 -0.356674 -0.037545 0
+ L3 26624 0.000000 0.600714 -0.957388 0 0.225268 -0.206495 0
+ L3 26624 0.000000 -3.421825 -1.213413 0 -4.344019 -1.674510 0
+ L3 26624 0.000000 -4.271214 0.994999 0 -3.106337 0.630975 0
+ L3 26624 0.000000 -3.373288 3.615971 0 -2.329753 3.300483 0
+ F4 32768 0.000000 4 0
+ -3.154874 -1.868656 0
+ -2.548167 -1.164876 0
+ -1.480364 -0.752316 0
+ -2.159875 -1.625973 0
+ F4 32768 0.000000 4 0
+ -2.863655 0.994999 0
+ -1.553169 1.116340 0
+ -0.970730 0.582438 0
+ -2.038534 0.606707 0
+ F4 32768 0.000000 4 0
+ -1.431827 -2.354021 0
+ -1.650242 -3.130606 0
+ -2.451094 -3.518898 0
+ -2.232680 -2.887923 0
+ F4 32768 0.000000 4 0
+ -4.756579 -0.024268 0
+ -3.713044 -0.266951 0
+ -2.572436 0.097073 0
+ -3.737312 0.291219 0
+ F4 32768 0.000000 4 0
+ -3.931458 -3.082069 0
+ -3.349020 -2.499631 0
+ -2.451094 -2.305485 0
+ -2.960728 -2.887923 0
+ F4 32768 0.000000 4 0
+ -3.324752 3.203410 0
+ -2.548167 2.402558 0
+ -1.650242 2.062802 0
+ -2.523899 2.936459 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 16"" Conifer-16a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -2.157806 6.092955 0
+ -0.273360 7.457871 0
+ 1.089136 5.987810 0
+ 1.230352 -4.754991 0
+ -0.954607 -7.601291 0
+ -2.388813 -4.876300 0
+ -4.145715 -7.386160 0
+ -4.839564 -4.591171 0
+ -7.178058 -5.620966 0
+ -6.548010 -2.975977 0
+ -8.771030 -2.904267 0
+ -6.834852 -0.752958 0
+ -9.302011 0.000000 0
+ -7.499869 0.793801 0
+ -8.872929 2.209769 0
+ -6.153604 4.159197 0
+ -7.049982 6.633202 0
+ -3.858874 5.808534 0
+ -2.629795 7.573286 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -4.948010 -2.975977 0
+ -5.578058 -5.620966 0
+ -3.239564 -4.591171 0
+ -2.545715 -7.386160 0
+ -0.788813 -4.876300 0
+ 0.645393 -7.601291 0
+ 2.830352 -4.754991 0
+ 5.127522 -6.436220 0
+ 4.226451 -4.054819 0
+ 5.453145 -2.056722 0
+ 7.530378 -0.557806 0
+ 6.028593 0.836709 0
+ 7.444562 2.853391 0
+ 5.091431 2.975977 0
+ 4.634079 4.011911 0
+ 4.569717 6.328950 0
+ 2.689136 5.987810 0
+ 1.326640 7.457871 0
+ -0.557806 6.092955 0
+ -1.029795 7.573286 0
+ -2.258874 5.808534 0
+ -5.449982 6.633202 0
+ -4.553604 4.159197 0
+ -7.272929 2.209769 0
+ -5.899869 0.793801 0
+ -7.702011 0.000000 0
+ -5.234852 -0.752958 0
+ -7.171030 -2.904267 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.072703 -5.020252 0
+ 3.248092 -7.505299 0
+ 4.011911 -5.642420 0
+ 3.368289 -3.132294 0
+ 5.928556 -3.248092 0
+ 7.631439 -1.860557 0
+ 4.634079 0.150178 0
+ 7.379160 3.153487 0
+ 5.329393 3.626510 0
+ 3.797370 3.282472 0
+ 3.711554 5.256247 0
+ 3.374231 7.158416 0
+ 1.008341 4.634079 0
+ -0.836709 4.891528 0
+ -1.265790 5.878415 0
+ -2.869673 7.095346 0
+ -2.853391 3.754462 0
+ -6.590788 4.635626 0
+ -5.833951 2.018232 0
+ -3.497013 0.557806 0
+ -6.149300 0.504558 0
+ -7.410695 -1.261395 0
+ -2.402856 -1.651963 0
+ -6.306974 -4.887905 0
+ -1.845050 -4.333722 0
+ -1.944333 -7.777333 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -4.440992 2.617396 0 -5.856961 2.553034 0
+ L3 26624 0.000000 -6.157318 3.754462 0 -5.191885 3.518467 0
+ L3 26624 0.000000 -1.973774 6.328950 0 -1.823596 4.548262 0
+ L3 26624 0.000000 -1.823596 4.548262 0 -2.896299 5.814053 0
+ L3 26624 0.000000 2.553034 6.393312 0 2.724667 4.891528 0
+ L3 26624 0.000000 2.724667 4.891528 0 3.539921 5.814053 0
+ L3 26624 0.000000 6.135864 3.303927 0 4.140635 2.381402 0
+ L3 26624 0.000000 4.140635 2.381402 0 6.135864 1.909412 0
+ L3 26624 0.000000 5.578058 -1.351606 0 4.076273 -1.373060 0
+ L3 26624 0.000000 4.076273 -1.373060 0 5.320609 -3.046478 0
+ L3 26624 0.000000 3.818824 -5.063160 0 2.166861 -3.625738 0
+ L3 26624 0.000000 2.166861 -3.625738 0 2.209769 -6.243134 0
+ L3 26624 0.000000 -0.772346 -6.672215 0 -0.793801 -4.462446 0
+ L3 26624 0.000000 -0.793801 -4.462446 0 -1.866504 -5.384971 0
+ L3 26624 0.000000 -1.029795 4.719895 0 -1.287244 3.625738 0
+ L3 26624 0.000000 1.737780 4.998798 0 1.759234 3.733008 0
+ L3 26624 0.000000 3.346835 4.290814 0 2.338493 3.454105 0
+ L3 26624 0.000000 3.883186 3.282472 0 2.789029 1.716325 0
+ L3 26624 0.000000 5.020252 0.901071 0 3.668646 1.265790 0
+ L3 26624 0.000000 5.148976 -0.364719 0 2.917753 -0.686530 0
+ L3 26624 0.000000 3.132294 -1.587601 0 4.183543 -3.089386 0
+ L3 26624 0.000000 3.346835 -3.518467 0 1.651963 -2.274131 0
+ L3 26624 0.000000 1.330152 -2.982115 0 0.901071 -4.290814 0
+ L3 26624 0.000000 0.064362 -4.269360 0 -0.235995 -2.553034 0
+ L3 26624 0.000000 -1.737780 -3.883186 0 -1.265790 -2.188315 0
+ L3 26624 0.000000 -3.282472 0.622168 0 -1.716325 -0.150178 0
+ L3 26624 0.000000 -1.394514 2.123953 0 -0.707984 0.772346 0
+ L3 26624 0.000000 1.072703 3.175202 0 0.300357 1.716325 0
+ L3 26624 0.000000 2.059591 2.338493 0 1.158520 1.394514 0
+ L3 26624 0.000000 2.853391 0.622168 0 1.137066 0.343265 0
+ L3 26624 0.000000 1.845050 -1.137066 0 0.793801 -0.493444 0
+ L3 26624 0.000000 0.214541 -1.609055 0 0.278903 -0.793801 0
+ L3 26624 0.000000 -0.321811 -0.536352 0 -0.986887 -1.437423 0
+ L3 26624 0.000000 -1.308698 0.557806 0 -0.407627 0.042908 0
+ L3 26624 0.000000 0.686530 1.094157 0 0.257449 0.235995 0
+ L3 26624 0.000000 -3.910657 1.386758 0 -4.964593 1.913726 0
+ L3 26624 0.000000 -4.881387 -1.137141 0 -3.550100 -0.721114 0
+ L3 26624 0.000000 -3.855186 -4.132538 0 -2.662575 -3.771981 0
+ F4 32768 0.000000 4 0
+ -3.605570 2.135607 0
+ -2.912191 1.331287 0
+ -1.691844 0.859790 0
+ -2.468429 1.858255 0
+ F4 32768 0.000000 4 0
+ -3.272748 -1.137141 0
+ -1.775050 -1.275817 0
+ -1.109406 -0.665644 0
+ -2.329753 -0.693379 0
+ F4 32768 0.000000 4 0
+ -1.636374 2.690310 0
+ -1.885991 3.577835 0
+ -2.801251 4.021597 0
+ -2.551634 3.300483 0
+ F4 32768 0.000000 4 0
+ -5.436090 0.027735 0
+ -4.243479 0.305087 0
+ -2.939926 -0.110941 0
+ -4.271214 -0.332822 0
+ F4 32768 0.000000 4 0
+ -4.493095 3.522365 0
+ -3.827451 2.856721 0
+ -2.801251 2.634840 0
+ -3.383689 3.300483 0
+ F4 32768 0.000000 4 0
+ -3.799716 -3.661040 0
+ -2.912191 -2.745780 0
+ -1.885991 -2.357488 0
+ -2.884456 -3.355954 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 16"" Conifer-16b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.273360 -7.457871 0
+ -2.157806 -6.092955 0
+ -2.629795 -7.573286 0
+ -3.858874 -5.808534 0
+ -7.049982 -6.633202 0
+ -6.153604 -4.159197 0
+ -8.872929 -2.209769 0
+ -7.499869 -0.793801 0
+ -9.302011 0.000000 0
+ -6.834852 0.752958 0
+ -8.771030 2.904267 0
+ -6.548010 2.975977 0
+ -7.178058 5.620966 0
+ -4.839564 4.591171 0
+ -4.145715 7.386160 0
+ -2.388813 4.876300 0
+ -0.954607 7.601291 0
+ 1.230352 4.754991 0
+ 1.089136 -5.987810 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -4.948010 2.975977 0
+ -5.578058 5.620966 0
+ -3.239564 4.591171 0
+ -2.545715 7.386160 0
+ -0.788813 4.876300 0
+ 0.645393 7.601291 0
+ 2.830352 4.754991 0
+ 5.127522 6.436220 0
+ 4.226451 4.054819 0
+ 5.453145 2.056722 0
+ 7.530378 0.557806 0
+ 6.028593 -0.836709 0
+ 7.444562 -2.853391 0
+ 5.091431 -2.975977 0
+ 4.634079 -4.011911 0
+ 4.569717 -6.328950 0
+ 2.689136 -5.987810 0
+ 1.326640 -7.457871 0
+ -0.557806 -6.092955 0
+ -1.029795 -7.573286 0
+ -2.258874 -5.808534 0
+ -5.449982 -6.633202 0
+ -4.553604 -4.159197 0
+ -7.272929 -2.209769 0
+ -5.899869 -0.793801 0
+ -7.702011 0.000000 0
+ -5.234852 0.752958 0
+ -7.171030 2.904267 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.072703 5.020252 0
+ 3.248092 7.505299 0
+ 4.011911 5.642420 0
+ 3.368289 3.132294 0
+ 5.928556 3.248092 0
+ 7.631439 1.860557 0
+ 4.634079 -0.150178 0
+ 7.379160 -3.153487 0
+ 5.329393 -3.626510 0
+ 3.797370 -3.282472 0
+ 3.711554 -5.256247 0
+ 3.374231 -7.158416 0
+ 1.008341 -4.634079 0
+ -0.836709 -4.891528 0
+ -1.265790 -5.878415 0
+ -2.869673 -7.095346 0
+ -2.853391 -3.754462 0
+ -6.590788 -4.635626 0
+ -5.833951 -2.018232 0
+ -3.497013 -0.557806 0
+ -6.149300 -0.504558 0
+ -7.410695 1.261395 0
+ -2.402856 1.651963 0
+ -6.306974 4.887905 0
+ -1.845050 4.333722 0
+ -1.944333 7.777333 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -4.440992 -2.617396 0 -5.856961 -2.553034 0
+ L3 26624 0.000000 -6.157318 -3.754462 0 -5.191885 -3.518467 0
+ L3 26624 0.000000 -1.973774 -6.328950 0 -1.823596 -4.548262 0
+ L3 26624 0.000000 -1.823596 -4.548262 0 -2.896299 -5.814053 0
+ L3 26624 0.000000 2.553034 -6.393312 0 2.724667 -4.891528 0
+ L3 26624 0.000000 2.724667 -4.891528 0 3.539921 -5.814053 0
+ L3 26624 0.000000 6.135864 -3.303927 0 4.140635 -2.381402 0
+ L3 26624 0.000000 4.140635 -2.381402 0 6.135864 -1.909412 0
+ L3 26624 0.000000 5.578058 1.351606 0 4.076273 1.373060 0
+ L3 26624 0.000000 4.076273 1.373060 0 5.320609 3.046478 0
+ L3 26624 0.000000 3.818824 5.063160 0 2.166861 3.625738 0
+ L3 26624 0.000000 2.166861 3.625738 0 2.209769 6.243134 0
+ L3 26624 0.000000 -0.772346 6.672215 0 -0.793801 4.462446 0
+ L3 26624 0.000000 -0.793801 4.462446 0 -1.866504 5.384971 0
+ L3 26624 0.000000 -1.029795 -4.719895 0 -1.287244 -3.625738 0
+ L3 26624 0.000000 1.737780 -4.998798 0 1.759234 -3.733008 0
+ L3 26624 0.000000 3.346835 -4.290814 0 2.338493 -3.454105 0
+ L3 26624 0.000000 3.883186 -3.282472 0 2.789029 -1.716325 0
+ L3 26624 0.000000 5.020252 -0.901071 0 3.668646 -1.265790 0
+ L3 26624 0.000000 5.148976 0.364719 0 2.917753 0.686530 0
+ L3 26624 0.000000 3.132294 1.587601 0 4.183543 3.089386 0
+ L3 26624 0.000000 3.346835 3.518467 0 1.651963 2.274131 0
+ L3 26624 0.000000 1.330152 2.982115 0 0.901071 4.290814 0
+ L3 26624 0.000000 0.064362 4.269360 0 -0.235995 2.553034 0
+ L3 26624 0.000000 -1.737780 3.883186 0 -1.265790 2.188315 0
+ L3 26624 0.000000 -3.282472 -0.622168 0 -1.716325 0.150178 0
+ L3 26624 0.000000 -1.394514 -2.123953 0 -0.707984 -0.772346 0
+ L3 26624 0.000000 1.072703 -3.175202 0 0.300357 -1.716325 0
+ L3 26624 0.000000 2.059591 -2.338493 0 1.158520 -1.394514 0
+ L3 26624 0.000000 2.853391 -0.622168 0 1.137066 -0.343265 0
+ L3 26624 0.000000 1.845050 1.137066 0 0.793801 0.493444 0
+ L3 26624 0.000000 0.214541 1.609055 0 0.278903 0.793801 0
+ L3 26624 0.000000 -0.321811 0.536352 0 -0.986887 1.437423 0
+ L3 26624 0.000000 -1.308698 -0.557806 0 -0.407627 -0.042908 0
+ L3 26624 0.000000 0.686530 -1.094157 0 0.257449 -0.235995 0
+ L3 26624 0.000000 -3.910657 -1.386758 0 -4.964593 -1.913726 0
+ L3 26624 0.000000 -4.881387 1.137141 0 -3.550100 0.721114 0
+ L3 26624 0.000000 -3.855186 4.132538 0 -2.662575 3.771981 0
+ F4 32768 0.000000 4 0
+ -3.605570 -2.135607 0
+ -2.912191 -1.331287 0
+ -1.691844 -0.859790 0
+ -2.468429 -1.858255 0
+ F4 32768 0.000000 4 0
+ -3.272748 1.137141 0
+ -1.775050 1.275817 0
+ -1.109406 0.665644 0
+ -2.329753 0.693379 0
+ F4 32768 0.000000 4 0
+ -1.636374 -2.690310 0
+ -1.885991 -3.577835 0
+ -2.801251 -4.021597 0
+ -2.551634 -3.300483 0
+ F4 32768 0.000000 4 0
+ -5.436090 -0.027735 0
+ -4.243479 -0.305087 0
+ -2.939926 0.110941 0
+ -4.271214 0.332822 0
+ F4 32768 0.000000 4 0
+ -4.493095 -3.522365 0
+ -3.827451 -2.856721 0
+ -2.801251 -2.634840 0
+ -3.383689 -3.300483 0
+ F4 32768 0.000000 4 0
+ -3.799716 3.661040 0
+ -2.912191 2.745780 0
+ -1.885991 2.357488 0
+ -2.884456 3.355954 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 18"" Conifer-18a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -2.427531 6.854575 0
+ -0.307529 8.390105 0
+ 1.225278 6.736286 0
+ 1.384146 -5.349365 0
+ -1.073933 -8.551453 0
+ -2.687415 -5.485838 0
+ -4.663930 -8.309431 0
+ -5.444510 -5.165067 0
+ -8.075315 -6.323587 0
+ -7.366512 -3.347974 0
+ -9.867408 -3.267300 0
+ -7.689208 -0.847078 0
+ -10.464762 0.000000 0
+ -8.437352 0.893026 0
+ -9.982045 2.485990 0
+ -6.922804 4.679097 0
+ -7.931230 7.462353 0
+ -4.341234 6.534601 0
+ -2.958520 8.519947 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -5.566512 -3.347974 0
+ -6.275315 -6.323587 0
+ -3.644510 -5.165067 0
+ -2.863930 -8.309431 0
+ -0.887415 -5.485838 0
+ 0.726067 -8.551453 0
+ 3.184146 -5.349365 0
+ 5.768463 -7.240748 0
+ 4.754758 -4.561671 0
+ 6.134788 -2.313813 0
+ 8.471675 -0.627531 0
+ 6.782167 0.941297 0
+ 8.375132 3.210065 0
+ 5.727860 3.347974 0
+ 5.213339 4.513400 0
+ 5.140931 7.120069 0
+ 3.025278 6.736286 0
+ 1.492471 8.390105 0
+ -0.627531 6.854575 0
+ -1.158520 8.519947 0
+ -2.541234 6.534601 0
+ -6.131230 7.462353 0
+ -5.122804 4.679097 0
+ -8.182045 2.485990 0
+ -6.637352 0.893026 0
+ -8.664762 0.000000 0
+ -5.889208 -0.847078 0
+ -8.067408 -3.267300 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.206791 -5.647783 0
+ 3.654103 -8.443462 0
+ 4.513400 -6.347722 0
+ 3.789325 -3.523831 0
+ 6.669625 -3.654103 0
+ 8.585369 -2.093127 0
+ 5.213339 0.168951 0
+ 8.301555 3.547673 0
+ 5.995567 4.079824 0
+ 4.272041 3.692782 0
+ 4.175498 5.913278 0
+ 3.796010 8.053218 0
+ 1.134384 5.213339 0
+ -0.941297 5.502969 0
+ -1.424014 6.613217 0
+ -3.228382 7.982264 0
+ -3.210065 4.223770 0
+ -7.414636 5.215079 0
+ -6.563195 2.270511 0
+ -3.934140 0.627531 0
+ -6.917962 0.567628 0
+ -8.337031 -1.419069 0
+ -2.703213 -1.858459 0
+ -7.095346 -5.498893 0
+ -2.075681 -4.875437 0
+ -2.187375 -8.749500 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -4.996116 2.944571 0 -6.589081 2.872163 0
+ L3 26624 0.000000 -6.926982 4.223770 0 -5.840870 3.958276 0
+ L3 26624 0.000000 -2.220496 7.120069 0 -2.051545 5.116795 0
+ L3 26624 0.000000 -2.051545 5.116795 0 -3.258337 6.540809 0
+ L3 26624 0.000000 2.872163 7.192476 0 3.065250 5.502969 0
+ L3 26624 0.000000 3.065250 5.502969 0 3.982411 6.540809 0
+ L3 26624 0.000000 6.902846 3.716917 0 4.658215 2.679077 0
+ L3 26624 0.000000 4.658215 2.679077 0 6.902846 2.148089 0
+ L3 26624 0.000000 6.275315 -1.520557 0 4.585807 -1.544693 0
+ L3 26624 0.000000 4.585807 -1.544693 0 5.985685 -3.427287 0
+ L3 26624 0.000000 4.296177 -5.696055 0 2.437719 -4.078955 0
+ L3 26624 0.000000 2.437719 -4.078955 0 2.485990 -7.023526 0
+ L3 26624 0.000000 -0.868890 -7.506242 0 -0.893026 -5.020252 0
+ L3 26624 0.000000 -0.893026 -5.020252 0 -2.099817 -6.058093 0
+ L3 26624 0.000000 -1.158520 5.309882 0 -1.448150 4.078955 0
+ L3 26624 0.000000 1.955002 5.623648 0 1.979138 4.199634 0
+ L3 26624 0.000000 3.765189 4.827165 0 2.630805 3.885868 0
+ L3 26624 0.000000 4.368585 3.692782 0 3.137657 1.930866 0
+ L3 26624 0.000000 5.647783 1.013705 0 4.127226 1.424014 0
+ L3 26624 0.000000 5.792598 -0.410309 0 3.282472 -0.772346 0
+ L3 26624 0.000000 3.523831 -1.786051 0 4.706486 -3.475559 0
+ L3 26624 0.000000 3.765189 -3.958276 0 1.858459 -2.558398 0
+ L3 26624 0.000000 1.496421 -3.354880 0 1.013705 -4.827165 0
+ L3 26624 0.000000 0.072407 -4.803030 0 -0.265494 -2.872163 0
+ L3 26624 0.000000 -1.955002 -4.368585 0 -1.424014 -2.461854 0
+ L3 26624 0.000000 -3.692782 0.699939 0 -1.930866 -0.168951 0
+ L3 26624 0.000000 -1.568829 2.389447 0 -0.796482 0.868890 0
+ L3 26624 0.000000 1.206791 3.572102 0 0.337902 1.930866 0
+ L3 26624 0.000000 2.317039 2.630805 0 1.303335 1.568829 0
+ L3 26624 0.000000 3.210065 0.699939 0 1.279199 0.386173 0
+ L3 26624 0.000000 2.075681 -1.279199 0 0.893026 -0.555124 0
+ L3 26624 0.000000 0.241358 -1.810187 0 0.313766 -0.893026 0
+ L3 26624 0.000000 -0.362037 -0.603396 0 -1.110248 -1.617100 0
+ L3 26624 0.000000 -1.472285 0.627531 0 -0.458581 0.048272 0
+ L3 26624 0.000000 0.772346 1.230927 0 0.289630 0.265494 0
+ L3 26624 0.000000 -4.399489 1.560102 0 -5.585167 2.152941 0
+ L3 26624 0.000000 -5.491561 -1.279284 0 -3.993862 -0.811253 0
+ L3 26624 0.000000 -4.337085 -4.649105 0 -2.995397 -4.243479 0
+ F4 32768 0.000000 4 0
+ -4.056266 2.402558 0
+ -3.276215 1.497698 0
+ -1.903325 0.967264 0
+ -2.776982 2.090537 0
+ F4 32768 0.000000 4 0
+ -3.681842 -1.279284 0
+ -1.996931 -1.435294 0
+ -1.248082 -0.748849 0
+ -2.620972 -0.780051 0
+ F4 32768 0.000000 4 0
+ -1.840921 3.026599 0
+ -2.121739 4.025064 0
+ -3.151407 4.524297 0
+ -2.870588 3.713044 0
+ F4 32768 0.000000 4 0
+ -6.115602 0.031202 0
+ -4.773913 0.343223 0
+ -3.307417 -0.124808 0
+ -4.805116 -0.374425 0
+ F4 32768 0.000000 4 0
+ -5.054732 3.962660 0
+ -4.305883 3.213811 0
+ -3.151407 2.964195 0
+ -3.806650 3.713044 0
+ F4 32768 0.000000 4 0
+ -4.274681 -4.118670 0
+ -3.276215 -3.089003 0
+ -2.121739 -2.652174 0
+ -3.245013 -3.775448 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 18"" Conifer-18b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.307529 -8.390105 0
+ -2.427531 -6.854575 0
+ -2.958520 -8.519947 0
+ -4.341234 -6.534601 0
+ -7.931230 -7.462353 0
+ -6.922804 -4.679097 0
+ -9.982045 -2.485990 0
+ -8.437352 -0.893026 0
+ -10.464762 0.000000 0
+ -7.689208 0.847078 0
+ -9.867408 3.267300 0
+ -7.366512 3.347974 0
+ -8.075315 6.323587 0
+ -5.444510 5.165067 0
+ -4.663930 8.309431 0
+ -2.687415 5.485838 0
+ -1.073933 8.551453 0
+ 1.384146 5.349365 0
+ 1.225278 -6.736286 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -5.566512 3.347974 0
+ -6.275315 6.323587 0
+ -3.644510 5.165067 0
+ -2.863930 8.309431 0
+ -0.887415 5.485838 0
+ 0.726067 8.551453 0
+ 3.184146 5.349365 0
+ 5.768463 7.240748 0
+ 4.754758 4.561671 0
+ 6.134788 2.313813 0
+ 8.471675 0.627531 0
+ 6.782167 -0.941297 0
+ 8.375132 -3.210065 0
+ 5.727860 -3.347974 0
+ 5.213339 -4.513400 0
+ 5.140931 -7.120069 0
+ 3.025278 -6.736286 0
+ 1.492471 -8.390105 0
+ -0.627531 -6.854575 0
+ -1.158520 -8.519947 0
+ -2.541234 -6.534601 0
+ -6.131230 -7.462353 0
+ -5.122804 -4.679097 0
+ -8.182045 -2.485990 0
+ -6.637352 -0.893026 0
+ -8.664762 0.000000 0
+ -5.889208 0.847078 0
+ -8.067408 3.267300 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.206791 5.647783 0
+ 3.654103 8.443462 0
+ 4.513400 6.347722 0
+ 3.789325 3.523831 0
+ 6.669625 3.654103 0
+ 8.585369 2.093127 0
+ 5.213339 -0.168951 0
+ 8.301555 -3.547673 0
+ 5.995567 -4.079824 0
+ 4.272041 -3.692782 0
+ 4.175498 -5.913278 0
+ 3.796010 -8.053218 0
+ 1.134384 -5.213339 0
+ -0.941297 -5.502969 0
+ -1.424014 -6.613217 0
+ -3.228382 -7.982264 0
+ -3.210065 -4.223770 0
+ -7.414636 -5.215079 0
+ -6.563195 -2.270511 0
+ -3.934140 -0.627531 0
+ -6.917962 -0.567628 0
+ -8.337031 1.419069 0
+ -2.703213 1.858459 0
+ -7.095346 5.498893 0
+ -2.075681 4.875437 0
+ -2.187375 8.749500 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -4.996116 -2.944571 0 -6.589081 -2.872163 0
+ L3 26624 0.000000 -6.926982 -4.223770 0 -5.840870 -3.958276 0
+ L3 26624 0.000000 -2.220496 -7.120069 0 -2.051545 -5.116795 0
+ L3 26624 0.000000 -2.051545 -5.116795 0 -3.258337 -6.540809 0
+ L3 26624 0.000000 2.872163 -7.192476 0 3.065250 -5.502969 0
+ L3 26624 0.000000 3.065250 -5.502969 0 3.982411 -6.540809 0
+ L3 26624 0.000000 6.902846 -3.716917 0 4.658215 -2.679077 0
+ L3 26624 0.000000 4.658215 -2.679077 0 6.902846 -2.148089 0
+ L3 26624 0.000000 6.275315 1.520557 0 4.585807 1.544693 0
+ L3 26624 0.000000 4.585807 1.544693 0 5.985685 3.427287 0
+ L3 26624 0.000000 4.296177 5.696055 0 2.437719 4.078955 0
+ L3 26624 0.000000 2.437719 4.078955 0 2.485990 7.023526 0
+ L3 26624 0.000000 -0.868890 7.506242 0 -0.893026 5.020252 0
+ L3 26624 0.000000 -0.893026 5.020252 0 -2.099817 6.058093 0
+ L3 26624 0.000000 -1.158520 -5.309882 0 -1.448150 -4.078955 0
+ L3 26624 0.000000 1.955002 -5.623648 0 1.979138 -4.199634 0
+ L3 26624 0.000000 3.765189 -4.827165 0 2.630805 -3.885868 0
+ L3 26624 0.000000 4.368585 -3.692782 0 3.137657 -1.930866 0
+ L3 26624 0.000000 5.647783 -1.013705 0 4.127226 -1.424014 0
+ L3 26624 0.000000 5.792598 0.410309 0 3.282472 0.772346 0
+ L3 26624 0.000000 3.523831 1.786051 0 4.706486 3.475559 0
+ L3 26624 0.000000 3.765189 3.958276 0 1.858459 2.558398 0
+ L3 26624 0.000000 1.496421 3.354880 0 1.013705 4.827165 0
+ L3 26624 0.000000 0.072407 4.803030 0 -0.265494 2.872163 0
+ L3 26624 0.000000 -1.955002 4.368585 0 -1.424014 2.461854 0
+ L3 26624 0.000000 -3.692782 -0.699939 0 -1.930866 0.168951 0
+ L3 26624 0.000000 -1.568829 -2.389447 0 -0.796482 -0.868890 0
+ L3 26624 0.000000 1.206791 -3.572102 0 0.337902 -1.930866 0
+ L3 26624 0.000000 2.317039 -2.630805 0 1.303335 -1.568829 0
+ L3 26624 0.000000 3.210065 -0.699939 0 1.279199 -0.386173 0
+ L3 26624 0.000000 2.075681 1.279199 0 0.893026 0.555124 0
+ L3 26624 0.000000 0.241358 1.810187 0 0.313766 0.893026 0
+ L3 26624 0.000000 -0.362037 0.603396 0 -1.110248 1.617100 0
+ L3 26624 0.000000 -1.472285 -0.627531 0 -0.458581 -0.048272 0
+ L3 26624 0.000000 0.772346 -1.230927 0 0.289630 -0.265494 0
+ L3 26624 0.000000 -4.399489 -1.560102 0 -5.585167 -2.152941 0
+ L3 26624 0.000000 -5.491561 1.279284 0 -3.993862 0.811253 0
+ L3 26624 0.000000 -4.337085 4.649105 0 -2.995397 4.243479 0
+ F4 32768 0.000000 4 0
+ -4.056266 -2.402558 0
+ -3.276215 -1.497698 0
+ -1.903325 -0.967264 0
+ -2.776982 -2.090537 0
+ F4 32768 0.000000 4 0
+ -3.681842 1.279284 0
+ -1.996931 1.435294 0
+ -1.248082 0.748849 0
+ -2.620972 0.780051 0
+ F4 32768 0.000000 4 0
+ -1.840921 -3.026599 0
+ -2.121739 -4.025064 0
+ -3.151407 -4.524297 0
+ -2.870588 -3.713044 0
+ F4 32768 0.000000 4 0
+ -6.115602 -0.031202 0
+ -4.773913 -0.343223 0
+ -3.307417 0.124808 0
+ -4.805116 0.374425 0
+ F4 32768 0.000000 4 0
+ -5.054732 -3.962660 0
+ -4.305883 -3.213811 0
+ -3.151407 -2.964195 0
+ -3.806650 -3.713044 0
+ F4 32768 0.000000 4 0
+ -4.274681 4.118670 0
+ -3.276215 3.089003 0
+ -2.121739 2.652174 0
+ -3.245013 3.775448 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 20"" Conifer-20a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -2.697257 7.616194 0
+ -0.341699 9.322338 0
+ 1.361420 7.484762 0
+ 1.537940 -5.943739 0
+ -1.193259 -9.501614 0
+ -2.986017 -6.095375 0
+ -5.182144 -9.232701 0
+ -6.049455 -5.738963 0
+ -8.972572 -7.026207 0
+ -8.185013 -3.719972 0
+ -10.963787 -3.630334 0
+ -8.543564 -0.941198 0
+ -11.627513 0.000000 0
+ -9.374836 0.992251 0
+ -11.091161 2.762211 0
+ -7.692005 5.198996 0
+ -8.812478 8.291503 0
+ -4.823593 7.260667 0
+ -3.287244 9.466608 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -6.185013 -3.719972 0
+ -6.972572 -7.026207 0
+ -4.049455 -5.738963 0
+ -3.182144 -9.232701 0
+ -0.986017 -6.095375 0
+ 0.806741 -9.501614 0
+ 3.537940 -5.943739 0
+ 6.409403 -8.045276 0
+ 5.283064 -5.068524 0
+ 6.816431 -2.570903 0
+ 9.412972 -0.697257 0
+ 7.535741 1.045886 0
+ 9.305702 3.566739 0
+ 6.364289 3.719972 0
+ 5.792598 5.014888 0
+ 5.712146 7.911188 0
+ 3.361420 7.484762 0
+ 1.658301 9.322338 0
+ -0.697257 7.616194 0
+ -1.287244 9.466608 0
+ -2.823593 7.260667 0
+ -6.812478 8.291503 0
+ -5.692005 5.198996 0
+ -9.091161 2.762211 0
+ -7.374836 0.992251 0
+ -9.627513 0.000000 0
+ -6.543564 -0.941198 0
+ -8.963787 -3.630334 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.340879 -6.275315 0
+ 4.060115 -9.381624 0
+ 5.014888 -7.053025 0
+ 4.210361 -3.915367 0
+ 7.410695 -4.060115 0
+ 9.539298 -2.325697 0
+ 5.792598 0.187723 0
+ 9.223950 3.941859 0
+ 6.661741 4.533138 0
+ 4.746713 4.103091 0
+ 4.639442 6.570308 0
+ 4.217789 8.948020 0
+ 1.260427 5.792598 0
+ -1.045886 6.114409 0
+ -1.582238 7.348018 0
+ -3.587092 8.869182 0
+ -3.566739 4.693077 0
+ -8.238485 5.794532 0
+ -7.292439 2.522790 0
+ -4.371266 0.697257 0
+ -7.686625 0.630697 0
+ -9.263368 -1.576744 0
+ -3.003570 -2.064954 0
+ -7.883718 -6.109881 0
+ -2.306312 -5.417152 0
+ -2.430417 -9.721667 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -5.551240 3.271745 0 -7.321201 3.191293 0
+ L3 26624 0.000000 -7.696647 4.693077 0 -6.489856 4.398084 0
+ L3 26624 0.000000 -2.467218 7.911188 0 -2.279495 5.685328 0
+ L3 26624 0.000000 -2.279495 5.685328 0 -3.620374 7.267566 0
+ L3 26624 0.000000 3.191293 7.991640 0 3.405833 6.114409 0
+ L3 26624 0.000000 3.405833 6.114409 0 4.424902 7.267566 0
+ L3 26624 0.000000 7.669829 4.129908 0 5.175794 2.976752 0
+ L3 26624 0.000000 5.175794 2.976752 0 7.669829 2.386765 0
+ L3 26624 0.000000 6.972572 -1.689508 0 5.095341 -1.716325 0
+ L3 26624 0.000000 5.095341 -1.716325 0 6.650761 -3.808097 0
+ L3 26624 0.000000 4.773530 -6.328950 0 2.708576 -4.532172 0
+ L3 26624 0.000000 2.708576 -4.532172 0 2.762211 -7.803917 0
+ L3 26624 0.000000 -0.965433 -8.340269 0 -0.992251 -5.578058 0
+ L3 26624 0.000000 -0.992251 -5.578058 0 -2.333130 -6.731214 0
+ L3 26624 0.000000 -1.287244 5.899869 0 -1.609055 4.532172 0
+ L3 26624 0.000000 2.172224 6.248497 0 2.199042 4.666260 0
+ L3 26624 0.000000 4.183543 5.363517 0 2.923117 4.317631 0
+ L3 26624 0.000000 4.853983 4.103091 0 3.486286 2.145407 0
+ L3 26624 0.000000 6.275315 1.126339 0 4.585807 1.582238 0
+ L3 26624 0.000000 6.436220 -0.455899 0 3.647192 -0.858163 0
+ L3 26624 0.000000 3.915367 -1.984501 0 5.229429 -3.861732 0
+ L3 26624 0.000000 4.183543 -4.398084 0 2.064954 -2.842664 0
+ L3 26624 0.000000 1.662690 -3.727644 0 1.126339 -5.363517 0
+ L3 26624 0.000000 0.080453 -5.336699 0 -0.294993 -3.191293 0
+ L3 26624 0.000000 -2.172224 -4.853983 0 -1.582238 -2.735394 0
+ L3 26624 0.000000 -4.103091 0.777710 0 -2.145407 -0.187723 0
+ L3 26624 0.000000 -1.743143 2.654941 0 -0.884980 0.965433 0
+ L3 26624 0.000000 1.340879 3.969003 0 0.375446 2.145407 0
+ L3 26624 0.000000 2.574488 2.923117 0 1.448150 1.743143 0
+ L3 26624 0.000000 3.566739 0.777710 0 1.421332 0.429081 0
+ L3 26624 0.000000 2.306312 -1.421332 0 0.992251 -0.616804 0
+ L3 26624 0.000000 0.268176 -2.011319 0 0.348629 -0.992251 0
+ L3 26624 0.000000 -0.402264 -0.670440 0 -1.233609 -1.796778 0
+ L3 26624 0.000000 -1.635873 0.697257 0 -0.509534 0.053635 0
+ L3 26624 0.000000 0.858163 1.367697 0 0.321811 0.294993 0
+ L3 26624 0.000000 -4.888321 1.733447 0 -6.205741 2.392157 0
+ L3 26624 0.000000 -6.101734 -1.421427 0 -4.437625 -0.901393 0
+ L3 26624 0.000000 -4.818983 -5.165673 0 -3.328219 -4.714976 0
+ F4 32768 0.000000 4 0
+ -4.506963 2.669509 0
+ -3.640239 1.664109 0
+ -2.114806 1.074737 0
+ -3.085536 2.322819 0
+ F4 32768 0.000000 4 0
+ -4.090935 -1.421427 0
+ -2.218812 -1.594771 0
+ -1.386758 -0.832055 0
+ -2.912191 -0.866724 0
+ F4 32768 0.000000 4 0
+ -2.045468 3.362887 0
+ -2.357488 4.472294 0
+ -3.501563 5.026997 0
+ -3.189543 4.125604 0
+ F4 32768 0.000000 4 0
+ -6.795113 0.034669 0
+ -5.304348 0.381358 0
+ -3.674908 -0.138676 0
+ -5.339017 -0.416027 0
+ F4 32768 0.000000 4 0
+ -5.616369 4.402956 0
+ -4.784314 3.570901 0
+ -3.501563 3.293550 0
+ -4.229611 4.125604 0
+ F4 32768 0.000000 4 0
+ -4.749645 -4.576300 0
+ -3.640239 -3.432225 0
+ -2.357488 -2.946860 0
+ -3.605570 -4.194942 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 20"" Conifer-20b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.341699 -9.322338 0
+ -2.697257 -7.616194 0
+ -3.287244 -9.466608 0
+ -4.823593 -7.260667 0
+ -8.812478 -8.291503 0
+ -7.692005 -5.198996 0
+ -11.091161 -2.762211 0
+ -9.374836 -0.992251 0
+ -11.627513 0.000000 0
+ -8.543564 0.941198 0
+ -10.963787 3.630334 0
+ -8.185013 3.719972 0
+ -8.972572 7.026207 0
+ -6.049455 5.738963 0
+ -5.182144 9.232701 0
+ -2.986017 6.095375 0
+ -1.193259 9.501614 0
+ 1.537940 5.943739 0
+ 1.361420 -7.484762 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -6.185013 3.719972 0
+ -6.972572 7.026207 0
+ -4.049455 5.738963 0
+ -3.182144 9.232701 0
+ -0.986017 6.095375 0
+ 0.806741 9.501614 0
+ 3.537940 5.943739 0
+ 6.409403 8.045276 0
+ 5.283064 5.068524 0
+ 6.816431 2.570903 0
+ 9.412972 0.697257 0
+ 7.535741 -1.045886 0
+ 9.305702 -3.566739 0
+ 6.364289 -3.719972 0
+ 5.792598 -5.014888 0
+ 5.712146 -7.911188 0
+ 3.361420 -7.484762 0
+ 1.658301 -9.322338 0
+ -0.697257 -7.616194 0
+ -1.287244 -9.466608 0
+ -2.823593 -7.260667 0
+ -6.812478 -8.291503 0
+ -5.692005 -5.198996 0
+ -9.091161 -2.762211 0
+ -7.374836 -0.992251 0
+ -9.627513 0.000000 0
+ -6.543564 0.941198 0
+ -8.963787 3.630334 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.340879 6.275315 0
+ 4.060115 9.381624 0
+ 5.014888 7.053025 0
+ 4.210361 3.915367 0
+ 7.410695 4.060115 0
+ 9.539298 2.325697 0
+ 5.792598 -0.187723 0
+ 9.223950 -3.941859 0
+ 6.661741 -4.533138 0
+ 4.746713 -4.103091 0
+ 4.639442 -6.570308 0
+ 4.217789 -8.948020 0
+ 1.260427 -5.792598 0
+ -1.045886 -6.114409 0
+ -1.582238 -7.348018 0
+ -3.587092 -8.869182 0
+ -3.566739 -4.693077 0
+ -8.238485 -5.794532 0
+ -7.292439 -2.522790 0
+ -4.371266 -0.697257 0
+ -7.686625 -0.630697 0
+ -9.263368 1.576744 0
+ -3.003570 2.064954 0
+ -7.883718 6.109881 0
+ -2.306312 5.417152 0
+ -2.430417 9.721667 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -5.551240 -3.271745 0 -7.321201 -3.191293 0
+ L3 26624 0.000000 -7.696647 -4.693077 0 -6.489856 -4.398084 0
+ L3 26624 0.000000 -2.467218 -7.911188 0 -2.279495 -5.685328 0
+ L3 26624 0.000000 -2.279495 -5.685328 0 -3.620374 -7.267566 0
+ L3 26624 0.000000 3.191293 -7.991640 0 3.405833 -6.114409 0
+ L3 26624 0.000000 3.405833 -6.114409 0 4.424902 -7.267566 0
+ L3 26624 0.000000 7.669829 -4.129908 0 5.175794 -2.976752 0
+ L3 26624 0.000000 5.175794 -2.976752 0 7.669829 -2.386765 0
+ L3 26624 0.000000 6.972572 1.689508 0 5.095341 1.716325 0
+ L3 26624 0.000000 5.095341 1.716325 0 6.650761 3.808097 0
+ L3 26624 0.000000 4.773530 6.328950 0 2.708576 4.532172 0
+ L3 26624 0.000000 2.708576 4.532172 0 2.762211 7.803917 0
+ L3 26624 0.000000 -0.965433 8.340269 0 -0.992251 5.578058 0
+ L3 26624 0.000000 -0.992251 5.578058 0 -2.333130 6.731214 0
+ L3 26624 0.000000 -1.287244 -5.899869 0 -1.609055 -4.532172 0
+ L3 26624 0.000000 2.172224 -6.248497 0 2.199042 -4.666260 0
+ L3 26624 0.000000 4.183543 -5.363517 0 2.923117 -4.317631 0
+ L3 26624 0.000000 4.853983 -4.103091 0 3.486286 -2.145407 0
+ L3 26624 0.000000 6.275315 -1.126339 0 4.585807 -1.582238 0
+ L3 26624 0.000000 6.436220 0.455899 0 3.647192 0.858163 0
+ L3 26624 0.000000 3.915367 1.984501 0 5.229429 3.861732 0
+ L3 26624 0.000000 4.183543 4.398084 0 2.064954 2.842664 0
+ L3 26624 0.000000 1.662690 3.727644 0 1.126339 5.363517 0
+ L3 26624 0.000000 0.080453 5.336699 0 -0.294993 3.191293 0
+ L3 26624 0.000000 -2.172224 4.853983 0 -1.582238 2.735394 0
+ L3 26624 0.000000 -4.103091 -0.777710 0 -2.145407 0.187723 0
+ L3 26624 0.000000 -1.743143 -2.654941 0 -0.884980 -0.965433 0
+ L3 26624 0.000000 1.340879 -3.969003 0 0.375446 -2.145407 0
+ L3 26624 0.000000 2.574488 -2.923117 0 1.448150 -1.743143 0
+ L3 26624 0.000000 3.566739 -0.777710 0 1.421332 -0.429081 0
+ L3 26624 0.000000 2.306312 1.421332 0 0.992251 0.616804 0
+ L3 26624 0.000000 0.268176 2.011319 0 0.348629 0.992251 0
+ L3 26624 0.000000 -0.402264 0.670440 0 -1.233609 1.796778 0
+ L3 26624 0.000000 -1.635873 -0.697257 0 -0.509534 -0.053635 0
+ L3 26624 0.000000 0.858163 -1.367697 0 0.321811 -0.294993 0
+ L3 26624 0.000000 -4.888321 -1.733447 0 -6.205741 -2.392157 0
+ L3 26624 0.000000 -6.101734 1.421427 0 -4.437625 0.901393 0
+ L3 26624 0.000000 -4.818983 5.165673 0 -3.328219 4.714976 0
+ F4 32768 0.000000 4 0
+ -4.506963 -2.669509 0
+ -3.640239 -1.664109 0
+ -2.114806 -1.074737 0
+ -3.085536 -2.322819 0
+ F4 32768 0.000000 4 0
+ -4.090935 1.421427 0
+ -2.218812 1.594771 0
+ -1.386758 0.832055 0
+ -2.912191 0.866724 0
+ F4 32768 0.000000 4 0
+ -2.045468 -3.362887 0
+ -2.357488 -4.472294 0
+ -3.501563 -5.026997 0
+ -3.189543 -4.125604 0
+ F4 32768 0.000000 4 0
+ -6.795113 -0.034669 0
+ -5.304348 -0.381358 0
+ -3.674908 0.138676 0
+ -5.339017 0.416027 0
+ F4 32768 0.000000 4 0
+ -5.616369 -4.402956 0
+ -4.784314 -3.570901 0
+ -3.501563 -3.293550 0
+ -4.229611 -4.125604 0
+ F4 32768 0.000000 4 0
+ -4.749645 4.576300 0
+ -3.640239 3.432225 0
+ -2.357488 2.946860 0
+ -3.605570 4.194942 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 24"" Conifer-24a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -3.236709 9.139433 0
+ -0.410039 11.186806 0
+ 1.633704 8.981715 0
+ 1.845528 -7.132487 0
+ -1.431911 -11.401937 0
+ -3.583220 -7.314450 0
+ -6.218573 -11.079241 0
+ -7.259346 -6.886756 0
+ -10.767087 -8.431449 0
+ -9.822016 -4.463966 0
+ -13.156544 -4.356400 0
+ -10.252277 -1.129437 0
+ -13.953016 0.000000 0
+ -11.249803 1.190701 0
+ -13.309394 3.314654 0
+ -9.230406 6.238796 0
+ -10.574974 9.949804 0
+ -5.788311 8.712801 0
+ -3.944693 11.359929 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -7.422016 -4.463966 0
+ -8.367087 -8.431449 0
+ -4.859346 -6.886756 0
+ -3.818573 -11.079241 0
+ -1.183220 -7.314450 0
+ 0.968089 -11.401937 0
+ 4.245528 -7.132487 0
+ 7.691283 -9.654331 0
+ 6.339677 -6.082228 0
+ 8.179717 -3.085084 0
+ 11.295567 -0.836709 0
+ 9.042890 1.255063 0
+ 11.166843 4.280087 0
+ 7.637146 4.463966 0
+ 6.951118 6.017866 0
+ 6.854575 9.493425 0
+ 4.033704 8.981715 0
+ 1.989961 11.186806 0
+ -0.836709 9.139433 0
+ -1.544693 11.359929 0
+ -3.388311 8.712801 0
+ -8.174974 9.949804 0
+ -6.830406 6.238796 0
+ -10.909394 3.314654 0
+ -8.849803 1.190701 0
+ -11.553016 0.000000 0
+ -7.852277 -1.129437 0
+ -10.756544 -4.356400 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.609055 -7.530378 0
+ 4.872138 -11.257949 0
+ 6.017866 -8.463630 0
+ 5.052433 -4.698441 0
+ 8.892834 -4.872138 0
+ 11.447158 -2.790836 0
+ 6.951118 0.225268 0
+ 11.068740 4.730231 0
+ 7.994090 5.439765 0
+ 5.696055 4.923709 0
+ 5.567331 7.884370 0
+ 5.061347 10.737623 0
+ 1.512512 6.951118 0
+ -1.255063 7.337291 0
+ -1.898685 8.817622 0
+ -4.304510 10.643019 0
+ -4.280087 5.631693 0
+ -9.886182 6.953439 0
+ -8.750927 3.027348 0
+ -5.245520 0.836709 0
+ -9.223950 0.756837 0
+ -11.116042 -1.892092 0
+ -3.604283 -2.477945 0
+ -9.460461 -7.331857 0
+ -2.767575 -6.500583 0
+ -2.916500 -11.666000 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -6.661488 3.926095 0 -8.785441 3.829551 0
+ L3 26624 0.000000 -9.235976 5.631693 0 -7.787827 5.277701 0
+ L3 26624 0.000000 -2.960661 9.493425 0 -2.735394 6.822394 0
+ L3 26624 0.000000 -2.735394 6.822394 0 -4.344449 8.721079 0
+ L3 26624 0.000000 3.829551 9.589969 0 4.087000 7.337291 0
+ L3 26624 0.000000 4.087000 7.337291 0 5.309882 8.721079 0
+ L3 26624 0.000000 9.203795 4.955890 0 6.210953 3.572102 0
+ L3 26624 0.000000 6.210953 3.572102 0 9.203795 2.864118 0
+ L3 26624 0.000000 8.367087 -2.027409 0 6.114409 -2.059591 0
+ L3 26624 0.000000 6.114409 -2.059591 0 7.980913 -4.569717 0
+ L3 26624 0.000000 5.728236 -7.594740 0 3.250291 -5.438606 0
+ L3 26624 0.000000 3.250291 -5.438606 0 3.314654 -9.364701 0
+ L3 26624 0.000000 -1.158520 -10.008323 0 -1.190701 -6.693669 0
+ L3 26624 0.000000 -1.190701 -6.693669 0 -2.799756 -8.077457 0
+ L3 26624 0.000000 -1.544693 7.079843 0 -1.930866 5.438606 0
+ L3 26624 0.000000 2.606669 7.498197 0 2.638850 5.599512 0
+ L3 26624 0.000000 5.020252 6.436220 0 3.507740 5.181157 0
+ L3 26624 0.000000 5.824780 4.923709 0 4.183543 2.574488 0
+ L3 26624 0.000000 7.530378 1.351606 0 5.502969 1.898685 0
+ L3 26624 0.000000 7.723465 -0.547079 0 4.376630 -1.029795 0
+ L3 26624 0.000000 4.698441 -2.381402 0 6.275315 -4.634079 0
+ L3 26624 0.000000 5.020252 -5.277701 0 2.477945 -3.411197 0
+ L3 26624 0.000000 1.995228 -4.473173 0 1.351606 -6.436220 0
+ L3 26624 0.000000 0.096543 -6.404039 0 -0.353992 -3.829551 0
+ L3 26624 0.000000 -2.606669 -5.824780 0 -1.898685 -3.282472 0
+ L3 26624 0.000000 -4.923709 0.933252 0 -2.574488 -0.225268 0
+ L3 26624 0.000000 -2.091772 3.185929 0 -1.061976 1.158520 0
+ L3 26624 0.000000 1.609055 4.762803 0 0.450535 2.574488 0
+ L3 26624 0.000000 3.089386 3.507740 0 1.737780 2.091772 0
+ L3 26624 0.000000 4.280087 0.933252 0 1.705598 0.514898 0
+ L3 26624 0.000000 2.767575 -1.705598 0 1.190701 -0.740165 0
+ L3 26624 0.000000 0.321811 -2.413583 0 0.418354 -1.190701 0
+ L3 26624 0.000000 -0.482717 -0.804528 0 -1.480331 -2.156134 0
+ L3 26624 0.000000 -1.963047 0.836709 0 -0.611441 0.064362 0
+ L3 26624 0.000000 1.029795 1.641236 0 0.386173 0.353992 0
+ L3 26624 0.000000 -5.865985 2.080137 0 -7.446889 2.870588 0
+ L3 26624 0.000000 -7.322081 -1.705712 0 -5.325150 -1.081671 0
+ L3 26624 0.000000 -5.782780 -6.198807 0 -3.993862 -5.657972 0
+ F4 32768 0.000000 4 0
+ -5.408355 3.203410 0
+ -4.368287 1.996931 0
+ -2.537767 1.289685 0
+ -3.702643 2.787383 0
+ F4 32768 0.000000 4 0
+ -4.909122 -1.705712 0
+ -2.662575 -1.913726 0
+ -1.664109 -0.998466 0
+ -3.494629 -1.040068 0
+ F4 32768 0.000000 4 0
+ -2.454561 4.035465 0
+ -2.828986 5.366752 0
+ -4.201876 6.032396 0
+ -3.827451 4.950725 0
+ F4 32768 0.000000 4 0
+ -8.154135 0.041603 0
+ -6.365218 0.457630 0
+ -4.409890 -0.166411 0
+ -6.406821 -0.499233 0
+ F4 32768 0.000000 4 0
+ -6.739643 5.283547 0
+ -5.741177 4.285081 0
+ -4.201876 3.952260 0
+ -5.075533 4.950725 0
+ F4 32768 0.000000 4 0
+ -5.699574 -5.491561 0
+ -4.368287 -4.118670 0
+ -2.828986 -3.536232 0
+ -4.326684 -5.033931 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 24"" Conifer-24b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.410039 -11.186806 0
+ -3.236709 -9.139433 0
+ -3.944693 -11.359929 0
+ -5.788311 -8.712801 0
+ -10.574974 -9.949804 0
+ -9.230406 -6.238796 0
+ -13.309394 -3.314654 0
+ -11.249803 -1.190701 0
+ -13.953016 0.000000 0
+ -10.252277 1.129437 0
+ -13.156544 4.356400 0
+ -9.822016 4.463966 0
+ -10.767087 8.431449 0
+ -7.259346 6.886756 0
+ -6.218573 11.079241 0
+ -3.583220 7.314450 0
+ -1.431911 11.401937 0
+ 1.845528 7.132487 0
+ 1.633704 -8.981715 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -7.422016 4.463966 0
+ -8.367087 8.431449 0
+ -4.859346 6.886756 0
+ -3.818573 11.079241 0
+ -1.183220 7.314450 0
+ 0.968089 11.401937 0
+ 4.245528 7.132487 0
+ 7.691283 9.654331 0
+ 6.339677 6.082228 0
+ 8.179717 3.085084 0
+ 11.295567 0.836709 0
+ 9.042890 -1.255063 0
+ 11.166843 -4.280087 0
+ 7.637146 -4.463966 0
+ 6.951118 -6.017866 0
+ 6.854575 -9.493425 0
+ 4.033704 -8.981715 0
+ 1.989961 -11.186806 0
+ -0.836709 -9.139433 0
+ -1.544693 -11.359929 0
+ -3.388311 -8.712801 0
+ -8.174974 -9.949804 0
+ -6.830406 -6.238796 0
+ -10.909394 -3.314654 0
+ -8.849803 -1.190701 0
+ -11.553016 0.000000 0
+ -7.852277 1.129437 0
+ -10.756544 4.356400 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.609055 7.530378 0
+ 4.872138 11.257949 0
+ 6.017866 8.463630 0
+ 5.052433 4.698441 0
+ 8.892834 4.872138 0
+ 11.447158 2.790836 0
+ 6.951118 -0.225268 0
+ 11.068740 -4.730231 0
+ 7.994090 -5.439765 0
+ 5.696055 -4.923709 0
+ 5.567331 -7.884370 0
+ 5.061347 -10.737623 0
+ 1.512512 -6.951118 0
+ -1.255063 -7.337291 0
+ -1.898685 -8.817622 0
+ -4.304510 -10.643019 0
+ -4.280087 -5.631693 0
+ -9.886182 -6.953439 0
+ -8.750927 -3.027348 0
+ -5.245520 -0.836709 0
+ -9.223950 -0.756837 0
+ -11.116042 1.892092 0
+ -3.604283 2.477945 0
+ -9.460461 7.331857 0
+ -2.767575 6.500583 0
+ -2.916500 11.666000 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -6.661488 -3.926095 0 -8.785441 -3.829551 0
+ L3 26624 0.000000 -9.235976 -5.631693 0 -7.787827 -5.277701 0
+ L3 26624 0.000000 -2.960661 -9.493425 0 -2.735394 -6.822394 0
+ L3 26624 0.000000 -2.735394 -6.822394 0 -4.344449 -8.721079 0
+ L3 26624 0.000000 3.829551 -9.589969 0 4.087000 -7.337291 0
+ L3 26624 0.000000 4.087000 -7.337291 0 5.309882 -8.721079 0
+ L3 26624 0.000000 9.203795 -4.955890 0 6.210953 -3.572102 0
+ L3 26624 0.000000 6.210953 -3.572102 0 9.203795 -2.864118 0
+ L3 26624 0.000000 8.367087 2.027409 0 6.114409 2.059591 0
+ L3 26624 0.000000 6.114409 2.059591 0 7.980913 4.569717 0
+ L3 26624 0.000000 5.728236 7.594740 0 3.250291 5.438606 0
+ L3 26624 0.000000 3.250291 5.438606 0 3.314654 9.364701 0
+ L3 26624 0.000000 -1.158520 10.008323 0 -1.190701 6.693669 0
+ L3 26624 0.000000 -1.190701 6.693669 0 -2.799756 8.077457 0
+ L3 26624 0.000000 -1.544693 -7.079843 0 -1.930866 -5.438606 0
+ L3 26624 0.000000 2.606669 -7.498197 0 2.638850 -5.599512 0
+ L3 26624 0.000000 5.020252 -6.436220 0 3.507740 -5.181157 0
+ L3 26624 0.000000 5.824780 -4.923709 0 4.183543 -2.574488 0
+ L3 26624 0.000000 7.530378 -1.351606 0 5.502969 -1.898685 0
+ L3 26624 0.000000 7.723465 0.547079 0 4.376630 1.029795 0
+ L3 26624 0.000000 4.698441 2.381402 0 6.275315 4.634079 0
+ L3 26624 0.000000 5.020252 5.277701 0 2.477945 3.411197 0
+ L3 26624 0.000000 1.995228 4.473173 0 1.351606 6.436220 0
+ L3 26624 0.000000 0.096543 6.404039 0 -0.353992 3.829551 0
+ L3 26624 0.000000 -2.606669 5.824780 0 -1.898685 3.282472 0
+ L3 26624 0.000000 -4.923709 -0.933252 0 -2.574488 0.225268 0
+ L3 26624 0.000000 -2.091772 -3.185929 0 -1.061976 -1.158520 0
+ L3 26624 0.000000 1.609055 -4.762803 0 0.450535 -2.574488 0
+ L3 26624 0.000000 3.089386 -3.507740 0 1.737780 -2.091772 0
+ L3 26624 0.000000 4.280087 -0.933252 0 1.705598 -0.514898 0
+ L3 26624 0.000000 2.767575 1.705598 0 1.190701 0.740165 0
+ L3 26624 0.000000 0.321811 2.413583 0 0.418354 1.190701 0
+ L3 26624 0.000000 -0.482717 0.804528 0 -1.480331 2.156134 0
+ L3 26624 0.000000 -1.963047 -0.836709 0 -0.611441 -0.064362 0
+ L3 26624 0.000000 1.029795 -1.641236 0 0.386173 -0.353992 0
+ L3 26624 0.000000 -5.865985 -2.080137 0 -7.446889 -2.870588 0
+ L3 26624 0.000000 -7.322081 1.705712 0 -5.325150 1.081671 0
+ L3 26624 0.000000 -5.782780 6.198807 0 -3.993862 5.657972 0
+ F4 32768 0.000000 4 0
+ -5.408355 -3.203410 0
+ -4.368287 -1.996931 0
+ -2.537767 -1.289685 0
+ -3.702643 -2.787383 0
+ F4 32768 0.000000 4 0
+ -4.909122 1.705712 0
+ -2.662575 1.913726 0
+ -1.664109 0.998466 0
+ -3.494629 1.040068 0
+ F4 32768 0.000000 4 0
+ -2.454561 -4.035465 0
+ -2.828986 -5.366752 0
+ -4.201876 -6.032396 0
+ -3.827451 -4.950725 0
+ F4 32768 0.000000 4 0
+ -8.154135 -0.041603 0
+ -6.365218 -0.457630 0
+ -4.409890 0.166411 0
+ -6.406821 0.499233 0
+ F4 32768 0.000000 4 0
+ -6.739643 -5.283547 0
+ -5.741177 -4.285081 0
+ -4.201876 -3.952260 0
+ -5.075533 -4.950725 0
+ F4 32768 0.000000 4 0
+ -5.699574 5.491561 0
+ -4.368287 4.118670 0
+ -2.828986 3.536232 0
+ -4.326684 5.033931 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 28"" Conifer-28a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -3.776160 10.662672 0
+ -0.478379 13.051274 0
+ 1.905988 10.478667 0
+ 2.153116 -8.321235 0
+ -1.670563 -13.302260 0
+ -4.180423 -8.533525 0
+ -7.255002 -12.925781 0
+ -8.469238 -8.034549 0
+ -12.561601 -9.836690 0
+ -11.459018 -5.207960 0
+ -15.349302 -5.082467 0
+ -11.960990 -1.317677 0
+ -16.278518 0.000000 0
+ -13.124770 1.389151 0
+ -15.527626 3.867096 0
+ -10.768807 7.278595 0
+ -12.337469 11.608104 0
+ -6.753030 10.164934 0
+ -4.602142 13.253251 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -8.659018 -5.207960 0
+ -9.761601 -9.836690 0
+ -5.669238 -8.034549 0
+ -4.455002 -12.925781 0
+ -1.380423 -8.533525 0
+ 1.129437 -13.302260 0
+ 4.953116 -8.321235 0
+ 8.973164 -11.263386 0
+ 7.396290 -7.095933 0
+ 9.543004 -3.599264 0
+ 13.178161 -0.976160 0
+ 10.550038 1.464240 0
+ 13.027983 4.993434 0
+ 8.910004 5.207960 0
+ 8.109638 7.020844 0
+ 7.997004 11.075663 0
+ 4.705988 10.478667 0
+ 2.321621 13.051274 0
+ -0.976160 10.662672 0
+ -1.802142 13.253251 0
+ -3.953030 10.164934 0
+ -9.537469 11.608104 0
+ -7.968807 7.278595 0
+ -12.727626 3.867096 0
+ -10.324770 1.389151 0
+ -13.478518 0.000000 0
+ -9.160990 -1.317677 0
+ -12.549302 -5.082467 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.877231 -8.785441 0
+ 5.684160 -13.134274 0
+ 7.020844 -9.874235 0
+ 5.894505 -5.481514 0
+ 10.374972 -5.684160 0
+ 13.355018 -3.255975 0
+ 8.109638 0.262812 0
+ 12.913530 5.518602 0
+ 9.326438 6.346393 0
+ 6.645398 5.744327 0
+ 6.495219 9.198432 0
+ 5.904905 12.527227 0
+ 1.764597 8.109638 0
+ -1.464240 8.560173 0
+ -2.215133 10.287226 0
+ -5.021928 12.416855 0
+ -4.993434 6.570308 0
+ -11.533879 8.112345 0
+ -10.209414 3.531906 0
+ -6.119773 0.976160 0
+ -10.761275 0.882976 0
+ -12.968716 -2.207441 0
+ -4.204997 -2.890936 0
+ -11.037205 -8.553834 0
+ -3.228837 -7.584013 0
+ -3.402583 -13.610333 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -7.771736 4.580444 0 -10.249681 4.467810 0
+ L3 26624 0.000000 -10.775306 6.570308 0 -9.085798 6.157318 0
+ L3 26624 0.000000 -3.454105 11.075663 0 -3.191293 7.959459 0
+ L3 26624 0.000000 -3.191293 7.959459 0 -5.068524 10.174592 0
+ L3 26624 0.000000 4.467810 11.188297 0 4.768167 8.560173 0
+ L3 26624 0.000000 4.768167 8.560173 0 6.194862 10.174592 0
+ L3 26624 0.000000 10.737761 5.781871 0 7.246112 4.167453 0
+ L3 26624 0.000000 7.246112 4.167453 0 10.737761 3.341471 0
+ L3 26624 0.000000 9.761601 -2.365311 0 7.133478 -2.402856 0
+ L3 26624 0.000000 7.133478 -2.402856 0 9.311066 -5.331336 0
+ L3 26624 0.000000 6.682942 -8.860530 0 3.792007 -6.345041 0
+ L3 26624 0.000000 3.792007 -6.345041 0 3.867096 -10.925484 0
+ L3 26624 0.000000 -1.351606 -11.676377 0 -1.389151 -7.809281 0
+ L3 26624 0.000000 -1.389151 -7.809281 0 -3.266382 -9.423700 0
+ L3 26624 0.000000 -1.802142 8.259816 0 -2.252677 6.345041 0
+ L3 26624 0.000000 3.041114 8.747896 0 3.078659 6.532764 0
+ L3 26624 0.000000 5.856961 7.508924 0 4.092364 6.044684 0
+ L3 26624 0.000000 6.795576 5.744327 0 4.880801 3.003570 0
+ L3 26624 0.000000 8.785441 1.576874 0 6.420130 2.215133 0
+ L3 26624 0.000000 9.010709 -0.638259 0 5.106068 -1.201428 0
+ L3 26624 0.000000 5.481514 -2.778302 0 7.321201 -5.406425 0
+ L3 26624 0.000000 5.856961 -6.157318 0 2.890936 -3.979730 0
+ L3 26624 0.000000 2.327766 -5.218702 0 1.576874 -7.508924 0
+ L3 26624 0.000000 0.112634 -7.471379 0 -0.412991 -4.467810 0
+ L3 26624 0.000000 -3.041114 -6.795576 0 -2.215133 -3.829551 0
+ L3 26624 0.000000 -5.744327 1.088794 0 -3.003570 -0.262812 0
+ L3 26624 0.000000 -2.440400 3.716917 0 -1.238972 1.351606 0
+ L3 26624 0.000000 1.877231 5.556604 0 0.525625 3.003570 0
+ L3 26624 0.000000 3.604283 4.092364 0 2.027409 2.440400 0
+ L3 26624 0.000000 4.993434 1.088794 0 1.989865 0.600714 0
+ L3 26624 0.000000 3.228837 -1.989865 0 1.389151 -0.863526 0
+ L3 26624 0.000000 0.375446 -2.815846 0 0.488080 -1.389151 0
+ L3 26624 0.000000 -0.563169 -0.938615 0 -1.727052 -2.515490 0
+ L3 26624 0.000000 -2.290222 0.976160 0 -0.713348 0.075089 0
+ L3 26624 0.000000 1.201428 1.914776 0 0.450535 0.412991 0
+ L3 26624 0.000000 -6.843649 2.426826 0 -8.688037 3.349020 0
+ L3 26624 0.000000 -8.542428 -1.989997 0 -6.212675 -1.261950 0
+ L3 26624 0.000000 -6.746576 -7.231942 0 -4.659506 -6.600967 0
+ F4 32768 0.000000 4 0
+ -6.309748 3.737312 0
+ -5.096335 2.329753 0
+ -2.960728 1.504632 0
+ -4.319750 3.251947 0
+ F4 32768 0.000000 4 0
+ -5.727309 -1.989997 0
+ -3.106337 -2.232680 0
+ -1.941461 -1.164876 0
+ -4.077068 -1.213413 0
+ F4 32768 0.000000 4 0
+ -2.863655 4.708042 0
+ -3.300483 6.261211 0
+ -4.902189 7.037795 0
+ -4.465360 5.775846 0
+ F4 32768 0.000000 4 0
+ -9.513158 0.048537 0
+ -7.426088 0.533902 0
+ -5.144871 -0.194146 0
+ -7.474624 -0.582438 0
+ F4 32768 0.000000 4 0
+ -7.862916 6.164138 0
+ -6.698040 4.999262 0
+ -4.902189 4.610969 0
+ -5.921455 5.775846 0
+ F4 32768 0.000000 4 0
+ -6.649503 -6.406821 0
+ -5.096335 -4.805116 0
+ -3.300483 -4.125604 0
+ -5.047798 -5.872919 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 28"" Conifer-28b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.478379 -13.051274 0
+ -3.776160 -10.662672 0
+ -4.602142 -13.253251 0
+ -6.753030 -10.164934 0
+ -12.337469 -11.608104 0
+ -10.768807 -7.278595 0
+ -15.527626 -3.867096 0
+ -13.124770 -1.389151 0
+ -16.278518 0.000000 0
+ -11.960990 1.317677 0
+ -15.349302 5.082467 0
+ -11.459018 5.207960 0
+ -12.561601 9.836690 0
+ -8.469238 8.034549 0
+ -7.255002 12.925781 0
+ -4.180423 8.533525 0
+ -1.670563 13.302260 0
+ 2.153116 8.321235 0
+ 1.905988 -10.478667 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -8.659018 5.207960 0
+ -9.761601 9.836690 0
+ -5.669238 8.034549 0
+ -4.455002 12.925781 0
+ -1.380423 8.533525 0
+ 1.129437 13.302260 0
+ 4.953116 8.321235 0
+ 8.973164 11.263386 0
+ 7.396290 7.095933 0
+ 9.543004 3.599264 0
+ 13.178161 0.976160 0
+ 10.550038 -1.464240 0
+ 13.027983 -4.993434 0
+ 8.910004 -5.207960 0
+ 8.109638 -7.020844 0
+ 7.997004 -11.075663 0
+ 4.705988 -10.478667 0
+ 2.321621 -13.051274 0
+ -0.976160 -10.662672 0
+ -1.802142 -13.253251 0
+ -3.953030 -10.164934 0
+ -9.537469 -11.608104 0
+ -7.968807 -7.278595 0
+ -12.727626 -3.867096 0
+ -10.324770 -1.389151 0
+ -13.478518 0.000000 0
+ -9.160990 1.317677 0
+ -12.549302 5.082467 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 1.877231 8.785441 0
+ 5.684160 13.134274 0
+ 7.020844 9.874235 0
+ 5.894505 5.481514 0
+ 10.374972 5.684160 0
+ 13.355018 3.255975 0
+ 8.109638 -0.262812 0
+ 12.913530 -5.518602 0
+ 9.326438 -6.346393 0
+ 6.645398 -5.744327 0
+ 6.495219 -9.198432 0
+ 5.904905 -12.527227 0
+ 1.764597 -8.109638 0
+ -1.464240 -8.560173 0
+ -2.215133 -10.287226 0
+ -5.021928 -12.416855 0
+ -4.993434 -6.570308 0
+ -11.533879 -8.112345 0
+ -10.209414 -3.531906 0
+ -6.119773 -0.976160 0
+ -10.761275 -0.882976 0
+ -12.968716 2.207441 0
+ -4.204997 2.890936 0
+ -11.037205 8.553834 0
+ -3.228837 7.584013 0
+ -3.402583 13.610333 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -7.771736 -4.580444 0 -10.249681 -4.467810 0
+ L3 26624 0.000000 -10.775306 -6.570308 0 -9.085798 -6.157318 0
+ L3 26624 0.000000 -3.454105 -11.075663 0 -3.191293 -7.959459 0
+ L3 26624 0.000000 -3.191293 -7.959459 0 -5.068524 -10.174592 0
+ L3 26624 0.000000 4.467810 -11.188297 0 4.768167 -8.560173 0
+ L3 26624 0.000000 4.768167 -8.560173 0 6.194862 -10.174592 0
+ L3 26624 0.000000 10.737761 -5.781871 0 7.246112 -4.167453 0
+ L3 26624 0.000000 7.246112 -4.167453 0 10.737761 -3.341471 0
+ L3 26624 0.000000 9.761601 2.365311 0 7.133478 2.402856 0
+ L3 26624 0.000000 7.133478 2.402856 0 9.311066 5.331336 0
+ L3 26624 0.000000 6.682942 8.860530 0 3.792007 6.345041 0
+ L3 26624 0.000000 3.792007 6.345041 0 3.867096 10.925484 0
+ L3 26624 0.000000 -1.351606 11.676377 0 -1.389151 7.809281 0
+ L3 26624 0.000000 -1.389151 7.809281 0 -3.266382 9.423700 0
+ L3 26624 0.000000 -1.802142 -8.259816 0 -2.252677 -6.345041 0
+ L3 26624 0.000000 3.041114 -8.747896 0 3.078659 -6.532764 0
+ L3 26624 0.000000 5.856961 -7.508924 0 4.092364 -6.044684 0
+ L3 26624 0.000000 6.795576 -5.744327 0 4.880801 -3.003570 0
+ L3 26624 0.000000 8.785441 -1.576874 0 6.420130 -2.215133 0
+ L3 26624 0.000000 9.010709 0.638259 0 5.106068 1.201428 0
+ L3 26624 0.000000 5.481514 2.778302 0 7.321201 5.406425 0
+ L3 26624 0.000000 5.856961 6.157318 0 2.890936 3.979730 0
+ L3 26624 0.000000 2.327766 5.218702 0 1.576874 7.508924 0
+ L3 26624 0.000000 0.112634 7.471379 0 -0.412991 4.467810 0
+ L3 26624 0.000000 -3.041114 6.795576 0 -2.215133 3.829551 0
+ L3 26624 0.000000 -5.744327 -1.088794 0 -3.003570 0.262812 0
+ L3 26624 0.000000 -2.440400 -3.716917 0 -1.238972 -1.351606 0
+ L3 26624 0.000000 1.877231 -5.556604 0 0.525625 -3.003570 0
+ L3 26624 0.000000 3.604283 -4.092364 0 2.027409 -2.440400 0
+ L3 26624 0.000000 4.993434 -1.088794 0 1.989865 -0.600714 0
+ L3 26624 0.000000 3.228837 1.989865 0 1.389151 0.863526 0
+ L3 26624 0.000000 0.375446 2.815846 0 0.488080 1.389151 0
+ L3 26624 0.000000 -0.563169 0.938615 0 -1.727052 2.515490 0
+ L3 26624 0.000000 -2.290222 -0.976160 0 -0.713348 -0.075089 0
+ L3 26624 0.000000 1.201428 -1.914776 0 0.450535 -0.412991 0
+ L3 26624 0.000000 -6.843649 -2.426826 0 -8.688037 -3.349020 0
+ L3 26624 0.000000 -8.542428 1.989997 0 -6.212675 1.261950 0
+ L3 26624 0.000000 -6.746576 7.231942 0 -4.659506 6.600967 0
+ F4 32768 0.000000 4 0
+ -6.309748 -3.737312 0
+ -5.096335 -2.329753 0
+ -2.960728 -1.504632 0
+ -4.319750 -3.251947 0
+ F4 32768 0.000000 4 0
+ -5.727309 1.989997 0
+ -3.106337 2.232680 0
+ -1.941461 1.164876 0
+ -4.077068 1.213413 0
+ F4 32768 0.000000 4 0
+ -2.863655 -4.708042 0
+ -3.300483 -6.261211 0
+ -4.902189 -7.037795 0
+ -4.465360 -5.775846 0
+ F4 32768 0.000000 4 0
+ -9.513158 -0.048537 0
+ -7.426088 -0.533902 0
+ -5.144871 0.194146 0
+ -7.474624 0.582438 0
+ F4 32768 0.000000 4 0
+ -7.862916 -6.164138 0
+ -6.698040 -4.999262 0
+ -4.902189 -4.610969 0
+ -5.921455 -5.775846 0
+ F4 32768 0.000000 4 0
+ -6.649503 6.406821 0
+ -5.096335 4.805116 0
+ -3.300483 4.125604 0
+ -5.047798 5.872919 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 32"" Conifer-32a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -4.315612 12.185911 0
+ -0.546719 14.915742 0
+ 2.178272 11.975619 0
+ 2.460704 -9.509983 0
+ -1.909215 -15.202583 0
+ -4.777627 -9.752600 0
+ -8.291431 -14.772321 0
+ -9.679129 -9.182341 0
+ -14.356116 -11.241932 0
+ -13.096021 -5.951955 0
+ -17.542059 -5.808534 0
+ -13.669703 -1.505916 0
+ -18.604021 0.000000 0
+ -14.999738 1.587601 0
+ -17.745858 4.419538 0
+ -12.307208 8.318394 0
+ -14.099965 13.266405 0
+ -7.717749 11.617068 0
+ -5.259591 15.146572 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -9.896021 -5.951955 0
+ -11.156116 -11.241932 0
+ -6.479129 -9.182341 0
+ -5.091431 -14.772321 0
+ -1.577627 -9.752600 0
+ 1.290785 -15.202583 0
+ 5.660704 -9.509983 0
+ 10.255045 -12.872441 0
+ 8.452903 -8.109638 0
+ 10.906290 -4.113445 0
+ 15.060756 -1.115612 0
+ 12.057186 1.673417 0
+ 14.889123 5.706782 0
+ 10.182862 5.951955 0
+ 9.268158 8.023822 0
+ 9.139433 12.657900 0
+ 5.378272 11.975619 0
+ 2.653281 14.915742 0
+ -1.115612 12.185911 0
+ -2.059591 15.146572 0
+ -4.517749 11.617068 0
+ -10.899965 13.266405 0
+ -9.107208 8.318394 0
+ -14.545858 4.419538 0
+ -11.799738 1.587601 0
+ -15.404021 0.000000 0
+ -10.469703 -1.505916 0
+ -14.342059 -5.808534 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 2.145407 -10.040504 0
+ 6.496183 -15.010598 0
+ 8.023822 -11.284840 0
+ 6.736577 -6.264588 0
+ 11.857111 -6.496183 0
+ 15.262877 -3.721115 0
+ 9.268158 0.300357 0
+ 14.758319 6.306974 0
+ 10.658786 7.253020 0
+ 7.594740 6.564945 0
+ 7.423108 10.512493 0
+ 6.748462 14.316831 0
+ 2.016682 9.268158 0
+ -1.673417 9.783055 0
+ -2.531580 11.756829 0
+ -5.739346 14.190692 0
+ -5.706782 7.508924 0
+ -13.181576 9.271252 0
+ -11.667902 4.036463 0
+ -6.994026 1.115612 0
+ -12.298600 1.009116 0
+ -14.821389 -2.522790 0
+ -4.805711 -3.303927 0
+ -12.613948 -9.775810 0
+ -3.690100 -8.667444 0
+ -3.888667 -15.554667 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -8.881984 5.234793 0 -11.713921 5.106068 0
+ L3 26624 0.000000 -12.314635 7.508924 0 -10.383769 7.036934 0
+ L3 26624 0.000000 -3.947549 12.657900 0 -3.647192 9.096525 0
+ L3 26624 0.000000 -3.647192 9.096525 0 -5.792598 11.628105 0
+ L3 26624 0.000000 5.106068 12.786625 0 5.449333 9.783055 0
+ L3 26624 0.000000 5.449333 9.783055 0 7.079843 11.628105 0
+ L3 26624 0.000000 12.271727 6.607853 0 8.281270 4.762803 0
+ L3 26624 0.000000 8.281270 4.762803 0 12.271727 3.818824 0
+ L3 26624 0.000000 11.156116 -2.703213 0 8.152546 -2.746121 0
+ L3 26624 0.000000 8.152546 -2.746121 0 10.641218 -6.092955 0
+ L3 26624 0.000000 7.637648 -10.126320 0 4.333722 -7.251475 0
+ L3 26624 0.000000 4.333722 -7.251475 0 4.419538 -12.486268 0
+ L3 26624 0.000000 -1.544693 -13.344430 0 -1.587601 -8.924892 0
+ L3 26624 0.000000 -1.587601 -8.924892 0 -3.733008 -10.769942 0
+ L3 26624 0.000000 -2.059591 9.439790 0 -2.574488 7.251475 0
+ L3 26624 0.000000 3.475559 9.997596 0 3.518467 7.466016 0
+ L3 26624 0.000000 6.693669 8.581627 0 4.676987 6.908210 0
+ L3 26624 0.000000 7.766373 6.564945 0 5.578058 3.432651 0
+ L3 26624 0.000000 10.040504 1.802142 0 7.337291 2.531580 0
+ L3 26624 0.000000 10.297953 -0.729438 0 5.835507 -1.373060 0
+ L3 26624 0.000000 6.264588 -3.175202 0 8.367087 -6.178772 0
+ L3 26624 0.000000 6.693669 -7.036934 0 3.303927 -4.548262 0
+ L3 26624 0.000000 2.660304 -5.964231 0 1.802142 -8.581627 0
+ L3 26624 0.000000 0.128724 -8.538719 0 -0.471990 -5.106068 0
+ L3 26624 0.000000 -3.475559 -7.766373 0 -2.531580 -4.376630 0
+ L3 26624 0.000000 -6.564945 1.244336 0 -3.432651 -0.300357 0
+ L3 26624 0.000000 -2.789029 4.247906 0 -1.415969 1.544693 0
+ L3 26624 0.000000 2.145407 6.350404 0 0.600714 3.432651 0
+ L3 26624 0.000000 4.119181 4.676987 0 2.317039 2.789029 0
+ L3 26624 0.000000 5.706782 1.244336 0 2.274131 0.686530 0
+ L3 26624 0.000000 3.690100 -2.274131 0 1.587601 -0.986887 0
+ L3 26624 0.000000 0.429081 -3.218110 0 0.557806 -1.587601 0
+ L3 26624 0.000000 -0.643622 -1.072703 0 -1.973774 -2.874845 0
+ L3 26624 0.000000 -2.617396 1.115612 0 -0.815255 0.085816 0
+ L3 26624 0.000000 1.373060 2.188315 0 0.514898 0.471990 0
+ L3 26624 0.000000 -7.821314 2.773515 0 -9.929185 3.827451 0
+ L3 26624 0.000000 -9.762774 -2.274283 0 -7.100200 -1.442228 0
+ L3 26624 0.000000 -7.710373 -8.265076 0 -5.325150 -7.543962 0
+ F4 32768 0.000000 4 0
+ -7.211140 4.271214 0
+ -5.824382 2.662575 0
+ -3.383689 1.719580 0
+ -4.936857 3.716511 0
+ F4 32768 0.000000 4 0
+ -6.545496 -2.274283 0
+ -3.550100 -2.551634 0
+ -2.218812 -1.331287 0
+ -4.659506 -1.386758 0
+ F4 32768 0.000000 4 0
+ -3.272748 5.380620 0
+ -3.771981 7.155670 0
+ -5.602501 8.043195 0
+ -5.103268 6.600967 0
+ F4 32768 0.000000 4 0
+ -10.872181 0.055470 0
+ -8.486957 0.610173 0
+ -5.879853 -0.221881 0
+ -8.542428 -0.665644 0
+ F4 32768 0.000000 4 0
+ -8.986190 7.044729 0
+ -7.654903 5.713442 0
+ -5.602501 5.269679 0
+ -6.767378 6.600967 0
+ F4 32768 0.000000 4 0
+ -7.599432 -7.322081 0
+ -5.824382 -5.491561 0
+ -3.771981 -4.714976 0
+ -5.768912 -6.711907 0
+ END$SEGS
+
+STRUCTURE * "Lg Conifer 32"" Conifer-32b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.546719 -14.915742 0
+ -4.315612 -12.185911 0
+ -5.259591 -15.146572 0
+ -7.717749 -11.617068 0
+ -14.099965 -13.266405 0
+ -12.307208 -8.318394 0
+ -17.745858 -4.419538 0
+ -14.999738 -1.587601 0
+ -18.604021 0.000000 0
+ -13.669703 1.505916 0
+ -17.542059 5.808534 0
+ -13.096021 5.951955 0
+ -14.356116 11.241932 0
+ -9.679129 9.182341 0
+ -8.291431 14.772321 0
+ -4.777627 9.752600 0
+ -1.909215 15.202583 0
+ 2.460704 9.509983 0
+ 2.178272 -11.975619 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -9.896021 5.951955 0
+ -11.156116 11.241932 0
+ -6.479129 9.182341 0
+ -5.091431 14.772321 0
+ -1.577627 9.752600 0
+ 1.290785 15.202583 0
+ 5.660704 9.509983 0
+ 10.255045 12.872441 0
+ 8.452903 8.109638 0
+ 10.906290 4.113445 0
+ 15.060756 1.115612 0
+ 12.057186 -1.673417 0
+ 14.889123 -5.706782 0
+ 10.182862 -5.951955 0
+ 9.268158 -8.023822 0
+ 9.139433 -12.657900 0
+ 5.378272 -11.975619 0
+ 2.653281 -14.915742 0
+ -1.115612 -12.185911 0
+ -2.059591 -15.146572 0
+ -4.517749 -11.617068 0
+ -10.899965 -13.266405 0
+ -9.107208 -8.318394 0
+ -14.545858 -4.419538 0
+ -11.799738 -1.587601 0
+ -15.404021 0.000000 0
+ -10.469703 1.505916 0
+ -14.342059 5.808534 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 2.145407 10.040504 0
+ 6.496183 15.010598 0
+ 8.023822 11.284840 0
+ 6.736577 6.264588 0
+ 11.857111 6.496183 0
+ 15.262877 3.721115 0
+ 9.268158 -0.300357 0
+ 14.758319 -6.306974 0
+ 10.658786 -7.253020 0
+ 7.594740 -6.564945 0
+ 7.423108 -10.512493 0
+ 6.748462 -14.316831 0
+ 2.016682 -9.268158 0
+ -1.673417 -9.783055 0
+ -2.531580 -11.756829 0
+ -5.739346 -14.190692 0
+ -5.706782 -7.508924 0
+ -13.181576 -9.271252 0
+ -11.667902 -4.036463 0
+ -6.994026 -1.115612 0
+ -12.298600 -1.009116 0
+ -14.821389 2.522790 0
+ -4.805711 3.303927 0
+ -12.613948 9.775810 0
+ -3.690100 8.667444 0
+ -3.888667 15.554667 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -8.881984 -5.234793 0 -11.713921 -5.106068 0
+ L3 26624 0.000000 -12.314635 -7.508924 0 -10.383769 -7.036934 0
+ L3 26624 0.000000 -3.947549 -12.657900 0 -3.647192 -9.096525 0
+ L3 26624 0.000000 -3.647192 -9.096525 0 -5.792598 -11.628105 0
+ L3 26624 0.000000 5.106068 -12.786625 0 5.449333 -9.783055 0
+ L3 26624 0.000000 5.449333 -9.783055 0 7.079843 -11.628105 0
+ L3 26624 0.000000 12.271727 -6.607853 0 8.281270 -4.762803 0
+ L3 26624 0.000000 8.281270 -4.762803 0 12.271727 -3.818824 0
+ L3 26624 0.000000 11.156116 2.703213 0 8.152546 2.746121 0
+ L3 26624 0.000000 8.152546 2.746121 0 10.641218 6.092955 0
+ L3 26624 0.000000 7.637648 10.126320 0 4.333722 7.251475 0
+ L3 26624 0.000000 4.333722 7.251475 0 4.419538 12.486268 0
+ L3 26624 0.000000 -1.544693 13.344430 0 -1.587601 8.924892 0
+ L3 26624 0.000000 -1.587601 8.924892 0 -3.733008 10.769942 0
+ L3 26624 0.000000 -2.059591 -9.439790 0 -2.574488 -7.251475 0
+ L3 26624 0.000000 3.475559 -9.997596 0 3.518467 -7.466016 0
+ L3 26624 0.000000 6.693669 -8.581627 0 4.676987 -6.908210 0
+ L3 26624 0.000000 7.766373 -6.564945 0 5.578058 -3.432651 0
+ L3 26624 0.000000 10.040504 -1.802142 0 7.337291 -2.531580 0
+ L3 26624 0.000000 10.297953 0.729438 0 5.835507 1.373060 0
+ L3 26624 0.000000 6.264588 3.175202 0 8.367087 6.178772 0
+ L3 26624 0.000000 6.693669 7.036934 0 3.303927 4.548262 0
+ L3 26624 0.000000 2.660304 5.964231 0 1.802142 8.581627 0
+ L3 26624 0.000000 0.128724 8.538719 0 -0.471990 5.106068 0
+ L3 26624 0.000000 -3.475559 7.766373 0 -2.531580 4.376630 0
+ L3 26624 0.000000 -6.564945 -1.244336 0 -3.432651 0.300357 0
+ L3 26624 0.000000 -2.789029 -4.247906 0 -1.415969 -1.544693 0
+ L3 26624 0.000000 2.145407 -6.350404 0 0.600714 -3.432651 0
+ L3 26624 0.000000 4.119181 -4.676987 0 2.317039 -2.789029 0
+ L3 26624 0.000000 5.706782 -1.244336 0 2.274131 -0.686530 0
+ L3 26624 0.000000 3.690100 2.274131 0 1.587601 0.986887 0
+ L3 26624 0.000000 0.429081 3.218110 0 0.557806 1.587601 0
+ L3 26624 0.000000 -0.643622 1.072703 0 -1.973774 2.874845 0
+ L3 26624 0.000000 -2.617396 -1.115612 0 -0.815255 -0.085816 0
+ L3 26624 0.000000 1.373060 -2.188315 0 0.514898 -0.471990 0
+ L3 26624 0.000000 -7.821314 -2.773515 0 -9.929185 -3.827451 0
+ L3 26624 0.000000 -9.762774 2.274283 0 -7.100200 1.442228 0
+ L3 26624 0.000000 -7.710373 8.265076 0 -5.325150 7.543962 0
+ F4 32768 0.000000 4 0
+ -7.211140 -4.271214 0
+ -5.824382 -2.662575 0
+ -3.383689 -1.719580 0
+ -4.936857 -3.716511 0
+ F4 32768 0.000000 4 0
+ -6.545496 2.274283 0
+ -3.550100 2.551634 0
+ -2.218812 1.331287 0
+ -4.659506 1.386758 0
+ F4 32768 0.000000 4 0
+ -3.272748 -5.380620 0
+ -3.771981 -7.155670 0
+ -5.602501 -8.043195 0
+ -5.103268 -6.600967 0
+ F4 32768 0.000000 4 0
+ -10.872181 -0.055470 0
+ -8.486957 -0.610173 0
+ -5.879853 0.221881 0
+ -8.542428 0.665644 0
+ F4 32768 0.000000 4 0
+ -8.986190 -7.044729 0
+ -7.654903 -5.713442 0
+ -5.602501 -5.269679 0
+ -6.767378 -6.600967 0
+ F4 32768 0.000000 4 0
+ -7.599432 7.322081 0
+ -5.824382 5.491561 0
+ -3.771981 4.714976 0
+ -5.768912 6.711907 0
+ END$SEGS
+
diff --git a/app/lib/params/TreeLgDecid.xtp b/app/lib/params/TreeLgDecid.xtp
new file mode 100644
index 0000000..4019a10
--- /dev/null
+++ b/app/lib/params/TreeLgDecid.xtp
@@ -0,0 +1,3483 @@
+CONTENTS Large Deciduous Trees
+
+# DxfToXtp version 0.6 by Russell Shilling 2021
+STRUCTURE * "Lg Decid 8"" Decid-8a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.680517 -3.305367 0 -0.291650 -3.013717 0
+ L3 65280 0.000000 -0.972167 -3.110933 0 -1.069383 -2.624850 0
+ L3 65280 0.000000 -2.235983 -2.041550 0 -1.555467 -2.041550 0
+ L3 65280 0.000000 -2.722067 -1.847117 0 -2.430417 -1.555467 0
+ L3 65280 0.000000 -2.041550 -1.652683 0 -1.652683 -1.361033 0
+ L3 65280 0.000000 -1.847117 -1.069383 0 -2.430417 -0.972167 0
+ L3 65280 0.000000 -3.305367 -0.777733 0 -2.624850 -0.777733 0
+ L3 65280 0.000000 -3.305367 -0.194433 0 -2.722067 -0.486083 0
+ L3 65280 0.000000 -2.235983 0.291650 0 -2.722067 0.194433 0
+ L3 65280 0.000000 -2.624850 0.680517 0 -3.305367 1.069383 0
+ L3 65280 0.000000 -3.013717 1.458250 0 -2.527633 1.555467 0
+ L3 65280 0.000000 -2.333200 2.235983 0 -2.138767 1.944333 0
+ L3 65280 0.000000 -1.458250 2.916500 0 -1.652683 3.208150 0
+ L3 65280 0.000000 -0.874950 3.110933 0 -0.680517 3.402583 0
+ L3 65280 0.000000 -0.097217 2.624850 0 0.000000 2.916500 0
+ L3 65280 0.000000 0.486083 2.624850 0 0.194433 2.819283 0
+ L3 65280 0.000000 1.263817 3.110933 0 1.166600 3.499800 0
+ L3 65280 0.000000 1.847117 2.916500 0 2.138767 3.013717 0
+ L3 65280 0.000000 3.402583 1.361033 0 3.110933 1.458250 0
+ L3 65280 0.000000 2.916500 1.847117 0 3.110933 2.138767 0
+ L3 65280 0.000000 3.402583 -0.291650 0 3.013717 -0.194433 0
+ L3 65280 0.000000 -2.722067 -2.430417 0 -2.527633 -2.041550 0
+ L3 65280 0.000000 -3.110933 -1.847117 0 -2.819283 -2.041550 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 1.386758 0
+ 1.497698 0.956863 0
+ 1.192612 1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 -2.138767 0 0.388867 -1.847117 0
+ L3 26624 0.000000 1.361033 -1.847117 0 0.874950 -1.652683 0
+ L3 26624 0.000000 1.555467 -2.333200 0 1.263817 -2.138767 0
+ L3 26624 0.000000 0.874950 -2.527633 0 0.680517 -2.138767 0
+ L3 26624 0.000000 -0.388867 -2.430417 0 -0.194433 -2.138767 0
+ L3 26624 0.000000 -1.166600 -1.555467 0 -0.777733 -1.555467 0
+ L3 26624 0.000000 -0.874950 -1.069383 0 -0.388867 -1.263817 0
+ L3 26624 0.000000 -1.166600 -0.583300 0 -0.777733 -0.291650 0
+ L3 26624 0.000000 -1.749900 -0.486083 0 -1.361033 -0.291650 0
+ L3 26624 0.000000 -2.235983 -0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 0.486083 0 -1.944333 0.874950 0
+ L3 26624 0.000000 -1.749900 1.361033 0 -1.458250 0.972167 0
+ L3 26624 0.000000 -1.069383 2.138767 0 -0.777733 1.749900 0
+ L3 26624 0.000000 -0.388867 1.749900 0 -0.486083 2.333200 0
+ L3 26624 0.000000 -0.291650 1.069383 0 -0.194433 1.458250 0
+ L3 26624 0.000000 0.680517 1.749900 0 0.874950 2.333200 0
+ L3 26624 0.000000 1.166600 1.652683 0 1.749900 1.944333 0
+ L3 26624 0.000000 2.624850 0.680517 0 2.138767 0.777733 0
+ L3 26624 0.000000 2.624850 1.555467 0 2.138767 1.361033 0
+ L3 26624 0.000000 2.819283 1.166600 0 2.333200 1.069383 0
+ L3 26624 0.000000 1.166600 2.819283 0 1.069383 2.430417 0
+ L3 26624 0.000000 1.749900 2.527633 0 1.458250 2.235983 0
+ L3 26624 0.000000 1.361033 2.624850 0 1.166600 2.041550 0
+ L3 26624 0.000000 2.916500 -0.486083 0 2.333200 -0.583300 0
+ L3 26624 0.000000 2.430417 -1.263817 0 1.944333 -0.972167 0
+ L3 26624 0.000000 2.916500 -0.972167 0 2.430417 -0.874950 0
+ L3 26624 0.000000 -0.972167 2.722067 0 -0.874950 2.333200 0
+ L3 26624 0.000000 -2.138767 1.361033 0 -1.847117 1.166600 0
+ L3 26624 0.000000 1.361033 -3.110933 0 1.166600 -2.624850 0
+ L3 26624 0.000000 1.749900 -2.819283 0 1.458250 -2.527633 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 8"" Decid-8b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 65280 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 65280 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 65280 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 65280 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 65280 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 65280 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 65280 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 65280 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 65280 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 65280 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 65280 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 65280 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 65280 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 65280 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 65280 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 65280 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 65280 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 65280 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ L3 65280 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 65280 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 65280 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 65280 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 26624 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 26624 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 26624 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 26624 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 26624 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 26624 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 26624 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 26624 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ L3 26624 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 26624 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 26624 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 26624 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 26624 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 26624 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 26624 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 26624 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 26624 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 26624 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 26624 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 26624 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 26624 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 26624 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 26624 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ L3 26624 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 26624 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 26624 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 26624 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 26624 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 10"" Decid-10a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.850646 -4.131708 0 -0.364562 -3.767146 0
+ L3 65280 0.000000 -1.215208 -3.888667 0 -1.336729 -3.281062 0
+ L3 65280 0.000000 -2.794979 -2.551937 0 -1.944333 -2.551937 0
+ L3 65280 0.000000 -3.402583 -2.308896 0 -3.038021 -1.944333 0
+ L3 65280 0.000000 -2.551937 -2.065854 0 -2.065854 -1.701292 0
+ L3 65280 0.000000 -2.308896 -1.336729 0 -3.038021 -1.215208 0
+ L3 65280 0.000000 -4.131708 -0.972167 0 -3.281062 -0.972167 0
+ L3 65280 0.000000 -4.131708 -0.243042 0 -3.402583 -0.607604 0
+ L3 65280 0.000000 -2.794979 0.364562 0 -3.402583 0.243042 0
+ L3 65280 0.000000 -3.281062 0.850646 0 -4.131708 1.336729 0
+ L3 65280 0.000000 -3.767146 1.822812 0 -3.159542 1.944333 0
+ L3 65280 0.000000 -2.916500 2.794979 0 -2.673458 2.430417 0
+ L3 65280 0.000000 -1.822812 3.645625 0 -2.065854 4.010187 0
+ L3 65280 0.000000 -1.093687 3.888667 0 -0.850646 4.253229 0
+ L3 65280 0.000000 -0.121521 3.281062 0 0.000000 3.645625 0
+ L3 65280 0.000000 0.607604 3.281062 0 0.243042 3.524104 0
+ L3 65280 0.000000 1.579771 3.888667 0 1.458250 4.374750 0
+ L3 65280 0.000000 2.308896 3.645625 0 2.673458 3.767146 0
+ L3 65280 0.000000 4.253229 1.701292 0 3.888667 1.822812 0
+ L3 65280 0.000000 3.645625 2.308896 0 3.888667 2.673458 0
+ L3 65280 0.000000 4.253229 -0.364562 0 3.767146 -0.243042 0
+ L3 65280 0.000000 -3.402583 -3.038021 0 -3.159542 -2.551937 0
+ L3 65280 0.000000 -3.888667 -2.308896 0 -3.524104 -2.551937 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.114806 1.733447 0
+ 1.872123 1.196079 0
+ 1.490765 1.525433 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.243042 -2.673458 0 0.486083 -2.308896 0
+ L3 26624 0.000000 1.701292 -2.308896 0 1.093687 -2.065854 0
+ L3 26624 0.000000 1.944333 -2.916500 0 1.579771 -2.673458 0
+ L3 26624 0.000000 1.093687 -3.159542 0 0.850646 -2.673458 0
+ L3 26624 0.000000 -0.486083 -3.038021 0 -0.243042 -2.673458 0
+ L3 26624 0.000000 -1.458250 -1.944333 0 -0.972167 -1.944333 0
+ L3 26624 0.000000 -1.093687 -1.336729 0 -0.486083 -1.579771 0
+ L3 26624 0.000000 -1.458250 -0.729125 0 -0.972167 -0.364562 0
+ L3 26624 0.000000 -2.187375 -0.607604 0 -1.701292 -0.364562 0
+ L3 26624 0.000000 -2.794979 -0.243042 0 -2.187375 0.000000 0
+ L3 26624 0.000000 -1.944333 0.607604 0 -2.430417 1.093687 0
+ L3 26624 0.000000 -2.187375 1.701292 0 -1.822812 1.215208 0
+ L3 26624 0.000000 -1.336729 2.673458 0 -0.972167 2.187375 0
+ L3 26624 0.000000 -0.486083 2.187375 0 -0.607604 2.916500 0
+ L3 26624 0.000000 -0.364562 1.336729 0 -0.243042 1.822812 0
+ L3 26624 0.000000 0.850646 2.187375 0 1.093687 2.916500 0
+ L3 26624 0.000000 1.458250 2.065854 0 2.187375 2.430417 0
+ L3 26624 0.000000 3.281062 0.850646 0 2.673458 0.972167 0
+ L3 26624 0.000000 3.281062 1.944333 0 2.673458 1.701292 0
+ L3 26624 0.000000 3.524104 1.458250 0 2.916500 1.336729 0
+ L3 26624 0.000000 1.458250 3.524104 0 1.336729 3.038021 0
+ L3 26624 0.000000 2.187375 3.159542 0 1.822812 2.794979 0
+ L3 26624 0.000000 1.701292 3.281062 0 1.458250 2.551937 0
+ L3 26624 0.000000 3.645625 -0.607604 0 2.916500 -0.729125 0
+ L3 26624 0.000000 3.038021 -1.579771 0 2.430417 -1.215208 0
+ L3 26624 0.000000 3.645625 -1.215208 0 3.038021 -1.093687 0
+ L3 26624 0.000000 -1.215208 3.402583 0 -1.093687 2.916500 0
+ L3 26624 0.000000 -2.673458 1.701292 0 -2.308896 1.458250 0
+ L3 26624 0.000000 1.701292 -3.888667 0 1.458250 -3.281062 0
+ L3 26624 0.000000 2.187375 -3.524104 0 1.822812 -3.159542 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 10"" Decid-10b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.850646 4.131708 0 -0.364562 3.767146 0
+ L3 65280 0.000000 -1.215208 3.888667 0 -1.336729 3.281062 0
+ L3 65280 0.000000 -2.794979 2.551937 0 -1.944333 2.551937 0
+ L3 65280 0.000000 -3.402583 2.308896 0 -3.038021 1.944333 0
+ L3 65280 0.000000 -2.551937 2.065854 0 -2.065854 1.701292 0
+ L3 65280 0.000000 -2.308896 1.336729 0 -3.038021 1.215208 0
+ L3 65280 0.000000 -4.131708 0.972167 0 -3.281062 0.972167 0
+ L3 65280 0.000000 -4.131708 0.243042 0 -3.402583 0.607604 0
+ L3 65280 0.000000 -2.794979 -0.364562 0 -3.402583 -0.243042 0
+ L3 65280 0.000000 -3.281062 -0.850646 0 -4.131708 -1.336729 0
+ L3 65280 0.000000 -3.767146 -1.822812 0 -3.159542 -1.944333 0
+ L3 65280 0.000000 -2.916500 -2.794979 0 -2.673458 -2.430417 0
+ L3 65280 0.000000 -1.822812 -3.645625 0 -2.065854 -4.010187 0
+ L3 65280 0.000000 -1.093687 -3.888667 0 -0.850646 -4.253229 0
+ L3 65280 0.000000 -0.121521 -3.281062 0 0.000000 -3.645625 0
+ L3 65280 0.000000 0.607604 -3.281062 0 0.243042 -3.524104 0
+ L3 65280 0.000000 1.579771 -3.888667 0 1.458250 -4.374750 0
+ L3 65280 0.000000 2.308896 -3.645625 0 2.673458 -3.767146 0
+ L3 65280 0.000000 4.253229 -1.701292 0 3.888667 -1.822812 0
+ L3 65280 0.000000 3.645625 -2.308896 0 3.888667 -2.673458 0
+ L3 65280 0.000000 4.253229 0.364562 0 3.767146 0.243042 0
+ L3 65280 0.000000 -3.402583 3.038021 0 -3.159542 2.551937 0
+ L3 65280 0.000000 -3.888667 2.308896 0 -3.524104 2.551937 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.114806 -1.733447 0
+ 1.872123 -1.196079 0
+ 1.490765 -1.525433 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.243042 2.673458 0 0.486083 2.308896 0
+ L3 26624 0.000000 1.701292 2.308896 0 1.093687 2.065854 0
+ L3 26624 0.000000 1.944333 2.916500 0 1.579771 2.673458 0
+ L3 26624 0.000000 1.093687 3.159542 0 0.850646 2.673458 0
+ L3 26624 0.000000 -0.486083 3.038021 0 -0.243042 2.673458 0
+ L3 26624 0.000000 -1.458250 1.944333 0 -0.972167 1.944333 0
+ L3 26624 0.000000 -1.093687 1.336729 0 -0.486083 1.579771 0
+ L3 26624 0.000000 -1.458250 0.729125 0 -0.972167 0.364562 0
+ L3 26624 0.000000 -2.187375 0.607604 0 -1.701292 0.364562 0
+ L3 26624 0.000000 -2.794979 0.243042 0 -2.187375 0.000000 0
+ L3 26624 0.000000 -1.944333 -0.607604 0 -2.430417 -1.093687 0
+ L3 26624 0.000000 -2.187375 -1.701292 0 -1.822812 -1.215208 0
+ L3 26624 0.000000 -1.336729 -2.673458 0 -0.972167 -2.187375 0
+ L3 26624 0.000000 -0.486083 -2.187375 0 -0.607604 -2.916500 0
+ L3 26624 0.000000 -0.364562 -1.336729 0 -0.243042 -1.822812 0
+ L3 26624 0.000000 0.850646 -2.187375 0 1.093687 -2.916500 0
+ L3 26624 0.000000 1.458250 -2.065854 0 2.187375 -2.430417 0
+ L3 26624 0.000000 3.281062 -0.850646 0 2.673458 -0.972167 0
+ L3 26624 0.000000 3.281062 -1.944333 0 2.673458 -1.701292 0
+ L3 26624 0.000000 3.524104 -1.458250 0 2.916500 -1.336729 0
+ L3 26624 0.000000 1.458250 -3.524104 0 1.336729 -3.038021 0
+ L3 26624 0.000000 2.187375 -3.159542 0 1.822812 -2.794979 0
+ L3 26624 0.000000 1.701292 -3.281062 0 1.458250 -2.551937 0
+ L3 26624 0.000000 3.645625 0.607604 0 2.916500 0.729125 0
+ L3 26624 0.000000 3.038021 1.579771 0 2.430417 1.215208 0
+ L3 26624 0.000000 3.645625 1.215208 0 3.038021 1.093687 0
+ L3 26624 0.000000 -1.215208 -3.402583 0 -1.093687 -2.916500 0
+ L3 26624 0.000000 -2.673458 -1.701292 0 -2.308896 -1.458250 0
+ L3 26624 0.000000 1.701292 3.888667 0 1.458250 3.281062 0
+ L3 26624 0.000000 2.187375 3.524104 0 1.822812 3.159542 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 12"" Decid-12a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.020775 -4.958050 0 -0.437475 -4.520575 0
+ L3 65280 0.000000 -1.458250 -4.666400 0 -1.604075 -3.937275 0
+ L3 65280 0.000000 -3.353975 -3.062325 0 -2.333200 -3.062325 0
+ L3 65280 0.000000 -4.083100 -2.770675 0 -3.645625 -2.333200 0
+ L3 65280 0.000000 -3.062325 -2.479025 0 -2.479025 -2.041550 0
+ L3 65280 0.000000 -2.770675 -1.604075 0 -3.645625 -1.458250 0
+ L3 65280 0.000000 -4.958050 -1.166600 0 -3.937275 -1.166600 0
+ L3 65280 0.000000 -4.958050 -0.291650 0 -4.083100 -0.729125 0
+ L3 65280 0.000000 -3.353975 0.437475 0 -4.083100 0.291650 0
+ L3 65280 0.000000 -3.937275 1.020775 0 -4.958050 1.604075 0
+ L3 65280 0.000000 -4.520575 2.187375 0 -3.791450 2.333200 0
+ L3 65280 0.000000 -3.499800 3.353975 0 -3.208150 2.916500 0
+ L3 65280 0.000000 -2.187375 4.374750 0 -2.479025 4.812225 0
+ L3 65280 0.000000 -1.312425 4.666400 0 -1.020775 5.103875 0
+ L3 65280 0.000000 -0.145825 3.937275 0 0.000000 4.374750 0
+ L3 65280 0.000000 0.729125 3.937275 0 0.291650 4.228925 0
+ L3 65280 0.000000 1.895725 4.666400 0 1.749900 5.249700 0
+ L3 65280 0.000000 2.770675 4.374750 0 3.208150 4.520575 0
+ L3 65280 0.000000 5.103875 2.041550 0 4.666400 2.187375 0
+ L3 65280 0.000000 4.374750 2.770675 0 4.666400 3.208150 0
+ L3 65280 0.000000 5.103875 -0.437475 0 4.520575 -0.291650 0
+ L3 65280 0.000000 -4.083100 -3.645625 0 -3.791450 -3.062325 0
+ L3 65280 0.000000 -4.666400 -2.770675 0 -4.228925 -3.062325 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 2.080137 0
+ 2.246548 1.435294 0
+ 1.788917 1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.291650 -3.208150 0 0.583300 -2.770675 0
+ L3 26624 0.000000 2.041550 -2.770675 0 1.312425 -2.479025 0
+ L3 26624 0.000000 2.333200 -3.499800 0 1.895725 -3.208150 0
+ L3 26624 0.000000 1.312425 -3.791450 0 1.020775 -3.208150 0
+ L3 26624 0.000000 -0.583300 -3.645625 0 -0.291650 -3.208150 0
+ L3 26624 0.000000 -1.749900 -2.333200 0 -1.166600 -2.333200 0
+ L3 26624 0.000000 -1.312425 -1.604075 0 -0.583300 -1.895725 0
+ L3 26624 0.000000 -1.749900 -0.874950 0 -1.166600 -0.437475 0
+ L3 26624 0.000000 -2.624850 -0.729125 0 -2.041550 -0.437475 0
+ L3 26624 0.000000 -3.353975 -0.291650 0 -2.624850 0.000000 0
+ L3 26624 0.000000 -2.333200 0.729125 0 -2.916500 1.312425 0
+ L3 26624 0.000000 -2.624850 2.041550 0 -2.187375 1.458250 0
+ L3 26624 0.000000 -1.604075 3.208150 0 -1.166600 2.624850 0
+ L3 26624 0.000000 -0.583300 2.624850 0 -0.729125 3.499800 0
+ L3 26624 0.000000 -0.437475 1.604075 0 -0.291650 2.187375 0
+ L3 26624 0.000000 1.020775 2.624850 0 1.312425 3.499800 0
+ L3 26624 0.000000 1.749900 2.479025 0 2.624850 2.916500 0
+ L3 26624 0.000000 3.937275 1.020775 0 3.208150 1.166600 0
+ L3 26624 0.000000 3.937275 2.333200 0 3.208150 2.041550 0
+ L3 26624 0.000000 4.228925 1.749900 0 3.499800 1.604075 0
+ L3 26624 0.000000 1.749900 4.228925 0 1.604075 3.645625 0
+ L3 26624 0.000000 2.624850 3.791450 0 2.187375 3.353975 0
+ L3 26624 0.000000 2.041550 3.937275 0 1.749900 3.062325 0
+ L3 26624 0.000000 4.374750 -0.729125 0 3.499800 -0.874950 0
+ L3 26624 0.000000 3.645625 -1.895725 0 2.916500 -1.458250 0
+ L3 26624 0.000000 4.374750 -1.458250 0 3.645625 -1.312425 0
+ L3 26624 0.000000 -1.458250 4.083100 0 -1.312425 3.499800 0
+ L3 26624 0.000000 -3.208150 2.041550 0 -2.770675 1.749900 0
+ L3 26624 0.000000 2.041550 -4.666400 0 1.749900 -3.937275 0
+ L3 26624 0.000000 2.624850 -4.228925 0 2.187375 -3.791450 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 12"" Decid-12b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.020775 4.958050 0 -0.437475 4.520575 0
+ L3 65280 0.000000 -1.458250 4.666400 0 -1.604075 3.937275 0
+ L3 65280 0.000000 -3.353975 3.062325 0 -2.333200 3.062325 0
+ L3 65280 0.000000 -4.083100 2.770675 0 -3.645625 2.333200 0
+ L3 65280 0.000000 -3.062325 2.479025 0 -2.479025 2.041550 0
+ L3 65280 0.000000 -2.770675 1.604075 0 -3.645625 1.458250 0
+ L3 65280 0.000000 -4.958050 1.166600 0 -3.937275 1.166600 0
+ L3 65280 0.000000 -4.958050 0.291650 0 -4.083100 0.729125 0
+ L3 65280 0.000000 -3.353975 -0.437475 0 -4.083100 -0.291650 0
+ L3 65280 0.000000 -3.937275 -1.020775 0 -4.958050 -1.604075 0
+ L3 65280 0.000000 -4.520575 -2.187375 0 -3.791450 -2.333200 0
+ L3 65280 0.000000 -3.499800 -3.353975 0 -3.208150 -2.916500 0
+ L3 65280 0.000000 -2.187375 -4.374750 0 -2.479025 -4.812225 0
+ L3 65280 0.000000 -1.312425 -4.666400 0 -1.020775 -5.103875 0
+ L3 65280 0.000000 -0.145825 -3.937275 0 0.000000 -4.374750 0
+ L3 65280 0.000000 0.729125 -3.937275 0 0.291650 -4.228925 0
+ L3 65280 0.000000 1.895725 -4.666400 0 1.749900 -5.249700 0
+ L3 65280 0.000000 2.770675 -4.374750 0 3.208150 -4.520575 0
+ L3 65280 0.000000 5.103875 -2.041550 0 4.666400 -2.187375 0
+ L3 65280 0.000000 4.374750 -2.770675 0 4.666400 -3.208150 0
+ L3 65280 0.000000 5.103875 0.437475 0 4.520575 0.291650 0
+ L3 65280 0.000000 -4.083100 3.645625 0 -3.791450 3.062325 0
+ L3 65280 0.000000 -4.666400 2.770675 0 -4.228925 3.062325 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.537767 -2.080137 0
+ 2.246548 -1.435294 0
+ 1.788917 -1.830520 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.291650 3.208150 0 0.583300 2.770675 0
+ L3 26624 0.000000 2.041550 2.770675 0 1.312425 2.479025 0
+ L3 26624 0.000000 2.333200 3.499800 0 1.895725 3.208150 0
+ L3 26624 0.000000 1.312425 3.791450 0 1.020775 3.208150 0
+ L3 26624 0.000000 -0.583300 3.645625 0 -0.291650 3.208150 0
+ L3 26624 0.000000 -1.749900 2.333200 0 -1.166600 2.333200 0
+ L3 26624 0.000000 -1.312425 1.604075 0 -0.583300 1.895725 0
+ L3 26624 0.000000 -1.749900 0.874950 0 -1.166600 0.437475 0
+ L3 26624 0.000000 -2.624850 0.729125 0 -2.041550 0.437475 0
+ L3 26624 0.000000 -3.353975 0.291650 0 -2.624850 0.000000 0
+ L3 26624 0.000000 -2.333200 -0.729125 0 -2.916500 -1.312425 0
+ L3 26624 0.000000 -2.624850 -2.041550 0 -2.187375 -1.458250 0
+ L3 26624 0.000000 -1.604075 -3.208150 0 -1.166600 -2.624850 0
+ L3 26624 0.000000 -0.583300 -2.624850 0 -0.729125 -3.499800 0
+ L3 26624 0.000000 -0.437475 -1.604075 0 -0.291650 -2.187375 0
+ L3 26624 0.000000 1.020775 -2.624850 0 1.312425 -3.499800 0
+ L3 26624 0.000000 1.749900 -2.479025 0 2.624850 -2.916500 0
+ L3 26624 0.000000 3.937275 -1.020775 0 3.208150 -1.166600 0
+ L3 26624 0.000000 3.937275 -2.333200 0 3.208150 -2.041550 0
+ L3 26624 0.000000 4.228925 -1.749900 0 3.499800 -1.604075 0
+ L3 26624 0.000000 1.749900 -4.228925 0 1.604075 -3.645625 0
+ L3 26624 0.000000 2.624850 -3.791450 0 2.187375 -3.353975 0
+ L3 26624 0.000000 2.041550 -3.937275 0 1.749900 -3.062325 0
+ L3 26624 0.000000 4.374750 0.729125 0 3.499800 0.874950 0
+ L3 26624 0.000000 3.645625 1.895725 0 2.916500 1.458250 0
+ L3 26624 0.000000 4.374750 1.458250 0 3.645625 1.312425 0
+ L3 26624 0.000000 -1.458250 -4.083100 0 -1.312425 -3.499800 0
+ L3 26624 0.000000 -3.208150 -2.041550 0 -2.770675 -1.749900 0
+ L3 26624 0.000000 2.041550 4.666400 0 1.749900 3.937275 0
+ L3 26624 0.000000 2.624850 4.228925 0 2.187375 3.791450 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 14"" Decid-14a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.190904 -5.784392 0 -0.510387 -5.274004 0
+ L3 65280 0.000000 -1.701292 -5.444133 0 -1.871421 -4.593487 0
+ L3 65280 0.000000 -3.912971 -3.572712 0 -2.722067 -3.572712 0
+ L3 65280 0.000000 -4.763617 -3.232454 0 -4.253229 -2.722067 0
+ L3 65280 0.000000 -3.572712 -2.892196 0 -2.892196 -2.381808 0
+ L3 65280 0.000000 -3.232454 -1.871421 0 -4.253229 -1.701292 0
+ L3 65280 0.000000 -5.784392 -1.361033 0 -4.593487 -1.361033 0
+ L3 65280 0.000000 -5.784392 -0.340258 0 -4.763617 -0.850646 0
+ L3 65280 0.000000 -3.912971 0.510387 0 -4.763617 0.340258 0
+ L3 65280 0.000000 -4.593487 1.190904 0 -5.784392 1.871421 0
+ L3 65280 0.000000 -5.274004 2.551937 0 -4.423358 2.722067 0
+ L3 65280 0.000000 -4.083100 3.912971 0 -3.742842 3.402583 0
+ L3 65280 0.000000 -2.551937 5.103875 0 -2.892196 5.614262 0
+ L3 65280 0.000000 -1.531162 5.444133 0 -1.190904 5.954521 0
+ L3 65280 0.000000 -0.170129 4.593487 0 0.000000 5.103875 0
+ L3 65280 0.000000 0.850646 4.593487 0 0.340258 4.933746 0
+ L3 65280 0.000000 2.211679 5.444133 0 2.041550 6.124650 0
+ L3 65280 0.000000 3.232454 5.103875 0 3.742842 5.274004 0
+ L3 65280 0.000000 5.954521 2.381808 0 5.444133 2.551937 0
+ L3 65280 0.000000 5.103875 3.232454 0 5.444133 3.742842 0
+ L3 65280 0.000000 5.954521 -0.510387 0 5.274004 -0.340258 0
+ L3 65280 0.000000 -4.763617 -4.253229 0 -4.423358 -3.572712 0
+ L3 65280 0.000000 -5.444133 -3.232454 0 -4.933746 -3.572712 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.960728 2.426826 0
+ 2.620972 1.674510 0
+ 2.087070 2.135607 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.340258 -3.742842 0 0.680517 -3.232454 0
+ L3 26624 0.000000 2.381808 -3.232454 0 1.531162 -2.892196 0
+ L3 26624 0.000000 2.722067 -4.083100 0 2.211679 -3.742842 0
+ L3 26624 0.000000 1.531162 -4.423358 0 1.190904 -3.742842 0
+ L3 26624 0.000000 -0.680517 -4.253229 0 -0.340258 -3.742842 0
+ L3 26624 0.000000 -2.041550 -2.722067 0 -1.361033 -2.722067 0
+ L3 26624 0.000000 -1.531162 -1.871421 0 -0.680517 -2.211679 0
+ L3 26624 0.000000 -2.041550 -1.020775 0 -1.361033 -0.510387 0
+ L3 26624 0.000000 -3.062325 -0.850646 0 -2.381808 -0.510387 0
+ L3 26624 0.000000 -3.912971 -0.340258 0 -3.062325 0.000000 0
+ L3 26624 0.000000 -2.722067 0.850646 0 -3.402583 1.531162 0
+ L3 26624 0.000000 -3.062325 2.381808 0 -2.551937 1.701292 0
+ L3 26624 0.000000 -1.871421 3.742842 0 -1.361033 3.062325 0
+ L3 26624 0.000000 -0.680517 3.062325 0 -0.850646 4.083100 0
+ L3 26624 0.000000 -0.510387 1.871421 0 -0.340258 2.551937 0
+ L3 26624 0.000000 1.190904 3.062325 0 1.531162 4.083100 0
+ L3 26624 0.000000 2.041550 2.892196 0 3.062325 3.402583 0
+ L3 26624 0.000000 4.593487 1.190904 0 3.742842 1.361033 0
+ L3 26624 0.000000 4.593487 2.722067 0 3.742842 2.381808 0
+ L3 26624 0.000000 4.933746 2.041550 0 4.083100 1.871421 0
+ L3 26624 0.000000 2.041550 4.933746 0 1.871421 4.253229 0
+ L3 26624 0.000000 3.062325 4.423358 0 2.551937 3.912971 0
+ L3 26624 0.000000 2.381808 4.593487 0 2.041550 3.572712 0
+ L3 26624 0.000000 5.103875 -0.850646 0 4.083100 -1.020775 0
+ L3 26624 0.000000 4.253229 -2.211679 0 3.402583 -1.701292 0
+ L3 26624 0.000000 5.103875 -1.701292 0 4.253229 -1.531162 0
+ L3 26624 0.000000 -1.701292 4.763617 0 -1.531162 4.083100 0
+ L3 26624 0.000000 -3.742842 2.381808 0 -3.232454 2.041550 0
+ L3 26624 0.000000 2.381808 -5.444133 0 2.041550 -4.593487 0
+ L3 26624 0.000000 3.062325 -4.933746 0 2.551937 -4.423358 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 14"" Decid-14b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.190904 5.784392 0 -0.510387 5.274004 0
+ L3 65280 0.000000 -1.701292 5.444133 0 -1.871421 4.593487 0
+ L3 65280 0.000000 -3.912971 3.572712 0 -2.722067 3.572712 0
+ L3 65280 0.000000 -4.763617 3.232454 0 -4.253229 2.722067 0
+ L3 65280 0.000000 -3.572712 2.892196 0 -2.892196 2.381808 0
+ L3 65280 0.000000 -3.232454 1.871421 0 -4.253229 1.701292 0
+ L3 65280 0.000000 -5.784392 1.361033 0 -4.593487 1.361033 0
+ L3 65280 0.000000 -5.784392 0.340258 0 -4.763617 0.850646 0
+ L3 65280 0.000000 -3.912971 -0.510387 0 -4.763617 -0.340258 0
+ L3 65280 0.000000 -4.593487 -1.190904 0 -5.784392 -1.871421 0
+ L3 65280 0.000000 -5.274004 -2.551937 0 -4.423358 -2.722067 0
+ L3 65280 0.000000 -4.083100 -3.912971 0 -3.742842 -3.402583 0
+ L3 65280 0.000000 -2.551937 -5.103875 0 -2.892196 -5.614262 0
+ L3 65280 0.000000 -1.531162 -5.444133 0 -1.190904 -5.954521 0
+ L3 65280 0.000000 -0.170129 -4.593487 0 0.000000 -5.103875 0
+ L3 65280 0.000000 0.850646 -4.593487 0 0.340258 -4.933746 0
+ L3 65280 0.000000 2.211679 -5.444133 0 2.041550 -6.124650 0
+ L3 65280 0.000000 3.232454 -5.103875 0 3.742842 -5.274004 0
+ L3 65280 0.000000 5.954521 -2.381808 0 5.444133 -2.551937 0
+ L3 65280 0.000000 5.103875 -3.232454 0 5.444133 -3.742842 0
+ L3 65280 0.000000 5.954521 0.510387 0 5.274004 0.340258 0
+ L3 65280 0.000000 -4.763617 4.253229 0 -4.423358 3.572712 0
+ L3 65280 0.000000 -5.444133 3.232454 0 -4.933746 3.572712 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.960728 -2.426826 0
+ 2.620972 -1.674510 0
+ 2.087070 -2.135607 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.340258 3.742842 0 0.680517 3.232454 0
+ L3 26624 0.000000 2.381808 3.232454 0 1.531162 2.892196 0
+ L3 26624 0.000000 2.722067 4.083100 0 2.211679 3.742842 0
+ L3 26624 0.000000 1.531162 4.423358 0 1.190904 3.742842 0
+ L3 26624 0.000000 -0.680517 4.253229 0 -0.340258 3.742842 0
+ L3 26624 0.000000 -2.041550 2.722067 0 -1.361033 2.722067 0
+ L3 26624 0.000000 -1.531162 1.871421 0 -0.680517 2.211679 0
+ L3 26624 0.000000 -2.041550 1.020775 0 -1.361033 0.510387 0
+ L3 26624 0.000000 -3.062325 0.850646 0 -2.381808 0.510387 0
+ L3 26624 0.000000 -3.912971 0.340258 0 -3.062325 0.000000 0
+ L3 26624 0.000000 -2.722067 -0.850646 0 -3.402583 -1.531162 0
+ L3 26624 0.000000 -3.062325 -2.381808 0 -2.551937 -1.701292 0
+ L3 26624 0.000000 -1.871421 -3.742842 0 -1.361033 -3.062325 0
+ L3 26624 0.000000 -0.680517 -3.062325 0 -0.850646 -4.083100 0
+ L3 26624 0.000000 -0.510387 -1.871421 0 -0.340258 -2.551937 0
+ L3 26624 0.000000 1.190904 -3.062325 0 1.531162 -4.083100 0
+ L3 26624 0.000000 2.041550 -2.892196 0 3.062325 -3.402583 0
+ L3 26624 0.000000 4.593487 -1.190904 0 3.742842 -1.361033 0
+ L3 26624 0.000000 4.593487 -2.722067 0 3.742842 -2.381808 0
+ L3 26624 0.000000 4.933746 -2.041550 0 4.083100 -1.871421 0
+ L3 26624 0.000000 2.041550 -4.933746 0 1.871421 -4.253229 0
+ L3 26624 0.000000 3.062325 -4.423358 0 2.551937 -3.912971 0
+ L3 26624 0.000000 2.381808 -4.593487 0 2.041550 -3.572712 0
+ L3 26624 0.000000 5.103875 0.850646 0 4.083100 1.020775 0
+ L3 26624 0.000000 4.253229 2.211679 0 3.402583 1.701292 0
+ L3 26624 0.000000 5.103875 1.701292 0 4.253229 1.531162 0
+ L3 26624 0.000000 -1.701292 -4.763617 0 -1.531162 -4.083100 0
+ L3 26624 0.000000 -3.742842 -2.381808 0 -3.232454 -2.041550 0
+ L3 26624 0.000000 2.381808 5.444133 0 2.041550 4.593487 0
+ L3 26624 0.000000 3.062325 4.933746 0 2.551937 4.423358 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 16"" Decid-16a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.361033 -6.610733 0 -0.583300 -6.027433 0
+ L3 65280 0.000000 -1.944333 -6.221867 0 -2.138767 -5.249700 0
+ L3 65280 0.000000 -4.471967 -4.083100 0 -3.110933 -4.083100 0
+ L3 65280 0.000000 -5.444133 -3.694233 0 -4.860833 -3.110933 0
+ L3 65280 0.000000 -4.083100 -3.305367 0 -3.305367 -2.722067 0
+ L3 65280 0.000000 -3.694233 -2.138767 0 -4.860833 -1.944333 0
+ L3 65280 0.000000 -6.610733 -1.555467 0 -5.249700 -1.555467 0
+ L3 65280 0.000000 -6.610733 -0.388867 0 -5.444133 -0.972167 0
+ L3 65280 0.000000 -4.471967 0.583300 0 -5.444133 0.388867 0
+ L3 65280 0.000000 -5.249700 1.361033 0 -6.610733 2.138767 0
+ L3 65280 0.000000 -6.027433 2.916500 0 -5.055267 3.110933 0
+ L3 65280 0.000000 -4.666400 4.471967 0 -4.277533 3.888667 0
+ L3 65280 0.000000 -2.916500 5.833000 0 -3.305367 6.416300 0
+ L3 65280 0.000000 -1.749900 6.221867 0 -1.361033 6.805167 0
+ L3 65280 0.000000 -0.194433 5.249700 0 0.000000 5.833000 0
+ L3 65280 0.000000 0.972167 5.249700 0 0.388867 5.638567 0
+ L3 65280 0.000000 2.527633 6.221867 0 2.333200 6.999600 0
+ L3 65280 0.000000 3.694233 5.833000 0 4.277533 6.027433 0
+ L3 65280 0.000000 6.805167 2.722067 0 6.221867 2.916500 0
+ L3 65280 0.000000 5.833000 3.694233 0 6.221867 4.277533 0
+ L3 65280 0.000000 6.805167 -0.583300 0 6.027433 -0.388867 0
+ L3 65280 0.000000 -5.444133 -4.860833 0 -5.055267 -4.083100 0
+ L3 65280 0.000000 -6.221867 -3.694233 0 -5.638567 -4.083100 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 3.383689 2.773515 0
+ 2.995397 1.913726 0
+ 2.385223 2.440694 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.388867 -4.277533 0 0.777733 -3.694233 0
+ L3 26624 0.000000 2.722067 -3.694233 0 1.749900 -3.305367 0
+ L3 26624 0.000000 3.110933 -4.666400 0 2.527633 -4.277533 0
+ L3 26624 0.000000 1.749900 -5.055267 0 1.361033 -4.277533 0
+ L3 26624 0.000000 -0.777733 -4.860833 0 -0.388867 -4.277533 0
+ L3 26624 0.000000 -2.333200 -3.110933 0 -1.555467 -3.110933 0
+ L3 26624 0.000000 -1.749900 -2.138767 0 -0.777733 -2.527633 0
+ L3 26624 0.000000 -2.333200 -1.166600 0 -1.555467 -0.583300 0
+ L3 26624 0.000000 -3.499800 -0.972167 0 -2.722067 -0.583300 0
+ L3 26624 0.000000 -4.471967 -0.388867 0 -3.499800 0.000000 0
+ L3 26624 0.000000 -3.110933 0.972167 0 -3.888667 1.749900 0
+ L3 26624 0.000000 -3.499800 2.722067 0 -2.916500 1.944333 0
+ L3 26624 0.000000 -2.138767 4.277533 0 -1.555467 3.499800 0
+ L3 26624 0.000000 -0.777733 3.499800 0 -0.972167 4.666400 0
+ L3 26624 0.000000 -0.583300 2.138767 0 -0.388867 2.916500 0
+ L3 26624 0.000000 1.361033 3.499800 0 1.749900 4.666400 0
+ L3 26624 0.000000 2.333200 3.305367 0 3.499800 3.888667 0
+ L3 26624 0.000000 5.249700 1.361033 0 4.277533 1.555467 0
+ L3 26624 0.000000 5.249700 3.110933 0 4.277533 2.722067 0
+ L3 26624 0.000000 5.638567 2.333200 0 4.666400 2.138767 0
+ L3 26624 0.000000 2.333200 5.638567 0 2.138767 4.860833 0
+ L3 26624 0.000000 3.499800 5.055267 0 2.916500 4.471967 0
+ L3 26624 0.000000 2.722067 5.249700 0 2.333200 4.083100 0
+ L3 26624 0.000000 5.833000 -0.972167 0 4.666400 -1.166600 0
+ L3 26624 0.000000 4.860833 -2.527633 0 3.888667 -1.944333 0
+ L3 26624 0.000000 5.833000 -1.944333 0 4.860833 -1.749900 0
+ L3 26624 0.000000 -1.944333 5.444133 0 -1.749900 4.666400 0
+ L3 26624 0.000000 -4.277533 2.722067 0 -3.694233 2.333200 0
+ L3 26624 0.000000 2.722067 -6.221867 0 2.333200 -5.249700 0
+ L3 26624 0.000000 3.499800 -5.638567 0 2.916500 -5.055267 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 16"" Decid-16b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.361033 6.610733 0 -0.583300 6.027433 0
+ L3 65280 0.000000 -1.944333 6.221867 0 -2.138767 5.249700 0
+ L3 65280 0.000000 -4.471967 4.083100 0 -3.110933 4.083100 0
+ L3 65280 0.000000 -5.444133 3.694233 0 -4.860833 3.110933 0
+ L3 65280 0.000000 -4.083100 3.305367 0 -3.305367 2.722067 0
+ L3 65280 0.000000 -3.694233 2.138767 0 -4.860833 1.944333 0
+ L3 65280 0.000000 -6.610733 1.555467 0 -5.249700 1.555467 0
+ L3 65280 0.000000 -6.610733 0.388867 0 -5.444133 0.972167 0
+ L3 65280 0.000000 -4.471967 -0.583300 0 -5.444133 -0.388867 0
+ L3 65280 0.000000 -5.249700 -1.361033 0 -6.610733 -2.138767 0
+ L3 65280 0.000000 -6.027433 -2.916500 0 -5.055267 -3.110933 0
+ L3 65280 0.000000 -4.666400 -4.471967 0 -4.277533 -3.888667 0
+ L3 65280 0.000000 -2.916500 -5.833000 0 -3.305367 -6.416300 0
+ L3 65280 0.000000 -1.749900 -6.221867 0 -1.361033 -6.805167 0
+ L3 65280 0.000000 -0.194433 -5.249700 0 0.000000 -5.833000 0
+ L3 65280 0.000000 0.972167 -5.249700 0 0.388867 -5.638567 0
+ L3 65280 0.000000 2.527633 -6.221867 0 2.333200 -6.999600 0
+ L3 65280 0.000000 3.694233 -5.833000 0 4.277533 -6.027433 0
+ L3 65280 0.000000 6.805167 -2.722067 0 6.221867 -2.916500 0
+ L3 65280 0.000000 5.833000 -3.694233 0 6.221867 -4.277533 0
+ L3 65280 0.000000 6.805167 0.583300 0 6.027433 0.388867 0
+ L3 65280 0.000000 -5.444133 4.860833 0 -5.055267 4.083100 0
+ L3 65280 0.000000 -6.221867 3.694233 0 -5.638567 4.083100 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 3.383689 -2.773515 0
+ 2.995397 -1.913726 0
+ 2.385223 -2.440694 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.388867 4.277533 0 0.777733 3.694233 0
+ L3 26624 0.000000 2.722067 3.694233 0 1.749900 3.305367 0
+ L3 26624 0.000000 3.110933 4.666400 0 2.527633 4.277533 0
+ L3 26624 0.000000 1.749900 5.055267 0 1.361033 4.277533 0
+ L3 26624 0.000000 -0.777733 4.860833 0 -0.388867 4.277533 0
+ L3 26624 0.000000 -2.333200 3.110933 0 -1.555467 3.110933 0
+ L3 26624 0.000000 -1.749900 2.138767 0 -0.777733 2.527633 0
+ L3 26624 0.000000 -2.333200 1.166600 0 -1.555467 0.583300 0
+ L3 26624 0.000000 -3.499800 0.972167 0 -2.722067 0.583300 0
+ L3 26624 0.000000 -4.471967 0.388867 0 -3.499800 0.000000 0
+ L3 26624 0.000000 -3.110933 -0.972167 0 -3.888667 -1.749900 0
+ L3 26624 0.000000 -3.499800 -2.722067 0 -2.916500 -1.944333 0
+ L3 26624 0.000000 -2.138767 -4.277533 0 -1.555467 -3.499800 0
+ L3 26624 0.000000 -0.777733 -3.499800 0 -0.972167 -4.666400 0
+ L3 26624 0.000000 -0.583300 -2.138767 0 -0.388867 -2.916500 0
+ L3 26624 0.000000 1.361033 -3.499800 0 1.749900 -4.666400 0
+ L3 26624 0.000000 2.333200 -3.305367 0 3.499800 -3.888667 0
+ L3 26624 0.000000 5.249700 -1.361033 0 4.277533 -1.555467 0
+ L3 26624 0.000000 5.249700 -3.110933 0 4.277533 -2.722067 0
+ L3 26624 0.000000 5.638567 -2.333200 0 4.666400 -2.138767 0
+ L3 26624 0.000000 2.333200 -5.638567 0 2.138767 -4.860833 0
+ L3 26624 0.000000 3.499800 -5.055267 0 2.916500 -4.471967 0
+ L3 26624 0.000000 2.722067 -5.249700 0 2.333200 -4.083100 0
+ L3 26624 0.000000 5.833000 0.972167 0 4.666400 1.166600 0
+ L3 26624 0.000000 4.860833 2.527633 0 3.888667 1.944333 0
+ L3 26624 0.000000 5.833000 1.944333 0 4.860833 1.749900 0
+ L3 26624 0.000000 -1.944333 -5.444133 0 -1.749900 -4.666400 0
+ L3 26624 0.000000 -4.277533 -2.722067 0 -3.694233 -2.333200 0
+ L3 26624 0.000000 2.722067 6.221867 0 2.333200 5.249700 0
+ L3 26624 0.000000 3.499800 5.638567 0 2.916500 5.055267 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 18"" Decid-18a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.531162 -7.437075 0 -0.656212 -6.780862 0
+ L3 65280 0.000000 -2.187375 -6.999600 0 -2.406112 -5.905912 0
+ L3 65280 0.000000 -5.030962 -4.593487 0 -3.499800 -4.593487 0
+ L3 65280 0.000000 -6.124650 -4.156012 0 -5.468437 -3.499800 0
+ L3 65280 0.000000 -4.593487 -3.718537 0 -3.718537 -3.062325 0
+ L3 65280 0.000000 -4.156012 -2.406112 0 -5.468437 -2.187375 0
+ L3 65280 0.000000 -7.437075 -1.749900 0 -5.905912 -1.749900 0
+ L3 65280 0.000000 -7.437075 -0.437475 0 -6.124650 -1.093687 0
+ L3 65280 0.000000 -5.030962 0.656212 0 -6.124650 0.437475 0
+ L3 65280 0.000000 -5.905912 1.531162 0 -7.437075 2.406112 0
+ L3 65280 0.000000 -6.780862 3.281062 0 -5.687175 3.499800 0
+ L3 65280 0.000000 -5.249700 5.030962 0 -4.812225 4.374750 0
+ L3 65280 0.000000 -3.281062 6.562125 0 -3.718537 7.218337 0
+ L3 65280 0.000000 -1.968637 6.999600 0 -1.531162 7.655812 0
+ L3 65280 0.000000 -0.218737 5.905912 0 0.000000 6.562125 0
+ L3 65280 0.000000 1.093687 5.905912 0 0.437475 6.343387 0
+ L3 65280 0.000000 2.843587 6.999600 0 2.624850 7.874550 0
+ L3 65280 0.000000 4.156012 6.562125 0 4.812225 6.780862 0
+ L3 65280 0.000000 7.655812 3.062325 0 6.999600 3.281062 0
+ L3 65280 0.000000 6.562125 4.156012 0 6.999600 4.812225 0
+ L3 65280 0.000000 7.655812 -0.656212 0 6.780862 -0.437475 0
+ L3 65280 0.000000 -6.124650 -5.468437 0 -5.687175 -4.593487 0
+ L3 65280 0.000000 -6.999600 -4.156012 0 -6.343387 -4.593487 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 3.806650 3.120205 0
+ 3.369821 2.152941 0
+ 2.683376 2.745780 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.437475 -4.812225 0 0.874950 -4.156012 0
+ L3 26624 0.000000 3.062325 -4.156012 0 1.968637 -3.718537 0
+ L3 26624 0.000000 3.499800 -5.249700 0 2.843587 -4.812225 0
+ L3 26624 0.000000 1.968637 -5.687175 0 1.531162 -4.812225 0
+ L3 26624 0.000000 -0.874950 -5.468437 0 -0.437475 -4.812225 0
+ L3 26624 0.000000 -2.624850 -3.499800 0 -1.749900 -3.499800 0
+ L3 26624 0.000000 -1.968637 -2.406112 0 -0.874950 -2.843587 0
+ L3 26624 0.000000 -2.624850 -1.312425 0 -1.749900 -0.656212 0
+ L3 26624 0.000000 -3.937275 -1.093687 0 -3.062325 -0.656212 0
+ L3 26624 0.000000 -5.030962 -0.437475 0 -3.937275 0.000000 0
+ L3 26624 0.000000 -3.499800 1.093687 0 -4.374750 1.968637 0
+ L3 26624 0.000000 -3.937275 3.062325 0 -3.281062 2.187375 0
+ L3 26624 0.000000 -2.406112 4.812225 0 -1.749900 3.937275 0
+ L3 26624 0.000000 -0.874950 3.937275 0 -1.093687 5.249700 0
+ L3 26624 0.000000 -0.656212 2.406112 0 -0.437475 3.281062 0
+ L3 26624 0.000000 1.531162 3.937275 0 1.968637 5.249700 0
+ L3 26624 0.000000 2.624850 3.718537 0 3.937275 4.374750 0
+ L3 26624 0.000000 5.905912 1.531162 0 4.812225 1.749900 0
+ L3 26624 0.000000 5.905912 3.499800 0 4.812225 3.062325 0
+ L3 26624 0.000000 6.343387 2.624850 0 5.249700 2.406112 0
+ L3 26624 0.000000 2.624850 6.343387 0 2.406112 5.468437 0
+ L3 26624 0.000000 3.937275 5.687175 0 3.281062 5.030962 0
+ L3 26624 0.000000 3.062325 5.905912 0 2.624850 4.593487 0
+ L3 26624 0.000000 6.562125 -1.093687 0 5.249700 -1.312425 0
+ L3 26624 0.000000 5.468437 -2.843587 0 4.374750 -2.187375 0
+ L3 26624 0.000000 6.562125 -2.187375 0 5.468437 -1.968637 0
+ L3 26624 0.000000 -2.187375 6.124650 0 -1.968637 5.249700 0
+ L3 26624 0.000000 -4.812225 3.062325 0 -4.156012 2.624850 0
+ L3 26624 0.000000 3.062325 -6.999600 0 2.624850 -5.905912 0
+ L3 26624 0.000000 3.937275 -6.343387 0 3.281062 -5.687175 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 18"" Decid-18b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.531162 7.437075 0 -0.656212 6.780862 0
+ L3 65280 0.000000 -2.187375 6.999600 0 -2.406112 5.905912 0
+ L3 65280 0.000000 -5.030962 4.593487 0 -3.499800 4.593487 0
+ L3 65280 0.000000 -6.124650 4.156012 0 -5.468437 3.499800 0
+ L3 65280 0.000000 -4.593487 3.718537 0 -3.718537 3.062325 0
+ L3 65280 0.000000 -4.156012 2.406112 0 -5.468437 2.187375 0
+ L3 65280 0.000000 -7.437075 1.749900 0 -5.905912 1.749900 0
+ L3 65280 0.000000 -7.437075 0.437475 0 -6.124650 1.093687 0
+ L3 65280 0.000000 -5.030962 -0.656212 0 -6.124650 -0.437475 0
+ L3 65280 0.000000 -5.905912 -1.531162 0 -7.437075 -2.406112 0
+ L3 65280 0.000000 -6.780862 -3.281062 0 -5.687175 -3.499800 0
+ L3 65280 0.000000 -5.249700 -5.030962 0 -4.812225 -4.374750 0
+ L3 65280 0.000000 -3.281062 -6.562125 0 -3.718537 -7.218337 0
+ L3 65280 0.000000 -1.968637 -6.999600 0 -1.531162 -7.655812 0
+ L3 65280 0.000000 -0.218737 -5.905912 0 0.000000 -6.562125 0
+ L3 65280 0.000000 1.093687 -5.905912 0 0.437475 -6.343387 0
+ L3 65280 0.000000 2.843587 -6.999600 0 2.624850 -7.874550 0
+ L3 65280 0.000000 4.156012 -6.562125 0 4.812225 -6.780862 0
+ L3 65280 0.000000 7.655812 -3.062325 0 6.999600 -3.281062 0
+ L3 65280 0.000000 6.562125 -4.156012 0 6.999600 -4.812225 0
+ L3 65280 0.000000 7.655812 0.656212 0 6.780862 0.437475 0
+ L3 65280 0.000000 -6.124650 5.468437 0 -5.687175 4.593487 0
+ L3 65280 0.000000 -6.999600 4.156012 0 -6.343387 4.593487 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 3.806650 -3.120205 0
+ 3.369821 -2.152941 0
+ 2.683376 -2.745780 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.437475 4.812225 0 0.874950 4.156012 0
+ L3 26624 0.000000 3.062325 4.156012 0 1.968637 3.718537 0
+ L3 26624 0.000000 3.499800 5.249700 0 2.843587 4.812225 0
+ L3 26624 0.000000 1.968637 5.687175 0 1.531162 4.812225 0
+ L3 26624 0.000000 -0.874950 5.468437 0 -0.437475 4.812225 0
+ L3 26624 0.000000 -2.624850 3.499800 0 -1.749900 3.499800 0
+ L3 26624 0.000000 -1.968637 2.406112 0 -0.874950 2.843587 0
+ L3 26624 0.000000 -2.624850 1.312425 0 -1.749900 0.656212 0
+ L3 26624 0.000000 -3.937275 1.093687 0 -3.062325 0.656212 0
+ L3 26624 0.000000 -5.030962 0.437475 0 -3.937275 0.000000 0
+ L3 26624 0.000000 -3.499800 -1.093687 0 -4.374750 -1.968637 0
+ L3 26624 0.000000 -3.937275 -3.062325 0 -3.281062 -2.187375 0
+ L3 26624 0.000000 -2.406112 -4.812225 0 -1.749900 -3.937275 0
+ L3 26624 0.000000 -0.874950 -3.937275 0 -1.093687 -5.249700 0
+ L3 26624 0.000000 -0.656212 -2.406112 0 -0.437475 -3.281062 0
+ L3 26624 0.000000 1.531162 -3.937275 0 1.968637 -5.249700 0
+ L3 26624 0.000000 2.624850 -3.718537 0 3.937275 -4.374750 0
+ L3 26624 0.000000 5.905912 -1.531162 0 4.812225 -1.749900 0
+ L3 26624 0.000000 5.905912 -3.499800 0 4.812225 -3.062325 0
+ L3 26624 0.000000 6.343387 -2.624850 0 5.249700 -2.406112 0
+ L3 26624 0.000000 2.624850 -6.343387 0 2.406112 -5.468437 0
+ L3 26624 0.000000 3.937275 -5.687175 0 3.281062 -5.030962 0
+ L3 26624 0.000000 3.062325 -5.905912 0 2.624850 -4.593487 0
+ L3 26624 0.000000 6.562125 1.093687 0 5.249700 1.312425 0
+ L3 26624 0.000000 5.468437 2.843587 0 4.374750 2.187375 0
+ L3 26624 0.000000 6.562125 2.187375 0 5.468437 1.968637 0
+ L3 26624 0.000000 -2.187375 -6.124650 0 -1.968637 -5.249700 0
+ L3 26624 0.000000 -4.812225 -3.062325 0 -4.156012 -2.624850 0
+ L3 26624 0.000000 3.062325 6.999600 0 2.624850 5.905912 0
+ L3 26624 0.000000 3.937275 6.343387 0 3.281062 5.687175 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 20"" Decid-20a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.701292 -8.263417 0 -0.729125 -7.534292 0
+ L3 65280 0.000000 -2.430417 -7.777333 0 -2.673458 -6.562125 0
+ L3 65280 0.000000 -5.589958 -5.103875 0 -3.888667 -5.103875 0
+ L3 65280 0.000000 -6.805167 -4.617792 0 -6.076042 -3.888667 0
+ L3 65280 0.000000 -5.103875 -4.131708 0 -4.131708 -3.402583 0
+ L3 65280 0.000000 -4.617792 -2.673458 0 -6.076042 -2.430417 0
+ L3 65280 0.000000 -8.263417 -1.944333 0 -6.562125 -1.944333 0
+ L3 65280 0.000000 -8.263417 -0.486083 0 -6.805167 -1.215208 0
+ L3 65280 0.000000 -5.589958 0.729125 0 -6.805167 0.486083 0
+ L3 65280 0.000000 -6.562125 1.701292 0 -8.263417 2.673458 0
+ L3 65280 0.000000 -7.534292 3.645625 0 -6.319083 3.888667 0
+ L3 65280 0.000000 -5.833000 5.589958 0 -5.346917 4.860833 0
+ L3 65280 0.000000 -3.645625 7.291250 0 -4.131708 8.020375 0
+ L3 65280 0.000000 -2.187375 7.777333 0 -1.701292 8.506458 0
+ L3 65280 0.000000 -0.243042 6.562125 0 0.000000 7.291250 0
+ L3 65280 0.000000 1.215208 6.562125 0 0.486083 7.048208 0
+ L3 65280 0.000000 3.159542 7.777333 0 2.916500 8.749500 0
+ L3 65280 0.000000 4.617792 7.291250 0 5.346917 7.534292 0
+ L3 65280 0.000000 8.506458 3.402583 0 7.777333 3.645625 0
+ L3 65280 0.000000 7.291250 4.617792 0 7.777333 5.346917 0
+ L3 65280 0.000000 8.506458 -0.729125 0 7.534292 -0.486083 0
+ L3 65280 0.000000 -6.805167 -6.076042 0 -6.319083 -5.103875 0
+ L3 65280 0.000000 -7.777333 -4.617792 0 -7.048208 -5.103875 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 4.229611 3.466894 0
+ 3.744246 2.392157 0
+ 2.981529 3.050867 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.486083 -5.346917 0 0.972167 -4.617792 0
+ L3 26624 0.000000 3.402583 -4.617792 0 2.187375 -4.131708 0
+ L3 26624 0.000000 3.888667 -5.833000 0 3.159542 -5.346917 0
+ L3 26624 0.000000 2.187375 -6.319083 0 1.701292 -5.346917 0
+ L3 26624 0.000000 -0.972167 -6.076042 0 -0.486083 -5.346917 0
+ L3 26624 0.000000 -2.916500 -3.888667 0 -1.944333 -3.888667 0
+ L3 26624 0.000000 -2.187375 -2.673458 0 -0.972167 -3.159542 0
+ L3 26624 0.000000 -2.916500 -1.458250 0 -1.944333 -0.729125 0
+ L3 26624 0.000000 -4.374750 -1.215208 0 -3.402583 -0.729125 0
+ L3 26624 0.000000 -5.589958 -0.486083 0 -4.374750 0.000000 0
+ L3 26624 0.000000 -3.888667 1.215208 0 -4.860833 2.187375 0
+ L3 26624 0.000000 -4.374750 3.402583 0 -3.645625 2.430417 0
+ L3 26624 0.000000 -2.673458 5.346917 0 -1.944333 4.374750 0
+ L3 26624 0.000000 -0.972167 4.374750 0 -1.215208 5.833000 0
+ L3 26624 0.000000 -0.729125 2.673458 0 -0.486083 3.645625 0
+ L3 26624 0.000000 1.701292 4.374750 0 2.187375 5.833000 0
+ L3 26624 0.000000 2.916500 4.131708 0 4.374750 4.860833 0
+ L3 26624 0.000000 6.562125 1.701292 0 5.346917 1.944333 0
+ L3 26624 0.000000 6.562125 3.888667 0 5.346917 3.402583 0
+ L3 26624 0.000000 7.048208 2.916500 0 5.833000 2.673458 0
+ L3 26624 0.000000 2.916500 7.048208 0 2.673458 6.076042 0
+ L3 26624 0.000000 4.374750 6.319083 0 3.645625 5.589958 0
+ L3 26624 0.000000 3.402583 6.562125 0 2.916500 5.103875 0
+ L3 26624 0.000000 7.291250 -1.215208 0 5.833000 -1.458250 0
+ L3 26624 0.000000 6.076042 -3.159542 0 4.860833 -2.430417 0
+ L3 26624 0.000000 7.291250 -2.430417 0 6.076042 -2.187375 0
+ L3 26624 0.000000 -2.430417 6.805167 0 -2.187375 5.833000 0
+ L3 26624 0.000000 -5.346917 3.402583 0 -4.617792 2.916500 0
+ L3 26624 0.000000 3.402583 -7.777333 0 2.916500 -6.562125 0
+ L3 26624 0.000000 4.374750 -7.048208 0 3.645625 -6.319083 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 20"" Decid-20b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -1.701292 8.263417 0 -0.729125 7.534292 0
+ L3 65280 0.000000 -2.430417 7.777333 0 -2.673458 6.562125 0
+ L3 65280 0.000000 -5.589958 5.103875 0 -3.888667 5.103875 0
+ L3 65280 0.000000 -6.805167 4.617792 0 -6.076042 3.888667 0
+ L3 65280 0.000000 -5.103875 4.131708 0 -4.131708 3.402583 0
+ L3 65280 0.000000 -4.617792 2.673458 0 -6.076042 2.430417 0
+ L3 65280 0.000000 -8.263417 1.944333 0 -6.562125 1.944333 0
+ L3 65280 0.000000 -8.263417 0.486083 0 -6.805167 1.215208 0
+ L3 65280 0.000000 -5.589958 -0.729125 0 -6.805167 -0.486083 0
+ L3 65280 0.000000 -6.562125 -1.701292 0 -8.263417 -2.673458 0
+ L3 65280 0.000000 -7.534292 -3.645625 0 -6.319083 -3.888667 0
+ L3 65280 0.000000 -5.833000 -5.589958 0 -5.346917 -4.860833 0
+ L3 65280 0.000000 -3.645625 -7.291250 0 -4.131708 -8.020375 0
+ L3 65280 0.000000 -2.187375 -7.777333 0 -1.701292 -8.506458 0
+ L3 65280 0.000000 -0.243042 -6.562125 0 0.000000 -7.291250 0
+ L3 65280 0.000000 1.215208 -6.562125 0 0.486083 -7.048208 0
+ L3 65280 0.000000 3.159542 -7.777333 0 2.916500 -8.749500 0
+ L3 65280 0.000000 4.617792 -7.291250 0 5.346917 -7.534292 0
+ L3 65280 0.000000 8.506458 -3.402583 0 7.777333 -3.645625 0
+ L3 65280 0.000000 7.291250 -4.617792 0 7.777333 -5.346917 0
+ L3 65280 0.000000 8.506458 0.729125 0 7.534292 0.486083 0
+ L3 65280 0.000000 -6.805167 6.076042 0 -6.319083 5.103875 0
+ L3 65280 0.000000 -7.777333 4.617792 0 -7.048208 5.103875 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 4.229611 -3.466894 0
+ 3.744246 -2.392157 0
+ 2.981529 -3.050867 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.486083 5.346917 0 0.972167 4.617792 0
+ L3 26624 0.000000 3.402583 4.617792 0 2.187375 4.131708 0
+ L3 26624 0.000000 3.888667 5.833000 0 3.159542 5.346917 0
+ L3 26624 0.000000 2.187375 6.319083 0 1.701292 5.346917 0
+ L3 26624 0.000000 -0.972167 6.076042 0 -0.486083 5.346917 0
+ L3 26624 0.000000 -2.916500 3.888667 0 -1.944333 3.888667 0
+ L3 26624 0.000000 -2.187375 2.673458 0 -0.972167 3.159542 0
+ L3 26624 0.000000 -2.916500 1.458250 0 -1.944333 0.729125 0
+ L3 26624 0.000000 -4.374750 1.215208 0 -3.402583 0.729125 0
+ L3 26624 0.000000 -5.589958 0.486083 0 -4.374750 0.000000 0
+ L3 26624 0.000000 -3.888667 -1.215208 0 -4.860833 -2.187375 0
+ L3 26624 0.000000 -4.374750 -3.402583 0 -3.645625 -2.430417 0
+ L3 26624 0.000000 -2.673458 -5.346917 0 -1.944333 -4.374750 0
+ L3 26624 0.000000 -0.972167 -4.374750 0 -1.215208 -5.833000 0
+ L3 26624 0.000000 -0.729125 -2.673458 0 -0.486083 -3.645625 0
+ L3 26624 0.000000 1.701292 -4.374750 0 2.187375 -5.833000 0
+ L3 26624 0.000000 2.916500 -4.131708 0 4.374750 -4.860833 0
+ L3 26624 0.000000 6.562125 -1.701292 0 5.346917 -1.944333 0
+ L3 26624 0.000000 6.562125 -3.888667 0 5.346917 -3.402583 0
+ L3 26624 0.000000 7.048208 -2.916500 0 5.833000 -2.673458 0
+ L3 26624 0.000000 2.916500 -7.048208 0 2.673458 -6.076042 0
+ L3 26624 0.000000 4.374750 -6.319083 0 3.645625 -5.589958 0
+ L3 26624 0.000000 3.402583 -6.562125 0 2.916500 -5.103875 0
+ L3 26624 0.000000 7.291250 1.215208 0 5.833000 1.458250 0
+ L3 26624 0.000000 6.076042 3.159542 0 4.860833 2.430417 0
+ L3 26624 0.000000 7.291250 2.430417 0 6.076042 2.187375 0
+ L3 26624 0.000000 -2.430417 -6.805167 0 -2.187375 -5.833000 0
+ L3 26624 0.000000 -5.346917 -3.402583 0 -4.617792 -2.916500 0
+ L3 26624 0.000000 3.402583 7.777333 0 2.916500 6.562125 0
+ L3 26624 0.000000 4.374750 7.048208 0 3.645625 6.319083 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 24"" Decid-24a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -2.041550 -9.916100 0 -0.874950 -9.041150 0
+ L3 65280 0.000000 -2.916500 -9.332800 0 -3.208150 -7.874550 0
+ L3 65280 0.000000 -6.707950 -6.124650 0 -4.666400 -6.124650 0
+ L3 65280 0.000000 -8.166200 -5.541350 0 -7.291250 -4.666400 0
+ L3 65280 0.000000 -6.124650 -4.958050 0 -4.958050 -4.083100 0
+ L3 65280 0.000000 -5.541350 -3.208150 0 -7.291250 -2.916500 0
+ L3 65280 0.000000 -9.916100 -2.333200 0 -7.874550 -2.333200 0
+ L3 65280 0.000000 -9.916100 -0.583300 0 -8.166200 -1.458250 0
+ L3 65280 0.000000 -6.707950 0.874950 0 -8.166200 0.583300 0
+ L3 65280 0.000000 -7.874550 2.041550 0 -9.916100 3.208150 0
+ L3 65280 0.000000 -9.041150 4.374750 0 -7.582900 4.666400 0
+ L3 65280 0.000000 -6.999600 6.707950 0 -6.416300 5.833000 0
+ L3 65280 0.000000 -4.374750 8.749500 0 -4.958050 9.624450 0
+ L3 65280 0.000000 -2.624850 9.332800 0 -2.041550 10.207750 0
+ L3 65280 0.000000 -0.291650 7.874550 0 0.000000 8.749500 0
+ L3 65280 0.000000 1.458250 7.874550 0 0.583300 8.457850 0
+ L3 65280 0.000000 3.791450 9.332800 0 3.499800 10.499400 0
+ L3 65280 0.000000 5.541350 8.749500 0 6.416300 9.041150 0
+ L3 65280 0.000000 10.207750 4.083100 0 9.332800 4.374750 0
+ L3 65280 0.000000 8.749500 5.541350 0 9.332800 6.416300 0
+ L3 65280 0.000000 10.207750 -0.874950 0 9.041150 -0.583300 0
+ L3 65280 0.000000 -8.166200 -7.291250 0 -7.582900 -6.124650 0
+ L3 65280 0.000000 -9.332800 -5.541350 0 -8.457850 -6.124650 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 5.075533 4.160273 0
+ 4.493095 2.870588 0
+ 3.577835 3.661040 0
+ F4 26624 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
+ F4 26624 0.000000 4 0
+ -3.827451 4.825917 0
+ -2.662575 4.534698 0
+ -1.830520 2.579369 0
+ -3.120205 2.912191 0
+ L3 26624 0.000000 0.583300 -6.416300 0 1.166600 -5.541350 0
+ L3 26624 0.000000 4.083100 -5.541350 0 2.624850 -4.958050 0
+ L3 26624 0.000000 4.666400 -6.999600 0 3.791450 -6.416300 0
+ L3 26624 0.000000 2.624850 -7.582900 0 2.041550 -6.416300 0
+ L3 26624 0.000000 -1.166600 -7.291250 0 -0.583300 -6.416300 0
+ L3 26624 0.000000 -3.499800 -4.666400 0 -2.333200 -4.666400 0
+ L3 26624 0.000000 -2.624850 -3.208150 0 -1.166600 -3.791450 0
+ L3 26624 0.000000 -3.499800 -1.749900 0 -2.333200 -0.874950 0
+ L3 26624 0.000000 -5.249700 -1.458250 0 -4.083100 -0.874950 0
+ L3 26624 0.000000 -6.707950 -0.583300 0 -5.249700 0.000000 0
+ L3 26624 0.000000 -4.666400 1.458250 0 -5.833000 2.624850 0
+ L3 26624 0.000000 -5.249700 4.083100 0 -4.374750 2.916500 0
+ L3 26624 0.000000 -3.208150 6.416300 0 -2.333200 5.249700 0
+ L3 26624 0.000000 -1.166600 5.249700 0 -1.458250 6.999600 0
+ L3 26624 0.000000 -0.874950 3.208150 0 -0.583300 4.374750 0
+ L3 26624 0.000000 2.041550 5.249700 0 2.624850 6.999600 0
+ L3 26624 0.000000 3.499800 4.958050 0 5.249700 5.833000 0
+ L3 26624 0.000000 7.874550 2.041550 0 6.416300 2.333200 0
+ L3 26624 0.000000 7.874550 4.666400 0 6.416300 4.083100 0
+ L3 26624 0.000000 8.457850 3.499800 0 6.999600 3.208150 0
+ L3 26624 0.000000 3.499800 8.457850 0 3.208150 7.291250 0
+ L3 26624 0.000000 5.249700 7.582900 0 4.374750 6.707950 0
+ L3 26624 0.000000 4.083100 7.874550 0 3.499800 6.124650 0
+ L3 26624 0.000000 8.749500 -1.458250 0 6.999600 -1.749900 0
+ L3 26624 0.000000 7.291250 -3.791450 0 5.833000 -2.916500 0
+ L3 26624 0.000000 8.749500 -2.916500 0 7.291250 -2.624850 0
+ L3 26624 0.000000 -2.916500 8.166200 0 -2.624850 6.999600 0
+ L3 26624 0.000000 -6.416300 4.083100 0 -5.541350 3.499800 0
+ L3 26624 0.000000 4.083100 -9.332800 0 3.499800 -7.874550 0
+ L3 26624 0.000000 5.249700 -8.457850 0 4.374750 -7.582900 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 24"" Decid-24b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -2.041550 9.916100 0 -0.874950 9.041150 0
+ L3 65280 0.000000 -2.916500 9.332800 0 -3.208150 7.874550 0
+ L3 65280 0.000000 -6.707950 6.124650 0 -4.666400 6.124650 0
+ L3 65280 0.000000 -8.166200 5.541350 0 -7.291250 4.666400 0
+ L3 65280 0.000000 -6.124650 4.958050 0 -4.958050 4.083100 0
+ L3 65280 0.000000 -5.541350 3.208150 0 -7.291250 2.916500 0
+ L3 65280 0.000000 -9.916100 2.333200 0 -7.874550 2.333200 0
+ L3 65280 0.000000 -9.916100 0.583300 0 -8.166200 1.458250 0
+ L3 65280 0.000000 -6.707950 -0.874950 0 -8.166200 -0.583300 0
+ L3 65280 0.000000 -7.874550 -2.041550 0 -9.916100 -3.208150 0
+ L3 65280 0.000000 -9.041150 -4.374750 0 -7.582900 -4.666400 0
+ L3 65280 0.000000 -6.999600 -6.707950 0 -6.416300 -5.833000 0
+ L3 65280 0.000000 -4.374750 -8.749500 0 -4.958050 -9.624450 0
+ L3 65280 0.000000 -2.624850 -9.332800 0 -2.041550 -10.207750 0
+ L3 65280 0.000000 -0.291650 -7.874550 0 0.000000 -8.749500 0
+ L3 65280 0.000000 1.458250 -7.874550 0 0.583300 -8.457850 0
+ L3 65280 0.000000 3.791450 -9.332800 0 3.499800 -10.499400 0
+ L3 65280 0.000000 5.541350 -8.749500 0 6.416300 -9.041150 0
+ L3 65280 0.000000 10.207750 -4.083100 0 9.332800 -4.374750 0
+ L3 65280 0.000000 8.749500 -5.541350 0 9.332800 -6.416300 0
+ L3 65280 0.000000 10.207750 0.874950 0 9.041150 0.583300 0
+ L3 65280 0.000000 -8.166200 7.291250 0 -7.582900 6.124650 0
+ L3 65280 0.000000 -9.332800 5.541350 0 -8.457850 6.124650 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 5.075533 -4.160273 0
+ 4.493095 -2.870588 0
+ 3.577835 -3.661040 0
+ F4 26624 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
+ F4 26624 0.000000 4 0
+ -3.827451 -4.825917 0
+ -2.662575 -4.534698 0
+ -1.830520 -2.579369 0
+ -3.120205 -2.912191 0
+ L3 26624 0.000000 0.583300 6.416300 0 1.166600 5.541350 0
+ L3 26624 0.000000 4.083100 5.541350 0 2.624850 4.958050 0
+ L3 26624 0.000000 4.666400 6.999600 0 3.791450 6.416300 0
+ L3 26624 0.000000 2.624850 7.582900 0 2.041550 6.416300 0
+ L3 26624 0.000000 -1.166600 7.291250 0 -0.583300 6.416300 0
+ L3 26624 0.000000 -3.499800 4.666400 0 -2.333200 4.666400 0
+ L3 26624 0.000000 -2.624850 3.208150 0 -1.166600 3.791450 0
+ L3 26624 0.000000 -3.499800 1.749900 0 -2.333200 0.874950 0
+ L3 26624 0.000000 -5.249700 1.458250 0 -4.083100 0.874950 0
+ L3 26624 0.000000 -6.707950 0.583300 0 -5.249700 0.000000 0
+ L3 26624 0.000000 -4.666400 -1.458250 0 -5.833000 -2.624850 0
+ L3 26624 0.000000 -5.249700 -4.083100 0 -4.374750 -2.916500 0
+ L3 26624 0.000000 -3.208150 -6.416300 0 -2.333200 -5.249700 0
+ L3 26624 0.000000 -1.166600 -5.249700 0 -1.458250 -6.999600 0
+ L3 26624 0.000000 -0.874950 -3.208150 0 -0.583300 -4.374750 0
+ L3 26624 0.000000 2.041550 -5.249700 0 2.624850 -6.999600 0
+ L3 26624 0.000000 3.499800 -4.958050 0 5.249700 -5.833000 0
+ L3 26624 0.000000 7.874550 -2.041550 0 6.416300 -2.333200 0
+ L3 26624 0.000000 7.874550 -4.666400 0 6.416300 -4.083100 0
+ L3 26624 0.000000 8.457850 -3.499800 0 6.999600 -3.208150 0
+ L3 26624 0.000000 3.499800 -8.457850 0 3.208150 -7.291250 0
+ L3 26624 0.000000 5.249700 -7.582900 0 4.374750 -6.707950 0
+ L3 26624 0.000000 4.083100 -7.874550 0 3.499800 -6.124650 0
+ L3 26624 0.000000 8.749500 1.458250 0 6.999600 1.749900 0
+ L3 26624 0.000000 7.291250 3.791450 0 5.833000 2.916500 0
+ L3 26624 0.000000 8.749500 2.916500 0 7.291250 2.624850 0
+ L3 26624 0.000000 -2.916500 -8.166200 0 -2.624850 -6.999600 0
+ L3 26624 0.000000 -6.416300 -4.083100 0 -5.541350 -3.499800 0
+ L3 26624 0.000000 4.083100 9.332800 0 3.499800 7.874550 0
+ L3 26624 0.000000 5.249700 8.457850 0 4.374750 7.582900 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 28"" Decid-28a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -8.469238 -8.034549 0
+ -7.267810 -12.577448 0
+ -4.564597 -13.741331 0
+ -1.523483 -9.986869 0
+ 1.968167 -13.253251 0
+ 6.173164 -11.263386 0
+ 5.197004 11.075663 0
+ 1.217274 13.178161 0
+ -0.434689 10.625127 0
+ -3.776160 10.662672 0
+ -4.602142 13.253251 0
+ -9.745755 11.601287 0
+ -9.107496 8.560173 0
+ -13.350038 8.259816 0
+ -15.527626 3.867096 0
+ -13.124770 1.389151 0
+ -16.278518 0.000000 0
+ -15.452537 -3.153748 0
+ -12.111066 -4.355176 0
+ -14.513921 -6.307496 0
+ -12.561601 -9.836690 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -11.713921 -6.307496 0
+ -9.761601 -9.836690 0
+ -5.669238 -8.034549 0
+ -4.467810 -12.577448 0
+ -1.764597 -13.741331 0
+ 1.276517 -9.986869 0
+ 4.768167 -13.253251 0
+ 8.973164 -11.263386 0
+ 7.396290 -7.095933 0
+ 12.427269 -5.706782 0
+ 13.178161 -0.976160 0
+ 10.550038 1.464240 0
+ 13.027983 4.993434 0
+ 11.150752 8.147182 0
+ 8.109638 7.020844 0
+ 7.997004 11.075663 0
+ 4.017274 13.178161 0
+ 2.365311 10.625127 0
+ -0.976160 10.662672 0
+ -1.802142 13.253251 0
+ -6.945755 11.601287 0
+ -6.307496 8.560173 0
+ -10.550038 8.259816 0
+ -12.727626 3.867096 0
+ -10.324770 1.389151 0
+ -13.478518 0.000000 0
+ -12.652537 -3.153748 0
+ -9.311066 -4.355176 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 1.877231 -8.785441 0
+ 4.505354 -11.413564 0
+ 7.020844 -9.874235 0
+ 5.894505 -5.481514 0
+ 10.925484 -4.092364 0
+ 11.263386 -1.914776 0
+ 8.109638 0.262812 0
+ 10.850395 4.392720 0
+ 9.648967 5.819416 0
+ 6.645398 5.744327 0
+ 6.495219 9.198432 0
+ 3.904640 10.625127 0
+ 1.764597 8.109638 0
+ -1.464240 8.560173 0
+ -2.215133 10.287226 0
+ -4.955890 9.573878 0
+ -4.993434 6.570308 0
+ -7.283656 6.495219 0
+ -8.785441 3.491650 0
+ -6.119773 0.976160 0
+ -8.635262 -0.337902 0
+ -8.222272 -2.140043 0
+ -4.204997 -2.890936 0
+ -5.744327 -5.631693 0
+ -3.228837 -7.584013 0
+ -2.215133 -9.799146 0
+ L3 65280 0.000000 -2.381808 -11.568783 0 -1.020775 -10.548008 0
+ L3 65280 0.000000 -3.402583 -10.888267 0 -3.742842 -9.186975 0
+ L3 65280 0.000000 -7.825942 -7.145425 0 -5.444133 -7.145425 0
+ L3 65280 0.000000 -9.527233 -6.464908 0 -8.506458 -5.444133 0
+ L3 65280 0.000000 -7.145425 -5.784392 0 -5.784392 -4.763617 0
+ L3 65280 0.000000 -6.464908 -3.742842 0 -8.506458 -3.402583 0
+ L3 65280 0.000000 -11.568783 -2.722067 0 -9.186975 -2.722067 0
+ L3 65280 0.000000 -11.568783 -0.680517 0 -9.527233 -1.701292 0
+ L3 65280 0.000000 -7.825942 1.020775 0 -9.527233 0.680517 0
+ L3 65280 0.000000 -9.186975 2.381808 0 -11.568783 3.742842 0
+ L3 65280 0.000000 -10.548008 5.103875 0 -8.846717 5.444133 0
+ L3 65280 0.000000 -8.166200 7.825942 0 -7.485683 6.805167 0
+ L3 65280 0.000000 -5.103875 10.207750 0 -5.784392 11.228525 0
+ L3 65280 0.000000 -3.062325 10.888267 0 -2.381808 11.909042 0
+ L3 65280 0.000000 -0.340258 9.186975 0 0.000000 10.207750 0
+ L3 65280 0.000000 1.701292 9.186975 0 0.680517 9.867492 0
+ L3 65280 0.000000 4.423358 10.888267 0 4.083100 12.249300 0
+ L3 65280 0.000000 6.464908 10.207750 0 7.485683 10.548008 0
+ L3 65280 0.000000 11.909042 4.763617 0 10.888267 5.103875 0
+ L3 65280 0.000000 10.207750 6.464908 0 10.888267 7.485683 0
+ L3 65280 0.000000 11.909042 -1.020775 0 10.548008 -0.680517 0
+ L3 65280 0.000000 -9.527233 -8.506458 0 -8.846717 -7.145425 0
+ L3 65280 0.000000 -10.888267 -6.464908 0 -9.867492 -7.145425 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 5.241944 -5.387554 0
+ 3.106337 -4.756579 0
+ 2.863655 -3.154874 0
+ 4.271214 -3.737312 0
+ F4 26624 0.000000 5 0
+ -2.038534 -6.455357 0
+ -1.844388 -5.339017 0
+ 0.242683 -4.416823 0
+ 0.825121 -5.775846 0
+ -0.242683 -6.795113 0
+ F4 26624 0.000000 4 0
+ 6.649503 0.242683 0
+ 4.125604 0.825121 0
+ 3.591703 -0.436829 0
+ 7.037795 -0.630975 0
+ F4 26624 0.000000 4 0
+ 1.601705 6.455357 0
+ 0.339756 5.484627 0
+ 0.679511 3.446093 0
+ 1.456096 3.737312 0
+ F4 26624 0.000000 3 0
+ 5.921455 4.853652 0
+ 5.241944 3.349020 0
+ 4.174141 4.271214 0
+ F4 26624 0.000000 5 0
+ -5.096335 0.582438 0
+ -4.416823 0.097073 0
+ -2.087070 -0.485365 0
+ -0.825121 0.825121 0
+ -3.737312 1.261950 0
+ F4 26624 0.000000 4 0
+ -4.465360 5.630236 0
+ -3.106337 5.290481 0
+ -2.135607 3.009264 0
+ -3.640239 3.397556 0
+ L3 26624 0.000000 0.680517 -7.485683 0 1.361033 -6.464908 0
+ L3 26624 0.000000 4.763617 -6.464908 0 3.062325 -5.784392 0
+ L3 26624 0.000000 5.444133 -8.166200 0 4.423358 -7.485683 0
+ L3 26624 0.000000 3.062325 -8.846717 0 2.381808 -7.485683 0
+ L3 26624 0.000000 -1.361033 -8.506458 0 -0.680517 -7.485683 0
+ L3 26624 0.000000 -4.083100 -5.444133 0 -2.722067 -5.444133 0
+ L3 26624 0.000000 -3.062325 -3.742842 0 -1.361033 -4.423358 0
+ L3 26624 0.000000 -4.083100 -2.041550 0 -2.722067 -1.020775 0
+ L3 26624 0.000000 -6.124650 -1.701292 0 -4.763617 -1.020775 0
+ L3 26624 0.000000 -7.825942 -0.680517 0 -6.124650 0.000000 0
+ L3 26624 0.000000 -5.444133 1.701292 0 -6.805167 3.062325 0
+ L3 26624 0.000000 -6.124650 4.763617 0 -5.103875 3.402583 0
+ L3 26624 0.000000 -3.742842 7.485683 0 -2.722067 6.124650 0
+ L3 26624 0.000000 -1.361033 6.124650 0 -1.701292 8.166200 0
+ L3 26624 0.000000 -1.020775 3.742842 0 -0.680517 5.103875 0
+ L3 26624 0.000000 2.381808 6.124650 0 3.062325 8.166200 0
+ L3 26624 0.000000 4.083100 5.784392 0 6.124650 6.805167 0
+ L3 26624 0.000000 9.186975 2.381808 0 7.485683 2.722067 0
+ L3 26624 0.000000 9.186975 5.444133 0 7.485683 4.763617 0
+ L3 26624 0.000000 9.867492 4.083100 0 8.166200 3.742842 0
+ L3 26624 0.000000 4.083100 9.867492 0 3.742842 8.506458 0
+ L3 26624 0.000000 6.124650 8.846717 0 5.103875 7.825942 0
+ L3 26624 0.000000 4.763617 9.186975 0 4.083100 7.145425 0
+ L3 26624 0.000000 10.207750 -1.701292 0 8.166200 -2.041550 0
+ L3 26624 0.000000 8.506458 -4.423358 0 6.805167 -3.402583 0
+ L3 26624 0.000000 10.207750 -3.402583 0 8.506458 -3.062325 0
+ L3 26624 0.000000 -3.402583 9.527233 0 -3.062325 8.166200 0
+ L3 26624 0.000000 -7.485683 4.763617 0 -6.464908 4.083100 0
+ L3 26624 0.000000 4.763617 -10.888267 0 4.083100 -9.186975 0
+ L3 26624 0.000000 6.124650 -9.867492 0 5.103875 -8.846717 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 28"" Decid-28b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -8.469238 8.034549 0
+ -7.267810 12.577448 0
+ -4.564597 13.741331 0
+ -1.523483 9.986869 0
+ 1.968167 13.253251 0
+ 6.173164 11.263386 0
+ 5.197004 -11.075663 0
+ 1.217274 -13.178161 0
+ -0.434689 -10.625127 0
+ -3.776160 -10.662672 0
+ -4.602142 -13.253251 0
+ -9.745755 -11.601287 0
+ -9.107496 -8.560173 0
+ -13.350038 -8.259816 0
+ -15.527626 -3.867096 0
+ -13.124770 -1.389151 0
+ -16.278518 0.000000 0
+ -15.452537 3.153748 0
+ -12.111066 4.355176 0
+ -14.513921 6.307496 0
+ -12.561601 9.836690 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -11.713921 6.307496 0
+ -9.761601 9.836690 0
+ -5.669238 8.034549 0
+ -4.467810 12.577448 0
+ -1.764597 13.741331 0
+ 1.276517 9.986869 0
+ 4.768167 13.253251 0
+ 8.973164 11.263386 0
+ 7.396290 7.095933 0
+ 12.427269 5.706782 0
+ 13.178161 0.976160 0
+ 10.550038 -1.464240 0
+ 13.027983 -4.993434 0
+ 11.150752 -8.147182 0
+ 8.109638 -7.020844 0
+ 7.997004 -11.075663 0
+ 4.017274 -13.178161 0
+ 2.365311 -10.625127 0
+ -0.976160 -10.662672 0
+ -1.802142 -13.253251 0
+ -6.945755 -11.601287 0
+ -6.307496 -8.560173 0
+ -10.550038 -8.259816 0
+ -12.727626 -3.867096 0
+ -10.324770 -1.389151 0
+ -13.478518 0.000000 0
+ -12.652537 3.153748 0
+ -9.311066 4.355176 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 1.877231 8.785441 0
+ 4.505354 11.413564 0
+ 7.020844 9.874235 0
+ 5.894505 5.481514 0
+ 10.925484 4.092364 0
+ 11.263386 1.914776 0
+ 8.109638 -0.262812 0
+ 10.850395 -4.392720 0
+ 9.648967 -5.819416 0
+ 6.645398 -5.744327 0
+ 6.495219 -9.198432 0
+ 3.904640 -10.625127 0
+ 1.764597 -8.109638 0
+ -1.464240 -8.560173 0
+ -2.215133 -10.287226 0
+ -4.955890 -9.573878 0
+ -4.993434 -6.570308 0
+ -7.283656 -6.495219 0
+ -8.785441 -3.491650 0
+ -6.119773 -0.976160 0
+ -8.635262 0.337902 0
+ -8.222272 2.140043 0
+ -4.204997 2.890936 0
+ -5.744327 5.631693 0
+ -3.228837 7.584013 0
+ -2.215133 9.799146 0
+ L3 65280 0.000000 -2.381808 11.568783 0 -1.020775 10.548008 0
+ L3 65280 0.000000 -3.402583 10.888267 0 -3.742842 9.186975 0
+ L3 65280 0.000000 -7.825942 7.145425 0 -5.444133 7.145425 0
+ L3 65280 0.000000 -9.527233 6.464908 0 -8.506458 5.444133 0
+ L3 65280 0.000000 -7.145425 5.784392 0 -5.784392 4.763617 0
+ L3 65280 0.000000 -6.464908 3.742842 0 -8.506458 3.402583 0
+ L3 65280 0.000000 -11.568783 2.722067 0 -9.186975 2.722067 0
+ L3 65280 0.000000 -11.568783 0.680517 0 -9.527233 1.701292 0
+ L3 65280 0.000000 -7.825942 -1.020775 0 -9.527233 -0.680517 0
+ L3 65280 0.000000 -9.186975 -2.381808 0 -11.568783 -3.742842 0
+ L3 65280 0.000000 -10.548008 -5.103875 0 -8.846717 -5.444133 0
+ L3 65280 0.000000 -8.166200 -7.825942 0 -7.485683 -6.805167 0
+ L3 65280 0.000000 -5.103875 -10.207750 0 -5.784392 -11.228525 0
+ L3 65280 0.000000 -3.062325 -10.888267 0 -2.381808 -11.909042 0
+ L3 65280 0.000000 -0.340258 -9.186975 0 0.000000 -10.207750 0
+ L3 65280 0.000000 1.701292 -9.186975 0 0.680517 -9.867492 0
+ L3 65280 0.000000 4.423358 -10.888267 0 4.083100 -12.249300 0
+ L3 65280 0.000000 6.464908 -10.207750 0 7.485683 -10.548008 0
+ L3 65280 0.000000 11.909042 -4.763617 0 10.888267 -5.103875 0
+ L3 65280 0.000000 10.207750 -6.464908 0 10.888267 -7.485683 0
+ L3 65280 0.000000 11.909042 1.020775 0 10.548008 0.680517 0
+ L3 65280 0.000000 -9.527233 8.506458 0 -8.846717 7.145425 0
+ L3 65280 0.000000 -10.888267 6.464908 0 -9.867492 7.145425 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 5.241944 5.387554 0
+ 3.106337 4.756579 0
+ 2.863655 3.154874 0
+ 4.271214 3.737312 0
+ F4 26624 0.000000 5 0
+ -2.038534 6.455357 0
+ -1.844388 5.339017 0
+ 0.242683 4.416823 0
+ 0.825121 5.775846 0
+ -0.242683 6.795113 0
+ F4 26624 0.000000 4 0
+ 6.649503 -0.242683 0
+ 4.125604 -0.825121 0
+ 3.591703 0.436829 0
+ 7.037795 0.630975 0
+ F4 26624 0.000000 4 0
+ 1.601705 -6.455357 0
+ 0.339756 -5.484627 0
+ 0.679511 -3.446093 0
+ 1.456096 -3.737312 0
+ F4 26624 0.000000 3 0
+ 5.921455 -4.853652 0
+ 5.241944 -3.349020 0
+ 4.174141 -4.271214 0
+ F4 26624 0.000000 5 0
+ -5.096335 -0.582438 0
+ -4.416823 -0.097073 0
+ -2.087070 0.485365 0
+ -0.825121 -0.825121 0
+ -3.737312 -1.261950 0
+ F4 26624 0.000000 4 0
+ -4.465360 -5.630236 0
+ -3.106337 -5.290481 0
+ -2.135607 -3.009264 0
+ -3.640239 -3.397556 0
+ L3 26624 0.000000 0.680517 7.485683 0 1.361033 6.464908 0
+ L3 26624 0.000000 4.763617 6.464908 0 3.062325 5.784392 0
+ L3 26624 0.000000 5.444133 8.166200 0 4.423358 7.485683 0
+ L3 26624 0.000000 3.062325 8.846717 0 2.381808 7.485683 0
+ L3 26624 0.000000 -1.361033 8.506458 0 -0.680517 7.485683 0
+ L3 26624 0.000000 -4.083100 5.444133 0 -2.722067 5.444133 0
+ L3 26624 0.000000 -3.062325 3.742842 0 -1.361033 4.423358 0
+ L3 26624 0.000000 -4.083100 2.041550 0 -2.722067 1.020775 0
+ L3 26624 0.000000 -6.124650 1.701292 0 -4.763617 1.020775 0
+ L3 26624 0.000000 -7.825942 0.680517 0 -6.124650 0.000000 0
+ L3 26624 0.000000 -5.444133 -1.701292 0 -6.805167 -3.062325 0
+ L3 26624 0.000000 -6.124650 -4.763617 0 -5.103875 -3.402583 0
+ L3 26624 0.000000 -3.742842 -7.485683 0 -2.722067 -6.124650 0
+ L3 26624 0.000000 -1.361033 -6.124650 0 -1.701292 -8.166200 0
+ L3 26624 0.000000 -1.020775 -3.742842 0 -0.680517 -5.103875 0
+ L3 26624 0.000000 2.381808 -6.124650 0 3.062325 -8.166200 0
+ L3 26624 0.000000 4.083100 -5.784392 0 6.124650 -6.805167 0
+ L3 26624 0.000000 9.186975 -2.381808 0 7.485683 -2.722067 0
+ L3 26624 0.000000 9.186975 -5.444133 0 7.485683 -4.763617 0
+ L3 26624 0.000000 9.867492 -4.083100 0 8.166200 -3.742842 0
+ L3 26624 0.000000 4.083100 -9.867492 0 3.742842 -8.506458 0
+ L3 26624 0.000000 6.124650 -8.846717 0 5.103875 -7.825942 0
+ L3 26624 0.000000 4.763617 -9.186975 0 4.083100 -7.145425 0
+ L3 26624 0.000000 10.207750 1.701292 0 8.166200 2.041550 0
+ L3 26624 0.000000 8.506458 4.423358 0 6.805167 3.402583 0
+ L3 26624 0.000000 10.207750 3.402583 0 8.506458 3.062325 0
+ L3 26624 0.000000 -3.402583 -9.527233 0 -3.062325 -8.166200 0
+ L3 26624 0.000000 -7.485683 -4.763617 0 -6.464908 -4.083100 0
+ L3 26624 0.000000 4.763617 10.888267 0 4.083100 9.186975 0
+ L3 26624 0.000000 6.124650 9.867492 0 5.103875 8.846717 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 32"" Decid-32a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -9.679129 -9.182341 0
+ -8.306068 -14.374226 0
+ -5.216682 -15.704378 0
+ -1.741123 -11.413564 0
+ 2.249333 -15.146572 0
+ 7.055045 -12.872441 0
+ 5.939433 12.657900 0
+ 1.391171 15.060756 0
+ -0.496787 12.143003 0
+ -4.315612 12.185911 0
+ -5.259591 15.146572 0
+ -11.138005 13.258614 0
+ -10.408567 9.783055 0
+ -15.257186 9.439790 0
+ -17.745858 4.419538 0
+ -14.999738 1.587601 0
+ -18.604021 0.000000 0
+ -17.660042 -3.604283 0
+ -13.841218 -4.977344 0
+ -16.587339 -7.208567 0
+ -14.356116 -11.241932 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -13.387339 -7.208567 0
+ -11.156116 -11.241932 0
+ -6.479129 -9.182341 0
+ -5.106068 -14.374226 0
+ -2.016682 -15.704378 0
+ 1.458877 -11.413564 0
+ 5.449333 -15.146572 0
+ 10.255045 -12.872441 0
+ 8.452903 -8.109638 0
+ 14.202593 -6.522037 0
+ 15.060756 -1.115612 0
+ 12.057186 1.673417 0
+ 14.889123 5.706782 0
+ 12.743717 9.311066 0
+ 9.268158 8.023822 0
+ 9.139433 12.657900 0
+ 4.591171 15.060756 0
+ 2.703213 12.143003 0
+ -1.115612 12.185911 0
+ -2.059591 15.146572 0
+ -7.938005 13.258614 0
+ -7.208567 9.783055 0
+ -12.057186 9.439790 0
+ -14.545858 4.419538 0
+ -11.799738 1.587601 0
+ -15.404021 0.000000 0
+ -14.460042 -3.604283 0
+ -10.641218 -4.977344 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 2.145407 -10.040504 0
+ 5.148976 -13.044074 0
+ 8.023822 -11.284840 0
+ 6.736577 -6.264588 0
+ 12.486268 -4.676987 0
+ 12.872441 -2.188315 0
+ 9.268158 0.300357 0
+ 12.400451 5.020252 0
+ 11.027391 6.650761 0
+ 7.594740 6.564945 0
+ 7.423108 10.512493 0
+ 4.462446 12.143003 0
+ 2.016682 9.268158 0
+ -1.673417 9.783055 0
+ -2.531580 11.756829 0
+ -5.663874 10.941575 0
+ -5.706782 7.508924 0
+ -8.324179 7.423108 0
+ -10.040504 3.990457 0
+ -6.994026 1.115612 0
+ -9.868871 -0.386173 0
+ -9.396882 -2.445764 0
+ -4.805711 -3.303927 0
+ -6.564945 -6.436220 0
+ -3.690100 -8.667444 0
+ -2.531580 -11.199024 0
+ L3 65280 0.000000 -2.722067 -13.221467 0 -1.166600 -12.054867 0
+ L3 65280 0.000000 -3.888667 -12.443733 0 -4.277533 -10.499400 0
+ L3 65280 0.000000 -8.943933 -8.166200 0 -6.221867 -8.166200 0
+ L3 65280 0.000000 -10.888267 -7.388467 0 -9.721667 -6.221867 0
+ L3 65280 0.000000 -8.166200 -6.610733 0 -6.610733 -5.444133 0
+ L3 65280 0.000000 -7.388467 -4.277533 0 -9.721667 -3.888667 0
+ L3 65280 0.000000 -13.221467 -3.110933 0 -10.499400 -3.110933 0
+ L3 65280 0.000000 -13.221467 -0.777733 0 -10.888267 -1.944333 0
+ L3 65280 0.000000 -8.943933 1.166600 0 -10.888267 0.777733 0
+ L3 65280 0.000000 -10.499400 2.722067 0 -13.221467 4.277533 0
+ L3 65280 0.000000 -12.054867 5.833000 0 -10.110533 6.221867 0
+ L3 65280 0.000000 -9.332800 8.943933 0 -8.555067 7.777333 0
+ L3 65280 0.000000 -5.833000 11.666000 0 -6.610733 12.832600 0
+ L3 65280 0.000000 -3.499800 12.443733 0 -2.722067 13.610333 0
+ L3 65280 0.000000 -0.388867 10.499400 0 0.000000 11.666000 0
+ L3 65280 0.000000 1.944333 10.499400 0 0.777733 11.277133 0
+ L3 65280 0.000000 5.055267 12.443733 0 4.666400 13.999200 0
+ L3 65280 0.000000 7.388467 11.666000 0 8.555067 12.054867 0
+ L3 65280 0.000000 13.610333 5.444133 0 12.443733 5.833000 0
+ L3 65280 0.000000 11.666000 7.388467 0 12.443733 8.555067 0
+ L3 65280 0.000000 13.610333 -1.166600 0 12.054867 -0.777733 0
+ L3 65280 0.000000 -10.888267 -9.721667 0 -10.110533 -8.166200 0
+ L3 65280 0.000000 -12.443733 -7.388467 0 -11.277133 -8.166200 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 5.990793 -6.157204 0
+ 3.550100 -5.436090 0
+ 3.272748 -3.605570 0
+ 4.881387 -4.271214 0
+ F4 26624 0.000000 5 0
+ -2.329753 -7.377551 0
+ -2.107872 -6.101734 0
+ 0.277352 -5.047798 0
+ 0.942995 -6.600967 0
+ -0.277352 -7.765843 0
+ F4 26624 0.000000 4 0
+ 7.599432 0.277352 0
+ 4.714976 0.942995 0
+ 4.104803 -0.499233 0
+ 8.043195 -0.721114 0
+ F4 26624 0.000000 4 0
+ 1.830520 7.377551 0
+ 0.388292 6.268145 0
+ 0.776584 3.938392 0
+ 1.664109 4.271214 0
+ F4 26624 0.000000 3 0
+ 6.767378 5.547031 0
+ 5.990793 3.827451 0
+ 4.770447 4.881387 0
+ F4 26624 0.000000 5 0
+ -5.824382 0.665644 0
+ -5.047798 0.110941 0
+ -2.385223 -0.554703 0
+ -0.942995 0.942995 0
+ -4.271214 1.442228 0
+ F4 26624 0.000000 4 0
+ -5.103268 6.434556 0
+ -3.550100 6.046264 0
+ -2.440694 3.439159 0
+ -4.160273 3.882922 0
+ L3 26624 0.000000 0.777733 -8.555067 0 1.555467 -7.388467 0
+ L3 26624 0.000000 5.444133 -7.388467 0 3.499800 -6.610733 0
+ L3 26624 0.000000 6.221867 -9.332800 0 5.055267 -8.555067 0
+ L3 26624 0.000000 3.499800 -10.110533 0 2.722067 -8.555067 0
+ L3 26624 0.000000 -1.555467 -9.721667 0 -0.777733 -8.555067 0
+ L3 26624 0.000000 -4.666400 -6.221867 0 -3.110933 -6.221867 0
+ L3 26624 0.000000 -3.499800 -4.277533 0 -1.555467 -5.055267 0
+ L3 26624 0.000000 -4.666400 -2.333200 0 -3.110933 -1.166600 0
+ L3 26624 0.000000 -6.999600 -1.944333 0 -5.444133 -1.166600 0
+ L3 26624 0.000000 -8.943933 -0.777733 0 -6.999600 0.000000 0
+ L3 26624 0.000000 -6.221867 1.944333 0 -7.777333 3.499800 0
+ L3 26624 0.000000 -6.999600 5.444133 0 -5.833000 3.888667 0
+ L3 26624 0.000000 -4.277533 8.555067 0 -3.110933 6.999600 0
+ L3 26624 0.000000 -1.555467 6.999600 0 -1.944333 9.332800 0
+ L3 26624 0.000000 -1.166600 4.277533 0 -0.777733 5.833000 0
+ L3 26624 0.000000 2.722067 6.999600 0 3.499800 9.332800 0
+ L3 26624 0.000000 4.666400 6.610733 0 6.999600 7.777333 0
+ L3 26624 0.000000 10.499400 2.722067 0 8.555067 3.110933 0
+ L3 26624 0.000000 10.499400 6.221867 0 8.555067 5.444133 0
+ L3 26624 0.000000 11.277133 4.666400 0 9.332800 4.277533 0
+ L3 26624 0.000000 4.666400 11.277133 0 4.277533 9.721667 0
+ L3 26624 0.000000 6.999600 10.110533 0 5.833000 8.943933 0
+ L3 26624 0.000000 5.444133 10.499400 0 4.666400 8.166200 0
+ L3 26624 0.000000 11.666000 -1.944333 0 9.332800 -2.333200 0
+ L3 26624 0.000000 9.721667 -5.055267 0 7.777333 -3.888667 0
+ L3 26624 0.000000 11.666000 -3.888667 0 9.721667 -3.499800 0
+ L3 26624 0.000000 -3.888667 10.888267 0 -3.499800 9.332800 0
+ L3 26624 0.000000 -8.555067 5.444133 0 -7.388467 4.666400 0
+ L3 26624 0.000000 5.444133 -12.443733 0 4.666400 -10.499400 0
+ L3 26624 0.000000 6.999600 -11.277133 0 5.833000 -10.110533 0
+ END$SEGS
+
+STRUCTURE * "Lg Decid 32"" Decid-32b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -9.679129 9.182341 0
+ -8.306068 14.374226 0
+ -5.216682 15.704378 0
+ -1.741123 11.413564 0
+ 2.249333 15.146572 0
+ 7.055045 12.872441 0
+ 5.939433 -12.657900 0
+ 1.391171 -15.060756 0
+ -0.496787 -12.143003 0
+ -4.315612 -12.185911 0
+ -5.259591 -15.146572 0
+ -11.138005 -13.258614 0
+ -10.408567 -9.783055 0
+ -15.257186 -9.439790 0
+ -17.745858 -4.419538 0
+ -14.999738 -1.587601 0
+ -18.604021 0.000000 0
+ -17.660042 3.604283 0
+ -13.841218 4.977344 0
+ -16.587339 7.208567 0
+ -14.356116 11.241932 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -13.387339 7.208567 0
+ -11.156116 11.241932 0
+ -6.479129 9.182341 0
+ -5.106068 14.374226 0
+ -2.016682 15.704378 0
+ 1.458877 11.413564 0
+ 5.449333 15.146572 0
+ 10.255045 12.872441 0
+ 8.452903 8.109638 0
+ 14.202593 6.522037 0
+ 15.060756 1.115612 0
+ 12.057186 -1.673417 0
+ 14.889123 -5.706782 0
+ 12.743717 -9.311066 0
+ 9.268158 -8.023822 0
+ 9.139433 -12.657900 0
+ 4.591171 -15.060756 0
+ 2.703213 -12.143003 0
+ -1.115612 -12.185911 0
+ -2.059591 -15.146572 0
+ -7.938005 -13.258614 0
+ -7.208567 -9.783055 0
+ -12.057186 -9.439790 0
+ -14.545858 -4.419538 0
+ -11.799738 -1.587601 0
+ -15.404021 0.000000 0
+ -14.460042 3.604283 0
+ -10.641218 4.977344 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 2.145407 10.040504 0
+ 5.148976 13.044074 0
+ 8.023822 11.284840 0
+ 6.736577 6.264588 0
+ 12.486268 4.676987 0
+ 12.872441 2.188315 0
+ 9.268158 -0.300357 0
+ 12.400451 -5.020252 0
+ 11.027391 -6.650761 0
+ 7.594740 -6.564945 0
+ 7.423108 -10.512493 0
+ 4.462446 -12.143003 0
+ 2.016682 -9.268158 0
+ -1.673417 -9.783055 0
+ -2.531580 -11.756829 0
+ -5.663874 -10.941575 0
+ -5.706782 -7.508924 0
+ -8.324179 -7.423108 0
+ -10.040504 -3.990457 0
+ -6.994026 -1.115612 0
+ -9.868871 0.386173 0
+ -9.396882 2.445764 0
+ -4.805711 3.303927 0
+ -6.564945 6.436220 0
+ -3.690100 8.667444 0
+ -2.531580 11.199024 0
+ L3 65280 0.000000 -2.722067 13.221467 0 -1.166600 12.054867 0
+ L3 65280 0.000000 -3.888667 12.443733 0 -4.277533 10.499400 0
+ L3 65280 0.000000 -8.943933 8.166200 0 -6.221867 8.166200 0
+ L3 65280 0.000000 -10.888267 7.388467 0 -9.721667 6.221867 0
+ L3 65280 0.000000 -8.166200 6.610733 0 -6.610733 5.444133 0
+ L3 65280 0.000000 -7.388467 4.277533 0 -9.721667 3.888667 0
+ L3 65280 0.000000 -13.221467 3.110933 0 -10.499400 3.110933 0
+ L3 65280 0.000000 -13.221467 0.777733 0 -10.888267 1.944333 0
+ L3 65280 0.000000 -8.943933 -1.166600 0 -10.888267 -0.777733 0
+ L3 65280 0.000000 -10.499400 -2.722067 0 -13.221467 -4.277533 0
+ L3 65280 0.000000 -12.054867 -5.833000 0 -10.110533 -6.221867 0
+ L3 65280 0.000000 -9.332800 -8.943933 0 -8.555067 -7.777333 0
+ L3 65280 0.000000 -5.833000 -11.666000 0 -6.610733 -12.832600 0
+ L3 65280 0.000000 -3.499800 -12.443733 0 -2.722067 -13.610333 0
+ L3 65280 0.000000 -0.388867 -10.499400 0 0.000000 -11.666000 0
+ L3 65280 0.000000 1.944333 -10.499400 0 0.777733 -11.277133 0
+ L3 65280 0.000000 5.055267 -12.443733 0 4.666400 -13.999200 0
+ L3 65280 0.000000 7.388467 -11.666000 0 8.555067 -12.054867 0
+ L3 65280 0.000000 13.610333 -5.444133 0 12.443733 -5.833000 0
+ L3 65280 0.000000 11.666000 -7.388467 0 12.443733 -8.555067 0
+ L3 65280 0.000000 13.610333 1.166600 0 12.054867 0.777733 0
+ L3 65280 0.000000 -10.888267 9.721667 0 -10.110533 8.166200 0
+ L3 65280 0.000000 -12.443733 7.388467 0 -11.277133 8.166200 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 5.990793 6.157204 0
+ 3.550100 5.436090 0
+ 3.272748 3.605570 0
+ 4.881387 4.271214 0
+ F4 26624 0.000000 5 0
+ -2.329753 7.377551 0
+ -2.107872 6.101734 0
+ 0.277352 5.047798 0
+ 0.942995 6.600967 0
+ -0.277352 7.765843 0
+ F4 26624 0.000000 4 0
+ 7.599432 -0.277352 0
+ 4.714976 -0.942995 0
+ 4.104803 0.499233 0
+ 8.043195 0.721114 0
+ F4 26624 0.000000 4 0
+ 1.830520 -7.377551 0
+ 0.388292 -6.268145 0
+ 0.776584 -3.938392 0
+ 1.664109 -4.271214 0
+ F4 26624 0.000000 3 0
+ 6.767378 -5.547031 0
+ 5.990793 -3.827451 0
+ 4.770447 -4.881387 0
+ F4 26624 0.000000 5 0
+ -5.824382 -0.665644 0
+ -5.047798 -0.110941 0
+ -2.385223 0.554703 0
+ -0.942995 -0.942995 0
+ -4.271214 -1.442228 0
+ F4 26624 0.000000 4 0
+ -5.103268 -6.434556 0
+ -3.550100 -6.046264 0
+ -2.440694 -3.439159 0
+ -4.160273 -3.882922 0
+ L3 26624 0.000000 0.777733 8.555067 0 1.555467 7.388467 0
+ L3 26624 0.000000 5.444133 7.388467 0 3.499800 6.610733 0
+ L3 26624 0.000000 6.221867 9.332800 0 5.055267 8.555067 0
+ L3 26624 0.000000 3.499800 10.110533 0 2.722067 8.555067 0
+ L3 26624 0.000000 -1.555467 9.721667 0 -0.777733 8.555067 0
+ L3 26624 0.000000 -4.666400 6.221867 0 -3.110933 6.221867 0
+ L3 26624 0.000000 -3.499800 4.277533 0 -1.555467 5.055267 0
+ L3 26624 0.000000 -4.666400 2.333200 0 -3.110933 1.166600 0
+ L3 26624 0.000000 -6.999600 1.944333 0 -5.444133 1.166600 0
+ L3 26624 0.000000 -8.943933 0.777733 0 -6.999600 0.000000 0
+ L3 26624 0.000000 -6.221867 -1.944333 0 -7.777333 -3.499800 0
+ L3 26624 0.000000 -6.999600 -5.444133 0 -5.833000 -3.888667 0
+ L3 26624 0.000000 -4.277533 -8.555067 0 -3.110933 -6.999600 0
+ L3 26624 0.000000 -1.555467 -6.999600 0 -1.944333 -9.332800 0
+ L3 26624 0.000000 -1.166600 -4.277533 0 -0.777733 -5.833000 0
+ L3 26624 0.000000 2.722067 -6.999600 0 3.499800 -9.332800 0
+ L3 26624 0.000000 4.666400 -6.610733 0 6.999600 -7.777333 0
+ L3 26624 0.000000 10.499400 -2.722067 0 8.555067 -3.110933 0
+ L3 26624 0.000000 10.499400 -6.221867 0 8.555067 -5.444133 0
+ L3 26624 0.000000 11.277133 -4.666400 0 9.332800 -4.277533 0
+ L3 26624 0.000000 4.666400 -11.277133 0 4.277533 -9.721667 0
+ L3 26624 0.000000 6.999600 -10.110533 0 5.833000 -8.943933 0
+ L3 26624 0.000000 5.444133 -10.499400 0 4.666400 -8.166200 0
+ L3 26624 0.000000 11.666000 1.944333 0 9.332800 2.333200 0
+ L3 26624 0.000000 9.721667 5.055267 0 7.777333 3.888667 0
+ L3 26624 0.000000 11.666000 3.888667 0 9.721667 3.499800 0
+ L3 26624 0.000000 -3.888667 -10.888267 0 -3.499800 -9.332800 0
+ L3 26624 0.000000 -8.555067 -5.444133 0 -7.388467 -4.666400 0
+ L3 26624 0.000000 5.444133 12.443733 0 4.666400 10.499400 0
+ L3 26624 0.000000 6.999600 11.277133 0 5.833000 10.110533 0
+ END$SEGS
+
diff --git a/app/lib/params/TreeLgFall.xtp b/app/lib/params/TreeLgFall.xtp
new file mode 100644
index 0000000..414f847
--- /dev/null
+++ b/app/lib/params/TreeLgFall.xtp
@@ -0,0 +1,3483 @@
+CONTENTS Large Fall Trees
+
+# DxfToXtp version 0.6 by Russell Shilling 2021
+STRUCTURE * "Lg Fall 8"" Fall-8a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 8"" Fall-8b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 10"" Fall-10a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 10"" Fall-10b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 12"" Fall-12a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 12"" Fall-12b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 14"" Fall-14a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 14"" Fall-14b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 16"" Fall-16a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 16"" Fall-16b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 18"" Fall-18a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 18"" Fall-18b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 20"" Fall-20a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 20"" Fall-20b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Lg Fall 24"" Fall-24a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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
+
+STRUCTURE * "Lg Fall 24"" Fall-24b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 6815744 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
+# Layer: XTRKCAD3
+ F4 12410368 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 12410368 0.000000 -2.041550 9.916100 0 -0.874950 9.041150 0
+ L3 12410368 0.000000 -8.166200 5.541350 0 -7.291250 4.666400 0
+ L3 12410368 0.000000 -6.124650 4.958050 0 -4.958050 4.083100 0
+ L3 12410368 0.000000 -9.916100 2.333200 0 -7.874550 2.333200 0
+ L3 12410368 0.000000 -6.707950 -0.874950 0 -8.166200 -0.583300 0
+ L3 12410368 0.000000 -9.041150 -4.374750 0 -7.582900 -4.666400 0
+ L3 12410368 0.000000 -4.374750 -8.749500 0 -4.958050 -9.624450 0
+ L3 12410368 0.000000 -0.291650 -7.874550 0 0.000000 -8.749500 0
+ L3 12410368 0.000000 3.791450 -9.332800 0 3.499800 -10.499400 0
+ L3 12410368 0.000000 8.749500 -5.541350 0 9.332800 -6.416300 0
+ L3 12410368 0.000000 -8.166200 7.291250 0 -7.582900 6.124650 0
+ L3 14915328 0.000000 -9.332800 5.541350 0 -8.457850 6.124650 0
+ L3 16755200 0.000000 10.207750 0.874950 0 9.041150 0.583300 0
+ L3 16755200 0.000000 -2.916500 9.332800 0 -3.208150 7.874550 0
+ L3 16755200 0.000000 -6.707950 6.124650 0 -4.666400 6.124650 0
+ L3 16755200 0.000000 -5.541350 3.208150 0 -7.291250 2.916500 0
+ L3 16755200 0.000000 -9.916100 0.583300 0 -8.166200 1.458250 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 1.458250 -7.874550 0 0.583300 -8.457850 0
+ L3 16755200 0.000000 5.541350 -8.749500 0 6.416300 -9.041150 0
+ L3 16755200 0.000000 10.207750 -4.083100 0 9.332800 -4.374750 0
+# Layer: XTRKCAD4
+ F4 6815744 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 6815744 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 6815744 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 6815744 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 6815744 0.000000 4.083100 5.541350 0 2.624850 4.958050 0
+ L3 6815744 0.000000 2.624850 7.582900 0 2.041550 6.416300 0
+ L3 6815744 0.000000 -1.166600 7.291250 0 -0.583300 6.416300 0
+ L3 6815744 0.000000 -2.624850 3.208150 0 -1.166600 3.791450 0
+ L3 6815744 0.000000 -3.499800 1.749900 0 -2.333200 0.874950 0
+ L3 6815744 0.000000 -6.707950 0.583300 0 -5.249700 0.000000 0
+ L3 6815744 0.000000 -4.666400 -1.458250 0 -5.833000 -2.624850 0
+ L3 6815744 0.000000 -1.166600 -5.249700 0 -1.458250 -6.999600 0
+ L3 6815744 0.000000 -0.874950 -3.208150 0 -0.583300 -4.374750 0
+ L3 6815744 0.000000 2.041550 -5.249700 0 2.624850 -6.999600 0
+ L3 6815744 0.000000 3.499800 -4.958050 0 5.249700 -5.833000 0
+ L3 6815744 0.000000 7.874550 -2.041550 0 6.416300 -2.333200 0
+ L3 6815744 0.000000 7.874550 -4.666400 0 6.416300 -4.083100 0
+ L3 6815744 0.000000 8.457850 -3.499800 0 6.999600 -3.208150 0
+ L3 6815744 0.000000 3.499800 -8.457850 0 3.208150 -7.291250 0
+ L3 6815744 0.000000 5.249700 -7.582900 0 4.374750 -6.707950 0
+ L3 6815744 0.000000 8.749500 1.458250 0 6.999600 1.749900 0
+ L3 6815744 0.000000 8.749500 2.916500 0 7.291250 2.624850 0
+ L3 6815744 0.000000 -2.916500 -8.166200 0 -2.624850 -6.999600 0
+ L3 6815744 0.000000 -6.416300 -4.083100 0 -5.541350 -3.499800 0
+ L3 6815744 0.000000 4.083100 9.332800 0 3.499800 7.874550 0
+ L3 6815744 0.000000 5.249700 8.457850 0 4.374750 7.582900 0
+ L3 11184640 0.000000 4.083100 -7.874550 0 3.499800 -6.124650 0
+ L3 14915328 0.000000 4.666400 6.999600 0 3.791450 6.416300 0
+ L3 14915328 0.000000 -5.249700 1.458250 0 -4.083100 0.874950 0
+ F4 16755200 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 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
+ L3 16755200 0.000000 0.583300 6.416300 0 1.166600 5.541350 0
+ L3 16755200 0.000000 -3.499800 4.666400 0 -2.333200 4.666400 0
+ L3 16755200 0.000000 -5.249700 -4.083100 0 -4.374750 -2.916500 0
+ L3 16755200 0.000000 -3.208150 -6.416300 0 -2.333200 -5.249700 0
+ L3 16755200 0.000000 7.291250 3.791450 0 5.833000 2.916500 0
+ END$SEGS
+
+STRUCTURE * "Lg Fall 28"" Fall-28a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -8.469238 -8.034549 0
+ -7.267810 -12.577448 0
+ -4.564597 -13.741331 0
+ -1.523483 -9.986869 0
+ 1.968167 -13.253251 0
+ 6.173164 -11.263386 0
+ 5.197004 11.075663 0
+ 1.217274 13.178161 0
+ -0.434689 10.625127 0
+ -3.776160 10.662672 0
+ -4.602142 13.253251 0
+ -9.745755 11.601287 0
+ -9.107496 8.560173 0
+ -13.350038 8.259816 0
+ -15.527626 3.867096 0
+ -13.124770 1.389151 0
+ -16.278518 0.000000 0
+ -15.452537 -3.153748 0
+ -12.111066 -4.355176 0
+ -14.513921 -6.307496 0
+ -12.561601 -9.836690 0
+# Layer: XTRKCAD2
+ F4 6842368 0.000000 28 0
+ -11.713921 -6.307496 0
+ -9.761601 -9.836690 0
+ -5.669238 -8.034549 0
+ -4.467810 -12.577448 0
+ -1.764597 -13.741331 0
+ 1.276517 -9.986869 0
+ 4.768167 -13.253251 0
+ 8.973164 -11.263386 0
+ 7.396290 -7.095933 0
+ 12.427269 -5.706782 0
+ 13.178161 -0.976160 0
+ 10.550038 1.464240 0
+ 13.027983 4.993434 0
+ 11.150752 8.147182 0
+ 8.109638 7.020844 0
+ 7.997004 11.075663 0
+ 4.017274 13.178161 0
+ 2.365311 10.625127 0
+ -0.976160 10.662672 0
+ -1.802142 13.253251 0
+ -6.945755 11.601287 0
+ -6.307496 8.560173 0
+ -10.550038 8.259816 0
+ -12.727626 3.867096 0
+ -10.324770 1.389151 0
+ -13.478518 0.000000 0
+ -12.652537 -3.153748 0
+ -9.311066 -4.355176 0
+# Layer: XTRKCAD3
+ F4 12434688 0.000000 26 0
+ 1.877231 -8.785441 0
+ 4.505354 -11.413564 0
+ 7.020844 -9.874235 0
+ 5.894505 -5.481514 0
+ 10.925484 -4.092364 0
+ 11.263386 -1.914776 0
+ 8.109638 0.262812 0
+ 10.850395 4.392720 0
+ 9.648967 5.819416 0
+ 6.645398 5.744327 0
+ 6.495219 9.198432 0
+ 3.904640 10.625127 0
+ 1.764597 8.109638 0
+ -1.464240 8.560173 0
+ -2.215133 10.287226 0
+ -4.955890 9.573878 0
+ -4.993434 6.570308 0
+ -7.283656 6.495219 0
+ -8.785441 3.491650 0
+ -6.119773 0.976160 0
+ -8.635262 -0.337902 0
+ -8.222272 -2.140043 0
+ -4.204997 -2.890936 0
+ -5.744327 -5.631693 0
+ -3.228837 -7.584013 0
+ -2.215133 -9.799146 0
+ L3 12434688 0.000000 -3.402583 -10.888267 0 -3.742842 -9.186975 0
+ L3 12434688 0.000000 -7.145425 -5.784392 0 -5.784392 -4.763617 0
+ L3 12434688 0.000000 -11.568783 -0.680517 0 -9.527233 -1.701292 0
+ L3 12434688 0.000000 -7.825942 1.020775 0 -9.527233 0.680517 0
+ L3 12434688 0.000000 -10.548008 5.103875 0 -8.846717 5.444133 0
+ L3 12434688 0.000000 -5.103875 10.207750 0 -5.784392 11.228525 0
+ L3 12434688 0.000000 1.701292 9.186975 0 0.680517 9.867492 0
+ L3 12434688 0.000000 6.464908 10.207750 0 7.485683 10.548008 0
+ L3 12434688 0.000000 11.909042 4.763617 0 10.888267 5.103875 0
+ L3 12434688 0.000000 -9.527233 -8.506458 0 -8.846717 -7.145425 0
+ L3 12434688 0.000000 -10.888267 -6.464908 0 -9.867492 -7.145425 0
+ L3 16755200 0.000000 -2.381808 -11.568783 0 -1.020775 -10.548008 0
+ L3 16755200 0.000000 -7.825942 -7.145425 0 -5.444133 -7.145425 0
+ L3 16755200 0.000000 -9.527233 -6.464908 0 -8.506458 -5.444133 0
+ L3 16755200 0.000000 -6.464908 -3.742842 0 -8.506458 -3.402583 0
+ L3 16755200 0.000000 -11.568783 -2.722067 0 -9.186975 -2.722067 0
+ L3 16755200 0.000000 -9.186975 2.381808 0 -11.568783 3.742842 0
+ L3 16755200 0.000000 -8.166200 7.825942 0 -7.485683 6.805167 0
+ L3 16755200 0.000000 -3.062325 10.888267 0 -2.381808 11.909042 0
+ L3 16755200 0.000000 -0.340258 9.186975 0 0.000000 10.207750 0
+ L3 16755200 0.000000 4.423358 10.888267 0 4.083100 12.249300 0
+ L3 16755200 0.000000 10.207750 6.464908 0 10.888267 7.485683 0
+ L3 16755200 0.000000 11.909042 -1.020775 0 10.548008 -0.680517 0
+# Layer: XTRKCAD4
+ F4 6842368 0.000000 4 0
+ 5.241944 -5.387554 0
+ 3.106337 -4.756579 0
+ 2.863655 -3.154874 0
+ 4.271214 -3.737312 0
+ F4 6842368 0.000000 4 0
+ 6.649503 0.242683 0
+ 4.125604 0.825121 0
+ 3.591703 -0.436829 0
+ 7.037795 -0.630975 0
+ F4 6842368 0.000000 4 0
+ 1.601705 6.455357 0
+ 0.339756 5.484627 0
+ 0.679511 3.446093 0
+ 1.456096 3.737312 0
+ F4 6842368 0.000000 5 0
+ -5.096335 0.582438 0
+ -4.416823 0.097073 0
+ -2.087070 -0.485365 0
+ -0.825121 0.825121 0
+ -3.737312 1.261950 0
+ L3 6842368 0.000000 0.680517 -7.485683 0 1.361033 -6.464908 0
+ L3 6842368 0.000000 4.763617 -6.464908 0 3.062325 -5.784392 0
+ L3 6842368 0.000000 5.444133 -8.166200 0 4.423358 -7.485683 0
+ L3 6842368 0.000000 3.062325 -8.846717 0 2.381808 -7.485683 0
+ L3 6842368 0.000000 -1.361033 -8.506458 0 -0.680517 -7.485683 0
+ L3 6842368 0.000000 -4.083100 -5.444133 0 -2.722067 -5.444133 0
+ L3 6842368 0.000000 -3.062325 -3.742842 0 -1.361033 -4.423358 0
+ L3 6842368 0.000000 -4.083100 -2.041550 0 -2.722067 -1.020775 0
+ L3 6842368 0.000000 -6.124650 -1.701292 0 -4.763617 -1.020775 0
+ L3 6842368 0.000000 -7.825942 -0.680517 0 -6.124650 0.000000 0
+ L3 6842368 0.000000 -5.444133 1.701292 0 -6.805167 3.062325 0
+ L3 6842368 0.000000 -6.124650 4.763617 0 -5.103875 3.402583 0
+ L3 6842368 0.000000 -3.742842 7.485683 0 -2.722067 6.124650 0
+ L3 6842368 0.000000 -1.361033 6.124650 0 -1.701292 8.166200 0
+ L3 6842368 0.000000 -1.020775 3.742842 0 -0.680517 5.103875 0
+ L3 6842368 0.000000 2.381808 6.124650 0 3.062325 8.166200 0
+ L3 6842368 0.000000 4.083100 5.784392 0 6.124650 6.805167 0
+ L3 6842368 0.000000 9.186975 2.381808 0 7.485683 2.722067 0
+ L3 6842368 0.000000 9.186975 5.444133 0 7.485683 4.763617 0
+ L3 6842368 0.000000 9.867492 4.083100 0 8.166200 3.742842 0
+ L3 6842368 0.000000 4.083100 9.867492 0 3.742842 8.506458 0
+ L3 6842368 0.000000 6.124650 8.846717 0 5.103875 7.825942 0
+ L3 6842368 0.000000 4.763617 9.186975 0 4.083100 7.145425 0
+ L3 6842368 0.000000 10.207750 -1.701292 0 8.166200 -2.041550 0
+ L3 6842368 0.000000 8.506458 -4.423358 0 6.805167 -3.402583 0
+ L3 6842368 0.000000 10.207750 -3.402583 0 8.506458 -3.062325 0
+ L3 6842368 0.000000 -3.402583 9.527233 0 -3.062325 8.166200 0
+ L3 6842368 0.000000 -7.485683 4.763617 0 -6.464908 4.083100 0
+ L3 6842368 0.000000 4.763617 -10.888267 0 4.083100 -9.186975 0
+ L3 6842368 0.000000 6.124650 -9.867492 0 5.103875 -8.846717 0
+ F4 16755200 0.000000 5 0
+ -2.038534 -6.455357 0
+ -1.844388 -5.339017 0
+ 0.242683 -4.416823 0
+ 0.825121 -5.775846 0
+ -0.242683 -6.795113 0
+ F4 16755200 0.000000 3 0
+ 5.921455 4.853652 0
+ 5.241944 3.349020 0
+ 4.174141 4.271214 0
+ F4 16755200 0.000000 4 0
+ -4.465360 5.630236 0
+ -3.106337 5.290481 0
+ -2.135607 3.009264 0
+ -3.640239 3.397556 0
+ END$SEGS
+
+STRUCTURE * "Lg Fall 28"" Fall-28b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -8.469238 8.034549 0
+ -7.267810 12.577448 0
+ -4.564597 13.741331 0
+ -1.523483 9.986869 0
+ 1.968167 13.253251 0
+ 6.173164 11.263386 0
+ 5.197004 -11.075663 0
+ 1.217274 -13.178161 0
+ -0.434689 -10.625127 0
+ -3.776160 -10.662672 0
+ -4.602142 -13.253251 0
+ -9.745755 -11.601287 0
+ -9.107496 -8.560173 0
+ -13.350038 -8.259816 0
+ -15.527626 -3.867096 0
+ -13.124770 -1.389151 0
+ -16.278518 0.000000 0
+ -15.452537 3.153748 0
+ -12.111066 4.355176 0
+ -14.513921 6.307496 0
+ -12.561601 9.836690 0
+# Layer: XTRKCAD2
+ F4 6815744 0.000000 28 0
+ -11.713921 6.307496 0
+ -9.761601 9.836690 0
+ -5.669238 8.034549 0
+ -4.467810 12.577448 0
+ -1.764597 13.741331 0
+ 1.276517 9.986869 0
+ 4.768167 13.253251 0
+ 8.973164 11.263386 0
+ 7.396290 7.095933 0
+ 12.427269 5.706782 0
+ 13.178161 0.976160 0
+ 10.550038 -1.464240 0
+ 13.027983 -4.993434 0
+ 11.150752 -8.147182 0
+ 8.109638 -7.020844 0
+ 7.997004 -11.075663 0
+ 4.017274 -13.178161 0
+ 2.365311 -10.625127 0
+ -0.976160 -10.662672 0
+ -1.802142 -13.253251 0
+ -6.945755 -11.601287 0
+ -6.307496 -8.560173 0
+ -10.550038 -8.259816 0
+ -12.727626 -3.867096 0
+ -10.324770 -1.389151 0
+ -13.478518 0.000000 0
+ -12.652537 3.153748 0
+ -9.311066 4.355176 0
+# Layer: XTRKCAD3
+ F4 12410368 0.000000 26 0
+ 1.877231 8.785441 0
+ 4.505354 11.413564 0
+ 7.020844 9.874235 0
+ 5.894505 5.481514 0
+ 10.925484 4.092364 0
+ 11.263386 1.914776 0
+ 8.109638 -0.262812 0
+ 10.850395 -4.392720 0
+ 9.648967 -5.819416 0
+ 6.645398 -5.744327 0
+ 6.495219 -9.198432 0
+ 3.904640 -10.625127 0
+ 1.764597 -8.109638 0
+ -1.464240 -8.560173 0
+ -2.215133 -10.287226 0
+ -4.955890 -9.573878 0
+ -4.993434 -6.570308 0
+ -7.283656 -6.495219 0
+ -8.785441 -3.491650 0
+ -6.119773 -0.976160 0
+ -8.635262 0.337902 0
+ -8.222272 2.140043 0
+ -4.204997 2.890936 0
+ -5.744327 5.631693 0
+ -3.228837 7.584013 0
+ -2.215133 9.799146 0
+ L3 12410368 0.000000 -2.381808 11.568783 0 -1.020775 10.548008 0
+ L3 12410368 0.000000 -9.527233 6.464908 0 -8.506458 5.444133 0
+ L3 12410368 0.000000 -7.145425 5.784392 0 -5.784392 4.763617 0
+ L3 12410368 0.000000 -11.568783 2.722067 0 -9.186975 2.722067 0
+ L3 12410368 0.000000 -7.825942 -1.020775 0 -9.527233 -0.680517 0
+ L3 12410368 0.000000 -10.548008 -5.103875 0 -8.846717 -5.444133 0
+ L3 12410368 0.000000 -5.103875 -10.207750 0 -5.784392 -11.228525 0
+ L3 12410368 0.000000 -0.340258 -9.186975 0 0.000000 -10.207750 0
+ L3 12410368 0.000000 4.423358 -10.888267 0 4.083100 -12.249300 0
+ L3 12410368 0.000000 10.207750 -6.464908 0 10.888267 -7.485683 0
+ L3 12410368 0.000000 -9.527233 8.506458 0 -8.846717 7.145425 0
+ L3 14915328 0.000000 -10.888267 6.464908 0 -9.867492 7.145425 0
+ L3 16755200 0.000000 11.909042 1.020775 0 10.548008 0.680517 0
+ L3 16755200 0.000000 -3.402583 10.888267 0 -3.742842 9.186975 0
+ L3 16755200 0.000000 -7.825942 7.145425 0 -5.444133 7.145425 0
+ L3 16755200 0.000000 -6.464908 3.742842 0 -8.506458 3.402583 0
+ L3 16755200 0.000000 -11.568783 0.680517 0 -9.527233 1.701292 0
+ L3 16755200 0.000000 -9.186975 -2.381808 0 -11.568783 -3.742842 0
+ L3 16755200 0.000000 -8.166200 -7.825942 0 -7.485683 -6.805167 0
+ L3 16755200 0.000000 -3.062325 -10.888267 0 -2.381808 -11.909042 0
+ L3 16755200 0.000000 1.701292 -9.186975 0 0.680517 -9.867492 0
+ L3 16755200 0.000000 6.464908 -10.207750 0 7.485683 -10.548008 0
+ L3 16755200 0.000000 11.909042 -4.763617 0 10.888267 -5.103875 0
+# Layer: XTRKCAD4
+ F4 6815744 0.000000 5 0
+ -2.038534 6.455357 0
+ -1.844388 5.339017 0
+ 0.242683 4.416823 0
+ 0.825121 5.775846 0
+ -0.242683 6.795113 0
+ F4 6815744 0.000000 4 0
+ 6.649503 -0.242683 0
+ 4.125604 -0.825121 0
+ 3.591703 0.436829 0
+ 7.037795 0.630975 0
+ F4 6815744 0.000000 4 0
+ 1.601705 -6.455357 0
+ 0.339756 -5.484627 0
+ 0.679511 -3.446093 0
+ 1.456096 -3.737312 0
+ F4 6815744 0.000000 5 0
+ -5.096335 -0.582438 0
+ -4.416823 -0.097073 0
+ -2.087070 0.485365 0
+ -0.825121 -0.825121 0
+ -3.737312 -1.261950 0
+ L3 6815744 0.000000 4.763617 6.464908 0 3.062325 5.784392 0
+ L3 6815744 0.000000 3.062325 8.846717 0 2.381808 7.485683 0
+ L3 6815744 0.000000 -1.361033 8.506458 0 -0.680517 7.485683 0
+ L3 6815744 0.000000 -3.062325 3.742842 0 -1.361033 4.423358 0
+ L3 6815744 0.000000 -4.083100 2.041550 0 -2.722067 1.020775 0
+ L3 6815744 0.000000 -7.825942 0.680517 0 -6.124650 0.000000 0
+ L3 6815744 0.000000 -5.444133 -1.701292 0 -6.805167 -3.062325 0
+ L3 6815744 0.000000 -1.361033 -6.124650 0 -1.701292 -8.166200 0
+ L3 6815744 0.000000 -1.020775 -3.742842 0 -0.680517 -5.103875 0
+ L3 6815744 0.000000 2.381808 -6.124650 0 3.062325 -8.166200 0
+ L3 6815744 0.000000 4.083100 -5.784392 0 6.124650 -6.805167 0
+ L3 6815744 0.000000 9.186975 -2.381808 0 7.485683 -2.722067 0
+ L3 6815744 0.000000 9.186975 -5.444133 0 7.485683 -4.763617 0
+ L3 6815744 0.000000 9.867492 -4.083100 0 8.166200 -3.742842 0
+ L3 6815744 0.000000 4.083100 -9.867492 0 3.742842 -8.506458 0
+ L3 6815744 0.000000 6.124650 -8.846717 0 5.103875 -7.825942 0
+ L3 6815744 0.000000 10.207750 1.701292 0 8.166200 2.041550 0
+ L3 6815744 0.000000 10.207750 3.402583 0 8.506458 3.062325 0
+ L3 6815744 0.000000 -3.402583 -9.527233 0 -3.062325 -8.166200 0
+ L3 6815744 0.000000 -7.485683 -4.763617 0 -6.464908 -4.083100 0
+ L3 6815744 0.000000 4.763617 10.888267 0 4.083100 9.186975 0
+ L3 6815744 0.000000 6.124650 9.867492 0 5.103875 8.846717 0
+ L3 11184640 0.000000 4.763617 -9.186975 0 4.083100 -7.145425 0
+ L3 14915328 0.000000 5.444133 8.166200 0 4.423358 7.485683 0
+ L3 14915328 0.000000 -6.124650 1.701292 0 -4.763617 1.020775 0
+ F4 16755200 0.000000 4 0
+ 5.241944 5.387554 0
+ 3.106337 4.756579 0
+ 2.863655 3.154874 0
+ 4.271214 3.737312 0
+ F4 16755200 0.000000 3 0
+ 5.921455 -4.853652 0
+ 5.241944 -3.349020 0
+ 4.174141 -4.271214 0
+ F4 16755200 0.000000 4 0
+ -4.465360 -5.630236 0
+ -3.106337 -5.290481 0
+ -2.135607 -3.009264 0
+ -3.640239 -3.397556 0
+ L3 16755200 0.000000 0.680517 7.485683 0 1.361033 6.464908 0
+ L3 16755200 0.000000 -4.083100 5.444133 0 -2.722067 5.444133 0
+ L3 16755200 0.000000 -6.124650 -4.763617 0 -5.103875 -3.402583 0
+ L3 16755200 0.000000 -3.742842 -7.485683 0 -2.722067 -6.124650 0
+ L3 16755200 0.000000 8.506458 4.423358 0 6.805167 3.402583 0
+ END$SEGS
+
+STRUCTURE * "Lg Fall 32"" Fall-32a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -9.679129 -9.182341 0
+ -8.306068 -14.374226 0
+ -5.216682 -15.704378 0
+ -1.741123 -11.413564 0
+ 2.249333 -15.146572 0
+ 7.055045 -12.872441 0
+ 5.939433 12.657900 0
+ 1.391171 15.060756 0
+ -0.496787 12.143003 0
+ -4.315612 12.185911 0
+ -5.259591 15.146572 0
+ -11.138005 13.258614 0
+ -10.408567 9.783055 0
+ -15.257186 9.439790 0
+ -17.745858 4.419538 0
+ -14.999738 1.587601 0
+ -18.604021 0.000000 0
+ -17.660042 -3.604283 0
+ -13.841218 -4.977344 0
+ -16.587339 -7.208567 0
+ -14.356116 -11.241932 0
+# Layer: XTRKCAD2
+ F4 6842368 0.000000 28 0
+ -13.387339 -7.208567 0
+ -11.156116 -11.241932 0
+ -6.479129 -9.182341 0
+ -5.106068 -14.374226 0
+ -2.016682 -15.704378 0
+ 1.458877 -11.413564 0
+ 5.449333 -15.146572 0
+ 10.255045 -12.872441 0
+ 8.452903 -8.109638 0
+ 14.202593 -6.522037 0
+ 15.060756 -1.115612 0
+ 12.057186 1.673417 0
+ 14.889123 5.706782 0
+ 12.743717 9.311066 0
+ 9.268158 8.023822 0
+ 9.139433 12.657900 0
+ 4.591171 15.060756 0
+ 2.703213 12.143003 0
+ -1.115612 12.185911 0
+ -2.059591 15.146572 0
+ -7.938005 13.258614 0
+ -7.208567 9.783055 0
+ -12.057186 9.439790 0
+ -14.545858 4.419538 0
+ -11.799738 1.587601 0
+ -15.404021 0.000000 0
+ -14.460042 -3.604283 0
+ -10.641218 -4.977344 0
+# Layer: XTRKCAD3
+ F4 12434688 0.000000 26 0
+ 2.145407 -10.040504 0
+ 5.148976 -13.044074 0
+ 8.023822 -11.284840 0
+ 6.736577 -6.264588 0
+ 12.486268 -4.676987 0
+ 12.872441 -2.188315 0
+ 9.268158 0.300357 0
+ 12.400451 5.020252 0
+ 11.027391 6.650761 0
+ 7.594740 6.564945 0
+ 7.423108 10.512493 0
+ 4.462446 12.143003 0
+ 2.016682 9.268158 0
+ -1.673417 9.783055 0
+ -2.531580 11.756829 0
+ -5.663874 10.941575 0
+ -5.706782 7.508924 0
+ -8.324179 7.423108 0
+ -10.040504 3.990457 0
+ -6.994026 1.115612 0
+ -9.868871 -0.386173 0
+ -9.396882 -2.445764 0
+ -4.805711 -3.303927 0
+ -6.564945 -6.436220 0
+ -3.690100 -8.667444 0
+ -2.531580 -11.199024 0
+ L3 12434688 0.000000 -3.888667 -12.443733 0 -4.277533 -10.499400 0
+ L3 12434688 0.000000 -8.166200 -6.610733 0 -6.610733 -5.444133 0
+ L3 12434688 0.000000 -13.221467 -0.777733 0 -10.888267 -1.944333 0
+ L3 12434688 0.000000 -8.943933 1.166600 0 -10.888267 0.777733 0
+ L3 12434688 0.000000 -12.054867 5.833000 0 -10.110533 6.221867 0
+ L3 12434688 0.000000 -5.833000 11.666000 0 -6.610733 12.832600 0
+ L3 12434688 0.000000 1.944333 10.499400 0 0.777733 11.277133 0
+ L3 12434688 0.000000 7.388467 11.666000 0 8.555067 12.054867 0
+ L3 12434688 0.000000 13.610333 5.444133 0 12.443733 5.833000 0
+ L3 12434688 0.000000 -10.888267 -9.721667 0 -10.110533 -8.166200 0
+ L3 12434688 0.000000 -12.443733 -7.388467 0 -11.277133 -8.166200 0
+ L3 16755200 0.000000 -2.722067 -13.221467 0 -1.166600 -12.054867 0
+ L3 16755200 0.000000 -8.943933 -8.166200 0 -6.221867 -8.166200 0
+ L3 16755200 0.000000 -10.888267 -7.388467 0 -9.721667 -6.221867 0
+ L3 16755200 0.000000 -7.388467 -4.277533 0 -9.721667 -3.888667 0
+ L3 16755200 0.000000 -13.221467 -3.110933 0 -10.499400 -3.110933 0
+ L3 16755200 0.000000 -10.499400 2.722067 0 -13.221467 4.277533 0
+ L3 16755200 0.000000 -9.332800 8.943933 0 -8.555067 7.777333 0
+ L3 16755200 0.000000 -3.499800 12.443733 0 -2.722067 13.610333 0
+ L3 16755200 0.000000 -0.388867 10.499400 0 0.000000 11.666000 0
+ L3 16755200 0.000000 5.055267 12.443733 0 4.666400 13.999200 0
+ L3 16755200 0.000000 11.666000 7.388467 0 12.443733 8.555067 0
+ L3 16755200 0.000000 13.610333 -1.166600 0 12.054867 -0.777733 0
+# Layer: XTRKCAD4
+ F4 6842368 0.000000 4 0
+ 5.990793 -6.157204 0
+ 3.550100 -5.436090 0
+ 3.272748 -3.605570 0
+ 4.881387 -4.271214 0
+ F4 6842368 0.000000 4 0
+ 7.599432 0.277352 0
+ 4.714976 0.942995 0
+ 4.104803 -0.499233 0
+ 8.043195 -0.721114 0
+ F4 6842368 0.000000 4 0
+ 1.830520 7.377551 0
+ 0.388292 6.268145 0
+ 0.776584 3.938392 0
+ 1.664109 4.271214 0
+ F4 6842368 0.000000 5 0
+ -5.824382 0.665644 0
+ -5.047798 0.110941 0
+ -2.385223 -0.554703 0
+ -0.942995 0.942995 0
+ -4.271214 1.442228 0
+ L3 6842368 0.000000 0.777733 -8.555067 0 1.555467 -7.388467 0
+ L3 6842368 0.000000 5.444133 -7.388467 0 3.499800 -6.610733 0
+ L3 6842368 0.000000 6.221867 -9.332800 0 5.055267 -8.555067 0
+ L3 6842368 0.000000 3.499800 -10.110533 0 2.722067 -8.555067 0
+ L3 6842368 0.000000 -1.555467 -9.721667 0 -0.777733 -8.555067 0
+ L3 6842368 0.000000 -4.666400 -6.221867 0 -3.110933 -6.221867 0
+ L3 6842368 0.000000 -3.499800 -4.277533 0 -1.555467 -5.055267 0
+ L3 6842368 0.000000 -4.666400 -2.333200 0 -3.110933 -1.166600 0
+ L3 6842368 0.000000 -6.999600 -1.944333 0 -5.444133 -1.166600 0
+ L3 6842368 0.000000 -8.943933 -0.777733 0 -6.999600 0.000000 0
+ L3 6842368 0.000000 -6.221867 1.944333 0 -7.777333 3.499800 0
+ L3 6842368 0.000000 -6.999600 5.444133 0 -5.833000 3.888667 0
+ L3 6842368 0.000000 -4.277533 8.555067 0 -3.110933 6.999600 0
+ L3 6842368 0.000000 -1.555467 6.999600 0 -1.944333 9.332800 0
+ L3 6842368 0.000000 -1.166600 4.277533 0 -0.777733 5.833000 0
+ L3 6842368 0.000000 2.722067 6.999600 0 3.499800 9.332800 0
+ L3 6842368 0.000000 4.666400 6.610733 0 6.999600 7.777333 0
+ L3 6842368 0.000000 10.499400 2.722067 0 8.555067 3.110933 0
+ L3 6842368 0.000000 10.499400 6.221867 0 8.555067 5.444133 0
+ L3 6842368 0.000000 11.277133 4.666400 0 9.332800 4.277533 0
+ L3 6842368 0.000000 4.666400 11.277133 0 4.277533 9.721667 0
+ L3 6842368 0.000000 6.999600 10.110533 0 5.833000 8.943933 0
+ L3 6842368 0.000000 5.444133 10.499400 0 4.666400 8.166200 0
+ L3 6842368 0.000000 11.666000 -1.944333 0 9.332800 -2.333200 0
+ L3 6842368 0.000000 9.721667 -5.055267 0 7.777333 -3.888667 0
+ L3 6842368 0.000000 11.666000 -3.888667 0 9.721667 -3.499800 0
+ L3 6842368 0.000000 -3.888667 10.888267 0 -3.499800 9.332800 0
+ L3 6842368 0.000000 -8.555067 5.444133 0 -7.388467 4.666400 0
+ L3 6842368 0.000000 5.444133 -12.443733 0 4.666400 -10.499400 0
+ L3 6842368 0.000000 6.999600 -11.277133 0 5.833000 -10.110533 0
+ F4 16755200 0.000000 5 0
+ -2.329753 -7.377551 0
+ -2.107872 -6.101734 0
+ 0.277352 -5.047798 0
+ 0.942995 -6.600967 0
+ -0.277352 -7.765843 0
+ F4 16755200 0.000000 3 0
+ 6.767378 5.547031 0
+ 5.990793 3.827451 0
+ 4.770447 4.881387 0
+ F4 16755200 0.000000 4 0
+ -5.103268 6.434556 0
+ -3.550100 6.046264 0
+ -2.440694 3.439159 0
+ -4.160273 3.882922 0
+ END$SEGS
+
+STRUCTURE * "Lg Fall 32"" Fall-32b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -9.679129 9.182341 0
+ -8.306068 14.374226 0
+ -5.216682 15.704378 0
+ -1.741123 11.413564 0
+ 2.249333 15.146572 0
+ 7.055045 12.872441 0
+ 5.939433 -12.657900 0
+ 1.391171 -15.060756 0
+ -0.496787 -12.143003 0
+ -4.315612 -12.185911 0
+ -5.259591 -15.146572 0
+ -11.138005 -13.258614 0
+ -10.408567 -9.783055 0
+ -15.257186 -9.439790 0
+ -17.745858 -4.419538 0
+ -14.999738 -1.587601 0
+ -18.604021 0.000000 0
+ -17.660042 3.604283 0
+ -13.841218 4.977344 0
+ -16.587339 7.208567 0
+ -14.356116 11.241932 0
+# Layer: XTRKCAD2
+ F4 6815744 0.000000 28 0
+ -13.387339 7.208567 0
+ -11.156116 11.241932 0
+ -6.479129 9.182341 0
+ -5.106068 14.374226 0
+ -2.016682 15.704378 0
+ 1.458877 11.413564 0
+ 5.449333 15.146572 0
+ 10.255045 12.872441 0
+ 8.452903 8.109638 0
+ 14.202593 6.522037 0
+ 15.060756 1.115612 0
+ 12.057186 -1.673417 0
+ 14.889123 -5.706782 0
+ 12.743717 -9.311066 0
+ 9.268158 -8.023822 0
+ 9.139433 -12.657900 0
+ 4.591171 -15.060756 0
+ 2.703213 -12.143003 0
+ -1.115612 -12.185911 0
+ -2.059591 -15.146572 0
+ -7.938005 -13.258614 0
+ -7.208567 -9.783055 0
+ -12.057186 -9.439790 0
+ -14.545858 -4.419538 0
+ -11.799738 -1.587601 0
+ -15.404021 0.000000 0
+ -14.460042 3.604283 0
+ -10.641218 4.977344 0
+# Layer: XTRKCAD3
+ F4 12410368 0.000000 26 0
+ 2.145407 10.040504 0
+ 5.148976 13.044074 0
+ 8.023822 11.284840 0
+ 6.736577 6.264588 0
+ 12.486268 4.676987 0
+ 12.872441 2.188315 0
+ 9.268158 -0.300357 0
+ 12.400451 -5.020252 0
+ 11.027391 -6.650761 0
+ 7.594740 -6.564945 0
+ 7.423108 -10.512493 0
+ 4.462446 -12.143003 0
+ 2.016682 -9.268158 0
+ -1.673417 -9.783055 0
+ -2.531580 -11.756829 0
+ -5.663874 -10.941575 0
+ -5.706782 -7.508924 0
+ -8.324179 -7.423108 0
+ -10.040504 -3.990457 0
+ -6.994026 -1.115612 0
+ -9.868871 0.386173 0
+ -9.396882 2.445764 0
+ -4.805711 3.303927 0
+ -6.564945 6.436220 0
+ -3.690100 8.667444 0
+ -2.531580 11.199024 0
+ L3 12410368 0.000000 -2.722067 13.221467 0 -1.166600 12.054867 0
+ L3 12410368 0.000000 -10.888267 7.388467 0 -9.721667 6.221867 0
+ L3 12410368 0.000000 -8.166200 6.610733 0 -6.610733 5.444133 0
+ L3 12410368 0.000000 -13.221467 3.110933 0 -10.499400 3.110933 0
+ L3 12410368 0.000000 -8.943933 -1.166600 0 -10.888267 -0.777733 0
+ L3 12410368 0.000000 -12.054867 -5.833000 0 -10.110533 -6.221867 0
+ L3 12410368 0.000000 -5.833000 -11.666000 0 -6.610733 -12.832600 0
+ L3 12410368 0.000000 -0.388867 -10.499400 0 0.000000 -11.666000 0
+ L3 12410368 0.000000 5.055267 -12.443733 0 4.666400 -13.999200 0
+ L3 12410368 0.000000 11.666000 -7.388467 0 12.443733 -8.555067 0
+ L3 12410368 0.000000 -10.888267 9.721667 0 -10.110533 8.166200 0
+ L3 14915328 0.000000 -12.443733 7.388467 0 -11.277133 8.166200 0
+ L3 16755200 0.000000 13.610333 1.166600 0 12.054867 0.777733 0
+ L3 16755200 0.000000 -3.888667 12.443733 0 -4.277533 10.499400 0
+ L3 16755200 0.000000 -8.943933 8.166200 0 -6.221867 8.166200 0
+ L3 16755200 0.000000 -7.388467 4.277533 0 -9.721667 3.888667 0
+ L3 16755200 0.000000 -13.221467 0.777733 0 -10.888267 1.944333 0
+ L3 16755200 0.000000 -10.499400 -2.722067 0 -13.221467 -4.277533 0
+ L3 16755200 0.000000 -9.332800 -8.943933 0 -8.555067 -7.777333 0
+ L3 16755200 0.000000 -3.499800 -12.443733 0 -2.722067 -13.610333 0
+ L3 16755200 0.000000 1.944333 -10.499400 0 0.777733 -11.277133 0
+ L3 16755200 0.000000 7.388467 -11.666000 0 8.555067 -12.054867 0
+ L3 16755200 0.000000 13.610333 -5.444133 0 12.443733 -5.833000 0
+# Layer: XTRKCAD4
+ F4 6815744 0.000000 5 0
+ -2.329753 7.377551 0
+ -2.107872 6.101734 0
+ 0.277352 5.047798 0
+ 0.942995 6.600967 0
+ -0.277352 7.765843 0
+ F4 6815744 0.000000 4 0
+ 7.599432 -0.277352 0
+ 4.714976 -0.942995 0
+ 4.104803 0.499233 0
+ 8.043195 0.721114 0
+ F4 6815744 0.000000 4 0
+ 1.830520 -7.377551 0
+ 0.388292 -6.268145 0
+ 0.776584 -3.938392 0
+ 1.664109 -4.271214 0
+ F4 6815744 0.000000 5 0
+ -5.824382 -0.665644 0
+ -5.047798 -0.110941 0
+ -2.385223 0.554703 0
+ -0.942995 -0.942995 0
+ -4.271214 -1.442228 0
+ L3 6815744 0.000000 5.444133 7.388467 0 3.499800 6.610733 0
+ L3 6815744 0.000000 3.499800 10.110533 0 2.722067 8.555067 0
+ L3 6815744 0.000000 -1.555467 9.721667 0 -0.777733 8.555067 0
+ L3 6815744 0.000000 -3.499800 4.277533 0 -1.555467 5.055267 0
+ L3 6815744 0.000000 -4.666400 2.333200 0 -3.110933 1.166600 0
+ L3 6815744 0.000000 -8.943933 0.777733 0 -6.999600 0.000000 0
+ L3 6815744 0.000000 -6.221867 -1.944333 0 -7.777333 -3.499800 0
+ L3 6815744 0.000000 -1.555467 -6.999600 0 -1.944333 -9.332800 0
+ L3 6815744 0.000000 -1.166600 -4.277533 0 -0.777733 -5.833000 0
+ L3 6815744 0.000000 2.722067 -6.999600 0 3.499800 -9.332800 0
+ L3 6815744 0.000000 4.666400 -6.610733 0 6.999600 -7.777333 0
+ L3 6815744 0.000000 10.499400 -2.722067 0 8.555067 -3.110933 0
+ L3 6815744 0.000000 10.499400 -6.221867 0 8.555067 -5.444133 0
+ L3 6815744 0.000000 11.277133 -4.666400 0 9.332800 -4.277533 0
+ L3 6815744 0.000000 4.666400 -11.277133 0 4.277533 -9.721667 0
+ L3 6815744 0.000000 6.999600 -10.110533 0 5.833000 -8.943933 0
+ L3 6815744 0.000000 11.666000 1.944333 0 9.332800 2.333200 0
+ L3 6815744 0.000000 11.666000 3.888667 0 9.721667 3.499800 0
+ L3 6815744 0.000000 -3.888667 -10.888267 0 -3.499800 -9.332800 0
+ L3 6815744 0.000000 -8.555067 -5.444133 0 -7.388467 -4.666400 0
+ L3 6815744 0.000000 5.444133 12.443733 0 4.666400 10.499400 0
+ L3 6815744 0.000000 6.999600 11.277133 0 5.833000 10.110533 0
+ L3 11184640 0.000000 5.444133 -10.499400 0 4.666400 -8.166200 0
+ L3 14915328 0.000000 6.221867 9.332800 0 5.055267 8.555067 0
+ L3 14915328 0.000000 -6.999600 1.944333 0 -5.444133 1.166600 0
+ F4 16755200 0.000000 4 0
+ 5.990793 6.157204 0
+ 3.550100 5.436090 0
+ 3.272748 3.605570 0
+ 4.881387 4.271214 0
+ F4 16755200 0.000000 3 0
+ 6.767378 -5.547031 0
+ 5.990793 -3.827451 0
+ 4.770447 -4.881387 0
+ F4 16755200 0.000000 4 0
+ -5.103268 -6.434556 0
+ -3.550100 -6.046264 0
+ -2.440694 -3.439159 0
+ -4.160273 -3.882922 0
+ L3 16755200 0.000000 0.777733 8.555067 0 1.555467 7.388467 0
+ L3 16755200 0.000000 -4.666400 6.221867 0 -3.110933 6.221867 0
+ L3 16755200 0.000000 -6.999600 -5.444133 0 -5.833000 -3.888667 0
+ L3 16755200 0.000000 -4.277533 -8.555067 0 -3.110933 -6.999600 0
+ L3 16755200 0.000000 9.721667 5.055267 0 7.777333 3.888667 0
+ END$SEGS
+
diff --git a/app/lib/params/TreeSmConif.xtp b/app/lib/params/TreeSmConif.xtp
new file mode 100644
index 0000000..bf61e67
--- /dev/null
+++ b/app/lib/params/TreeSmConif.xtp
@@ -0,0 +1,3023 @@
+CONTENTS Small Conifer Trees
+
+# DxfToXtp version 0.6 by Russell Shilling 2021
+STRUCTURE * "Sm Conif 1"" Conif-1a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.134863 0.380810 0
+ -0.017085 0.466117 0
+ 0.068071 0.374238 0
+ 0.076897 -0.297187 0
+ -0.059663 -0.475081 0
+ -0.149301 -0.304769 0
+ -0.259107 -0.461635 0
+ -0.302473 -0.286948 0
+ -0.448629 -0.351310 0
+ -0.409251 -0.185999 0
+ -0.548189 -0.181517 0
+ -0.427178 -0.047060 0
+ -0.581376 0.000000 0
+ -0.468742 0.049613 0
+ -0.554558 0.138111 0
+ -0.384600 0.259950 0
+ -0.440624 0.414575 0
+ -0.241180 0.363033 0
+ -0.164362 0.473330 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -0.309251 -0.185999 0
+ -0.348629 -0.351310 0
+ -0.202473 -0.286948 0
+ -0.159107 -0.461635 0
+ -0.049301 -0.304769 0
+ 0.040337 -0.475081 0
+ 0.176897 -0.297187 0
+ 0.320470 -0.402264 0
+ 0.264153 -0.253426 0
+ 0.340822 -0.128545 0
+ 0.470649 -0.034863 0
+ 0.376787 0.052294 0
+ 0.465285 0.178337 0
+ 0.318214 0.185999 0
+ 0.289630 0.250744 0
+ 0.285607 0.395559 0
+ 0.168071 0.374238 0
+ 0.082915 0.466117 0
+ -0.034863 0.380810 0
+ -0.064362 0.473330 0
+ -0.141180 0.363033 0
+ -0.340624 0.414575 0
+ -0.284600 0.259950 0
+ -0.454558 0.138111 0
+ -0.368742 0.049613 0
+ -0.481376 0.000000 0
+ -0.327178 -0.047060 0
+ -0.448189 -0.181517 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.067044 -0.313766 0
+ 0.203006 -0.469081 0
+ 0.250744 -0.352651 0
+ 0.210518 -0.195768 0
+ 0.370535 -0.203006 0
+ 0.476965 -0.116285 0
+ 0.289630 0.009386 0
+ 0.461197 0.197093 0
+ 0.333087 0.226657 0
+ 0.237336 0.205155 0
+ 0.231972 0.328515 0
+ 0.210889 0.447401 0
+ 0.063021 0.289630 0
+ -0.052294 0.305720 0
+ -0.079112 0.367401 0
+ -0.179355 0.443459 0
+ -0.178337 0.234654 0
+ -0.411924 0.289727 0
+ -0.364622 0.126139 0
+ -0.218563 0.034863 0
+ -0.384331 0.031535 0
+ -0.463168 -0.078837 0
+ -0.150178 -0.103248 0
+ -0.394186 -0.305494 0
+ -0.115316 -0.270858 0
+ -0.121521 -0.486083 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -0.277562 0.163587 0 -0.366060 0.159565 0
+ L3 26624 0.000000 -0.384832 0.234654 0 -0.324493 0.219904 0
+ L3 26624 0.000000 -0.123361 0.395559 0 -0.113975 0.284266 0
+ L3 26624 0.000000 -0.113975 0.284266 0 -0.181019 0.363378 0
+ L3 26624 0.000000 0.159565 0.399582 0 0.170292 0.305720 0
+ L3 26624 0.000000 0.170292 0.305720 0 0.221245 0.363378 0
+ L3 26624 0.000000 0.383491 0.206495 0 0.258790 0.148838 0
+ L3 26624 0.000000 0.258790 0.148838 0 0.383491 0.119338 0
+ L3 26624 0.000000 0.348629 -0.084475 0 0.254767 -0.085816 0
+ L3 26624 0.000000 0.254767 -0.085816 0 0.332538 -0.190405 0
+ L3 26624 0.000000 0.238677 -0.316448 0 0.135429 -0.226609 0
+ L3 26624 0.000000 0.135429 -0.226609 0 0.138111 -0.390196 0
+ L3 26624 0.000000 -0.048272 -0.417013 0 -0.049613 -0.278903 0
+ L3 26624 0.000000 -0.049613 -0.278903 0 -0.116656 -0.336561 0
+ L3 26624 0.000000 -0.064362 0.294993 0 -0.080453 0.226609 0
+ L3 26624 0.000000 0.108611 0.312425 0 0.109952 0.233313 0
+ L3 26624 0.000000 0.209177 0.268176 0 0.146156 0.215882 0
+ L3 26624 0.000000 0.242699 0.205155 0 0.174314 0.107270 0
+ L3 26624 0.000000 0.313766 0.056317 0 0.229290 0.079112 0
+ L3 26624 0.000000 0.321811 -0.022795 0 0.182360 -0.042908 0
+ L3 26624 0.000000 0.195768 -0.099225 0 0.261471 -0.193087 0
+ L3 26624 0.000000 0.209177 -0.219904 0 0.103248 -0.142133 0
+ L3 26624 0.000000 0.083135 -0.186382 0 0.056317 -0.268176 0
+ L3 26624 0.000000 0.004023 -0.266835 0 -0.014750 -0.159565 0
+ L3 26624 0.000000 -0.108611 -0.242699 0 -0.079112 -0.136770 0
+ L3 26624 0.000000 -0.205155 0.038885 0 -0.107270 -0.009386 0
+ L3 26624 0.000000 -0.087157 0.132747 0 -0.044249 0.048272 0
+ L3 26624 0.000000 0.067044 0.198450 0 0.018772 0.107270 0
+ L3 26624 0.000000 0.128724 0.146156 0 0.072407 0.087157 0
+ L3 26624 0.000000 0.178337 0.038885 0 0.071067 0.021454 0
+ L3 26624 0.000000 0.115316 -0.071067 0 0.049613 -0.030840 0
+ L3 26624 0.000000 0.013409 -0.100566 0 0.017431 -0.049613 0
+ L3 26624 0.000000 -0.020113 -0.033522 0 -0.061680 -0.089839 0
+ L3 26624 0.000000 -0.081794 0.034863 0 -0.025477 0.002682 0
+ L3 26624 0.000000 0.042908 0.068385 0 0.016091 0.014750 0
+ L3 26624 0.000000 -0.244416 0.086672 0 -0.310287 0.119608 0
+ L3 26624 0.000000 -0.305087 -0.071071 0 -0.221881 -0.045070 0
+ L3 26624 0.000000 -0.240949 -0.258284 0 -0.166411 -0.235749 0
+ F4 32768 0.000000 4 0
+ -0.225348 0.133475 0
+ -0.182012 0.083205 0
+ -0.105740 0.053737 0
+ -0.154277 0.116141 0
+ F4 32768 0.000000 4 0
+ -0.204547 -0.071071 0
+ -0.110941 -0.079739 0
+ -0.069338 -0.041603 0
+ -0.145610 -0.043336 0
+ F4 32768 0.000000 4 0
+ -0.102273 0.168144 0
+ -0.117874 0.223615 0
+ -0.175078 0.251350 0
+ -0.159477 0.206280 0
+ F4 32768 0.000000 4 0
+ -0.339756 0.001733 0
+ -0.265217 0.019068 0
+ -0.183745 -0.006934 0
+ -0.266951 -0.020801 0
+ F4 32768 0.000000 4 0
+ -0.280818 0.220148 0
+ -0.239216 0.178545 0
+ -0.175078 0.164677 0
+ -0.211481 0.206280 0
+ F4 32768 0.000000 4 0
+ -0.237482 -0.228815 0
+ -0.182012 -0.171611 0
+ -0.117874 -0.147343 0
+ -0.180279 -0.209747 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 1"" Conif-1b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.017085 -0.466117 0
+ -0.134863 -0.380810 0
+ -0.164362 -0.473330 0
+ -0.241180 -0.363033 0
+ -0.440624 -0.414575 0
+ -0.384600 -0.259950 0
+ -0.554558 -0.138111 0
+ -0.468742 -0.049613 0
+ -0.581376 0.000000 0
+ -0.427178 0.047060 0
+ -0.548189 0.181517 0
+ -0.409251 0.185999 0
+ -0.448629 0.351310 0
+ -0.302473 0.286948 0
+ -0.259107 0.461635 0
+ -0.149301 0.304769 0
+ -0.059663 0.475081 0
+ 0.076897 0.297187 0
+ 0.068071 -0.374238 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -0.309251 0.185999 0
+ -0.348629 0.351310 0
+ -0.202473 0.286948 0
+ -0.159107 0.461635 0
+ -0.049301 0.304769 0
+ 0.040337 0.475081 0
+ 0.176897 0.297187 0
+ 0.320470 0.402264 0
+ 0.264153 0.253426 0
+ 0.340822 0.128545 0
+ 0.470649 0.034863 0
+ 0.376787 -0.052294 0
+ 0.465285 -0.178337 0
+ 0.318214 -0.185999 0
+ 0.289630 -0.250744 0
+ 0.285607 -0.395559 0
+ 0.168071 -0.374238 0
+ 0.082915 -0.466117 0
+ -0.034863 -0.380810 0
+ -0.064362 -0.473330 0
+ -0.141180 -0.363033 0
+ -0.340624 -0.414575 0
+ -0.284600 -0.259950 0
+ -0.454558 -0.138111 0
+ -0.368742 -0.049613 0
+ -0.481376 0.000000 0
+ -0.327178 0.047060 0
+ -0.448189 0.181517 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.067044 0.313766 0
+ 0.203006 0.469081 0
+ 0.250744 0.352651 0
+ 0.210518 0.195768 0
+ 0.370535 0.203006 0
+ 0.476965 0.116285 0
+ 0.289630 -0.009386 0
+ 0.461197 -0.197093 0
+ 0.333087 -0.226657 0
+ 0.237336 -0.205155 0
+ 0.231972 -0.328515 0
+ 0.210889 -0.447401 0
+ 0.063021 -0.289630 0
+ -0.052294 -0.305720 0
+ -0.079112 -0.367401 0
+ -0.179355 -0.443459 0
+ -0.178337 -0.234654 0
+ -0.411924 -0.289727 0
+ -0.364622 -0.126139 0
+ -0.218563 -0.034863 0
+ -0.384331 -0.031535 0
+ -0.463168 0.078837 0
+ -0.150178 0.103248 0
+ -0.394186 0.305494 0
+ -0.115316 0.270858 0
+ -0.121521 0.486083 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -0.277562 -0.163587 0 -0.366060 -0.159565 0
+ L3 26624 0.000000 -0.384832 -0.234654 0 -0.324493 -0.219904 0
+ L3 26624 0.000000 -0.123361 -0.395559 0 -0.113975 -0.284266 0
+ L3 26624 0.000000 -0.113975 -0.284266 0 -0.181019 -0.363378 0
+ L3 26624 0.000000 0.159565 -0.399582 0 0.170292 -0.305720 0
+ L3 26624 0.000000 0.170292 -0.305720 0 0.221245 -0.363378 0
+ L3 26624 0.000000 0.383491 -0.206495 0 0.258790 -0.148838 0
+ L3 26624 0.000000 0.258790 -0.148838 0 0.383491 -0.119338 0
+ L3 26624 0.000000 0.348629 0.084475 0 0.254767 0.085816 0
+ L3 26624 0.000000 0.254767 0.085816 0 0.332538 0.190405 0
+ L3 26624 0.000000 0.238677 0.316448 0 0.135429 0.226609 0
+ L3 26624 0.000000 0.135429 0.226609 0 0.138111 0.390196 0
+ L3 26624 0.000000 -0.048272 0.417013 0 -0.049613 0.278903 0
+ L3 26624 0.000000 -0.049613 0.278903 0 -0.116656 0.336561 0
+ L3 26624 0.000000 -0.064362 -0.294993 0 -0.080453 -0.226609 0
+ L3 26624 0.000000 0.108611 -0.312425 0 0.109952 -0.233313 0
+ L3 26624 0.000000 0.209177 -0.268176 0 0.146156 -0.215882 0
+ L3 26624 0.000000 0.242699 -0.205155 0 0.174314 -0.107270 0
+ L3 26624 0.000000 0.313766 -0.056317 0 0.229290 -0.079112 0
+ L3 26624 0.000000 0.321811 0.022795 0 0.182360 0.042908 0
+ L3 26624 0.000000 0.195768 0.099225 0 0.261471 0.193087 0
+ L3 26624 0.000000 0.209177 0.219904 0 0.103248 0.142133 0
+ L3 26624 0.000000 0.083135 0.186382 0 0.056317 0.268176 0
+ L3 26624 0.000000 0.004023 0.266835 0 -0.014750 0.159565 0
+ L3 26624 0.000000 -0.108611 0.242699 0 -0.079112 0.136770 0
+ L3 26624 0.000000 -0.205155 -0.038885 0 -0.107270 0.009386 0
+ L3 26624 0.000000 -0.087157 -0.132747 0 -0.044249 -0.048272 0
+ L3 26624 0.000000 0.067044 -0.198450 0 0.018772 -0.107270 0
+ L3 26624 0.000000 0.128724 -0.146156 0 0.072407 -0.087157 0
+ L3 26624 0.000000 0.178337 -0.038885 0 0.071067 -0.021454 0
+ L3 26624 0.000000 0.115316 0.071067 0 0.049613 0.030840 0
+ L3 26624 0.000000 0.013409 0.100566 0 0.017431 0.049613 0
+ L3 26624 0.000000 -0.020113 0.033522 0 -0.061680 0.089839 0
+ L3 26624 0.000000 -0.081794 -0.034863 0 -0.025477 -0.002682 0
+ L3 26624 0.000000 0.042908 -0.068385 0 0.016091 -0.014750 0
+ L3 26624 0.000000 -0.244416 -0.086672 0 -0.310287 -0.119608 0
+ L3 26624 0.000000 -0.305087 0.071071 0 -0.221881 0.045070 0
+ L3 26624 0.000000 -0.240949 0.258284 0 -0.166411 0.235749 0
+ F4 32768 0.000000 4 0
+ -0.225348 -0.133475 0
+ -0.182012 -0.083205 0
+ -0.105740 -0.053737 0
+ -0.154277 -0.116141 0
+ F4 32768 0.000000 4 0
+ -0.204547 0.071071 0
+ -0.110941 0.079739 0
+ -0.069338 0.041603 0
+ -0.145610 0.043336 0
+ F4 32768 0.000000 4 0
+ -0.102273 -0.168144 0
+ -0.117874 -0.223615 0
+ -0.175078 -0.251350 0
+ -0.159477 -0.206280 0
+ F4 32768 0.000000 4 0
+ -0.339756 -0.001733 0
+ -0.265217 -0.019068 0
+ -0.183745 0.006934 0
+ -0.266951 0.020801 0
+ F4 32768 0.000000 4 0
+ -0.280818 -0.220148 0
+ -0.239216 -0.178545 0
+ -0.175078 -0.164677 0
+ -0.211481 -0.206280 0
+ F4 32768 0.000000 4 0
+ -0.237482 0.228815 0
+ -0.182012 0.171611 0
+ -0.117874 0.147343 0
+ -0.180279 0.209747 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 2"" Conif-2a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.269726 0.761619 0
+ -0.034170 0.932234 0
+ 0.136142 0.748476 0
+ 0.153794 -0.594374 0
+ -0.119326 -0.950161 0
+ -0.298602 -0.609538 0
+ -0.518214 -0.923270 0
+ -0.604946 -0.573896 0
+ -0.897257 -0.702621 0
+ -0.818501 -0.371997 0
+ -1.096379 -0.363033 0
+ -0.854356 -0.094120 0
+ -1.162751 0.000000 0
+ -0.937484 0.099225 0
+ -1.109116 0.276221 0
+ -0.769200 0.519900 0
+ -0.881248 0.829150 0
+ -0.482359 0.726067 0
+ -0.328724 0.946661 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -0.618501 -0.371997 0
+ -0.697257 -0.702621 0
+ -0.404946 -0.573896 0
+ -0.318214 -0.923270 0
+ -0.098602 -0.609538 0
+ 0.080674 -0.950161 0
+ 0.353794 -0.594374 0
+ 0.640940 -0.804528 0
+ 0.528306 -0.506852 0
+ 0.681643 -0.257090 0
+ 0.941297 -0.069726 0
+ 0.753574 0.104589 0
+ 0.930570 0.356674 0
+ 0.636429 0.371997 0
+ 0.579260 0.501489 0
+ 0.571215 0.791119 0
+ 0.336142 0.748476 0
+ 0.165830 0.932234 0
+ -0.069726 0.761619 0
+ -0.128724 0.946661 0
+ -0.282359 0.726067 0
+ -0.681248 0.829150 0
+ -0.569200 0.519900 0
+ -0.909116 0.276221 0
+ -0.737484 0.099225 0
+ -0.962751 0.000000 0
+ -0.654356 -0.094120 0
+ -0.896379 -0.363033 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.134088 -0.627531 0
+ 0.406011 -0.938162 0
+ 0.501489 -0.705302 0
+ 0.421036 -0.391537 0
+ 0.741069 -0.406011 0
+ 0.953930 -0.232570 0
+ 0.579260 0.018772 0
+ 0.922395 0.394186 0
+ 0.666174 0.453314 0
+ 0.474671 0.410309 0
+ 0.463944 0.657031 0
+ 0.421779 0.894802 0
+ 0.126043 0.579260 0
+ -0.104589 0.611441 0
+ -0.158224 0.734802 0
+ -0.358709 0.886918 0
+ -0.356674 0.469308 0
+ -0.823848 0.579453 0
+ -0.729244 0.252279 0
+ -0.437127 0.069726 0
+ -0.768662 0.063070 0
+ -0.926337 -0.157674 0
+ -0.300357 -0.206495 0
+ -0.788372 -0.610988 0
+ -0.230631 -0.541715 0
+ -0.243042 -0.972167 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -0.555124 0.327175 0 -0.732120 0.319129 0
+ L3 26624 0.000000 -0.769665 0.469308 0 -0.648986 0.439808 0
+ L3 26624 0.000000 -0.246722 0.791119 0 -0.227949 0.568533 0
+ L3 26624 0.000000 -0.227949 0.568533 0 -0.362037 0.726757 0
+ L3 26624 0.000000 0.319129 0.799164 0 0.340583 0.611441 0
+ L3 26624 0.000000 0.340583 0.611441 0 0.442490 0.726757 0
+ L3 26624 0.000000 0.766983 0.412991 0 0.517579 0.297675 0
+ L3 26624 0.000000 0.517579 0.297675 0 0.766983 0.238677 0
+ L3 26624 0.000000 0.697257 -0.168951 0 0.509534 -0.171633 0
+ L3 26624 0.000000 0.509534 -0.171633 0 0.665076 -0.380810 0
+ L3 26624 0.000000 0.477353 -0.632895 0 0.270858 -0.453217 0
+ L3 26624 0.000000 0.270858 -0.453217 0 0.276221 -0.780392 0
+ L3 26624 0.000000 -0.096543 -0.834027 0 -0.099225 -0.557806 0
+ L3 26624 0.000000 -0.099225 -0.557806 0 -0.233313 -0.673121 0
+ L3 26624 0.000000 -0.128724 0.589987 0 -0.160906 0.453217 0
+ L3 26624 0.000000 0.217222 0.624850 0 0.219904 0.466626 0
+ L3 26624 0.000000 0.418354 0.536352 0 0.292312 0.431763 0
+ L3 26624 0.000000 0.485398 0.410309 0 0.348629 0.214541 0
+ L3 26624 0.000000 0.627531 0.112634 0 0.458581 0.158224 0
+ L3 26624 0.000000 0.643622 -0.045590 0 0.364719 -0.085816 0
+ L3 26624 0.000000 0.391537 -0.198450 0 0.522943 -0.386173 0
+ L3 26624 0.000000 0.418354 -0.439808 0 0.206495 -0.284266 0
+ L3 26624 0.000000 0.166269 -0.372764 0 0.112634 -0.536352 0
+ L3 26624 0.000000 0.008045 -0.533670 0 -0.029499 -0.319129 0
+ L3 26624 0.000000 -0.217222 -0.485398 0 -0.158224 -0.273539 0
+ L3 26624 0.000000 -0.410309 0.077771 0 -0.214541 -0.018772 0
+ L3 26624 0.000000 -0.174314 0.265494 0 -0.088498 0.096543 0
+ L3 26624 0.000000 0.134088 0.396900 0 0.037545 0.214541 0
+ L3 26624 0.000000 0.257449 0.292312 0 0.144815 0.174314 0
+ L3 26624 0.000000 0.356674 0.077771 0 0.142133 0.042908 0
+ L3 26624 0.000000 0.230631 -0.142133 0 0.099225 -0.061680 0
+ L3 26624 0.000000 0.026818 -0.201132 0 0.034863 -0.099225 0
+ L3 26624 0.000000 -0.040226 -0.067044 0 -0.123361 -0.179678 0
+ L3 26624 0.000000 -0.163587 0.069726 0 -0.050953 0.005364 0
+ L3 26624 0.000000 0.085816 0.136770 0 0.032181 0.029499 0
+ L3 26624 0.000000 -0.488832 0.173345 0 -0.620574 0.239216 0
+ L3 26624 0.000000 -0.610173 -0.142143 0 -0.443762 -0.090139 0
+ L3 26624 0.000000 -0.481898 -0.516567 0 -0.332822 -0.471498 0
+ F4 32768 0.000000 4 0
+ -0.450696 0.266951 0
+ -0.364024 0.166411 0
+ -0.211481 0.107474 0
+ -0.308554 0.232282 0
+ F4 32768 0.000000 4 0
+ -0.409094 -0.142143 0
+ -0.221881 -0.159477 0
+ -0.138676 -0.083205 0
+ -0.291219 -0.086672 0
+ F4 32768 0.000000 4 0
+ -0.204547 0.336289 0
+ -0.235749 0.447229 0
+ -0.350156 0.502700 0
+ -0.318954 0.412560 0
+ F4 32768 0.000000 4 0
+ -0.679511 0.003467 0
+ -0.530435 0.038136 0
+ -0.367491 -0.013868 0
+ -0.533902 -0.041603 0
+ F4 32768 0.000000 4 0
+ -0.561637 0.440296 0
+ -0.478431 0.357090 0
+ -0.350156 0.329355 0
+ -0.422961 0.412560 0
+ F4 32768 0.000000 4 0
+ -0.474965 -0.457630 0
+ -0.364024 -0.343223 0
+ -0.235749 -0.294686 0
+ -0.360557 -0.419494 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 2"" Conif-2b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.034170 -0.932234 0
+ -0.269726 -0.761619 0
+ -0.328724 -0.946661 0
+ -0.482359 -0.726067 0
+ -0.881248 -0.829150 0
+ -0.769200 -0.519900 0
+ -1.109116 -0.276221 0
+ -0.937484 -0.099225 0
+ -1.162751 0.000000 0
+ -0.854356 0.094120 0
+ -1.096379 0.363033 0
+ -0.818501 0.371997 0
+ -0.897257 0.702621 0
+ -0.604946 0.573896 0
+ -0.518214 0.923270 0
+ -0.298602 0.609538 0
+ -0.119326 0.950161 0
+ 0.153794 0.594374 0
+ 0.136142 -0.748476 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -0.618501 0.371997 0
+ -0.697257 0.702621 0
+ -0.404946 0.573896 0
+ -0.318214 0.923270 0
+ -0.098602 0.609538 0
+ 0.080674 0.950161 0
+ 0.353794 0.594374 0
+ 0.640940 0.804528 0
+ 0.528306 0.506852 0
+ 0.681643 0.257090 0
+ 0.941297 0.069726 0
+ 0.753574 -0.104589 0
+ 0.930570 -0.356674 0
+ 0.636429 -0.371997 0
+ 0.579260 -0.501489 0
+ 0.571215 -0.791119 0
+ 0.336142 -0.748476 0
+ 0.165830 -0.932234 0
+ -0.069726 -0.761619 0
+ -0.128724 -0.946661 0
+ -0.282359 -0.726067 0
+ -0.681248 -0.829150 0
+ -0.569200 -0.519900 0
+ -0.909116 -0.276221 0
+ -0.737484 -0.099225 0
+ -0.962751 0.000000 0
+ -0.654356 0.094120 0
+ -0.896379 0.363033 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.134088 0.627531 0
+ 0.406011 0.938162 0
+ 0.501489 0.705302 0
+ 0.421036 0.391537 0
+ 0.741069 0.406011 0
+ 0.953930 0.232570 0
+ 0.579260 -0.018772 0
+ 0.922395 -0.394186 0
+ 0.666174 -0.453314 0
+ 0.474671 -0.410309 0
+ 0.463944 -0.657031 0
+ 0.421779 -0.894802 0
+ 0.126043 -0.579260 0
+ -0.104589 -0.611441 0
+ -0.158224 -0.734802 0
+ -0.358709 -0.886918 0
+ -0.356674 -0.469308 0
+ -0.823848 -0.579453 0
+ -0.729244 -0.252279 0
+ -0.437127 -0.069726 0
+ -0.768662 -0.063070 0
+ -0.926337 0.157674 0
+ -0.300357 0.206495 0
+ -0.788372 0.610988 0
+ -0.230631 0.541715 0
+ -0.243042 0.972167 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -0.555124 -0.327175 0 -0.732120 -0.319129 0
+ L3 26624 0.000000 -0.769665 -0.469308 0 -0.648986 -0.439808 0
+ L3 26624 0.000000 -0.246722 -0.791119 0 -0.227949 -0.568533 0
+ L3 26624 0.000000 -0.227949 -0.568533 0 -0.362037 -0.726757 0
+ L3 26624 0.000000 0.319129 -0.799164 0 0.340583 -0.611441 0
+ L3 26624 0.000000 0.340583 -0.611441 0 0.442490 -0.726757 0
+ L3 26624 0.000000 0.766983 -0.412991 0 0.517579 -0.297675 0
+ L3 26624 0.000000 0.517579 -0.297675 0 0.766983 -0.238677 0
+ L3 26624 0.000000 0.697257 0.168951 0 0.509534 0.171633 0
+ L3 26624 0.000000 0.509534 0.171633 0 0.665076 0.380810 0
+ L3 26624 0.000000 0.477353 0.632895 0 0.270858 0.453217 0
+ L3 26624 0.000000 0.270858 0.453217 0 0.276221 0.780392 0
+ L3 26624 0.000000 -0.096543 0.834027 0 -0.099225 0.557806 0
+ L3 26624 0.000000 -0.099225 0.557806 0 -0.233313 0.673121 0
+ L3 26624 0.000000 -0.128724 -0.589987 0 -0.160906 -0.453217 0
+ L3 26624 0.000000 0.217222 -0.624850 0 0.219904 -0.466626 0
+ L3 26624 0.000000 0.418354 -0.536352 0 0.292312 -0.431763 0
+ L3 26624 0.000000 0.485398 -0.410309 0 0.348629 -0.214541 0
+ L3 26624 0.000000 0.627531 -0.112634 0 0.458581 -0.158224 0
+ L3 26624 0.000000 0.643622 0.045590 0 0.364719 0.085816 0
+ L3 26624 0.000000 0.391537 0.198450 0 0.522943 0.386173 0
+ L3 26624 0.000000 0.418354 0.439808 0 0.206495 0.284266 0
+ L3 26624 0.000000 0.166269 0.372764 0 0.112634 0.536352 0
+ L3 26624 0.000000 0.008045 0.533670 0 -0.029499 0.319129 0
+ L3 26624 0.000000 -0.217222 0.485398 0 -0.158224 0.273539 0
+ L3 26624 0.000000 -0.410309 -0.077771 0 -0.214541 0.018772 0
+ L3 26624 0.000000 -0.174314 -0.265494 0 -0.088498 -0.096543 0
+ L3 26624 0.000000 0.134088 -0.396900 0 0.037545 -0.214541 0
+ L3 26624 0.000000 0.257449 -0.292312 0 0.144815 -0.174314 0
+ L3 26624 0.000000 0.356674 -0.077771 0 0.142133 -0.042908 0
+ L3 26624 0.000000 0.230631 0.142133 0 0.099225 0.061680 0
+ L3 26624 0.000000 0.026818 0.201132 0 0.034863 0.099225 0
+ L3 26624 0.000000 -0.040226 0.067044 0 -0.123361 0.179678 0
+ L3 26624 0.000000 -0.163587 -0.069726 0 -0.050953 -0.005364 0
+ L3 26624 0.000000 0.085816 -0.136770 0 0.032181 -0.029499 0
+ L3 26624 0.000000 -0.488832 -0.173345 0 -0.620574 -0.239216 0
+ L3 26624 0.000000 -0.610173 0.142143 0 -0.443762 0.090139 0
+ L3 26624 0.000000 -0.481898 0.516567 0 -0.332822 0.471498 0
+ F4 32768 0.000000 4 0
+ -0.450696 -0.266951 0
+ -0.364024 -0.166411 0
+ -0.211481 -0.107474 0
+ -0.308554 -0.232282 0
+ F4 32768 0.000000 4 0
+ -0.409094 0.142143 0
+ -0.221881 0.159477 0
+ -0.138676 0.083205 0
+ -0.291219 0.086672 0
+ F4 32768 0.000000 4 0
+ -0.204547 -0.336289 0
+ -0.235749 -0.447229 0
+ -0.350156 -0.502700 0
+ -0.318954 -0.412560 0
+ F4 32768 0.000000 4 0
+ -0.679511 -0.003467 0
+ -0.530435 -0.038136 0
+ -0.367491 0.013868 0
+ -0.533902 0.041603 0
+ F4 32768 0.000000 4 0
+ -0.561637 -0.440296 0
+ -0.478431 -0.357090 0
+ -0.350156 -0.329355 0
+ -0.422961 -0.412560 0
+ F4 32768 0.000000 4 0
+ -0.474965 0.457630 0
+ -0.364024 0.343223 0
+ -0.235749 0.294686 0
+ -0.360557 0.419494 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 3"" Conif-3a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.404589 1.142429 0
+ -0.051255 1.398351 0
+ 0.204213 1.122714 0
+ 0.230691 -0.891561 0
+ -0.178989 -1.425242 0
+ -0.447902 -0.914306 0
+ -0.777322 -1.384905 0
+ -0.907418 -0.860844 0
+ -1.345886 -1.053931 0
+ -1.227752 -0.557996 0
+ -1.644568 -0.544550 0
+ -1.281535 -0.141180 0
+ -1.744127 0.000000 0
+ -1.406225 0.148838 0
+ -1.663674 0.414332 0
+ -1.153801 0.779849 0
+ -1.321872 1.243725 0
+ -0.723539 1.089100 0
+ -0.493087 1.419991 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -0.927752 -0.557996 0
+ -1.045886 -1.053931 0
+ -0.607418 -0.860844 0
+ -0.477322 -1.384905 0
+ -0.147902 -0.914306 0
+ 0.121011 -1.425242 0
+ 0.530691 -0.891561 0
+ 0.961410 -1.206791 0
+ 0.792460 -0.760279 0
+ 1.022465 -0.385635 0
+ 1.411946 -0.104589 0
+ 1.130361 0.156883 0
+ 1.395855 0.535011 0
+ 0.954643 0.557996 0
+ 0.868890 0.752233 0
+ 0.856822 1.186678 0
+ 0.504213 1.122714 0
+ 0.248745 1.398351 0
+ -0.104589 1.142429 0
+ -0.193087 1.419991 0
+ -0.423539 1.089100 0
+ -1.021872 1.243725 0
+ -0.853801 0.779849 0
+ -1.363674 0.414332 0
+ -1.106225 0.148838 0
+ -1.444127 0.000000 0
+ -0.981535 -0.141180 0
+ -1.344568 -0.544550 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.201132 -0.941297 0
+ 0.609017 -1.407244 0
+ 0.752233 -1.057954 0
+ 0.631554 -0.587305 0
+ 1.111604 -0.609017 0
+ 1.430895 -0.348855 0
+ 0.868890 0.028158 0
+ 1.383592 0.591279 0
+ 0.999261 0.679971 0
+ 0.712007 0.615464 0
+ 0.695916 0.985546 0
+ 0.632668 1.342203 0
+ 0.189064 0.868890 0
+ -0.156883 0.917161 0
+ -0.237336 1.102203 0
+ -0.538064 1.330377 0
+ -0.535011 0.703962 0
+ -1.235773 0.869180 0
+ -1.093866 0.378418 0
+ -0.655690 0.104589 0
+ -1.152994 0.094605 0
+ -1.389505 -0.236512 0
+ -0.450535 -0.309743 0
+ -1.182558 -0.916482 0
+ -0.345947 -0.812573 0
+ -0.364562 -1.458250 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -0.832686 0.490762 0 -1.098180 0.478694 0
+ L3 26624 0.000000 -1.154497 0.703962 0 -0.973478 0.659713 0
+ L3 26624 0.000000 -0.370083 1.186678 0 -0.341924 0.852799 0
+ L3 26624 0.000000 -0.341924 0.852799 0 -0.543056 1.090135 0
+ L3 26624 0.000000 0.478694 1.198746 0 0.510875 0.917161 0
+ L3 26624 0.000000 0.510875 0.917161 0 0.663735 1.090135 0
+ L3 26624 0.000000 1.150474 0.619486 0 0.776369 0.446513 0
+ L3 26624 0.000000 0.776369 0.446513 0 1.150474 0.358015 0
+ L3 26624 0.000000 1.045886 -0.253426 0 0.764301 -0.257449 0
+ L3 26624 0.000000 0.764301 -0.257449 0 0.997614 -0.571215 0
+ L3 26624 0.000000 0.716030 -0.949343 0 0.406286 -0.679826 0
+ L3 26624 0.000000 0.406286 -0.679826 0 0.414332 -1.170588 0
+ L3 26624 0.000000 -0.144815 -1.251040 0 -0.148838 -0.836709 0
+ L3 26624 0.000000 -0.148838 -0.836709 0 -0.349969 -1.009682 0
+ L3 26624 0.000000 -0.193087 0.884980 0 -0.241358 0.679826 0
+ L3 26624 0.000000 0.325834 0.937275 0 0.329856 0.699939 0
+ L3 26624 0.000000 0.627531 0.804528 0 0.438468 0.647645 0
+ L3 26624 0.000000 0.728097 0.615464 0 0.522943 0.321811 0
+ L3 26624 0.000000 0.941297 0.168951 0 0.687871 0.237336 0
+ L3 26624 0.000000 0.965433 -0.068385 0 0.547079 -0.128724 0
+ L3 26624 0.000000 0.587305 -0.297675 0 0.784414 -0.579260 0
+ L3 26624 0.000000 0.627531 -0.659713 0 0.309743 -0.426400 0
+ L3 26624 0.000000 0.249404 -0.559147 0 0.168951 -0.804528 0
+ L3 26624 0.000000 0.012068 -0.800505 0 -0.044249 -0.478694 0
+ L3 26624 0.000000 -0.325834 -0.728097 0 -0.237336 -0.410309 0
+ L3 26624 0.000000 -0.615464 0.116656 0 -0.321811 -0.028158 0
+ L3 26624 0.000000 -0.261471 0.398241 0 -0.132747 0.144815 0
+ L3 26624 0.000000 0.201132 0.595350 0 0.056317 0.321811 0
+ L3 26624 0.000000 0.386173 0.438468 0 0.217222 0.261471 0
+ L3 26624 0.000000 0.535011 0.116656 0 0.213200 0.064362 0
+ L3 26624 0.000000 0.345947 -0.213200 0 0.148838 -0.092521 0
+ L3 26624 0.000000 0.040226 -0.301698 0 0.052294 -0.148838 0
+ L3 26624 0.000000 -0.060340 -0.100566 0 -0.185041 -0.269517 0
+ L3 26624 0.000000 -0.245381 0.104589 0 -0.076430 0.008045 0
+ L3 26624 0.000000 0.128724 0.205155 0 0.048272 0.044249 0
+ L3 26624 0.000000 -0.733248 0.260017 0 -0.930861 0.358824 0
+ L3 26624 0.000000 -0.915260 -0.213214 0 -0.665644 -0.135209 0
+ L3 26624 0.000000 -0.722847 -0.774851 0 -0.499233 -0.707246 0
+ F4 32768 0.000000 4 0
+ -0.676044 0.400426 0
+ -0.546036 0.249616 0
+ -0.317221 0.161211 0
+ -0.462830 0.348423 0
+ F4 32768 0.000000 4 0
+ -0.613640 -0.213214 0
+ -0.332822 -0.239216 0
+ -0.208014 -0.124808 0
+ -0.436829 -0.130009 0
+ F4 32768 0.000000 4 0
+ -0.306820 0.504433 0
+ -0.353623 0.670844 0
+ -0.525234 0.754050 0
+ -0.478431 0.618841 0
+ F4 32768 0.000000 4 0
+ -1.019267 0.005200 0
+ -0.795652 0.057204 0
+ -0.551236 -0.020801 0
+ -0.800853 -0.062404 0
+ F4 32768 0.000000 4 0
+ -0.842455 0.660443 0
+ -0.717647 0.535635 0
+ -0.525234 0.494032 0
+ -0.634442 0.618841 0
+ F4 32768 0.000000 4 0
+ -0.712447 -0.686445 0
+ -0.546036 -0.514834 0
+ -0.353623 -0.442029 0
+ -0.540836 -0.629241 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 3"" Conif-3b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.051255 -1.398351 0
+ -0.404589 -1.142429 0
+ -0.493087 -1.419991 0
+ -0.723539 -1.089100 0
+ -1.321872 -1.243725 0
+ -1.153801 -0.779849 0
+ -1.663674 -0.414332 0
+ -1.406225 -0.148838 0
+ -1.744127 0.000000 0
+ -1.281535 0.141180 0
+ -1.644568 0.544550 0
+ -1.227752 0.557996 0
+ -1.345886 1.053931 0
+ -0.907418 0.860844 0
+ -0.777322 1.384905 0
+ -0.447902 0.914306 0
+ -0.178989 1.425242 0
+ 0.230691 0.891561 0
+ 0.204213 -1.122714 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -0.927752 0.557996 0
+ -1.045886 1.053931 0
+ -0.607418 0.860844 0
+ -0.477322 1.384905 0
+ -0.147902 0.914306 0
+ 0.121011 1.425242 0
+ 0.530691 0.891561 0
+ 0.961410 1.206791 0
+ 0.792460 0.760279 0
+ 1.022465 0.385635 0
+ 1.411946 0.104589 0
+ 1.130361 -0.156883 0
+ 1.395855 -0.535011 0
+ 0.954643 -0.557996 0
+ 0.868890 -0.752233 0
+ 0.856822 -1.186678 0
+ 0.504213 -1.122714 0
+ 0.248745 -1.398351 0
+ -0.104589 -1.142429 0
+ -0.193087 -1.419991 0
+ -0.423539 -1.089100 0
+ -1.021872 -1.243725 0
+ -0.853801 -0.779849 0
+ -1.363674 -0.414332 0
+ -1.106225 -0.148838 0
+ -1.444127 0.000000 0
+ -0.981535 0.141180 0
+ -1.344568 0.544550 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.201132 0.941297 0
+ 0.609017 1.407244 0
+ 0.752233 1.057954 0
+ 0.631554 0.587305 0
+ 1.111604 0.609017 0
+ 1.430895 0.348855 0
+ 0.868890 -0.028158 0
+ 1.383592 -0.591279 0
+ 0.999261 -0.679971 0
+ 0.712007 -0.615464 0
+ 0.695916 -0.985546 0
+ 0.632668 -1.342203 0
+ 0.189064 -0.868890 0
+ -0.156883 -0.917161 0
+ -0.237336 -1.102203 0
+ -0.538064 -1.330377 0
+ -0.535011 -0.703962 0
+ -1.235773 -0.869180 0
+ -1.093866 -0.378418 0
+ -0.655690 -0.104589 0
+ -1.152994 -0.094605 0
+ -1.389505 0.236512 0
+ -0.450535 0.309743 0
+ -1.182558 0.916482 0
+ -0.345947 0.812573 0
+ -0.364562 1.458250 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -0.832686 -0.490762 0 -1.098180 -0.478694 0
+ L3 26624 0.000000 -1.154497 -0.703962 0 -0.973478 -0.659713 0
+ L3 26624 0.000000 -0.370083 -1.186678 0 -0.341924 -0.852799 0
+ L3 26624 0.000000 -0.341924 -0.852799 0 -0.543056 -1.090135 0
+ L3 26624 0.000000 0.478694 -1.198746 0 0.510875 -0.917161 0
+ L3 26624 0.000000 0.510875 -0.917161 0 0.663735 -1.090135 0
+ L3 26624 0.000000 1.150474 -0.619486 0 0.776369 -0.446513 0
+ L3 26624 0.000000 0.776369 -0.446513 0 1.150474 -0.358015 0
+ L3 26624 0.000000 1.045886 0.253426 0 0.764301 0.257449 0
+ L3 26624 0.000000 0.764301 0.257449 0 0.997614 0.571215 0
+ L3 26624 0.000000 0.716030 0.949343 0 0.406286 0.679826 0
+ L3 26624 0.000000 0.406286 0.679826 0 0.414332 1.170588 0
+ L3 26624 0.000000 -0.144815 1.251040 0 -0.148838 0.836709 0
+ L3 26624 0.000000 -0.148838 0.836709 0 -0.349969 1.009682 0
+ L3 26624 0.000000 -0.193087 -0.884980 0 -0.241358 -0.679826 0
+ L3 26624 0.000000 0.325834 -0.937275 0 0.329856 -0.699939 0
+ L3 26624 0.000000 0.627531 -0.804528 0 0.438468 -0.647645 0
+ L3 26624 0.000000 0.728097 -0.615464 0 0.522943 -0.321811 0
+ L3 26624 0.000000 0.941297 -0.168951 0 0.687871 -0.237336 0
+ L3 26624 0.000000 0.965433 0.068385 0 0.547079 0.128724 0
+ L3 26624 0.000000 0.587305 0.297675 0 0.784414 0.579260 0
+ L3 26624 0.000000 0.627531 0.659713 0 0.309743 0.426400 0
+ L3 26624 0.000000 0.249404 0.559147 0 0.168951 0.804528 0
+ L3 26624 0.000000 0.012068 0.800505 0 -0.044249 0.478694 0
+ L3 26624 0.000000 -0.325834 0.728097 0 -0.237336 0.410309 0
+ L3 26624 0.000000 -0.615464 -0.116656 0 -0.321811 0.028158 0
+ L3 26624 0.000000 -0.261471 -0.398241 0 -0.132747 -0.144815 0
+ L3 26624 0.000000 0.201132 -0.595350 0 0.056317 -0.321811 0
+ L3 26624 0.000000 0.386173 -0.438468 0 0.217222 -0.261471 0
+ L3 26624 0.000000 0.535011 -0.116656 0 0.213200 -0.064362 0
+ L3 26624 0.000000 0.345947 0.213200 0 0.148838 0.092521 0
+ L3 26624 0.000000 0.040226 0.301698 0 0.052294 0.148838 0
+ L3 26624 0.000000 -0.060340 0.100566 0 -0.185041 0.269517 0
+ L3 26624 0.000000 -0.245381 -0.104589 0 -0.076430 -0.008045 0
+ L3 26624 0.000000 0.128724 -0.205155 0 0.048272 -0.044249 0
+ L3 26624 0.000000 -0.733248 -0.260017 0 -0.930861 -0.358824 0
+ L3 26624 0.000000 -0.915260 0.213214 0 -0.665644 0.135209 0
+ L3 26624 0.000000 -0.722847 0.774851 0 -0.499233 0.707246 0
+ F4 32768 0.000000 4 0
+ -0.676044 -0.400426 0
+ -0.546036 -0.249616 0
+ -0.317221 -0.161211 0
+ -0.462830 -0.348423 0
+ F4 32768 0.000000 4 0
+ -0.613640 0.213214 0
+ -0.332822 0.239216 0
+ -0.208014 0.124808 0
+ -0.436829 0.130009 0
+ F4 32768 0.000000 4 0
+ -0.306820 -0.504433 0
+ -0.353623 -0.670844 0
+ -0.525234 -0.754050 0
+ -0.478431 -0.618841 0
+ F4 32768 0.000000 4 0
+ -1.019267 -0.005200 0
+ -0.795652 -0.057204 0
+ -0.551236 0.020801 0
+ -0.800853 0.062404 0
+ F4 32768 0.000000 4 0
+ -0.842455 -0.660443 0
+ -0.717647 -0.535635 0
+ -0.525234 -0.494032 0
+ -0.634442 -0.618841 0
+ F4 32768 0.000000 4 0
+ -0.712447 0.686445 0
+ -0.546036 0.514834 0
+ -0.353623 0.442029 0
+ -0.540836 0.629241 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 4"" Conif-4a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.539451 1.523239 0
+ -0.068340 1.864468 0
+ 0.272284 1.496952 0
+ 0.307588 -1.188748 0
+ -0.238652 -1.900323 0
+ -0.597203 -1.219075 0
+ -1.036429 -1.846540 0
+ -1.209891 -1.147793 0
+ -1.794514 -1.405241 0
+ -1.637003 -0.743994 0
+ -2.192757 -0.726067 0
+ -1.708713 -0.188240 0
+ -2.325503 0.000000 0
+ -1.874967 0.198450 0
+ -2.218232 0.552442 0
+ -1.538401 1.039799 0
+ -1.762496 1.658301 0
+ -0.964719 1.452133 0
+ -0.657449 1.893322 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -1.237003 -0.743994 0
+ -1.394514 -1.405241 0
+ -0.809891 -1.147793 0
+ -0.636429 -1.846540 0
+ -0.197203 -1.219075 0
+ 0.161348 -1.900323 0
+ 0.707588 -1.188748 0
+ 1.281881 -1.609055 0
+ 1.056613 -1.013705 0
+ 1.363286 -0.514181 0
+ 1.882594 -0.139451 0
+ 1.507148 0.209177 0
+ 1.861140 0.713348 0
+ 1.272858 0.743994 0
+ 1.158520 1.002978 0
+ 1.142429 1.582238 0
+ 0.672284 1.496952 0
+ 0.331660 1.864468 0
+ -0.139451 1.523239 0
+ -0.257449 1.893322 0
+ -0.564719 1.452133 0
+ -1.362496 1.658301 0
+ -1.138401 1.039799 0
+ -1.818232 0.552442 0
+ -1.474967 0.198450 0
+ -1.925503 0.000000 0
+ -1.308713 -0.188240 0
+ -1.792757 -0.726067 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.268176 -1.255063 0
+ 0.812023 -1.876325 0
+ 1.002978 -1.410605 0
+ 0.842072 -0.783073 0
+ 1.482139 -0.812023 0
+ 1.907860 -0.465139 0
+ 1.158520 0.037545 0
+ 1.844790 0.788372 0
+ 1.332348 0.906628 0
+ 0.949343 0.820618 0
+ 0.927888 1.314062 0
+ 0.843558 1.789604 0
+ 0.252085 1.158520 0
+ -0.209177 1.222882 0
+ -0.316448 1.469604 0
+ -0.717418 1.773836 0
+ -0.713348 0.938615 0
+ -1.647697 1.158906 0
+ -1.458488 0.504558 0
+ -0.874253 0.139451 0
+ -1.537325 0.126139 0
+ -1.852674 -0.315349 0
+ -0.600714 -0.412991 0
+ -1.576744 -1.221976 0
+ -0.461262 -1.083430 0
+ -0.486083 -1.944333 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -1.110248 0.654349 0 -1.464240 0.638259 0
+ L3 26624 0.000000 -1.539329 0.938615 0 -1.297971 0.879617 0
+ L3 26624 0.000000 -0.493444 1.582238 0 -0.455899 1.137066 0
+ L3 26624 0.000000 -0.455899 1.137066 0 -0.724075 1.453513 0
+ L3 26624 0.000000 0.638259 1.598328 0 0.681167 1.222882 0
+ L3 26624 0.000000 0.681167 1.222882 0 0.884980 1.453513 0
+ L3 26624 0.000000 1.533966 0.825982 0 1.035159 0.595350 0
+ L3 26624 0.000000 1.035159 0.595350 0 1.533966 0.477353 0
+ L3 26624 0.000000 1.394514 -0.337902 0 1.019068 -0.343265 0
+ L3 26624 0.000000 1.019068 -0.343265 0 1.330152 -0.761619 0
+ L3 26624 0.000000 0.954706 -1.265790 0 0.541715 -0.906434 0
+ L3 26624 0.000000 0.541715 -0.906434 0 0.552442 -1.560783 0
+ L3 26624 0.000000 -0.193087 -1.668054 0 -0.198450 -1.115612 0
+ L3 26624 0.000000 -0.198450 -1.115612 0 -0.466626 -1.346243 0
+ L3 26624 0.000000 -0.257449 1.179974 0 -0.321811 0.906434 0
+ L3 26624 0.000000 0.434445 1.249699 0 0.439808 0.933252 0
+ L3 26624 0.000000 0.836709 1.072703 0 0.584623 0.863526 0
+ L3 26624 0.000000 0.970797 0.820618 0 0.697257 0.429081 0
+ L3 26624 0.000000 1.255063 0.225268 0 0.917161 0.316448 0
+ L3 26624 0.000000 1.287244 -0.091180 0 0.729438 -0.171633 0
+ L3 26624 0.000000 0.783073 -0.396900 0 1.045886 -0.772346 0
+ L3 26624 0.000000 0.836709 -0.879617 0 0.412991 -0.568533 0
+ L3 26624 0.000000 0.332538 -0.745529 0 0.225268 -1.072703 0
+ L3 26624 0.000000 0.016091 -1.067340 0 -0.058999 -0.638259 0
+ L3 26624 0.000000 -0.434445 -0.970797 0 -0.316448 -0.547079 0
+ L3 26624 0.000000 -0.820618 0.155542 0 -0.429081 -0.037545 0
+ L3 26624 0.000000 -0.348629 0.530988 0 -0.176996 0.193087 0
+ L3 26624 0.000000 0.268176 0.793801 0 0.075089 0.429081 0
+ L3 26624 0.000000 0.514898 0.584623 0 0.289630 0.348629 0
+ L3 26624 0.000000 0.713348 0.155542 0 0.284266 0.085816 0
+ L3 26624 0.000000 0.461262 -0.284266 0 0.198450 -0.123361 0
+ L3 26624 0.000000 0.053635 -0.402264 0 0.069726 -0.198450 0
+ L3 26624 0.000000 -0.080453 -0.134088 0 -0.246722 -0.359356 0
+ L3 26624 0.000000 -0.327175 0.139451 0 -0.101907 0.010727 0
+ L3 26624 0.000000 0.171633 0.273539 0 0.064362 0.058999 0
+ L3 26624 0.000000 -0.977664 0.346689 0 -1.241148 0.478431 0
+ L3 26624 0.000000 -1.220347 -0.284285 0 -0.887525 -0.180279 0
+ L3 26624 0.000000 -0.963797 -1.033135 0 -0.665644 -0.942995 0
+ F4 32768 0.000000 4 0
+ -0.901393 0.533902 0
+ -0.728048 0.332822 0
+ -0.422961 0.214947 0
+ -0.617107 0.464564 0
+ F4 32768 0.000000 4 0
+ -0.818187 -0.284285 0
+ -0.443762 -0.318954 0
+ -0.277352 -0.166411 0
+ -0.582438 -0.173345 0
+ F4 32768 0.000000 4 0
+ -0.409094 0.672577 0
+ -0.471498 0.894459 0
+ -0.700313 1.005399 0
+ -0.637909 0.825121 0
+ F4 32768 0.000000 4 0
+ -1.359023 0.006934 0
+ -1.060870 0.076272 0
+ -0.734982 -0.027735 0
+ -1.067803 -0.083205 0
+ F4 32768 0.000000 4 0
+ -1.123274 0.880591 0
+ -0.956863 0.714180 0
+ -0.700313 0.658710 0
+ -0.845922 0.825121 0
+ F4 32768 0.000000 4 0
+ -0.949929 -0.915260 0
+ -0.728048 -0.686445 0
+ -0.471498 -0.589372 0
+ -0.721114 -0.838988 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 4"" Conif-4b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.068340 -1.864468 0
+ -0.539451 -1.523239 0
+ -0.657449 -1.893322 0
+ -0.964719 -1.452133 0
+ -1.762496 -1.658301 0
+ -1.538401 -1.039799 0
+ -2.218232 -0.552442 0
+ -1.874967 -0.198450 0
+ -2.325503 0.000000 0
+ -1.708713 0.188240 0
+ -2.192757 0.726067 0
+ -1.637003 0.743994 0
+ -1.794514 1.405241 0
+ -1.209891 1.147793 0
+ -1.036429 1.846540 0
+ -0.597203 1.219075 0
+ -0.238652 1.900323 0
+ 0.307588 1.188748 0
+ 0.272284 -1.496952 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -1.237003 0.743994 0
+ -1.394514 1.405241 0
+ -0.809891 1.147793 0
+ -0.636429 1.846540 0
+ -0.197203 1.219075 0
+ 0.161348 1.900323 0
+ 0.707588 1.188748 0
+ 1.281881 1.609055 0
+ 1.056613 1.013705 0
+ 1.363286 0.514181 0
+ 1.882594 0.139451 0
+ 1.507148 -0.209177 0
+ 1.861140 -0.713348 0
+ 1.272858 -0.743994 0
+ 1.158520 -1.002978 0
+ 1.142429 -1.582238 0
+ 0.672284 -1.496952 0
+ 0.331660 -1.864468 0
+ -0.139451 -1.523239 0
+ -0.257449 -1.893322 0
+ -0.564719 -1.452133 0
+ -1.362496 -1.658301 0
+ -1.138401 -1.039799 0
+ -1.818232 -0.552442 0
+ -1.474967 -0.198450 0
+ -1.925503 0.000000 0
+ -1.308713 0.188240 0
+ -1.792757 0.726067 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.268176 1.255063 0
+ 0.812023 1.876325 0
+ 1.002978 1.410605 0
+ 0.842072 0.783073 0
+ 1.482139 0.812023 0
+ 1.907860 0.465139 0
+ 1.158520 -0.037545 0
+ 1.844790 -0.788372 0
+ 1.332348 -0.906628 0
+ 0.949343 -0.820618 0
+ 0.927888 -1.314062 0
+ 0.843558 -1.789604 0
+ 0.252085 -1.158520 0
+ -0.209177 -1.222882 0
+ -0.316448 -1.469604 0
+ -0.717418 -1.773836 0
+ -0.713348 -0.938615 0
+ -1.647697 -1.158906 0
+ -1.458488 -0.504558 0
+ -0.874253 -0.139451 0
+ -1.537325 -0.126139 0
+ -1.852674 0.315349 0
+ -0.600714 0.412991 0
+ -1.576744 1.221976 0
+ -0.461262 1.083430 0
+ -0.486083 1.944333 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -1.110248 -0.654349 0 -1.464240 -0.638259 0
+ L3 26624 0.000000 -1.539329 -0.938615 0 -1.297971 -0.879617 0
+ L3 26624 0.000000 -0.493444 -1.582238 0 -0.455899 -1.137066 0
+ L3 26624 0.000000 -0.455899 -1.137066 0 -0.724075 -1.453513 0
+ L3 26624 0.000000 0.638259 -1.598328 0 0.681167 -1.222882 0
+ L3 26624 0.000000 0.681167 -1.222882 0 0.884980 -1.453513 0
+ L3 26624 0.000000 1.533966 -0.825982 0 1.035159 -0.595350 0
+ L3 26624 0.000000 1.035159 -0.595350 0 1.533966 -0.477353 0
+ L3 26624 0.000000 1.394514 0.337902 0 1.019068 0.343265 0
+ L3 26624 0.000000 1.019068 0.343265 0 1.330152 0.761619 0
+ L3 26624 0.000000 0.954706 1.265790 0 0.541715 0.906434 0
+ L3 26624 0.000000 0.541715 0.906434 0 0.552442 1.560783 0
+ L3 26624 0.000000 -0.193087 1.668054 0 -0.198450 1.115612 0
+ L3 26624 0.000000 -0.198450 1.115612 0 -0.466626 1.346243 0
+ L3 26624 0.000000 -0.257449 -1.179974 0 -0.321811 -0.906434 0
+ L3 26624 0.000000 0.434445 -1.249699 0 0.439808 -0.933252 0
+ L3 26624 0.000000 0.836709 -1.072703 0 0.584623 -0.863526 0
+ L3 26624 0.000000 0.970797 -0.820618 0 0.697257 -0.429081 0
+ L3 26624 0.000000 1.255063 -0.225268 0 0.917161 -0.316448 0
+ L3 26624 0.000000 1.287244 0.091180 0 0.729438 0.171633 0
+ L3 26624 0.000000 0.783073 0.396900 0 1.045886 0.772346 0
+ L3 26624 0.000000 0.836709 0.879617 0 0.412991 0.568533 0
+ L3 26624 0.000000 0.332538 0.745529 0 0.225268 1.072703 0
+ L3 26624 0.000000 0.016091 1.067340 0 -0.058999 0.638259 0
+ L3 26624 0.000000 -0.434445 0.970797 0 -0.316448 0.547079 0
+ L3 26624 0.000000 -0.820618 -0.155542 0 -0.429081 0.037545 0
+ L3 26624 0.000000 -0.348629 -0.530988 0 -0.176996 -0.193087 0
+ L3 26624 0.000000 0.268176 -0.793801 0 0.075089 -0.429081 0
+ L3 26624 0.000000 0.514898 -0.584623 0 0.289630 -0.348629 0
+ L3 26624 0.000000 0.713348 -0.155542 0 0.284266 -0.085816 0
+ L3 26624 0.000000 0.461262 0.284266 0 0.198450 0.123361 0
+ L3 26624 0.000000 0.053635 0.402264 0 0.069726 0.198450 0
+ L3 26624 0.000000 -0.080453 0.134088 0 -0.246722 0.359356 0
+ L3 26624 0.000000 -0.327175 -0.139451 0 -0.101907 -0.010727 0
+ L3 26624 0.000000 0.171633 -0.273539 0 0.064362 -0.058999 0
+ L3 26624 0.000000 -0.977664 -0.346689 0 -1.241148 -0.478431 0
+ L3 26624 0.000000 -1.220347 0.284285 0 -0.887525 0.180279 0
+ L3 26624 0.000000 -0.963797 1.033135 0 -0.665644 0.942995 0
+ F4 32768 0.000000 4 0
+ -0.901393 -0.533902 0
+ -0.728048 -0.332822 0
+ -0.422961 -0.214947 0
+ -0.617107 -0.464564 0
+ F4 32768 0.000000 4 0
+ -0.818187 0.284285 0
+ -0.443762 0.318954 0
+ -0.277352 0.166411 0
+ -0.582438 0.173345 0
+ F4 32768 0.000000 4 0
+ -0.409094 -0.672577 0
+ -0.471498 -0.894459 0
+ -0.700313 -1.005399 0
+ -0.637909 -0.825121 0
+ F4 32768 0.000000 4 0
+ -1.359023 -0.006934 0
+ -1.060870 -0.076272 0
+ -0.734982 0.027735 0
+ -1.067803 0.083205 0
+ F4 32768 0.000000 4 0
+ -1.123274 -0.880591 0
+ -0.956863 -0.714180 0
+ -0.700313 -0.658710 0
+ -0.845922 -0.825121 0
+ F4 32768 0.000000 4 0
+ -0.949929 0.915260 0
+ -0.728048 0.686445 0
+ -0.471498 0.589372 0
+ -0.721114 0.838988 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 5"" Conif-5a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.674314 1.904049 0
+ -0.085425 2.330585 0
+ 0.340355 1.871191 0
+ 0.384485 -1.485935 0
+ -0.298315 -2.375404 0
+ -0.746504 -1.523844 0
+ -1.295536 -2.308175 0
+ -1.512364 -1.434741 0
+ -2.243143 -1.756552 0
+ -2.046253 -0.929993 0
+ -2.740947 -0.907583 0
+ -2.135891 -0.235299 0
+ -2.906878 0.000000 0
+ -2.343709 0.248063 0
+ -2.772790 0.690553 0
+ -1.923001 1.299749 0
+ -2.203120 2.072876 0
+ -1.205898 1.815167 0
+ -0.821811 2.366652 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -1.546253 -0.929993 0
+ -1.743143 -1.756552 0
+ -1.012364 -1.434741 0
+ -0.795536 -2.308175 0
+ -0.246504 -1.523844 0
+ 0.201685 -2.375404 0
+ 0.884485 -1.485935 0
+ 1.602351 -2.011319 0
+ 1.320766 -1.267131 0
+ 1.704108 -0.642726 0
+ 2.353243 -0.174314 0
+ 1.883935 0.261471 0
+ 2.326426 0.891685 0
+ 1.591072 0.929993 0
+ 1.448150 1.253722 0
+ 1.428036 1.977797 0
+ 0.840355 1.871191 0
+ 0.414575 2.330585 0
+ -0.174314 1.904049 0
+ -0.321811 2.366652 0
+ -0.705898 1.815167 0
+ -1.703120 2.072876 0
+ -1.423001 1.299749 0
+ -2.272790 0.690553 0
+ -1.843709 0.248063 0
+ -2.406878 0.000000 0
+ -1.635891 -0.235299 0
+ -2.240947 -0.907583 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.335220 -1.568829 0
+ 1.015029 -2.345406 0
+ 1.253722 -1.763256 0
+ 1.052590 -0.978842 0
+ 1.852674 -1.015029 0
+ 2.384825 -0.581424 0
+ 1.448150 0.046931 0
+ 2.305987 0.985465 0
+ 1.665435 1.133284 0
+ 1.186678 1.025773 0
+ 1.159861 1.642577 0
+ 1.054447 2.237005 0
+ 0.315107 1.448150 0
+ -0.261471 1.528602 0
+ -0.395559 1.837005 0
+ -0.896773 2.217296 0
+ -0.891685 1.173269 0
+ -2.059621 1.448633 0
+ -1.823110 0.630697 0
+ -1.092817 0.174314 0
+ -1.921656 0.157674 0
+ -2.315842 -0.394186 0
+ -0.750892 -0.516239 0
+ -1.970929 -1.527470 0
+ -0.576578 -1.354288 0
+ -0.607604 -2.430417 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -1.387810 0.817936 0 -1.830300 0.797823 0
+ L3 26624 0.000000 -1.924162 1.173269 0 -1.622464 1.099521 0
+ L3 26624 0.000000 -0.616804 1.977797 0 -0.569874 1.421332 0
+ L3 26624 0.000000 -0.569874 1.421332 0 -0.905094 1.816891 0
+ L3 26624 0.000000 0.797823 1.997910 0 0.851458 1.528602 0
+ L3 26624 0.000000 0.851458 1.528602 0 1.106225 1.816891 0
+ L3 26624 0.000000 1.917457 1.032477 0 1.293948 0.744188 0
+ L3 26624 0.000000 1.293948 0.744188 0 1.917457 0.596691 0
+ L3 26624 0.000000 1.743143 -0.422377 0 1.273835 -0.429081 0
+ L3 26624 0.000000 1.273835 -0.429081 0 1.662690 -0.952024 0
+ L3 26624 0.000000 1.193383 -1.582238 0 0.677144 -1.133043 0
+ L3 26624 0.000000 0.677144 -1.133043 0 0.690553 -1.950979 0
+ L3 26624 0.000000 -0.241358 -2.085067 0 -0.248063 -1.394514 0
+ L3 26624 0.000000 -0.248063 -1.394514 0 -0.583282 -1.682803 0
+ L3 26624 0.000000 -0.321811 1.474967 0 -0.402264 1.133043 0
+ L3 26624 0.000000 0.543056 1.562124 0 0.549761 1.166565 0
+ L3 26624 0.000000 1.045886 1.340879 0 0.730779 1.079408 0
+ L3 26624 0.000000 1.213496 1.025773 0 0.871572 0.536352 0
+ L3 26624 0.000000 1.568829 0.281585 0 1.146452 0.395559 0
+ L3 26624 0.000000 1.609055 -0.113975 0 0.911798 -0.214541 0
+ L3 26624 0.000000 0.978842 -0.496125 0 1.307357 -0.965433 0
+ L3 26624 0.000000 1.045886 -1.099521 0 0.516239 -0.710666 0
+ L3 26624 0.000000 0.415673 -0.931911 0 0.281585 -1.340879 0
+ L3 26624 0.000000 0.020113 -1.334175 0 -0.073748 -0.797823 0
+ L3 26624 0.000000 -0.543056 -1.213496 0 -0.395559 -0.683848 0
+ L3 26624 0.000000 -1.025773 0.194427 0 -0.536352 -0.046931 0
+ L3 26624 0.000000 -0.435786 0.663735 0 -0.221245 0.241358 0
+ L3 26624 0.000000 0.335220 0.992251 0 0.093862 0.536352 0
+ L3 26624 0.000000 0.643622 0.730779 0 0.362037 0.435786 0
+ L3 26624 0.000000 0.891685 0.194427 0 0.355333 0.107270 0
+ L3 26624 0.000000 0.576578 -0.355333 0 0.248063 -0.154201 0
+ L3 26624 0.000000 0.067044 -0.502830 0 0.087157 -0.248063 0
+ L3 26624 0.000000 -0.100566 -0.167610 0 -0.308402 -0.449195 0
+ L3 26624 0.000000 -0.408968 0.174314 0 -0.127384 0.013409 0
+ L3 26624 0.000000 0.214541 0.341924 0 0.080453 0.073748 0
+ L3 26624 0.000000 -1.222080 0.433362 0 -1.551435 0.598039 0
+ L3 26624 0.000000 -1.525433 -0.355357 0 -1.109406 -0.225348 0
+ L3 26624 0.000000 -1.204746 -1.291418 0 -0.832055 -1.178744 0
+ F4 32768 0.000000 4 0
+ -1.126741 0.667377 0
+ -0.910060 0.416027 0
+ -0.528701 0.268684 0
+ -0.771384 0.580705 0
+ F4 32768 0.000000 4 0
+ -1.022734 -0.355357 0
+ -0.554703 -0.398693 0
+ -0.346689 -0.208014 0
+ -0.728048 -0.216681 0
+ F4 32768 0.000000 4 0
+ -0.511367 0.840722 0
+ -0.589372 1.118073 0
+ -0.875391 1.256749 0
+ -0.797386 1.031401 0
+ F4 32768 0.000000 4 0
+ -1.698778 0.008667 0
+ -1.326087 0.095340 0
+ -0.918727 -0.034669 0
+ -1.334754 -0.104007 0
+ F4 32768 0.000000 4 0
+ -1.404092 1.100739 0
+ -1.196079 0.892725 0
+ -0.875391 0.823387 0
+ -1.057403 1.031401 0
+ F4 32768 0.000000 4 0
+ -1.187411 -1.144075 0
+ -0.910060 -0.858056 0
+ -0.589372 -0.736715 0
+ -0.901393 -1.048736 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 5"" Conif-5b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.085425 -2.330585 0
+ -0.674314 -1.904049 0
+ -0.821811 -2.366652 0
+ -1.205898 -1.815167 0
+ -2.203120 -2.072876 0
+ -1.923001 -1.299749 0
+ -2.772790 -0.690553 0
+ -2.343709 -0.248063 0
+ -2.906878 0.000000 0
+ -2.135891 0.235299 0
+ -2.740947 0.907583 0
+ -2.046253 0.929993 0
+ -2.243143 1.756552 0
+ -1.512364 1.434741 0
+ -1.295536 2.308175 0
+ -0.746504 1.523844 0
+ -0.298315 2.375404 0
+ 0.384485 1.485935 0
+ 0.340355 -1.871191 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -1.546253 0.929993 0
+ -1.743143 1.756552 0
+ -1.012364 1.434741 0
+ -0.795536 2.308175 0
+ -0.246504 1.523844 0
+ 0.201685 2.375404 0
+ 0.884485 1.485935 0
+ 1.602351 2.011319 0
+ 1.320766 1.267131 0
+ 1.704108 0.642726 0
+ 2.353243 0.174314 0
+ 1.883935 -0.261471 0
+ 2.326426 -0.891685 0
+ 1.591072 -0.929993 0
+ 1.448150 -1.253722 0
+ 1.428036 -1.977797 0
+ 0.840355 -1.871191 0
+ 0.414575 -2.330585 0
+ -0.174314 -1.904049 0
+ -0.321811 -2.366652 0
+ -0.705898 -1.815167 0
+ -1.703120 -2.072876 0
+ -1.423001 -1.299749 0
+ -2.272790 -0.690553 0
+ -1.843709 -0.248063 0
+ -2.406878 0.000000 0
+ -1.635891 0.235299 0
+ -2.240947 0.907583 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.335220 1.568829 0
+ 1.015029 2.345406 0
+ 1.253722 1.763256 0
+ 1.052590 0.978842 0
+ 1.852674 1.015029 0
+ 2.384825 0.581424 0
+ 1.448150 -0.046931 0
+ 2.305987 -0.985465 0
+ 1.665435 -1.133284 0
+ 1.186678 -1.025773 0
+ 1.159861 -1.642577 0
+ 1.054447 -2.237005 0
+ 0.315107 -1.448150 0
+ -0.261471 -1.528602 0
+ -0.395559 -1.837005 0
+ -0.896773 -2.217296 0
+ -0.891685 -1.173269 0
+ -2.059621 -1.448633 0
+ -1.823110 -0.630697 0
+ -1.092817 -0.174314 0
+ -1.921656 -0.157674 0
+ -2.315842 0.394186 0
+ -0.750892 0.516239 0
+ -1.970929 1.527470 0
+ -0.576578 1.354288 0
+ -0.607604 2.430417 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -1.387810 -0.817936 0 -1.830300 -0.797823 0
+ L3 26624 0.000000 -1.924162 -1.173269 0 -1.622464 -1.099521 0
+ L3 26624 0.000000 -0.616804 -1.977797 0 -0.569874 -1.421332 0
+ L3 26624 0.000000 -0.569874 -1.421332 0 -0.905094 -1.816891 0
+ L3 26624 0.000000 0.797823 -1.997910 0 0.851458 -1.528602 0
+ L3 26624 0.000000 0.851458 -1.528602 0 1.106225 -1.816891 0
+ L3 26624 0.000000 1.917457 -1.032477 0 1.293948 -0.744188 0
+ L3 26624 0.000000 1.293948 -0.744188 0 1.917457 -0.596691 0
+ L3 26624 0.000000 1.743143 0.422377 0 1.273835 0.429081 0
+ L3 26624 0.000000 1.273835 0.429081 0 1.662690 0.952024 0
+ L3 26624 0.000000 1.193383 1.582238 0 0.677144 1.133043 0
+ L3 26624 0.000000 0.677144 1.133043 0 0.690553 1.950979 0
+ L3 26624 0.000000 -0.241358 2.085067 0 -0.248063 1.394514 0
+ L3 26624 0.000000 -0.248063 1.394514 0 -0.583282 1.682803 0
+ L3 26624 0.000000 -0.321811 -1.474967 0 -0.402264 -1.133043 0
+ L3 26624 0.000000 0.543056 -1.562124 0 0.549761 -1.166565 0
+ L3 26624 0.000000 1.045886 -1.340879 0 0.730779 -1.079408 0
+ L3 26624 0.000000 1.213496 -1.025773 0 0.871572 -0.536352 0
+ L3 26624 0.000000 1.568829 -0.281585 0 1.146452 -0.395559 0
+ L3 26624 0.000000 1.609055 0.113975 0 0.911798 0.214541 0
+ L3 26624 0.000000 0.978842 0.496125 0 1.307357 0.965433 0
+ L3 26624 0.000000 1.045886 1.099521 0 0.516239 0.710666 0
+ L3 26624 0.000000 0.415673 0.931911 0 0.281585 1.340879 0
+ L3 26624 0.000000 0.020113 1.334175 0 -0.073748 0.797823 0
+ L3 26624 0.000000 -0.543056 1.213496 0 -0.395559 0.683848 0
+ L3 26624 0.000000 -1.025773 -0.194427 0 -0.536352 0.046931 0
+ L3 26624 0.000000 -0.435786 -0.663735 0 -0.221245 -0.241358 0
+ L3 26624 0.000000 0.335220 -0.992251 0 0.093862 -0.536352 0
+ L3 26624 0.000000 0.643622 -0.730779 0 0.362037 -0.435786 0
+ L3 26624 0.000000 0.891685 -0.194427 0 0.355333 -0.107270 0
+ L3 26624 0.000000 0.576578 0.355333 0 0.248063 0.154201 0
+ L3 26624 0.000000 0.067044 0.502830 0 0.087157 0.248063 0
+ L3 26624 0.000000 -0.100566 0.167610 0 -0.308402 0.449195 0
+ L3 26624 0.000000 -0.408968 -0.174314 0 -0.127384 -0.013409 0
+ L3 26624 0.000000 0.214541 -0.341924 0 0.080453 -0.073748 0
+ L3 26624 0.000000 -1.222080 -0.433362 0 -1.551435 -0.598039 0
+ L3 26624 0.000000 -1.525433 0.355357 0 -1.109406 0.225348 0
+ L3 26624 0.000000 -1.204746 1.291418 0 -0.832055 1.178744 0
+ F4 32768 0.000000 4 0
+ -1.126741 -0.667377 0
+ -0.910060 -0.416027 0
+ -0.528701 -0.268684 0
+ -0.771384 -0.580705 0
+ F4 32768 0.000000 4 0
+ -1.022734 0.355357 0
+ -0.554703 0.398693 0
+ -0.346689 0.208014 0
+ -0.728048 0.216681 0
+ F4 32768 0.000000 4 0
+ -0.511367 -0.840722 0
+ -0.589372 -1.118073 0
+ -0.875391 -1.256749 0
+ -0.797386 -1.031401 0
+ F4 32768 0.000000 4 0
+ -1.698778 -0.008667 0
+ -1.326087 -0.095340 0
+ -0.918727 0.034669 0
+ -1.334754 0.104007 0
+ F4 32768 0.000000 4 0
+ -1.404092 -1.100739 0
+ -1.196079 -0.892725 0
+ -0.875391 -0.823387 0
+ -1.057403 -1.031401 0
+ F4 32768 0.000000 4 0
+ -1.187411 1.144075 0
+ -0.910060 0.858056 0
+ -0.589372 0.736715 0
+ -0.901393 1.048736 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 6"" Conif-6a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.809177 2.284858 0
+ -0.102510 2.796702 0
+ 0.408426 2.245429 0
+ 0.461382 -1.783122 0
+ -0.357978 -2.850484 0
+ -0.895805 -1.828613 0
+ -1.554643 -2.769810 0
+ -1.814837 -1.721689 0
+ -2.691772 -2.107862 0
+ -2.455504 -1.115991 0
+ -3.289136 -1.089100 0
+ -2.563069 -0.282359 0
+ -3.488254 0.000000 0
+ -2.812451 0.297675 0
+ -3.327348 0.828663 0
+ -2.307601 1.559699 0
+ -2.643743 2.487451 0
+ -1.447078 2.178200 0
+ -0.986173 2.839982 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -1.855504 -1.115991 0
+ -2.091772 -2.107862 0
+ -1.214837 -1.721689 0
+ -0.954643 -2.769810 0
+ -0.295805 -1.828613 0
+ 0.242022 -2.850484 0
+ 1.061382 -1.783122 0
+ 1.922821 -2.413583 0
+ 1.584919 -1.520557 0
+ 2.044929 -0.771271 0
+ 2.823892 -0.209177 0
+ 2.260722 0.313766 0
+ 2.791711 1.070022 0
+ 1.909287 1.115991 0
+ 1.737780 1.504467 0
+ 1.713644 2.373356 0
+ 1.008426 2.245429 0
+ 0.497490 2.796702 0
+ -0.209177 2.284858 0
+ -0.386173 2.839982 0
+ -0.847078 2.178200 0
+ -2.043743 2.487451 0
+ -1.707601 1.559699 0
+ -2.727348 0.828663 0
+ -2.212451 0.297675 0
+ -2.888254 0.000000 0
+ -1.963069 -0.282359 0
+ -2.689136 -1.089100 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.402264 -1.882594 0
+ 1.218034 -2.814487 0
+ 1.504467 -2.115907 0
+ 1.263108 -1.174610 0
+ 2.223208 -1.218034 0
+ 2.861790 -0.697709 0
+ 1.737780 0.056317 0
+ 2.767185 1.182558 0
+ 1.998522 1.359941 0
+ 1.424014 1.230927 0
+ 1.391833 1.971093 0
+ 1.265337 2.684406 0
+ 0.378128 1.737780 0
+ -0.313766 1.834323 0
+ -0.474671 2.204406 0
+ -1.076127 2.660755 0
+ -1.070022 1.407923 0
+ -2.471545 1.738360 0
+ -2.187732 0.756837 0
+ -1.311380 0.209177 0
+ -2.305987 0.189209 0
+ -2.779010 -0.473023 0
+ -0.901071 -0.619486 0
+ -2.365115 -1.832964 0
+ -0.691894 -1.625146 0
+ -0.729125 -2.916500 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -1.665372 0.981524 0 -2.196360 0.957388 0
+ L3 26624 0.000000 -2.308994 1.407923 0 -1.946957 1.319425 0
+ L3 26624 0.000000 -0.740165 2.373356 0 -0.683848 1.705598 0
+ L3 26624 0.000000 -0.683848 1.705598 0 -1.086112 2.180270 0
+ L3 26624 0.000000 0.957388 2.397492 0 1.021750 1.834323 0
+ L3 26624 0.000000 1.021750 1.834323 0 1.327470 2.180270 0
+ L3 26624 0.000000 2.300949 1.238972 0 1.552738 0.893026 0
+ L3 26624 0.000000 1.552738 0.893026 0 2.300949 0.716030 0
+ L3 26624 0.000000 2.091772 -0.506852 0 1.528602 -0.514898 0
+ L3 26624 0.000000 1.528602 -0.514898 0 1.995228 -1.142429 0
+ L3 26624 0.000000 1.432059 -1.898685 0 0.812573 -1.359652 0
+ L3 26624 0.000000 0.812573 -1.359652 0 0.828663 -2.341175 0
+ L3 26624 0.000000 -0.289630 -2.502081 0 -0.297675 -1.673417 0
+ L3 26624 0.000000 -0.297675 -1.673417 0 -0.699939 -2.019364 0
+ L3 26624 0.000000 -0.386173 1.769961 0 -0.482717 1.359652 0
+ L3 26624 0.000000 0.651667 1.874549 0 0.659713 1.399878 0
+ L3 26624 0.000000 1.255063 1.609055 0 0.876935 1.295289 0
+ L3 26624 0.000000 1.456195 1.230927 0 1.045886 0.643622 0
+ L3 26624 0.000000 1.882594 0.337902 0 1.375742 0.474671 0
+ L3 26624 0.000000 1.930866 -0.136770 0 1.094157 -0.257449 0
+ L3 26624 0.000000 1.174610 -0.595350 0 1.568829 -1.158520 0
+ L3 26624 0.000000 1.255063 -1.319425 0 0.619486 -0.852799 0
+ L3 26624 0.000000 0.498807 -1.118293 0 0.337902 -1.609055 0
+ L3 26624 0.000000 0.024136 -1.601010 0 -0.088498 -0.957388 0
+ L3 26624 0.000000 -0.651667 -1.456195 0 -0.474671 -0.820618 0
+ L3 26624 0.000000 -1.230927 0.233313 0 -0.643622 -0.056317 0
+ L3 26624 0.000000 -0.522943 0.796482 0 -0.265494 0.289630 0
+ L3 26624 0.000000 0.402264 1.190701 0 0.112634 0.643622 0
+ L3 26624 0.000000 0.772346 0.876935 0 0.434445 0.522943 0
+ L3 26624 0.000000 1.070022 0.233313 0 0.426400 0.128724 0
+ L3 26624 0.000000 0.691894 -0.426400 0 0.297675 -0.185041 0
+ L3 26624 0.000000 0.080453 -0.603396 0 0.104589 -0.297675 0
+ L3 26624 0.000000 -0.120679 -0.201132 0 -0.370083 -0.539033 0
+ L3 26624 0.000000 -0.490762 0.209177 0 -0.152860 0.016091 0
+ L3 26624 0.000000 0.257449 0.410309 0 0.096543 0.088498 0
+ L3 26624 0.000000 -1.466496 0.520034 0 -1.861722 0.717647 0
+ L3 26624 0.000000 -1.830520 -0.426428 0 -1.331287 -0.270418 0
+ L3 26624 0.000000 -1.445695 -1.549702 0 -0.998466 -1.414493 0
+ F4 32768 0.000000 4 0
+ -1.352089 0.800853 0
+ -1.092072 0.499233 0
+ -0.634442 0.322421 0
+ -0.925661 0.696846 0
+ F4 32768 0.000000 4 0
+ -1.227281 -0.426428 0
+ -0.665644 -0.478431 0
+ -0.416027 -0.249616 0
+ -0.873657 -0.260017 0
+ F4 32768 0.000000 4 0
+ -0.613640 1.008866 0
+ -0.707246 1.341688 0
+ -1.050469 1.508099 0
+ -0.956863 1.237681 0
+ F4 32768 0.000000 4 0
+ -2.038534 0.010401 0
+ -1.591304 0.114408 0
+ -1.102472 -0.041603 0
+ -1.601705 -0.124808 0
+ F4 32768 0.000000 4 0
+ -1.684911 1.320887 0
+ -1.435294 1.071270 0
+ -1.050469 0.988065 0
+ -1.268883 1.237681 0
+ F4 32768 0.000000 4 0
+ -1.424894 -1.372890 0
+ -1.092072 -1.029668 0
+ -0.707246 -0.884058 0
+ -1.081671 -1.258483 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 6"" Conif-6b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.102510 -2.796702 0
+ -0.809177 -2.284858 0
+ -0.986173 -2.839982 0
+ -1.447078 -2.178200 0
+ -2.643743 -2.487451 0
+ -2.307601 -1.559699 0
+ -3.327348 -0.828663 0
+ -2.812451 -0.297675 0
+ -3.488254 0.000000 0
+ -2.563069 0.282359 0
+ -3.289136 1.089100 0
+ -2.455504 1.115991 0
+ -2.691772 2.107862 0
+ -1.814837 1.721689 0
+ -1.554643 2.769810 0
+ -0.895805 1.828613 0
+ -0.357978 2.850484 0
+ 0.461382 1.783122 0
+ 0.408426 -2.245429 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -1.855504 1.115991 0
+ -2.091772 2.107862 0
+ -1.214837 1.721689 0
+ -0.954643 2.769810 0
+ -0.295805 1.828613 0
+ 0.242022 2.850484 0
+ 1.061382 1.783122 0
+ 1.922821 2.413583 0
+ 1.584919 1.520557 0
+ 2.044929 0.771271 0
+ 2.823892 0.209177 0
+ 2.260722 -0.313766 0
+ 2.791711 -1.070022 0
+ 1.909287 -1.115991 0
+ 1.737780 -1.504467 0
+ 1.713644 -2.373356 0
+ 1.008426 -2.245429 0
+ 0.497490 -2.796702 0
+ -0.209177 -2.284858 0
+ -0.386173 -2.839982 0
+ -0.847078 -2.178200 0
+ -2.043743 -2.487451 0
+ -1.707601 -1.559699 0
+ -2.727348 -0.828663 0
+ -2.212451 -0.297675 0
+ -2.888254 0.000000 0
+ -1.963069 0.282359 0
+ -2.689136 1.089100 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.402264 1.882594 0
+ 1.218034 2.814487 0
+ 1.504467 2.115907 0
+ 1.263108 1.174610 0
+ 2.223208 1.218034 0
+ 2.861790 0.697709 0
+ 1.737780 -0.056317 0
+ 2.767185 -1.182558 0
+ 1.998522 -1.359941 0
+ 1.424014 -1.230927 0
+ 1.391833 -1.971093 0
+ 1.265337 -2.684406 0
+ 0.378128 -1.737780 0
+ -0.313766 -1.834323 0
+ -0.474671 -2.204406 0
+ -1.076127 -2.660755 0
+ -1.070022 -1.407923 0
+ -2.471545 -1.738360 0
+ -2.187732 -0.756837 0
+ -1.311380 -0.209177 0
+ -2.305987 -0.189209 0
+ -2.779010 0.473023 0
+ -0.901071 0.619486 0
+ -2.365115 1.832964 0
+ -0.691894 1.625146 0
+ -0.729125 2.916500 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -1.665372 -0.981524 0 -2.196360 -0.957388 0
+ L3 26624 0.000000 -2.308994 -1.407923 0 -1.946957 -1.319425 0
+ L3 26624 0.000000 -0.740165 -2.373356 0 -0.683848 -1.705598 0
+ L3 26624 0.000000 -0.683848 -1.705598 0 -1.086112 -2.180270 0
+ L3 26624 0.000000 0.957388 -2.397492 0 1.021750 -1.834323 0
+ L3 26624 0.000000 1.021750 -1.834323 0 1.327470 -2.180270 0
+ L3 26624 0.000000 2.300949 -1.238972 0 1.552738 -0.893026 0
+ L3 26624 0.000000 1.552738 -0.893026 0 2.300949 -0.716030 0
+ L3 26624 0.000000 2.091772 0.506852 0 1.528602 0.514898 0
+ L3 26624 0.000000 1.528602 0.514898 0 1.995228 1.142429 0
+ L3 26624 0.000000 1.432059 1.898685 0 0.812573 1.359652 0
+ L3 26624 0.000000 0.812573 1.359652 0 0.828663 2.341175 0
+ L3 26624 0.000000 -0.289630 2.502081 0 -0.297675 1.673417 0
+ L3 26624 0.000000 -0.297675 1.673417 0 -0.699939 2.019364 0
+ L3 26624 0.000000 -0.386173 -1.769961 0 -0.482717 -1.359652 0
+ L3 26624 0.000000 0.651667 -1.874549 0 0.659713 -1.399878 0
+ L3 26624 0.000000 1.255063 -1.609055 0 0.876935 -1.295289 0
+ L3 26624 0.000000 1.456195 -1.230927 0 1.045886 -0.643622 0
+ L3 26624 0.000000 1.882594 -0.337902 0 1.375742 -0.474671 0
+ L3 26624 0.000000 1.930866 0.136770 0 1.094157 0.257449 0
+ L3 26624 0.000000 1.174610 0.595350 0 1.568829 1.158520 0
+ L3 26624 0.000000 1.255063 1.319425 0 0.619486 0.852799 0
+ L3 26624 0.000000 0.498807 1.118293 0 0.337902 1.609055 0
+ L3 26624 0.000000 0.024136 1.601010 0 -0.088498 0.957388 0
+ L3 26624 0.000000 -0.651667 1.456195 0 -0.474671 0.820618 0
+ L3 26624 0.000000 -1.230927 -0.233313 0 -0.643622 0.056317 0
+ L3 26624 0.000000 -0.522943 -0.796482 0 -0.265494 -0.289630 0
+ L3 26624 0.000000 0.402264 -1.190701 0 0.112634 -0.643622 0
+ L3 26624 0.000000 0.772346 -0.876935 0 0.434445 -0.522943 0
+ L3 26624 0.000000 1.070022 -0.233313 0 0.426400 -0.128724 0
+ L3 26624 0.000000 0.691894 0.426400 0 0.297675 0.185041 0
+ L3 26624 0.000000 0.080453 0.603396 0 0.104589 0.297675 0
+ L3 26624 0.000000 -0.120679 0.201132 0 -0.370083 0.539033 0
+ L3 26624 0.000000 -0.490762 -0.209177 0 -0.152860 -0.016091 0
+ L3 26624 0.000000 0.257449 -0.410309 0 0.096543 -0.088498 0
+ L3 26624 0.000000 -1.466496 -0.520034 0 -1.861722 -0.717647 0
+ L3 26624 0.000000 -1.830520 0.426428 0 -1.331287 0.270418 0
+ L3 26624 0.000000 -1.445695 1.549702 0 -0.998466 1.414493 0
+ F4 32768 0.000000 4 0
+ -1.352089 -0.800853 0
+ -1.092072 -0.499233 0
+ -0.634442 -0.322421 0
+ -0.925661 -0.696846 0
+ F4 32768 0.000000 4 0
+ -1.227281 0.426428 0
+ -0.665644 0.478431 0
+ -0.416027 0.249616 0
+ -0.873657 0.260017 0
+ F4 32768 0.000000 4 0
+ -0.613640 -1.008866 0
+ -0.707246 -1.341688 0
+ -1.050469 -1.508099 0
+ -0.956863 -1.237681 0
+ F4 32768 0.000000 4 0
+ -2.038534 -0.010401 0
+ -1.591304 -0.114408 0
+ -1.102472 0.041603 0
+ -1.601705 0.124808 0
+ F4 32768 0.000000 4 0
+ -1.684911 -1.320887 0
+ -1.435294 -1.071270 0
+ -1.050469 -0.988065 0
+ -1.268883 -1.237681 0
+ F4 32768 0.000000 4 0
+ -1.424894 1.372890 0
+ -1.092072 1.029668 0
+ -0.707246 0.884058 0
+ -1.081671 1.258483 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 7"" Conif-7a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.944040 2.665668 0
+ -0.119595 3.262818 0
+ 0.476497 2.619667 0
+ 0.538279 -2.080309 0
+ -0.417641 -3.325565 0
+ -1.045106 -2.133381 0
+ -1.813751 -3.231445 0
+ -2.117309 -2.008637 0
+ -3.140400 -2.459173 0
+ -2.864755 -1.301990 0
+ -3.837325 -1.270617 0
+ -2.990248 -0.329419 0
+ -4.069630 0.000000 0
+ -3.281193 0.347288 0
+ -3.881907 0.966774 0
+ -2.692202 1.819649 0
+ -3.084367 2.902026 0
+ -1.688258 2.541234 0
+ -1.150535 3.313313 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -2.164755 -1.301990 0
+ -2.440400 -2.459173 0
+ -1.417309 -2.008637 0
+ -1.113751 -3.231445 0
+ -0.345106 -2.133381 0
+ 0.282359 -3.325565 0
+ 1.238279 -2.080309 0
+ 2.243291 -2.815846 0
+ 1.849073 -1.773983 0
+ 2.385751 -0.899816 0
+ 3.294540 -0.244040 0
+ 2.637510 0.366060 0
+ 3.256996 1.248359 0
+ 2.227501 1.301990 0
+ 2.027409 1.755211 0
+ 1.999251 2.768916 0
+ 1.176497 2.619667 0
+ 0.580405 3.262818 0
+ -0.244040 2.665668 0
+ -0.450535 3.313313 0
+ -0.988258 2.541234 0
+ -2.384367 2.902026 0
+ -1.992202 1.819649 0
+ -3.181907 0.966774 0
+ -2.581193 0.347288 0
+ -3.369630 0.000000 0
+ -2.290248 -0.329419 0
+ -3.137325 -1.270617 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.469308 -2.196360 0
+ 1.421040 -3.283568 0
+ 1.755211 -2.468559 0
+ 1.473626 -1.370379 0
+ 2.593743 -1.421040 0
+ 3.338754 -0.813994 0
+ 2.027409 0.065703 0
+ 3.228382 1.379651 0
+ 2.331609 1.586598 0
+ 1.661349 1.436082 0
+ 1.623805 2.299608 0
+ 1.476226 3.131807 0
+ 0.441149 2.027409 0
+ -0.366060 2.140043 0
+ -0.553783 2.571806 0
+ -1.255482 3.104214 0
+ -1.248359 1.642577 0
+ -2.883470 2.028086 0
+ -2.552354 0.882976 0
+ -1.529943 0.244040 0
+ -2.690319 0.220744 0
+ -3.242179 -0.551860 0
+ -1.051249 -0.722734 0
+ -2.759301 -2.138458 0
+ -0.807209 -1.896003 0
+ -0.850646 -3.402583 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -1.942934 1.145111 0 -2.562420 1.116952 0
+ L3 26624 0.000000 -2.693826 1.642577 0 -2.271449 1.539329 0
+ L3 26624 0.000000 -0.863526 2.768916 0 -0.797823 1.989865 0
+ L3 26624 0.000000 -0.797823 1.989865 0 -1.267131 2.543648 0
+ L3 26624 0.000000 1.116952 2.797074 0 1.192042 2.140043 0
+ L3 26624 0.000000 1.192042 2.140043 0 1.548716 2.543648 0
+ L3 26624 0.000000 2.684440 1.445468 0 1.811528 1.041863 0
+ L3 26624 0.000000 1.811528 1.041863 0 2.684440 0.835368 0
+ L3 26624 0.000000 2.440400 -0.591328 0 1.783369 -0.600714 0
+ L3 26624 0.000000 1.783369 -0.600714 0 2.327766 -1.332834 0
+ L3 26624 0.000000 1.670736 -2.215133 0 0.948002 -1.586260 0
+ L3 26624 0.000000 0.948002 -1.586260 0 0.966774 -2.731371 0
+ L3 26624 0.000000 -0.337902 -2.919094 0 -0.347288 -1.952320 0
+ L3 26624 0.000000 -0.347288 -1.952320 0 -0.816595 -2.355925 0
+ L3 26624 0.000000 -0.450535 2.064954 0 -0.563169 1.586260 0
+ L3 26624 0.000000 0.760279 2.186974 0 0.769665 1.633191 0
+ L3 26624 0.000000 1.464240 1.877231 0 1.023091 1.511171 0
+ L3 26624 0.000000 1.698894 1.436082 0 1.220200 0.750892 0
+ L3 26624 0.000000 2.196360 0.394219 0 1.605032 0.553783 0
+ L3 26624 0.000000 2.252677 -0.159565 0 1.276517 -0.300357 0
+ L3 26624 0.000000 1.370379 -0.694575 0 1.830300 -1.351606 0
+ L3 26624 0.000000 1.464240 -1.539329 0 0.722734 -0.994932 0
+ L3 26624 0.000000 0.581942 -1.304676 0 0.394219 -1.877231 0
+ L3 26624 0.000000 0.028158 -1.867845 0 -0.103248 -1.116952 0
+ L3 26624 0.000000 -0.760279 -1.698894 0 -0.553783 -0.957388 0
+ L3 26624 0.000000 -1.436082 0.272198 0 -0.750892 -0.065703 0
+ L3 26624 0.000000 -0.610100 0.929229 0 -0.309743 0.337902 0
+ L3 26624 0.000000 0.469308 1.389151 0 0.131406 0.750892 0
+ L3 26624 0.000000 0.901071 1.023091 0 0.506852 0.610100 0
+ L3 26624 0.000000 1.248359 0.272198 0 0.497466 0.150178 0
+ L3 26624 0.000000 0.807209 -0.497466 0 0.347288 -0.215882 0
+ L3 26624 0.000000 0.093862 -0.703962 0 0.122020 -0.347288 0
+ L3 26624 0.000000 -0.140792 -0.234654 0 -0.431763 -0.628872 0
+ L3 26624 0.000000 -0.572555 0.244040 0 -0.178337 0.018772 0
+ L3 26624 0.000000 0.300357 0.478694 0 0.112634 0.103248 0
+ L3 26624 0.000000 -1.710912 0.606707 0 -2.172009 0.837255 0
+ L3 26624 0.000000 -2.135607 -0.497499 0 -1.553169 -0.315487 0
+ L3 26624 0.000000 -1.686644 -1.807985 0 -1.164876 -1.650242 0
+ F4 32768 0.000000 4 0
+ -1.577437 0.934328 0
+ -1.274084 0.582438 0
+ -0.740182 0.376158 0
+ -1.079938 0.812987 0
+ F4 32768 0.000000 4 0
+ -1.431827 -0.497499 0
+ -0.776584 -0.558170 0
+ -0.485365 -0.291219 0
+ -1.019267 -0.303353 0
+ F4 32768 0.000000 4 0
+ -0.715914 1.177011 0
+ -0.825121 1.565303 0
+ -1.225547 1.759449 0
+ -1.116340 1.443961 0
+ F4 32768 0.000000 4 0
+ -2.378289 0.012134 0
+ -1.856522 0.133475 0
+ -1.286218 -0.048537 0
+ -1.868656 -0.145610 0
+ F4 32768 0.000000 4 0
+ -1.965729 1.541035 0
+ -1.674510 1.249815 0
+ -1.225547 1.152742 0
+ -1.480364 1.443961 0
+ F4 32768 0.000000 4 0
+ -1.662376 -1.601705 0
+ -1.274084 -1.201279 0
+ -0.825121 -1.031401 0
+ -1.261950 -1.468230 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 7"" Conif-7b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.119595 -3.262818 0
+ -0.944040 -2.665668 0
+ -1.150535 -3.313313 0
+ -1.688258 -2.541234 0
+ -3.084367 -2.902026 0
+ -2.692202 -1.819649 0
+ -3.881907 -0.966774 0
+ -3.281193 -0.347288 0
+ -4.069630 0.000000 0
+ -2.990248 0.329419 0
+ -3.837325 1.270617 0
+ -2.864755 1.301990 0
+ -3.140400 2.459173 0
+ -2.117309 2.008637 0
+ -1.813751 3.231445 0
+ -1.045106 2.133381 0
+ -0.417641 3.325565 0
+ 0.538279 2.080309 0
+ 0.476497 -2.619667 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -2.164755 1.301990 0
+ -2.440400 2.459173 0
+ -1.417309 2.008637 0
+ -1.113751 3.231445 0
+ -0.345106 2.133381 0
+ 0.282359 3.325565 0
+ 1.238279 2.080309 0
+ 2.243291 2.815846 0
+ 1.849073 1.773983 0
+ 2.385751 0.899816 0
+ 3.294540 0.244040 0
+ 2.637510 -0.366060 0
+ 3.256996 -1.248359 0
+ 2.227501 -1.301990 0
+ 2.027409 -1.755211 0
+ 1.999251 -2.768916 0
+ 1.176497 -2.619667 0
+ 0.580405 -3.262818 0
+ -0.244040 -2.665668 0
+ -0.450535 -3.313313 0
+ -0.988258 -2.541234 0
+ -2.384367 -2.902026 0
+ -1.992202 -1.819649 0
+ -3.181907 -0.966774 0
+ -2.581193 -0.347288 0
+ -3.369630 0.000000 0
+ -2.290248 0.329419 0
+ -3.137325 1.270617 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.469308 2.196360 0
+ 1.421040 3.283568 0
+ 1.755211 2.468559 0
+ 1.473626 1.370379 0
+ 2.593743 1.421040 0
+ 3.338754 0.813994 0
+ 2.027409 -0.065703 0
+ 3.228382 -1.379651 0
+ 2.331609 -1.586598 0
+ 1.661349 -1.436082 0
+ 1.623805 -2.299608 0
+ 1.476226 -3.131807 0
+ 0.441149 -2.027409 0
+ -0.366060 -2.140043 0
+ -0.553783 -2.571806 0
+ -1.255482 -3.104214 0
+ -1.248359 -1.642577 0
+ -2.883470 -2.028086 0
+ -2.552354 -0.882976 0
+ -1.529943 -0.244040 0
+ -2.690319 -0.220744 0
+ -3.242179 0.551860 0
+ -1.051249 0.722734 0
+ -2.759301 2.138458 0
+ -0.807209 1.896003 0
+ -0.850646 3.402583 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -1.942934 -1.145111 0 -2.562420 -1.116952 0
+ L3 26624 0.000000 -2.693826 -1.642577 0 -2.271449 -1.539329 0
+ L3 26624 0.000000 -0.863526 -2.768916 0 -0.797823 -1.989865 0
+ L3 26624 0.000000 -0.797823 -1.989865 0 -1.267131 -2.543648 0
+ L3 26624 0.000000 1.116952 -2.797074 0 1.192042 -2.140043 0
+ L3 26624 0.000000 1.192042 -2.140043 0 1.548716 -2.543648 0
+ L3 26624 0.000000 2.684440 -1.445468 0 1.811528 -1.041863 0
+ L3 26624 0.000000 1.811528 -1.041863 0 2.684440 -0.835368 0
+ L3 26624 0.000000 2.440400 0.591328 0 1.783369 0.600714 0
+ L3 26624 0.000000 1.783369 0.600714 0 2.327766 1.332834 0
+ L3 26624 0.000000 1.670736 2.215133 0 0.948002 1.586260 0
+ L3 26624 0.000000 0.948002 1.586260 0 0.966774 2.731371 0
+ L3 26624 0.000000 -0.337902 2.919094 0 -0.347288 1.952320 0
+ L3 26624 0.000000 -0.347288 1.952320 0 -0.816595 2.355925 0
+ L3 26624 0.000000 -0.450535 -2.064954 0 -0.563169 -1.586260 0
+ L3 26624 0.000000 0.760279 -2.186974 0 0.769665 -1.633191 0
+ L3 26624 0.000000 1.464240 -1.877231 0 1.023091 -1.511171 0
+ L3 26624 0.000000 1.698894 -1.436082 0 1.220200 -0.750892 0
+ L3 26624 0.000000 2.196360 -0.394219 0 1.605032 -0.553783 0
+ L3 26624 0.000000 2.252677 0.159565 0 1.276517 0.300357 0
+ L3 26624 0.000000 1.370379 0.694575 0 1.830300 1.351606 0
+ L3 26624 0.000000 1.464240 1.539329 0 0.722734 0.994932 0
+ L3 26624 0.000000 0.581942 1.304676 0 0.394219 1.877231 0
+ L3 26624 0.000000 0.028158 1.867845 0 -0.103248 1.116952 0
+ L3 26624 0.000000 -0.760279 1.698894 0 -0.553783 0.957388 0
+ L3 26624 0.000000 -1.436082 -0.272198 0 -0.750892 0.065703 0
+ L3 26624 0.000000 -0.610100 -0.929229 0 -0.309743 -0.337902 0
+ L3 26624 0.000000 0.469308 -1.389151 0 0.131406 -0.750892 0
+ L3 26624 0.000000 0.901071 -1.023091 0 0.506852 -0.610100 0
+ L3 26624 0.000000 1.248359 -0.272198 0 0.497466 -0.150178 0
+ L3 26624 0.000000 0.807209 0.497466 0 0.347288 0.215882 0
+ L3 26624 0.000000 0.093862 0.703962 0 0.122020 0.347288 0
+ L3 26624 0.000000 -0.140792 0.234654 0 -0.431763 0.628872 0
+ L3 26624 0.000000 -0.572555 -0.244040 0 -0.178337 -0.018772 0
+ L3 26624 0.000000 0.300357 -0.478694 0 0.112634 -0.103248 0
+ L3 26624 0.000000 -1.710912 -0.606707 0 -2.172009 -0.837255 0
+ L3 26624 0.000000 -2.135607 0.497499 0 -1.553169 0.315487 0
+ L3 26624 0.000000 -1.686644 1.807985 0 -1.164876 1.650242 0
+ F4 32768 0.000000 4 0
+ -1.577437 -0.934328 0
+ -1.274084 -0.582438 0
+ -0.740182 -0.376158 0
+ -1.079938 -0.812987 0
+ F4 32768 0.000000 4 0
+ -1.431827 0.497499 0
+ -0.776584 0.558170 0
+ -0.485365 0.291219 0
+ -1.019267 0.303353 0
+ F4 32768 0.000000 4 0
+ -0.715914 -1.177011 0
+ -0.825121 -1.565303 0
+ -1.225547 -1.759449 0
+ -1.116340 -1.443961 0
+ F4 32768 0.000000 4 0
+ -2.378289 -0.012134 0
+ -1.856522 -0.133475 0
+ -1.286218 0.048537 0
+ -1.868656 0.145610 0
+ F4 32768 0.000000 4 0
+ -1.965729 -1.541035 0
+ -1.674510 -1.249815 0
+ -1.225547 -1.152742 0
+ -1.480364 -1.443961 0
+ F4 32768 0.000000 4 0
+ -1.662376 1.601705 0
+ -1.274084 1.201279 0
+ -0.825121 1.031401 0
+ -1.261950 1.468230 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 8"" Conif-8a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -1.078903 3.046478 0
+ -0.136680 3.728935 0
+ 0.544568 2.993905 0
+ 0.615176 -2.377496 0
+ -0.477304 -3.800646 0
+ -1.194407 -2.438150 0
+ -2.072858 -3.693080 0
+ -2.419782 -2.295585 0
+ -3.589029 -2.810483 0
+ -3.274005 -1.487989 0
+ -4.385515 -1.452133 0
+ -3.417426 -0.376479 0
+ -4.651005 0.000000 0
+ -3.749934 0.396900 0
+ -4.436465 1.104885 0
+ -3.076802 2.079599 0
+ -3.524991 3.316601 0
+ -1.929437 2.904267 0
+ -1.314898 3.786643 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -2.474005 -1.487989 0
+ -2.789029 -2.810483 0
+ -1.619782 -2.295585 0
+ -1.272858 -3.693080 0
+ -0.394407 -2.438150 0
+ 0.322696 -3.800646 0
+ 1.415176 -2.377496 0
+ 2.563761 -3.218110 0
+ 2.113226 -2.027409 0
+ 2.726572 -1.028361 0
+ 3.765189 -0.278903 0
+ 3.014297 0.418354 0
+ 3.722281 1.426696 0
+ 2.545715 1.487989 0
+ 2.317039 2.005955 0
+ 2.284858 3.164475 0
+ 1.344568 2.993905 0
+ 0.663320 3.728935 0
+ -0.278903 3.046478 0
+ -0.514898 3.786643 0
+ -1.129437 2.904267 0
+ -2.724991 3.316601 0
+ -2.276802 2.079599 0
+ -3.636465 1.104885 0
+ -2.949934 0.396900 0
+ -3.851005 0.000000 0
+ -2.617426 -0.376479 0
+ -3.585515 -1.452133 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.536352 -2.510126 0
+ 1.624046 -3.752650 0
+ 2.005955 -2.821210 0
+ 1.684144 -1.566147 0
+ 2.964278 -1.624046 0
+ 3.815719 -0.930279 0
+ 2.317039 0.075089 0
+ 3.689580 1.576744 0
+ 2.664697 1.813255 0
+ 1.898685 1.641236 0
+ 1.855777 2.628123 0
+ 1.687116 3.579208 0
+ 0.504171 2.317039 0
+ -0.418354 2.445764 0
+ -0.632895 2.939207 0
+ -1.434837 3.547673 0
+ -1.426696 1.877231 0
+ -3.295394 2.317813 0
+ -2.916976 1.009116 0
+ -1.748507 0.278903 0
+ -3.074650 0.252279 0
+ -3.705347 -0.630697 0
+ -1.201428 -0.825982 0
+ -3.153487 -2.443952 0
+ -0.922525 -2.166861 0
+ -0.972167 -3.888667 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.220496 1.308698 0 -2.928480 1.276517 0
+ L3 26624 0.000000 -3.078659 1.877231 0 -2.595942 1.759234 0
+ L3 26624 0.000000 -0.986887 3.164475 0 -0.911798 2.274131 0
+ L3 26624 0.000000 -0.911798 2.274131 0 -1.448150 2.907026 0
+ L3 26624 0.000000 1.276517 3.196656 0 1.362333 2.445764 0
+ L3 26624 0.000000 1.362333 2.445764 0 1.769961 2.907026 0
+ L3 26624 0.000000 3.067932 1.651963 0 2.070318 1.190701 0
+ L3 26624 0.000000 2.070318 1.190701 0 3.067932 0.954706 0
+ L3 26624 0.000000 2.789029 -0.675803 0 2.038136 -0.686530 0
+ L3 26624 0.000000 2.038136 -0.686530 0 2.660304 -1.523239 0
+ L3 26624 0.000000 1.909412 -2.531580 0 1.083430 -1.812869 0
+ L3 26624 0.000000 1.083430 -1.812869 0 1.104885 -3.121567 0
+ L3 26624 0.000000 -0.386173 -3.336108 0 -0.396900 -2.231223 0
+ L3 26624 0.000000 -0.396900 -2.231223 0 -0.933252 -2.692486 0
+ L3 26624 0.000000 -0.514898 2.359948 0 -0.643622 1.812869 0
+ L3 26624 0.000000 0.868890 2.499399 0 0.879617 1.866504 0
+ L3 26624 0.000000 1.673417 2.145407 0 1.169247 1.727052 0
+ L3 26624 0.000000 1.941593 1.641236 0 1.394514 0.858163 0
+ L3 26624 0.000000 2.510126 0.450535 0 1.834323 0.632895 0
+ L3 26624 0.000000 2.574488 -0.182360 0 1.458877 -0.343265 0
+ L3 26624 0.000000 1.566147 -0.793801 0 2.091772 -1.544693 0
+ L3 26624 0.000000 1.673417 -1.759234 0 0.825982 -1.137066 0
+ L3 26624 0.000000 0.665076 -1.491058 0 0.450535 -2.145407 0
+ L3 26624 0.000000 0.032181 -2.134680 0 -0.117997 -1.276517 0
+ L3 26624 0.000000 -0.868890 -1.941593 0 -0.632895 -1.094157 0
+ L3 26624 0.000000 -1.641236 0.311084 0 -0.858163 -0.075089 0
+ L3 26624 0.000000 -0.697257 1.061976 0 -0.353992 0.386173 0
+ L3 26624 0.000000 0.536352 1.587601 0 0.150178 0.858163 0
+ L3 26624 0.000000 1.029795 1.169247 0 0.579260 0.697257 0
+ L3 26624 0.000000 1.426696 0.311084 0 0.568533 0.171633 0
+ L3 26624 0.000000 0.922525 -0.568533 0 0.396900 -0.246722 0
+ L3 26624 0.000000 0.107270 -0.804528 0 0.139451 -0.396900 0
+ L3 26624 0.000000 -0.160906 -0.268176 0 -0.493444 -0.718711 0
+ L3 26624 0.000000 -0.654349 0.278903 0 -0.203814 0.021454 0
+ L3 26624 0.000000 0.343265 0.547079 0 0.128724 0.117997 0
+ L3 26624 0.000000 -1.955328 0.693379 0 -2.482296 0.956863 0
+ L3 26624 0.000000 -2.440694 -0.568571 0 -1.775050 -0.360557 0
+ L3 26624 0.000000 -1.927593 -2.066269 0 -1.331287 -1.885991 0
+ F4 32768 0.000000 4 0
+ -1.802785 1.067803 0
+ -1.456096 0.665644 0
+ -0.845922 0.429895 0
+ -1.234214 0.929128 0
+ F4 32768 0.000000 4 0
+ -1.636374 -0.568571 0
+ -0.887525 -0.637909 0
+ -0.554703 -0.332822 0
+ -1.164876 -0.346689 0
+ F4 32768 0.000000 4 0
+ -0.818187 1.345155 0
+ -0.942995 1.788917 0
+ -1.400625 2.010799 0
+ -1.275817 1.650242 0
+ F4 32768 0.000000 4 0
+ -2.718045 0.013868 0
+ -2.121739 0.152543 0
+ -1.469963 -0.055470 0
+ -2.135607 -0.166411 0
+ F4 32768 0.000000 4 0
+ -2.246548 1.761182 0
+ -1.913726 1.428360 0
+ -1.400625 1.317420 0
+ -1.691844 1.650242 0
+ F4 32768 0.000000 4 0
+ -1.899858 -1.830520 0
+ -1.456096 -1.372890 0
+ -0.942995 -1.178744 0
+ -1.442228 -1.677977 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 8"" Conif-8b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.136680 -3.728935 0
+ -1.078903 -3.046478 0
+ -1.314898 -3.786643 0
+ -1.929437 -2.904267 0
+ -3.524991 -3.316601 0
+ -3.076802 -2.079599 0
+ -4.436465 -1.104885 0
+ -3.749934 -0.396900 0
+ -4.651005 0.000000 0
+ -3.417426 0.376479 0
+ -4.385515 1.452133 0
+ -3.274005 1.487989 0
+ -3.589029 2.810483 0
+ -2.419782 2.295585 0
+ -2.072858 3.693080 0
+ -1.194407 2.438150 0
+ -0.477304 3.800646 0
+ 0.615176 2.377496 0
+ 0.544568 -2.993905 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -2.474005 1.487989 0
+ -2.789029 2.810483 0
+ -1.619782 2.295585 0
+ -1.272858 3.693080 0
+ -0.394407 2.438150 0
+ 0.322696 3.800646 0
+ 1.415176 2.377496 0
+ 2.563761 3.218110 0
+ 2.113226 2.027409 0
+ 2.726572 1.028361 0
+ 3.765189 0.278903 0
+ 3.014297 -0.418354 0
+ 3.722281 -1.426696 0
+ 2.545715 -1.487989 0
+ 2.317039 -2.005955 0
+ 2.284858 -3.164475 0
+ 1.344568 -2.993905 0
+ 0.663320 -3.728935 0
+ -0.278903 -3.046478 0
+ -0.514898 -3.786643 0
+ -1.129437 -2.904267 0
+ -2.724991 -3.316601 0
+ -2.276802 -2.079599 0
+ -3.636465 -1.104885 0
+ -2.949934 -0.396900 0
+ -3.851005 0.000000 0
+ -2.617426 0.376479 0
+ -3.585515 1.452133 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.536352 2.510126 0
+ 1.624046 3.752650 0
+ 2.005955 2.821210 0
+ 1.684144 1.566147 0
+ 2.964278 1.624046 0
+ 3.815719 0.930279 0
+ 2.317039 -0.075089 0
+ 3.689580 -1.576744 0
+ 2.664697 -1.813255 0
+ 1.898685 -1.641236 0
+ 1.855777 -2.628123 0
+ 1.687116 -3.579208 0
+ 0.504171 -2.317039 0
+ -0.418354 -2.445764 0
+ -0.632895 -2.939207 0
+ -1.434837 -3.547673 0
+ -1.426696 -1.877231 0
+ -3.295394 -2.317813 0
+ -2.916976 -1.009116 0
+ -1.748507 -0.278903 0
+ -3.074650 -0.252279 0
+ -3.705347 0.630697 0
+ -1.201428 0.825982 0
+ -3.153487 2.443952 0
+ -0.922525 2.166861 0
+ -0.972167 3.888667 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.220496 -1.308698 0 -2.928480 -1.276517 0
+ L3 26624 0.000000 -3.078659 -1.877231 0 -2.595942 -1.759234 0
+ L3 26624 0.000000 -0.986887 -3.164475 0 -0.911798 -2.274131 0
+ L3 26624 0.000000 -0.911798 -2.274131 0 -1.448150 -2.907026 0
+ L3 26624 0.000000 1.276517 -3.196656 0 1.362333 -2.445764 0
+ L3 26624 0.000000 1.362333 -2.445764 0 1.769961 -2.907026 0
+ L3 26624 0.000000 3.067932 -1.651963 0 2.070318 -1.190701 0
+ L3 26624 0.000000 2.070318 -1.190701 0 3.067932 -0.954706 0
+ L3 26624 0.000000 2.789029 0.675803 0 2.038136 0.686530 0
+ L3 26624 0.000000 2.038136 0.686530 0 2.660304 1.523239 0
+ L3 26624 0.000000 1.909412 2.531580 0 1.083430 1.812869 0
+ L3 26624 0.000000 1.083430 1.812869 0 1.104885 3.121567 0
+ L3 26624 0.000000 -0.386173 3.336108 0 -0.396900 2.231223 0
+ L3 26624 0.000000 -0.396900 2.231223 0 -0.933252 2.692486 0
+ L3 26624 0.000000 -0.514898 -2.359948 0 -0.643622 -1.812869 0
+ L3 26624 0.000000 0.868890 -2.499399 0 0.879617 -1.866504 0
+ L3 26624 0.000000 1.673417 -2.145407 0 1.169247 -1.727052 0
+ L3 26624 0.000000 1.941593 -1.641236 0 1.394514 -0.858163 0
+ L3 26624 0.000000 2.510126 -0.450535 0 1.834323 -0.632895 0
+ L3 26624 0.000000 2.574488 0.182360 0 1.458877 0.343265 0
+ L3 26624 0.000000 1.566147 0.793801 0 2.091772 1.544693 0
+ L3 26624 0.000000 1.673417 1.759234 0 0.825982 1.137066 0
+ L3 26624 0.000000 0.665076 1.491058 0 0.450535 2.145407 0
+ L3 26624 0.000000 0.032181 2.134680 0 -0.117997 1.276517 0
+ L3 26624 0.000000 -0.868890 1.941593 0 -0.632895 1.094157 0
+ L3 26624 0.000000 -1.641236 -0.311084 0 -0.858163 0.075089 0
+ L3 26624 0.000000 -0.697257 -1.061976 0 -0.353992 -0.386173 0
+ L3 26624 0.000000 0.536352 -1.587601 0 0.150178 -0.858163 0
+ L3 26624 0.000000 1.029795 -1.169247 0 0.579260 -0.697257 0
+ L3 26624 0.000000 1.426696 -0.311084 0 0.568533 -0.171633 0
+ L3 26624 0.000000 0.922525 0.568533 0 0.396900 0.246722 0
+ L3 26624 0.000000 0.107270 0.804528 0 0.139451 0.396900 0
+ L3 26624 0.000000 -0.160906 0.268176 0 -0.493444 0.718711 0
+ L3 26624 0.000000 -0.654349 -0.278903 0 -0.203814 -0.021454 0
+ L3 26624 0.000000 0.343265 -0.547079 0 0.128724 -0.117997 0
+ L3 26624 0.000000 -1.955328 -0.693379 0 -2.482296 -0.956863 0
+ L3 26624 0.000000 -2.440694 0.568571 0 -1.775050 0.360557 0
+ L3 26624 0.000000 -1.927593 2.066269 0 -1.331287 1.885991 0
+ F4 32768 0.000000 4 0
+ -1.802785 -1.067803 0
+ -1.456096 -0.665644 0
+ -0.845922 -0.429895 0
+ -1.234214 -0.929128 0
+ F4 32768 0.000000 4 0
+ -1.636374 0.568571 0
+ -0.887525 0.637909 0
+ -0.554703 0.332822 0
+ -1.164876 0.346689 0
+ F4 32768 0.000000 4 0
+ -0.818187 -1.345155 0
+ -0.942995 -1.788917 0
+ -1.400625 -2.010799 0
+ -1.275817 -1.650242 0
+ F4 32768 0.000000 4 0
+ -2.718045 -0.013868 0
+ -2.121739 -0.152543 0
+ -1.469963 0.055470 0
+ -2.135607 0.166411 0
+ F4 32768 0.000000 4 0
+ -2.246548 -1.761182 0
+ -1.913726 -1.428360 0
+ -1.400625 -1.317420 0
+ -1.691844 -1.650242 0
+ F4 32768 0.000000 4 0
+ -1.899858 1.830520 0
+ -1.456096 1.372890 0
+ -0.942995 1.178744 0
+ -1.442228 1.677977 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 9"" Conif-9a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -1.213766 3.427287 0
+ -0.153765 4.195052 0
+ 0.612639 3.368143 0
+ 0.692073 -2.674683 0
+ -0.536967 -4.275726 0
+ -1.343707 -2.742919 0
+ -2.331965 -4.154715 0
+ -2.722255 -2.582533 0
+ -4.037657 -3.161793 0
+ -3.683256 -1.673987 0
+ -4.933704 -1.633650 0
+ -3.844604 -0.423539 0
+ -5.232381 0.000000 0
+ -4.218676 0.446513 0
+ -4.991023 1.242995 0
+ -3.461402 2.339548 0
+ -3.965615 3.731176 0
+ -2.170617 3.267300 0
+ -1.479260 4.259973 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -2.783256 -1.673987 0
+ -3.137657 -3.161793 0
+ -1.822255 -2.582533 0
+ -1.431965 -4.154715 0
+ -0.443707 -2.742919 0
+ 0.363033 -4.275726 0
+ 1.592073 -2.674683 0
+ 2.884231 -3.620374 0
+ 2.377379 -2.280836 0
+ 3.067394 -1.156906 0
+ 4.235838 -0.313766 0
+ 3.391084 0.470649 0
+ 4.187566 1.605032 0
+ 2.863930 1.673987 0
+ 2.606669 2.256700 0
+ 2.570466 3.560034 0
+ 1.512639 3.368143 0
+ 0.746235 4.195052 0
+ -0.313766 3.427287 0
+ -0.579260 4.259973 0
+ -1.270617 3.267300 0
+ -3.065615 3.731176 0
+ -2.561402 2.339548 0
+ -4.091023 1.242995 0
+ -3.318676 0.446513 0
+ -4.332381 0.000000 0
+ -2.944604 -0.423539 0
+ -4.033704 -1.633650 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.603396 -2.823892 0
+ 1.827052 -4.221731 0
+ 2.256700 -3.173861 0
+ 1.894662 -1.761915 0
+ 3.334813 -1.827052 0
+ 4.292684 -1.046564 0
+ 2.606669 0.084475 0
+ 4.150777 1.773836 0
+ 2.997784 2.039912 0
+ 2.136021 1.846391 0
+ 2.087749 2.956639 0
+ 1.898005 4.026609 0
+ 0.567192 2.606669 0
+ -0.470649 2.751484 0
+ -0.712007 3.306608 0
+ -1.614191 3.991132 0
+ -1.605032 2.111885 0
+ -3.707318 2.607540 0
+ -3.281597 1.135255 0
+ -1.967070 0.313766 0
+ -3.458981 0.283814 0
+ -4.168516 -0.709535 0
+ -1.351606 -0.929229 0
+ -3.547673 -2.749447 0
+ -1.037841 -2.437719 0
+ -1.093687 -4.374750 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.498058 1.472285 0 -3.294540 1.436082 0
+ L3 26624 0.000000 -3.463491 2.111885 0 -2.920435 1.979138 0
+ L3 26624 0.000000 -1.110248 3.560034 0 -1.025773 2.558398 0
+ L3 26624 0.000000 -1.025773 2.558398 0 -1.629168 3.270405 0
+ L3 26624 0.000000 1.436082 3.596238 0 1.532625 2.751484 0
+ L3 26624 0.000000 1.532625 2.751484 0 1.991206 3.270405 0
+ L3 26624 0.000000 3.451423 1.858459 0 2.329107 1.339538 0
+ L3 26624 0.000000 2.329107 1.339538 0 3.451423 1.074044 0
+ L3 26624 0.000000 3.137657 -0.760279 0 2.292904 -0.772346 0
+ L3 26624 0.000000 2.292904 -0.772346 0 2.992843 -1.713644 0
+ L3 26624 0.000000 2.148089 -2.848028 0 1.218859 -2.039477 0
+ L3 26624 0.000000 1.218859 -2.039477 0 1.242995 -3.511763 0
+ L3 26624 0.000000 -0.434445 -3.753121 0 -0.446513 -2.510126 0
+ L3 26624 0.000000 -0.446513 -2.510126 0 -1.049908 -3.029046 0
+ L3 26624 0.000000 -0.579260 2.654941 0 -0.724075 2.039477 0
+ L3 26624 0.000000 0.977501 2.811824 0 0.989569 2.099817 0
+ L3 26624 0.000000 1.882594 2.413583 0 1.315403 1.942934 0
+ L3 26624 0.000000 2.184292 1.846391 0 1.568829 0.965433 0
+ L3 26624 0.000000 2.823892 0.506852 0 2.063613 0.712007 0
+ L3 26624 0.000000 2.896299 -0.205155 0 1.641236 -0.386173 0
+ L3 26624 0.000000 1.761915 -0.893026 0 2.353243 -1.737780 0
+ L3 26624 0.000000 1.882594 -1.979138 0 0.929229 -1.279199 0
+ L3 26624 0.000000 0.748211 -1.677440 0 0.506852 -2.413583 0
+ L3 26624 0.000000 0.036204 -2.401515 0 -0.132747 -1.436082 0
+ L3 26624 0.000000 -0.977501 -2.184292 0 -0.712007 -1.230927 0
+ L3 26624 0.000000 -1.846391 0.349969 0 -0.965433 -0.084475 0
+ L3 26624 0.000000 -0.784414 1.194723 0 -0.398241 0.434445 0
+ L3 26624 0.000000 0.603396 1.786051 0 0.168951 0.965433 0
+ L3 26624 0.000000 1.158520 1.315403 0 0.651667 0.784414 0
+ L3 26624 0.000000 1.605032 0.349969 0 0.639599 0.193087 0
+ L3 26624 0.000000 1.037841 -0.639599 0 0.446513 -0.277562 0
+ L3 26624 0.000000 0.120679 -0.905094 0 0.156883 -0.446513 0
+ L3 26624 0.000000 -0.181019 -0.301698 0 -0.555124 -0.808550 0
+ L3 26624 0.000000 -0.736143 0.313766 0 -0.229290 0.024136 0
+ L3 26624 0.000000 0.386173 0.615464 0 0.144815 0.132747 0
+ L3 26624 0.000000 -2.199744 0.780051 0 -2.792583 1.076471 0
+ L3 26624 0.000000 -2.745780 -0.639642 0 -1.996931 -0.405627 0
+ L3 26624 0.000000 -2.168542 -2.324553 0 -1.497698 -2.121739 0
+ F4 32768 0.000000 4 0
+ -2.028133 1.201279 0
+ -1.638108 0.748849 0
+ -0.951662 0.483632 0
+ -1.388491 1.045269 0
+ F4 32768 0.000000 4 0
+ -1.840921 -0.639642 0
+ -0.998466 -0.717647 0
+ -0.624041 -0.374425 0
+ -1.310486 -0.390026 0
+ F4 32768 0.000000 4 0
+ -0.920460 1.513299 0
+ -1.060870 2.012532 0
+ -1.575703 2.262149 0
+ -1.435294 1.856522 0
+ F4 32768 0.000000 4 0
+ -3.057801 0.015601 0
+ -2.386957 0.171611 0
+ -1.653709 -0.062404 0
+ -2.402558 -0.187212 0
+ F4 32768 0.000000 4 0
+ -2.527366 1.981330 0
+ -2.152941 1.606906 0
+ -1.575703 1.482097 0
+ -1.903325 1.856522 0
+ F4 32768 0.000000 4 0
+ -2.137340 -2.059335 0
+ -1.638108 -1.544501 0
+ -1.060870 -1.326087 0
+ -1.622507 -1.887724 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 9"" Conif-9b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.153765 -4.195052 0
+ -1.213766 -3.427287 0
+ -1.479260 -4.259973 0
+ -2.170617 -3.267300 0
+ -3.965615 -3.731176 0
+ -3.461402 -2.339548 0
+ -4.991023 -1.242995 0
+ -4.218676 -0.446513 0
+ -5.232381 0.000000 0
+ -3.844604 0.423539 0
+ -4.933704 1.633650 0
+ -3.683256 1.673987 0
+ -4.037657 3.161793 0
+ -2.722255 2.582533 0
+ -2.331965 4.154715 0
+ -1.343707 2.742919 0
+ -0.536967 4.275726 0
+ 0.692073 2.674683 0
+ 0.612639 -3.368143 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -2.783256 1.673987 0
+ -3.137657 3.161793 0
+ -1.822255 2.582533 0
+ -1.431965 4.154715 0
+ -0.443707 2.742919 0
+ 0.363033 4.275726 0
+ 1.592073 2.674683 0
+ 2.884231 3.620374 0
+ 2.377379 2.280836 0
+ 3.067394 1.156906 0
+ 4.235838 0.313766 0
+ 3.391084 -0.470649 0
+ 4.187566 -1.605032 0
+ 2.863930 -1.673987 0
+ 2.606669 -2.256700 0
+ 2.570466 -3.560034 0
+ 1.512639 -3.368143 0
+ 0.746235 -4.195052 0
+ -0.313766 -3.427287 0
+ -0.579260 -4.259973 0
+ -1.270617 -3.267300 0
+ -3.065615 -3.731176 0
+ -2.561402 -2.339548 0
+ -4.091023 -1.242995 0
+ -3.318676 -0.446513 0
+ -4.332381 0.000000 0
+ -2.944604 0.423539 0
+ -4.033704 1.633650 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.603396 2.823892 0
+ 1.827052 4.221731 0
+ 2.256700 3.173861 0
+ 1.894662 1.761915 0
+ 3.334813 1.827052 0
+ 4.292684 1.046564 0
+ 2.606669 -0.084475 0
+ 4.150777 -1.773836 0
+ 2.997784 -2.039912 0
+ 2.136021 -1.846391 0
+ 2.087749 -2.956639 0
+ 1.898005 -4.026609 0
+ 0.567192 -2.606669 0
+ -0.470649 -2.751484 0
+ -0.712007 -3.306608 0
+ -1.614191 -3.991132 0
+ -1.605032 -2.111885 0
+ -3.707318 -2.607540 0
+ -3.281597 -1.135255 0
+ -1.967070 -0.313766 0
+ -3.458981 -0.283814 0
+ -4.168516 0.709535 0
+ -1.351606 0.929229 0
+ -3.547673 2.749447 0
+ -1.037841 2.437719 0
+ -1.093687 4.374750 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.498058 -1.472285 0 -3.294540 -1.436082 0
+ L3 26624 0.000000 -3.463491 -2.111885 0 -2.920435 -1.979138 0
+ L3 26624 0.000000 -1.110248 -3.560034 0 -1.025773 -2.558398 0
+ L3 26624 0.000000 -1.025773 -2.558398 0 -1.629168 -3.270405 0
+ L3 26624 0.000000 1.436082 -3.596238 0 1.532625 -2.751484 0
+ L3 26624 0.000000 1.532625 -2.751484 0 1.991206 -3.270405 0
+ L3 26624 0.000000 3.451423 -1.858459 0 2.329107 -1.339538 0
+ L3 26624 0.000000 2.329107 -1.339538 0 3.451423 -1.074044 0
+ L3 26624 0.000000 3.137657 0.760279 0 2.292904 0.772346 0
+ L3 26624 0.000000 2.292904 0.772346 0 2.992843 1.713644 0
+ L3 26624 0.000000 2.148089 2.848028 0 1.218859 2.039477 0
+ L3 26624 0.000000 1.218859 2.039477 0 1.242995 3.511763 0
+ L3 26624 0.000000 -0.434445 3.753121 0 -0.446513 2.510126 0
+ L3 26624 0.000000 -0.446513 2.510126 0 -1.049908 3.029046 0
+ L3 26624 0.000000 -0.579260 -2.654941 0 -0.724075 -2.039477 0
+ L3 26624 0.000000 0.977501 -2.811824 0 0.989569 -2.099817 0
+ L3 26624 0.000000 1.882594 -2.413583 0 1.315403 -1.942934 0
+ L3 26624 0.000000 2.184292 -1.846391 0 1.568829 -0.965433 0
+ L3 26624 0.000000 2.823892 -0.506852 0 2.063613 -0.712007 0
+ L3 26624 0.000000 2.896299 0.205155 0 1.641236 0.386173 0
+ L3 26624 0.000000 1.761915 0.893026 0 2.353243 1.737780 0
+ L3 26624 0.000000 1.882594 1.979138 0 0.929229 1.279199 0
+ L3 26624 0.000000 0.748211 1.677440 0 0.506852 2.413583 0
+ L3 26624 0.000000 0.036204 2.401515 0 -0.132747 1.436082 0
+ L3 26624 0.000000 -0.977501 2.184292 0 -0.712007 1.230927 0
+ L3 26624 0.000000 -1.846391 -0.349969 0 -0.965433 0.084475 0
+ L3 26624 0.000000 -0.784414 -1.194723 0 -0.398241 -0.434445 0
+ L3 26624 0.000000 0.603396 -1.786051 0 0.168951 -0.965433 0
+ L3 26624 0.000000 1.158520 -1.315403 0 0.651667 -0.784414 0
+ L3 26624 0.000000 1.605032 -0.349969 0 0.639599 -0.193087 0
+ L3 26624 0.000000 1.037841 0.639599 0 0.446513 0.277562 0
+ L3 26624 0.000000 0.120679 0.905094 0 0.156883 0.446513 0
+ L3 26624 0.000000 -0.181019 0.301698 0 -0.555124 0.808550 0
+ L3 26624 0.000000 -0.736143 -0.313766 0 -0.229290 -0.024136 0
+ L3 26624 0.000000 0.386173 -0.615464 0 0.144815 -0.132747 0
+ L3 26624 0.000000 -2.199744 -0.780051 0 -2.792583 -1.076471 0
+ L3 26624 0.000000 -2.745780 0.639642 0 -1.996931 0.405627 0
+ L3 26624 0.000000 -2.168542 2.324553 0 -1.497698 2.121739 0
+ F4 32768 0.000000 4 0
+ -2.028133 -1.201279 0
+ -1.638108 -0.748849 0
+ -0.951662 -0.483632 0
+ -1.388491 -1.045269 0
+ F4 32768 0.000000 4 0
+ -1.840921 0.639642 0
+ -0.998466 0.717647 0
+ -0.624041 0.374425 0
+ -1.310486 0.390026 0
+ F4 32768 0.000000 4 0
+ -0.920460 -1.513299 0
+ -1.060870 -2.012532 0
+ -1.575703 -2.262149 0
+ -1.435294 -1.856522 0
+ F4 32768 0.000000 4 0
+ -3.057801 -0.015601 0
+ -2.386957 -0.171611 0
+ -1.653709 0.062404 0
+ -2.402558 0.187212 0
+ F4 32768 0.000000 4 0
+ -2.527366 -1.981330 0
+ -2.152941 -1.606906 0
+ -1.575703 -1.482097 0
+ -1.903325 -1.856522 0
+ F4 32768 0.000000 4 0
+ -2.137340 2.059335 0
+ -1.638108 1.544501 0
+ -1.060870 1.326087 0
+ -1.622507 1.887724 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 10"" Conif-10a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -1.348629 3.808097 0
+ -0.170850 4.661169 0
+ 0.680710 3.742381 0
+ 0.768970 -2.971870 0
+ -0.596630 -4.750807 0
+ -1.493008 -3.047688 0
+ -2.591072 -4.616350 0
+ -3.024728 -2.869482 0
+ -4.486286 -3.513104 0
+ -4.092507 -1.859986 0
+ -5.481893 -1.815167 0
+ -4.271782 -0.470599 0
+ -5.813757 0.000000 0
+ -4.687418 0.496125 0
+ -5.545581 1.381106 0
+ -3.846002 2.599498 0
+ -4.406239 4.145751 0
+ -2.411796 3.630334 0
+ -1.643622 4.733304 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -3.092507 -1.859986 0
+ -3.486286 -3.513104 0
+ -2.024728 -2.869482 0
+ -1.591072 -4.616350 0
+ -0.493008 -3.047688 0
+ 0.403370 -4.750807 0
+ 1.768970 -2.971870 0
+ 3.204701 -4.022638 0
+ 2.641532 -2.534262 0
+ 3.408216 -1.285452 0
+ 4.706486 -0.348629 0
+ 3.767871 0.522943 0
+ 4.652851 1.783369 0
+ 3.182144 1.859986 0
+ 2.896299 2.507444 0
+ 2.856073 3.955594 0
+ 1.680710 3.742381 0
+ 0.829150 4.661169 0
+ -0.348629 3.808097 0
+ -0.643622 4.733304 0
+ -1.411796 3.630334 0
+ -3.406239 4.145751 0
+ -2.846002 2.599498 0
+ -4.545581 1.381106 0
+ -3.687418 0.496125 0
+ -4.813757 0.000000 0
+ -3.271782 -0.470599 0
+ -4.481893 -1.815167 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.670440 -3.137657 0
+ 2.030057 -4.690812 0
+ 2.507444 -3.526512 0
+ 2.105180 -1.957684 0
+ 3.705347 -2.030057 0
+ 4.769649 -1.162848 0
+ 2.896299 0.093862 0
+ 4.611975 1.970929 0
+ 3.330871 2.266569 0
+ 2.373356 2.051545 0
+ 2.319721 3.285154 0
+ 2.108894 4.474010 0
+ 0.630213 2.896299 0
+ -0.522943 3.057205 0
+ -0.791119 3.674009 0
+ -1.793546 4.434591 0
+ -1.783369 2.346539 0
+ -4.119242 2.897266 0
+ -3.646219 1.261395 0
+ -2.185633 0.348629 0
+ -3.843312 0.315349 0
+ -4.631684 -0.788372 0
+ -1.501785 -1.032477 0
+ -3.941859 -3.054941 0
+ -1.153156 -2.708576 0
+ -1.215208 -4.860833 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.775620 1.635873 0 -3.660600 1.595646 0
+ L3 26624 0.000000 -3.848324 2.346539 0 -3.244928 2.199042 0
+ L3 26624 0.000000 -1.233609 3.955594 0 -1.139747 2.842664 0
+ L3 26624 0.000000 -1.139747 2.842664 0 -1.810187 3.633783 0
+ L3 26624 0.000000 1.595646 3.995820 0 1.702917 3.057205 0
+ L3 26624 0.000000 1.702917 3.057205 0 2.212451 3.633783 0
+ L3 26624 0.000000 3.834915 2.064954 0 2.587897 1.488376 0
+ L3 26624 0.000000 2.587897 1.488376 0 3.834915 1.193383 0
+ L3 26624 0.000000 3.486286 -0.844754 0 2.547671 -0.858163 0
+ L3 26624 0.000000 2.547671 -0.858163 0 3.325381 -1.904049 0
+ L3 26624 0.000000 2.386765 -3.164475 0 1.354288 -2.266086 0
+ L3 26624 0.000000 1.354288 -2.266086 0 1.381106 -3.901959 0
+ L3 26624 0.000000 -0.482717 -4.170135 0 -0.496125 -2.789029 0
+ L3 26624 0.000000 -0.496125 -2.789029 0 -1.166565 -3.365607 0
+ L3 26624 0.000000 -0.643622 2.949934 0 -0.804528 2.266086 0
+ L3 26624 0.000000 1.086112 3.124249 0 1.099521 2.333130 0
+ L3 26624 0.000000 2.091772 2.681759 0 1.461558 2.158816 0
+ L3 26624 0.000000 2.426991 2.051545 0 1.743143 1.072703 0
+ L3 26624 0.000000 3.137657 0.563169 0 2.292904 0.791119 0
+ L3 26624 0.000000 3.218110 -0.227949 0 1.823596 -0.429081 0
+ L3 26624 0.000000 1.957684 -0.992251 0 2.614715 -1.930866 0
+ L3 26624 0.000000 2.091772 -2.199042 0 1.032477 -1.421332 0
+ L3 26624 0.000000 0.831345 -1.863822 0 0.563169 -2.681759 0
+ L3 26624 0.000000 0.040226 -2.668350 0 -0.147497 -1.595646 0
+ L3 26624 0.000000 -1.086112 -2.426991 0 -0.791119 -1.367697 0
+ L3 26624 0.000000 -2.051545 0.388855 0 -1.072703 -0.093862 0
+ L3 26624 0.000000 -0.871572 1.327470 0 -0.442490 0.482717 0
+ L3 26624 0.000000 0.670440 1.984501 0 0.187723 1.072703 0
+ L3 26624 0.000000 1.287244 1.461558 0 0.724075 0.871572 0
+ L3 26624 0.000000 1.783369 0.388855 0 0.710666 0.214541 0
+ L3 26624 0.000000 1.153156 -0.710666 0 0.496125 -0.308402 0
+ L3 26624 0.000000 0.134088 -1.005659 0 0.174314 -0.496125 0
+ L3 26624 0.000000 -0.201132 -0.335220 0 -0.616804 -0.898389 0
+ L3 26624 0.000000 -0.817936 0.348629 0 -0.254767 0.026818 0
+ L3 26624 0.000000 0.429081 0.683848 0 0.160906 0.147497 0
+ L3 26624 0.000000 -2.444160 0.866724 0 -3.102870 1.196079 0
+ L3 26624 0.000000 -3.050867 -0.710713 0 -2.218812 -0.450696 0
+ L3 26624 0.000000 -2.409492 -2.582836 0 -1.664109 -2.357488 0
+ F4 32768 0.000000 4 0
+ -2.253481 1.334754 0
+ -1.820120 0.832055 0
+ -1.057403 0.537369 0
+ -1.542768 1.161410 0
+ F4 32768 0.000000 4 0
+ -2.045468 -0.710713 0
+ -1.109406 -0.797386 0
+ -0.693379 -0.416027 0
+ -1.456096 -0.433362 0
+ F4 32768 0.000000 4 0
+ -1.022734 1.681444 0
+ -1.178744 2.236147 0
+ -1.750782 2.513498 0
+ -1.594771 2.062802 0
+ F4 32768 0.000000 4 0
+ -3.397556 0.017334 0
+ -2.652174 0.190679 0
+ -1.837454 -0.069338 0
+ -2.669509 -0.208014 0
+ F4 32768 0.000000 4 0
+ -2.808184 2.201478 0
+ -2.392157 1.785451 0
+ -1.750782 1.646775 0
+ -2.114806 2.062802 0
+ F4 32768 0.000000 4 0
+ -2.374823 -2.288150 0
+ -1.820120 -1.716113 0
+ -1.178744 -1.473430 0
+ -1.802785 -2.097471 0
+ END$SEGS
+
+STRUCTURE * "Sm Conif 10"" Conif-10b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 19 0
+ -0.170850 -4.661169 0
+ -1.348629 -3.808097 0
+ -1.643622 -4.733304 0
+ -2.411796 -3.630334 0
+ -4.406239 -4.145751 0
+ -3.846002 -2.599498 0
+ -5.545581 -1.381106 0
+ -4.687418 -0.496125 0
+ -5.813757 0.000000 0
+ -4.271782 0.470599 0
+ -5.481893 1.815167 0
+ -4.092507 1.859986 0
+ -4.486286 3.513104 0
+ -3.024728 2.869482 0
+ -2.591072 4.616350 0
+ -1.493008 3.047688 0
+ -0.596630 4.750807 0
+ 0.768970 2.971870 0
+ 0.680710 -3.742381 0
+# Layer: XTRKCAD2
+ F4 32768 0.000000 28 0
+ -3.092507 1.859986 0
+ -3.486286 3.513104 0
+ -2.024728 2.869482 0
+ -1.591072 4.616350 0
+ -0.493008 3.047688 0
+ 0.403370 4.750807 0
+ 1.768970 2.971870 0
+ 3.204701 4.022638 0
+ 2.641532 2.534262 0
+ 3.408216 1.285452 0
+ 4.706486 0.348629 0
+ 3.767871 -0.522943 0
+ 4.652851 -1.783369 0
+ 3.182144 -1.859986 0
+ 2.896299 -2.507444 0
+ 2.856073 -3.955594 0
+ 1.680710 -3.742381 0
+ 0.829150 -4.661169 0
+ -0.348629 -3.808097 0
+ -0.643622 -4.733304 0
+ -1.411796 -3.630334 0
+ -3.406239 -4.145751 0
+ -2.846002 -2.599498 0
+ -4.545581 -1.381106 0
+ -3.687418 -0.496125 0
+ -4.813757 0.000000 0
+ -3.271782 0.470599 0
+ -4.481893 1.815167 0
+# Layer: XTRKCAD3
+ F4 6356906 0.000000 26 0
+ 0.670440 3.137657 0
+ 2.030057 4.690812 0
+ 2.507444 3.526512 0
+ 2.105180 1.957684 0
+ 3.705347 2.030057 0
+ 4.769649 1.162848 0
+ 2.896299 -0.093862 0
+ 4.611975 -1.970929 0
+ 3.330871 -2.266569 0
+ 2.373356 -2.051545 0
+ 2.319721 -3.285154 0
+ 2.108894 -4.474010 0
+ 0.630213 -2.896299 0
+ -0.522943 -3.057205 0
+ -0.791119 -3.674009 0
+ -1.793546 -4.434591 0
+ -1.783369 -2.346539 0
+ -4.119242 -2.897266 0
+ -3.646219 -1.261395 0
+ -2.185633 -0.348629 0
+ -3.843312 -0.315349 0
+ -4.631684 0.788372 0
+ -1.501785 1.032477 0
+ -3.941859 3.054941 0
+ -1.153156 2.708576 0
+ -1.215208 4.860833 0
+# Layer: XTRKCAD4
+ L3 26624 0.000000 -2.775620 -1.635873 0 -3.660600 -1.595646 0
+ L3 26624 0.000000 -3.848324 -2.346539 0 -3.244928 -2.199042 0
+ L3 26624 0.000000 -1.233609 -3.955594 0 -1.139747 -2.842664 0
+ L3 26624 0.000000 -1.139747 -2.842664 0 -1.810187 -3.633783 0
+ L3 26624 0.000000 1.595646 -3.995820 0 1.702917 -3.057205 0
+ L3 26624 0.000000 1.702917 -3.057205 0 2.212451 -3.633783 0
+ L3 26624 0.000000 3.834915 -2.064954 0 2.587897 -1.488376 0
+ L3 26624 0.000000 2.587897 -1.488376 0 3.834915 -1.193383 0
+ L3 26624 0.000000 3.486286 0.844754 0 2.547671 0.858163 0
+ L3 26624 0.000000 2.547671 0.858163 0 3.325381 1.904049 0
+ L3 26624 0.000000 2.386765 3.164475 0 1.354288 2.266086 0
+ L3 26624 0.000000 1.354288 2.266086 0 1.381106 3.901959 0
+ L3 26624 0.000000 -0.482717 4.170135 0 -0.496125 2.789029 0
+ L3 26624 0.000000 -0.496125 2.789029 0 -1.166565 3.365607 0
+ L3 26624 0.000000 -0.643622 -2.949934 0 -0.804528 -2.266086 0
+ L3 26624 0.000000 1.086112 -3.124249 0 1.099521 -2.333130 0
+ L3 26624 0.000000 2.091772 -2.681759 0 1.461558 -2.158816 0
+ L3 26624 0.000000 2.426991 -2.051545 0 1.743143 -1.072703 0
+ L3 26624 0.000000 3.137657 -0.563169 0 2.292904 -0.791119 0
+ L3 26624 0.000000 3.218110 0.227949 0 1.823596 0.429081 0
+ L3 26624 0.000000 1.957684 0.992251 0 2.614715 1.930866 0
+ L3 26624 0.000000 2.091772 2.199042 0 1.032477 1.421332 0
+ L3 26624 0.000000 0.831345 1.863822 0 0.563169 2.681759 0
+ L3 26624 0.000000 0.040226 2.668350 0 -0.147497 1.595646 0
+ L3 26624 0.000000 -1.086112 2.426991 0 -0.791119 1.367697 0
+ L3 26624 0.000000 -2.051545 -0.388855 0 -1.072703 0.093862 0
+ L3 26624 0.000000 -0.871572 -1.327470 0 -0.442490 -0.482717 0
+ L3 26624 0.000000 0.670440 -1.984501 0 0.187723 -1.072703 0
+ L3 26624 0.000000 1.287244 -1.461558 0 0.724075 -0.871572 0
+ L3 26624 0.000000 1.783369 -0.388855 0 0.710666 -0.214541 0
+ L3 26624 0.000000 1.153156 0.710666 0 0.496125 0.308402 0
+ L3 26624 0.000000 0.134088 1.005659 0 0.174314 0.496125 0
+ L3 26624 0.000000 -0.201132 0.335220 0 -0.616804 0.898389 0
+ L3 26624 0.000000 -0.817936 -0.348629 0 -0.254767 -0.026818 0
+ L3 26624 0.000000 0.429081 -0.683848 0 0.160906 -0.147497 0
+ L3 26624 0.000000 -2.444160 -0.866724 0 -3.102870 -1.196079 0
+ L3 26624 0.000000 -3.050867 0.710713 0 -2.218812 0.450696 0
+ L3 26624 0.000000 -2.409492 2.582836 0 -1.664109 2.357488 0
+ F4 32768 0.000000 4 0
+ -2.253481 -1.334754 0
+ -1.820120 -0.832055 0
+ -1.057403 -0.537369 0
+ -1.542768 -1.161410 0
+ F4 32768 0.000000 4 0
+ -2.045468 0.710713 0
+ -1.109406 0.797386 0
+ -0.693379 0.416027 0
+ -1.456096 0.433362 0
+ F4 32768 0.000000 4 0
+ -1.022734 -1.681444 0
+ -1.178744 -2.236147 0
+ -1.750782 -2.513498 0
+ -1.594771 -2.062802 0
+ F4 32768 0.000000 4 0
+ -3.397556 -0.017334 0
+ -2.652174 -0.190679 0
+ -1.837454 0.069338 0
+ -2.669509 0.208014 0
+ F4 32768 0.000000 4 0
+ -2.808184 -2.201478 0
+ -2.392157 -1.785451 0
+ -1.750782 -1.646775 0
+ -2.114806 -2.062802 0
+ F4 32768 0.000000 4 0
+ -2.374823 2.288150 0
+ -1.820120 1.716113 0
+ -1.178744 1.473430 0
+ -1.802785 2.097471 0
+ END$SEGS
+
diff --git a/app/lib/params/TreeSmDecid.xtp b/app/lib/params/TreeSmDecid.xtp
new file mode 100644
index 0000000..db4d128
--- /dev/null
+++ b/app/lib/params/TreeSmDecid.xtp
@@ -0,0 +1,3483 @@
+CONTENTS Small Deciduous Trees
+
+# DxfToXtp version 0.6 by Russell Shilling 2021
+STRUCTURE * "Sm Decid 1"" Decid-1a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.302473 -0.286948 0
+ -0.259565 -0.449195 0
+ -0.163021 -0.490762 0
+ -0.054410 -0.356674 0
+ 0.070292 -0.473330 0
+ 0.220470 -0.402264 0
+ 0.185607 0.395559 0
+ 0.043474 0.470649 0
+ -0.015525 0.379469 0
+ -0.134863 0.380810 0
+ -0.164362 0.473330 0
+ -0.348063 0.414332 0
+ -0.325268 0.305720 0
+ -0.476787 0.294993 0
+ -0.554558 0.138111 0
+ -0.468742 0.049613 0
+ -0.581376 0.000000 0
+ -0.551876 -0.112634 0
+ -0.432538 -0.155542 0
+ -0.518354 -0.225268 0
+ -0.448629 -0.351310 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -0.418354 -0.225268 0
+ -0.348629 -0.351310 0
+ -0.202473 -0.286948 0
+ -0.159565 -0.449195 0
+ -0.063021 -0.490762 0
+ 0.045590 -0.356674 0
+ 0.170292 -0.473330 0
+ 0.320470 -0.402264 0
+ 0.264153 -0.253426 0
+ 0.443831 -0.203814 0
+ 0.470649 -0.034863 0
+ 0.376787 0.052294 0
+ 0.465285 0.178337 0
+ 0.398241 0.290971 0
+ 0.289630 0.250744 0
+ 0.285607 0.395559 0
+ 0.143474 0.470649 0
+ 0.084475 0.379469 0
+ -0.034863 0.380810 0
+ -0.064362 0.473330 0
+ -0.248063 0.414332 0
+ -0.225268 0.305720 0
+ -0.376787 0.294993 0
+ -0.454558 0.138111 0
+ -0.368742 0.049613 0
+ -0.481376 0.000000 0
+ -0.451876 -0.112634 0
+ -0.332538 -0.155542 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.067044 -0.313766 0
+ 0.160906 -0.407627 0
+ 0.250744 -0.352651 0
+ 0.210518 -0.195768 0
+ 0.390196 -0.146156 0
+ 0.402264 -0.068385 0
+ 0.289630 0.009386 0
+ 0.387514 0.156883 0
+ 0.344606 0.207836 0
+ 0.237336 0.205155 0
+ 0.231972 0.328515 0
+ 0.139451 0.379469 0
+ 0.063021 0.289630 0
+ -0.052294 0.305720 0
+ -0.079112 0.367401 0
+ -0.176996 0.341924 0
+ -0.178337 0.234654 0
+ -0.260131 0.231972 0
+ -0.313766 0.124702 0
+ -0.218563 0.034863 0
+ -0.308402 -0.012068 0
+ -0.293653 -0.076430 0
+ -0.150178 -0.103248 0
+ -0.205155 -0.201132 0
+ -0.115316 -0.270858 0
+ -0.079112 -0.349969 0
+ L3 65280 0.000000 -0.085065 -0.413171 0 -0.036456 -0.376715 0
+ L3 65280 0.000000 -0.121521 -0.388867 0 -0.133673 -0.328106 0
+ L3 65280 0.000000 -0.279498 -0.255194 0 -0.194433 -0.255194 0
+ L3 65280 0.000000 -0.340258 -0.230890 0 -0.303802 -0.194433 0
+ L3 65280 0.000000 -0.255194 -0.206585 0 -0.206585 -0.170129 0
+ L3 65280 0.000000 -0.230890 -0.133673 0 -0.303802 -0.121521 0
+ L3 65280 0.000000 -0.413171 -0.097217 0 -0.328106 -0.097217 0
+ L3 65280 0.000000 -0.413171 -0.024304 0 -0.340258 -0.060760 0
+ L3 65280 0.000000 -0.279498 0.036456 0 -0.340258 0.024304 0
+ L3 65280 0.000000 -0.328106 0.085065 0 -0.413171 0.133673 0
+ L3 65280 0.000000 -0.376715 0.182281 0 -0.315954 0.194433 0
+ L3 65280 0.000000 -0.291650 0.279498 0 -0.267346 0.243042 0
+ L3 65280 0.000000 -0.182281 0.364562 0 -0.206585 0.401019 0
+ L3 65280 0.000000 -0.109369 0.388867 0 -0.085065 0.425323 0
+ L3 65280 0.000000 -0.012152 0.328106 0 0.000000 0.364562 0
+ L3 65280 0.000000 0.060760 0.328106 0 0.024304 0.352410 0
+ L3 65280 0.000000 0.157977 0.388867 0 0.145825 0.437475 0
+ L3 65280 0.000000 0.230890 0.364562 0 0.267346 0.376715 0
+ L3 65280 0.000000 0.425323 0.170129 0 0.388867 0.182281 0
+ L3 65280 0.000000 0.364562 0.230890 0 0.388867 0.267346 0
+ L3 65280 0.000000 0.425323 -0.036456 0 0.376715 -0.024304 0
+ L3 65280 0.000000 -0.340258 -0.303802 0 -0.315954 -0.255194 0
+ L3 65280 0.000000 -0.388867 -0.230890 0 -0.352410 -0.255194 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 0.187212 -0.192413 0
+ 0.110941 -0.169878 0
+ 0.102273 -0.112674 0
+ 0.152543 -0.133475 0
+ F4 26624 0.000000 5 0
+ -0.072805 -0.230548 0
+ -0.065871 -0.190679 0
+ 0.008667 -0.157744 0
+ 0.029469 -0.206280 0
+ -0.008667 -0.242683 0
+ F4 26624 0.000000 4 0
+ 0.237482 0.008667 0
+ 0.147343 0.029469 0
+ 0.128275 -0.015601 0
+ 0.251350 -0.022535 0
+ F4 26624 0.000000 4 0
+ 0.057204 0.230548 0
+ 0.012134 0.195880 0
+ 0.024268 0.123075 0
+ 0.052003 0.133475 0
+ F4 26624 0.000000 3 0
+ 0.211481 0.173345 0
+ 0.187212 0.119608 0
+ 0.149076 0.152543 0
+ F4 26624 0.000000 5 0
+ -0.182012 0.020801 0
+ -0.157744 0.003467 0
+ -0.074538 -0.017334 0
+ -0.029469 0.029469 0
+ -0.133475 0.045070 0
+ F4 26624 0.000000 4 0
+ -0.159477 0.201080 0
+ -0.110941 0.188946 0
+ -0.076272 0.107474 0
+ -0.130009 0.121341 0
+ L3 26624 0.000000 0.024304 -0.267346 0 0.048608 -0.230890 0
+ L3 26624 0.000000 0.170129 -0.230890 0 0.109369 -0.206585 0
+ L3 26624 0.000000 0.194433 -0.291650 0 0.157977 -0.267346 0
+ L3 26624 0.000000 0.109369 -0.315954 0 0.085065 -0.267346 0
+ L3 26624 0.000000 -0.048608 -0.303802 0 -0.024304 -0.267346 0
+ L3 26624 0.000000 -0.145825 -0.194433 0 -0.097217 -0.194433 0
+ L3 26624 0.000000 -0.109369 -0.133673 0 -0.048608 -0.157977 0
+ L3 26624 0.000000 -0.145825 -0.072912 0 -0.097217 -0.036456 0
+ L3 26624 0.000000 -0.218737 -0.060760 0 -0.170129 -0.036456 0
+ L3 26624 0.000000 -0.279498 -0.024304 0 -0.218737 0.000000 0
+ L3 26624 0.000000 -0.194433 0.060760 0 -0.243042 0.109369 0
+ L3 26624 0.000000 -0.218737 0.170129 0 -0.182281 0.121521 0
+ L3 26624 0.000000 -0.133673 0.267346 0 -0.097217 0.218737 0
+ L3 26624 0.000000 -0.048608 0.218737 0 -0.060760 0.291650 0
+ L3 26624 0.000000 -0.036456 0.133673 0 -0.024304 0.182281 0
+ L3 26624 0.000000 0.085065 0.218737 0 0.109369 0.291650 0
+ L3 26624 0.000000 0.145825 0.206585 0 0.218737 0.243042 0
+ L3 26624 0.000000 0.328106 0.085065 0 0.267346 0.097217 0
+ L3 26624 0.000000 0.328106 0.194433 0 0.267346 0.170129 0
+ L3 26624 0.000000 0.352410 0.145825 0 0.291650 0.133673 0
+ L3 26624 0.000000 0.145825 0.352410 0 0.133673 0.303802 0
+ L3 26624 0.000000 0.218737 0.315954 0 0.182281 0.279498 0
+ L3 26624 0.000000 0.170129 0.328106 0 0.145825 0.255194 0
+ L3 26624 0.000000 0.364562 -0.060760 0 0.291650 -0.072912 0
+ L3 26624 0.000000 0.303802 -0.157977 0 0.243042 -0.121521 0
+ L3 26624 0.000000 0.364562 -0.121521 0 0.303802 -0.109369 0
+ L3 26624 0.000000 -0.121521 0.340258 0 -0.109369 0.291650 0
+ L3 26624 0.000000 -0.267346 0.170129 0 -0.230890 0.145825 0
+ L3 26624 0.000000 0.170129 -0.388867 0 0.145825 -0.328106 0
+ L3 26624 0.000000 0.218737 -0.352410 0 0.182281 -0.315954 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 1"" Decid-1b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.302473 0.286948 0
+ -0.259565 0.449195 0
+ -0.163021 0.490762 0
+ -0.054410 0.356674 0
+ 0.070292 0.473330 0
+ 0.220470 0.402264 0
+ 0.185607 -0.395559 0
+ 0.043474 -0.470649 0
+ -0.015525 -0.379469 0
+ -0.134863 -0.380810 0
+ -0.164362 -0.473330 0
+ -0.348063 -0.414332 0
+ -0.325268 -0.305720 0
+ -0.476787 -0.294993 0
+ -0.554558 -0.138111 0
+ -0.468742 -0.049613 0
+ -0.581376 0.000000 0
+ -0.551876 0.112634 0
+ -0.432538 0.155542 0
+ -0.518354 0.225268 0
+ -0.448629 0.351310 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -0.418354 0.225268 0
+ -0.348629 0.351310 0
+ -0.202473 0.286948 0
+ -0.159565 0.449195 0
+ -0.063021 0.490762 0
+ 0.045590 0.356674 0
+ 0.170292 0.473330 0
+ 0.320470 0.402264 0
+ 0.264153 0.253426 0
+ 0.443831 0.203814 0
+ 0.470649 0.034863 0
+ 0.376787 -0.052294 0
+ 0.465285 -0.178337 0
+ 0.398241 -0.290971 0
+ 0.289630 -0.250744 0
+ 0.285607 -0.395559 0
+ 0.143474 -0.470649 0
+ 0.084475 -0.379469 0
+ -0.034863 -0.380810 0
+ -0.064362 -0.473330 0
+ -0.248063 -0.414332 0
+ -0.225268 -0.305720 0
+ -0.376787 -0.294993 0
+ -0.454558 -0.138111 0
+ -0.368742 -0.049613 0
+ -0.481376 0.000000 0
+ -0.451876 0.112634 0
+ -0.332538 0.155542 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.067044 0.313766 0
+ 0.160906 0.407627 0
+ 0.250744 0.352651 0
+ 0.210518 0.195768 0
+ 0.390196 0.146156 0
+ 0.402264 0.068385 0
+ 0.289630 -0.009386 0
+ 0.387514 -0.156883 0
+ 0.344606 -0.207836 0
+ 0.237336 -0.205155 0
+ 0.231972 -0.328515 0
+ 0.139451 -0.379469 0
+ 0.063021 -0.289630 0
+ -0.052294 -0.305720 0
+ -0.079112 -0.367401 0
+ -0.176996 -0.341924 0
+ -0.178337 -0.234654 0
+ -0.260131 -0.231972 0
+ -0.313766 -0.124702 0
+ -0.218563 -0.034863 0
+ -0.308402 0.012068 0
+ -0.293653 0.076430 0
+ -0.150178 0.103248 0
+ -0.205155 0.201132 0
+ -0.115316 0.270858 0
+ -0.079112 0.349969 0
+ L3 65280 0.000000 -0.085065 0.413171 0 -0.036456 0.376715 0
+ L3 65280 0.000000 -0.121521 0.388867 0 -0.133673 0.328106 0
+ L3 65280 0.000000 -0.279498 0.255194 0 -0.194433 0.255194 0
+ L3 65280 0.000000 -0.340258 0.230890 0 -0.303802 0.194433 0
+ L3 65280 0.000000 -0.255194 0.206585 0 -0.206585 0.170129 0
+ L3 65280 0.000000 -0.230890 0.133673 0 -0.303802 0.121521 0
+ L3 65280 0.000000 -0.413171 0.097217 0 -0.328106 0.097217 0
+ L3 65280 0.000000 -0.413171 0.024304 0 -0.340258 0.060760 0
+ L3 65280 0.000000 -0.279498 -0.036456 0 -0.340258 -0.024304 0
+ L3 65280 0.000000 -0.328106 -0.085065 0 -0.413171 -0.133673 0
+ L3 65280 0.000000 -0.376715 -0.182281 0 -0.315954 -0.194433 0
+ L3 65280 0.000000 -0.291650 -0.279498 0 -0.267346 -0.243042 0
+ L3 65280 0.000000 -0.182281 -0.364562 0 -0.206585 -0.401019 0
+ L3 65280 0.000000 -0.109369 -0.388867 0 -0.085065 -0.425323 0
+ L3 65280 0.000000 -0.012152 -0.328106 0 0.000000 -0.364562 0
+ L3 65280 0.000000 0.060760 -0.328106 0 0.024304 -0.352410 0
+ L3 65280 0.000000 0.157977 -0.388867 0 0.145825 -0.437475 0
+ L3 65280 0.000000 0.230890 -0.364562 0 0.267346 -0.376715 0
+ L3 65280 0.000000 0.425323 -0.170129 0 0.388867 -0.182281 0
+ L3 65280 0.000000 0.364562 -0.230890 0 0.388867 -0.267346 0
+ L3 65280 0.000000 0.425323 0.036456 0 0.376715 0.024304 0
+ L3 65280 0.000000 -0.340258 0.303802 0 -0.315954 0.255194 0
+ L3 65280 0.000000 -0.388867 0.230890 0 -0.352410 0.255194 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 0.187212 0.192413 0
+ 0.110941 0.169878 0
+ 0.102273 0.112674 0
+ 0.152543 0.133475 0
+ F4 26624 0.000000 5 0
+ -0.072805 0.230548 0
+ -0.065871 0.190679 0
+ 0.008667 0.157744 0
+ 0.029469 0.206280 0
+ -0.008667 0.242683 0
+ F4 26624 0.000000 4 0
+ 0.237482 -0.008667 0
+ 0.147343 -0.029469 0
+ 0.128275 0.015601 0
+ 0.251350 0.022535 0
+ F4 26624 0.000000 4 0
+ 0.057204 -0.230548 0
+ 0.012134 -0.195880 0
+ 0.024268 -0.123075 0
+ 0.052003 -0.133475 0
+ F4 26624 0.000000 3 0
+ 0.211481 -0.173345 0
+ 0.187212 -0.119608 0
+ 0.149076 -0.152543 0
+ F4 26624 0.000000 5 0
+ -0.182012 -0.020801 0
+ -0.157744 -0.003467 0
+ -0.074538 0.017334 0
+ -0.029469 -0.029469 0
+ -0.133475 -0.045070 0
+ F4 26624 0.000000 4 0
+ -0.159477 -0.201080 0
+ -0.110941 -0.188946 0
+ -0.076272 -0.107474 0
+ -0.130009 -0.121341 0
+ L3 26624 0.000000 0.024304 0.267346 0 0.048608 0.230890 0
+ L3 26624 0.000000 0.170129 0.230890 0 0.109369 0.206585 0
+ L3 26624 0.000000 0.194433 0.291650 0 0.157977 0.267346 0
+ L3 26624 0.000000 0.109369 0.315954 0 0.085065 0.267346 0
+ L3 26624 0.000000 -0.048608 0.303802 0 -0.024304 0.267346 0
+ L3 26624 0.000000 -0.145825 0.194433 0 -0.097217 0.194433 0
+ L3 26624 0.000000 -0.109369 0.133673 0 -0.048608 0.157977 0
+ L3 26624 0.000000 -0.145825 0.072912 0 -0.097217 0.036456 0
+ L3 26624 0.000000 -0.218737 0.060760 0 -0.170129 0.036456 0
+ L3 26624 0.000000 -0.279498 0.024304 0 -0.218737 0.000000 0
+ L3 26624 0.000000 -0.194433 -0.060760 0 -0.243042 -0.109369 0
+ L3 26624 0.000000 -0.218737 -0.170129 0 -0.182281 -0.121521 0
+ L3 26624 0.000000 -0.133673 -0.267346 0 -0.097217 -0.218737 0
+ L3 26624 0.000000 -0.048608 -0.218737 0 -0.060760 -0.291650 0
+ L3 26624 0.000000 -0.036456 -0.133673 0 -0.024304 -0.182281 0
+ L3 26624 0.000000 0.085065 -0.218737 0 0.109369 -0.291650 0
+ L3 26624 0.000000 0.145825 -0.206585 0 0.218737 -0.243042 0
+ L3 26624 0.000000 0.328106 -0.085065 0 0.267346 -0.097217 0
+ L3 26624 0.000000 0.328106 -0.194433 0 0.267346 -0.170129 0
+ L3 26624 0.000000 0.352410 -0.145825 0 0.291650 -0.133673 0
+ L3 26624 0.000000 0.145825 -0.352410 0 0.133673 -0.303802 0
+ L3 26624 0.000000 0.218737 -0.315954 0 0.182281 -0.279498 0
+ L3 26624 0.000000 0.170129 -0.328106 0 0.145825 -0.255194 0
+ L3 26624 0.000000 0.364562 0.060760 0 0.291650 0.072912 0
+ L3 26624 0.000000 0.303802 0.157977 0 0.243042 0.121521 0
+ L3 26624 0.000000 0.364562 0.121521 0 0.303802 0.109369 0
+ L3 26624 0.000000 -0.121521 -0.340258 0 -0.109369 -0.291650 0
+ L3 26624 0.000000 -0.267346 -0.170129 0 -0.230890 -0.145825 0
+ L3 26624 0.000000 0.170129 0.388867 0 0.145825 0.328106 0
+ L3 26624 0.000000 0.218737 0.352410 0 0.182281 0.315954 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 2"" Decid-2a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.604946 -0.573896 0
+ -0.519129 -0.898389 0
+ -0.326043 -0.981524 0
+ -0.108820 -0.713348 0
+ 0.140583 -0.946661 0
+ 0.440940 -0.804528 0
+ 0.371215 0.791119 0
+ 0.086948 0.941297 0
+ -0.031049 0.758938 0
+ -0.269726 0.761619 0
+ -0.328724 0.946661 0
+ -0.696125 0.828663 0
+ -0.650535 0.611441 0
+ -0.953574 0.589987 0
+ -1.109116 0.276221 0
+ -0.937484 0.099225 0
+ -1.162751 0.000000 0
+ -1.103753 -0.225268 0
+ -0.865076 -0.311084 0
+ -1.036709 -0.450535 0
+ -0.897257 -0.702621 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -0.836709 -0.450535 0
+ -0.697257 -0.702621 0
+ -0.404946 -0.573896 0
+ -0.319129 -0.898389 0
+ -0.126043 -0.981524 0
+ 0.091180 -0.713348 0
+ 0.340583 -0.946661 0
+ 0.640940 -0.804528 0
+ 0.528306 -0.506852 0
+ 0.887662 -0.407627 0
+ 0.941297 -0.069726 0
+ 0.753574 0.104589 0
+ 0.930570 0.356674 0
+ 0.796482 0.581942 0
+ 0.579260 0.501489 0
+ 0.571215 0.791119 0
+ 0.286948 0.941297 0
+ 0.168951 0.758938 0
+ -0.069726 0.761619 0
+ -0.128724 0.946661 0
+ -0.496125 0.828663 0
+ -0.450535 0.611441 0
+ -0.753574 0.589987 0
+ -0.909116 0.276221 0
+ -0.737484 0.099225 0
+ -0.962751 0.000000 0
+ -0.903753 -0.225268 0
+ -0.665076 -0.311084 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.134088 -0.627531 0
+ 0.321811 -0.815255 0
+ 0.501489 -0.705302 0
+ 0.421036 -0.391537 0
+ 0.780392 -0.292312 0
+ 0.804528 -0.136770 0
+ 0.579260 0.018772 0
+ 0.775028 0.313766 0
+ 0.689212 0.415673 0
+ 0.474671 0.410309 0
+ 0.463944 0.657031 0
+ 0.278903 0.758938 0
+ 0.126043 0.579260 0
+ -0.104589 0.611441 0
+ -0.158224 0.734802 0
+ -0.353992 0.683848 0
+ -0.356674 0.469308 0
+ -0.520261 0.463944 0
+ -0.627531 0.249404 0
+ -0.437127 0.069726 0
+ -0.616804 -0.024136 0
+ -0.587305 -0.152860 0
+ -0.300357 -0.206495 0
+ -0.410309 -0.402264 0
+ -0.230631 -0.541715 0
+ -0.158224 -0.699939 0
+ L3 65280 0.000000 -0.170129 -0.826342 0 -0.072912 -0.753429 0
+ L3 65280 0.000000 -0.243042 -0.777733 0 -0.267346 -0.656212 0
+ L3 65280 0.000000 -0.558996 -0.510387 0 -0.388867 -0.510387 0
+ L3 65280 0.000000 -0.680517 -0.461779 0 -0.607604 -0.388867 0
+ L3 65280 0.000000 -0.510387 -0.413171 0 -0.413171 -0.340258 0
+ L3 65280 0.000000 -0.461779 -0.267346 0 -0.607604 -0.243042 0
+ L3 65280 0.000000 -0.826342 -0.194433 0 -0.656212 -0.194433 0
+ L3 65280 0.000000 -0.826342 -0.048608 0 -0.680517 -0.121521 0
+ L3 65280 0.000000 -0.558996 0.072912 0 -0.680517 0.048608 0
+ L3 65280 0.000000 -0.656212 0.170129 0 -0.826342 0.267346 0
+ L3 65280 0.000000 -0.753429 0.364562 0 -0.631908 0.388867 0
+ L3 65280 0.000000 -0.583300 0.558996 0 -0.534692 0.486083 0
+ L3 65280 0.000000 -0.364562 0.729125 0 -0.413171 0.802037 0
+ L3 65280 0.000000 -0.218737 0.777733 0 -0.170129 0.850646 0
+ L3 65280 0.000000 -0.024304 0.656212 0 0.000000 0.729125 0
+ L3 65280 0.000000 0.121521 0.656212 0 0.048608 0.704821 0
+ L3 65280 0.000000 0.315954 0.777733 0 0.291650 0.874950 0
+ L3 65280 0.000000 0.461779 0.729125 0 0.534692 0.753429 0
+ L3 65280 0.000000 0.850646 0.340258 0 0.777733 0.364562 0
+ L3 65280 0.000000 0.729125 0.461779 0 0.777733 0.534692 0
+ L3 65280 0.000000 0.850646 -0.072912 0 0.753429 -0.048608 0
+ L3 65280 0.000000 -0.680517 -0.607604 0 -0.631908 -0.510387 0
+ L3 65280 0.000000 -0.777733 -0.461779 0 -0.704821 -0.510387 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 0.374425 -0.384825 0
+ 0.221881 -0.339756 0
+ 0.204547 -0.225348 0
+ 0.305087 -0.266951 0
+ F4 26624 0.000000 5 0
+ -0.145610 -0.461097 0
+ -0.131742 -0.381358 0
+ 0.017334 -0.315487 0
+ 0.058937 -0.412560 0
+ -0.017334 -0.485365 0
+ F4 26624 0.000000 4 0
+ 0.474965 0.017334 0
+ 0.294686 0.058937 0
+ 0.256550 -0.031202 0
+ 0.502700 -0.045070 0
+ F4 26624 0.000000 4 0
+ 0.114408 0.461097 0
+ 0.024268 0.391759 0
+ 0.048537 0.246149 0
+ 0.104007 0.266951 0
+ F4 26624 0.000000 3 0
+ 0.422961 0.346689 0
+ 0.374425 0.239216 0
+ 0.298153 0.305087 0
+ F4 26624 0.000000 5 0
+ -0.364024 0.041603 0
+ -0.315487 0.006934 0
+ -0.149076 -0.034669 0
+ -0.058937 0.058937 0
+ -0.266951 0.090139 0
+ F4 26624 0.000000 4 0
+ -0.318954 0.402160 0
+ -0.221881 0.377891 0
+ -0.152543 0.214947 0
+ -0.260017 0.242683 0
+ L3 26624 0.000000 0.048608 -0.534692 0 0.097217 -0.461779 0
+ L3 26624 0.000000 0.340258 -0.461779 0 0.218737 -0.413171 0
+ L3 26624 0.000000 0.388867 -0.583300 0 0.315954 -0.534692 0
+ L3 26624 0.000000 0.218737 -0.631908 0 0.170129 -0.534692 0
+ L3 26624 0.000000 -0.097217 -0.607604 0 -0.048608 -0.534692 0
+ L3 26624 0.000000 -0.291650 -0.388867 0 -0.194433 -0.388867 0
+ L3 26624 0.000000 -0.218737 -0.267346 0 -0.097217 -0.315954 0
+ L3 26624 0.000000 -0.291650 -0.145825 0 -0.194433 -0.072912 0
+ L3 26624 0.000000 -0.437475 -0.121521 0 -0.340258 -0.072912 0
+ L3 26624 0.000000 -0.558996 -0.048608 0 -0.437475 0.000000 0
+ L3 26624 0.000000 -0.388867 0.121521 0 -0.486083 0.218737 0
+ L3 26624 0.000000 -0.437475 0.340258 0 -0.364562 0.243042 0
+ L3 26624 0.000000 -0.267346 0.534692 0 -0.194433 0.437475 0
+ L3 26624 0.000000 -0.097217 0.437475 0 -0.121521 0.583300 0
+ L3 26624 0.000000 -0.072912 0.267346 0 -0.048608 0.364562 0
+ L3 26624 0.000000 0.170129 0.437475 0 0.218737 0.583300 0
+ L3 26624 0.000000 0.291650 0.413171 0 0.437475 0.486083 0
+ L3 26624 0.000000 0.656212 0.170129 0 0.534692 0.194433 0
+ L3 26624 0.000000 0.656212 0.388867 0 0.534692 0.340258 0
+ L3 26624 0.000000 0.704821 0.291650 0 0.583300 0.267346 0
+ L3 26624 0.000000 0.291650 0.704821 0 0.267346 0.607604 0
+ L3 26624 0.000000 0.437475 0.631908 0 0.364562 0.558996 0
+ L3 26624 0.000000 0.340258 0.656212 0 0.291650 0.510387 0
+ L3 26624 0.000000 0.729125 -0.121521 0 0.583300 -0.145825 0
+ L3 26624 0.000000 0.607604 -0.315954 0 0.486083 -0.243042 0
+ L3 26624 0.000000 0.729125 -0.243042 0 0.607604 -0.218737 0
+ L3 26624 0.000000 -0.243042 0.680517 0 -0.218737 0.583300 0
+ L3 26624 0.000000 -0.534692 0.340258 0 -0.461779 0.291650 0
+ L3 26624 0.000000 0.340258 -0.777733 0 0.291650 -0.656212 0
+ L3 26624 0.000000 0.437475 -0.704821 0 0.364562 -0.631908 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 2"" Decid-2b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.604946 0.573896 0
+ -0.519129 0.898389 0
+ -0.326043 0.981524 0
+ -0.108820 0.713348 0
+ 0.140583 0.946661 0
+ 0.440940 0.804528 0
+ 0.371215 -0.791119 0
+ 0.086948 -0.941297 0
+ -0.031049 -0.758938 0
+ -0.269726 -0.761619 0
+ -0.328724 -0.946661 0
+ -0.696125 -0.828663 0
+ -0.650535 -0.611441 0
+ -0.953574 -0.589987 0
+ -1.109116 -0.276221 0
+ -0.937484 -0.099225 0
+ -1.162751 0.000000 0
+ -1.103753 0.225268 0
+ -0.865076 0.311084 0
+ -1.036709 0.450535 0
+ -0.897257 0.702621 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -0.836709 0.450535 0
+ -0.697257 0.702621 0
+ -0.404946 0.573896 0
+ -0.319129 0.898389 0
+ -0.126043 0.981524 0
+ 0.091180 0.713348 0
+ 0.340583 0.946661 0
+ 0.640940 0.804528 0
+ 0.528306 0.506852 0
+ 0.887662 0.407627 0
+ 0.941297 0.069726 0
+ 0.753574 -0.104589 0
+ 0.930570 -0.356674 0
+ 0.796482 -0.581942 0
+ 0.579260 -0.501489 0
+ 0.571215 -0.791119 0
+ 0.286948 -0.941297 0
+ 0.168951 -0.758938 0
+ -0.069726 -0.761619 0
+ -0.128724 -0.946661 0
+ -0.496125 -0.828663 0
+ -0.450535 -0.611441 0
+ -0.753574 -0.589987 0
+ -0.909116 -0.276221 0
+ -0.737484 -0.099225 0
+ -0.962751 0.000000 0
+ -0.903753 0.225268 0
+ -0.665076 0.311084 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.134088 0.627531 0
+ 0.321811 0.815255 0
+ 0.501489 0.705302 0
+ 0.421036 0.391537 0
+ 0.780392 0.292312 0
+ 0.804528 0.136770 0
+ 0.579260 -0.018772 0
+ 0.775028 -0.313766 0
+ 0.689212 -0.415673 0
+ 0.474671 -0.410309 0
+ 0.463944 -0.657031 0
+ 0.278903 -0.758938 0
+ 0.126043 -0.579260 0
+ -0.104589 -0.611441 0
+ -0.158224 -0.734802 0
+ -0.353992 -0.683848 0
+ -0.356674 -0.469308 0
+ -0.520261 -0.463944 0
+ -0.627531 -0.249404 0
+ -0.437127 -0.069726 0
+ -0.616804 0.024136 0
+ -0.587305 0.152860 0
+ -0.300357 0.206495 0
+ -0.410309 0.402264 0
+ -0.230631 0.541715 0
+ -0.158224 0.699939 0
+ L3 65280 0.000000 -0.170129 0.826342 0 -0.072912 0.753429 0
+ L3 65280 0.000000 -0.243042 0.777733 0 -0.267346 0.656212 0
+ L3 65280 0.000000 -0.558996 0.510387 0 -0.388867 0.510387 0
+ L3 65280 0.000000 -0.680517 0.461779 0 -0.607604 0.388867 0
+ L3 65280 0.000000 -0.510387 0.413171 0 -0.413171 0.340258 0
+ L3 65280 0.000000 -0.461779 0.267346 0 -0.607604 0.243042 0
+ L3 65280 0.000000 -0.826342 0.194433 0 -0.656212 0.194433 0
+ L3 65280 0.000000 -0.826342 0.048608 0 -0.680517 0.121521 0
+ L3 65280 0.000000 -0.558996 -0.072912 0 -0.680517 -0.048608 0
+ L3 65280 0.000000 -0.656212 -0.170129 0 -0.826342 -0.267346 0
+ L3 65280 0.000000 -0.753429 -0.364562 0 -0.631908 -0.388867 0
+ L3 65280 0.000000 -0.583300 -0.558996 0 -0.534692 -0.486083 0
+ L3 65280 0.000000 -0.364562 -0.729125 0 -0.413171 -0.802037 0
+ L3 65280 0.000000 -0.218737 -0.777733 0 -0.170129 -0.850646 0
+ L3 65280 0.000000 -0.024304 -0.656212 0 0.000000 -0.729125 0
+ L3 65280 0.000000 0.121521 -0.656212 0 0.048608 -0.704821 0
+ L3 65280 0.000000 0.315954 -0.777733 0 0.291650 -0.874950 0
+ L3 65280 0.000000 0.461779 -0.729125 0 0.534692 -0.753429 0
+ L3 65280 0.000000 0.850646 -0.340258 0 0.777733 -0.364562 0
+ L3 65280 0.000000 0.729125 -0.461779 0 0.777733 -0.534692 0
+ L3 65280 0.000000 0.850646 0.072912 0 0.753429 0.048608 0
+ L3 65280 0.000000 -0.680517 0.607604 0 -0.631908 0.510387 0
+ L3 65280 0.000000 -0.777733 0.461779 0 -0.704821 0.510387 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 0.374425 0.384825 0
+ 0.221881 0.339756 0
+ 0.204547 0.225348 0
+ 0.305087 0.266951 0
+ F4 26624 0.000000 5 0
+ -0.145610 0.461097 0
+ -0.131742 0.381358 0
+ 0.017334 0.315487 0
+ 0.058937 0.412560 0
+ -0.017334 0.485365 0
+ F4 26624 0.000000 4 0
+ 0.474965 -0.017334 0
+ 0.294686 -0.058937 0
+ 0.256550 0.031202 0
+ 0.502700 0.045070 0
+ F4 26624 0.000000 4 0
+ 0.114408 -0.461097 0
+ 0.024268 -0.391759 0
+ 0.048537 -0.246149 0
+ 0.104007 -0.266951 0
+ F4 26624 0.000000 3 0
+ 0.422961 -0.346689 0
+ 0.374425 -0.239216 0
+ 0.298153 -0.305087 0
+ F4 26624 0.000000 5 0
+ -0.364024 -0.041603 0
+ -0.315487 -0.006934 0
+ -0.149076 0.034669 0
+ -0.058937 -0.058937 0
+ -0.266951 -0.090139 0
+ F4 26624 0.000000 4 0
+ -0.318954 -0.402160 0
+ -0.221881 -0.377891 0
+ -0.152543 -0.214947 0
+ -0.260017 -0.242683 0
+ L3 26624 0.000000 0.048608 0.534692 0 0.097217 0.461779 0
+ L3 26624 0.000000 0.340258 0.461779 0 0.218737 0.413171 0
+ L3 26624 0.000000 0.388867 0.583300 0 0.315954 0.534692 0
+ L3 26624 0.000000 0.218737 0.631908 0 0.170129 0.534692 0
+ L3 26624 0.000000 -0.097217 0.607604 0 -0.048608 0.534692 0
+ L3 26624 0.000000 -0.291650 0.388867 0 -0.194433 0.388867 0
+ L3 26624 0.000000 -0.218737 0.267346 0 -0.097217 0.315954 0
+ L3 26624 0.000000 -0.291650 0.145825 0 -0.194433 0.072912 0
+ L3 26624 0.000000 -0.437475 0.121521 0 -0.340258 0.072912 0
+ L3 26624 0.000000 -0.558996 0.048608 0 -0.437475 0.000000 0
+ L3 26624 0.000000 -0.388867 -0.121521 0 -0.486083 -0.218737 0
+ L3 26624 0.000000 -0.437475 -0.340258 0 -0.364562 -0.243042 0
+ L3 26624 0.000000 -0.267346 -0.534692 0 -0.194433 -0.437475 0
+ L3 26624 0.000000 -0.097217 -0.437475 0 -0.121521 -0.583300 0
+ L3 26624 0.000000 -0.072912 -0.267346 0 -0.048608 -0.364562 0
+ L3 26624 0.000000 0.170129 -0.437475 0 0.218737 -0.583300 0
+ L3 26624 0.000000 0.291650 -0.413171 0 0.437475 -0.486083 0
+ L3 26624 0.000000 0.656212 -0.170129 0 0.534692 -0.194433 0
+ L3 26624 0.000000 0.656212 -0.388867 0 0.534692 -0.340258 0
+ L3 26624 0.000000 0.704821 -0.291650 0 0.583300 -0.267346 0
+ L3 26624 0.000000 0.291650 -0.704821 0 0.267346 -0.607604 0
+ L3 26624 0.000000 0.437475 -0.631908 0 0.364562 -0.558996 0
+ L3 26624 0.000000 0.340258 -0.656212 0 0.291650 -0.510387 0
+ L3 26624 0.000000 0.729125 0.121521 0 0.583300 0.145825 0
+ L3 26624 0.000000 0.607604 0.315954 0 0.486083 0.243042 0
+ L3 26624 0.000000 0.729125 0.243042 0 0.607604 0.218737 0
+ L3 26624 0.000000 -0.243042 -0.680517 0 -0.218737 -0.583300 0
+ L3 26624 0.000000 -0.534692 -0.340258 0 -0.461779 -0.291650 0
+ L3 26624 0.000000 0.340258 0.777733 0 0.291650 0.656212 0
+ L3 26624 0.000000 0.437475 0.704821 0 0.364562 0.631908 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 3"" Decid-3a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.907418 -0.860844 0
+ -0.778694 -1.347584 0
+ -0.489064 -1.472285 0
+ -0.163230 -1.070022 0
+ 0.210875 -1.419991 0
+ 0.661410 -1.206791 0
+ 0.556822 1.186678 0
+ 0.130422 1.411946 0
+ -0.046574 1.138406 0
+ -0.404589 1.142429 0
+ -0.493087 1.419991 0
+ -1.044188 1.242995 0
+ -0.975803 0.917161 0
+ -1.430361 0.884980 0
+ -1.663674 0.414332 0
+ -1.406225 0.148838 0
+ -1.744127 0.000000 0
+ -1.655629 -0.337902 0
+ -1.297614 -0.466626 0
+ -1.555063 -0.675803 0
+ -1.345886 -1.053931 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -1.255063 -0.675803 0
+ -1.045886 -1.053931 0
+ -0.607418 -0.860844 0
+ -0.478694 -1.347584 0
+ -0.189064 -1.472285 0
+ 0.136770 -1.070022 0
+ 0.510875 -1.419991 0
+ 0.961410 -1.206791 0
+ 0.792460 -0.760279 0
+ 1.331493 -0.611441 0
+ 1.411946 -0.104589 0
+ 1.130361 0.156883 0
+ 1.395855 0.535011 0
+ 1.194723 0.872912 0
+ 0.868890 0.752233 0
+ 0.856822 1.186678 0
+ 0.430422 1.411946 0
+ 0.253426 1.138406 0
+ -0.104589 1.142429 0
+ -0.193087 1.419991 0
+ -0.744188 1.242995 0
+ -0.675803 0.917161 0
+ -1.130361 0.884980 0
+ -1.363674 0.414332 0
+ -1.106225 0.148838 0
+ -1.444127 0.000000 0
+ -1.355629 -0.337902 0
+ -0.997614 -0.466626 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.201132 -0.941297 0
+ 0.482717 -1.222882 0
+ 0.752233 -1.057954 0
+ 0.631554 -0.587305 0
+ 1.170588 -0.438468 0
+ 1.206791 -0.205155 0
+ 0.868890 0.028158 0
+ 1.162542 0.470649 0
+ 1.033818 0.623509 0
+ 0.712007 0.615464 0
+ 0.695916 0.985546 0
+ 0.418354 1.138406 0
+ 0.189064 0.868890 0
+ -0.156883 0.917161 0
+ -0.237336 1.102203 0
+ -0.530988 1.025773 0
+ -0.535011 0.703962 0
+ -0.780392 0.695916 0
+ -0.941297 0.374105 0
+ -0.655690 0.104589 0
+ -0.925207 -0.036204 0
+ -0.880958 -0.229290 0
+ -0.450535 -0.309743 0
+ -0.615464 -0.603396 0
+ -0.345947 -0.812573 0
+ -0.237336 -1.049908 0
+ L3 65280 0.000000 -0.255194 -1.239512 0 -0.109369 -1.130144 0
+ L3 65280 0.000000 -0.364562 -1.166600 0 -0.401019 -0.984319 0
+ L3 65280 0.000000 -0.838494 -0.765581 0 -0.583300 -0.765581 0
+ L3 65280 0.000000 -1.020775 -0.692669 0 -0.911406 -0.583300 0
+ L3 65280 0.000000 -0.765581 -0.619756 0 -0.619756 -0.510387 0
+ L3 65280 0.000000 -0.692669 -0.401019 0 -0.911406 -0.364562 0
+ L3 65280 0.000000 -1.239512 -0.291650 0 -0.984319 -0.291650 0
+ L3 65280 0.000000 -1.239512 -0.072912 0 -1.020775 -0.182281 0
+ L3 65280 0.000000 -0.838494 0.109369 0 -1.020775 0.072912 0
+ L3 65280 0.000000 -0.984319 0.255194 0 -1.239512 0.401019 0
+ L3 65280 0.000000 -1.130144 0.546844 0 -0.947862 0.583300 0
+ L3 65280 0.000000 -0.874950 0.838494 0 -0.802037 0.729125 0
+ L3 65280 0.000000 -0.546844 1.093687 0 -0.619756 1.203056 0
+ L3 65280 0.000000 -0.328106 1.166600 0 -0.255194 1.275969 0
+ L3 65280 0.000000 -0.036456 0.984319 0 0.000000 1.093687 0
+ L3 65280 0.000000 0.182281 0.984319 0 0.072912 1.057231 0
+ L3 65280 0.000000 0.473931 1.166600 0 0.437475 1.312425 0
+ L3 65280 0.000000 0.692669 1.093687 0 0.802037 1.130144 0
+ L3 65280 0.000000 1.275969 0.510387 0 1.166600 0.546844 0
+ L3 65280 0.000000 1.093687 0.692669 0 1.166600 0.802037 0
+ L3 65280 0.000000 1.275969 -0.109369 0 1.130144 -0.072912 0
+ L3 65280 0.000000 -1.020775 -0.911406 0 -0.947862 -0.765581 0
+ L3 65280 0.000000 -1.166600 -0.692669 0 -1.057231 -0.765581 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 0.561637 -0.577238 0
+ 0.332822 -0.509633 0
+ 0.306820 -0.338022 0
+ 0.457630 -0.400426 0
+ F4 26624 0.000000 5 0
+ -0.218414 -0.691645 0
+ -0.197613 -0.572038 0
+ 0.026002 -0.473231 0
+ 0.088406 -0.618841 0
+ -0.026002 -0.728048 0
+ F4 26624 0.000000 4 0
+ 0.712447 0.026002 0
+ 0.442029 0.088406 0
+ 0.384825 -0.046803 0
+ 0.754050 -0.067604 0
+ F4 26624 0.000000 4 0
+ 0.171611 0.691645 0
+ 0.036402 0.587639 0
+ 0.072805 0.369224 0
+ 0.156010 0.400426 0
+ F4 26624 0.000000 3 0
+ 0.634442 0.520034 0
+ 0.561637 0.358824 0
+ 0.447229 0.457630 0
+ F4 26624 0.000000 5 0
+ -0.546036 0.062404 0
+ -0.473231 0.010401 0
+ -0.223615 -0.052003 0
+ -0.088406 0.088406 0
+ -0.400426 0.135209 0
+ F4 26624 0.000000 4 0
+ -0.478431 0.603240 0
+ -0.332822 0.566837 0
+ -0.228815 0.322421 0
+ -0.390026 0.364024 0
+ L3 26624 0.000000 0.072912 -0.802037 0 0.145825 -0.692669 0
+ L3 26624 0.000000 0.510387 -0.692669 0 0.328106 -0.619756 0
+ L3 26624 0.000000 0.583300 -0.874950 0 0.473931 -0.802037 0
+ L3 26624 0.000000 0.328106 -0.947862 0 0.255194 -0.802037 0
+ L3 26624 0.000000 -0.145825 -0.911406 0 -0.072912 -0.802037 0
+ L3 26624 0.000000 -0.437475 -0.583300 0 -0.291650 -0.583300 0
+ L3 26624 0.000000 -0.328106 -0.401019 0 -0.145825 -0.473931 0
+ L3 26624 0.000000 -0.437475 -0.218737 0 -0.291650 -0.109369 0
+ L3 26624 0.000000 -0.656212 -0.182281 0 -0.510387 -0.109369 0
+ L3 26624 0.000000 -0.838494 -0.072912 0 -0.656212 0.000000 0
+ L3 26624 0.000000 -0.583300 0.182281 0 -0.729125 0.328106 0
+ L3 26624 0.000000 -0.656212 0.510387 0 -0.546844 0.364562 0
+ L3 26624 0.000000 -0.401019 0.802037 0 -0.291650 0.656212 0
+ L3 26624 0.000000 -0.145825 0.656212 0 -0.182281 0.874950 0
+ L3 26624 0.000000 -0.109369 0.401019 0 -0.072912 0.546844 0
+ L3 26624 0.000000 0.255194 0.656212 0 0.328106 0.874950 0
+ L3 26624 0.000000 0.437475 0.619756 0 0.656212 0.729125 0
+ L3 26624 0.000000 0.984319 0.255194 0 0.802037 0.291650 0
+ L3 26624 0.000000 0.984319 0.583300 0 0.802037 0.510387 0
+ L3 26624 0.000000 1.057231 0.437475 0 0.874950 0.401019 0
+ L3 26624 0.000000 0.437475 1.057231 0 0.401019 0.911406 0
+ L3 26624 0.000000 0.656212 0.947862 0 0.546844 0.838494 0
+ L3 26624 0.000000 0.510387 0.984319 0 0.437475 0.765581 0
+ L3 26624 0.000000 1.093687 -0.182281 0 0.874950 -0.218737 0
+ L3 26624 0.000000 0.911406 -0.473931 0 0.729125 -0.364562 0
+ L3 26624 0.000000 1.093687 -0.364562 0 0.911406 -0.328106 0
+ L3 26624 0.000000 -0.364562 1.020775 0 -0.328106 0.874950 0
+ L3 26624 0.000000 -0.802037 0.510387 0 -0.692669 0.437475 0
+ L3 26624 0.000000 0.510387 -1.166600 0 0.437475 -0.984319 0
+ L3 26624 0.000000 0.656212 -1.057231 0 0.546844 -0.947862 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 3"" Decid-3b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.907418 0.860844 0
+ -0.778694 1.347584 0
+ -0.489064 1.472285 0
+ -0.163230 1.070022 0
+ 0.210875 1.419991 0
+ 0.661410 1.206791 0
+ 0.556822 -1.186678 0
+ 0.130422 -1.411946 0
+ -0.046574 -1.138406 0
+ -0.404589 -1.142429 0
+ -0.493087 -1.419991 0
+ -1.044188 -1.242995 0
+ -0.975803 -0.917161 0
+ -1.430361 -0.884980 0
+ -1.663674 -0.414332 0
+ -1.406225 -0.148838 0
+ -1.744127 0.000000 0
+ -1.655629 0.337902 0
+ -1.297614 0.466626 0
+ -1.555063 0.675803 0
+ -1.345886 1.053931 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -1.255063 0.675803 0
+ -1.045886 1.053931 0
+ -0.607418 0.860844 0
+ -0.478694 1.347584 0
+ -0.189064 1.472285 0
+ 0.136770 1.070022 0
+ 0.510875 1.419991 0
+ 0.961410 1.206791 0
+ 0.792460 0.760279 0
+ 1.331493 0.611441 0
+ 1.411946 0.104589 0
+ 1.130361 -0.156883 0
+ 1.395855 -0.535011 0
+ 1.194723 -0.872912 0
+ 0.868890 -0.752233 0
+ 0.856822 -1.186678 0
+ 0.430422 -1.411946 0
+ 0.253426 -1.138406 0
+ -0.104589 -1.142429 0
+ -0.193087 -1.419991 0
+ -0.744188 -1.242995 0
+ -0.675803 -0.917161 0
+ -1.130361 -0.884980 0
+ -1.363674 -0.414332 0
+ -1.106225 -0.148838 0
+ -1.444127 0.000000 0
+ -1.355629 0.337902 0
+ -0.997614 0.466626 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.201132 0.941297 0
+ 0.482717 1.222882 0
+ 0.752233 1.057954 0
+ 0.631554 0.587305 0
+ 1.170588 0.438468 0
+ 1.206791 0.205155 0
+ 0.868890 -0.028158 0
+ 1.162542 -0.470649 0
+ 1.033818 -0.623509 0
+ 0.712007 -0.615464 0
+ 0.695916 -0.985546 0
+ 0.418354 -1.138406 0
+ 0.189064 -0.868890 0
+ -0.156883 -0.917161 0
+ -0.237336 -1.102203 0
+ -0.530988 -1.025773 0
+ -0.535011 -0.703962 0
+ -0.780392 -0.695916 0
+ -0.941297 -0.374105 0
+ -0.655690 -0.104589 0
+ -0.925207 0.036204 0
+ -0.880958 0.229290 0
+ -0.450535 0.309743 0
+ -0.615464 0.603396 0
+ -0.345947 0.812573 0
+ -0.237336 1.049908 0
+ L3 65280 0.000000 -0.255194 1.239512 0 -0.109369 1.130144 0
+ L3 65280 0.000000 -0.364562 1.166600 0 -0.401019 0.984319 0
+ L3 65280 0.000000 -0.838494 0.765581 0 -0.583300 0.765581 0
+ L3 65280 0.000000 -1.020775 0.692669 0 -0.911406 0.583300 0
+ L3 65280 0.000000 -0.765581 0.619756 0 -0.619756 0.510387 0
+ L3 65280 0.000000 -0.692669 0.401019 0 -0.911406 0.364562 0
+ L3 65280 0.000000 -1.239512 0.291650 0 -0.984319 0.291650 0
+ L3 65280 0.000000 -1.239512 0.072912 0 -1.020775 0.182281 0
+ L3 65280 0.000000 -0.838494 -0.109369 0 -1.020775 -0.072912 0
+ L3 65280 0.000000 -0.984319 -0.255194 0 -1.239512 -0.401019 0
+ L3 65280 0.000000 -1.130144 -0.546844 0 -0.947862 -0.583300 0
+ L3 65280 0.000000 -0.874950 -0.838494 0 -0.802037 -0.729125 0
+ L3 65280 0.000000 -0.546844 -1.093687 0 -0.619756 -1.203056 0
+ L3 65280 0.000000 -0.328106 -1.166600 0 -0.255194 -1.275969 0
+ L3 65280 0.000000 -0.036456 -0.984319 0 0.000000 -1.093687 0
+ L3 65280 0.000000 0.182281 -0.984319 0 0.072912 -1.057231 0
+ L3 65280 0.000000 0.473931 -1.166600 0 0.437475 -1.312425 0
+ L3 65280 0.000000 0.692669 -1.093687 0 0.802037 -1.130144 0
+ L3 65280 0.000000 1.275969 -0.510387 0 1.166600 -0.546844 0
+ L3 65280 0.000000 1.093687 -0.692669 0 1.166600 -0.802037 0
+ L3 65280 0.000000 1.275969 0.109369 0 1.130144 0.072912 0
+ L3 65280 0.000000 -1.020775 0.911406 0 -0.947862 0.765581 0
+ L3 65280 0.000000 -1.166600 0.692669 0 -1.057231 0.765581 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 0.561637 0.577238 0
+ 0.332822 0.509633 0
+ 0.306820 0.338022 0
+ 0.457630 0.400426 0
+ F4 26624 0.000000 5 0
+ -0.218414 0.691645 0
+ -0.197613 0.572038 0
+ 0.026002 0.473231 0
+ 0.088406 0.618841 0
+ -0.026002 0.728048 0
+ F4 26624 0.000000 4 0
+ 0.712447 -0.026002 0
+ 0.442029 -0.088406 0
+ 0.384825 0.046803 0
+ 0.754050 0.067604 0
+ F4 26624 0.000000 4 0
+ 0.171611 -0.691645 0
+ 0.036402 -0.587639 0
+ 0.072805 -0.369224 0
+ 0.156010 -0.400426 0
+ F4 26624 0.000000 3 0
+ 0.634442 -0.520034 0
+ 0.561637 -0.358824 0
+ 0.447229 -0.457630 0
+ F4 26624 0.000000 5 0
+ -0.546036 -0.062404 0
+ -0.473231 -0.010401 0
+ -0.223615 0.052003 0
+ -0.088406 -0.088406 0
+ -0.400426 -0.135209 0
+ F4 26624 0.000000 4 0
+ -0.478431 -0.603240 0
+ -0.332822 -0.566837 0
+ -0.228815 -0.322421 0
+ -0.390026 -0.364024 0
+ L3 26624 0.000000 0.072912 0.802037 0 0.145825 0.692669 0
+ L3 26624 0.000000 0.510387 0.692669 0 0.328106 0.619756 0
+ L3 26624 0.000000 0.583300 0.874950 0 0.473931 0.802037 0
+ L3 26624 0.000000 0.328106 0.947862 0 0.255194 0.802037 0
+ L3 26624 0.000000 -0.145825 0.911406 0 -0.072912 0.802037 0
+ L3 26624 0.000000 -0.437475 0.583300 0 -0.291650 0.583300 0
+ L3 26624 0.000000 -0.328106 0.401019 0 -0.145825 0.473931 0
+ L3 26624 0.000000 -0.437475 0.218737 0 -0.291650 0.109369 0
+ L3 26624 0.000000 -0.656212 0.182281 0 -0.510387 0.109369 0
+ L3 26624 0.000000 -0.838494 0.072912 0 -0.656212 0.000000 0
+ L3 26624 0.000000 -0.583300 -0.182281 0 -0.729125 -0.328106 0
+ L3 26624 0.000000 -0.656212 -0.510387 0 -0.546844 -0.364562 0
+ L3 26624 0.000000 -0.401019 -0.802037 0 -0.291650 -0.656212 0
+ L3 26624 0.000000 -0.145825 -0.656212 0 -0.182281 -0.874950 0
+ L3 26624 0.000000 -0.109369 -0.401019 0 -0.072912 -0.546844 0
+ L3 26624 0.000000 0.255194 -0.656212 0 0.328106 -0.874950 0
+ L3 26624 0.000000 0.437475 -0.619756 0 0.656212 -0.729125 0
+ L3 26624 0.000000 0.984319 -0.255194 0 0.802037 -0.291650 0
+ L3 26624 0.000000 0.984319 -0.583300 0 0.802037 -0.510387 0
+ L3 26624 0.000000 1.057231 -0.437475 0 0.874950 -0.401019 0
+ L3 26624 0.000000 0.437475 -1.057231 0 0.401019 -0.911406 0
+ L3 26624 0.000000 0.656212 -0.947862 0 0.546844 -0.838494 0
+ L3 26624 0.000000 0.510387 -0.984319 0 0.437475 -0.765581 0
+ L3 26624 0.000000 1.093687 0.182281 0 0.874950 0.218737 0
+ L3 26624 0.000000 0.911406 0.473931 0 0.729125 0.364562 0
+ L3 26624 0.000000 1.093687 0.364562 0 0.911406 0.328106 0
+ L3 26624 0.000000 -0.364562 -1.020775 0 -0.328106 -0.874950 0
+ L3 26624 0.000000 -0.802037 -0.510387 0 -0.692669 -0.437475 0
+ L3 26624 0.000000 0.510387 1.166600 0 0.437475 0.984319 0
+ L3 26624 0.000000 0.656212 1.057231 0 0.546844 0.947862 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 4"" Decid-4a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -1.209891 -1.147793 0
+ -1.038259 -1.796778 0
+ -0.652085 -1.963047 0
+ -0.217640 -1.426696 0
+ 0.281167 -1.893322 0
+ 0.881881 -1.609055 0
+ 0.742429 1.582238 0
+ 0.173896 1.882594 0
+ -0.062098 1.517875 0
+ -0.539451 1.523239 0
+ -0.657449 1.893322 0
+ -1.392251 1.657327 0
+ -1.301071 1.222882 0
+ -1.907148 1.179974 0
+ -2.218232 0.552442 0
+ -1.874967 0.198450 0
+ -2.325503 0.000000 0
+ -2.207505 -0.450535 0
+ -1.730152 -0.622168 0
+ -2.073417 -0.901071 0
+ -1.794514 -1.405241 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -1.673417 -0.901071 0
+ -1.394514 -1.405241 0
+ -0.809891 -1.147793 0
+ -0.638259 -1.796778 0
+ -0.252085 -1.963047 0
+ 0.182360 -1.426696 0
+ 0.681167 -1.893322 0
+ 1.281881 -1.609055 0
+ 1.056613 -1.013705 0
+ 1.775324 -0.815255 0
+ 1.882594 -0.139451 0
+ 1.507148 0.209177 0
+ 1.861140 0.713348 0
+ 1.592965 1.163883 0
+ 1.158520 1.002978 0
+ 1.142429 1.582238 0
+ 0.573896 1.882594 0
+ 0.337902 1.517875 0
+ -0.139451 1.523239 0
+ -0.257449 1.893322 0
+ -0.992251 1.657327 0
+ -0.901071 1.222882 0
+ -1.507148 1.179974 0
+ -1.818232 0.552442 0
+ -1.474967 0.198450 0
+ -1.925503 0.000000 0
+ -1.807505 -0.450535 0
+ -1.330152 -0.622168 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.268176 -1.255063 0
+ 0.643622 -1.630509 0
+ 1.002978 -1.410605 0
+ 0.842072 -0.783073 0
+ 1.560783 -0.584623 0
+ 1.609055 -0.273539 0
+ 1.158520 0.037545 0
+ 1.550056 0.627531 0
+ 1.378424 0.831345 0
+ 0.949343 0.820618 0
+ 0.927888 1.314062 0
+ 0.557806 1.517875 0
+ 0.252085 1.158520 0
+ -0.209177 1.222882 0
+ -0.316448 1.469604 0
+ -0.707984 1.367697 0
+ -0.713348 0.938615 0
+ -1.040522 0.927888 0
+ -1.255063 0.498807 0
+ -0.874253 0.139451 0
+ -1.233609 -0.048272 0
+ -1.174610 -0.305720 0
+ -0.600714 -0.412991 0
+ -0.820618 -0.804528 0
+ -0.461262 -1.083430 0
+ -0.316448 -1.399878 0
+ L3 65280 0.000000 -0.340258 -1.652683 0 -0.145825 -1.506858 0
+ L3 65280 0.000000 -0.486083 -1.555467 0 -0.534692 -1.312425 0
+ L3 65280 0.000000 -1.117992 -1.020775 0 -0.777733 -1.020775 0
+ L3 65280 0.000000 -1.361033 -0.923558 0 -1.215208 -0.777733 0
+ L3 65280 0.000000 -1.020775 -0.826342 0 -0.826342 -0.680517 0
+ L3 65280 0.000000 -0.923558 -0.534692 0 -1.215208 -0.486083 0
+ L3 65280 0.000000 -1.652683 -0.388867 0 -1.312425 -0.388867 0
+ L3 65280 0.000000 -1.652683 -0.097217 0 -1.361033 -0.243042 0
+ L3 65280 0.000000 -1.117992 0.145825 0 -1.361033 0.097217 0
+ L3 65280 0.000000 -1.312425 0.340258 0 -1.652683 0.534692 0
+ L3 65280 0.000000 -1.506858 0.729125 0 -1.263817 0.777733 0
+ L3 65280 0.000000 -1.166600 1.117992 0 -1.069383 0.972167 0
+ L3 65280 0.000000 -0.729125 1.458250 0 -0.826342 1.604075 0
+ L3 65280 0.000000 -0.437475 1.555467 0 -0.340258 1.701292 0
+ L3 65280 0.000000 -0.048608 1.312425 0 0.000000 1.458250 0
+ L3 65280 0.000000 0.243042 1.312425 0 0.097217 1.409642 0
+ L3 65280 0.000000 0.631908 1.555467 0 0.583300 1.749900 0
+ L3 65280 0.000000 0.923558 1.458250 0 1.069383 1.506858 0
+ L3 65280 0.000000 1.701292 0.680517 0 1.555467 0.729125 0
+ L3 65280 0.000000 1.458250 0.923558 0 1.555467 1.069383 0
+ L3 65280 0.000000 1.701292 -0.145825 0 1.506858 -0.097217 0
+ L3 65280 0.000000 -1.361033 -1.215208 0 -1.263817 -1.020775 0
+ L3 65280 0.000000 -1.555467 -0.923558 0 -1.409642 -1.020775 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 0.748849 -0.769651 0
+ 0.443762 -0.679511 0
+ 0.409094 -0.450696 0
+ 0.610173 -0.533902 0
+ F4 26624 0.000000 5 0
+ -0.291219 -0.922194 0
+ -0.263484 -0.762717 0
+ 0.034669 -0.630975 0
+ 0.117874 -0.825121 0
+ -0.034669 -0.970730 0
+ F4 26624 0.000000 4 0
+ 0.949929 0.034669 0
+ 0.589372 0.117874 0
+ 0.513100 -0.062404 0
+ 1.005399 -0.090139 0
+ F4 26624 0.000000 4 0
+ 0.228815 0.922194 0
+ 0.048537 0.783518 0
+ 0.097073 0.492299 0
+ 0.208014 0.533902 0
+ F4 26624 0.000000 3 0
+ 0.845922 0.693379 0
+ 0.748849 0.478431 0
+ 0.596306 0.610173 0
+ F4 26624 0.000000 5 0
+ -0.728048 0.083205 0
+ -0.630975 0.013868 0
+ -0.298153 -0.069338 0
+ -0.117874 0.117874 0
+ -0.533902 0.180279 0
+ F4 26624 0.000000 4 0
+ -0.637909 0.804319 0
+ -0.443762 0.755783 0
+ -0.305087 0.429895 0
+ -0.520034 0.485365 0
+ L3 26624 0.000000 0.097217 -1.069383 0 0.194433 -0.923558 0
+ L3 26624 0.000000 0.680517 -0.923558 0 0.437475 -0.826342 0
+ L3 26624 0.000000 0.777733 -1.166600 0 0.631908 -1.069383 0
+ L3 26624 0.000000 0.437475 -1.263817 0 0.340258 -1.069383 0
+ L3 26624 0.000000 -0.194433 -1.215208 0 -0.097217 -1.069383 0
+ L3 26624 0.000000 -0.583300 -0.777733 0 -0.388867 -0.777733 0
+ L3 26624 0.000000 -0.437475 -0.534692 0 -0.194433 -0.631908 0
+ L3 26624 0.000000 -0.583300 -0.291650 0 -0.388867 -0.145825 0
+ L3 26624 0.000000 -0.874950 -0.243042 0 -0.680517 -0.145825 0
+ L3 26624 0.000000 -1.117992 -0.097217 0 -0.874950 0.000000 0
+ L3 26624 0.000000 -0.777733 0.243042 0 -0.972167 0.437475 0
+ L3 26624 0.000000 -0.874950 0.680517 0 -0.729125 0.486083 0
+ L3 26624 0.000000 -0.534692 1.069383 0 -0.388867 0.874950 0
+ L3 26624 0.000000 -0.194433 0.874950 0 -0.243042 1.166600 0
+ L3 26624 0.000000 -0.145825 0.534692 0 -0.097217 0.729125 0
+ L3 26624 0.000000 0.340258 0.874950 0 0.437475 1.166600 0
+ L3 26624 0.000000 0.583300 0.826342 0 0.874950 0.972167 0
+ L3 26624 0.000000 1.312425 0.340258 0 1.069383 0.388867 0
+ L3 26624 0.000000 1.312425 0.777733 0 1.069383 0.680517 0
+ L3 26624 0.000000 1.409642 0.583300 0 1.166600 0.534692 0
+ L3 26624 0.000000 0.583300 1.409642 0 0.534692 1.215208 0
+ L3 26624 0.000000 0.874950 1.263817 0 0.729125 1.117992 0
+ L3 26624 0.000000 0.680517 1.312425 0 0.583300 1.020775 0
+ L3 26624 0.000000 1.458250 -0.243042 0 1.166600 -0.291650 0
+ L3 26624 0.000000 1.215208 -0.631908 0 0.972167 -0.486083 0
+ L3 26624 0.000000 1.458250 -0.486083 0 1.215208 -0.437475 0
+ L3 26624 0.000000 -0.486083 1.361033 0 -0.437475 1.166600 0
+ L3 26624 0.000000 -1.069383 0.680517 0 -0.923558 0.583300 0
+ L3 26624 0.000000 0.680517 -1.555467 0 0.583300 -1.312425 0
+ L3 26624 0.000000 0.874950 -1.409642 0 0.729125 -1.263817 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 4"" Decid-4b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -1.209891 1.147793 0
+ -1.038259 1.796778 0
+ -0.652085 1.963047 0
+ -0.217640 1.426696 0
+ 0.281167 1.893322 0
+ 0.881881 1.609055 0
+ 0.742429 -1.582238 0
+ 0.173896 -1.882594 0
+ -0.062098 -1.517875 0
+ -0.539451 -1.523239 0
+ -0.657449 -1.893322 0
+ -1.392251 -1.657327 0
+ -1.301071 -1.222882 0
+ -1.907148 -1.179974 0
+ -2.218232 -0.552442 0
+ -1.874967 -0.198450 0
+ -2.325503 0.000000 0
+ -2.207505 0.450535 0
+ -1.730152 0.622168 0
+ -2.073417 0.901071 0
+ -1.794514 1.405241 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -1.673417 0.901071 0
+ -1.394514 1.405241 0
+ -0.809891 1.147793 0
+ -0.638259 1.796778 0
+ -0.252085 1.963047 0
+ 0.182360 1.426696 0
+ 0.681167 1.893322 0
+ 1.281881 1.609055 0
+ 1.056613 1.013705 0
+ 1.775324 0.815255 0
+ 1.882594 0.139451 0
+ 1.507148 -0.209177 0
+ 1.861140 -0.713348 0
+ 1.592965 -1.163883 0
+ 1.158520 -1.002978 0
+ 1.142429 -1.582238 0
+ 0.573896 -1.882594 0
+ 0.337902 -1.517875 0
+ -0.139451 -1.523239 0
+ -0.257449 -1.893322 0
+ -0.992251 -1.657327 0
+ -0.901071 -1.222882 0
+ -1.507148 -1.179974 0
+ -1.818232 -0.552442 0
+ -1.474967 -0.198450 0
+ -1.925503 0.000000 0
+ -1.807505 0.450535 0
+ -1.330152 0.622168 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.268176 1.255063 0
+ 0.643622 1.630509 0
+ 1.002978 1.410605 0
+ 0.842072 0.783073 0
+ 1.560783 0.584623 0
+ 1.609055 0.273539 0
+ 1.158520 -0.037545 0
+ 1.550056 -0.627531 0
+ 1.378424 -0.831345 0
+ 0.949343 -0.820618 0
+ 0.927888 -1.314062 0
+ 0.557806 -1.517875 0
+ 0.252085 -1.158520 0
+ -0.209177 -1.222882 0
+ -0.316448 -1.469604 0
+ -0.707984 -1.367697 0
+ -0.713348 -0.938615 0
+ -1.040522 -0.927888 0
+ -1.255063 -0.498807 0
+ -0.874253 -0.139451 0
+ -1.233609 0.048272 0
+ -1.174610 0.305720 0
+ -0.600714 0.412991 0
+ -0.820618 0.804528 0
+ -0.461262 1.083430 0
+ -0.316448 1.399878 0
+ L3 65280 0.000000 -0.340258 1.652683 0 -0.145825 1.506858 0
+ L3 65280 0.000000 -0.486083 1.555467 0 -0.534692 1.312425 0
+ L3 65280 0.000000 -1.117992 1.020775 0 -0.777733 1.020775 0
+ L3 65280 0.000000 -1.361033 0.923558 0 -1.215208 0.777733 0
+ L3 65280 0.000000 -1.020775 0.826342 0 -0.826342 0.680517 0
+ L3 65280 0.000000 -0.923558 0.534692 0 -1.215208 0.486083 0
+ L3 65280 0.000000 -1.652683 0.388867 0 -1.312425 0.388867 0
+ L3 65280 0.000000 -1.652683 0.097217 0 -1.361033 0.243042 0
+ L3 65280 0.000000 -1.117992 -0.145825 0 -1.361033 -0.097217 0
+ L3 65280 0.000000 -1.312425 -0.340258 0 -1.652683 -0.534692 0
+ L3 65280 0.000000 -1.506858 -0.729125 0 -1.263817 -0.777733 0
+ L3 65280 0.000000 -1.166600 -1.117992 0 -1.069383 -0.972167 0
+ L3 65280 0.000000 -0.729125 -1.458250 0 -0.826342 -1.604075 0
+ L3 65280 0.000000 -0.437475 -1.555467 0 -0.340258 -1.701292 0
+ L3 65280 0.000000 -0.048608 -1.312425 0 0.000000 -1.458250 0
+ L3 65280 0.000000 0.243042 -1.312425 0 0.097217 -1.409642 0
+ L3 65280 0.000000 0.631908 -1.555467 0 0.583300 -1.749900 0
+ L3 65280 0.000000 0.923558 -1.458250 0 1.069383 -1.506858 0
+ L3 65280 0.000000 1.701292 -0.680517 0 1.555467 -0.729125 0
+ L3 65280 0.000000 1.458250 -0.923558 0 1.555467 -1.069383 0
+ L3 65280 0.000000 1.701292 0.145825 0 1.506858 0.097217 0
+ L3 65280 0.000000 -1.361033 1.215208 0 -1.263817 1.020775 0
+ L3 65280 0.000000 -1.555467 0.923558 0 -1.409642 1.020775 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 0.748849 0.769651 0
+ 0.443762 0.679511 0
+ 0.409094 0.450696 0
+ 0.610173 0.533902 0
+ F4 26624 0.000000 5 0
+ -0.291219 0.922194 0
+ -0.263484 0.762717 0
+ 0.034669 0.630975 0
+ 0.117874 0.825121 0
+ -0.034669 0.970730 0
+ F4 26624 0.000000 4 0
+ 0.949929 -0.034669 0
+ 0.589372 -0.117874 0
+ 0.513100 0.062404 0
+ 1.005399 0.090139 0
+ F4 26624 0.000000 4 0
+ 0.228815 -0.922194 0
+ 0.048537 -0.783518 0
+ 0.097073 -0.492299 0
+ 0.208014 -0.533902 0
+ F4 26624 0.000000 3 0
+ 0.845922 -0.693379 0
+ 0.748849 -0.478431 0
+ 0.596306 -0.610173 0
+ F4 26624 0.000000 5 0
+ -0.728048 -0.083205 0
+ -0.630975 -0.013868 0
+ -0.298153 0.069338 0
+ -0.117874 -0.117874 0
+ -0.533902 -0.180279 0
+ F4 26624 0.000000 4 0
+ -0.637909 -0.804319 0
+ -0.443762 -0.755783 0
+ -0.305087 -0.429895 0
+ -0.520034 -0.485365 0
+ L3 26624 0.000000 0.097217 1.069383 0 0.194433 0.923558 0
+ L3 26624 0.000000 0.680517 0.923558 0 0.437475 0.826342 0
+ L3 26624 0.000000 0.777733 1.166600 0 0.631908 1.069383 0
+ L3 26624 0.000000 0.437475 1.263817 0 0.340258 1.069383 0
+ L3 26624 0.000000 -0.194433 1.215208 0 -0.097217 1.069383 0
+ L3 26624 0.000000 -0.583300 0.777733 0 -0.388867 0.777733 0
+ L3 26624 0.000000 -0.437475 0.534692 0 -0.194433 0.631908 0
+ L3 26624 0.000000 -0.583300 0.291650 0 -0.388867 0.145825 0
+ L3 26624 0.000000 -0.874950 0.243042 0 -0.680517 0.145825 0
+ L3 26624 0.000000 -1.117992 0.097217 0 -0.874950 0.000000 0
+ L3 26624 0.000000 -0.777733 -0.243042 0 -0.972167 -0.437475 0
+ L3 26624 0.000000 -0.874950 -0.680517 0 -0.729125 -0.486083 0
+ L3 26624 0.000000 -0.534692 -1.069383 0 -0.388867 -0.874950 0
+ L3 26624 0.000000 -0.194433 -0.874950 0 -0.243042 -1.166600 0
+ L3 26624 0.000000 -0.145825 -0.534692 0 -0.097217 -0.729125 0
+ L3 26624 0.000000 0.340258 -0.874950 0 0.437475 -1.166600 0
+ L3 26624 0.000000 0.583300 -0.826342 0 0.874950 -0.972167 0
+ L3 26624 0.000000 1.312425 -0.340258 0 1.069383 -0.388867 0
+ L3 26624 0.000000 1.312425 -0.777733 0 1.069383 -0.680517 0
+ L3 26624 0.000000 1.409642 -0.583300 0 1.166600 -0.534692 0
+ L3 26624 0.000000 0.583300 -1.409642 0 0.534692 -1.215208 0
+ L3 26624 0.000000 0.874950 -1.263817 0 0.729125 -1.117992 0
+ L3 26624 0.000000 0.680517 -1.312425 0 0.583300 -1.020775 0
+ L3 26624 0.000000 1.458250 0.243042 0 1.166600 0.291650 0
+ L3 26624 0.000000 1.215208 0.631908 0 0.972167 0.486083 0
+ L3 26624 0.000000 1.458250 0.486083 0 1.215208 0.437475 0
+ L3 26624 0.000000 -0.486083 -1.361033 0 -0.437475 -1.166600 0
+ L3 26624 0.000000 -1.069383 -0.680517 0 -0.923558 -0.583300 0
+ L3 26624 0.000000 0.680517 1.555467 0 0.583300 1.312425 0
+ L3 26624 0.000000 0.874950 1.409642 0 0.729125 1.263817 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 5"" Decid-5a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.425323 -2.065854 0 -0.182281 -1.883573 0
+ L3 65280 0.000000 -0.607604 -1.944333 0 -0.668365 -1.640531 0
+ L3 65280 0.000000 -1.397490 -1.275969 0 -0.972167 -1.275969 0
+ L3 65280 0.000000 -1.701292 -1.154448 0 -1.519010 -0.972167 0
+ L3 65280 0.000000 -1.275969 -1.032927 0 -1.032927 -0.850646 0
+ L3 65280 0.000000 -1.154448 -0.668365 0 -1.519010 -0.607604 0
+ L3 65280 0.000000 -2.065854 -0.486083 0 -1.640531 -0.486083 0
+ L3 65280 0.000000 -2.065854 -0.121521 0 -1.701292 -0.303802 0
+ L3 65280 0.000000 -1.397490 0.182281 0 -1.701292 0.121521 0
+ L3 65280 0.000000 -1.640531 0.425323 0 -2.065854 0.668365 0
+ L3 65280 0.000000 -1.883573 0.911406 0 -1.579771 0.972167 0
+ L3 65280 0.000000 -1.458250 1.397490 0 -1.336729 1.215208 0
+ L3 65280 0.000000 -0.911406 1.822812 0 -1.032927 2.005094 0
+ L3 65280 0.000000 -0.546844 1.944333 0 -0.425323 2.126615 0
+ L3 65280 0.000000 -0.060760 1.640531 0 0.000000 1.822812 0
+ L3 65280 0.000000 0.303802 1.640531 0 0.121521 1.762052 0
+ L3 65280 0.000000 0.789885 1.944333 0 0.729125 2.187375 0
+ L3 65280 0.000000 1.154448 1.822812 0 1.336729 1.883573 0
+ L3 65280 0.000000 2.126615 0.850646 0 1.944333 0.911406 0
+ L3 65280 0.000000 1.822812 1.154448 0 1.944333 1.336729 0
+ L3 65280 0.000000 2.126615 -0.182281 0 1.883573 -0.121521 0
+ L3 65280 0.000000 -1.701292 -1.519010 0 -1.579771 -1.275969 0
+ L3 65280 0.000000 -1.944333 -1.154448 0 -1.762052 -1.275969 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.057403 0.866724 0
+ 0.936061 0.598039 0
+ 0.745382 0.762717 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.121521 -1.336729 0 0.243042 -1.154448 0
+ L3 26624 0.000000 0.850646 -1.154448 0 0.546844 -1.032927 0
+ L3 26624 0.000000 0.972167 -1.458250 0 0.789885 -1.336729 0
+ L3 26624 0.000000 0.546844 -1.579771 0 0.425323 -1.336729 0
+ L3 26624 0.000000 -0.243042 -1.519010 0 -0.121521 -1.336729 0
+ L3 26624 0.000000 -0.729125 -0.972167 0 -0.486083 -0.972167 0
+ L3 26624 0.000000 -0.546844 -0.668365 0 -0.243042 -0.789885 0
+ L3 26624 0.000000 -0.729125 -0.364562 0 -0.486083 -0.182281 0
+ L3 26624 0.000000 -1.093687 -0.303802 0 -0.850646 -0.182281 0
+ L3 26624 0.000000 -1.397490 -0.121521 0 -1.093687 0.000000 0
+ L3 26624 0.000000 -0.972167 0.303802 0 -1.215208 0.546844 0
+ L3 26624 0.000000 -1.093687 0.850646 0 -0.911406 0.607604 0
+ L3 26624 0.000000 -0.668365 1.336729 0 -0.486083 1.093687 0
+ L3 26624 0.000000 -0.243042 1.093687 0 -0.303802 1.458250 0
+ L3 26624 0.000000 -0.182281 0.668365 0 -0.121521 0.911406 0
+ L3 26624 0.000000 0.425323 1.093687 0 0.546844 1.458250 0
+ L3 26624 0.000000 0.729125 1.032927 0 1.093687 1.215208 0
+ L3 26624 0.000000 1.640531 0.425323 0 1.336729 0.486083 0
+ L3 26624 0.000000 1.640531 0.972167 0 1.336729 0.850646 0
+ L3 26624 0.000000 1.762052 0.729125 0 1.458250 0.668365 0
+ L3 26624 0.000000 0.729125 1.762052 0 0.668365 1.519010 0
+ L3 26624 0.000000 1.093687 1.579771 0 0.911406 1.397490 0
+ L3 26624 0.000000 0.850646 1.640531 0 0.729125 1.275969 0
+ L3 26624 0.000000 1.822812 -0.303802 0 1.458250 -0.364562 0
+ L3 26624 0.000000 1.519010 -0.789885 0 1.215208 -0.607604 0
+ L3 26624 0.000000 1.822812 -0.607604 0 1.519010 -0.546844 0
+ L3 26624 0.000000 -0.607604 1.701292 0 -0.546844 1.458250 0
+ L3 26624 0.000000 -1.336729 0.850646 0 -1.154448 0.729125 0
+ L3 26624 0.000000 0.850646 -1.944333 0 0.729125 -1.640531 0
+ L3 26624 0.000000 1.093687 -1.762052 0 0.911406 -1.579771 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 5"" Decid-5b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.425323 2.065854 0 -0.182281 1.883573 0
+ L3 65280 0.000000 -0.607604 1.944333 0 -0.668365 1.640531 0
+ L3 65280 0.000000 -1.397490 1.275969 0 -0.972167 1.275969 0
+ L3 65280 0.000000 -1.701292 1.154448 0 -1.519010 0.972167 0
+ L3 65280 0.000000 -1.275969 1.032927 0 -1.032927 0.850646 0
+ L3 65280 0.000000 -1.154448 0.668365 0 -1.519010 0.607604 0
+ L3 65280 0.000000 -2.065854 0.486083 0 -1.640531 0.486083 0
+ L3 65280 0.000000 -2.065854 0.121521 0 -1.701292 0.303802 0
+ L3 65280 0.000000 -1.397490 -0.182281 0 -1.701292 -0.121521 0
+ L3 65280 0.000000 -1.640531 -0.425323 0 -2.065854 -0.668365 0
+ L3 65280 0.000000 -1.883573 -0.911406 0 -1.579771 -0.972167 0
+ L3 65280 0.000000 -1.458250 -1.397490 0 -1.336729 -1.215208 0
+ L3 65280 0.000000 -0.911406 -1.822812 0 -1.032927 -2.005094 0
+ L3 65280 0.000000 -0.546844 -1.944333 0 -0.425323 -2.126615 0
+ L3 65280 0.000000 -0.060760 -1.640531 0 0.000000 -1.822812 0
+ L3 65280 0.000000 0.303802 -1.640531 0 0.121521 -1.762052 0
+ L3 65280 0.000000 0.789885 -1.944333 0 0.729125 -2.187375 0
+ L3 65280 0.000000 1.154448 -1.822812 0 1.336729 -1.883573 0
+ L3 65280 0.000000 2.126615 -0.850646 0 1.944333 -0.911406 0
+ L3 65280 0.000000 1.822812 -1.154448 0 1.944333 -1.336729 0
+ L3 65280 0.000000 2.126615 0.182281 0 1.883573 0.121521 0
+ L3 65280 0.000000 -1.701292 1.519010 0 -1.579771 1.275969 0
+ L3 65280 0.000000 -1.944333 1.154448 0 -1.762052 1.275969 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.057403 -0.866724 0
+ 0.936061 -0.598039 0
+ 0.745382 -0.762717 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.121521 1.336729 0 0.243042 1.154448 0
+ L3 26624 0.000000 0.850646 1.154448 0 0.546844 1.032927 0
+ L3 26624 0.000000 0.972167 1.458250 0 0.789885 1.336729 0
+ L3 26624 0.000000 0.546844 1.579771 0 0.425323 1.336729 0
+ L3 26624 0.000000 -0.243042 1.519010 0 -0.121521 1.336729 0
+ L3 26624 0.000000 -0.729125 0.972167 0 -0.486083 0.972167 0
+ L3 26624 0.000000 -0.546844 0.668365 0 -0.243042 0.789885 0
+ L3 26624 0.000000 -0.729125 0.364562 0 -0.486083 0.182281 0
+ L3 26624 0.000000 -1.093687 0.303802 0 -0.850646 0.182281 0
+ L3 26624 0.000000 -1.397490 0.121521 0 -1.093687 0.000000 0
+ L3 26624 0.000000 -0.972167 -0.303802 0 -1.215208 -0.546844 0
+ L3 26624 0.000000 -1.093687 -0.850646 0 -0.911406 -0.607604 0
+ L3 26624 0.000000 -0.668365 -1.336729 0 -0.486083 -1.093687 0
+ L3 26624 0.000000 -0.243042 -1.093687 0 -0.303802 -1.458250 0
+ L3 26624 0.000000 -0.182281 -0.668365 0 -0.121521 -0.911406 0
+ L3 26624 0.000000 0.425323 -1.093687 0 0.546844 -1.458250 0
+ L3 26624 0.000000 0.729125 -1.032927 0 1.093687 -1.215208 0
+ L3 26624 0.000000 1.640531 -0.425323 0 1.336729 -0.486083 0
+ L3 26624 0.000000 1.640531 -0.972167 0 1.336729 -0.850646 0
+ L3 26624 0.000000 1.762052 -0.729125 0 1.458250 -0.668365 0
+ L3 26624 0.000000 0.729125 -1.762052 0 0.668365 -1.519010 0
+ L3 26624 0.000000 1.093687 -1.579771 0 0.911406 -1.397490 0
+ L3 26624 0.000000 0.850646 -1.640531 0 0.729125 -1.275969 0
+ L3 26624 0.000000 1.822812 0.303802 0 1.458250 0.364562 0
+ L3 26624 0.000000 1.519010 0.789885 0 1.215208 0.607604 0
+ L3 26624 0.000000 1.822812 0.607604 0 1.519010 0.546844 0
+ L3 26624 0.000000 -0.607604 -1.701292 0 -0.546844 -1.458250 0
+ L3 26624 0.000000 -1.336729 -0.850646 0 -1.154448 -0.729125 0
+ L3 26624 0.000000 0.850646 1.944333 0 0.729125 1.640531 0
+ L3 26624 0.000000 1.093687 1.762052 0 0.911406 1.579771 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 6"" Decid-6a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.510387 -2.479025 0 -0.218737 -2.260287 0
+ L3 65280 0.000000 -0.729125 -2.333200 0 -0.802037 -1.968637 0
+ L3 65280 0.000000 -1.676987 -1.531162 0 -1.166600 -1.531162 0
+ L3 65280 0.000000 -2.041550 -1.385337 0 -1.822812 -1.166600 0
+ L3 65280 0.000000 -1.531162 -1.239512 0 -1.239512 -1.020775 0
+ L3 65280 0.000000 -1.385337 -0.802037 0 -1.822812 -0.729125 0
+ L3 65280 0.000000 -2.479025 -0.583300 0 -1.968637 -0.583300 0
+ L3 65280 0.000000 -2.479025 -0.145825 0 -2.041550 -0.364562 0
+ L3 65280 0.000000 -1.676987 0.218737 0 -2.041550 0.145825 0
+ L3 65280 0.000000 -1.968637 0.510387 0 -2.479025 0.802037 0
+ L3 65280 0.000000 -2.260287 1.093687 0 -1.895725 1.166600 0
+ L3 65280 0.000000 -1.749900 1.676987 0 -1.604075 1.458250 0
+ L3 65280 0.000000 -1.093687 2.187375 0 -1.239512 2.406112 0
+ L3 65280 0.000000 -0.656212 2.333200 0 -0.510387 2.551937 0
+ L3 65280 0.000000 -0.072912 1.968637 0 0.000000 2.187375 0
+ L3 65280 0.000000 0.364562 1.968637 0 0.145825 2.114462 0
+ L3 65280 0.000000 0.947862 2.333200 0 0.874950 2.624850 0
+ L3 65280 0.000000 1.385337 2.187375 0 1.604075 2.260287 0
+ L3 65280 0.000000 2.551937 1.020775 0 2.333200 1.093687 0
+ L3 65280 0.000000 2.187375 1.385337 0 2.333200 1.604075 0
+ L3 65280 0.000000 2.551937 -0.218737 0 2.260287 -0.145825 0
+ L3 65280 0.000000 -2.041550 -1.822812 0 -1.895725 -1.531162 0
+ L3 65280 0.000000 -2.333200 -1.385337 0 -2.114462 -1.531162 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.268883 1.040068 0
+ 1.123274 0.717647 0
+ 0.894459 0.915260 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.145825 -1.604075 0 0.291650 -1.385337 0
+ L3 26624 0.000000 1.020775 -1.385337 0 0.656212 -1.239512 0
+ L3 26624 0.000000 1.166600 -1.749900 0 0.947862 -1.604075 0
+ L3 26624 0.000000 0.656212 -1.895725 0 0.510387 -1.604075 0
+ L3 26624 0.000000 -0.291650 -1.822812 0 -0.145825 -1.604075 0
+ L3 26624 0.000000 -0.874950 -1.166600 0 -0.583300 -1.166600 0
+ L3 26624 0.000000 -0.656212 -0.802037 0 -0.291650 -0.947862 0
+ L3 26624 0.000000 -0.874950 -0.437475 0 -0.583300 -0.218737 0
+ L3 26624 0.000000 -1.312425 -0.364562 0 -1.020775 -0.218737 0
+ L3 26624 0.000000 -1.676987 -0.145825 0 -1.312425 0.000000 0
+ L3 26624 0.000000 -1.166600 0.364562 0 -1.458250 0.656212 0
+ L3 26624 0.000000 -1.312425 1.020775 0 -1.093687 0.729125 0
+ L3 26624 0.000000 -0.802037 1.604075 0 -0.583300 1.312425 0
+ L3 26624 0.000000 -0.291650 1.312425 0 -0.364562 1.749900 0
+ L3 26624 0.000000 -0.218737 0.802037 0 -0.145825 1.093687 0
+ L3 26624 0.000000 0.510387 1.312425 0 0.656212 1.749900 0
+ L3 26624 0.000000 0.874950 1.239512 0 1.312425 1.458250 0
+ L3 26624 0.000000 1.968637 0.510387 0 1.604075 0.583300 0
+ L3 26624 0.000000 1.968637 1.166600 0 1.604075 1.020775 0
+ L3 26624 0.000000 2.114462 0.874950 0 1.749900 0.802037 0
+ L3 26624 0.000000 0.874950 2.114462 0 0.802037 1.822812 0
+ L3 26624 0.000000 1.312425 1.895725 0 1.093687 1.676987 0
+ L3 26624 0.000000 1.020775 1.968637 0 0.874950 1.531162 0
+ L3 26624 0.000000 2.187375 -0.364562 0 1.749900 -0.437475 0
+ L3 26624 0.000000 1.822812 -0.947862 0 1.458250 -0.729125 0
+ L3 26624 0.000000 2.187375 -0.729125 0 1.822812 -0.656212 0
+ L3 26624 0.000000 -0.729125 2.041550 0 -0.656212 1.749900 0
+ L3 26624 0.000000 -1.604075 1.020775 0 -1.385337 0.874950 0
+ L3 26624 0.000000 1.020775 -2.333200 0 0.874950 -1.968637 0
+ L3 26624 0.000000 1.312425 -2.114462 0 1.093687 -1.895725 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 6"" Decid-6b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.510387 2.479025 0 -0.218737 2.260287 0
+ L3 65280 0.000000 -0.729125 2.333200 0 -0.802037 1.968637 0
+ L3 65280 0.000000 -1.676987 1.531162 0 -1.166600 1.531162 0
+ L3 65280 0.000000 -2.041550 1.385337 0 -1.822812 1.166600 0
+ L3 65280 0.000000 -1.531162 1.239512 0 -1.239512 1.020775 0
+ L3 65280 0.000000 -1.385337 0.802037 0 -1.822812 0.729125 0
+ L3 65280 0.000000 -2.479025 0.583300 0 -1.968637 0.583300 0
+ L3 65280 0.000000 -2.479025 0.145825 0 -2.041550 0.364562 0
+ L3 65280 0.000000 -1.676987 -0.218737 0 -2.041550 -0.145825 0
+ L3 65280 0.000000 -1.968637 -0.510387 0 -2.479025 -0.802037 0
+ L3 65280 0.000000 -2.260287 -1.093687 0 -1.895725 -1.166600 0
+ L3 65280 0.000000 -1.749900 -1.676987 0 -1.604075 -1.458250 0
+ L3 65280 0.000000 -1.093687 -2.187375 0 -1.239512 -2.406112 0
+ L3 65280 0.000000 -0.656212 -2.333200 0 -0.510387 -2.551937 0
+ L3 65280 0.000000 -0.072912 -1.968637 0 0.000000 -2.187375 0
+ L3 65280 0.000000 0.364562 -1.968637 0 0.145825 -2.114462 0
+ L3 65280 0.000000 0.947862 -2.333200 0 0.874950 -2.624850 0
+ L3 65280 0.000000 1.385337 -2.187375 0 1.604075 -2.260287 0
+ L3 65280 0.000000 2.551937 -1.020775 0 2.333200 -1.093687 0
+ L3 65280 0.000000 2.187375 -1.385337 0 2.333200 -1.604075 0
+ L3 65280 0.000000 2.551937 0.218737 0 2.260287 0.145825 0
+ L3 65280 0.000000 -2.041550 1.822812 0 -1.895725 1.531162 0
+ L3 65280 0.000000 -2.333200 1.385337 0 -2.114462 1.531162 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.268883 -1.040068 0
+ 1.123274 -0.717647 0
+ 0.894459 -0.915260 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.145825 1.604075 0 0.291650 1.385337 0
+ L3 26624 0.000000 1.020775 1.385337 0 0.656212 1.239512 0
+ L3 26624 0.000000 1.166600 1.749900 0 0.947862 1.604075 0
+ L3 26624 0.000000 0.656212 1.895725 0 0.510387 1.604075 0
+ L3 26624 0.000000 -0.291650 1.822812 0 -0.145825 1.604075 0
+ L3 26624 0.000000 -0.874950 1.166600 0 -0.583300 1.166600 0
+ L3 26624 0.000000 -0.656212 0.802037 0 -0.291650 0.947862 0
+ L3 26624 0.000000 -0.874950 0.437475 0 -0.583300 0.218737 0
+ L3 26624 0.000000 -1.312425 0.364562 0 -1.020775 0.218737 0
+ L3 26624 0.000000 -1.676987 0.145825 0 -1.312425 0.000000 0
+ L3 26624 0.000000 -1.166600 -0.364562 0 -1.458250 -0.656212 0
+ L3 26624 0.000000 -1.312425 -1.020775 0 -1.093687 -0.729125 0
+ L3 26624 0.000000 -0.802037 -1.604075 0 -0.583300 -1.312425 0
+ L3 26624 0.000000 -0.291650 -1.312425 0 -0.364562 -1.749900 0
+ L3 26624 0.000000 -0.218737 -0.802037 0 -0.145825 -1.093687 0
+ L3 26624 0.000000 0.510387 -1.312425 0 0.656212 -1.749900 0
+ L3 26624 0.000000 0.874950 -1.239512 0 1.312425 -1.458250 0
+ L3 26624 0.000000 1.968637 -0.510387 0 1.604075 -0.583300 0
+ L3 26624 0.000000 1.968637 -1.166600 0 1.604075 -1.020775 0
+ L3 26624 0.000000 2.114462 -0.874950 0 1.749900 -0.802037 0
+ L3 26624 0.000000 0.874950 -2.114462 0 0.802037 -1.822812 0
+ L3 26624 0.000000 1.312425 -1.895725 0 1.093687 -1.676987 0
+ L3 26624 0.000000 1.020775 -1.968637 0 0.874950 -1.531162 0
+ L3 26624 0.000000 2.187375 0.364562 0 1.749900 0.437475 0
+ L3 26624 0.000000 1.822812 0.947862 0 1.458250 0.729125 0
+ L3 26624 0.000000 2.187375 0.729125 0 1.822812 0.656212 0
+ L3 26624 0.000000 -0.729125 -2.041550 0 -0.656212 -1.749900 0
+ L3 26624 0.000000 -1.604075 -1.020775 0 -1.385337 -0.874950 0
+ L3 26624 0.000000 1.020775 2.333200 0 0.874950 1.968637 0
+ L3 26624 0.000000 1.312425 2.114462 0 1.093687 1.895725 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 7"" Decid-7a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -2.117309 -2.008637 0
+ -1.816952 -3.144362 0
+ -1.141149 -3.435333 0
+ -0.380871 -2.496717 0
+ 0.492042 -3.313313 0
+ 1.543291 -2.815846 0
+ 1.299251 2.768916 0
+ 0.304319 3.294540 0
+ -0.108672 2.656282 0
+ -0.944040 2.665668 0
+ -1.150535 3.313313 0
+ -2.436439 2.900322 0
+ -2.276874 2.140043 0
+ -3.337510 2.064954 0
+ -3.881907 0.966774 0
+ -3.281193 0.347288 0
+ -4.069630 0.000000 0
+ -3.863134 -0.788437 0
+ -3.027766 -1.088794 0
+ -3.628480 -1.576874 0
+ -3.140400 -2.459173 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -2.928480 -1.576874 0
+ -2.440400 -2.459173 0
+ -1.417309 -2.008637 0
+ -1.116952 -3.144362 0
+ -0.441149 -3.435333 0
+ 0.319129 -2.496717 0
+ 1.192042 -3.313313 0
+ 2.243291 -2.815846 0
+ 1.849073 -1.773983 0
+ 3.106817 -1.426696 0
+ 3.294540 -0.244040 0
+ 2.637510 0.366060 0
+ 3.256996 1.248359 0
+ 2.787688 2.036796 0
+ 2.027409 1.755211 0
+ 1.999251 2.768916 0
+ 1.004319 3.294540 0
+ 0.591328 2.656282 0
+ -0.244040 2.665668 0
+ -0.450535 3.313313 0
+ -1.736439 2.900322 0
+ -1.576874 2.140043 0
+ -2.637510 2.064954 0
+ -3.181907 0.966774 0
+ -2.581193 0.347288 0
+ -3.369630 0.000000 0
+ -3.163134 -0.788437 0
+ -2.327766 -1.088794 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.469308 -2.196360 0
+ 1.126339 -2.853391 0
+ 1.755211 -2.468559 0
+ 1.473626 -1.370379 0
+ 2.731371 -1.023091 0
+ 2.815846 -0.478694 0
+ 2.027409 0.065703 0
+ 2.712599 1.098180 0
+ 2.412242 1.454854 0
+ 1.661349 1.436082 0
+ 1.623805 2.299608 0
+ 0.976160 2.656282 0
+ 0.441149 2.027409 0
+ -0.366060 2.140043 0
+ -0.553783 2.571806 0
+ -1.238972 2.393469 0
+ -1.248359 1.642577 0
+ -1.820914 1.623805 0
+ -2.196360 0.872912 0
+ -1.529943 0.244040 0
+ -2.158816 -0.084475 0
+ -2.055568 -0.535011 0
+ -1.051249 -0.722734 0
+ -1.436082 -1.407923 0
+ -0.807209 -1.896003 0
+ -0.553783 -2.449786 0
+ L3 65280 0.000000 -0.595452 -2.892196 0 -0.255194 -2.637002 0
+ L3 65280 0.000000 -0.850646 -2.722067 0 -0.935710 -2.296744 0
+ L3 65280 0.000000 -1.956485 -1.786356 0 -1.361033 -1.786356 0
+ L3 65280 0.000000 -2.381808 -1.616227 0 -2.126615 -1.361033 0
+ L3 65280 0.000000 -1.786356 -1.446098 0 -1.446098 -1.190904 0
+ L3 65280 0.000000 -1.616227 -0.935710 0 -2.126615 -0.850646 0
+ L3 65280 0.000000 -2.892196 -0.680517 0 -2.296744 -0.680517 0
+ L3 65280 0.000000 -2.892196 -0.170129 0 -2.381808 -0.425323 0
+ L3 65280 0.000000 -1.956485 0.255194 0 -2.381808 0.170129 0
+ L3 65280 0.000000 -2.296744 0.595452 0 -2.892196 0.935710 0
+ L3 65280 0.000000 -2.637002 1.275969 0 -2.211679 1.361033 0
+ L3 65280 0.000000 -2.041550 1.956485 0 -1.871421 1.701292 0
+ L3 65280 0.000000 -1.275969 2.551937 0 -1.446098 2.807131 0
+ L3 65280 0.000000 -0.765581 2.722067 0 -0.595452 2.977260 0
+ L3 65280 0.000000 -0.085065 2.296744 0 0.000000 2.551937 0
+ L3 65280 0.000000 0.425323 2.296744 0 0.170129 2.466873 0
+ L3 65280 0.000000 1.105840 2.722067 0 1.020775 3.062325 0
+ L3 65280 0.000000 1.616227 2.551937 0 1.871421 2.637002 0
+ L3 65280 0.000000 2.977260 1.190904 0 2.722067 1.275969 0
+ L3 65280 0.000000 2.551937 1.616227 0 2.722067 1.871421 0
+ L3 65280 0.000000 2.977260 -0.255194 0 2.637002 -0.170129 0
+ L3 65280 0.000000 -2.381808 -2.126615 0 -2.211679 -1.786356 0
+ L3 65280 0.000000 -2.722067 -1.616227 0 -2.466873 -1.786356 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 1.310486 -1.346888 0
+ 0.776584 -1.189145 0
+ 0.715914 -0.788718 0
+ 1.067803 -0.934328 0
+ F4 26624 0.000000 5 0
+ -0.509633 -1.613839 0
+ -0.461097 -1.334754 0
+ 0.060671 -1.104206 0
+ 0.206280 -1.443961 0
+ -0.060671 -1.698778 0
+ F4 26624 0.000000 4 0
+ 1.662376 0.060671 0
+ 1.031401 0.206280 0
+ 0.897926 -0.109207 0
+ 1.759449 -0.157744 0
+ F4 26624 0.000000 4 0
+ 0.400426 1.613839 0
+ 0.084939 1.371157 0
+ 0.169878 0.861523 0
+ 0.364024 0.934328 0
+ F4 26624 0.000000 3 0
+ 1.480364 1.213413 0
+ 1.310486 0.837255 0
+ 1.043535 1.067803 0
+ F4 26624 0.000000 5 0
+ -1.274084 0.145610 0
+ -1.104206 0.024268 0
+ -0.521768 -0.121341 0
+ -0.206280 0.206280 0
+ -0.934328 0.315487 0
+ F4 26624 0.000000 4 0
+ -1.116340 1.407559 0
+ -0.776584 1.322620 0
+ -0.533902 0.752316 0
+ -0.910060 0.849389 0
+ L3 26624 0.000000 0.170129 -1.871421 0 0.340258 -1.616227 0
+ L3 26624 0.000000 1.190904 -1.616227 0 0.765581 -1.446098 0
+ L3 26624 0.000000 1.361033 -2.041550 0 1.105840 -1.871421 0
+ L3 26624 0.000000 0.765581 -2.211679 0 0.595452 -1.871421 0
+ L3 26624 0.000000 -0.340258 -2.126615 0 -0.170129 -1.871421 0
+ L3 26624 0.000000 -1.020775 -1.361033 0 -0.680517 -1.361033 0
+ L3 26624 0.000000 -0.765581 -0.935710 0 -0.340258 -1.105840 0
+ L3 26624 0.000000 -1.020775 -0.510387 0 -0.680517 -0.255194 0
+ L3 26624 0.000000 -1.531162 -0.425323 0 -1.190904 -0.255194 0
+ L3 26624 0.000000 -1.956485 -0.170129 0 -1.531162 0.000000 0
+ L3 26624 0.000000 -1.361033 0.425323 0 -1.701292 0.765581 0
+ L3 26624 0.000000 -1.531162 1.190904 0 -1.275969 0.850646 0
+ L3 26624 0.000000 -0.935710 1.871421 0 -0.680517 1.531162 0
+ L3 26624 0.000000 -0.340258 1.531162 0 -0.425323 2.041550 0
+ L3 26624 0.000000 -0.255194 0.935710 0 -0.170129 1.275969 0
+ L3 26624 0.000000 0.595452 1.531162 0 0.765581 2.041550 0
+ L3 26624 0.000000 1.020775 1.446098 0 1.531162 1.701292 0
+ L3 26624 0.000000 2.296744 0.595452 0 1.871421 0.680517 0
+ L3 26624 0.000000 2.296744 1.361033 0 1.871421 1.190904 0
+ L3 26624 0.000000 2.466873 1.020775 0 2.041550 0.935710 0
+ L3 26624 0.000000 1.020775 2.466873 0 0.935710 2.126615 0
+ L3 26624 0.000000 1.531162 2.211679 0 1.275969 1.956485 0
+ L3 26624 0.000000 1.190904 2.296744 0 1.020775 1.786356 0
+ L3 26624 0.000000 2.551937 -0.425323 0 2.041550 -0.510387 0
+ L3 26624 0.000000 2.126615 -1.105840 0 1.701292 -0.850646 0
+ L3 26624 0.000000 2.551937 -0.850646 0 2.126615 -0.765581 0
+ L3 26624 0.000000 -0.850646 2.381808 0 -0.765581 2.041550 0
+ L3 26624 0.000000 -1.871421 1.190904 0 -1.616227 1.020775 0
+ L3 26624 0.000000 1.190904 -2.722067 0 1.020775 -2.296744 0
+ L3 26624 0.000000 1.531162 -2.466873 0 1.275969 -2.211679 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 7"" Decid-7b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -2.117309 2.008637 0
+ -1.816952 3.144362 0
+ -1.141149 3.435333 0
+ -0.380871 2.496717 0
+ 0.492042 3.313313 0
+ 1.543291 2.815846 0
+ 1.299251 -2.768916 0
+ 0.304319 -3.294540 0
+ -0.108672 -2.656282 0
+ -0.944040 -2.665668 0
+ -1.150535 -3.313313 0
+ -2.436439 -2.900322 0
+ -2.276874 -2.140043 0
+ -3.337510 -2.064954 0
+ -3.881907 -0.966774 0
+ -3.281193 -0.347288 0
+ -4.069630 0.000000 0
+ -3.863134 0.788437 0
+ -3.027766 1.088794 0
+ -3.628480 1.576874 0
+ -3.140400 2.459173 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -2.928480 1.576874 0
+ -2.440400 2.459173 0
+ -1.417309 2.008637 0
+ -1.116952 3.144362 0
+ -0.441149 3.435333 0
+ 0.319129 2.496717 0
+ 1.192042 3.313313 0
+ 2.243291 2.815846 0
+ 1.849073 1.773983 0
+ 3.106817 1.426696 0
+ 3.294540 0.244040 0
+ 2.637510 -0.366060 0
+ 3.256996 -1.248359 0
+ 2.787688 -2.036796 0
+ 2.027409 -1.755211 0
+ 1.999251 -2.768916 0
+ 1.004319 -3.294540 0
+ 0.591328 -2.656282 0
+ -0.244040 -2.665668 0
+ -0.450535 -3.313313 0
+ -1.736439 -2.900322 0
+ -1.576874 -2.140043 0
+ -2.637510 -2.064954 0
+ -3.181907 -0.966774 0
+ -2.581193 -0.347288 0
+ -3.369630 0.000000 0
+ -3.163134 0.788437 0
+ -2.327766 1.088794 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.469308 2.196360 0
+ 1.126339 2.853391 0
+ 1.755211 2.468559 0
+ 1.473626 1.370379 0
+ 2.731371 1.023091 0
+ 2.815846 0.478694 0
+ 2.027409 -0.065703 0
+ 2.712599 -1.098180 0
+ 2.412242 -1.454854 0
+ 1.661349 -1.436082 0
+ 1.623805 -2.299608 0
+ 0.976160 -2.656282 0
+ 0.441149 -2.027409 0
+ -0.366060 -2.140043 0
+ -0.553783 -2.571806 0
+ -1.238972 -2.393469 0
+ -1.248359 -1.642577 0
+ -1.820914 -1.623805 0
+ -2.196360 -0.872912 0
+ -1.529943 -0.244040 0
+ -2.158816 0.084475 0
+ -2.055568 0.535011 0
+ -1.051249 0.722734 0
+ -1.436082 1.407923 0
+ -0.807209 1.896003 0
+ -0.553783 2.449786 0
+ L3 65280 0.000000 -0.595452 2.892196 0 -0.255194 2.637002 0
+ L3 65280 0.000000 -0.850646 2.722067 0 -0.935710 2.296744 0
+ L3 65280 0.000000 -1.956485 1.786356 0 -1.361033 1.786356 0
+ L3 65280 0.000000 -2.381808 1.616227 0 -2.126615 1.361033 0
+ L3 65280 0.000000 -1.786356 1.446098 0 -1.446098 1.190904 0
+ L3 65280 0.000000 -1.616227 0.935710 0 -2.126615 0.850646 0
+ L3 65280 0.000000 -2.892196 0.680517 0 -2.296744 0.680517 0
+ L3 65280 0.000000 -2.892196 0.170129 0 -2.381808 0.425323 0
+ L3 65280 0.000000 -1.956485 -0.255194 0 -2.381808 -0.170129 0
+ L3 65280 0.000000 -2.296744 -0.595452 0 -2.892196 -0.935710 0
+ L3 65280 0.000000 -2.637002 -1.275969 0 -2.211679 -1.361033 0
+ L3 65280 0.000000 -2.041550 -1.956485 0 -1.871421 -1.701292 0
+ L3 65280 0.000000 -1.275969 -2.551937 0 -1.446098 -2.807131 0
+ L3 65280 0.000000 -0.765581 -2.722067 0 -0.595452 -2.977260 0
+ L3 65280 0.000000 -0.085065 -2.296744 0 0.000000 -2.551937 0
+ L3 65280 0.000000 0.425323 -2.296744 0 0.170129 -2.466873 0
+ L3 65280 0.000000 1.105840 -2.722067 0 1.020775 -3.062325 0
+ L3 65280 0.000000 1.616227 -2.551937 0 1.871421 -2.637002 0
+ L3 65280 0.000000 2.977260 -1.190904 0 2.722067 -1.275969 0
+ L3 65280 0.000000 2.551937 -1.616227 0 2.722067 -1.871421 0
+ L3 65280 0.000000 2.977260 0.255194 0 2.637002 0.170129 0
+ L3 65280 0.000000 -2.381808 2.126615 0 -2.211679 1.786356 0
+ L3 65280 0.000000 -2.722067 1.616227 0 -2.466873 1.786356 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 1.310486 1.346888 0
+ 0.776584 1.189145 0
+ 0.715914 0.788718 0
+ 1.067803 0.934328 0
+ F4 26624 0.000000 5 0
+ -0.509633 1.613839 0
+ -0.461097 1.334754 0
+ 0.060671 1.104206 0
+ 0.206280 1.443961 0
+ -0.060671 1.698778 0
+ F4 26624 0.000000 4 0
+ 1.662376 -0.060671 0
+ 1.031401 -0.206280 0
+ 0.897926 0.109207 0
+ 1.759449 0.157744 0
+ F4 26624 0.000000 4 0
+ 0.400426 -1.613839 0
+ 0.084939 -1.371157 0
+ 0.169878 -0.861523 0
+ 0.364024 -0.934328 0
+ F4 26624 0.000000 3 0
+ 1.480364 -1.213413 0
+ 1.310486 -0.837255 0
+ 1.043535 -1.067803 0
+ F4 26624 0.000000 5 0
+ -1.274084 -0.145610 0
+ -1.104206 -0.024268 0
+ -0.521768 0.121341 0
+ -0.206280 -0.206280 0
+ -0.934328 -0.315487 0
+ F4 26624 0.000000 4 0
+ -1.116340 -1.407559 0
+ -0.776584 -1.322620 0
+ -0.533902 -0.752316 0
+ -0.910060 -0.849389 0
+ L3 26624 0.000000 0.170129 1.871421 0 0.340258 1.616227 0
+ L3 26624 0.000000 1.190904 1.616227 0 0.765581 1.446098 0
+ L3 26624 0.000000 1.361033 2.041550 0 1.105840 1.871421 0
+ L3 26624 0.000000 0.765581 2.211679 0 0.595452 1.871421 0
+ L3 26624 0.000000 -0.340258 2.126615 0 -0.170129 1.871421 0
+ L3 26624 0.000000 -1.020775 1.361033 0 -0.680517 1.361033 0
+ L3 26624 0.000000 -0.765581 0.935710 0 -0.340258 1.105840 0
+ L3 26624 0.000000 -1.020775 0.510387 0 -0.680517 0.255194 0
+ L3 26624 0.000000 -1.531162 0.425323 0 -1.190904 0.255194 0
+ L3 26624 0.000000 -1.956485 0.170129 0 -1.531162 0.000000 0
+ L3 26624 0.000000 -1.361033 -0.425323 0 -1.701292 -0.765581 0
+ L3 26624 0.000000 -1.531162 -1.190904 0 -1.275969 -0.850646 0
+ L3 26624 0.000000 -0.935710 -1.871421 0 -0.680517 -1.531162 0
+ L3 26624 0.000000 -0.340258 -1.531162 0 -0.425323 -2.041550 0
+ L3 26624 0.000000 -0.255194 -0.935710 0 -0.170129 -1.275969 0
+ L3 26624 0.000000 0.595452 -1.531162 0 0.765581 -2.041550 0
+ L3 26624 0.000000 1.020775 -1.446098 0 1.531162 -1.701292 0
+ L3 26624 0.000000 2.296744 -0.595452 0 1.871421 -0.680517 0
+ L3 26624 0.000000 2.296744 -1.361033 0 1.871421 -1.190904 0
+ L3 26624 0.000000 2.466873 -1.020775 0 2.041550 -0.935710 0
+ L3 26624 0.000000 1.020775 -2.466873 0 0.935710 -2.126615 0
+ L3 26624 0.000000 1.531162 -2.211679 0 1.275969 -1.956485 0
+ L3 26624 0.000000 1.190904 -2.296744 0 1.020775 -1.786356 0
+ L3 26624 0.000000 2.551937 0.425323 0 2.041550 0.510387 0
+ L3 26624 0.000000 2.126615 1.105840 0 1.701292 0.850646 0
+ L3 26624 0.000000 2.551937 0.850646 0 2.126615 0.765581 0
+ L3 26624 0.000000 -0.850646 -2.381808 0 -0.765581 -2.041550 0
+ L3 26624 0.000000 -1.871421 -1.190904 0 -1.616227 -1.020775 0
+ L3 26624 0.000000 1.190904 2.722067 0 1.020775 2.296744 0
+ L3 26624 0.000000 1.531162 2.466873 0 1.275969 2.211679 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 8"" Decid-8a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.680517 -3.305367 0 -0.291650 -3.013717 0
+ L3 65280 0.000000 -0.972167 -3.110933 0 -1.069383 -2.624850 0
+ L3 65280 0.000000 -2.235983 -2.041550 0 -1.555467 -2.041550 0
+ L3 65280 0.000000 -2.722067 -1.847117 0 -2.430417 -1.555467 0
+ L3 65280 0.000000 -2.041550 -1.652683 0 -1.652683 -1.361033 0
+ L3 65280 0.000000 -1.847117 -1.069383 0 -2.430417 -0.972167 0
+ L3 65280 0.000000 -3.305367 -0.777733 0 -2.624850 -0.777733 0
+ L3 65280 0.000000 -3.305367 -0.194433 0 -2.722067 -0.486083 0
+ L3 65280 0.000000 -2.235983 0.291650 0 -2.722067 0.194433 0
+ L3 65280 0.000000 -2.624850 0.680517 0 -3.305367 1.069383 0
+ L3 65280 0.000000 -3.013717 1.458250 0 -2.527633 1.555467 0
+ L3 65280 0.000000 -2.333200 2.235983 0 -2.138767 1.944333 0
+ L3 65280 0.000000 -1.458250 2.916500 0 -1.652683 3.208150 0
+ L3 65280 0.000000 -0.874950 3.110933 0 -0.680517 3.402583 0
+ L3 65280 0.000000 -0.097217 2.624850 0 0.000000 2.916500 0
+ L3 65280 0.000000 0.486083 2.624850 0 0.194433 2.819283 0
+ L3 65280 0.000000 1.263817 3.110933 0 1.166600 3.499800 0
+ L3 65280 0.000000 1.847117 2.916500 0 2.138767 3.013717 0
+ L3 65280 0.000000 3.402583 1.361033 0 3.110933 1.458250 0
+ L3 65280 0.000000 2.916500 1.847117 0 3.110933 2.138767 0
+ L3 65280 0.000000 3.402583 -0.291650 0 3.013717 -0.194433 0
+ L3 65280 0.000000 -2.722067 -2.430417 0 -2.527633 -2.041550 0
+ L3 65280 0.000000 -3.110933 -1.847117 0 -2.819283 -2.041550 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 1.386758 0
+ 1.497698 0.956863 0
+ 1.192612 1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 -2.138767 0 0.388867 -1.847117 0
+ L3 26624 0.000000 1.361033 -1.847117 0 0.874950 -1.652683 0
+ L3 26624 0.000000 1.555467 -2.333200 0 1.263817 -2.138767 0
+ L3 26624 0.000000 0.874950 -2.527633 0 0.680517 -2.138767 0
+ L3 26624 0.000000 -0.388867 -2.430417 0 -0.194433 -2.138767 0
+ L3 26624 0.000000 -1.166600 -1.555467 0 -0.777733 -1.555467 0
+ L3 26624 0.000000 -0.874950 -1.069383 0 -0.388867 -1.263817 0
+ L3 26624 0.000000 -1.166600 -0.583300 0 -0.777733 -0.291650 0
+ L3 26624 0.000000 -1.749900 -0.486083 0 -1.361033 -0.291650 0
+ L3 26624 0.000000 -2.235983 -0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 0.486083 0 -1.944333 0.874950 0
+ L3 26624 0.000000 -1.749900 1.361033 0 -1.458250 0.972167 0
+ L3 26624 0.000000 -1.069383 2.138767 0 -0.777733 1.749900 0
+ L3 26624 0.000000 -0.388867 1.749900 0 -0.486083 2.333200 0
+ L3 26624 0.000000 -0.291650 1.069383 0 -0.194433 1.458250 0
+ L3 26624 0.000000 0.680517 1.749900 0 0.874950 2.333200 0
+ L3 26624 0.000000 1.166600 1.652683 0 1.749900 1.944333 0
+ L3 26624 0.000000 2.624850 0.680517 0 2.138767 0.777733 0
+ L3 26624 0.000000 2.624850 1.555467 0 2.138767 1.361033 0
+ L3 26624 0.000000 2.819283 1.166600 0 2.333200 1.069383 0
+ L3 26624 0.000000 1.166600 2.819283 0 1.069383 2.430417 0
+ L3 26624 0.000000 1.749900 2.527633 0 1.458250 2.235983 0
+ L3 26624 0.000000 1.361033 2.624850 0 1.166600 2.041550 0
+ L3 26624 0.000000 2.916500 -0.486083 0 2.333200 -0.583300 0
+ L3 26624 0.000000 2.430417 -1.263817 0 1.944333 -0.972167 0
+ L3 26624 0.000000 2.916500 -0.972167 0 2.430417 -0.874950 0
+ L3 26624 0.000000 -0.972167 2.722067 0 -0.874950 2.333200 0
+ L3 26624 0.000000 -2.138767 1.361033 0 -1.847117 1.166600 0
+ L3 26624 0.000000 1.361033 -3.110933 0 1.166600 -2.624850 0
+ L3 26624 0.000000 1.749900 -2.819283 0 1.458250 -2.527633 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 8"" Decid-8b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.680517 3.305367 0 -0.291650 3.013717 0
+ L3 65280 0.000000 -0.972167 3.110933 0 -1.069383 2.624850 0
+ L3 65280 0.000000 -2.235983 2.041550 0 -1.555467 2.041550 0
+ L3 65280 0.000000 -2.722067 1.847117 0 -2.430417 1.555467 0
+ L3 65280 0.000000 -2.041550 1.652683 0 -1.652683 1.361033 0
+ L3 65280 0.000000 -1.847117 1.069383 0 -2.430417 0.972167 0
+ L3 65280 0.000000 -3.305367 0.777733 0 -2.624850 0.777733 0
+ L3 65280 0.000000 -3.305367 0.194433 0 -2.722067 0.486083 0
+ L3 65280 0.000000 -2.235983 -0.291650 0 -2.722067 -0.194433 0
+ L3 65280 0.000000 -2.624850 -0.680517 0 -3.305367 -1.069383 0
+ L3 65280 0.000000 -3.013717 -1.458250 0 -2.527633 -1.555467 0
+ L3 65280 0.000000 -2.333200 -2.235983 0 -2.138767 -1.944333 0
+ L3 65280 0.000000 -1.458250 -2.916500 0 -1.652683 -3.208150 0
+ L3 65280 0.000000 -0.874950 -3.110933 0 -0.680517 -3.402583 0
+ L3 65280 0.000000 -0.097217 -2.624850 0 0.000000 -2.916500 0
+ L3 65280 0.000000 0.486083 -2.624850 0 0.194433 -2.819283 0
+ L3 65280 0.000000 1.263817 -3.110933 0 1.166600 -3.499800 0
+ L3 65280 0.000000 1.847117 -2.916500 0 2.138767 -3.013717 0
+ L3 65280 0.000000 3.402583 -1.361033 0 3.110933 -1.458250 0
+ L3 65280 0.000000 2.916500 -1.847117 0 3.110933 -2.138767 0
+ L3 65280 0.000000 3.402583 0.291650 0 3.013717 0.194433 0
+ L3 65280 0.000000 -2.722067 2.430417 0 -2.527633 2.041550 0
+ L3 65280 0.000000 -3.110933 1.847117 0 -2.819283 2.041550 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 1.691844 -1.386758 0
+ 1.497698 -0.956863 0
+ 1.192612 -1.220347 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.194433 2.138767 0 0.388867 1.847117 0
+ L3 26624 0.000000 1.361033 1.847117 0 0.874950 1.652683 0
+ L3 26624 0.000000 1.555467 2.333200 0 1.263817 2.138767 0
+ L3 26624 0.000000 0.874950 2.527633 0 0.680517 2.138767 0
+ L3 26624 0.000000 -0.388867 2.430417 0 -0.194433 2.138767 0
+ L3 26624 0.000000 -1.166600 1.555467 0 -0.777733 1.555467 0
+ L3 26624 0.000000 -0.874950 1.069383 0 -0.388867 1.263817 0
+ L3 26624 0.000000 -1.166600 0.583300 0 -0.777733 0.291650 0
+ L3 26624 0.000000 -1.749900 0.486083 0 -1.361033 0.291650 0
+ L3 26624 0.000000 -2.235983 0.194433 0 -1.749900 0.000000 0
+ L3 26624 0.000000 -1.555467 -0.486083 0 -1.944333 -0.874950 0
+ L3 26624 0.000000 -1.749900 -1.361033 0 -1.458250 -0.972167 0
+ L3 26624 0.000000 -1.069383 -2.138767 0 -0.777733 -1.749900 0
+ L3 26624 0.000000 -0.388867 -1.749900 0 -0.486083 -2.333200 0
+ L3 26624 0.000000 -0.291650 -1.069383 0 -0.194433 -1.458250 0
+ L3 26624 0.000000 0.680517 -1.749900 0 0.874950 -2.333200 0
+ L3 26624 0.000000 1.166600 -1.652683 0 1.749900 -1.944333 0
+ L3 26624 0.000000 2.624850 -0.680517 0 2.138767 -0.777733 0
+ L3 26624 0.000000 2.624850 -1.555467 0 2.138767 -1.361033 0
+ L3 26624 0.000000 2.819283 -1.166600 0 2.333200 -1.069383 0
+ L3 26624 0.000000 1.166600 -2.819283 0 1.069383 -2.430417 0
+ L3 26624 0.000000 1.749900 -2.527633 0 1.458250 -2.235983 0
+ L3 26624 0.000000 1.361033 -2.624850 0 1.166600 -2.041550 0
+ L3 26624 0.000000 2.916500 0.486083 0 2.333200 0.583300 0
+ L3 26624 0.000000 2.430417 1.263817 0 1.944333 0.972167 0
+ L3 26624 0.000000 2.916500 0.972167 0 2.430417 0.874950 0
+ L3 26624 0.000000 -0.972167 -2.722067 0 -0.874950 -2.333200 0
+ L3 26624 0.000000 -2.138767 -1.361033 0 -1.847117 -1.166600 0
+ L3 26624 0.000000 1.361033 3.110933 0 1.166600 2.624850 0
+ L3 26624 0.000000 1.749900 2.819283 0 1.458250 2.527633 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 9"" Decid-9a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -2.722255 -2.582533 0
+ -2.336082 -4.042751 0
+ -1.467192 -4.416856 0
+ -0.489691 -3.210065 0
+ 0.632625 -4.259973 0
+ 1.984231 -3.620374 0
+ 1.670466 3.560034 0
+ 0.391267 4.235838 0
+ -0.139721 3.415219 0
+ -1.213766 3.427287 0
+ -1.479260 4.259973 0
+ -3.132564 3.728985 0
+ -2.927409 2.751484 0
+ -4.291084 2.654941 0
+ -4.991023 1.242995 0
+ -4.218676 0.446513 0
+ -5.232381 0.000000 0
+ -4.966887 -1.013705 0
+ -3.892843 -1.399878 0
+ -4.665189 -2.027409 0
+ -4.037657 -3.161793 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -3.765189 -2.027409 0
+ -3.137657 -3.161793 0
+ -1.822255 -2.582533 0
+ -1.436082 -4.042751 0
+ -0.567192 -4.416856 0
+ 0.410309 -3.210065 0
+ 1.532625 -4.259973 0
+ 2.884231 -3.620374 0
+ 2.377379 -2.280836 0
+ 3.994479 -1.834323 0
+ 4.235838 -0.313766 0
+ 3.391084 0.470649 0
+ 4.187566 1.605032 0
+ 3.584170 2.618737 0
+ 2.606669 2.256700 0
+ 2.570466 3.560034 0
+ 1.291267 4.235838 0
+ 0.760279 3.415219 0
+ -0.313766 3.427287 0
+ -0.579260 4.259973 0
+ -2.232564 3.728985 0
+ -2.027409 2.751484 0
+ -3.391084 2.654941 0
+ -4.091023 1.242995 0
+ -3.318676 0.446513 0
+ -4.332381 0.000000 0
+ -4.066887 -1.013705 0
+ -2.992843 -1.399878 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.603396 -2.823892 0
+ 1.448150 -3.668646 0
+ 2.256700 -3.173861 0
+ 1.894662 -1.761915 0
+ 3.511763 -1.315403 0
+ 3.620374 -0.615464 0
+ 2.606669 0.084475 0
+ 3.487627 1.411946 0
+ 3.101454 1.870527 0
+ 2.136021 1.846391 0
+ 2.087749 2.956639 0
+ 1.255063 3.415219 0
+ 0.567192 2.606669 0
+ -0.470649 2.751484 0
+ -0.712007 3.306608 0
+ -1.592965 3.077318 0
+ -1.605032 2.111885 0
+ -2.341175 2.087749 0
+ -2.823892 1.122316 0
+ -1.967070 0.313766 0
+ -2.775620 -0.108611 0
+ -2.642873 -0.687871 0
+ -1.351606 -0.929229 0
+ -1.846391 -1.810187 0
+ -1.037841 -2.437719 0
+ -0.712007 -3.149725 0
+ L3 65280 0.000000 -0.765581 -3.718537 0 -0.328106 -3.390431 0
+ L3 65280 0.000000 -1.093687 -3.499800 0 -1.203056 -2.952956 0
+ L3 65280 0.000000 -2.515481 -2.296744 0 -1.749900 -2.296744 0
+ L3 65280 0.000000 -3.062325 -2.078006 0 -2.734219 -1.749900 0
+ L3 65280 0.000000 -2.296744 -1.859269 0 -1.859269 -1.531162 0
+ L3 65280 0.000000 -2.078006 -1.203056 0 -2.734219 -1.093687 0
+ L3 65280 0.000000 -3.718537 -0.874950 0 -2.952956 -0.874950 0
+ L3 65280 0.000000 -3.718537 -0.218737 0 -3.062325 -0.546844 0
+ L3 65280 0.000000 -2.515481 0.328106 0 -3.062325 0.218737 0
+ L3 65280 0.000000 -2.952956 0.765581 0 -3.718537 1.203056 0
+ L3 65280 0.000000 -3.390431 1.640531 0 -2.843587 1.749900 0
+ L3 65280 0.000000 -2.624850 2.515481 0 -2.406112 2.187375 0
+ L3 65280 0.000000 -1.640531 3.281062 0 -1.859269 3.609169 0
+ L3 65280 0.000000 -0.984319 3.499800 0 -0.765581 3.827906 0
+ L3 65280 0.000000 -0.109369 2.952956 0 0.000000 3.281062 0
+ L3 65280 0.000000 0.546844 2.952956 0 0.218737 3.171694 0
+ L3 65280 0.000000 1.421794 3.499800 0 1.312425 3.937275 0
+ L3 65280 0.000000 2.078006 3.281062 0 2.406112 3.390431 0
+ L3 65280 0.000000 3.827906 1.531162 0 3.499800 1.640531 0
+ L3 65280 0.000000 3.281062 2.078006 0 3.499800 2.406112 0
+ L3 65280 0.000000 3.827906 -0.328106 0 3.390431 -0.218737 0
+ L3 65280 0.000000 -3.062325 -2.734219 0 -2.843587 -2.296744 0
+ L3 65280 0.000000 -3.499800 -2.078006 0 -3.171694 -2.296744 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 1.684911 -1.731714 0
+ 0.998466 -1.528900 0
+ 0.920460 -1.014067 0
+ 1.372890 -1.201279 0
+ F4 26624 0.000000 5 0
+ -0.655243 -2.074936 0
+ -0.592839 -1.716113 0
+ 0.078005 -1.419693 0
+ 0.265217 -1.856522 0
+ -0.078005 -2.184143 0
+ F4 26624 0.000000 4 0
+ 2.137340 0.078005 0
+ 1.326087 0.265217 0
+ 1.154476 -0.140409 0
+ 2.262149 -0.202813 0
+ F4 26624 0.000000 4 0
+ 0.514834 2.074936 0
+ 0.109207 1.762916 0
+ 0.218414 1.107673 0
+ 0.468031 1.201279 0
+ F4 26624 0.000000 3 0
+ 1.903325 1.560102 0
+ 1.684911 1.076471 0
+ 1.341688 1.372890 0
+ F4 26624 0.000000 5 0
+ -1.638108 0.187212 0
+ -1.419693 0.031202 0
+ -0.670844 -0.156010 0
+ -0.265217 0.265217 0
+ -1.201279 0.405627 0
+ F4 26624 0.000000 4 0
+ -1.435294 1.809719 0
+ -0.998466 1.700512 0
+ -0.686445 0.967264 0
+ -1.170077 1.092072 0
+ L3 26624 0.000000 0.218737 -2.406112 0 0.437475 -2.078006 0
+ L3 26624 0.000000 1.531162 -2.078006 0 0.984319 -1.859269 0
+ L3 26624 0.000000 1.749900 -2.624850 0 1.421794 -2.406112 0
+ L3 26624 0.000000 0.984319 -2.843587 0 0.765581 -2.406112 0
+ L3 26624 0.000000 -0.437475 -2.734219 0 -0.218737 -2.406112 0
+ L3 26624 0.000000 -1.312425 -1.749900 0 -0.874950 -1.749900 0
+ L3 26624 0.000000 -0.984319 -1.203056 0 -0.437475 -1.421794 0
+ L3 26624 0.000000 -1.312425 -0.656212 0 -0.874950 -0.328106 0
+ L3 26624 0.000000 -1.968637 -0.546844 0 -1.531162 -0.328106 0
+ L3 26624 0.000000 -2.515481 -0.218737 0 -1.968637 0.000000 0
+ L3 26624 0.000000 -1.749900 0.546844 0 -2.187375 0.984319 0
+ L3 26624 0.000000 -1.968637 1.531162 0 -1.640531 1.093687 0
+ L3 26624 0.000000 -1.203056 2.406112 0 -0.874950 1.968637 0
+ L3 26624 0.000000 -0.437475 1.968637 0 -0.546844 2.624850 0
+ L3 26624 0.000000 -0.328106 1.203056 0 -0.218737 1.640531 0
+ L3 26624 0.000000 0.765581 1.968637 0 0.984319 2.624850 0
+ L3 26624 0.000000 1.312425 1.859269 0 1.968637 2.187375 0
+ L3 26624 0.000000 2.952956 0.765581 0 2.406112 0.874950 0
+ L3 26624 0.000000 2.952956 1.749900 0 2.406112 1.531162 0
+ L3 26624 0.000000 3.171694 1.312425 0 2.624850 1.203056 0
+ L3 26624 0.000000 1.312425 3.171694 0 1.203056 2.734219 0
+ L3 26624 0.000000 1.968637 2.843587 0 1.640531 2.515481 0
+ L3 26624 0.000000 1.531162 2.952956 0 1.312425 2.296744 0
+ L3 26624 0.000000 3.281062 -0.546844 0 2.624850 -0.656212 0
+ L3 26624 0.000000 2.734219 -1.421794 0 2.187375 -1.093687 0
+ L3 26624 0.000000 3.281062 -1.093687 0 2.734219 -0.984319 0
+ L3 26624 0.000000 -1.093687 3.062325 0 -0.984319 2.624850 0
+ L3 26624 0.000000 -2.406112 1.531162 0 -2.078006 1.312425 0
+ L3 26624 0.000000 1.531162 -3.499800 0 1.312425 -2.952956 0
+ L3 26624 0.000000 1.968637 -3.171694 0 1.640531 -2.843587 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 9"" Decid-9b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -2.722255 2.582533 0
+ -2.336082 4.042751 0
+ -1.467192 4.416856 0
+ -0.489691 3.210065 0
+ 0.632625 4.259973 0
+ 1.984231 3.620374 0
+ 1.670466 -3.560034 0
+ 0.391267 -4.235838 0
+ -0.139721 -3.415219 0
+ -1.213766 -3.427287 0
+ -1.479260 -4.259973 0
+ -3.132564 -3.728985 0
+ -2.927409 -2.751484 0
+ -4.291084 -2.654941 0
+ -4.991023 -1.242995 0
+ -4.218676 -0.446513 0
+ -5.232381 0.000000 0
+ -4.966887 1.013705 0
+ -3.892843 1.399878 0
+ -4.665189 2.027409 0
+ -4.037657 3.161793 0
+# Layer: XTRKCAD2
+ F4 26624 0.000000 28 0
+ -3.765189 2.027409 0
+ -3.137657 3.161793 0
+ -1.822255 2.582533 0
+ -1.436082 4.042751 0
+ -0.567192 4.416856 0
+ 0.410309 3.210065 0
+ 1.532625 4.259973 0
+ 2.884231 3.620374 0
+ 2.377379 2.280836 0
+ 3.994479 1.834323 0
+ 4.235838 0.313766 0
+ 3.391084 -0.470649 0
+ 4.187566 -1.605032 0
+ 3.584170 -2.618737 0
+ 2.606669 -2.256700 0
+ 2.570466 -3.560034 0
+ 1.291267 -4.235838 0
+ 0.760279 -3.415219 0
+ -0.313766 -3.427287 0
+ -0.579260 -4.259973 0
+ -2.232564 -3.728985 0
+ -2.027409 -2.751484 0
+ -3.391084 -2.654941 0
+ -4.091023 -1.242995 0
+ -3.318676 -0.446513 0
+ -4.332381 0.000000 0
+ -4.066887 1.013705 0
+ -2.992843 1.399878 0
+# Layer: XTRKCAD3
+ F4 65280 0.000000 26 0
+ 0.603396 2.823892 0
+ 1.448150 3.668646 0
+ 2.256700 3.173861 0
+ 1.894662 1.761915 0
+ 3.511763 1.315403 0
+ 3.620374 0.615464 0
+ 2.606669 -0.084475 0
+ 3.487627 -1.411946 0
+ 3.101454 -1.870527 0
+ 2.136021 -1.846391 0
+ 2.087749 -2.956639 0
+ 1.255063 -3.415219 0
+ 0.567192 -2.606669 0
+ -0.470649 -2.751484 0
+ -0.712007 -3.306608 0
+ -1.592965 -3.077318 0
+ -1.605032 -2.111885 0
+ -2.341175 -2.087749 0
+ -2.823892 -1.122316 0
+ -1.967070 -0.313766 0
+ -2.775620 0.108611 0
+ -2.642873 0.687871 0
+ -1.351606 0.929229 0
+ -1.846391 1.810187 0
+ -1.037841 2.437719 0
+ -0.712007 3.149725 0
+ L3 65280 0.000000 -0.765581 3.718537 0 -0.328106 3.390431 0
+ L3 65280 0.000000 -1.093687 3.499800 0 -1.203056 2.952956 0
+ L3 65280 0.000000 -2.515481 2.296744 0 -1.749900 2.296744 0
+ L3 65280 0.000000 -3.062325 2.078006 0 -2.734219 1.749900 0
+ L3 65280 0.000000 -2.296744 1.859269 0 -1.859269 1.531162 0
+ L3 65280 0.000000 -2.078006 1.203056 0 -2.734219 1.093687 0
+ L3 65280 0.000000 -3.718537 0.874950 0 -2.952956 0.874950 0
+ L3 65280 0.000000 -3.718537 0.218737 0 -3.062325 0.546844 0
+ L3 65280 0.000000 -2.515481 -0.328106 0 -3.062325 -0.218737 0
+ L3 65280 0.000000 -2.952956 -0.765581 0 -3.718537 -1.203056 0
+ L3 65280 0.000000 -3.390431 -1.640531 0 -2.843587 -1.749900 0
+ L3 65280 0.000000 -2.624850 -2.515481 0 -2.406112 -2.187375 0
+ L3 65280 0.000000 -1.640531 -3.281062 0 -1.859269 -3.609169 0
+ L3 65280 0.000000 -0.984319 -3.499800 0 -0.765581 -3.827906 0
+ L3 65280 0.000000 -0.109369 -2.952956 0 0.000000 -3.281062 0
+ L3 65280 0.000000 0.546844 -2.952956 0 0.218737 -3.171694 0
+ L3 65280 0.000000 1.421794 -3.499800 0 1.312425 -3.937275 0
+ L3 65280 0.000000 2.078006 -3.281062 0 2.406112 -3.390431 0
+ L3 65280 0.000000 3.827906 -1.531162 0 3.499800 -1.640531 0
+ L3 65280 0.000000 3.281062 -2.078006 0 3.499800 -2.406112 0
+ L3 65280 0.000000 3.827906 0.328106 0 3.390431 0.218737 0
+ L3 65280 0.000000 -3.062325 2.734219 0 -2.843587 2.296744 0
+ L3 65280 0.000000 -3.499800 2.078006 0 -3.171694 2.296744 0
+# Layer: XTRKCAD4
+ F4 26624 0.000000 4 0
+ 1.684911 1.731714 0
+ 0.998466 1.528900 0
+ 0.920460 1.014067 0
+ 1.372890 1.201279 0
+ F4 26624 0.000000 5 0
+ -0.655243 2.074936 0
+ -0.592839 1.716113 0
+ 0.078005 1.419693 0
+ 0.265217 1.856522 0
+ -0.078005 2.184143 0
+ F4 26624 0.000000 4 0
+ 2.137340 -0.078005 0
+ 1.326087 -0.265217 0
+ 1.154476 0.140409 0
+ 2.262149 0.202813 0
+ F4 26624 0.000000 4 0
+ 0.514834 -2.074936 0
+ 0.109207 -1.762916 0
+ 0.218414 -1.107673 0
+ 0.468031 -1.201279 0
+ F4 26624 0.000000 3 0
+ 1.903325 -1.560102 0
+ 1.684911 -1.076471 0
+ 1.341688 -1.372890 0
+ F4 26624 0.000000 5 0
+ -1.638108 -0.187212 0
+ -1.419693 -0.031202 0
+ -0.670844 0.156010 0
+ -0.265217 -0.265217 0
+ -1.201279 -0.405627 0
+ F4 26624 0.000000 4 0
+ -1.435294 -1.809719 0
+ -0.998466 -1.700512 0
+ -0.686445 -0.967264 0
+ -1.170077 -1.092072 0
+ L3 26624 0.000000 0.218737 2.406112 0 0.437475 2.078006 0
+ L3 26624 0.000000 1.531162 2.078006 0 0.984319 1.859269 0
+ L3 26624 0.000000 1.749900 2.624850 0 1.421794 2.406112 0
+ L3 26624 0.000000 0.984319 2.843587 0 0.765581 2.406112 0
+ L3 26624 0.000000 -0.437475 2.734219 0 -0.218737 2.406112 0
+ L3 26624 0.000000 -1.312425 1.749900 0 -0.874950 1.749900 0
+ L3 26624 0.000000 -0.984319 1.203056 0 -0.437475 1.421794 0
+ L3 26624 0.000000 -1.312425 0.656212 0 -0.874950 0.328106 0
+ L3 26624 0.000000 -1.968637 0.546844 0 -1.531162 0.328106 0
+ L3 26624 0.000000 -2.515481 0.218737 0 -1.968637 0.000000 0
+ L3 26624 0.000000 -1.749900 -0.546844 0 -2.187375 -0.984319 0
+ L3 26624 0.000000 -1.968637 -1.531162 0 -1.640531 -1.093687 0
+ L3 26624 0.000000 -1.203056 -2.406112 0 -0.874950 -1.968637 0
+ L3 26624 0.000000 -0.437475 -1.968637 0 -0.546844 -2.624850 0
+ L3 26624 0.000000 -0.328106 -1.203056 0 -0.218737 -1.640531 0
+ L3 26624 0.000000 0.765581 -1.968637 0 0.984319 -2.624850 0
+ L3 26624 0.000000 1.312425 -1.859269 0 1.968637 -2.187375 0
+ L3 26624 0.000000 2.952956 -0.765581 0 2.406112 -0.874950 0
+ L3 26624 0.000000 2.952956 -1.749900 0 2.406112 -1.531162 0
+ L3 26624 0.000000 3.171694 -1.312425 0 2.624850 -1.203056 0
+ L3 26624 0.000000 1.312425 -3.171694 0 1.203056 -2.734219 0
+ L3 26624 0.000000 1.968637 -2.843587 0 1.640531 -2.515481 0
+ L3 26624 0.000000 1.531162 -2.952956 0 1.312425 -2.296744 0
+ L3 26624 0.000000 3.281062 0.546844 0 2.624850 0.656212 0
+ L3 26624 0.000000 2.734219 1.421794 0 2.187375 1.093687 0
+ L3 26624 0.000000 3.281062 1.093687 0 2.734219 0.984319 0
+ L3 26624 0.000000 -1.093687 -3.062325 0 -0.984319 -2.624850 0
+ L3 26624 0.000000 -2.406112 -1.531162 0 -2.078006 -1.312425 0
+ L3 26624 0.000000 1.531162 3.499800 0 1.312425 2.952956 0
+ L3 26624 0.000000 1.968637 3.171694 0 1.640531 2.843587 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 10"" Decid-10a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.850646 -4.131708 0 -0.364562 -3.767146 0
+ L3 65280 0.000000 -1.215208 -3.888667 0 -1.336729 -3.281062 0
+ L3 65280 0.000000 -2.794979 -2.551937 0 -1.944333 -2.551937 0
+ L3 65280 0.000000 -3.402583 -2.308896 0 -3.038021 -1.944333 0
+ L3 65280 0.000000 -2.551937 -2.065854 0 -2.065854 -1.701292 0
+ L3 65280 0.000000 -2.308896 -1.336729 0 -3.038021 -1.215208 0
+ L3 65280 0.000000 -4.131708 -0.972167 0 -3.281062 -0.972167 0
+ L3 65280 0.000000 -4.131708 -0.243042 0 -3.402583 -0.607604 0
+ L3 65280 0.000000 -2.794979 0.364562 0 -3.402583 0.243042 0
+ L3 65280 0.000000 -3.281062 0.850646 0 -4.131708 1.336729 0
+ L3 65280 0.000000 -3.767146 1.822812 0 -3.159542 1.944333 0
+ L3 65280 0.000000 -2.916500 2.794979 0 -2.673458 2.430417 0
+ L3 65280 0.000000 -1.822812 3.645625 0 -2.065854 4.010187 0
+ L3 65280 0.000000 -1.093687 3.888667 0 -0.850646 4.253229 0
+ L3 65280 0.000000 -0.121521 3.281062 0 0.000000 3.645625 0
+ L3 65280 0.000000 0.607604 3.281062 0 0.243042 3.524104 0
+ L3 65280 0.000000 1.579771 3.888667 0 1.458250 4.374750 0
+ L3 65280 0.000000 2.308896 3.645625 0 2.673458 3.767146 0
+ L3 65280 0.000000 4.253229 1.701292 0 3.888667 1.822812 0
+ L3 65280 0.000000 3.645625 2.308896 0 3.888667 2.673458 0
+ L3 65280 0.000000 4.253229 -0.364562 0 3.767146 -0.243042 0
+ L3 65280 0.000000 -3.402583 -3.038021 0 -3.159542 -2.551937 0
+ L3 65280 0.000000 -3.888667 -2.308896 0 -3.524104 -2.551937 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.114806 1.733447 0
+ 1.872123 1.196079 0
+ 1.490765 1.525433 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.243042 -2.673458 0 0.486083 -2.308896 0
+ L3 26624 0.000000 1.701292 -2.308896 0 1.093687 -2.065854 0
+ L3 26624 0.000000 1.944333 -2.916500 0 1.579771 -2.673458 0
+ L3 26624 0.000000 1.093687 -3.159542 0 0.850646 -2.673458 0
+ L3 26624 0.000000 -0.486083 -3.038021 0 -0.243042 -2.673458 0
+ L3 26624 0.000000 -1.458250 -1.944333 0 -0.972167 -1.944333 0
+ L3 26624 0.000000 -1.093687 -1.336729 0 -0.486083 -1.579771 0
+ L3 26624 0.000000 -1.458250 -0.729125 0 -0.972167 -0.364562 0
+ L3 26624 0.000000 -2.187375 -0.607604 0 -1.701292 -0.364562 0
+ L3 26624 0.000000 -2.794979 -0.243042 0 -2.187375 0.000000 0
+ L3 26624 0.000000 -1.944333 0.607604 0 -2.430417 1.093687 0
+ L3 26624 0.000000 -2.187375 1.701292 0 -1.822812 1.215208 0
+ L3 26624 0.000000 -1.336729 2.673458 0 -0.972167 2.187375 0
+ L3 26624 0.000000 -0.486083 2.187375 0 -0.607604 2.916500 0
+ L3 26624 0.000000 -0.364562 1.336729 0 -0.243042 1.822812 0
+ L3 26624 0.000000 0.850646 2.187375 0 1.093687 2.916500 0
+ L3 26624 0.000000 1.458250 2.065854 0 2.187375 2.430417 0
+ L3 26624 0.000000 3.281062 0.850646 0 2.673458 0.972167 0
+ L3 26624 0.000000 3.281062 1.944333 0 2.673458 1.701292 0
+ L3 26624 0.000000 3.524104 1.458250 0 2.916500 1.336729 0
+ L3 26624 0.000000 1.458250 3.524104 0 1.336729 3.038021 0
+ L3 26624 0.000000 2.187375 3.159542 0 1.822812 2.794979 0
+ L3 26624 0.000000 1.701292 3.281062 0 1.458250 2.551937 0
+ L3 26624 0.000000 3.645625 -0.607604 0 2.916500 -0.729125 0
+ L3 26624 0.000000 3.038021 -1.579771 0 2.430417 -1.215208 0
+ L3 26624 0.000000 3.645625 -1.215208 0 3.038021 -1.093687 0
+ L3 26624 0.000000 -1.215208 3.402583 0 -1.093687 2.916500 0
+ L3 26624 0.000000 -2.673458 1.701292 0 -2.308896 1.458250 0
+ L3 26624 0.000000 1.701292 -3.888667 0 1.458250 -3.281062 0
+ L3 26624 0.000000 2.187375 -3.524104 0 1.822812 -3.159542 0
+ END$SEGS
+
+STRUCTURE * "Sm Decid 10"" Decid-10b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 26624 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
+# Layer: XTRKCAD3
+ F4 65280 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 65280 0.000000 -0.850646 4.131708 0 -0.364562 3.767146 0
+ L3 65280 0.000000 -1.215208 3.888667 0 -1.336729 3.281062 0
+ L3 65280 0.000000 -2.794979 2.551937 0 -1.944333 2.551937 0
+ L3 65280 0.000000 -3.402583 2.308896 0 -3.038021 1.944333 0
+ L3 65280 0.000000 -2.551937 2.065854 0 -2.065854 1.701292 0
+ L3 65280 0.000000 -2.308896 1.336729 0 -3.038021 1.215208 0
+ L3 65280 0.000000 -4.131708 0.972167 0 -3.281062 0.972167 0
+ L3 65280 0.000000 -4.131708 0.243042 0 -3.402583 0.607604 0
+ L3 65280 0.000000 -2.794979 -0.364562 0 -3.402583 -0.243042 0
+ L3 65280 0.000000 -3.281062 -0.850646 0 -4.131708 -1.336729 0
+ L3 65280 0.000000 -3.767146 -1.822812 0 -3.159542 -1.944333 0
+ L3 65280 0.000000 -2.916500 -2.794979 0 -2.673458 -2.430417 0
+ L3 65280 0.000000 -1.822812 -3.645625 0 -2.065854 -4.010187 0
+ L3 65280 0.000000 -1.093687 -3.888667 0 -0.850646 -4.253229 0
+ L3 65280 0.000000 -0.121521 -3.281062 0 0.000000 -3.645625 0
+ L3 65280 0.000000 0.607604 -3.281062 0 0.243042 -3.524104 0
+ L3 65280 0.000000 1.579771 -3.888667 0 1.458250 -4.374750 0
+ L3 65280 0.000000 2.308896 -3.645625 0 2.673458 -3.767146 0
+ L3 65280 0.000000 4.253229 -1.701292 0 3.888667 -1.822812 0
+ L3 65280 0.000000 3.645625 -2.308896 0 3.888667 -2.673458 0
+ L3 65280 0.000000 4.253229 0.364562 0 3.767146 0.243042 0
+ L3 65280 0.000000 -3.402583 3.038021 0 -3.159542 2.551937 0
+ L3 65280 0.000000 -3.888667 2.308896 0 -3.524104 2.551937 0
+# Layer: XTRKCAD4
+ F4 26624 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 26624 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 26624 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 26624 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 26624 0.000000 3 0
+ 2.114806 -1.733447 0
+ 1.872123 -1.196079 0
+ 1.490765 -1.525433 0
+ F4 26624 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
+ F4 26624 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 26624 0.000000 0.243042 2.673458 0 0.486083 2.308896 0
+ L3 26624 0.000000 1.701292 2.308896 0 1.093687 2.065854 0
+ L3 26624 0.000000 1.944333 2.916500 0 1.579771 2.673458 0
+ L3 26624 0.000000 1.093687 3.159542 0 0.850646 2.673458 0
+ L3 26624 0.000000 -0.486083 3.038021 0 -0.243042 2.673458 0
+ L3 26624 0.000000 -1.458250 1.944333 0 -0.972167 1.944333 0
+ L3 26624 0.000000 -1.093687 1.336729 0 -0.486083 1.579771 0
+ L3 26624 0.000000 -1.458250 0.729125 0 -0.972167 0.364562 0
+ L3 26624 0.000000 -2.187375 0.607604 0 -1.701292 0.364562 0
+ L3 26624 0.000000 -2.794979 0.243042 0 -2.187375 0.000000 0
+ L3 26624 0.000000 -1.944333 -0.607604 0 -2.430417 -1.093687 0
+ L3 26624 0.000000 -2.187375 -1.701292 0 -1.822812 -1.215208 0
+ L3 26624 0.000000 -1.336729 -2.673458 0 -0.972167 -2.187375 0
+ L3 26624 0.000000 -0.486083 -2.187375 0 -0.607604 -2.916500 0
+ L3 26624 0.000000 -0.364562 -1.336729 0 -0.243042 -1.822812 0
+ L3 26624 0.000000 0.850646 -2.187375 0 1.093687 -2.916500 0
+ L3 26624 0.000000 1.458250 -2.065854 0 2.187375 -2.430417 0
+ L3 26624 0.000000 3.281062 -0.850646 0 2.673458 -0.972167 0
+ L3 26624 0.000000 3.281062 -1.944333 0 2.673458 -1.701292 0
+ L3 26624 0.000000 3.524104 -1.458250 0 2.916500 -1.336729 0
+ L3 26624 0.000000 1.458250 -3.524104 0 1.336729 -3.038021 0
+ L3 26624 0.000000 2.187375 -3.159542 0 1.822812 -2.794979 0
+ L3 26624 0.000000 1.701292 -3.281062 0 1.458250 -2.551937 0
+ L3 26624 0.000000 3.645625 0.607604 0 2.916500 0.729125 0
+ L3 26624 0.000000 3.038021 1.579771 0 2.430417 1.215208 0
+ L3 26624 0.000000 3.645625 1.215208 0 3.038021 1.093687 0
+ L3 26624 0.000000 -1.215208 -3.402583 0 -1.093687 -2.916500 0
+ L3 26624 0.000000 -2.673458 -1.701292 0 -2.308896 -1.458250 0
+ L3 26624 0.000000 1.701292 3.888667 0 1.458250 3.281062 0
+ L3 26624 0.000000 2.187375 3.524104 0 1.822812 3.159542 0
+ END$SEGS
+
diff --git a/app/lib/params/TreeSmFall.xtp b/app/lib/params/TreeSmFall.xtp
new file mode 100644
index 0000000..3f3b6bb
--- /dev/null
+++ b/app/lib/params/TreeSmFall.xtp
@@ -0,0 +1,3483 @@
+CONTENTS Small Fall Trees
+
+# DxfToXtp version 0.6 by Russell Shilling 2021
+STRUCTURE * "Sm Fall 1"" Fall-1a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.302473 -0.286948 0
+ -0.259565 -0.449195 0
+ -0.163021 -0.490762 0
+ -0.054410 -0.356674 0
+ 0.070292 -0.473330 0
+ 0.220470 -0.402264 0
+ 0.185607 0.395559 0
+ 0.043474 0.470649 0
+ -0.015525 0.379469 0
+ -0.134863 0.380810 0
+ -0.164362 0.473330 0
+ -0.348063 0.414332 0
+ -0.325268 0.305720 0
+ -0.476787 0.294993 0
+ -0.554558 0.138111 0
+ -0.468742 0.049613 0
+ -0.581376 0.000000 0
+ -0.551876 -0.112634 0
+ -0.432538 -0.155542 0
+ -0.518354 -0.225268 0
+ -0.448629 -0.351310 0
+# Layer: XTRKCAD2
+ F4 6842368 0.000000 28 0
+ -0.418354 -0.225268 0
+ -0.348629 -0.351310 0
+ -0.202473 -0.286948 0
+ -0.159565 -0.449195 0
+ -0.063021 -0.490762 0
+ 0.045590 -0.356674 0
+ 0.170292 -0.473330 0
+ 0.320470 -0.402264 0
+ 0.264153 -0.253426 0
+ 0.443831 -0.203814 0
+ 0.470649 -0.034863 0
+ 0.376787 0.052294 0
+ 0.465285 0.178337 0
+ 0.398241 0.290971 0
+ 0.289630 0.250744 0
+ 0.285607 0.395559 0
+ 0.143474 0.470649 0
+ 0.084475 0.379469 0
+ -0.034863 0.380810 0
+ -0.064362 0.473330 0
+ -0.248063 0.414332 0
+ -0.225268 0.305720 0
+ -0.376787 0.294993 0
+ -0.454558 0.138111 0
+ -0.368742 0.049613 0
+ -0.481376 0.000000 0
+ -0.451876 -0.112634 0
+ -0.332538 -0.155542 0
+# Layer: XTRKCAD3
+ F4 12434688 0.000000 26 0
+ 0.067044 -0.313766 0
+ 0.160906 -0.407627 0
+ 0.250744 -0.352651 0
+ 0.210518 -0.195768 0
+ 0.390196 -0.146156 0
+ 0.402264 -0.068385 0
+ 0.289630 0.009386 0
+ 0.387514 0.156883 0
+ 0.344606 0.207836 0
+ 0.237336 0.205155 0
+ 0.231972 0.328515 0
+ 0.139451 0.379469 0
+ 0.063021 0.289630 0
+ -0.052294 0.305720 0
+ -0.079112 0.367401 0
+ -0.176996 0.341924 0
+ -0.178337 0.234654 0
+ -0.260131 0.231972 0
+ -0.313766 0.124702 0
+ -0.218563 0.034863 0
+ -0.308402 -0.012068 0
+ -0.293653 -0.076430 0
+ -0.150178 -0.103248 0
+ -0.205155 -0.201132 0
+ -0.115316 -0.270858 0
+ -0.079112 -0.349969 0
+ L3 12434688 0.000000 -0.121521 -0.388867 0 -0.133673 -0.328106 0
+ L3 12434688 0.000000 -0.255194 -0.206585 0 -0.206585 -0.170129 0
+ L3 12434688 0.000000 -0.413171 -0.024304 0 -0.340258 -0.060760 0
+ L3 12434688 0.000000 -0.279498 0.036456 0 -0.340258 0.024304 0
+ L3 12434688 0.000000 -0.376715 0.182281 0 -0.315954 0.194433 0
+ L3 12434688 0.000000 -0.182281 0.364562 0 -0.206585 0.401019 0
+ L3 12434688 0.000000 0.060760 0.328106 0 0.024304 0.352410 0
+ L3 12434688 0.000000 0.230890 0.364562 0 0.267346 0.376715 0
+ L3 12434688 0.000000 0.425323 0.170129 0 0.388867 0.182281 0
+ L3 12434688 0.000000 -0.340258 -0.303802 0 -0.315954 -0.255194 0
+ L3 12434688 0.000000 -0.388867 -0.230890 0 -0.352410 -0.255194 0
+ L3 16755200 0.000000 -0.085065 -0.413171 0 -0.036456 -0.376715 0
+ L3 16755200 0.000000 -0.279498 -0.255194 0 -0.194433 -0.255194 0
+ L3 16755200 0.000000 -0.340258 -0.230890 0 -0.303802 -0.194433 0
+ L3 16755200 0.000000 -0.230890 -0.133673 0 -0.303802 -0.121521 0
+ L3 16755200 0.000000 -0.413171 -0.097217 0 -0.328106 -0.097217 0
+ L3 16755200 0.000000 -0.328106 0.085065 0 -0.413171 0.133673 0
+ L3 16755200 0.000000 -0.291650 0.279498 0 -0.267346 0.243042 0
+ L3 16755200 0.000000 -0.109369 0.388867 0 -0.085065 0.425323 0
+ L3 16755200 0.000000 -0.012152 0.328106 0 0.000000 0.364562 0
+ L3 16755200 0.000000 0.157977 0.388867 0 0.145825 0.437475 0
+ L3 16755200 0.000000 0.364562 0.230890 0 0.388867 0.267346 0
+ L3 16755200 0.000000 0.425323 -0.036456 0 0.376715 -0.024304 0
+# Layer: XTRKCAD4
+ F4 6842368 0.000000 4 0
+ 0.187212 -0.192413 0
+ 0.110941 -0.169878 0
+ 0.102273 -0.112674 0
+ 0.152543 -0.133475 0
+ F4 6842368 0.000000 4 0
+ 0.237482 0.008667 0
+ 0.147343 0.029469 0
+ 0.128275 -0.015601 0
+ 0.251350 -0.022535 0
+ F4 6842368 0.000000 4 0
+ 0.057204 0.230548 0
+ 0.012134 0.195880 0
+ 0.024268 0.123075 0
+ 0.052003 0.133475 0
+ F4 6842368 0.000000 5 0
+ -0.182012 0.020801 0
+ -0.157744 0.003467 0
+ -0.074538 -0.017334 0
+ -0.029469 0.029469 0
+ -0.133475 0.045070 0
+ L3 6842368 0.000000 0.024304 -0.267346 0 0.048608 -0.230890 0
+ L3 6842368 0.000000 0.170129 -0.230890 0 0.109369 -0.206585 0
+ L3 6842368 0.000000 0.194433 -0.291650 0 0.157977 -0.267346 0
+ L3 6842368 0.000000 0.109369 -0.315954 0 0.085065 -0.267346 0
+ L3 6842368 0.000000 -0.048608 -0.303802 0 -0.024304 -0.267346 0
+ L3 6842368 0.000000 -0.145825 -0.194433 0 -0.097217 -0.194433 0
+ L3 6842368 0.000000 -0.109369 -0.133673 0 -0.048608 -0.157977 0
+ L3 6842368 0.000000 -0.145825 -0.072912 0 -0.097217 -0.036456 0
+ L3 6842368 0.000000 -0.218737 -0.060760 0 -0.170129 -0.036456 0
+ L3 6842368 0.000000 -0.279498 -0.024304 0 -0.218737 0.000000 0
+ L3 6842368 0.000000 -0.194433 0.060760 0 -0.243042 0.109369 0
+ L3 6842368 0.000000 -0.218737 0.170129 0 -0.182281 0.121521 0
+ L3 6842368 0.000000 -0.133673 0.267346 0 -0.097217 0.218737 0
+ L3 6842368 0.000000 -0.048608 0.218737 0 -0.060760 0.291650 0
+ L3 6842368 0.000000 -0.036456 0.133673 0 -0.024304 0.182281 0
+ L3 6842368 0.000000 0.085065 0.218737 0 0.109369 0.291650 0
+ L3 6842368 0.000000 0.145825 0.206585 0 0.218737 0.243042 0
+ L3 6842368 0.000000 0.328106 0.085065 0 0.267346 0.097217 0
+ L3 6842368 0.000000 0.328106 0.194433 0 0.267346 0.170129 0
+ L3 6842368 0.000000 0.352410 0.145825 0 0.291650 0.133673 0
+ L3 6842368 0.000000 0.145825 0.352410 0 0.133673 0.303802 0
+ L3 6842368 0.000000 0.218737 0.315954 0 0.182281 0.279498 0
+ L3 6842368 0.000000 0.170129 0.328106 0 0.145825 0.255194 0
+ L3 6842368 0.000000 0.364562 -0.060760 0 0.291650 -0.072912 0
+ L3 6842368 0.000000 0.303802 -0.157977 0 0.243042 -0.121521 0
+ L3 6842368 0.000000 0.364562 -0.121521 0 0.303802 -0.109369 0
+ L3 6842368 0.000000 -0.121521 0.340258 0 -0.109369 0.291650 0
+ L3 6842368 0.000000 -0.267346 0.170129 0 -0.230890 0.145825 0
+ L3 6842368 0.000000 0.170129 -0.388867 0 0.145825 -0.328106 0
+ L3 6842368 0.000000 0.218737 -0.352410 0 0.182281 -0.315954 0
+ F4 16755200 0.000000 5 0
+ -0.072805 -0.230548 0
+ -0.065871 -0.190679 0
+ 0.008667 -0.157744 0
+ 0.029469 -0.206280 0
+ -0.008667 -0.242683 0
+ F4 16755200 0.000000 3 0
+ 0.211481 0.173345 0
+ 0.187212 0.119608 0
+ 0.149076 0.152543 0
+ F4 16755200 0.000000 4 0
+ -0.159477 0.201080 0
+ -0.110941 0.188946 0
+ -0.076272 0.107474 0
+ -0.130009 0.121341 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 1"" Fall-1b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.302473 0.286948 0
+ -0.259565 0.449195 0
+ -0.163021 0.490762 0
+ -0.054410 0.356674 0
+ 0.070292 0.473330 0
+ 0.220470 0.402264 0
+ 0.185607 -0.395559 0
+ 0.043474 -0.470649 0
+ -0.015525 -0.379469 0
+ -0.134863 -0.380810 0
+ -0.164362 -0.473330 0
+ -0.348063 -0.414332 0
+ -0.325268 -0.305720 0
+ -0.476787 -0.294993 0
+ -0.554558 -0.138111 0
+ -0.468742 -0.049613 0
+ -0.581376 0.000000 0
+ -0.551876 0.112634 0
+ -0.432538 0.155542 0
+ -0.518354 0.225268 0
+ -0.448629 0.351310 0
+# Layer: XTRKCAD2
+ F4 6815744 0.000000 28 0
+ -0.418354 0.225268 0
+ -0.348629 0.351310 0
+ -0.202473 0.286948 0
+ -0.159565 0.449195 0
+ -0.063021 0.490762 0
+ 0.045590 0.356674 0
+ 0.170292 0.473330 0
+ 0.320470 0.402264 0
+ 0.264153 0.253426 0
+ 0.443831 0.203814 0
+ 0.470649 0.034863 0
+ 0.376787 -0.052294 0
+ 0.465285 -0.178337 0
+ 0.398241 -0.290971 0
+ 0.289630 -0.250744 0
+ 0.285607 -0.395559 0
+ 0.143474 -0.470649 0
+ 0.084475 -0.379469 0
+ -0.034863 -0.380810 0
+ -0.064362 -0.473330 0
+ -0.248063 -0.414332 0
+ -0.225268 -0.305720 0
+ -0.376787 -0.294993 0
+ -0.454558 -0.138111 0
+ -0.368742 -0.049613 0
+ -0.481376 0.000000 0
+ -0.451876 0.112634 0
+ -0.332538 0.155542 0
+# Layer: XTRKCAD3
+ F4 12410368 0.000000 26 0
+ 0.067044 0.313766 0
+ 0.160906 0.407627 0
+ 0.250744 0.352651 0
+ 0.210518 0.195768 0
+ 0.390196 0.146156 0
+ 0.402264 0.068385 0
+ 0.289630 -0.009386 0
+ 0.387514 -0.156883 0
+ 0.344606 -0.207836 0
+ 0.237336 -0.205155 0
+ 0.231972 -0.328515 0
+ 0.139451 -0.379469 0
+ 0.063021 -0.289630 0
+ -0.052294 -0.305720 0
+ -0.079112 -0.367401 0
+ -0.176996 -0.341924 0
+ -0.178337 -0.234654 0
+ -0.260131 -0.231972 0
+ -0.313766 -0.124702 0
+ -0.218563 -0.034863 0
+ -0.308402 0.012068 0
+ -0.293653 0.076430 0
+ -0.150178 0.103248 0
+ -0.205155 0.201132 0
+ -0.115316 0.270858 0
+ -0.079112 0.349969 0
+ L3 12410368 0.000000 -0.085065 0.413171 0 -0.036456 0.376715 0
+ L3 12410368 0.000000 -0.340258 0.230890 0 -0.303802 0.194433 0
+ L3 12410368 0.000000 -0.255194 0.206585 0 -0.206585 0.170129 0
+ L3 12410368 0.000000 -0.413171 0.097217 0 -0.328106 0.097217 0
+ L3 12410368 0.000000 -0.279498 -0.036456 0 -0.340258 -0.024304 0
+ L3 12410368 0.000000 -0.376715 -0.182281 0 -0.315954 -0.194433 0
+ L3 12410368 0.000000 -0.182281 -0.364562 0 -0.206585 -0.401019 0
+ L3 12410368 0.000000 -0.012152 -0.328106 0 0.000000 -0.364562 0
+ L3 12410368 0.000000 0.157977 -0.388867 0 0.145825 -0.437475 0
+ L3 12410368 0.000000 0.364562 -0.230890 0 0.388867 -0.267346 0
+ L3 12410368 0.000000 -0.340258 0.303802 0 -0.315954 0.255194 0
+ L3 14915328 0.000000 -0.388867 0.230890 0 -0.352410 0.255194 0
+ L3 16755200 0.000000 0.425323 0.036456 0 0.376715 0.024304 0
+ L3 16755200 0.000000 -0.121521 0.388867 0 -0.133673 0.328106 0
+ L3 16755200 0.000000 -0.279498 0.255194 0 -0.194433 0.255194 0
+ L3 16755200 0.000000 -0.230890 0.133673 0 -0.303802 0.121521 0
+ L3 16755200 0.000000 -0.413171 0.024304 0 -0.340258 0.060760 0
+ L3 16755200 0.000000 -0.328106 -0.085065 0 -0.413171 -0.133673 0
+ L3 16755200 0.000000 -0.291650 -0.279498 0 -0.267346 -0.243042 0
+ L3 16755200 0.000000 -0.109369 -0.388867 0 -0.085065 -0.425323 0
+ L3 16755200 0.000000 0.060760 -0.328106 0 0.024304 -0.352410 0
+ L3 16755200 0.000000 0.230890 -0.364562 0 0.267346 -0.376715 0
+ L3 16755200 0.000000 0.425323 -0.170129 0 0.388867 -0.182281 0
+# Layer: XTRKCAD4
+ F4 6815744 0.000000 5 0
+ -0.072805 0.230548 0
+ -0.065871 0.190679 0
+ 0.008667 0.157744 0
+ 0.029469 0.206280 0
+ -0.008667 0.242683 0
+ F4 6815744 0.000000 4 0
+ 0.237482 -0.008667 0
+ 0.147343 -0.029469 0
+ 0.128275 0.015601 0
+ 0.251350 0.022535 0
+ F4 6815744 0.000000 4 0
+ 0.057204 -0.230548 0
+ 0.012134 -0.195880 0
+ 0.024268 -0.123075 0
+ 0.052003 -0.133475 0
+ F4 6815744 0.000000 5 0
+ -0.182012 -0.020801 0
+ -0.157744 -0.003467 0
+ -0.074538 0.017334 0
+ -0.029469 -0.029469 0
+ -0.133475 -0.045070 0
+ L3 6815744 0.000000 0.170129 0.230890 0 0.109369 0.206585 0
+ L3 6815744 0.000000 0.109369 0.315954 0 0.085065 0.267346 0
+ L3 6815744 0.000000 -0.048608 0.303802 0 -0.024304 0.267346 0
+ L3 6815744 0.000000 -0.109369 0.133673 0 -0.048608 0.157977 0
+ L3 6815744 0.000000 -0.145825 0.072912 0 -0.097217 0.036456 0
+ L3 6815744 0.000000 -0.279498 0.024304 0 -0.218737 0.000000 0
+ L3 6815744 0.000000 -0.194433 -0.060760 0 -0.243042 -0.109369 0
+ L3 6815744 0.000000 -0.048608 -0.218737 0 -0.060760 -0.291650 0
+ L3 6815744 0.000000 -0.036456 -0.133673 0 -0.024304 -0.182281 0
+ L3 6815744 0.000000 0.085065 -0.218737 0 0.109369 -0.291650 0
+ L3 6815744 0.000000 0.145825 -0.206585 0 0.218737 -0.243042 0
+ L3 6815744 0.000000 0.328106 -0.085065 0 0.267346 -0.097217 0
+ L3 6815744 0.000000 0.328106 -0.194433 0 0.267346 -0.170129 0
+ L3 6815744 0.000000 0.352410 -0.145825 0 0.291650 -0.133673 0
+ L3 6815744 0.000000 0.145825 -0.352410 0 0.133673 -0.303802 0
+ L3 6815744 0.000000 0.218737 -0.315954 0 0.182281 -0.279498 0
+ L3 6815744 0.000000 0.364562 0.060760 0 0.291650 0.072912 0
+ L3 6815744 0.000000 0.364562 0.121521 0 0.303802 0.109369 0
+ L3 6815744 0.000000 -0.121521 -0.340258 0 -0.109369 -0.291650 0
+ L3 6815744 0.000000 -0.267346 -0.170129 0 -0.230890 -0.145825 0
+ L3 6815744 0.000000 0.170129 0.388867 0 0.145825 0.328106 0
+ L3 6815744 0.000000 0.218737 0.352410 0 0.182281 0.315954 0
+ L3 11184640 0.000000 0.170129 -0.328106 0 0.145825 -0.255194 0
+ L3 14915328 0.000000 0.194433 0.291650 0 0.157977 0.267346 0
+ L3 14915328 0.000000 -0.218737 0.060760 0 -0.170129 0.036456 0
+ F4 16755200 0.000000 4 0
+ 0.187212 0.192413 0
+ 0.110941 0.169878 0
+ 0.102273 0.112674 0
+ 0.152543 0.133475 0
+ F4 16755200 0.000000 3 0
+ 0.211481 -0.173345 0
+ 0.187212 -0.119608 0
+ 0.149076 -0.152543 0
+ F4 16755200 0.000000 4 0
+ -0.159477 -0.201080 0
+ -0.110941 -0.188946 0
+ -0.076272 -0.107474 0
+ -0.130009 -0.121341 0
+ L3 16755200 0.000000 0.024304 0.267346 0 0.048608 0.230890 0
+ L3 16755200 0.000000 -0.145825 0.194433 0 -0.097217 0.194433 0
+ L3 16755200 0.000000 -0.218737 -0.170129 0 -0.182281 -0.121521 0
+ L3 16755200 0.000000 -0.133673 -0.267346 0 -0.097217 -0.218737 0
+ L3 16755200 0.000000 0.303802 0.157977 0 0.243042 0.121521 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 2"" Fall-2a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.604946 -0.573896 0
+ -0.519129 -0.898389 0
+ -0.326043 -0.981524 0
+ -0.108820 -0.713348 0
+ 0.140583 -0.946661 0
+ 0.440940 -0.804528 0
+ 0.371215 0.791119 0
+ 0.086948 0.941297 0
+ -0.031049 0.758938 0
+ -0.269726 0.761619 0
+ -0.328724 0.946661 0
+ -0.696125 0.828663 0
+ -0.650535 0.611441 0
+ -0.953574 0.589987 0
+ -1.109116 0.276221 0
+ -0.937484 0.099225 0
+ -1.162751 0.000000 0
+ -1.103753 -0.225268 0
+ -0.865076 -0.311084 0
+ -1.036709 -0.450535 0
+ -0.897257 -0.702621 0
+# Layer: XTRKCAD2
+ F4 6842368 0.000000 28 0
+ -0.836709 -0.450535 0
+ -0.697257 -0.702621 0
+ -0.404946 -0.573896 0
+ -0.319129 -0.898389 0
+ -0.126043 -0.981524 0
+ 0.091180 -0.713348 0
+ 0.340583 -0.946661 0
+ 0.640940 -0.804528 0
+ 0.528306 -0.506852 0
+ 0.887662 -0.407627 0
+ 0.941297 -0.069726 0
+ 0.753574 0.104589 0
+ 0.930570 0.356674 0
+ 0.796482 0.581942 0
+ 0.579260 0.501489 0
+ 0.571215 0.791119 0
+ 0.286948 0.941297 0
+ 0.168951 0.758938 0
+ -0.069726 0.761619 0
+ -0.128724 0.946661 0
+ -0.496125 0.828663 0
+ -0.450535 0.611441 0
+ -0.753574 0.589987 0
+ -0.909116 0.276221 0
+ -0.737484 0.099225 0
+ -0.962751 0.000000 0
+ -0.903753 -0.225268 0
+ -0.665076 -0.311084 0
+# Layer: XTRKCAD3
+ F4 12434688 0.000000 26 0
+ 0.134088 -0.627531 0
+ 0.321811 -0.815255 0
+ 0.501489 -0.705302 0
+ 0.421036 -0.391537 0
+ 0.780392 -0.292312 0
+ 0.804528 -0.136770 0
+ 0.579260 0.018772 0
+ 0.775028 0.313766 0
+ 0.689212 0.415673 0
+ 0.474671 0.410309 0
+ 0.463944 0.657031 0
+ 0.278903 0.758938 0
+ 0.126043 0.579260 0
+ -0.104589 0.611441 0
+ -0.158224 0.734802 0
+ -0.353992 0.683848 0
+ -0.356674 0.469308 0
+ -0.520261 0.463944 0
+ -0.627531 0.249404 0
+ -0.437127 0.069726 0
+ -0.616804 -0.024136 0
+ -0.587305 -0.152860 0
+ -0.300357 -0.206495 0
+ -0.410309 -0.402264 0
+ -0.230631 -0.541715 0
+ -0.158224 -0.699939 0
+ L3 12434688 0.000000 -0.243042 -0.777733 0 -0.267346 -0.656212 0
+ L3 12434688 0.000000 -0.510387 -0.413171 0 -0.413171 -0.340258 0
+ L3 12434688 0.000000 -0.826342 -0.048608 0 -0.680517 -0.121521 0
+ L3 12434688 0.000000 -0.558996 0.072912 0 -0.680517 0.048608 0
+ L3 12434688 0.000000 -0.753429 0.364562 0 -0.631908 0.388867 0
+ L3 12434688 0.000000 -0.364562 0.729125 0 -0.413171 0.802037 0
+ L3 12434688 0.000000 0.121521 0.656212 0 0.048608 0.704821 0
+ L3 12434688 0.000000 0.461779 0.729125 0 0.534692 0.753429 0
+ L3 12434688 0.000000 0.850646 0.340258 0 0.777733 0.364562 0
+ L3 12434688 0.000000 -0.680517 -0.607604 0 -0.631908 -0.510387 0
+ L3 12434688 0.000000 -0.777733 -0.461779 0 -0.704821 -0.510387 0
+ L3 16755200 0.000000 -0.170129 -0.826342 0 -0.072912 -0.753429 0
+ L3 16755200 0.000000 -0.558996 -0.510387 0 -0.388867 -0.510387 0
+ L3 16755200 0.000000 -0.680517 -0.461779 0 -0.607604 -0.388867 0
+ L3 16755200 0.000000 -0.461779 -0.267346 0 -0.607604 -0.243042 0
+ L3 16755200 0.000000 -0.826342 -0.194433 0 -0.656212 -0.194433 0
+ L3 16755200 0.000000 -0.656212 0.170129 0 -0.826342 0.267346 0
+ L3 16755200 0.000000 -0.583300 0.558996 0 -0.534692 0.486083 0
+ L3 16755200 0.000000 -0.218737 0.777733 0 -0.170129 0.850646 0
+ L3 16755200 0.000000 -0.024304 0.656212 0 0.000000 0.729125 0
+ L3 16755200 0.000000 0.315954 0.777733 0 0.291650 0.874950 0
+ L3 16755200 0.000000 0.729125 0.461779 0 0.777733 0.534692 0
+ L3 16755200 0.000000 0.850646 -0.072912 0 0.753429 -0.048608 0
+# Layer: XTRKCAD4
+ F4 6842368 0.000000 4 0
+ 0.374425 -0.384825 0
+ 0.221881 -0.339756 0
+ 0.204547 -0.225348 0
+ 0.305087 -0.266951 0
+ F4 6842368 0.000000 4 0
+ 0.474965 0.017334 0
+ 0.294686 0.058937 0
+ 0.256550 -0.031202 0
+ 0.502700 -0.045070 0
+ F4 6842368 0.000000 4 0
+ 0.114408 0.461097 0
+ 0.024268 0.391759 0
+ 0.048537 0.246149 0
+ 0.104007 0.266951 0
+ F4 6842368 0.000000 5 0
+ -0.364024 0.041603 0
+ -0.315487 0.006934 0
+ -0.149076 -0.034669 0
+ -0.058937 0.058937 0
+ -0.266951 0.090139 0
+ L3 6842368 0.000000 0.048608 -0.534692 0 0.097217 -0.461779 0
+ L3 6842368 0.000000 0.340258 -0.461779 0 0.218737 -0.413171 0
+ L3 6842368 0.000000 0.388867 -0.583300 0 0.315954 -0.534692 0
+ L3 6842368 0.000000 0.218737 -0.631908 0 0.170129 -0.534692 0
+ L3 6842368 0.000000 -0.097217 -0.607604 0 -0.048608 -0.534692 0
+ L3 6842368 0.000000 -0.291650 -0.388867 0 -0.194433 -0.388867 0
+ L3 6842368 0.000000 -0.218737 -0.267346 0 -0.097217 -0.315954 0
+ L3 6842368 0.000000 -0.291650 -0.145825 0 -0.194433 -0.072912 0
+ L3 6842368 0.000000 -0.437475 -0.121521 0 -0.340258 -0.072912 0
+ L3 6842368 0.000000 -0.558996 -0.048608 0 -0.437475 0.000000 0
+ L3 6842368 0.000000 -0.388867 0.121521 0 -0.486083 0.218737 0
+ L3 6842368 0.000000 -0.437475 0.340258 0 -0.364562 0.243042 0
+ L3 6842368 0.000000 -0.267346 0.534692 0 -0.194433 0.437475 0
+ L3 6842368 0.000000 -0.097217 0.437475 0 -0.121521 0.583300 0
+ L3 6842368 0.000000 -0.072912 0.267346 0 -0.048608 0.364562 0
+ L3 6842368 0.000000 0.170129 0.437475 0 0.218737 0.583300 0
+ L3 6842368 0.000000 0.291650 0.413171 0 0.437475 0.486083 0
+ L3 6842368 0.000000 0.656212 0.170129 0 0.534692 0.194433 0
+ L3 6842368 0.000000 0.656212 0.388867 0 0.534692 0.340258 0
+ L3 6842368 0.000000 0.704821 0.291650 0 0.583300 0.267346 0
+ L3 6842368 0.000000 0.291650 0.704821 0 0.267346 0.607604 0
+ L3 6842368 0.000000 0.437475 0.631908 0 0.364562 0.558996 0
+ L3 6842368 0.000000 0.340258 0.656212 0 0.291650 0.510387 0
+ L3 6842368 0.000000 0.729125 -0.121521 0 0.583300 -0.145825 0
+ L3 6842368 0.000000 0.607604 -0.315954 0 0.486083 -0.243042 0
+ L3 6842368 0.000000 0.729125 -0.243042 0 0.607604 -0.218737 0
+ L3 6842368 0.000000 -0.243042 0.680517 0 -0.218737 0.583300 0
+ L3 6842368 0.000000 -0.534692 0.340258 0 -0.461779 0.291650 0
+ L3 6842368 0.000000 0.340258 -0.777733 0 0.291650 -0.656212 0
+ L3 6842368 0.000000 0.437475 -0.704821 0 0.364562 -0.631908 0
+ F4 16755200 0.000000 5 0
+ -0.145610 -0.461097 0
+ -0.131742 -0.381358 0
+ 0.017334 -0.315487 0
+ 0.058937 -0.412560 0
+ -0.017334 -0.485365 0
+ F4 16755200 0.000000 3 0
+ 0.422961 0.346689 0
+ 0.374425 0.239216 0
+ 0.298153 0.305087 0
+ F4 16755200 0.000000 4 0
+ -0.318954 0.402160 0
+ -0.221881 0.377891 0
+ -0.152543 0.214947 0
+ -0.260017 0.242683 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 2"" Fall-2b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.604946 0.573896 0
+ -0.519129 0.898389 0
+ -0.326043 0.981524 0
+ -0.108820 0.713348 0
+ 0.140583 0.946661 0
+ 0.440940 0.804528 0
+ 0.371215 -0.791119 0
+ 0.086948 -0.941297 0
+ -0.031049 -0.758938 0
+ -0.269726 -0.761619 0
+ -0.328724 -0.946661 0
+ -0.696125 -0.828663 0
+ -0.650535 -0.611441 0
+ -0.953574 -0.589987 0
+ -1.109116 -0.276221 0
+ -0.937484 -0.099225 0
+ -1.162751 0.000000 0
+ -1.103753 0.225268 0
+ -0.865076 0.311084 0
+ -1.036709 0.450535 0
+ -0.897257 0.702621 0
+# Layer: XTRKCAD2
+ F4 6815744 0.000000 28 0
+ -0.836709 0.450535 0
+ -0.697257 0.702621 0
+ -0.404946 0.573896 0
+ -0.319129 0.898389 0
+ -0.126043 0.981524 0
+ 0.091180 0.713348 0
+ 0.340583 0.946661 0
+ 0.640940 0.804528 0
+ 0.528306 0.506852 0
+ 0.887662 0.407627 0
+ 0.941297 0.069726 0
+ 0.753574 -0.104589 0
+ 0.930570 -0.356674 0
+ 0.796482 -0.581942 0
+ 0.579260 -0.501489 0
+ 0.571215 -0.791119 0
+ 0.286948 -0.941297 0
+ 0.168951 -0.758938 0
+ -0.069726 -0.761619 0
+ -0.128724 -0.946661 0
+ -0.496125 -0.828663 0
+ -0.450535 -0.611441 0
+ -0.753574 -0.589987 0
+ -0.909116 -0.276221 0
+ -0.737484 -0.099225 0
+ -0.962751 0.000000 0
+ -0.903753 0.225268 0
+ -0.665076 0.311084 0
+# Layer: XTRKCAD3
+ F4 12410368 0.000000 26 0
+ 0.134088 0.627531 0
+ 0.321811 0.815255 0
+ 0.501489 0.705302 0
+ 0.421036 0.391537 0
+ 0.780392 0.292312 0
+ 0.804528 0.136770 0
+ 0.579260 -0.018772 0
+ 0.775028 -0.313766 0
+ 0.689212 -0.415673 0
+ 0.474671 -0.410309 0
+ 0.463944 -0.657031 0
+ 0.278903 -0.758938 0
+ 0.126043 -0.579260 0
+ -0.104589 -0.611441 0
+ -0.158224 -0.734802 0
+ -0.353992 -0.683848 0
+ -0.356674 -0.469308 0
+ -0.520261 -0.463944 0
+ -0.627531 -0.249404 0
+ -0.437127 -0.069726 0
+ -0.616804 0.024136 0
+ -0.587305 0.152860 0
+ -0.300357 0.206495 0
+ -0.410309 0.402264 0
+ -0.230631 0.541715 0
+ -0.158224 0.699939 0
+ L3 12410368 0.000000 -0.170129 0.826342 0 -0.072912 0.753429 0
+ L3 12410368 0.000000 -0.680517 0.461779 0 -0.607604 0.388867 0
+ L3 12410368 0.000000 -0.510387 0.413171 0 -0.413171 0.340258 0
+ L3 12410368 0.000000 -0.826342 0.194433 0 -0.656212 0.194433 0
+ L3 12410368 0.000000 -0.558996 -0.072912 0 -0.680517 -0.048608 0
+ L3 12410368 0.000000 -0.753429 -0.364562 0 -0.631908 -0.388867 0
+ L3 12410368 0.000000 -0.364562 -0.729125 0 -0.413171 -0.802037 0
+ L3 12410368 0.000000 -0.024304 -0.656212 0 0.000000 -0.729125 0
+ L3 12410368 0.000000 0.315954 -0.777733 0 0.291650 -0.874950 0
+ L3 12410368 0.000000 0.729125 -0.461779 0 0.777733 -0.534692 0
+ L3 12410368 0.000000 -0.680517 0.607604 0 -0.631908 0.510387 0
+ L3 14915328 0.000000 -0.777733 0.461779 0 -0.704821 0.510387 0
+ L3 16755200 0.000000 0.850646 0.072912 0 0.753429 0.048608 0
+ L3 16755200 0.000000 -0.243042 0.777733 0 -0.267346 0.656212 0
+ L3 16755200 0.000000 -0.558996 0.510387 0 -0.388867 0.510387 0
+ L3 16755200 0.000000 -0.461779 0.267346 0 -0.607604 0.243042 0
+ L3 16755200 0.000000 -0.826342 0.048608 0 -0.680517 0.121521 0
+ L3 16755200 0.000000 -0.656212 -0.170129 0 -0.826342 -0.267346 0
+ L3 16755200 0.000000 -0.583300 -0.558996 0 -0.534692 -0.486083 0
+ L3 16755200 0.000000 -0.218737 -0.777733 0 -0.170129 -0.850646 0
+ L3 16755200 0.000000 0.121521 -0.656212 0 0.048608 -0.704821 0
+ L3 16755200 0.000000 0.461779 -0.729125 0 0.534692 -0.753429 0
+ L3 16755200 0.000000 0.850646 -0.340258 0 0.777733 -0.364562 0
+# Layer: XTRKCAD4
+ F4 6815744 0.000000 5 0
+ -0.145610 0.461097 0
+ -0.131742 0.381358 0
+ 0.017334 0.315487 0
+ 0.058937 0.412560 0
+ -0.017334 0.485365 0
+ F4 6815744 0.000000 4 0
+ 0.474965 -0.017334 0
+ 0.294686 -0.058937 0
+ 0.256550 0.031202 0
+ 0.502700 0.045070 0
+ F4 6815744 0.000000 4 0
+ 0.114408 -0.461097 0
+ 0.024268 -0.391759 0
+ 0.048537 -0.246149 0
+ 0.104007 -0.266951 0
+ F4 6815744 0.000000 5 0
+ -0.364024 -0.041603 0
+ -0.315487 -0.006934 0
+ -0.149076 0.034669 0
+ -0.058937 -0.058937 0
+ -0.266951 -0.090139 0
+ L3 6815744 0.000000 0.340258 0.461779 0 0.218737 0.413171 0
+ L3 6815744 0.000000 0.218737 0.631908 0 0.170129 0.534692 0
+ L3 6815744 0.000000 -0.097217 0.607604 0 -0.048608 0.534692 0
+ L3 6815744 0.000000 -0.218737 0.267346 0 -0.097217 0.315954 0
+ L3 6815744 0.000000 -0.291650 0.145825 0 -0.194433 0.072912 0
+ L3 6815744 0.000000 -0.558996 0.048608 0 -0.437475 0.000000 0
+ L3 6815744 0.000000 -0.388867 -0.121521 0 -0.486083 -0.218737 0
+ L3 6815744 0.000000 -0.097217 -0.437475 0 -0.121521 -0.583300 0
+ L3 6815744 0.000000 -0.072912 -0.267346 0 -0.048608 -0.364562 0
+ L3 6815744 0.000000 0.170129 -0.437475 0 0.218737 -0.583300 0
+ L3 6815744 0.000000 0.291650 -0.413171 0 0.437475 -0.486083 0
+ L3 6815744 0.000000 0.656212 -0.170129 0 0.534692 -0.194433 0
+ L3 6815744 0.000000 0.656212 -0.388867 0 0.534692 -0.340258 0
+ L3 6815744 0.000000 0.704821 -0.291650 0 0.583300 -0.267346 0
+ L3 6815744 0.000000 0.291650 -0.704821 0 0.267346 -0.607604 0
+ L3 6815744 0.000000 0.437475 -0.631908 0 0.364562 -0.558996 0
+ L3 6815744 0.000000 0.729125 0.121521 0 0.583300 0.145825 0
+ L3 6815744 0.000000 0.729125 0.243042 0 0.607604 0.218737 0
+ L3 6815744 0.000000 -0.243042 -0.680517 0 -0.218737 -0.583300 0
+ L3 6815744 0.000000 -0.534692 -0.340258 0 -0.461779 -0.291650 0
+ L3 6815744 0.000000 0.340258 0.777733 0 0.291650 0.656212 0
+ L3 6815744 0.000000 0.437475 0.704821 0 0.364562 0.631908 0
+ L3 11184640 0.000000 0.340258 -0.656212 0 0.291650 -0.510387 0
+ L3 14915328 0.000000 0.388867 0.583300 0 0.315954 0.534692 0
+ L3 14915328 0.000000 -0.437475 0.121521 0 -0.340258 0.072912 0
+ F4 16755200 0.000000 4 0
+ 0.374425 0.384825 0
+ 0.221881 0.339756 0
+ 0.204547 0.225348 0
+ 0.305087 0.266951 0
+ F4 16755200 0.000000 3 0
+ 0.422961 -0.346689 0
+ 0.374425 -0.239216 0
+ 0.298153 -0.305087 0
+ F4 16755200 0.000000 4 0
+ -0.318954 -0.402160 0
+ -0.221881 -0.377891 0
+ -0.152543 -0.214947 0
+ -0.260017 -0.242683 0
+ L3 16755200 0.000000 0.048608 0.534692 0 0.097217 0.461779 0
+ L3 16755200 0.000000 -0.291650 0.388867 0 -0.194433 0.388867 0
+ L3 16755200 0.000000 -0.437475 -0.340258 0 -0.364562 -0.243042 0
+ L3 16755200 0.000000 -0.267346 -0.534692 0 -0.194433 -0.437475 0
+ L3 16755200 0.000000 0.607604 0.315954 0 0.486083 0.243042 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 3"" Fall-3a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.907418 -0.860844 0
+ -0.778694 -1.347584 0
+ -0.489064 -1.472285 0
+ -0.163230 -1.070022 0
+ 0.210875 -1.419991 0
+ 0.661410 -1.206791 0
+ 0.556822 1.186678 0
+ 0.130422 1.411946 0
+ -0.046574 1.138406 0
+ -0.404589 1.142429 0
+ -0.493087 1.419991 0
+ -1.044188 1.242995 0
+ -0.975803 0.917161 0
+ -1.430361 0.884980 0
+ -1.663674 0.414332 0
+ -1.406225 0.148838 0
+ -1.744127 0.000000 0
+ -1.655629 -0.337902 0
+ -1.297614 -0.466626 0
+ -1.555063 -0.675803 0
+ -1.345886 -1.053931 0
+# Layer: XTRKCAD2
+ F4 6842368 0.000000 28 0
+ -1.255063 -0.675803 0
+ -1.045886 -1.053931 0
+ -0.607418 -0.860844 0
+ -0.478694 -1.347584 0
+ -0.189064 -1.472285 0
+ 0.136770 -1.070022 0
+ 0.510875 -1.419991 0
+ 0.961410 -1.206791 0
+ 0.792460 -0.760279 0
+ 1.331493 -0.611441 0
+ 1.411946 -0.104589 0
+ 1.130361 0.156883 0
+ 1.395855 0.535011 0
+ 1.194723 0.872912 0
+ 0.868890 0.752233 0
+ 0.856822 1.186678 0
+ 0.430422 1.411946 0
+ 0.253426 1.138406 0
+ -0.104589 1.142429 0
+ -0.193087 1.419991 0
+ -0.744188 1.242995 0
+ -0.675803 0.917161 0
+ -1.130361 0.884980 0
+ -1.363674 0.414332 0
+ -1.106225 0.148838 0
+ -1.444127 0.000000 0
+ -1.355629 -0.337902 0
+ -0.997614 -0.466626 0
+# Layer: XTRKCAD3
+ F4 12434688 0.000000 26 0
+ 0.201132 -0.941297 0
+ 0.482717 -1.222882 0
+ 0.752233 -1.057954 0
+ 0.631554 -0.587305 0
+ 1.170588 -0.438468 0
+ 1.206791 -0.205155 0
+ 0.868890 0.028158 0
+ 1.162542 0.470649 0
+ 1.033818 0.623509 0
+ 0.712007 0.615464 0
+ 0.695916 0.985546 0
+ 0.418354 1.138406 0
+ 0.189064 0.868890 0
+ -0.156883 0.917161 0
+ -0.237336 1.102203 0
+ -0.530988 1.025773 0
+ -0.535011 0.703962 0
+ -0.780392 0.695916 0
+ -0.941297 0.374105 0
+ -0.655690 0.104589 0
+ -0.925207 -0.036204 0
+ -0.880958 -0.229290 0
+ -0.450535 -0.309743 0
+ -0.615464 -0.603396 0
+ -0.345947 -0.812573 0
+ -0.237336 -1.049908 0
+ L3 12434688 0.000000 -0.364562 -1.166600 0 -0.401019 -0.984319 0
+ L3 12434688 0.000000 -0.765581 -0.619756 0 -0.619756 -0.510387 0
+ L3 12434688 0.000000 -1.239512 -0.072912 0 -1.020775 -0.182281 0
+ L3 12434688 0.000000 -0.838494 0.109369 0 -1.020775 0.072912 0
+ L3 12434688 0.000000 -1.130144 0.546844 0 -0.947862 0.583300 0
+ L3 12434688 0.000000 -0.546844 1.093687 0 -0.619756 1.203056 0
+ L3 12434688 0.000000 0.182281 0.984319 0 0.072912 1.057231 0
+ L3 12434688 0.000000 0.692669 1.093687 0 0.802037 1.130144 0
+ L3 12434688 0.000000 1.275969 0.510387 0 1.166600 0.546844 0
+ L3 12434688 0.000000 -1.020775 -0.911406 0 -0.947862 -0.765581 0
+ L3 12434688 0.000000 -1.166600 -0.692669 0 -1.057231 -0.765581 0
+ L3 16755200 0.000000 -0.255194 -1.239512 0 -0.109369 -1.130144 0
+ L3 16755200 0.000000 -0.838494 -0.765581 0 -0.583300 -0.765581 0
+ L3 16755200 0.000000 -1.020775 -0.692669 0 -0.911406 -0.583300 0
+ L3 16755200 0.000000 -0.692669 -0.401019 0 -0.911406 -0.364562 0
+ L3 16755200 0.000000 -1.239512 -0.291650 0 -0.984319 -0.291650 0
+ L3 16755200 0.000000 -0.984319 0.255194 0 -1.239512 0.401019 0
+ L3 16755200 0.000000 -0.874950 0.838494 0 -0.802037 0.729125 0
+ L3 16755200 0.000000 -0.328106 1.166600 0 -0.255194 1.275969 0
+ L3 16755200 0.000000 -0.036456 0.984319 0 0.000000 1.093687 0
+ L3 16755200 0.000000 0.473931 1.166600 0 0.437475 1.312425 0
+ L3 16755200 0.000000 1.093687 0.692669 0 1.166600 0.802037 0
+ L3 16755200 0.000000 1.275969 -0.109369 0 1.130144 -0.072912 0
+# Layer: XTRKCAD4
+ F4 6842368 0.000000 4 0
+ 0.561637 -0.577238 0
+ 0.332822 -0.509633 0
+ 0.306820 -0.338022 0
+ 0.457630 -0.400426 0
+ F4 6842368 0.000000 4 0
+ 0.712447 0.026002 0
+ 0.442029 0.088406 0
+ 0.384825 -0.046803 0
+ 0.754050 -0.067604 0
+ F4 6842368 0.000000 4 0
+ 0.171611 0.691645 0
+ 0.036402 0.587639 0
+ 0.072805 0.369224 0
+ 0.156010 0.400426 0
+ F4 6842368 0.000000 5 0
+ -0.546036 0.062404 0
+ -0.473231 0.010401 0
+ -0.223615 -0.052003 0
+ -0.088406 0.088406 0
+ -0.400426 0.135209 0
+ L3 6842368 0.000000 0.072912 -0.802037 0 0.145825 -0.692669 0
+ L3 6842368 0.000000 0.510387 -0.692669 0 0.328106 -0.619756 0
+ L3 6842368 0.000000 0.583300 -0.874950 0 0.473931 -0.802037 0
+ L3 6842368 0.000000 0.328106 -0.947862 0 0.255194 -0.802037 0
+ L3 6842368 0.000000 -0.145825 -0.911406 0 -0.072912 -0.802037 0
+ L3 6842368 0.000000 -0.437475 -0.583300 0 -0.291650 -0.583300 0
+ L3 6842368 0.000000 -0.328106 -0.401019 0 -0.145825 -0.473931 0
+ L3 6842368 0.000000 -0.437475 -0.218737 0 -0.291650 -0.109369 0
+ L3 6842368 0.000000 -0.656212 -0.182281 0 -0.510387 -0.109369 0
+ L3 6842368 0.000000 -0.838494 -0.072912 0 -0.656212 0.000000 0
+ L3 6842368 0.000000 -0.583300 0.182281 0 -0.729125 0.328106 0
+ L3 6842368 0.000000 -0.656212 0.510387 0 -0.546844 0.364562 0
+ L3 6842368 0.000000 -0.401019 0.802037 0 -0.291650 0.656212 0
+ L3 6842368 0.000000 -0.145825 0.656212 0 -0.182281 0.874950 0
+ L3 6842368 0.000000 -0.109369 0.401019 0 -0.072912 0.546844 0
+ L3 6842368 0.000000 0.255194 0.656212 0 0.328106 0.874950 0
+ L3 6842368 0.000000 0.437475 0.619756 0 0.656212 0.729125 0
+ L3 6842368 0.000000 0.984319 0.255194 0 0.802037 0.291650 0
+ L3 6842368 0.000000 0.984319 0.583300 0 0.802037 0.510387 0
+ L3 6842368 0.000000 1.057231 0.437475 0 0.874950 0.401019 0
+ L3 6842368 0.000000 0.437475 1.057231 0 0.401019 0.911406 0
+ L3 6842368 0.000000 0.656212 0.947862 0 0.546844 0.838494 0
+ L3 6842368 0.000000 0.510387 0.984319 0 0.437475 0.765581 0
+ L3 6842368 0.000000 1.093687 -0.182281 0 0.874950 -0.218737 0
+ L3 6842368 0.000000 0.911406 -0.473931 0 0.729125 -0.364562 0
+ L3 6842368 0.000000 1.093687 -0.364562 0 0.911406 -0.328106 0
+ L3 6842368 0.000000 -0.364562 1.020775 0 -0.328106 0.874950 0
+ L3 6842368 0.000000 -0.802037 0.510387 0 -0.692669 0.437475 0
+ L3 6842368 0.000000 0.510387 -1.166600 0 0.437475 -0.984319 0
+ L3 6842368 0.000000 0.656212 -1.057231 0 0.546844 -0.947862 0
+ F4 16755200 0.000000 5 0
+ -0.218414 -0.691645 0
+ -0.197613 -0.572038 0
+ 0.026002 -0.473231 0
+ 0.088406 -0.618841 0
+ -0.026002 -0.728048 0
+ F4 16755200 0.000000 3 0
+ 0.634442 0.520034 0
+ 0.561637 0.358824 0
+ 0.447229 0.457630 0
+ F4 16755200 0.000000 4 0
+ -0.478431 0.603240 0
+ -0.332822 0.566837 0
+ -0.228815 0.322421 0
+ -0.390026 0.364024 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 3"" Fall-3b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -0.907418 0.860844 0
+ -0.778694 1.347584 0
+ -0.489064 1.472285 0
+ -0.163230 1.070022 0
+ 0.210875 1.419991 0
+ 0.661410 1.206791 0
+ 0.556822 -1.186678 0
+ 0.130422 -1.411946 0
+ -0.046574 -1.138406 0
+ -0.404589 -1.142429 0
+ -0.493087 -1.419991 0
+ -1.044188 -1.242995 0
+ -0.975803 -0.917161 0
+ -1.430361 -0.884980 0
+ -1.663674 -0.414332 0
+ -1.406225 -0.148838 0
+ -1.744127 0.000000 0
+ -1.655629 0.337902 0
+ -1.297614 0.466626 0
+ -1.555063 0.675803 0
+ -1.345886 1.053931 0
+# Layer: XTRKCAD2
+ F4 6815744 0.000000 28 0
+ -1.255063 0.675803 0
+ -1.045886 1.053931 0
+ -0.607418 0.860844 0
+ -0.478694 1.347584 0
+ -0.189064 1.472285 0
+ 0.136770 1.070022 0
+ 0.510875 1.419991 0
+ 0.961410 1.206791 0
+ 0.792460 0.760279 0
+ 1.331493 0.611441 0
+ 1.411946 0.104589 0
+ 1.130361 -0.156883 0
+ 1.395855 -0.535011 0
+ 1.194723 -0.872912 0
+ 0.868890 -0.752233 0
+ 0.856822 -1.186678 0
+ 0.430422 -1.411946 0
+ 0.253426 -1.138406 0
+ -0.104589 -1.142429 0
+ -0.193087 -1.419991 0
+ -0.744188 -1.242995 0
+ -0.675803 -0.917161 0
+ -1.130361 -0.884980 0
+ -1.363674 -0.414332 0
+ -1.106225 -0.148838 0
+ -1.444127 0.000000 0
+ -1.355629 0.337902 0
+ -0.997614 0.466626 0
+# Layer: XTRKCAD3
+ F4 12410368 0.000000 26 0
+ 0.201132 0.941297 0
+ 0.482717 1.222882 0
+ 0.752233 1.057954 0
+ 0.631554 0.587305 0
+ 1.170588 0.438468 0
+ 1.206791 0.205155 0
+ 0.868890 -0.028158 0
+ 1.162542 -0.470649 0
+ 1.033818 -0.623509 0
+ 0.712007 -0.615464 0
+ 0.695916 -0.985546 0
+ 0.418354 -1.138406 0
+ 0.189064 -0.868890 0
+ -0.156883 -0.917161 0
+ -0.237336 -1.102203 0
+ -0.530988 -1.025773 0
+ -0.535011 -0.703962 0
+ -0.780392 -0.695916 0
+ -0.941297 -0.374105 0
+ -0.655690 -0.104589 0
+ -0.925207 0.036204 0
+ -0.880958 0.229290 0
+ -0.450535 0.309743 0
+ -0.615464 0.603396 0
+ -0.345947 0.812573 0
+ -0.237336 1.049908 0
+ L3 12410368 0.000000 -0.255194 1.239512 0 -0.109369 1.130144 0
+ L3 12410368 0.000000 -1.020775 0.692669 0 -0.911406 0.583300 0
+ L3 12410368 0.000000 -0.765581 0.619756 0 -0.619756 0.510387 0
+ L3 12410368 0.000000 -1.239512 0.291650 0 -0.984319 0.291650 0
+ L3 12410368 0.000000 -0.838494 -0.109369 0 -1.020775 -0.072912 0
+ L3 12410368 0.000000 -1.130144 -0.546844 0 -0.947862 -0.583300 0
+ L3 12410368 0.000000 -0.546844 -1.093687 0 -0.619756 -1.203056 0
+ L3 12410368 0.000000 -0.036456 -0.984319 0 0.000000 -1.093687 0
+ L3 12410368 0.000000 0.473931 -1.166600 0 0.437475 -1.312425 0
+ L3 12410368 0.000000 1.093687 -0.692669 0 1.166600 -0.802037 0
+ L3 12410368 0.000000 -1.020775 0.911406 0 -0.947862 0.765581 0
+ L3 14915328 0.000000 -1.166600 0.692669 0 -1.057231 0.765581 0
+ L3 16755200 0.000000 1.275969 0.109369 0 1.130144 0.072912 0
+ L3 16755200 0.000000 -0.364562 1.166600 0 -0.401019 0.984319 0
+ L3 16755200 0.000000 -0.838494 0.765581 0 -0.583300 0.765581 0
+ L3 16755200 0.000000 -0.692669 0.401019 0 -0.911406 0.364562 0
+ L3 16755200 0.000000 -1.239512 0.072912 0 -1.020775 0.182281 0
+ L3 16755200 0.000000 -0.984319 -0.255194 0 -1.239512 -0.401019 0
+ L3 16755200 0.000000 -0.874950 -0.838494 0 -0.802037 -0.729125 0
+ L3 16755200 0.000000 -0.328106 -1.166600 0 -0.255194 -1.275969 0
+ L3 16755200 0.000000 0.182281 -0.984319 0 0.072912 -1.057231 0
+ L3 16755200 0.000000 0.692669 -1.093687 0 0.802037 -1.130144 0
+ L3 16755200 0.000000 1.275969 -0.510387 0 1.166600 -0.546844 0
+# Layer: XTRKCAD4
+ F4 6815744 0.000000 5 0
+ -0.218414 0.691645 0
+ -0.197613 0.572038 0
+ 0.026002 0.473231 0
+ 0.088406 0.618841 0
+ -0.026002 0.728048 0
+ F4 6815744 0.000000 4 0
+ 0.712447 -0.026002 0
+ 0.442029 -0.088406 0
+ 0.384825 0.046803 0
+ 0.754050 0.067604 0
+ F4 6815744 0.000000 4 0
+ 0.171611 -0.691645 0
+ 0.036402 -0.587639 0
+ 0.072805 -0.369224 0
+ 0.156010 -0.400426 0
+ F4 6815744 0.000000 5 0
+ -0.546036 -0.062404 0
+ -0.473231 -0.010401 0
+ -0.223615 0.052003 0
+ -0.088406 -0.088406 0
+ -0.400426 -0.135209 0
+ L3 6815744 0.000000 0.510387 0.692669 0 0.328106 0.619756 0
+ L3 6815744 0.000000 0.328106 0.947862 0 0.255194 0.802037 0
+ L3 6815744 0.000000 -0.145825 0.911406 0 -0.072912 0.802037 0
+ L3 6815744 0.000000 -0.328106 0.401019 0 -0.145825 0.473931 0
+ L3 6815744 0.000000 -0.437475 0.218737 0 -0.291650 0.109369 0
+ L3 6815744 0.000000 -0.838494 0.072912 0 -0.656212 0.000000 0
+ L3 6815744 0.000000 -0.583300 -0.182281 0 -0.729125 -0.328106 0
+ L3 6815744 0.000000 -0.145825 -0.656212 0 -0.182281 -0.874950 0
+ L3 6815744 0.000000 -0.109369 -0.401019 0 -0.072912 -0.546844 0
+ L3 6815744 0.000000 0.255194 -0.656212 0 0.328106 -0.874950 0
+ L3 6815744 0.000000 0.437475 -0.619756 0 0.656212 -0.729125 0
+ L3 6815744 0.000000 0.984319 -0.255194 0 0.802037 -0.291650 0
+ L3 6815744 0.000000 0.984319 -0.583300 0 0.802037 -0.510387 0
+ L3 6815744 0.000000 1.057231 -0.437475 0 0.874950 -0.401019 0
+ L3 6815744 0.000000 0.437475 -1.057231 0 0.401019 -0.911406 0
+ L3 6815744 0.000000 0.656212 -0.947862 0 0.546844 -0.838494 0
+ L3 6815744 0.000000 1.093687 0.182281 0 0.874950 0.218737 0
+ L3 6815744 0.000000 1.093687 0.364562 0 0.911406 0.328106 0
+ L3 6815744 0.000000 -0.364562 -1.020775 0 -0.328106 -0.874950 0
+ L3 6815744 0.000000 -0.802037 -0.510387 0 -0.692669 -0.437475 0
+ L3 6815744 0.000000 0.510387 1.166600 0 0.437475 0.984319 0
+ L3 6815744 0.000000 0.656212 1.057231 0 0.546844 0.947862 0
+ L3 11184640 0.000000 0.510387 -0.984319 0 0.437475 -0.765581 0
+ L3 14915328 0.000000 0.583300 0.874950 0 0.473931 0.802037 0
+ L3 14915328 0.000000 -0.656212 0.182281 0 -0.510387 0.109369 0
+ F4 16755200 0.000000 4 0
+ 0.561637 0.577238 0
+ 0.332822 0.509633 0
+ 0.306820 0.338022 0
+ 0.457630 0.400426 0
+ F4 16755200 0.000000 3 0
+ 0.634442 -0.520034 0
+ 0.561637 -0.358824 0
+ 0.447229 -0.457630 0
+ F4 16755200 0.000000 4 0
+ -0.478431 -0.603240 0
+ -0.332822 -0.566837 0
+ -0.228815 -0.322421 0
+ -0.390026 -0.364024 0
+ L3 16755200 0.000000 0.072912 0.802037 0 0.145825 0.692669 0
+ L3 16755200 0.000000 -0.437475 0.583300 0 -0.291650 0.583300 0
+ L3 16755200 0.000000 -0.656212 -0.510387 0 -0.546844 -0.364562 0
+ L3 16755200 0.000000 -0.401019 -0.802037 0 -0.291650 -0.656212 0
+ L3 16755200 0.000000 0.911406 0.473931 0 0.729125 0.364562 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 4"" Fall-4a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -1.209891 -1.147793 0
+ -1.038259 -1.796778 0
+ -0.652085 -1.963047 0
+ -0.217640 -1.426696 0
+ 0.281167 -1.893322 0
+ 0.881881 -1.609055 0
+ 0.742429 1.582238 0
+ 0.173896 1.882594 0
+ -0.062098 1.517875 0
+ -0.539451 1.523239 0
+ -0.657449 1.893322 0
+ -1.392251 1.657327 0
+ -1.301071 1.222882 0
+ -1.907148 1.179974 0
+ -2.218232 0.552442 0
+ -1.874967 0.198450 0
+ -2.325503 0.000000 0
+ -2.207505 -0.450535 0
+ -1.730152 -0.622168 0
+ -2.073417 -0.901071 0
+ -1.794514 -1.405241 0
+# Layer: XTRKCAD2
+ F4 6842368 0.000000 28 0
+ -1.673417 -0.901071 0
+ -1.394514 -1.405241 0
+ -0.809891 -1.147793 0
+ -0.638259 -1.796778 0
+ -0.252085 -1.963047 0
+ 0.182360 -1.426696 0
+ 0.681167 -1.893322 0
+ 1.281881 -1.609055 0
+ 1.056613 -1.013705 0
+ 1.775324 -0.815255 0
+ 1.882594 -0.139451 0
+ 1.507148 0.209177 0
+ 1.861140 0.713348 0
+ 1.592965 1.163883 0
+ 1.158520 1.002978 0
+ 1.142429 1.582238 0
+ 0.573896 1.882594 0
+ 0.337902 1.517875 0
+ -0.139451 1.523239 0
+ -0.257449 1.893322 0
+ -0.992251 1.657327 0
+ -0.901071 1.222882 0
+ -1.507148 1.179974 0
+ -1.818232 0.552442 0
+ -1.474967 0.198450 0
+ -1.925503 0.000000 0
+ -1.807505 -0.450535 0
+ -1.330152 -0.622168 0
+# Layer: XTRKCAD3
+ F4 12434688 0.000000 26 0
+ 0.268176 -1.255063 0
+ 0.643622 -1.630509 0
+ 1.002978 -1.410605 0
+ 0.842072 -0.783073 0
+ 1.560783 -0.584623 0
+ 1.609055 -0.273539 0
+ 1.158520 0.037545 0
+ 1.550056 0.627531 0
+ 1.378424 0.831345 0
+ 0.949343 0.820618 0
+ 0.927888 1.314062 0
+ 0.557806 1.517875 0
+ 0.252085 1.158520 0
+ -0.209177 1.222882 0
+ -0.316448 1.469604 0
+ -0.707984 1.367697 0
+ -0.713348 0.938615 0
+ -1.040522 0.927888 0
+ -1.255063 0.498807 0
+ -0.874253 0.139451 0
+ -1.233609 -0.048272 0
+ -1.174610 -0.305720 0
+ -0.600714 -0.412991 0
+ -0.820618 -0.804528 0
+ -0.461262 -1.083430 0
+ -0.316448 -1.399878 0
+ L3 12434688 0.000000 -0.486083 -1.555467 0 -0.534692 -1.312425 0
+ L3 12434688 0.000000 -1.020775 -0.826342 0 -0.826342 -0.680517 0
+ L3 12434688 0.000000 -1.652683 -0.097217 0 -1.361033 -0.243042 0
+ L3 12434688 0.000000 -1.117992 0.145825 0 -1.361033 0.097217 0
+ L3 12434688 0.000000 -1.506858 0.729125 0 -1.263817 0.777733 0
+ L3 12434688 0.000000 -0.729125 1.458250 0 -0.826342 1.604075 0
+ L3 12434688 0.000000 0.243042 1.312425 0 0.097217 1.409642 0
+ L3 12434688 0.000000 0.923558 1.458250 0 1.069383 1.506858 0
+ L3 12434688 0.000000 1.701292 0.680517 0 1.555467 0.729125 0
+ L3 12434688 0.000000 -1.361033 -1.215208 0 -1.263817 -1.020775 0
+ L3 12434688 0.000000 -1.555467 -0.923558 0 -1.409642 -1.020775 0
+ L3 16755200 0.000000 -0.340258 -1.652683 0 -0.145825 -1.506858 0
+ L3 16755200 0.000000 -1.117992 -1.020775 0 -0.777733 -1.020775 0
+ L3 16755200 0.000000 -1.361033 -0.923558 0 -1.215208 -0.777733 0
+ L3 16755200 0.000000 -0.923558 -0.534692 0 -1.215208 -0.486083 0
+ L3 16755200 0.000000 -1.652683 -0.388867 0 -1.312425 -0.388867 0
+ L3 16755200 0.000000 -1.312425 0.340258 0 -1.652683 0.534692 0
+ L3 16755200 0.000000 -1.166600 1.117992 0 -1.069383 0.972167 0
+ L3 16755200 0.000000 -0.437475 1.555467 0 -0.340258 1.701292 0
+ L3 16755200 0.000000 -0.048608 1.312425 0 0.000000 1.458250 0
+ L3 16755200 0.000000 0.631908 1.555467 0 0.583300 1.749900 0
+ L3 16755200 0.000000 1.458250 0.923558 0 1.555467 1.069383 0
+ L3 16755200 0.000000 1.701292 -0.145825 0 1.506858 -0.097217 0
+# Layer: XTRKCAD4
+ F4 6842368 0.000000 4 0
+ 0.748849 -0.769651 0
+ 0.443762 -0.679511 0
+ 0.409094 -0.450696 0
+ 0.610173 -0.533902 0
+ F4 6842368 0.000000 4 0
+ 0.949929 0.034669 0
+ 0.589372 0.117874 0
+ 0.513100 -0.062404 0
+ 1.005399 -0.090139 0
+ F4 6842368 0.000000 4 0
+ 0.228815 0.922194 0
+ 0.048537 0.783518 0
+ 0.097073 0.492299 0
+ 0.208014 0.533902 0
+ F4 6842368 0.000000 5 0
+ -0.728048 0.083205 0
+ -0.630975 0.013868 0
+ -0.298153 -0.069338 0
+ -0.117874 0.117874 0
+ -0.533902 0.180279 0
+ L3 6842368 0.000000 0.097217 -1.069383 0 0.194433 -0.923558 0
+ L3 6842368 0.000000 0.680517 -0.923558 0 0.437475 -0.826342 0
+ L3 6842368 0.000000 0.777733 -1.166600 0 0.631908 -1.069383 0
+ L3 6842368 0.000000 0.437475 -1.263817 0 0.340258 -1.069383 0
+ L3 6842368 0.000000 -0.194433 -1.215208 0 -0.097217 -1.069383 0
+ L3 6842368 0.000000 -0.583300 -0.777733 0 -0.388867 -0.777733 0
+ L3 6842368 0.000000 -0.437475 -0.534692 0 -0.194433 -0.631908 0
+ L3 6842368 0.000000 -0.583300 -0.291650 0 -0.388867 -0.145825 0
+ L3 6842368 0.000000 -0.874950 -0.243042 0 -0.680517 -0.145825 0
+ L3 6842368 0.000000 -1.117992 -0.097217 0 -0.874950 0.000000 0
+ L3 6842368 0.000000 -0.777733 0.243042 0 -0.972167 0.437475 0
+ L3 6842368 0.000000 -0.874950 0.680517 0 -0.729125 0.486083 0
+ L3 6842368 0.000000 -0.534692 1.069383 0 -0.388867 0.874950 0
+ L3 6842368 0.000000 -0.194433 0.874950 0 -0.243042 1.166600 0
+ L3 6842368 0.000000 -0.145825 0.534692 0 -0.097217 0.729125 0
+ L3 6842368 0.000000 0.340258 0.874950 0 0.437475 1.166600 0
+ L3 6842368 0.000000 0.583300 0.826342 0 0.874950 0.972167 0
+ L3 6842368 0.000000 1.312425 0.340258 0 1.069383 0.388867 0
+ L3 6842368 0.000000 1.312425 0.777733 0 1.069383 0.680517 0
+ L3 6842368 0.000000 1.409642 0.583300 0 1.166600 0.534692 0
+ L3 6842368 0.000000 0.583300 1.409642 0 0.534692 1.215208 0
+ L3 6842368 0.000000 0.874950 1.263817 0 0.729125 1.117992 0
+ L3 6842368 0.000000 0.680517 1.312425 0 0.583300 1.020775 0
+ L3 6842368 0.000000 1.458250 -0.243042 0 1.166600 -0.291650 0
+ L3 6842368 0.000000 1.215208 -0.631908 0 0.972167 -0.486083 0
+ L3 6842368 0.000000 1.458250 -0.486083 0 1.215208 -0.437475 0
+ L3 6842368 0.000000 -0.486083 1.361033 0 -0.437475 1.166600 0
+ L3 6842368 0.000000 -1.069383 0.680517 0 -0.923558 0.583300 0
+ L3 6842368 0.000000 0.680517 -1.555467 0 0.583300 -1.312425 0
+ L3 6842368 0.000000 0.874950 -1.409642 0 0.729125 -1.263817 0
+ F4 16755200 0.000000 5 0
+ -0.291219 -0.922194 0
+ -0.263484 -0.762717 0
+ 0.034669 -0.630975 0
+ 0.117874 -0.825121 0
+ -0.034669 -0.970730 0
+ F4 16755200 0.000000 3 0
+ 0.845922 0.693379 0
+ 0.748849 0.478431 0
+ 0.596306 0.610173 0
+ F4 16755200 0.000000 4 0
+ -0.637909 0.804319 0
+ -0.443762 0.755783 0
+ -0.305087 0.429895 0
+ -0.520034 0.485365 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 4"" Fall-4b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -1.209891 1.147793 0
+ -1.038259 1.796778 0
+ -0.652085 1.963047 0
+ -0.217640 1.426696 0
+ 0.281167 1.893322 0
+ 0.881881 1.609055 0
+ 0.742429 -1.582238 0
+ 0.173896 -1.882594 0
+ -0.062098 -1.517875 0
+ -0.539451 -1.523239 0
+ -0.657449 -1.893322 0
+ -1.392251 -1.657327 0
+ -1.301071 -1.222882 0
+ -1.907148 -1.179974 0
+ -2.218232 -0.552442 0
+ -1.874967 -0.198450 0
+ -2.325503 0.000000 0
+ -2.207505 0.450535 0
+ -1.730152 0.622168 0
+ -2.073417 0.901071 0
+ -1.794514 1.405241 0
+# Layer: XTRKCAD2
+ F4 6815744 0.000000 28 0
+ -1.673417 0.901071 0
+ -1.394514 1.405241 0
+ -0.809891 1.147793 0
+ -0.638259 1.796778 0
+ -0.252085 1.963047 0
+ 0.182360 1.426696 0
+ 0.681167 1.893322 0
+ 1.281881 1.609055 0
+ 1.056613 1.013705 0
+ 1.775324 0.815255 0
+ 1.882594 0.139451 0
+ 1.507148 -0.209177 0
+ 1.861140 -0.713348 0
+ 1.592965 -1.163883 0
+ 1.158520 -1.002978 0
+ 1.142429 -1.582238 0
+ 0.573896 -1.882594 0
+ 0.337902 -1.517875 0
+ -0.139451 -1.523239 0
+ -0.257449 -1.893322 0
+ -0.992251 -1.657327 0
+ -0.901071 -1.222882 0
+ -1.507148 -1.179974 0
+ -1.818232 -0.552442 0
+ -1.474967 -0.198450 0
+ -1.925503 0.000000 0
+ -1.807505 0.450535 0
+ -1.330152 0.622168 0
+# Layer: XTRKCAD3
+ F4 12410368 0.000000 26 0
+ 0.268176 1.255063 0
+ 0.643622 1.630509 0
+ 1.002978 1.410605 0
+ 0.842072 0.783073 0
+ 1.560783 0.584623 0
+ 1.609055 0.273539 0
+ 1.158520 -0.037545 0
+ 1.550056 -0.627531 0
+ 1.378424 -0.831345 0
+ 0.949343 -0.820618 0
+ 0.927888 -1.314062 0
+ 0.557806 -1.517875 0
+ 0.252085 -1.158520 0
+ -0.209177 -1.222882 0
+ -0.316448 -1.469604 0
+ -0.707984 -1.367697 0
+ -0.713348 -0.938615 0
+ -1.040522 -0.927888 0
+ -1.255063 -0.498807 0
+ -0.874253 -0.139451 0
+ -1.233609 0.048272 0
+ -1.174610 0.305720 0
+ -0.600714 0.412991 0
+ -0.820618 0.804528 0
+ -0.461262 1.083430 0
+ -0.316448 1.399878 0
+ L3 12410368 0.000000 -0.340258 1.652683 0 -0.145825 1.506858 0
+ L3 12410368 0.000000 -1.361033 0.923558 0 -1.215208 0.777733 0
+ L3 12410368 0.000000 -1.020775 0.826342 0 -0.826342 0.680517 0
+ L3 12410368 0.000000 -1.652683 0.388867 0 -1.312425 0.388867 0
+ L3 12410368 0.000000 -1.117992 -0.145825 0 -1.361033 -0.097217 0
+ L3 12410368 0.000000 -1.506858 -0.729125 0 -1.263817 -0.777733 0
+ L3 12410368 0.000000 -0.729125 -1.458250 0 -0.826342 -1.604075 0
+ L3 12410368 0.000000 -0.048608 -1.312425 0 0.000000 -1.458250 0
+ L3 12410368 0.000000 0.631908 -1.555467 0 0.583300 -1.749900 0
+ L3 12410368 0.000000 1.458250 -0.923558 0 1.555467 -1.069383 0
+ L3 12410368 0.000000 -1.361033 1.215208 0 -1.263817 1.020775 0
+ L3 14915328 0.000000 -1.555467 0.923558 0 -1.409642 1.020775 0
+ L3 16755200 0.000000 1.701292 0.145825 0 1.506858 0.097217 0
+ L3 16755200 0.000000 -0.486083 1.555467 0 -0.534692 1.312425 0
+ L3 16755200 0.000000 -1.117992 1.020775 0 -0.777733 1.020775 0
+ L3 16755200 0.000000 -0.923558 0.534692 0 -1.215208 0.486083 0
+ L3 16755200 0.000000 -1.652683 0.097217 0 -1.361033 0.243042 0
+ L3 16755200 0.000000 -1.312425 -0.340258 0 -1.652683 -0.534692 0
+ L3 16755200 0.000000 -1.166600 -1.117992 0 -1.069383 -0.972167 0
+ L3 16755200 0.000000 -0.437475 -1.555467 0 -0.340258 -1.701292 0
+ L3 16755200 0.000000 0.243042 -1.312425 0 0.097217 -1.409642 0
+ L3 16755200 0.000000 0.923558 -1.458250 0 1.069383 -1.506858 0
+ L3 16755200 0.000000 1.701292 -0.680517 0 1.555467 -0.729125 0
+# Layer: XTRKCAD4
+ F4 6815744 0.000000 5 0
+ -0.291219 0.922194 0
+ -0.263484 0.762717 0
+ 0.034669 0.630975 0
+ 0.117874 0.825121 0
+ -0.034669 0.970730 0
+ F4 6815744 0.000000 4 0
+ 0.949929 -0.034669 0
+ 0.589372 -0.117874 0
+ 0.513100 0.062404 0
+ 1.005399 0.090139 0
+ F4 6815744 0.000000 4 0
+ 0.228815 -0.922194 0
+ 0.048537 -0.783518 0
+ 0.097073 -0.492299 0
+ 0.208014 -0.533902 0
+ F4 6815744 0.000000 5 0
+ -0.728048 -0.083205 0
+ -0.630975 -0.013868 0
+ -0.298153 0.069338 0
+ -0.117874 -0.117874 0
+ -0.533902 -0.180279 0
+ L3 6815744 0.000000 0.680517 0.923558 0 0.437475 0.826342 0
+ L3 6815744 0.000000 0.437475 1.263817 0 0.340258 1.069383 0
+ L3 6815744 0.000000 -0.194433 1.215208 0 -0.097217 1.069383 0
+ L3 6815744 0.000000 -0.437475 0.534692 0 -0.194433 0.631908 0
+ L3 6815744 0.000000 -0.583300 0.291650 0 -0.388867 0.145825 0
+ L3 6815744 0.000000 -1.117992 0.097217 0 -0.874950 0.000000 0
+ L3 6815744 0.000000 -0.777733 -0.243042 0 -0.972167 -0.437475 0
+ L3 6815744 0.000000 -0.194433 -0.874950 0 -0.243042 -1.166600 0
+ L3 6815744 0.000000 -0.145825 -0.534692 0 -0.097217 -0.729125 0
+ L3 6815744 0.000000 0.340258 -0.874950 0 0.437475 -1.166600 0
+ L3 6815744 0.000000 0.583300 -0.826342 0 0.874950 -0.972167 0
+ L3 6815744 0.000000 1.312425 -0.340258 0 1.069383 -0.388867 0
+ L3 6815744 0.000000 1.312425 -0.777733 0 1.069383 -0.680517 0
+ L3 6815744 0.000000 1.409642 -0.583300 0 1.166600 -0.534692 0
+ L3 6815744 0.000000 0.583300 -1.409642 0 0.534692 -1.215208 0
+ L3 6815744 0.000000 0.874950 -1.263817 0 0.729125 -1.117992 0
+ L3 6815744 0.000000 1.458250 0.243042 0 1.166600 0.291650 0
+ L3 6815744 0.000000 1.458250 0.486083 0 1.215208 0.437475 0
+ L3 6815744 0.000000 -0.486083 -1.361033 0 -0.437475 -1.166600 0
+ L3 6815744 0.000000 -1.069383 -0.680517 0 -0.923558 -0.583300 0
+ L3 6815744 0.000000 0.680517 1.555467 0 0.583300 1.312425 0
+ L3 6815744 0.000000 0.874950 1.409642 0 0.729125 1.263817 0
+ L3 11184640 0.000000 0.680517 -1.312425 0 0.583300 -1.020775 0
+ L3 14915328 0.000000 0.777733 1.166600 0 0.631908 1.069383 0
+ L3 14915328 0.000000 -0.874950 0.243042 0 -0.680517 0.145825 0
+ F4 16755200 0.000000 4 0
+ 0.748849 0.769651 0
+ 0.443762 0.679511 0
+ 0.409094 0.450696 0
+ 0.610173 0.533902 0
+ F4 16755200 0.000000 3 0
+ 0.845922 -0.693379 0
+ 0.748849 -0.478431 0
+ 0.596306 -0.610173 0
+ F4 16755200 0.000000 4 0
+ -0.637909 -0.804319 0
+ -0.443762 -0.755783 0
+ -0.305087 -0.429895 0
+ -0.520034 -0.485365 0
+ L3 16755200 0.000000 0.097217 1.069383 0 0.194433 0.923558 0
+ L3 16755200 0.000000 -0.583300 0.777733 0 -0.388867 0.777733 0
+ L3 16755200 0.000000 -0.874950 -0.680517 0 -0.729125 -0.486083 0
+ L3 16755200 0.000000 -0.534692 -1.069383 0 -0.388867 -0.874950 0
+ L3 16755200 0.000000 1.215208 0.631908 0 0.972167 0.486083 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 5"" Fall-5a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ F4 6842368 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
+# Layer: XTRKCAD3
+ F4 12434688 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 12434688 0.000000 -0.607604 -1.944333 0 -0.668365 -1.640531 0
+ L3 12434688 0.000000 -1.275969 -1.032927 0 -1.032927 -0.850646 0
+ L3 12434688 0.000000 -2.065854 -0.121521 0 -1.701292 -0.303802 0
+ L3 12434688 0.000000 -1.397490 0.182281 0 -1.701292 0.121521 0
+ L3 12434688 0.000000 -1.883573 0.911406 0 -1.579771 0.972167 0
+ L3 12434688 0.000000 -0.911406 1.822812 0 -1.032927 2.005094 0
+ L3 12434688 0.000000 0.303802 1.640531 0 0.121521 1.762052 0
+ L3 12434688 0.000000 1.154448 1.822812 0 1.336729 1.883573 0
+ L3 12434688 0.000000 2.126615 0.850646 0 1.944333 0.911406 0
+ L3 12434688 0.000000 -1.701292 -1.519010 0 -1.579771 -1.275969 0
+ L3 12434688 0.000000 -1.944333 -1.154448 0 -1.762052 -1.275969 0
+ L3 16755200 0.000000 -0.425323 -2.065854 0 -0.182281 -1.883573 0
+ L3 16755200 0.000000 -1.397490 -1.275969 0 -0.972167 -1.275969 0
+ L3 16755200 0.000000 -1.701292 -1.154448 0 -1.519010 -0.972167 0
+ L3 16755200 0.000000 -1.154448 -0.668365 0 -1.519010 -0.607604 0
+ L3 16755200 0.000000 -2.065854 -0.486083 0 -1.640531 -0.486083 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.060760 1.640531 0 0.000000 1.822812 0
+ L3 16755200 0.000000 0.789885 1.944333 0 0.729125 2.187375 0
+ L3 16755200 0.000000 1.822812 1.154448 0 1.944333 1.336729 0
+ L3 16755200 0.000000 2.126615 -0.182281 0 1.883573 -0.121521 0
+# Layer: XTRKCAD4
+ F4 6842368 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 6842368 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 6842368 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 6842368 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 6842368 0.000000 0.121521 -1.336729 0 0.243042 -1.154448 0
+ L3 6842368 0.000000 0.850646 -1.154448 0 0.546844 -1.032927 0
+ L3 6842368 0.000000 0.972167 -1.458250 0 0.789885 -1.336729 0
+ L3 6842368 0.000000 0.546844 -1.579771 0 0.425323 -1.336729 0
+ L3 6842368 0.000000 -0.243042 -1.519010 0 -0.121521 -1.336729 0
+ L3 6842368 0.000000 -0.729125 -0.972167 0 -0.486083 -0.972167 0
+ L3 6842368 0.000000 -0.546844 -0.668365 0 -0.243042 -0.789885 0
+ L3 6842368 0.000000 -0.729125 -0.364562 0 -0.486083 -0.182281 0
+ L3 6842368 0.000000 -1.093687 -0.303802 0 -0.850646 -0.182281 0
+ L3 6842368 0.000000 -1.397490 -0.121521 0 -1.093687 0.000000 0
+ L3 6842368 0.000000 -0.972167 0.303802 0 -1.215208 0.546844 0
+ L3 6842368 0.000000 -1.093687 0.850646 0 -0.911406 0.607604 0
+ L3 6842368 0.000000 -0.668365 1.336729 0 -0.486083 1.093687 0
+ L3 6842368 0.000000 -0.243042 1.093687 0 -0.303802 1.458250 0
+ L3 6842368 0.000000 -0.182281 0.668365 0 -0.121521 0.911406 0
+ L3 6842368 0.000000 0.425323 1.093687 0 0.546844 1.458250 0
+ L3 6842368 0.000000 0.729125 1.032927 0 1.093687 1.215208 0
+ L3 6842368 0.000000 1.640531 0.425323 0 1.336729 0.486083 0
+ L3 6842368 0.000000 1.640531 0.972167 0 1.336729 0.850646 0
+ L3 6842368 0.000000 1.762052 0.729125 0 1.458250 0.668365 0
+ L3 6842368 0.000000 0.729125 1.762052 0 0.668365 1.519010 0
+ L3 6842368 0.000000 1.093687 1.579771 0 0.911406 1.397490 0
+ L3 6842368 0.000000 0.850646 1.640531 0 0.729125 1.275969 0
+ L3 6842368 0.000000 1.822812 -0.303802 0 1.458250 -0.364562 0
+ L3 6842368 0.000000 1.519010 -0.789885 0 1.215208 -0.607604 0
+ L3 6842368 0.000000 1.822812 -0.607604 0 1.519010 -0.546844 0
+ L3 6842368 0.000000 -0.607604 1.701292 0 -0.546844 1.458250 0
+ L3 6842368 0.000000 -1.336729 0.850646 0 -1.154448 0.729125 0
+ L3 6842368 0.000000 0.850646 -1.944333 0 0.729125 -1.640531 0
+ L3 6842368 0.000000 1.093687 -1.762052 0 0.911406 -1.579771 0
+ F4 16755200 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 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
+ END$SEGS
+
+STRUCTURE * "Sm Fall 5"" Fall-5b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Sm Fall 6"" Fall-6a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Sm Fall 6"" Fall-6b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Sm Fall 7"" Fall-7a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -2.117309 -2.008637 0
+ -1.816952 -3.144362 0
+ -1.141149 -3.435333 0
+ -0.380871 -2.496717 0
+ 0.492042 -3.313313 0
+ 1.543291 -2.815846 0
+ 1.299251 2.768916 0
+ 0.304319 3.294540 0
+ -0.108672 2.656282 0
+ -0.944040 2.665668 0
+ -1.150535 3.313313 0
+ -2.436439 2.900322 0
+ -2.276874 2.140043 0
+ -3.337510 2.064954 0
+ -3.881907 0.966774 0
+ -3.281193 0.347288 0
+ -4.069630 0.000000 0
+ -3.863134 -0.788437 0
+ -3.027766 -1.088794 0
+ -3.628480 -1.576874 0
+ -3.140400 -2.459173 0
+# Layer: XTRKCAD2
+ F4 6842368 0.000000 28 0
+ -2.928480 -1.576874 0
+ -2.440400 -2.459173 0
+ -1.417309 -2.008637 0
+ -1.116952 -3.144362 0
+ -0.441149 -3.435333 0
+ 0.319129 -2.496717 0
+ 1.192042 -3.313313 0
+ 2.243291 -2.815846 0
+ 1.849073 -1.773983 0
+ 3.106817 -1.426696 0
+ 3.294540 -0.244040 0
+ 2.637510 0.366060 0
+ 3.256996 1.248359 0
+ 2.787688 2.036796 0
+ 2.027409 1.755211 0
+ 1.999251 2.768916 0
+ 1.004319 3.294540 0
+ 0.591328 2.656282 0
+ -0.244040 2.665668 0
+ -0.450535 3.313313 0
+ -1.736439 2.900322 0
+ -1.576874 2.140043 0
+ -2.637510 2.064954 0
+ -3.181907 0.966774 0
+ -2.581193 0.347288 0
+ -3.369630 0.000000 0
+ -3.163134 -0.788437 0
+ -2.327766 -1.088794 0
+# Layer: XTRKCAD3
+ F4 12434688 0.000000 26 0
+ 0.469308 -2.196360 0
+ 1.126339 -2.853391 0
+ 1.755211 -2.468559 0
+ 1.473626 -1.370379 0
+ 2.731371 -1.023091 0
+ 2.815846 -0.478694 0
+ 2.027409 0.065703 0
+ 2.712599 1.098180 0
+ 2.412242 1.454854 0
+ 1.661349 1.436082 0
+ 1.623805 2.299608 0
+ 0.976160 2.656282 0
+ 0.441149 2.027409 0
+ -0.366060 2.140043 0
+ -0.553783 2.571806 0
+ -1.238972 2.393469 0
+ -1.248359 1.642577 0
+ -1.820914 1.623805 0
+ -2.196360 0.872912 0
+ -1.529943 0.244040 0
+ -2.158816 -0.084475 0
+ -2.055568 -0.535011 0
+ -1.051249 -0.722734 0
+ -1.436082 -1.407923 0
+ -0.807209 -1.896003 0
+ -0.553783 -2.449786 0
+ L3 12434688 0.000000 -0.850646 -2.722067 0 -0.935710 -2.296744 0
+ L3 12434688 0.000000 -1.786356 -1.446098 0 -1.446098 -1.190904 0
+ L3 12434688 0.000000 -2.892196 -0.170129 0 -2.381808 -0.425323 0
+ L3 12434688 0.000000 -1.956485 0.255194 0 -2.381808 0.170129 0
+ L3 12434688 0.000000 -2.637002 1.275969 0 -2.211679 1.361033 0
+ L3 12434688 0.000000 -1.275969 2.551937 0 -1.446098 2.807131 0
+ L3 12434688 0.000000 0.425323 2.296744 0 0.170129 2.466873 0
+ L3 12434688 0.000000 1.616227 2.551937 0 1.871421 2.637002 0
+ L3 12434688 0.000000 2.977260 1.190904 0 2.722067 1.275969 0
+ L3 12434688 0.000000 -2.381808 -2.126615 0 -2.211679 -1.786356 0
+ L3 12434688 0.000000 -2.722067 -1.616227 0 -2.466873 -1.786356 0
+ L3 16755200 0.000000 -0.595452 -2.892196 0 -0.255194 -2.637002 0
+ L3 16755200 0.000000 -1.956485 -1.786356 0 -1.361033 -1.786356 0
+ L3 16755200 0.000000 -2.381808 -1.616227 0 -2.126615 -1.361033 0
+ L3 16755200 0.000000 -1.616227 -0.935710 0 -2.126615 -0.850646 0
+ L3 16755200 0.000000 -2.892196 -0.680517 0 -2.296744 -0.680517 0
+ L3 16755200 0.000000 -2.296744 0.595452 0 -2.892196 0.935710 0
+ L3 16755200 0.000000 -2.041550 1.956485 0 -1.871421 1.701292 0
+ L3 16755200 0.000000 -0.765581 2.722067 0 -0.595452 2.977260 0
+ L3 16755200 0.000000 -0.085065 2.296744 0 0.000000 2.551937 0
+ L3 16755200 0.000000 1.105840 2.722067 0 1.020775 3.062325 0
+ L3 16755200 0.000000 2.551937 1.616227 0 2.722067 1.871421 0
+ L3 16755200 0.000000 2.977260 -0.255194 0 2.637002 -0.170129 0
+# Layer: XTRKCAD4
+ F4 6842368 0.000000 4 0
+ 1.310486 -1.346888 0
+ 0.776584 -1.189145 0
+ 0.715914 -0.788718 0
+ 1.067803 -0.934328 0
+ F4 6842368 0.000000 4 0
+ 1.662376 0.060671 0
+ 1.031401 0.206280 0
+ 0.897926 -0.109207 0
+ 1.759449 -0.157744 0
+ F4 6842368 0.000000 4 0
+ 0.400426 1.613839 0
+ 0.084939 1.371157 0
+ 0.169878 0.861523 0
+ 0.364024 0.934328 0
+ F4 6842368 0.000000 5 0
+ -1.274084 0.145610 0
+ -1.104206 0.024268 0
+ -0.521768 -0.121341 0
+ -0.206280 0.206280 0
+ -0.934328 0.315487 0
+ L3 6842368 0.000000 0.170129 -1.871421 0 0.340258 -1.616227 0
+ L3 6842368 0.000000 1.190904 -1.616227 0 0.765581 -1.446098 0
+ L3 6842368 0.000000 1.361033 -2.041550 0 1.105840 -1.871421 0
+ L3 6842368 0.000000 0.765581 -2.211679 0 0.595452 -1.871421 0
+ L3 6842368 0.000000 -0.340258 -2.126615 0 -0.170129 -1.871421 0
+ L3 6842368 0.000000 -1.020775 -1.361033 0 -0.680517 -1.361033 0
+ L3 6842368 0.000000 -0.765581 -0.935710 0 -0.340258 -1.105840 0
+ L3 6842368 0.000000 -1.020775 -0.510387 0 -0.680517 -0.255194 0
+ L3 6842368 0.000000 -1.531162 -0.425323 0 -1.190904 -0.255194 0
+ L3 6842368 0.000000 -1.956485 -0.170129 0 -1.531162 0.000000 0
+ L3 6842368 0.000000 -1.361033 0.425323 0 -1.701292 0.765581 0
+ L3 6842368 0.000000 -1.531162 1.190904 0 -1.275969 0.850646 0
+ L3 6842368 0.000000 -0.935710 1.871421 0 -0.680517 1.531162 0
+ L3 6842368 0.000000 -0.340258 1.531162 0 -0.425323 2.041550 0
+ L3 6842368 0.000000 -0.255194 0.935710 0 -0.170129 1.275969 0
+ L3 6842368 0.000000 0.595452 1.531162 0 0.765581 2.041550 0
+ L3 6842368 0.000000 1.020775 1.446098 0 1.531162 1.701292 0
+ L3 6842368 0.000000 2.296744 0.595452 0 1.871421 0.680517 0
+ L3 6842368 0.000000 2.296744 1.361033 0 1.871421 1.190904 0
+ L3 6842368 0.000000 2.466873 1.020775 0 2.041550 0.935710 0
+ L3 6842368 0.000000 1.020775 2.466873 0 0.935710 2.126615 0
+ L3 6842368 0.000000 1.531162 2.211679 0 1.275969 1.956485 0
+ L3 6842368 0.000000 1.190904 2.296744 0 1.020775 1.786356 0
+ L3 6842368 0.000000 2.551937 -0.425323 0 2.041550 -0.510387 0
+ L3 6842368 0.000000 2.126615 -1.105840 0 1.701292 -0.850646 0
+ L3 6842368 0.000000 2.551937 -0.850646 0 2.126615 -0.765581 0
+ L3 6842368 0.000000 -0.850646 2.381808 0 -0.765581 2.041550 0
+ L3 6842368 0.000000 -1.871421 1.190904 0 -1.616227 1.020775 0
+ L3 6842368 0.000000 1.190904 -2.722067 0 1.020775 -2.296744 0
+ L3 6842368 0.000000 1.531162 -2.466873 0 1.275969 -2.211679 0
+ F4 16755200 0.000000 5 0
+ -0.509633 -1.613839 0
+ -0.461097 -1.334754 0
+ 0.060671 -1.104206 0
+ 0.206280 -1.443961 0
+ -0.060671 -1.698778 0
+ F4 16755200 0.000000 3 0
+ 1.480364 1.213413 0
+ 1.310486 0.837255 0
+ 1.043535 1.067803 0
+ F4 16755200 0.000000 4 0
+ -1.116340 1.407559 0
+ -0.776584 1.322620 0
+ -0.533902 0.752316 0
+ -0.910060 0.849389 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 7"" Fall-7b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -2.117309 2.008637 0
+ -1.816952 3.144362 0
+ -1.141149 3.435333 0
+ -0.380871 2.496717 0
+ 0.492042 3.313313 0
+ 1.543291 2.815846 0
+ 1.299251 -2.768916 0
+ 0.304319 -3.294540 0
+ -0.108672 -2.656282 0
+ -0.944040 -2.665668 0
+ -1.150535 -3.313313 0
+ -2.436439 -2.900322 0
+ -2.276874 -2.140043 0
+ -3.337510 -2.064954 0
+ -3.881907 -0.966774 0
+ -3.281193 -0.347288 0
+ -4.069630 0.000000 0
+ -3.863134 0.788437 0
+ -3.027766 1.088794 0
+ -3.628480 1.576874 0
+ -3.140400 2.459173 0
+# Layer: XTRKCAD2
+ F4 6815744 0.000000 28 0
+ -2.928480 1.576874 0
+ -2.440400 2.459173 0
+ -1.417309 2.008637 0
+ -1.116952 3.144362 0
+ -0.441149 3.435333 0
+ 0.319129 2.496717 0
+ 1.192042 3.313313 0
+ 2.243291 2.815846 0
+ 1.849073 1.773983 0
+ 3.106817 1.426696 0
+ 3.294540 0.244040 0
+ 2.637510 -0.366060 0
+ 3.256996 -1.248359 0
+ 2.787688 -2.036796 0
+ 2.027409 -1.755211 0
+ 1.999251 -2.768916 0
+ 1.004319 -3.294540 0
+ 0.591328 -2.656282 0
+ -0.244040 -2.665668 0
+ -0.450535 -3.313313 0
+ -1.736439 -2.900322 0
+ -1.576874 -2.140043 0
+ -2.637510 -2.064954 0
+ -3.181907 -0.966774 0
+ -2.581193 -0.347288 0
+ -3.369630 0.000000 0
+ -3.163134 0.788437 0
+ -2.327766 1.088794 0
+# Layer: XTRKCAD3
+ F4 12410368 0.000000 26 0
+ 0.469308 2.196360 0
+ 1.126339 2.853391 0
+ 1.755211 2.468559 0
+ 1.473626 1.370379 0
+ 2.731371 1.023091 0
+ 2.815846 0.478694 0
+ 2.027409 -0.065703 0
+ 2.712599 -1.098180 0
+ 2.412242 -1.454854 0
+ 1.661349 -1.436082 0
+ 1.623805 -2.299608 0
+ 0.976160 -2.656282 0
+ 0.441149 -2.027409 0
+ -0.366060 -2.140043 0
+ -0.553783 -2.571806 0
+ -1.238972 -2.393469 0
+ -1.248359 -1.642577 0
+ -1.820914 -1.623805 0
+ -2.196360 -0.872912 0
+ -1.529943 -0.244040 0
+ -2.158816 0.084475 0
+ -2.055568 0.535011 0
+ -1.051249 0.722734 0
+ -1.436082 1.407923 0
+ -0.807209 1.896003 0
+ -0.553783 2.449786 0
+ L3 12410368 0.000000 -0.595452 2.892196 0 -0.255194 2.637002 0
+ L3 12410368 0.000000 -2.381808 1.616227 0 -2.126615 1.361033 0
+ L3 12410368 0.000000 -1.786356 1.446098 0 -1.446098 1.190904 0
+ L3 12410368 0.000000 -2.892196 0.680517 0 -2.296744 0.680517 0
+ L3 12410368 0.000000 -1.956485 -0.255194 0 -2.381808 -0.170129 0
+ L3 12410368 0.000000 -2.637002 -1.275969 0 -2.211679 -1.361033 0
+ L3 12410368 0.000000 -1.275969 -2.551937 0 -1.446098 -2.807131 0
+ L3 12410368 0.000000 -0.085065 -2.296744 0 0.000000 -2.551937 0
+ L3 12410368 0.000000 1.105840 -2.722067 0 1.020775 -3.062325 0
+ L3 12410368 0.000000 2.551937 -1.616227 0 2.722067 -1.871421 0
+ L3 12410368 0.000000 -2.381808 2.126615 0 -2.211679 1.786356 0
+ L3 14915328 0.000000 -2.722067 1.616227 0 -2.466873 1.786356 0
+ L3 16755200 0.000000 2.977260 0.255194 0 2.637002 0.170129 0
+ L3 16755200 0.000000 -0.850646 2.722067 0 -0.935710 2.296744 0
+ L3 16755200 0.000000 -1.956485 1.786356 0 -1.361033 1.786356 0
+ L3 16755200 0.000000 -1.616227 0.935710 0 -2.126615 0.850646 0
+ L3 16755200 0.000000 -2.892196 0.170129 0 -2.381808 0.425323 0
+ L3 16755200 0.000000 -2.296744 -0.595452 0 -2.892196 -0.935710 0
+ L3 16755200 0.000000 -2.041550 -1.956485 0 -1.871421 -1.701292 0
+ L3 16755200 0.000000 -0.765581 -2.722067 0 -0.595452 -2.977260 0
+ L3 16755200 0.000000 0.425323 -2.296744 0 0.170129 -2.466873 0
+ L3 16755200 0.000000 1.616227 -2.551937 0 1.871421 -2.637002 0
+ L3 16755200 0.000000 2.977260 -1.190904 0 2.722067 -1.275969 0
+# Layer: XTRKCAD4
+ F4 6815744 0.000000 5 0
+ -0.509633 1.613839 0
+ -0.461097 1.334754 0
+ 0.060671 1.104206 0
+ 0.206280 1.443961 0
+ -0.060671 1.698778 0
+ F4 6815744 0.000000 4 0
+ 1.662376 -0.060671 0
+ 1.031401 -0.206280 0
+ 0.897926 0.109207 0
+ 1.759449 0.157744 0
+ F4 6815744 0.000000 4 0
+ 0.400426 -1.613839 0
+ 0.084939 -1.371157 0
+ 0.169878 -0.861523 0
+ 0.364024 -0.934328 0
+ F4 6815744 0.000000 5 0
+ -1.274084 -0.145610 0
+ -1.104206 -0.024268 0
+ -0.521768 0.121341 0
+ -0.206280 -0.206280 0
+ -0.934328 -0.315487 0
+ L3 6815744 0.000000 1.190904 1.616227 0 0.765581 1.446098 0
+ L3 6815744 0.000000 0.765581 2.211679 0 0.595452 1.871421 0
+ L3 6815744 0.000000 -0.340258 2.126615 0 -0.170129 1.871421 0
+ L3 6815744 0.000000 -0.765581 0.935710 0 -0.340258 1.105840 0
+ L3 6815744 0.000000 -1.020775 0.510387 0 -0.680517 0.255194 0
+ L3 6815744 0.000000 -1.956485 0.170129 0 -1.531162 0.000000 0
+ L3 6815744 0.000000 -1.361033 -0.425323 0 -1.701292 -0.765581 0
+ L3 6815744 0.000000 -0.340258 -1.531162 0 -0.425323 -2.041550 0
+ L3 6815744 0.000000 -0.255194 -0.935710 0 -0.170129 -1.275969 0
+ L3 6815744 0.000000 0.595452 -1.531162 0 0.765581 -2.041550 0
+ L3 6815744 0.000000 1.020775 -1.446098 0 1.531162 -1.701292 0
+ L3 6815744 0.000000 2.296744 -0.595452 0 1.871421 -0.680517 0
+ L3 6815744 0.000000 2.296744 -1.361033 0 1.871421 -1.190904 0
+ L3 6815744 0.000000 2.466873 -1.020775 0 2.041550 -0.935710 0
+ L3 6815744 0.000000 1.020775 -2.466873 0 0.935710 -2.126615 0
+ L3 6815744 0.000000 1.531162 -2.211679 0 1.275969 -1.956485 0
+ L3 6815744 0.000000 2.551937 0.425323 0 2.041550 0.510387 0
+ L3 6815744 0.000000 2.551937 0.850646 0 2.126615 0.765581 0
+ L3 6815744 0.000000 -0.850646 -2.381808 0 -0.765581 -2.041550 0
+ L3 6815744 0.000000 -1.871421 -1.190904 0 -1.616227 -1.020775 0
+ L3 6815744 0.000000 1.190904 2.722067 0 1.020775 2.296744 0
+ L3 6815744 0.000000 1.531162 2.466873 0 1.275969 2.211679 0
+ L3 11184640 0.000000 1.190904 -2.296744 0 1.020775 -1.786356 0
+ L3 14915328 0.000000 1.361033 2.041550 0 1.105840 1.871421 0
+ L3 14915328 0.000000 -1.531162 0.425323 0 -1.190904 0.255194 0
+ F4 16755200 0.000000 4 0
+ 1.310486 1.346888 0
+ 0.776584 1.189145 0
+ 0.715914 0.788718 0
+ 1.067803 0.934328 0
+ F4 16755200 0.000000 3 0
+ 1.480364 -1.213413 0
+ 1.310486 -0.837255 0
+ 1.043535 -1.067803 0
+ F4 16755200 0.000000 4 0
+ -1.116340 -1.407559 0
+ -0.776584 -1.322620 0
+ -0.533902 -0.752316 0
+ -0.910060 -0.849389 0
+ L3 16755200 0.000000 0.170129 1.871421 0 0.340258 1.616227 0
+ L3 16755200 0.000000 -1.020775 1.361033 0 -0.680517 1.361033 0
+ L3 16755200 0.000000 -1.531162 -1.190904 0 -1.275969 -0.850646 0
+ L3 16755200 0.000000 -0.935710 -1.871421 0 -0.680517 -1.531162 0
+ L3 16755200 0.000000 2.126615 1.105840 0 1.701292 0.850646 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 8"" Fall-8a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Sm Fall 8"" Fall-8b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Sm Fall 9"" Fall-9a"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -2.722255 -2.582533 0
+ -2.336082 -4.042751 0
+ -1.467192 -4.416856 0
+ -0.489691 -3.210065 0
+ 0.632625 -4.259973 0
+ 1.984231 -3.620374 0
+ 1.670466 3.560034 0
+ 0.391267 4.235838 0
+ -0.139721 3.415219 0
+ -1.213766 3.427287 0
+ -1.479260 4.259973 0
+ -3.132564 3.728985 0
+ -2.927409 2.751484 0
+ -4.291084 2.654941 0
+ -4.991023 1.242995 0
+ -4.218676 0.446513 0
+ -5.232381 0.000000 0
+ -4.966887 -1.013705 0
+ -3.892843 -1.399878 0
+ -4.665189 -2.027409 0
+ -4.037657 -3.161793 0
+# Layer: XTRKCAD2
+ F4 6842368 0.000000 28 0
+ -3.765189 -2.027409 0
+ -3.137657 -3.161793 0
+ -1.822255 -2.582533 0
+ -1.436082 -4.042751 0
+ -0.567192 -4.416856 0
+ 0.410309 -3.210065 0
+ 1.532625 -4.259973 0
+ 2.884231 -3.620374 0
+ 2.377379 -2.280836 0
+ 3.994479 -1.834323 0
+ 4.235838 -0.313766 0
+ 3.391084 0.470649 0
+ 4.187566 1.605032 0
+ 3.584170 2.618737 0
+ 2.606669 2.256700 0
+ 2.570466 3.560034 0
+ 1.291267 4.235838 0
+ 0.760279 3.415219 0
+ -0.313766 3.427287 0
+ -0.579260 4.259973 0
+ -2.232564 3.728985 0
+ -2.027409 2.751484 0
+ -3.391084 2.654941 0
+ -4.091023 1.242995 0
+ -3.318676 0.446513 0
+ -4.332381 0.000000 0
+ -4.066887 -1.013705 0
+ -2.992843 -1.399878 0
+# Layer: XTRKCAD3
+ F4 12434688 0.000000 26 0
+ 0.603396 -2.823892 0
+ 1.448150 -3.668646 0
+ 2.256700 -3.173861 0
+ 1.894662 -1.761915 0
+ 3.511763 -1.315403 0
+ 3.620374 -0.615464 0
+ 2.606669 0.084475 0
+ 3.487627 1.411946 0
+ 3.101454 1.870527 0
+ 2.136021 1.846391 0
+ 2.087749 2.956639 0
+ 1.255063 3.415219 0
+ 0.567192 2.606669 0
+ -0.470649 2.751484 0
+ -0.712007 3.306608 0
+ -1.592965 3.077318 0
+ -1.605032 2.111885 0
+ -2.341175 2.087749 0
+ -2.823892 1.122316 0
+ -1.967070 0.313766 0
+ -2.775620 -0.108611 0
+ -2.642873 -0.687871 0
+ -1.351606 -0.929229 0
+ -1.846391 -1.810187 0
+ -1.037841 -2.437719 0
+ -0.712007 -3.149725 0
+ L3 12434688 0.000000 -1.093687 -3.499800 0 -1.203056 -2.952956 0
+ L3 12434688 0.000000 -2.296744 -1.859269 0 -1.859269 -1.531162 0
+ L3 12434688 0.000000 -3.718537 -0.218737 0 -3.062325 -0.546844 0
+ L3 12434688 0.000000 -2.515481 0.328106 0 -3.062325 0.218737 0
+ L3 12434688 0.000000 -3.390431 1.640531 0 -2.843587 1.749900 0
+ L3 12434688 0.000000 -1.640531 3.281062 0 -1.859269 3.609169 0
+ L3 12434688 0.000000 0.546844 2.952956 0 0.218737 3.171694 0
+ L3 12434688 0.000000 2.078006 3.281062 0 2.406112 3.390431 0
+ L3 12434688 0.000000 3.827906 1.531162 0 3.499800 1.640531 0
+ L3 12434688 0.000000 -3.062325 -2.734219 0 -2.843587 -2.296744 0
+ L3 12434688 0.000000 -3.499800 -2.078006 0 -3.171694 -2.296744 0
+ L3 16755200 0.000000 -0.765581 -3.718537 0 -0.328106 -3.390431 0
+ L3 16755200 0.000000 -2.515481 -2.296744 0 -1.749900 -2.296744 0
+ L3 16755200 0.000000 -3.062325 -2.078006 0 -2.734219 -1.749900 0
+ L3 16755200 0.000000 -2.078006 -1.203056 0 -2.734219 -1.093687 0
+ L3 16755200 0.000000 -3.718537 -0.874950 0 -2.952956 -0.874950 0
+ L3 16755200 0.000000 -2.952956 0.765581 0 -3.718537 1.203056 0
+ L3 16755200 0.000000 -2.624850 2.515481 0 -2.406112 2.187375 0
+ L3 16755200 0.000000 -0.984319 3.499800 0 -0.765581 3.827906 0
+ L3 16755200 0.000000 -0.109369 2.952956 0 0.000000 3.281062 0
+ L3 16755200 0.000000 1.421794 3.499800 0 1.312425 3.937275 0
+ L3 16755200 0.000000 3.281062 2.078006 0 3.499800 2.406112 0
+ L3 16755200 0.000000 3.827906 -0.328106 0 3.390431 -0.218737 0
+# Layer: XTRKCAD4
+ F4 6842368 0.000000 4 0
+ 1.684911 -1.731714 0
+ 0.998466 -1.528900 0
+ 0.920460 -1.014067 0
+ 1.372890 -1.201279 0
+ F4 6842368 0.000000 4 0
+ 2.137340 0.078005 0
+ 1.326087 0.265217 0
+ 1.154476 -0.140409 0
+ 2.262149 -0.202813 0
+ F4 6842368 0.000000 4 0
+ 0.514834 2.074936 0
+ 0.109207 1.762916 0
+ 0.218414 1.107673 0
+ 0.468031 1.201279 0
+ F4 6842368 0.000000 5 0
+ -1.638108 0.187212 0
+ -1.419693 0.031202 0
+ -0.670844 -0.156010 0
+ -0.265217 0.265217 0
+ -1.201279 0.405627 0
+ L3 6842368 0.000000 0.218737 -2.406112 0 0.437475 -2.078006 0
+ L3 6842368 0.000000 1.531162 -2.078006 0 0.984319 -1.859269 0
+ L3 6842368 0.000000 1.749900 -2.624850 0 1.421794 -2.406112 0
+ L3 6842368 0.000000 0.984319 -2.843587 0 0.765581 -2.406112 0
+ L3 6842368 0.000000 -0.437475 -2.734219 0 -0.218737 -2.406112 0
+ L3 6842368 0.000000 -1.312425 -1.749900 0 -0.874950 -1.749900 0
+ L3 6842368 0.000000 -0.984319 -1.203056 0 -0.437475 -1.421794 0
+ L3 6842368 0.000000 -1.312425 -0.656212 0 -0.874950 -0.328106 0
+ L3 6842368 0.000000 -1.968637 -0.546844 0 -1.531162 -0.328106 0
+ L3 6842368 0.000000 -2.515481 -0.218737 0 -1.968637 0.000000 0
+ L3 6842368 0.000000 -1.749900 0.546844 0 -2.187375 0.984319 0
+ L3 6842368 0.000000 -1.968637 1.531162 0 -1.640531 1.093687 0
+ L3 6842368 0.000000 -1.203056 2.406112 0 -0.874950 1.968637 0
+ L3 6842368 0.000000 -0.437475 1.968637 0 -0.546844 2.624850 0
+ L3 6842368 0.000000 -0.328106 1.203056 0 -0.218737 1.640531 0
+ L3 6842368 0.000000 0.765581 1.968637 0 0.984319 2.624850 0
+ L3 6842368 0.000000 1.312425 1.859269 0 1.968637 2.187375 0
+ L3 6842368 0.000000 2.952956 0.765581 0 2.406112 0.874950 0
+ L3 6842368 0.000000 2.952956 1.749900 0 2.406112 1.531162 0
+ L3 6842368 0.000000 3.171694 1.312425 0 2.624850 1.203056 0
+ L3 6842368 0.000000 1.312425 3.171694 0 1.203056 2.734219 0
+ L3 6842368 0.000000 1.968637 2.843587 0 1.640531 2.515481 0
+ L3 6842368 0.000000 1.531162 2.952956 0 1.312425 2.296744 0
+ L3 6842368 0.000000 3.281062 -0.546844 0 2.624850 -0.656212 0
+ L3 6842368 0.000000 2.734219 -1.421794 0 2.187375 -1.093687 0
+ L3 6842368 0.000000 3.281062 -1.093687 0 2.734219 -0.984319 0
+ L3 6842368 0.000000 -1.093687 3.062325 0 -0.984319 2.624850 0
+ L3 6842368 0.000000 -2.406112 1.531162 0 -2.078006 1.312425 0
+ L3 6842368 0.000000 1.531162 -3.499800 0 1.312425 -2.952956 0
+ L3 6842368 0.000000 1.968637 -3.171694 0 1.640531 -2.843587 0
+ F4 16755200 0.000000 5 0
+ -0.655243 -2.074936 0
+ -0.592839 -1.716113 0
+ 0.078005 -1.419693 0
+ 0.265217 -1.856522 0
+ -0.078005 -2.184143 0
+ F4 16755200 0.000000 3 0
+ 1.903325 1.560102 0
+ 1.684911 1.076471 0
+ 1.341688 1.372890 0
+ F4 16755200 0.000000 4 0
+ -1.435294 1.809719 0
+ -0.998466 1.700512 0
+ -0.686445 0.967264 0
+ -1.170077 1.092072 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 9"" Fall-9b"
+# Layer: XTRKCAD1
+ F4 8553090 0.000000 21 0
+ -2.722255 2.582533 0
+ -2.336082 4.042751 0
+ -1.467192 4.416856 0
+ -0.489691 3.210065 0
+ 0.632625 4.259973 0
+ 1.984231 3.620374 0
+ 1.670466 -3.560034 0
+ 0.391267 -4.235838 0
+ -0.139721 -3.415219 0
+ -1.213766 -3.427287 0
+ -1.479260 -4.259973 0
+ -3.132564 -3.728985 0
+ -2.927409 -2.751484 0
+ -4.291084 -2.654941 0
+ -4.991023 -1.242995 0
+ -4.218676 -0.446513 0
+ -5.232381 0.000000 0
+ -4.966887 1.013705 0
+ -3.892843 1.399878 0
+ -4.665189 2.027409 0
+ -4.037657 3.161793 0
+# Layer: XTRKCAD2
+ F4 6815744 0.000000 28 0
+ -3.765189 2.027409 0
+ -3.137657 3.161793 0
+ -1.822255 2.582533 0
+ -1.436082 4.042751 0
+ -0.567192 4.416856 0
+ 0.410309 3.210065 0
+ 1.532625 4.259973 0
+ 2.884231 3.620374 0
+ 2.377379 2.280836 0
+ 3.994479 1.834323 0
+ 4.235838 0.313766 0
+ 3.391084 -0.470649 0
+ 4.187566 -1.605032 0
+ 3.584170 -2.618737 0
+ 2.606669 -2.256700 0
+ 2.570466 -3.560034 0
+ 1.291267 -4.235838 0
+ 0.760279 -3.415219 0
+ -0.313766 -3.427287 0
+ -0.579260 -4.259973 0
+ -2.232564 -3.728985 0
+ -2.027409 -2.751484 0
+ -3.391084 -2.654941 0
+ -4.091023 -1.242995 0
+ -3.318676 -0.446513 0
+ -4.332381 0.000000 0
+ -4.066887 1.013705 0
+ -2.992843 1.399878 0
+# Layer: XTRKCAD3
+ F4 12410368 0.000000 26 0
+ 0.603396 2.823892 0
+ 1.448150 3.668646 0
+ 2.256700 3.173861 0
+ 1.894662 1.761915 0
+ 3.511763 1.315403 0
+ 3.620374 0.615464 0
+ 2.606669 -0.084475 0
+ 3.487627 -1.411946 0
+ 3.101454 -1.870527 0
+ 2.136021 -1.846391 0
+ 2.087749 -2.956639 0
+ 1.255063 -3.415219 0
+ 0.567192 -2.606669 0
+ -0.470649 -2.751484 0
+ -0.712007 -3.306608 0
+ -1.592965 -3.077318 0
+ -1.605032 -2.111885 0
+ -2.341175 -2.087749 0
+ -2.823892 -1.122316 0
+ -1.967070 -0.313766 0
+ -2.775620 0.108611 0
+ -2.642873 0.687871 0
+ -1.351606 0.929229 0
+ -1.846391 1.810187 0
+ -1.037841 2.437719 0
+ -0.712007 3.149725 0
+ L3 12410368 0.000000 -0.765581 3.718537 0 -0.328106 3.390431 0
+ L3 12410368 0.000000 -3.062325 2.078006 0 -2.734219 1.749900 0
+ L3 12410368 0.000000 -2.296744 1.859269 0 -1.859269 1.531162 0
+ L3 12410368 0.000000 -3.718537 0.874950 0 -2.952956 0.874950 0
+ L3 12410368 0.000000 -2.515481 -0.328106 0 -3.062325 -0.218737 0
+ L3 12410368 0.000000 -3.390431 -1.640531 0 -2.843587 -1.749900 0
+ L3 12410368 0.000000 -1.640531 -3.281062 0 -1.859269 -3.609169 0
+ L3 12410368 0.000000 -0.109369 -2.952956 0 0.000000 -3.281062 0
+ L3 12410368 0.000000 1.421794 -3.499800 0 1.312425 -3.937275 0
+ L3 12410368 0.000000 3.281062 -2.078006 0 3.499800 -2.406112 0
+ L3 12410368 0.000000 -3.062325 2.734219 0 -2.843587 2.296744 0
+ L3 14915328 0.000000 -3.499800 2.078006 0 -3.171694 2.296744 0
+ L3 16755200 0.000000 3.827906 0.328106 0 3.390431 0.218737 0
+ L3 16755200 0.000000 -1.093687 3.499800 0 -1.203056 2.952956 0
+ L3 16755200 0.000000 -2.515481 2.296744 0 -1.749900 2.296744 0
+ L3 16755200 0.000000 -2.078006 1.203056 0 -2.734219 1.093687 0
+ L3 16755200 0.000000 -3.718537 0.218737 0 -3.062325 0.546844 0
+ L3 16755200 0.000000 -2.952956 -0.765581 0 -3.718537 -1.203056 0
+ L3 16755200 0.000000 -2.624850 -2.515481 0 -2.406112 -2.187375 0
+ L3 16755200 0.000000 -0.984319 -3.499800 0 -0.765581 -3.827906 0
+ L3 16755200 0.000000 0.546844 -2.952956 0 0.218737 -3.171694 0
+ L3 16755200 0.000000 2.078006 -3.281062 0 2.406112 -3.390431 0
+ L3 16755200 0.000000 3.827906 -1.531162 0 3.499800 -1.640531 0
+# Layer: XTRKCAD4
+ F4 6815744 0.000000 5 0
+ -0.655243 2.074936 0
+ -0.592839 1.716113 0
+ 0.078005 1.419693 0
+ 0.265217 1.856522 0
+ -0.078005 2.184143 0
+ F4 6815744 0.000000 4 0
+ 2.137340 -0.078005 0
+ 1.326087 -0.265217 0
+ 1.154476 0.140409 0
+ 2.262149 0.202813 0
+ F4 6815744 0.000000 4 0
+ 0.514834 -2.074936 0
+ 0.109207 -1.762916 0
+ 0.218414 -1.107673 0
+ 0.468031 -1.201279 0
+ F4 6815744 0.000000 5 0
+ -1.638108 -0.187212 0
+ -1.419693 -0.031202 0
+ -0.670844 0.156010 0
+ -0.265217 -0.265217 0
+ -1.201279 -0.405627 0
+ L3 6815744 0.000000 1.531162 2.078006 0 0.984319 1.859269 0
+ L3 6815744 0.000000 0.984319 2.843587 0 0.765581 2.406112 0
+ L3 6815744 0.000000 -0.437475 2.734219 0 -0.218737 2.406112 0
+ L3 6815744 0.000000 -0.984319 1.203056 0 -0.437475 1.421794 0
+ L3 6815744 0.000000 -1.312425 0.656212 0 -0.874950 0.328106 0
+ L3 6815744 0.000000 -2.515481 0.218737 0 -1.968637 0.000000 0
+ L3 6815744 0.000000 -1.749900 -0.546844 0 -2.187375 -0.984319 0
+ L3 6815744 0.000000 -0.437475 -1.968637 0 -0.546844 -2.624850 0
+ L3 6815744 0.000000 -0.328106 -1.203056 0 -0.218737 -1.640531 0
+ L3 6815744 0.000000 0.765581 -1.968637 0 0.984319 -2.624850 0
+ L3 6815744 0.000000 1.312425 -1.859269 0 1.968637 -2.187375 0
+ L3 6815744 0.000000 2.952956 -0.765581 0 2.406112 -0.874950 0
+ L3 6815744 0.000000 2.952956 -1.749900 0 2.406112 -1.531162 0
+ L3 6815744 0.000000 3.171694 -1.312425 0 2.624850 -1.203056 0
+ L3 6815744 0.000000 1.312425 -3.171694 0 1.203056 -2.734219 0
+ L3 6815744 0.000000 1.968637 -2.843587 0 1.640531 -2.515481 0
+ L3 6815744 0.000000 3.281062 0.546844 0 2.624850 0.656212 0
+ L3 6815744 0.000000 3.281062 1.093687 0 2.734219 0.984319 0
+ L3 6815744 0.000000 -1.093687 -3.062325 0 -0.984319 -2.624850 0
+ L3 6815744 0.000000 -2.406112 -1.531162 0 -2.078006 -1.312425 0
+ L3 6815744 0.000000 1.531162 3.499800 0 1.312425 2.952956 0
+ L3 6815744 0.000000 1.968637 3.171694 0 1.640531 2.843587 0
+ L3 11184640 0.000000 1.531162 -2.952956 0 1.312425 -2.296744 0
+ L3 14915328 0.000000 1.749900 2.624850 0 1.421794 2.406112 0
+ L3 14915328 0.000000 -1.968637 0.546844 0 -1.531162 0.328106 0
+ F4 16755200 0.000000 4 0
+ 1.684911 1.731714 0
+ 0.998466 1.528900 0
+ 0.920460 1.014067 0
+ 1.372890 1.201279 0
+ F4 16755200 0.000000 3 0
+ 1.903325 -1.560102 0
+ 1.684911 -1.076471 0
+ 1.341688 -1.372890 0
+ F4 16755200 0.000000 4 0
+ -1.435294 -1.809719 0
+ -0.998466 -1.700512 0
+ -0.686445 -0.967264 0
+ -1.170077 -1.092072 0
+ L3 16755200 0.000000 0.218737 2.406112 0 0.437475 2.078006 0
+ L3 16755200 0.000000 -1.312425 1.749900 0 -0.874950 1.749900 0
+ L3 16755200 0.000000 -1.968637 -1.531162 0 -1.640531 -1.093687 0
+ L3 16755200 0.000000 -1.203056 -2.406112 0 -0.874950 -1.968637 0
+ L3 16755200 0.000000 2.734219 1.421794 0 2.187375 1.093687 0
+ END$SEGS
+
+STRUCTURE * "Sm Fall 10"" Fall-10a"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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 * "Sm Fall 10"" Fall-10b"
+# Layer: XTRKCAD1
+ 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
+# Layer: XTRKCAD2
+ 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
+# Layer: XTRKCAD3
+ 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
+# Layer: XTRKCAD4
+ 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
+
diff --git a/app/lib/params/USA-G.xtp b/app/lib/params/USA-G.xtp
deleted file mode 100644
index 3b75495..0000000
--- a/app/lib/params/USA-G.xtp
+++ /dev/null
@@ -1,110 +0,0 @@
-CONTENTS USA Trains
-SUBCONTENTS USA Trains Straight Track
-TURNOUT G "USA Trains 6" Straight R81015"
- 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 G "USA Trains 12" Straight R81000"
- 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
-TURNOUT G "USA Trains 24" Straight R81060"
- 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
- END
-TURNOUT G "USA Trains 60" Straight R81065"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 60.000000 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 60.000000 0.000000
- END
-
-SUBCONTENTS USA Trains Curve Track
-TURNOUT G "USA Trains 4' Diameter R81100"
- 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
-TURNOUT G "USA Trains 5' Diameter R81500"
- 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
-TURNOUT G "USA Trains 8' Diameter R81600"
- 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
-TURNOUT G "USA Trains 10' Diameter R81700"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 30.000000 8.038476 60.000000
- C 0 0.000000 -60.000000 0.000000 60.000000 150.000000 30.000000
- END
-TURNOUT G "USA Trains 16' Diameter R81800"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 37.885660 7.535926 67.500000
- C 0 0.000000 -96.000000 0.000000 96.000000 157.500000 22.500000
- END
-TURNOUT G "USA Trains 20' Diameter R81900"
- P "Normal" 1
- E 0.000000 0.000000 270.000000
- E 45.922012 9.134456 67.500000
- C 0 0.000000 -120.000000 0.000000 120.000000 157.500000 22.500000
- END
-
-SUBCONTENTS USA Trains Turnouts
-TURNOUT G "USA Trains Lefthand Remote Switch R81215"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 12.000000 3.000000 60.000000
- S 0 0.000000 0.000000 0.000000 2.573848 0.000000
- S 0 0.000000 2.573848 0.000000 12.000000 0.000000
- C 0 0.000000 -15.786575 2.573848 15.786575 150.000000 30.000000
- S 0 0.000000 10.467135 2.115000 12.000000 3.000000
- END
-TURNOUT G "USA Trains Righthand Remote Switch R81205"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 12.000000 0.000000 90.000000
- E 12.000000 -3.000000 120.000000
- S 0 0.000000 0.000000 0.000000 2.573848 0.000000
- S 0 0.000000 2.573848 0.000000 12.000000 0.000000
- C 0 0.000000 15.786575 2.573848 -15.786575 0.000000 30.000000
- S 0 0.000000 10.467135 -2.115000 12.000000 -3.000000
- END
-TURNOUT G "USA Trains #6 Lefthand R81615"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- E 36.000000 4.250000 80.405932
- 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
-TURNOUT G "USA Trains #6 Righthand R81605"
- P "Normal" 1 2
- P "Reverse" 1 3 4
- E 0.000000 0.000000 270.000000
- E 36.000000 0.000000 90.000000
- E 36.000000 -4.250000 99.594068
- 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.769569 -108.280640 0.000076 9.594220
- S 0 0.000000 19.817041 -1.514534 36.000000 -4.250000
- END
diff --git a/app/lib/params/Z-Eisen Platz Track.xtp b/app/lib/params/Z-Eisen Platz Track.xtp
new file mode 100644
index 0000000..532914a
--- /dev/null
+++ b/app/lib/params/Z-Eisen Platz Track.xtp
@@ -0,0 +1,21 @@
+CONTENTS Eisen Platz Z Scale Track Components
+
+SUBCONTENTS Eisen Platz Z-Scale - Track Straight Track
+TURNOUT Z "Eisen Platz Straight 110mm ZP-002"
+ 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.053333 0.000000 0.300000 4.330709 0.300000
+ L 11579568 0.053333 0.000000 -0.300000 4.330709 -0.300000
+ END
+
+SUBCONTENTS Eisen Platz Z-Scale - Track Curve Track
+TURNOUT Z "Eisen Platz Curved 195mm 45° ZP-001"
+ 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.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
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-Prim Track.xtp b/app/lib/params/Z-Prim Track.xtp
new file mode 100644
index 0000000..7ae1d8f
--- /dev/null
+++ b/app/lib/params/Z-Prim Track.xtp
@@ -0,0 +1,29 @@
+CONTENTS Prim Z Scale Track Components
+
+SUBCONTENTS Prim Z-Scale - Track Straight Track
+TURNOUT Z "Prim Straight 220mm 5001"
+ 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.053333 0.000000 0.300000 8.661417 0.300000
+ L 11579568 0.053333 0.000000 -0.300000 8.661417 -0.300000
+ END
+
+SUBCONTENTS Prim Z-Scale - Track Curve Track
+TURNOUT Z "Prim Curved 195mm 45° 5002"
+ 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.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 "Prim Curved 220mm 45° 5003"
+ 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.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
diff --git a/app/lib/params/Z-RealZJ Track.xtp b/app/lib/params/Z-RealZJ Track.xtp
new file mode 100644
index 0000000..4512973
--- /dev/null
+++ b/app/lib/params/Z-RealZJ Track.xtp
@@ -0,0 +1,37 @@
+CONTENTS RealZJ Z Scale Track Components
+
+SUBCONTENTS RealZJ Z-Scale - Track Straight Track
+TURNOUT Z "RealZJ Straight 110mm Z302-02"
+ 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.053333 0.000000 0.300000 4.330709 0.300000
+ L 11579568 0.053333 0.000000 -0.300000 4.330709 -0.300000
+ END
+TURNOUT Z "RealZJ Straight 220mm Z302-01"
+ 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.053333 0.000000 0.300000 8.661417 0.300000
+ L 11579568 0.053333 0.000000 -0.300000 8.661417 -0.300000
+ END
+
+SUBCONTENTS RealZJ Z-Scale - Track Curve Track
+TURNOUT Z "RealZJ Curved 195mm 45° Z303-02"
+ 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.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 "RealZJ Curved 220mm 45° Z303-03"
+ 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.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
diff --git a/app/lib/params/Z-Rokuhan.xtp b/app/lib/params/Z-Rokuhan.xtp
index cb37237..49ee073 100644
--- a/app/lib/params/Z-Rokuhan.xtp
+++ b/app/lib/params/Z-Rokuhan.xtp
@@ -1,1173 +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"
- 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 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"
- 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
- L 11579568 0.019685 0.000000 0.300000 4.330709 0.300000
- L 11579568 0.019685 0.000000 -0.300000 4.330709 -0.300000
- 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
-##########################################################################
-##########################################################################
-
-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
- 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
-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.000000 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
-##########################################################################
-##########################################################################
-
-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"
- 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 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"
- 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/arnold.xtp b/app/lib/params/arnold.xtp
index e3770ba..3ef9001 100644
--- a/app/lib/params/arnold.xtp
+++ b/app/lib/params/arnold.xtp
@@ -1,4 +1,4 @@
-CONTENTS Arnold-Tracks N Scale
+CONTENTS Arnold Track N Scale
# From 'Märklin Complete Program 1994/95 E'
# Elementos diseñados por MAA - 7.086614
# Straight Section Design by MAA - 22.200000
@@ -181,9 +181,11 @@ TURNOUT N "Arnold Crossing Left 15º 1853"
S 0 0 0.153193 0.565527 4.374366 -0.565527
END
# Double Slipswitch Design by MAA - 11.100000 15.000000 11.500000
-TURNOUT N "Arnold Double Slipswitch 1720"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT N "Arnold Double Slipswitch 1720" 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.370079 0.000000 90.000000
E -0.001605 0.585906 285.000000
@@ -198,9 +200,11 @@ TURNOUT N "Arnold Double Slipswitch 1720"
C 0 0 -11.830772 3.742574 11.830768 180.000076 15.000152
END
# Double Slipswitch Design by MAA - 11.500000 15.000000 11.100000
-TURNOUT N "Arnold Double Slipswitch Remote 1721"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT N "Arnold Double Slipswitch Remote 1721" 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.527559 0.000000 90.000000
E 0.153193 0.565527 285.000000
diff --git a/app/lib/params/atl83ho.xtp b/app/lib/params/atl83ho.xtp
index 03f5086..0f32c2a 100644
--- a/app/lib/params/atl83ho.xtp
+++ b/app/lib/params/atl83ho.xtp
@@ -150,8 +150,8 @@ TURNOUT HO "Atlas Curve Left C83 Customline 595"
E 0.000000 0.000000 270.000000
E 15.000000 4.019238 60.000000
E 13.392751 4.546227 52.500000
- C 0 0.000000 30.000000 0.000000 30.000000 150.000000 30.000000
- C 0 0.000000 22.000000 0.000000 22.000000 142.500000 37.500000
+ C 0 0.000000 -30.000000 0.000000 30.000000 150.000000 30.000000
+ C 0 0.000000 -22.000000 0.000000 22.000000 142.500000 37.500000
END
TURNOUT HO "Atlas Curve Right C83 Customline 596"
P "Normal" 1
diff --git a/app/lib/params/atlaso2rail.xtp b/app/lib/params/atlaso2rail.xtp
deleted file mode 100644
index 7f0e69c..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"
- 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 49fae73..0000000
--- a/app/lib/params/fl-model.xtp
+++ /dev/null
@@ -1,496 +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"
- 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"
- 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"
- 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 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"
- 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 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/flnpicco.xtp b/app/lib/params/flnpicco.xtp
index b9fc119..94d7d8e 100644
--- a/app/lib/params/flnpicco.xtp
+++ b/app/lib/params/flnpicco.xtp
@@ -183,10 +183,12 @@ TURNOUT N "Fleischmann N Scale Crossing Left 111mm 15° 9163"
L 0 0.000000 2.103522 -0.304228 4.290165 -0.890138
L 0 0.000000 0.079914 0.890138 2.266557 0.304228
END
-TURNOUT N "Fleischmann N Scale Double Slip Left 111mm 15° 9184"
+TURNOUT N "Fleischmann N Scale Double Slip Left 111mm 15° 9184" 512
U "Double Slipswitch" "Sillub Technology" "Fleischmann N Scale" "Double Slip Left 111mm 15°" "9184" 4.527559 15.000000 4.370079 0.629921 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.527559 0.000000 90.000000
E 0.153194 0.565530 285.000000
@@ -206,10 +208,12 @@ TURNOUT N "Fleischmann N Scale Double Slip Left 111mm 15° 9184"
A 0 0.000000 10.917940 0.784940 -11.232900 0.000000 15.000000
A 0 0.000000 10.917940 3.742619 11.232900 180.000000 15.000000
END
-TURNOUT N "Fleischmann N Scale Double Slip Right 111mm 15° 9185"
+TURNOUT N "Fleischmann N Scale Double Slip Right 111mm 15° 9185" 512
U "Double Slipswitch" "Sillub Technology" "Fleischmann N Scale" "Double Slip Right 111mm 15°" "9185" 4.370079 15.000000 4.527559 0.629921 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.370079 0.000000 90.000000
E -0.001604 0.585909 285.000000
@@ -229,10 +233,12 @@ TURNOUT N "Fleischmann N Scale Double Slip Right 111mm 15° 9185"
A 0 0.000000 11.516031 0.627460 -11.830991 0.000000 15.000000
A 0 0.000000 11.516031 3.742619 11.830991 180.000000 15.000000
END
-TURNOUT N "Fleischmann N Scale Double Slip w/Motor Left 111mm 15° 9186"
+TURNOUT N "Fleischmann N Scale Double Slip w/Motor Left 111mm 15° 9186" 512
U "Double Slipswitch" "Sillub Technology" "Fleischmann N Scale" "Double Slip w/Motor Left 111mm 15°" "9186" 4.527559 15.000000 4.370079 0.629921 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.527559 0.000000 90.000000
E 0.153194 0.565530 285.000000
@@ -252,10 +258,12 @@ TURNOUT N "Fleischmann N Scale Double Slip w/Motor Left 111mm 15° 9186"
A 0 0.000000 10.917940 0.784940 -11.232900 0.000000 15.000000
A 0 0.000000 10.917940 3.742619 11.232900 180.000000 15.000000
END
-TURNOUT N "Fleischmann N Scale Double Slip w/Motor Right 111mm 15° 9187"
+TURNOUT N "Fleischmann N Scale Double Slip w/Motor Right 111mm 15° 9187" 512
U "Double Slipswitch" "Sillub Technology" "Fleischmann N Scale" "Double Slip w/Motor Right 111mm 15°" "9187" 4.370079 15.000000 4.527559 0.629921 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.370079 0.000000 90.000000
E -0.001604 0.585909 285.000000
diff --git a/app/lib/params/hubner1.xtp b/app/lib/params/hubner1.xtp
index 6936506..cffce1e 100644
--- a/app/lib/params/hubner1.xtp
+++ b/app/lib/params/hubner1.xtp
@@ -76,18 +76,21 @@ TURNOUT 1 "Húbner Right 10° Crossing T1042"
S 0 0 0.000000 2.756000 31.496000 -2.756000
END
TURNOUT 1 "Húbner Left 10° Crossing T1042"
+# Fixed angles on EPs
P "Normal" 1 0 2
E 0.000000 0.000000 270.000000
E 31.496063 0.000000 90.000000
- E 0.000000 -2.755906 80.000000
- E 31.496063 2.755906 260.000000
+ E 0.000000 -2.755906 260.000000
+ E 31.496063 2.755906 80.000000
S 0 0 0.000000 0.000000 31.496000 0.000000
S 0 0 0.000000 -2.756000 31.496000 2.756000
END
# Double Slipswitch Design by Dave Bullis - 31.496063 10.000000 31.981932
-TURNOUT 1 "Húbner Right 10° Double Slip T1024"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT 1 "Húbner Right 10° Double Slip T1024" 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 31.496063 0.000000 90.000000
E 0.000000 2.776802 280.000000
@@ -101,9 +104,11 @@ TURNOUT 1 "Húbner Right 10° Double Slip T1024"
C 0 0 142.416000 3.288000 -142.416000 0.000000 10.000000
C 0 0 -142.416000 28.208000 142.416000 180.000000 10.000000
END
-TURNOUT 1 "Húbner Right 10° Double Slip T1024"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT 1 "Húbner Right 10° Double Slip T1024" 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 31.496063 0.000000 90.000000
E 0.000000 -2.776802 260.000000
diff --git a/app/lib/params/kato-ho.xtp b/app/lib/params/kato-ho.xtp
deleted file mode 100644
index a27b259..0000000
--- a/app/lib/params/kato-ho.xtp
+++ /dev/null
@@ -1,556 +0,0 @@
-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 Slip 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.685039 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.685039 -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.685039 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.685039 -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 Slip 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
diff --git a/app/lib/params/lgb.xtp b/app/lib/params/lgb.xtp
index 53a2b74..d879243 100644
--- a/app/lib/params/lgb.xtp
+++ b/app/lib/params/lgb.xtp
@@ -193,9 +193,11 @@ TURNOUT G "LGB Electric Switch R1 Right 12050"
C 0 0.000000 17.016317 1.770000 -17.016317 0.000000 30.000000
S 0 0.000000 10.278159 -2.279754 11.811024 -3.164754
END
-TURNOUT G "LGB Electric Double-Slip Switch 12260"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT G "LGB Electric Double-Slip Switch 12260" 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 14.763780 0.000000 90.000000
E 0.561913 2.824927 292.500000
@@ -322,7 +324,7 @@ TURNOUT G "LGB Crossing 22.5° R3 13200"
END
SUBCONTENTS LGB Turntable
-TURNOUT G "LGB Turntable 14000"
+TURNOUT G "LGB Turntable 14000" 512
P "1" 1 2 3
P "2" 4 5 6
P "3" 7 8 9
@@ -331,14 +333,14 @@ TURNOUT G "LGB Turntable 14000"
P "6" 16 17 18
P "7" 19 20 21
P "8" 22 23 24
- P "9" -3 -2 -1
- P "10" -6 -5 -4
- P "11" -9 -8 -7
- P "12" -12 -11 -10
- P "13" -15 -14 -13
- P "14" -18 -17 -16
- P "15" -21 -20 -19
- P "16" -24 -23 -22
+# P "9" -3 -2 -1
+# P "10" -6 -5 -4
+# P "11" -9 -8 -7
+# P "12" -12 -11 -10
+# P "13" -15 -14 -13
+# P "14" -18 -17 -16
+# P "15" -21 -20 -19
+# P "16" -24 -23 -22
E 0.000000 14.566929 0.000000
E -0.000000 -14.566929 180.000000
E 5.574522 13.458088 22.500000
diff --git a/app/lib/params/marcway-EM.xtp b/app/lib/params/marcway-EM.xtp
index 2b17a56..2ffe46e 100644
--- a/app/lib/params/marcway-EM.xtp
+++ b/app/lib/params/marcway-EM.xtp
@@ -119,10 +119,12 @@ TURNOUT EM "Marcway 48"" Single Slip"
S 0 0.000000 11.557720 -0.762329 12.842466 -0.954351
C 0 0.000000 69.400341 1.299246 -69.400341 0.000076 8.500152
END
-TURNOUT EM "Marcway 48"" Double Slip"
+TURNOUT EM "Marcway 48"" Double Slip" 512
U "Double Slipswitch" "" "Marcway" "48"" Double Slip" "" 12.913386 8.500000 12.913386 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.913386 0.000000 90.000000
E 0.070920 0.954351 278.500000
diff --git a/app/lib/params/mkcarpart.c b/app/lib/params/mkcarpart.c
index 7680a8b..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>
@@ -55,7 +55,7 @@ void readMap(
{
FILE * mapF;
char line[256];
- int len;
+ size_t len;
mapF = fopen( mapFile, "r" );
if ( mapF == NULL ) {
perror( mapFile );
@@ -110,7 +110,7 @@ void readRoadnameMap(
exit(1);
}
while ( fgets( line, sizeof line, mapF ) != NULL ) {
- int len = strlen( line );
+ size_t len = strlen( line );
if ( line[len-1] == '\n' )
line[--len] = '\0';
if ( line[0] == '\0' || line[0] == '\n' || line[0] == '#' )
@@ -272,26 +272,26 @@ 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;
int lineNumber = 0;
char roadnameS[256];
char repmarkS[256];
- int len;
+ size_t len;
int inx;
char * cp, *cq;
char * tab[20];
char blanks[10];
- int partX = 1;
- int descX = 2;
- int roadX = 3;
- int numbX = 4;
- int colorX = 5;
+ size_t partX = 1;
+ size_t descX = 2;
+ size_t roadX = 3;
+ size_t numbX = 4;
+ size_t colorX = 5;
inF = fopen( inFile, "r" );
if ( inF == NULL ) {
@@ -309,18 +309,28 @@ void processFile(
if ( line[0] == '\n' || line[0] == '#' )
continue;
len = strlen(line);
- if ( line[len-1] == '\n' )
+ if ( len >= 1 && line[len-1] == '\n' )
line[len-1] = '\0';
+ if ( len >= 2 && line[len-2] == '\r' )
+ line[len-2] = '\0';
if ( strnicmp( line, "scale=", 6 ) == 0 ) {
strcpy( scale, line+6 );
if ( stricmp( scale, "N" ) == 0 )
ratio = 160.0;
- else if ( stricmp( scale, "HO" ) == 0 )
+ else if ( stricmp( scale, "HO" ) == 0 || stricmp(scale, "HOn3") == 0 )
ratio = 87.1;
- else if ( stricmp( scale, "O" ) == 0 )
- ratio = 48.0;
- else if ( stricmp( scale, "S" ) == 0 )
+ else if ( stricmp( scale, "S" ) == 0 || stricmp(scale, "Sn3") == 0 )
ratio = 64.0;
+ else if ( stricmp(scale, "O") == 0 || stricmp(scale, "On3") == 0 || stricmp(scale, "On30") == 0 )
+ ratio = 48.0;
+ else if ( stricmp(scale, "1") == 0 )
+ ratio = 32.0;
+ else if ( stricmp(scale, "A") == 0 )
+ ratio = 29.0;
+ else if ( stricmp(scale, "G") == 0 )
+ ratio = 22.5;
+ else if ( stricmp(scale, "F") == 0 || stricmp(scale, "Fn2") == 0 || stricmp(scale, "Fn3") == 0 )
+ ratio = 20.32;
else {
fprintf( stderr, "%d: Unknown scale %s\n", lineNumber, scale );
ratio = 87.1;
@@ -426,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/mrkhomde.xtp b/app/lib/params/mrkhomde.xtp
index 88d5487..9c5dbe3 100644
--- a/app/lib/params/mrkhomde.xtp
+++ b/app/lib/params/mrkhomde.xtp
@@ -233,9 +233,11 @@ TURNOUT HO " Maerklin M R22.5° 5139"
A3 16754688 0.052083 10.174306 0.664340 -9.127565 0 0.000000 22.500000
L3 16754688 0.052083 4.557878 0.272268 0 5.157107 0.024059 0
END
-TURNOUT HO " Maerklin M DKW30° 5128"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO " Maerklin M DKW30° 5128" 512
+ P "Cross1" 1 2 3
+ P "Cross2" 4 5 6
+ P "Slip1" 1 7 6
+ P "Slip2" 4 8 3
E 0.215299 0.738192 255.000000
E 7.554814 2.704807 75.000000
E 0.215300 2.704809 285.000000
@@ -502,10 +504,12 @@ TURNOUT HO " Maerklin M 3WegW 5214"
L3 16754688 0.052083 6.205026 0.290474 0 6.796240 0.023738 0
L3 16754688 0.052083 7.144743 1.486187 0 7.403399 1.369490 0
END
-TURNOUT HO " Maerklin M DKW24.3°P 5207"
+TURNOUT HO " Maerklin M DKW24.3°P 5207" 512
U "DKW" "jr" " Maerklin M " " DKW24.3°P " "5207" 7.086614 24.283000 7.086614 1.476378 0.053333 16754688
- P "P0" 5 3 8 0 7 4 6
- P "P1" 7 2 8 0 5 1 6
+ P "Cross1" 5 3 8
+ P "Cross2" 7 4 6
+ P "Slip1" 7 2 8
+ P "Slip2" 5 1 6
E 0.000000 0.000000 270.000000
E 6.773121 -1.457164 114.282972
E 7.086614 0.000000 90.000000
@@ -918,10 +922,18 @@ TURNOUT HO " Maerklin M 3x30°P 3x5200"
A3 16754688 0.051803 17.958661 0.000010 17.220483 0 90.000000 90.000000
A3 16754688 0.051803 16.482283 0.000010 17.220483 0 90.000000 90.000000
END
-TURNOUT HO " Maerklin M HarfeL22°5 2x5138 + 1x5207 + 2x5210"
- P "P0" 6 5 0 16 10 15 0 1 2
- P "P1" 16 11 13 18 8 7 5 0 1 3 4 17 14 12 15
- P "P2" 1 3 4 17 14 9 13 18 8 7 5 0 16 10 15
+TURNOUT HO " Maerklin M HarfeL22°5 2x5138 + 1x5207 + 2x5210" 256
+# P "1-3+4-6" 1 3 4 17 14 12 15 0 16 11 13 18 8 7 5
+ P "2-3+4-6 Straight+Slip" 1 3 4 17 14 12 15 0 6 5
+# P "1-4+3-6" 1 3 4 17 14 9 13 18 8 7 5 0 16 10 15
+ P "3-6 Slip+Slip" 1 3 4 17 14 9 13 18 8 7 5
+ P "1-3+5-6 Slip+Straight" 1 2 0 16 11 13 18 8 7 5
+ P "1-4+2-3+5-6 3 Straight" 1 2 0 6 5 0 16 10 15
+# P "P4" 6 5 0 1 3 4 17 14 12 15
+# P "P5" 16 11 13 18 8 7 5 0 1 2
+# P "P6" 16 11 13 18 8 7 5 0 1 3 4 17 14 12 15
+# P "P8" 16 10 15 0 1 3 4 17 14 9 13 18 8 7 5
+# P "P9" 16 10 15 0 6 5 0 1 2
E 0.000000 0.000000 270.000000
E 5.925197 2.893718 270.000000
E 13.011811 2.893699 90.000000
@@ -980,10 +992,18 @@ TURNOUT HO " Maerklin M HarfeL22°5 2x5138 + 1x5207 + 2x5210"
L3 16754688 0.052083 7.276995 2.494345 0 6.469542 2.130053 0
L3 16754688 0.052083 7.884149 1.148590 0 7.076696 0.784298 0
END
-TURNOUT HO " Maerklin M HarfeR22°5 2x5139 + 1x5207 + 2x5210"
- P "P0" 13 14 0 10 9 0 5 1 6
- P "P1" 13 15 16 17 7 4 6 0 5 3 8 18 12 11 9
- P "P2" 13 15 16 17 7 2 8 18 12 11 9 0 5 1 6
+TURNOUT HO " Maerklin M HarfeR22°5 2x5139 + 1x5207 + 2x5210" 256
+ P "1-5+2-3 Straight+Slip" 10 9 0 13 15 16 17 7 4 6
+# P "1-5+2-4" 5 3 8 18 12 11 9 0 13 15 16 17 7 4 6
+ P "2-4+5-6 Slip+Straight" 5 3 8 18 12 11 9 0 13 14
+# P "1-4+2-5" 5 1 6 0 13 15 16 17 7 2 8 18 12 11 9
+ P "2-5 Slip+Slip" 13 15 16 17 7 2 8 18 12 11 9
+ P "1-4+2-3+5-6 3 Straight" 5 1 6 0 10 9 0 13 14
+# P "P1" 5 3 8 18 12 11 9 0 13 14
+# P "P5" 13 15 16 17 7 4 6 0 5 3 8 18 12 11 9
+# P "P6" 13 15 16 17 7 4 6 0 10 9
+# P "P8" 5 1 6 0 13 15 16 17 7 2 8 18 12 11 9
+# P "P9" 5 1 6 0 10 9 0 13 14
E 0.000000 0.000000 270.000018
E -5.687513 2.794784 270.000000
E 1.399101 2.794803 90.000000
@@ -1110,7 +1130,7 @@ TURNOUT HO " Maerklin M WechselR22°5 2x5139 + 5108"
END
TURNOUT HO " Maerklin M WechselLBogen 5141 + 5142 + 5100 + 5200"
P "P0" 1 6 4 5 14 0 13 9 8 7
- P "P1" 1 2 3 15 11 10 12 7
+ P "P1" 1 2 3 11 10 12 7
E 0.000000 0.000000 240.000000
E 7.086653 12.274344 0.000000
E 10.133945 12.274317 0.000000
@@ -1125,11 +1145,11 @@ TURNOUT HO " Maerklin M WechselLBogen 5141 + 5142 + 5100 + 5200"
C 0 0.000000 -11.752617 -4.665963 11.625742 90.000000 30.000000
S 0 0.000000 5.187810 5.187741 5.512110 5.749447
C 0 0.000000 -11.752624 -4.665966 8.578500 90.000000 30.000000
- S 0 0.000000 5.187814 2.140497 5.512113 2.702201
+ S 0 0.000000 5.192787 2.149148 5.512113 2.702201
S 0 0.000000 7.086658 8.578515 7.086654 11.625757
C 0 0.000000 -14.173228 -7.086609 12.274379 120.000000 30.000000
C 0 0.000000 -17.220472 -7.086572 12.274344 90.000000 30.000000
- S 0 0.000000 5.192787 2.149148 5.187787 2.140488
+# S 0 0.000000 5.192787 2.149148 5.187787 2.140488
L3 16754688 0.063158 3.282436 0.598106 0 0.504676 -1.005632 0
L3 16754688 0.063158 -0.369715 -2.408937 0 0.504264 -1.005240 0
L3 16754688 0.052632 0.369087 -3.686537 0 3.569780 -1.838617 0
@@ -1157,9 +1177,10 @@ TURNOUT HO " Maerklin M WechselLBogen 5141 + 5142 + 5100 + 5200"
L3 16754688 0.052632 4.553496 2.518242 0 4.537748 2.490965 0
L3 16754688 0.052632 5.832078 1.780055 0 5.816330 1.752779 0
END
+
TURNOUT HO " Maerklin M WechselRBogen 5141 + 5142 + 5100 + 5200"
P "P0" 1 6 4 5 14 0 13 9 8 7
- P "P1" 1 2 3 15 11 10 12 7
+ P "P1" 1 2 3 11 10 12 7
E 0.000000 0.000000 0.000000
E 10.133827 -15.321626 120.000000
E 10.133814 -12.274406 120.000000
@@ -1174,11 +1195,11 @@ TURNOUT HO " Maerklin M WechselRBogen 5141 + 5142 + 5100 + 5200"
C 0 0.000000 11.752617 14.799868 -0.648581 240.000000 30.000000
S 0 0.000000 4.946113 -7.086608 4.621811 -6.524902
C 0 0.000000 11.752624 14.799879 -3.695823 240.000000 30.000000
- S 0 0.000000 4.946117 -10.133852 4.621816 -9.572148
+ S 0 0.000000 4.946117 -10.1333866 4.621816 -9.572148
S 0 0.000000 3.047255 -3.695838 3.047251 -0.648596
C 0 0.000000 14.173228 17.220444 0.000003 210.000000 30.000000
C 0 0.000000 17.220472 17.220472 0.000023 240.000000 30.000000
- S 0 0.000000 4.951063 -10.142526 4.946063 -10.133866
+# S 0 0.000000 4.951063 -10.142526 4.946063 -10.133866
L3 16754688 0.063158 6.851431 -11.676247 0 9.629186 -13.279993 0
L3 16754688 0.063158 10.503574 -14.683299 0 9.629599 -13.279601 0
L3 16754688 0.052632 9.764731 -15.960915 0 6.564042 -14.112987 0
@@ -1486,7 +1507,7 @@ TURNOUT HO " Maerklin M Bahnuebergang 7192"
L3 16777215 0.104167 5.568233 -2.316773 0 5.678962 -2.095316 0
L3 16777215 0.104167 5.678962 -2.316773 0 5.568233 -2.095316 0
END
-TURNOUT HO " Maerklin M Drehscheibe 7186"
+TURNOUT HO " Maerklin M Drehscheibe 7186" 512
P "1" 1 2 3
P "2" 4 5 6
P "3" 7 8 9
@@ -1511,30 +1532,30 @@ TURNOUT HO " Maerklin M Drehscheibe 7186"
P "22" 64 65 66
P "23" 67 68 69
P "24" 70 71 72
- P "25" -3 -2 -1
- P "26" -6 -5 -4
- P "27" -9 -8 -7
- P "28" -12 -11 -10
- P "29" -15 -14 -13
- P "30" -18 -17 -16
- P "31" -21 -20 -19
- P "32" -24 -23 -22
- P "33" -27 -26 -25
- P "34" -30 -29 -28
- P "35" -33 -32 -31
- P "36" -36 -35 -34
- P "37" -39 -38 -37
- P "38" -42 -41 -40
- P "39" -45 -44 -43
- P "40" -48 -47 -46
- P "41" -51 -50 -49
- P "42" -54 -53 -52
- P "43" -57 -56 -55
- P "44" -60 -59 -58
- P "45" -63 -62 -61
- P "46" -66 -65 -64
- P "47" -69 -68 -67
- P "48" -72 -71 -70
+# P "25" -3 -2 -1
+# P "26" -6 -5 -4
+# P "27" -9 -8 -7
+# P "28" -12 -11 -10
+# P "29" -15 -14 -13
+# P "30" -18 -17 -16
+# P "31" -21 -20 -19
+# P "32" -24 -23 -22
+# P "33" -27 -26 -25
+# P "34" -30 -29 -28
+# P "35" -33 -32 -31
+# P "36" -36 -35 -34
+# P "37" -39 -38 -37
+# P "38" -42 -41 -40
+# P "39" -45 -44 -43
+# P "40" -48 -47 -46
+# P "41" -51 -50 -49
+# P "42" -54 -53 -52
+# P "43" -57 -56 -55
+# P "44" -60 -59 -58
+# P "45" -63 -62 -61
+# P "46" -66 -65 -64
+# P "47" -69 -68 -67
+# P "48" -72 -71 -70
E 0.000000 7.598425 0.000000
E -0.000000 -7.598425 180.000000
E 0.991794 7.533420 7.500000
@@ -1658,7 +1679,7 @@ TURNOUT HO " Maerklin M Drehscheibe 7186"
A 16711680 0 7.598425 0.000000 0.000000 0.000000 360.000000
A 16711680 0 6.102362 0.000000 0.000000 0.000000 360.000000
END
-TURNOUT HO " Maerklin M Schiebebuehne 7294"
+TURNOUT HO " Maerklin M Schiebebuehne 7294" 512
# P "P0" 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
# P "P1"
P "P0" 1 2 3
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/mrklnhoc-de.xtp b/app/lib/params/mrklnhoc-de.xtp
index 754bb1b..aa4e063 100644
--- a/app/lib/params/mrklnhoc-de.xtp
+++ b/app/lib/params/mrklnhoc-de.xtp
@@ -54,23 +54,23 @@ TURNOUT HO "Märklin C-Gleis Gerade 188.3mm 24188"
L 8421376 0.030000 0.000000 0.787400 7.413386 0.787400
L 8421376 0.030000 0.000000 -0.787400 7.413386 -0.787400
END
-TURNOUT HO "Märklin C-Gleis Gerade 229.0mm 24229"
- U "Gerader Abschnitt" "XtrkCad" "Märklin C-Gleis" "Gerade 229.0mm" "24229" 9.015748
+TURNOUT HO "Märklin C-Gleis Gerade 229.3mm 24229"
+ U "Gerader Abschnitt" "XtrkCad" "Märklin C-Gleis" "Gerade 229.3mm" "24229" 9.027559
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 9.015748 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.015748 0.000000
- L 8421376 0.030000 0.000000 0.787400 9.015748 0.787400
- L 8421376 0.030000 0.000000 -0.787400 9.015748 -0.787400
+ E 9.027559 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.027559 0.000000
+ L 8421376 0.030000 0.000000 0.787400 9.027559 0.787400
+ L 8421376 0.030000 0.000000 -0.787400 9.027559 -0.787400
END
-TURNOUT HO "Märklin C-Gleis Gerade 236.0mm 24236"
- U "Gerader Abschnitt" "XtrkCad" "Märklin C-Gleis" "Gerade 236.0mm" "24236" 9.291338
+TURNOUT HO "Märklin C-Gleis Gerade 236.1mm 24236"
+ U "Gerader Abschnitt" "XtrkCad" "Märklin C-Gleis" "Gerade 236.1mm" "24236" 9.295276
P "Normal" 1
E 0.000000 0.000000 270.000000
- E 9.291338 0.000000 90.000000
- S 0 0.000000 0.000000 0.000000 9.291338 0.000000
- L 8421376 0.030000 0.000000 0.787400 9.291338 0.787400
- L 8421376 0.030000 0.000000 -0.787400 9.291338 -0.787400
+ E 9.295276 0.000000 90.000000
+ S 0 0.000000 0.000000 0.000000 9.295276 0.000000
+ L 8421376 0.030000 0.000000 0.787400 9.295276 0.787400
+ L 8421376 0.030000 0.000000 -0.787400 9.295276 -0.787400
END
TURNOUT HO "Märklin C-Gleis Gerade 360.0mm 24360"
U "Gerader Abschnitt" "XtrkCad" "Märklin C-Gleis" "Gerade 360.0mm" "24360" 14.173228
@@ -280,10 +280,12 @@ TURNOUT HO "Märklin C-Gleis Dreiwegweiche 188.3mm R2=437.5mm 24.3° 24630"
A 8421376 0.030000 -16.437009 0.000000 17.224409 155.700000 24.300000
A 8421376 0.030000 16.437009 0.000000 -17.224409 0.00000000 24.300000
END
-TURNOUT HO "Märklin C-Gleis Doppelkreuzungsweiche 188.3mm R2=437.5mm 24.3° 24624"
+TURNOUT HO "Märklin C-Gleis Doppelkreuzungsweiche 188.3mm R2=437.5mm 24.3° 24624" 512
U "Doppelkreuzungsweiche" "XtrkCad" "Märklin C-Gleis" "Doppelkreuzungsweiche" "24624" 7.413386 24.300000 7.413386
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 7.413386 0.000000 90.000000
E 0.328401 1.525357 294.300000
diff --git a/app/lib/params/mrklnz.xtp b/app/lib/params/mrklnz.xtp
index f47602c..1298241 100644
--- a/app/lib/params/mrklnz.xtp
+++ b/app/lib/params/mrklnz.xtp
@@ -156,9 +156,11 @@ TURNOUT Z "Märklin Crossing 8559"
SUBCONTENTS Märklin Z-Scale - Turnouts(Switches)
# Double Slipswitch Design by Dirk Husemann - 11.280000 13.000000 11.2800
-TURNOUT Z "Märklin Double Slip 8560"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT Z "Märklin Double Slip 8560" 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.056911 0.499498 283.000000
@@ -354,7 +356,7 @@ STRUCTURE Z "Märklin Track Bumper 15mm 8991"
L3 0 0.013333 -0.395000 0.197500 0 0.000000 -0.197500 0
L3 0 0.013333 -0.395000 -0.197500 0 0.000000 0.197500 0
END
-TURNOUT Z "Märklin Transfer Table 8994"
+TURNOUT Z "Märklin Transfer Table 8994" 512
P "P1" 1 2 3
P "P2" 4 5 6
P "P3" 7 8 9
@@ -398,7 +400,7 @@ TURNOUT Z "Märklin Transfer Table 8994"
L3 0 0.026667 5.529333 0.407333 0 7.893333 0.407333 0
L3 0 0.026667 0.801333 0.407333 0 3.165333 0.407333 0
END
-TURNOUT Z "Märklin Turntable 8599"
+TURNOUT Z "Märklin Turntable 8599" 512
P "1" 1 2 3
P "2" 4 5 6
P "3" 7 8 9
@@ -411,18 +413,18 @@ TURNOUT Z "Märklin Turntable 8599"
P "10" 28 29 30
P "11" 31 32 33
P "12" 34 35 36
- P "13" -3 -2 -1
- P "14" -6 -5 -4
- P "15" -9 -8 -7
- P "16" -12 -11 -10
- P "17" -15 -14 -13
- P "18" -18 -17 -16
- P "19" -21 -20 -19
- P "20" -24 -23 -22
- P "21" -27 -26 -25
- P "22" -30 -29 -28
- P "23" -33 -32 -31
- P "24" -36 -35 -34
+# P "13" -3 -2 -1
+# P "14" -6 -5 -4
+# P "15" -9 -8 -7
+# P "16" -12 -11 -10
+# P "17" -15 -14 -13
+# P "18" -18 -17 -16
+# P "19" -21 -20 -19
+# P "20" -24 -23 -22
+# P "21" -27 -26 -25
+# P "22" -30 -29 -28
+# P "23" -33 -32 -31
+# P "24" -36 -35 -34
E 0.000000 3.346457 0.000000
E -0.000000 -3.346457 180.000000
E 0.866127 3.232429 15.000000
diff --git a/app/lib/params/nmra-ho.xtp b/app/lib/params/nmra-ho.xtp
index c852558..8083124 100644
--- a/app/lib/params/nmra-ho.xtp
+++ b/app/lib/params/nmra-ho.xtp
@@ -606,10 +606,12 @@ TURNOUT HO "NMRA HO #8 SingleSlip 8SS"
END
SUBCONTENTS NMRA HO Scale Double Slip Turnouts
-TURNOUT HO "NMRA HO #6 Double Slip 6DS"
+TURNOUT HO "NMRA HO #6 Double Slip 6DS" 512
U "Double Slipswitch" "" "NMRA HO" "#6 Double Slip" "6DS" 15.814000 9.527283 15.814000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 15.814000 0.000000 90.000000
E 0.109060 1.308733 279.527283
@@ -623,10 +625,12 @@ TURNOUT HO "NMRA HO #6 Double Slip 6DS"
C 0 0.000000 79.291533 1.299241 -79.291533 0.000076 9.527435
C 0 0.000000 -79.291533 14.514547 79.291516 180.000076 9.527435
END
-TURNOUT HO "NMRA HO #8 Double Slip 8DS"
+TURNOUT HO "NMRA HO #8 Double Slip 8DS" 512
U "Double Slipswitch" "" "NMRA HO" "#8 Double Slip" "8DS" 21.922000 7.152669 21.922000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 21.922000 0.000000 90.000000
E 0.085298 1.364778 277.152669
diff --git a/app/lib/params/nmra-n.xtp b/app/lib/params/nmra-n.xtp
index 5beae03..d27e5ee 100644
--- a/app/lib/params/nmra-n.xtp
+++ b/app/lib/params/nmra-n.xtp
@@ -606,10 +606,12 @@ TURNOUT N "NMRA N #8 Single Slip 8SS"
END
SUBCONTENTS NMRA N Scale Double Slip Turnouts
-TURNOUT N "NMRA N #6 Double Slip 6DS"
+TURNOUT N "NMRA N #6 Double Slip 6DS" 512
U "Double Slipswitch" "" "NMRA N" "#6 Double Slip" "6DS" 9.064000 9.527283 9.064000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.064000 0.000000 90.000000
E 0.062509 0.750118 279.527283
@@ -623,10 +625,12 @@ TURNOUT N "NMRA N #6 Double Slip 6DS"
C 0 0.000000 45.879612 0.708623 -45.879612 0.000076 9.527435
C 0 0.000000 -45.879612 8.355255 45.879602 180.000076 9.527435
END
-TURNOUT N "NMRA N #8 Double Slip 8DS"
+TURNOUT N "NMRA N #8 Double Slip 8DS" 512
U "Double Slipswitch" "" "NMRA N" "#8 Double Slip" "8DS" 12.388000 7.152669 12.388000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.388000 0.000000 90.000000
E 0.048201 0.771229 277.152669
diff --git a/app/lib/params/nmra-o.xtp b/app/lib/params/nmra-o.xtp
index 109c5af..abea10e 100644
--- a/app/lib/params/nmra-o.xtp
+++ b/app/lib/params/nmra-o.xtp
@@ -606,10 +606,12 @@ TURNOUT O "NMRA O #8 Single Slip 8SS"
END
SUBCONTENTS NMRA O Scale Double Slip Turnouts
-TURNOUT O "NMRA O #6 Double Slip 6DS"
+TURNOUT O "NMRA O #6 Double Slip 6DS" 512
U "Double Slipswitch" "" "NMRA O" "#6 Double Slip" "6DS" 27.874000 9.527283 27.874000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 27.874000 0.000000 90.000000
E 0.192231 2.306794 279.527283
@@ -623,10 +625,12 @@ TURNOUT O "NMRA O #6 Double Slip 6DS"
C 0 0.000000 137.240374 2.500080 -137.240374 0.000076 9.527435
C 0 0.000000 -137.240374 25.373554 137.240344 180.000076 9.527435
END
-TURNOUT O "NMRA O #8 Double Slip 8DS"
+TURNOUT O "NMRA O #8 Double Slip 8DS" 512
U "Double Slipswitch" "" "NMRA O" "#8 Double Slip" "8DS" 38.960000 7.152669 38.960000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 38.960000 0.000000 90.000000
E 0.151592 2.425498 277.152669
diff --git a/app/lib/params/nmra-s.xtp b/app/lib/params/nmra-s.xtp
index 3ce08a3..78500cf 100644
--- a/app/lib/params/nmra-s.xtp
+++ b/app/lib/params/nmra-s.xtp
@@ -591,28 +591,27 @@ TURNOUT S "NMRA S #6 Single Slip 6SS"
C 0 0.000000 105.957235 1.748056 -105.957235 0.000076 9.527435
END
TURNOUT S "NMRA S #8 Single Slip 8SS"
- U "Double Slipswitch" "" "NMRA S" "#8 Single Slip" "8SS" 29.468000 7.152669 29.468000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ U "Single Slipswitch" "" "NMRA S" "#8 Single Slip" "8SS" 29.468000 7.152669 29.468000 0.000000 0.000000 0
+ P "Normal" 1 2 0 3 4
+ P "Reverse" 1 5 4
E 0.000000 0.000000 270.000000
E 29.468000 0.000000 90.000000
E 0.114659 1.834563 277.152669
E 29.353341 -1.834563 97.152669
S 0 0.000000 0.000000 0.000000 1.748901 0.000000
- S 0 0.000000 1.748901 0.000000 27.719099 0.000000
- S 0 0.000000 27.719099 0.000000 29.468000 0.000000
- S 0 0.000000 0.114659 1.834563 1.848507 1.616945
- S 0 0.000000 1.848507 1.616945 27.619493 -1.616945
+ S 0 0.000000 1.748901 0.000000 29.468000 0.000000
+ S 0 0.000000 0.114659 1.834563 27.619493 -1.616945
S 0 0.000000 27.619493 -1.616945 29.353341 -1.834563
C 0 0.000000 207.768967 1.748074 -207.768967 0.000076 7.152821
- C 0 0.000000 -207.768967 27.719372 207.768933 180.000076 7.152821
END
SUBCONTENTS NMRA S Scale Double Slip Turnouts
-TURNOUT S "NMRA S #6 Double Slip 6DS"
+TURNOUT S "NMRA S #6 Double Slip 6DS" 512
U "Double Slipswitch" "" "NMRA S" "#6 Double Slip" "6DS" 21.156000 9.527283 21.156000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 21.156000 0.000000 90.000000
E 0.145901 1.750826 279.527283
@@ -626,17 +625,22 @@ TURNOUT S "NMRA S #6 Double Slip 6DS"
C 0 0.000000 105.957235 1.748056 -105.957235 0.000076 9.527435
C 0 0.000000 -105.957235 19.407661 105.957212 180.000076 9.527435
END
-TURNOUT S "NMRA S #8 Double Slip 8DS"
- U "Single Slipswitch" "" "NMRA S" "#8 Double Slip" "8DS" 29.468000 7.152669 29.468000 0.000000 0.000000 0
- P "Normal" 1 2 0 3 4
- P "Reverse" 1 5 4
+TURNOUT S "NMRA S #8 Double Slip 8DS" 512
+ U "Double Slipswitch" "" "NMRA S" "#8 Double Slip" "8DS" 29.468000 7.152669 29.468000 0.000000 0.000000 0
+ 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 29.468000 0.000000 90.000000
E 0.114659 1.834563 277.152669
E 29.353341 -1.834563 97.152669
S 0 0.000000 0.000000 0.000000 1.748901 0.000000
- S 0 0.000000 1.748901 0.000000 29.468000 0.000000
- S 0 0.000000 0.114659 1.834563 27.619493 -1.616945
+ S 0 0.000000 1.748901 0.000000 27.719099 0.000000
+ S 0 0.000000 27.719099 0.000000 29.468000 0.000000
+ S 0 0.000000 0.114659 1.834563 1.848507 1.616945
+ S 0 0.000000 1.848507 1.616945 27.619493 -1.616945
S 0 0.000000 27.619493 -1.616945 29.353341 -1.834563
C 0 0.000000 207.768967 1.748074 -207.768967 0.000076 7.152821
+ C 0 0.000000 -207.768967 27.719372 207.768933 180.000076 7.152821
END
diff --git a/app/lib/params/nmra-tt.xtp b/app/lib/params/nmra-tt.xtp
index 76827bf..f43cd3c 100644
--- a/app/lib/params/nmra-tt.xtp
+++ b/app/lib/params/nmra-tt.xtp
@@ -619,10 +619,12 @@ TURNOUT TT "NMRA TT #8 Single Slip 8SS"
END
SUBCONTENTS NMRA TT Scale Double Slip Turnouts
-TURNOUT TT "NMRA TT #6 Double Slip 6DS"
+TURNOUT TT "NMRA TT #6 Double Slip 6DS" 512
U "Double Slipswitch" "" "NMRA TT" "#6 Double Slip" "6DS" 11.750000 9.527283 11.750000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 11.750000 0.000000 90.000000
E 0.081033 0.972405 279.527283
diff --git a/app/lib/params/nmra-z.xtp b/app/lib/params/nmra-z.xtp
index 63833d6..9bbd8b2 100644
--- a/app/lib/params/nmra-z.xtp
+++ b/app/lib/params/nmra-z.xtp
@@ -606,10 +606,12 @@ TURNOUT Z "NMRA Z #8 Single Slip 8SS"
END
SUBCONTENTS NMRA Z Scale Double Slip Turnouts
-TURNOUT Z "NMRA Z #6 Double Slip 6DS"
+TURNOUT Z "NMRA Z #6 Double Slip 6DS" 512
U "Double Slipswitch" "" "NMRA Z" "#6 Double Slip" "6DS" 6.864000 9.527283 6.864000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 6.864000 0.000000 90.000000
E 0.047337 0.568050 279.527283
@@ -623,10 +625,12 @@ TURNOUT Z "NMRA Z #6 Double Slip 6DS"
C 0 0.000000 35.039098 0.512016 -35.039098 0.000076 9.527435
C 0 0.000000 -35.039098 6.351890 35.039091 180.000076 9.527435
END
-TURNOUT Z "NMRA Z #8 Double Slip 8DS"
+TURNOUT Z "NMRA Z #8 Double Slip 8DS" 512
U "Double Slipswitch" "" "NMRA Z" "#8 Double Slip" "8DS" 9.282000 7.152669 9.282000 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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.282000 0.000000 90.000000
E 0.036116 0.577861 277.152669
diff --git a/app/lib/params/p4.xtp b/app/lib/params/p4.xtp
index 0c8d6a4..c4d75ed 100644
--- a/app/lib/params/p4.xtp
+++ b/app/lib/params/p4.xtp
@@ -23,9 +23,11 @@ TURNOUT P4 "P4 B6-R"
S 0 0 10.165179 -0.798646 11.496063 -1.023622
END
# Double Slipswitch Design by - 32.100000 6.000000 32.100000
-TURNOUT P4 "P4 DS-6"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT P4 "P4 DS-6" 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.637795 0.000000 90.000000
E 0.088379 1.053141 279.594076
@@ -92,9 +94,11 @@ TURNOUT P4 "P4 Quarter turn, 1200R"
C 0 0 -47.244094 0.000063 47.244094 90.000076 90.000000
END
# Double Slipswitch Design by - 30.000000 7.000000 30.000000
-TURNOUT P4 "P4 DS-7"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT P4 "P4 DS-7" 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 11.811024 0.000000 90.000000
E 0.060570 0.843637 278.213218
@@ -465,9 +469,11 @@ TURNOUT P4 "P4 OUTSIDE SINGLE SLIP-4.5"
C 0 0.000000 63.275490 1.482635 -63.275490 0.000076 12.839751
END
# Double Slipswitch Design by - 43.700000 4.500000 43.700000
-TURNOUT P4 "P4 OUTSIDE DOUBLE SLIP-4.5"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT P4 "P4 OUTSIDE DOUBLE SLIP-4.5" 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.204724 0.000000 90.000000
E 0.215091 1.911625 282.839599
diff --git a/app/lib/params/peco turntable wo routes.xtp b/app/lib/params/peco turntable wo routes.xtp
index 798150a..a48080f 100644
--- a/app/lib/params/peco turntable wo routes.xtp
+++ b/app/lib/params/peco turntable wo routes.xtp
@@ -1,5 +1,6 @@
CONTENTS Peco Turntable without Stubs
-TURNOUT N "Peco Turn Table NB-55"
+TURNOUT N "Peco Turn Table NB-55" 512
+# Added correct EPs
P "1" 1
P "2" 2
P "3" 3
@@ -18,7 +19,42 @@ TURNOUT N "Peco Turn Table NB-55"
P "16" 16
P "17" 17
P "18" 18
- E 0.000000 0.000000 0.000000
+ E 0.000 3.000 0.000
+ E 0.000 -3.000 180.000
+ E 0.521 2.954 10.000
+ E -0.521 -2.954 190.000
+ E 1.026 2.819 20.000
+ E -1.026 -2.819 200.000
+ E 1.500 2.598 30.000
+ E -1.500 -2.598 210.000
+ E 1.928 2.298 40.000
+ E -1.928 -2.298 220.000
+ E 2.298 1.928 50.000
+ E -2.298 -1.928 230.000
+ E 2.598 1.500 60.000
+ E -2.598 -1.500 240.000
+ E 2.819 1.026 70.000
+ E -2.819 -1.026 250.000
+ E 2.954 0.521 80.000
+ E -2.954 -0.521 260.000
+ E 3.000 0.000 90.000
+ E -3.000 0.000 270.000
+ E 2.954 -0.521 100.000
+ E -2.954 0.521 280.000
+ E 2.819 -1.026 110.000
+ E -2.819 1.026 290.000
+ E 2.598 -1.500 120.000
+ E -2.598 1.500 300.000
+ E 2.298 -1.928 130.000
+ E -2.298 1.928 310.000
+ E 1.928 -2.298 140.000
+ E -1.928 2.298 320.000
+ E 1.500 -2.598 150.000
+ E -1.500 2.598 330.000
+ E 1.026 -2.819 160.000
+ E -1.026 2.819 340.000
+ E 0.521 -2.954 170.000
+ E -0.521 2.954 350.000
S 16777215 0.000000 0.000000 3.000000 0.000000 -3.000000
S 16777215 0.000000 0.520945 2.954423 -0.520945 -2.954423
S 16777215 0.000000 1.026060 2.819078 -1.026060 -2.819078
diff --git a/app/lib/params/peco-O-Bullhead.xtp b/app/lib/params/peco-O-Bullhead.xtp
deleted file mode 100644
index 3e06f30..0000000
--- a/app/lib/params/peco-O-Bullhead.xtp
+++ /dev/null
@@ -1,80 +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"
- 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 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
new file mode 100644
index 0000000..87f36eb
--- /dev/null
+++ b/app/lib/params/proto-ng-3-foot.xtp
@@ -0,0 +1,264 @@
+##################################################################################
+#
+# This file contains steam engine prototypes
+#
+# Copyright (c) 2012 Serdar Soysal online@soysals.com
+# Modified for Narrow Gauge Engines Russell Shilling
+#
+# Released under the Gnu GPL 2.0 License
+#
+# 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.
+#
+#============================================================
+##################################################################################
+CONTENTS North American 3' Gauge
+
+SUBCONTENTS Steam Engines and Tenders
+CARPROTO "2-8-0, Baldwin Consolidation C-19" 2 10201 370.000 100.000 0 0 140.000 390.000
+ F3 3881787 0.000000 5
+ 0.000000 0.000000 0
+ 340.000000 0.000000 0
+ 370.000000 50.000000 0
+ 340.000000 100.000000 0
+ 0.000000 100.000000 0
+# The boiler
+ L3 10132122 3.400000 115.000000 20.000000 0 320.000000 20.000000 0
+ L3 10132122 3.400000 320.000000 20.000000 0 320.000000 80.000000 0
+ L3 10132122 3.400000 320.000000 80.000000 0 115.000000 80.000000 0
+ L3 10132122 3.400000 115.000000 80.000000 0 115.000000 20.000000 0
+# The cab
+ L3 10132122 3.400000 0.000000 5.000000 0 115.000000 5.000000 0
+ L3 10132122 3.400000 115.000000 5.000000 0 115.000000 95.000000 0
+ L3 10132122 3.400000 115.000000 95.000000 0 0.000000 95.000000 0
+# The circles
+ 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
+ END$SEGS
+CARPROTO "Tender, Consolidation Short" 0 10201 240.000 100.000 0 0 160.000 250.000
+ F3 3881787 0.000000 4
+ 0.000000 0.000000 0
+ 240.000000 0.000000 0
+ 240.000000 100.000000 0
+ 0.000000 100.000000 0
+ F3 0 0.000000 4
+ 90.000000 15.000000 0
+ 225.000000 15.000000 0
+ 225.000000 85.000000 0
+ 90.000000 85.000000 0
+ L3 10132122 3.400000 30.000000 0.000000 0 30.000000 100.000000 0
+ L3 10132122 3.400000 10.000000 20.000000 0 40.000000 20.000000 0
+ L3 10132122 3.400000 10.000000 80.000000 0 40.000000 80.000000 0
+ END$SEGS
+CARPROTO "2-8-2, Baldwin Mikado K-27" 2 10201 493.000 100.000 0 0 140.000 513.000
+ F3 3881787 0.000000 5
+ 0.000000 0.000000 0
+ 463.000000 0.000000 0
+ 493.000000 50.000000 0
+ 463.000000 100.000000 0
+ 0.000000 100.000000 0
+# The boiler
+ L3 10132122 3.400000 126.000000 15.000000 0 443.000000 15.000000 0
+ L3 10132122 3.400000 443.000000 15.000000 0 443.000000 85.000000 0
+ L3 10132122 3.400000 443.000000 85.000000 0 126.000000 85.000000 0
+ L3 10132122 3.400000 126.000000 85.000000 0 126.000000 15.000000 0
+# The cab
+ L3 10132122 3.400000 0.000000 5.000000 0 126.000000 5.000000 0
+ L3 10132122 3.400000 126.000000 5.000000 0 126.000000 95.000000 0
+ L3 10132122 3.400000 126.000000 95.000000 0 0.000000 95.000000 0
+# The circles
+ A3 2631720 8.400000 16.000000 420.000000 50.000000 0 180.000000 360.000000
+ A3 10132122 3.400000 20.000000 325.000000 50.000000 0 180.000000 360.000000
+ A3 10132122 3.400000 25.000000 255.000000 50.000000 0 180.000000 360.000000
+ G3 3881787 3.4000000 15.000000 420.000000 50.000000 0
+ G3 10132122 3.400000 10.000000 160.000000 50.000000 0
+ END$SEGS
+CARPROTO "Tender, Mikado Long" 0 10201 300.000 100.000 0 0 160.000 310.000
+ F3 3881787 0.000000 4
+ 0.000000 0.000000 0
+ 300.000000 0.000000 0
+ 300.000000 100.000000 0
+ 0.000000 100.000000 0
+ F3 0 0.000000 4
+ 90.000000 15.000000 0
+ 285.000000 15.000000 0
+ 285.000000 85.000000 0
+ 90.000000 85.000000 0
+ L3 10132122 3.400000 30.000000 0.000000 0 30.000000 100.000000 0
+ L3 10132122 3.400000 10.000000 20.000000 0 40.000000 20.000000 0
+ L3 10132122 3.400000 10.000000 80.000000 0 40.000000 80.000000 0
+ END$SEGS
+
+##################################################################################
+
+SUBCONTENTS Freight Cars
+CARPROTO "Box Car" 0 30100 360.000 100.000 0 0 256.000 392.000
+ F4 255 0.000000 4 0
+ 0.000000 0.000000 0
+ 360.000000 0.000000 0
+ 360.000000 100.000000 0
+ 0.000000 100.000000 0
+# roofwalk
+ L3 0 0.000000 0.000000 44.500000 0 360.000000 44.000000 0
+ L3 0 0.000000 0.000000 48.500000 0 360.000000 48.000000 0
+ L3 0 0.000000 0.000000 52.500000 0 360.000000 52.000000 0
+ L3 0 0.000000 0.000000 56.500000 0 360.000000 56.000000 0
+ END$SEGS
+CARPROTO "Drop-Bottom Gondola" 0 30100 384.000 100.000 0 0 288.000 416.000
+ F4 255 0.000000 4 0
+ 0.000000 100.000000 0
+ 384.000000 100.000000 0
+ 384.000000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+CARPROTO "Stock Car" 0 30100 360.000 100.000 0 0 264.000 392.000
+ F4 255 0.000000 4 0
+ 0.000000 0.000000 0
+ 360.000000 0.000000 0
+ 360.000000 100.000000 0
+ 0.000000 100.000000 0
+# roofwalk
+ L3 0 0.000000 0.000000 44.500000 0 360.000000 44.000000 0
+ L3 0 0.000000 0.000000 48.500000 0 360.000000 48.000000 0
+ L3 0 0.000000 0.000000 52.500000 0 360.000000 52.000000 0
+ L3 0 0.000000 0.000000 56.500000 0 360.000000 56.000000 0
+ END$SEGS
+CARPROTO "High-Side Gondola" 0 30100 384.000 100.000 0 0 288.000 416.000
+ F4 255 0.000000 4 0
+ 0.000000 0.000000 0
+ 384.000000 0.000000 0
+ 384.000000 100.000000 0
+ 0.000000 100.000000 0
+ END$SEGS
+CARPROTO "Gondola" 0 30100 360.000 84.000 0 0 256.000 392.000
+ F4 255 0.000000 4 0
+ 0.000000 84.000000 0
+ 360.000000 84.000000 0
+ 360.000000 0.000000 0
+ 0.000000 0.000000 0
+ END$SEGS
+CARPROTO "Framed Tank Car" 0 30100 360.000 100.000 0 0 264.000 392.000
+ F4 12632256 0.000000 4 0
+ 0.000000 0.000000 0
+ 360.000000 0.000000 0
+ 360.000000 100.000000 0
+ 0.000000 100.000000 0
+ Y3 0 0.000000 4 0
+ 0.000000 0.000000 0
+ 360.000000 0.000000 0
+ 360.000000 100.000000 0
+ 0.000000 100.000000 0
+ F4 0 0.000000 4 0
+ 21.000000 12.000000 0
+ 339.000000 12.000000 0
+ 339.000000 88.000000 0
+ 21.000000 88.000000 0
+ G3 4144959 0.000000 25.000000 180.000000 50.000000 0
+ A3 2631720 8.400000 25.000000 180.000000 50.000000 0 180.000000 360.000000
+ END$SEGS
+CARPROTO "Frameless Tank Car" 0 30100 360.000 90.000 0 0 264.000 392.000
+ F4 0 0.000000 4 0
+ 0.000000 0.000000 0
+ 360.000000 0.000000 0
+ 360.000000 90.000000 0
+ 0.000000 90.000000 0
+ G3 4144959 0.000000 30.000000 180.000000 45.000000 0
+ A3 2631720 8.400000 30.000000 180.000000 45.000000 0 180.000000 360.000000
+ END$SEGS
+
+##################################################################################
+
+SUBCONTENTS Other Cars
+CARPROTO "Short Caboose" 0 90100 192.000 101.000 0 0 168.000 224.000
+ F4 255 0.000000 4 0
+ 0.000000 0.000000 0
+ 192.000000 0.000000 0
+ 192.000000 101.000000 0
+ 0.000000 101.000000 0
+# cupola
+ Y4 0 0.000000 4 0
+ 60.000000 8.000000 0
+ 132.000000 8.000000 0
+ 132.000000 93.000000 0
+ 60.000000 93.000000 0
+# roofwalk
+ L3 0 0.000000 0.000000 44.500000 0 60.000000 44.500000 0
+ L3 0 0.000000 0.000000 48.500000 0 60.000000 48.500000 0
+ L3 0 0.000000 0.000000 52.500000 0 60.000000 52.500000 0
+ L3 0 0.000000 0.000000 56.500000 0 60.000000 56.500000 0
+ L3 0 0.000000 132.000000 44.500000 0 192.000000 44.500000 0
+ L3 0 0.000000 132.000000 48.500000 0 192.000000 48.500000 0
+ L3 0 0.000000 132.000000 52.500000 0 192.000000 52.500000 0
+ L3 0 0.000000 132.000000 56.500000 0 192.000000 56.500000 0
+ END$SEGS
+CARPROTO "Long Caboose" 0 90100 300.000 101.000 0 0 268.000 324.000
+ F4 255 0.000000 4 0
+ 0.000000 0.000000 0
+ 300.000000 0.000000 0
+ 300.000000 101.000000 0
+ 0.000000 101.000000 0
+# cupola
+ Y4 0 0.000000 4 0
+ 60.000000 8.000000 0
+ 132.000000 8.000000 0
+ 132.000000 93.000000 0
+ 60.000000 93.000000 0
+# roofwalk
+ L3 0 0.000000 0.000000 44.500000 0 60.000000 44.500000 0
+ L3 0 0.000000 0.000000 48.500000 0 60.000000 48.500000 0
+ L3 0 0.000000 0.000000 52.500000 0 60.000000 52.500000 0
+ L3 0 0.000000 0.000000 56.500000 0 60.000000 56.500000 0
+ L3 0 0.000000 132.000000 44.500000 0 300.000000 44.500000 0
+ L3 0 0.000000 132.000000 48.500000 0 300.000000 48.500000 0
+ L3 0 0.000000 132.000000 52.500000 0 300.000000 52.500000 0
+ L3 0 0.000000 132.000000 56.500000 0 300.000000 56.500000 0
+ END$SEGS
+#
+##################################################################################
+# Passenger Cars
+#
+SUBCONTENTS Passenger Cars
+CARPROTO "Jackson & Sharp Coach" 0 50100 510.000 101.000 0 0 406.000 542.000
+ F4 255 0.000000 4 0
+ 0.000000 0.000000 0
+ 510.000000 0.000000 0
+ 510.000000 101.000000 0
+ 0.000000 101.000000 0
+ L3 0 1.000000 2.000000 20.000000 0 508.000000 20.000000 0
+ L3 0 1.000000 2.000000 81.000000 0 508.000000 81.000000 0
+ END$SEGS
+CARPROTO "Jackson & Sharp Combine" 0 50100 510.000 101.000 0 0 406.000 542.000
+ F4 255 0.000000 4 0
+ 0.000000 0.000000 0
+ 510.000000 0.000000 0
+ 510.000000 101.000000 0
+ 0.000000 101.000000 0
+ L3 0 1.000000 2.000000 20.000000 0 508.000000 20.000000 0
+ L3 0 1.000000 2.000000 81.000000 0 508.000000 81.000000 0
+ END$SEGS
+CARPROTO "Jackson & Sharp Baggage" 0 50100 510.000 101.000 0 0 406.000 542.000
+ F4 255 0.000000 4 0
+ 0.000000 0.000000 0
+ 510.000000 0.000000 0
+ 510.000000 101.000000 0
+ 0.000000 101.000000 0
+ L3 0 1.000000 2.000000 20.000000 0 508.000000 20.000000 0
+ L3 0 1.000000 2.000000 81.000000 0 508.000000 81.000000 0
+ END$SEGS
+#
+# END
+
+
diff --git a/app/lib/params/proto-ng.xtp b/app/lib/params/proto-ng.xtp
deleted file mode 100644
index 554e8d5..0000000
--- a/app/lib/params/proto-ng.xtp
+++ /dev/null
@@ -1,29 +0,0 @@
-CONTENTS North American 3' Gauge Narrow-Gauge Prototype Cars
-CARPROTO "D&RGW 30' Boxcar" 0 30100 360.000 101.000 0 0 256.000 392.000
- F4 255 0.000000 4 0
- 0.000000 0.000000 0
- 360.000000 0.000000 0
- 360.000000 100.999998 0
- 0.000000 100.999998 0
- END
-CARPROTO "D&RGW Dump Bottom Gondola" 0 30100 384.000 101.000 0 0 288.000 416.000
- F4 255 0.000000 4 0
- 0.000134 101.000509 0
- 384.000134 100.999491 0
- 383.999866 -0.000509 0
- -0.000134 0.000509 0
- END
-CARPROTO "D&RGW Stock Car" 0 30100 360.000 101.000 0 0 264.000 392.000
- F4 255 0.000000 4 0
- 0.000134 101.000478 0
- 360.000134 100.999522 0
- 359.999866 -0.000478 0
- -0.000134 0.000478 0
- END
-CARPROTO "Victor Gold Mining Co. Ore Car" 0 30100 360.000 84.000 0 0 256.000 392.000
- F4 255 0.000000 4 0
- 0.000111 84.000478 0
- 360.000111 83.999522 0
- 359.999889 -0.000478 0
- -0.000111 0.000478 0
- END
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/params/prototype-de.xtp b/app/lib/params/prototype-de.xtp
index abbef61..63c95d5 100644
--- a/app/lib/params/prototype-de.xtp
+++ b/app/lib/params/prototype-de.xtp
@@ -61,10 +61,12 @@ TURNOUT HO " EKW 100-1:6 "
S 0 0.000000 9.068647 -0.714839 10.345923 -0.951896
C 0 0.000000 42.577457 1.299237 -42.577457 0.000076 10.513852
END
-TURNOUT HO " DKW 100-1:6 "
+TURNOUT HO " DKW 100-1:6 " 512
U "Double Slipswitch" "" "" "DKW 100-1:6" "" 10.433504 10.513700 10.433504 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 10.433504 0.000000 90.000000
E 0.087581 0.951896 280.513700
@@ -140,10 +142,12 @@ TURNOUT HO " EKW 140-1:7 "
S 0 0.000000 10.611353 -0.735603 11.894283 -0.939580
C 0 0.000000 59.306500 1.299244 -59.306500 0.000076 9.033552
END
-TURNOUT HO " DKW 140-1:7 "
+TURNOUT HO " DKW 140-1:7 " 512
U "Double Slipswitch" "" "" "DKW 140-1:7" "" 11.968504 9.033400 11.968504 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 11.968504 0.000000 90.000000
E 0.074221 0.939580 279.033400
@@ -232,10 +236,12 @@ TURNOUT HO " EKW 190-1:9 "
S 0 0.000000 13.572635 -0.755469 14.861762 -0.914793
C 0 0.000000 100.068180 1.299256 -100.068180 0.000076 7.044852
END
-TURNOUT HO " DKW 190-1:9 "
+TURNOUT HO " DKW 190-1:9 " 512
U "Double Slipswitch" "" "" "DKW 190-1:9" "" 14.918071 7.044700 14.918071 0.000000 0.000000 0
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+ 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 14.918071 0.000000 90.000000
E 0.056309 0.914793 277.044700
diff --git a/app/lib/params/roadname.tab b/app/lib/params/roadname.tab
index f37cf2e..8bfd293 100644
--- a/app/lib/params/roadname.tab
+++ b/app/lib/params/roadname.tab
@@ -16,6 +16,7 @@ CN Canadian National
CP Canadian Pacific
CPR
CP Rail
+C&C Carson & Colorado
CB&Q Chicago Burlington & Quincy
Burlington
C&O Chesapeake & Ohio
@@ -31,6 +32,7 @@ C&EI Chicago & Eastern Illinois
Chessie System
C&O Chesapeake & Ohio
Chesapeke and Ohio
+C&S Colorado & Southern
CRR Clinchfield
Clinchfild
CB Cotton Belt
@@ -38,10 +40,11 @@ CB Cotton Belt
CR Conrail
CSX CSX
D&H Delaware & Hudson
-DRGW Denver & Rio Grande Western
- D&RGW
+D&RGW Denver & Rio Grande Western
+ D&RG
Rio Grande
DT&I Detroit Toledo & Ironton
+DSP&P Denver, South Park & Pacific
DM&IR Duluth Missabe & Iron Range
D&TH Duluth & Two Harbors
ERIE Erie
@@ -72,6 +75,8 @@ MKT Missouri-Kansas-Texas
MP Missouri Pacific
Mopac
MON Monon
+NCO Nevada California Oregon Ry
+ N.C.O.
NH New Haven
NYNH&H
NKP Nickel Plate
@@ -92,9 +97,10 @@ PRR Pennsylvania
PFE Pacific Fruit Express
Pacific Fruit Exp
P&LE Pittsburgh & Lake Erie
-RDG Reading
RB Railbox
+RDG Reading
REA Railway Express Agency
+RGS Rio Grande Southern
ROCK Rock Island
RI
SAL Seaboard Air Line
diff --git a/app/lib/params/rocho100.xtp b/app/lib/params/rocho100.xtp
index a992e47..ae60fad 100644
--- a/app/lib/params/rocho100.xtp
+++ b/app/lib/params/rocho100.xtp
@@ -28,9 +28,11 @@ TURNOUT HO "ModelPower/Roco #6 R Curved 490-181/625-42381"
END
# Straight Section Design by Victor Bobier - 18.000000
# Double Slipswitch Design by Victor Bobier - 9.000000 12.500000 9.000000
-TURNOUT HO "ModelPower/Roco #6 Double SlipSwitch 490-189"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "ModelPower/Roco #6 Double SlipSwitch 490-189" 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.000000 0.000000 90.000000
E 0.106666 0.973972 282.500000
diff --git a/app/lib/params/t-trak.xtp b/app/lib/params/t-trak.xtp
index 895f907..e12204d 100644
--- a/app/lib/params/t-trak.xtp
+++ b/app/lib/params/t-trak.xtp
@@ -268,8 +268,9 @@ TURNOUT N "T-Trak Doublewide 12 inch deep with 6LTO "
L3 11579568 0.052083 17.086633 -0.807087 0 24.409448 -0.807087 0
END
TURNOUT N "T-Trak Doublewide 12 inch deep with 6RTO "
+# Fixed P1
P "P0" 4 5 6 0 1 2 3
- P "P1" 7 8 0 9 0 1 2 3
+ P "P1" 7 8 -9 0 1 2 3
E 0.000000 0.000000 270.000000
E 24.409448 0.000000 90.000000
E 0.000000 -1.299213 270.000000
diff --git a/app/lib/params/walth-ho.xtp b/app/lib/params/walth-ho.xtp
index 62dc127..880adcd 100644
--- a/app/lib/params/walth-ho.xtp
+++ b/app/lib/params/walth-ho.xtp
@@ -1736,7 +1736,7 @@ STRUCTURE HO "Walthers Machine Shop 933-2902"
SUBCONTENTS Walthers Cornerstone HO Structures - Turn Tables
-TURNOUT HO "Walthers 130' Turn Table 933-2829"
+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
@@ -1870,7 +1870,7 @@ TURNOUT HO "Walthers 130' Turn Table 933-2829"
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"
+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
@@ -1965,8 +1965,8 @@ TURNOUT HO "Walthers 90' Turn Table 933-2840"
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.875000 0.000000
- S 0 0 -6.875000 0.000000 -6.2500000 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
@@ -2005,7 +2005,7 @@ TURNOUT HO "Walthers 90' Turn Table 933-2840"
G 11579568 0.000000 0.053333 0.000000 0.000000 0
END
-TURNOUT HO "Walthers Transfer Table 933-2968"
+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
diff --git a/app/lib/params/wlthho83.xtp b/app/lib/params/wlthho83.xtp
index 4062ee0..259cd6b 100644
--- a/app/lib/params/wlthho83.xtp
+++ b/app/lib/params/wlthho83.xtp
@@ -147,9 +147,11 @@ TURNOUT HO "Walthers/Shinohara Code 83 #6 Dbl Crossover 948-8812"
END
SUBCONTENTS Walthers/Shinohara HO-Scale Code 83 - Slip Turnouts
-TURNOUT HO "Walthers/Shinohara Code 83 #6 Dbl Slip 948-8814"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Walthers/Shinohara Code 83 #6 Dbl Slip 948-8814" 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 15.437000 0.000000 90.000000
E 0.107955 1.286407 279.594076
@@ -163,9 +165,11 @@ TURNOUT HO "Walthers/Shinohara Code 83 #6 Dbl Slip 948-8814"
C 0 0.000000 76.490836 1.299241 -76.490836 0.000076 9.594228
C 0 0.000000 -76.490836 14.137555 76.490819 180.000076 9.594228
END
-TURNOUT HO "Walthers/Shinohara Code 83 #8 Dbl Slip 948-8896"
- P "Normal" 1 2 3 0 4 5 6
- P "Reverse" 1 7 6 0 4 8 3
+TURNOUT HO "Walthers/Shinohara Code 83 #8 Dbl Slip 948-8896" 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.994000 0.000000 90.000000
E 0.074486 1.187112 277.180762
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
new file mode 100755
index 0000000..d4b8e78
--- /dev/null
+++ b/app/lib/xtrkcad-setup
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+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"
+ echo
+ echo "<install-dir> is the location of XTrkCad's data files"
+ echo
+ echo "to be run as normal user"
+ exit 0
+}
+
+echo "`date`: $0 $* as ${USER}"
+
+if [ $# -ne 2 ] ; then
+ usage
+fi
+
+COMMAND="$1"
+export INSTALLDIR="$2"
+
+if [ ! -d ${INSTALLDIR} ] ; then
+ echo "$0: $INSTALLDIR: not found"
+ exit 1
+fi
+if [ ! -f ${INSTALLDIR}/applications/xtrkcad.xml ] ; then
+ echo "$0: $INSTALLDIR/applications/xtrkcad.xml: not found"
+ exit 1
+fi
+if [ ! -f ${INSTALLDIR}/applications/xtrkcad.desktop ] ; then
+ echo "$0: $INSTALLDIR/applications/xtrkcad.desktop: not found"
+ exit 1
+fi
+if [ ! -f ${INSTALLDIR}/pixmaps/xtrkcad.png ] ; then
+ echo "$0: $INSTALLDIR/pixmaps/xtrkcad.png: not found"
+ exit 1
+fi
+
+ID=`id -u`
+if [ $ID -eq 0 ] ; then
+ echo $0: Must not be root
+ exit 1
+fi
+
+if [ "$COMMAND" = "install" ] ; then
+ echo SETUP ICONS
+ # 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 --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
+ # default handler for application/x-xtrkcad is xtrkcad
+ xdg-mime default xtrkcad.desktop application/x-xtrkcad
+ echo SETUP DESKTOP
+ # add app to system menu
+ xdg-desktop-menu install --novendor ${INSTALLDIR}/applications/xtrkcad.desktop
+ # add desktop shortcut
+ xdg-desktop-icon install --novendor ${INSTALLDIR}/applications/xtrkcad.desktop
+ 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
+ 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
+ # set desktop command
+ xdg-desktop-menu install --novendor ${INSTALLDIR}/applications/xtrkcad.desktop
+ xdg-desktop-icon install --novendor ${INSTALLDIR}/applications/xtrkcad.desktop
+ chmod 755 ${HOME}/Desktop/xtrkcad.desktop
+
+else
+ usage
+fi
diff --git a/app/lib/xtrkcad.desktop b/app/lib/xtrkcad.desktop
index a5f9dd6..6fb3381 100644
--- a/app/lib/xtrkcad.desktop
+++ b/app/lib/xtrkcad.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
-Encoding=UTF-8
Name=XTrackCAD
Comment=Design model railroad layouts
Exec=xtrkcad
-Icon=xtrkcad.png
+Icon=xtrkcad
Terminal=false
Type=Application
-Categories=Graphics;Game \ No newline at end of file
+Categories=Graphics
+
diff --git a/app/lib/xtrkcad.upd b/app/lib/xtrkcad.upd
new file mode 100644
index 0000000..193b36c
--- /dev/null
+++ b/app/lib/xtrkcad.upd
@@ -0,0 +1,34 @@
+# 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
+HO-Bachmann EZ.xtp
+N-Bachmann EZ.xtp
+HO-TrixExpress Tracks.xtp
+HO-Kato.xtp
+N-MiniTrix Track.xtp
diff --git a/app/lib/xtrkcad.xml b/app/lib/xtrkcad.xml
new file mode 100644
index 0000000..fb28fa9
--- /dev/null
+++ b/app/lib/xtrkcad.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="application/x-xtrkcad">
+ <comment>xtrkcad</comment>
+ <glob pattern="*.xtc"/>
+ <glob pattern="*.xtce"/>
+ </mime-type>
+ </mime-info>
diff --git a/app/lib/xtrkcad.xtq b/app/lib/xtrkcad.xtq
index 2fdb34c..96cb13e 100644
--- a/app/lib/xtrkcad.xtq
+++ b/app/lib/xtrkcad.xtq
@@ -22,6 +22,10 @@ SCALE 2mm(FS), 152.0, 0.3708
1560,40,1120
2200,50,1500
2640,60,1880
+SCALE T, 450.0, 0.126
+ 1560,37.5,1080
+ 2160,45,1440
+ 2640,52.5,1800
SCALE HO, 87.1, 0.6496
1567.8,32.66,1045.2
2090.4,38.1,1393
@@ -30,7 +34,7 @@ SCALE HOn3.5, 87.1, 0.472
1567.8,32.66,1045.2
2090.4,38.1,1393
2613,43.55,1567
-SCALE HOn3, 87.1, 0.4133
+SCALE HOn3, 87.1, 0.413
1567.8,32.66,1045.2
2090.4,38.1,1393
2613,43.55,1567
@@ -70,11 +74,12 @@ SCALE OO9, 76.2, 0.3543
1567.8,32.66,1045.2
2090.4,38.1,1393
2613,43.55,1567
+#US 1:45 scale
SCALE O, 48.0, 1.25
1536,24,960
2016,30,1200
2592,36,1440
-SCALE On3.5, 48.0, 0.875
+SCALE On3.5, 48.0, 0.874
1536,24,960
2016,30,1200
2592,36,1440
@@ -98,7 +103,8 @@ SCALE P48, 48.0, 1.177
1536,24,960
2016,30,1200
2592,36,1440
-SCALE O(Fine), 43.5, 1.2598
+#UK 1:43.5 scale
+SCALE O(Fine), 43.5, 1.25
1536,24,960
2016,30,1200
2592,36,1440
@@ -110,11 +116,29 @@ SCALE ScaleSeven, 43.5, 1.2992
1536,24,960
2016,30,1200
2592,36,1440
-SCALE O, 45.0, 1.25
+SCALE On14mm, 43.5, 0.551
1536,24,960
2016,30,1200
2592,36,1440
-SCALE On14mm, 43.5, 0.551
+SCALE On16.5, 43.5, 0.6496
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+#European 1:45
+SCALE O(EU), 45.0, 1.25
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE On3(EU), 45.0, 0.75
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE Oe(EU), 45.0, 0.6496
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+# Brio
+SCALE O55, 55.0, 1.023
1536,24,960
2016,30,1200
2592,36,1440
@@ -134,7 +158,7 @@ SCALE Sn30, 64.0, 0.469
1536,28,1024
2048,32,1280
2688,40,1600
-SCALE Sn2, 64.0, 0.3543
+SCALE Sn2, 64.0, 0.413
1536,28,1024
2048,32,1280
2688,40,1600
@@ -162,6 +186,18 @@ SCALE 1/32, 32.0, 1.77
1536,24,960
2016,30,1200
2592,36,1440
+SCALE A, 29, 1.77
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 1/2(H), 24.0, 1.77
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 2(II), 22.5, 2.00
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
SCALE G, 22.5, 1.77
1536,24,960
2016,30,1200
@@ -178,26 +214,106 @@ SCALE F, 20.32, 2.78
1536,24,960
2016,30,1200
2592,36,1440
-SCALE LEGO, 24, 1.48
+SCALE Fn3, 20.32, 1.77
1536,24,960
2016,30,1200
2592,36,1440
-SCALE 8, 8, 7.5
+SCALE Fn2, 20.32, 1.26
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 16mm, 19.0, 2.97
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 16mmSM45, 19.0, 1.77
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 16mmSM32, 19.0, 1.26
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE SE(7/8)32, 13.7, 1.26
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE SE(7/8)45, 13.7, 1.77
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE LEGO, 38, 1.476
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 2-1/2", 22.5, 2.5
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 2-1/2"n30, 12.0, 2.5
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 3-1/2", 16, 3.5
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 3-1/2"n3, 10.286, 3.5
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 5", 11.3, 5.0
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 5"n2, 4.8, 5.0
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 7-1/4", 8, 7.25
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 7-1/4"n3, 4.8, 7.25
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 7-1/4"n2, 3.2, 7.25
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 7-1/2", 8, 7.5
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 7-1/2"n3, 4.8, 7.5
+ 1536,24,960
+ 2016,30,1200
+ 2592,36,1440
+SCALE 7-1/2"n2, 3.2, 7.5
1536,24,960
2016,30,1200
2592,36,1440
-SCALE T, 450.0, 0.126
- 1560,37.5,1080
- 2160,45,1440
- 2640,52.5,1800
SCALE RMC, 10.0, 5.5
- 1560,40,1120
- 2200,50,1500
- 2640,60,1880
+ 1560,40,1120
+ 2200,50,1500
+ 2640,60,1880
SCALE DEMO, 160.0, 0.3531
1560,40,1120
2200,50,1500
2640,60,1880
+SCALEFIT TURNOUT EXACT OO HO
+SCALEFIT TURNOUT EXACT N(UK),N(JP) N
+SCALEFIT TURNOUT EXACT O(Fine),O(EU) O
+SCALEFIT TURNOUT EXACT HOf Nn3
+SCALEFIT TURNOUT EXACT Sn2 HOn3
+SCALEFIT TURNOUT EXACT Oe(EU) On30
+SCALEFIT TURNOUT EXACT On3(EU) On3
+SCALEFIT TURNOUT EXACT SE(7/8)32,Fn2 16mmSM32
+SCALEFIT TURNOUT EXACT 1/2(H),A,Fn3 G
+SCALEFIT TURNOUT EXACT SE(7/8)45,Fn3 16mmSM45
+SCALEFIT TURNOUT EXACT 7-1/4"n3 7-1/4"
+SCALEFIT TURNOUT EXACT 7-1/2"n3 7-1/2"
TURNOUT DEMO "Peco-55 Medium Right SL-E395F"
P "Normal" 1 2
P "Reverse" 1 3 4
@@ -275,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
@@ -305,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/dirent.c b/app/tools/dirent.c
index 08ea800..bf6e7ff 100644
--- a/app/tools/dirent.c
+++ b/app/tools/dirent.c
@@ -21,7 +21,7 @@ extern "C"
struct DIR
{
- long handle; /* -1 for failed rewind */
+ intptr_t handle; /* -1 for failed rewind */
struct _finddata_t info;
struct dirent result; /* d_name null iff first time */
char *name; /* null-terminated char string */
@@ -42,7 +42,7 @@ DIR *opendir(const char *name)
{
strcat(strcpy(dir->name, name), all);
- if((dir->handle = (long) _findfirst(dir->name, &dir->info)) != -1)
+ if((dir->handle = _findfirst(dir->name, &dir->info)) != -1)
{
dir->result.d_name = 0;
}
@@ -116,7 +116,7 @@ void rewinddir(DIR *dir)
if(dir && dir->handle != -1)
{
_findclose(dir->handle);
- dir->handle = (long) _findfirst(dir->name, &dir->info);
+ dir->handle = _findfirst(dir->name, &dir->info);
dir->result.d_name = 0;
}
else
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_html.c b/app/tools/halibut/bk_html.c
index b01d035..3e937c5 100644
--- a/app/tools/halibut/bk_html.c
+++ b/app/tools/halibut/bk_html.c
@@ -1611,8 +1611,8 @@ void html_backend(paragraph *sourceform, keywordlist *keywords,
*/
if (conf.appletoc_filename) {
- htmlsect *s, *top;
- htmlfile *f;
+ htmlsect *s;// , *top;
+// htmlfile *f;
htmloutput ho;
ho.charset = conf.output_charset;
ho.restrict_charset = conf.restrict_charset;
@@ -2728,7 +2728,7 @@ static char *html_sanitise_fragment(htmlfilelist *files, htmlfile *file,
while (add234(files->frags, frag) != frag) {
if (!len) {
- len = strlen(text);
+ len = (int)strlen(text);
frag->fragment = text = sresize(text, len+20, char);
}
@@ -2781,7 +2781,7 @@ static char *html_sanitise_filename(htmlfilelist *files, char *text)
while (find234(files->files, text, NULL)) {
if (!p) {
- len = strlen(text);
+ len = (int)strlen(text);
p = text;
text = snewn(len+20, char);
diff --git a/app/tools/halibut/bk_paper.c b/app/tools/halibut/bk_paper.c
index 2e0289c..8c244b8 100644
--- a/app/tools/halibut/bk_paper.c
+++ b/app/tools/halibut/bk_paper.c
@@ -316,70 +316,70 @@ static paper_conf paper_configure(paragraph *source, font_list *fontlist) {
ret.bullet = uadv(p->keyword);
} else if (!ustricmp(p->keyword, L"paper-page-width")) {
ret.paper_width =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-page-height")) {
ret.paper_height =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-left-margin")) {
ret.left_margin =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-top-margin")) {
ret.top_margin =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-right-margin")) {
ret.right_margin =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-bottom-margin")) {
ret.bottom_margin =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-list-indent")) {
ret.indent_list_bullet =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-listitem-indent")) {
ret.indent_list =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-quote-indent")) {
ret.indent_quote =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-base-leading")) {
ret.base_leading =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-base-para-spacing")) {
ret.base_para_spacing =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-chapter-top-space")) {
ret.chapter_top_space =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-sect-num-left-space")) {
ret.sect_num_left_space =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-chapter-underline-depth")) {
ret.chapter_underline_depth =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-chapter-underline-thickness")) {
ret.chapter_underline_thickness =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-rule-thickness")) {
ret.rule_thickness =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-contents-indent-step")) {
ret.contents_indent_step =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-contents-margin")) {
ret.contents_margin =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-leader-separation")) {
ret.leader_separation =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-index-gutter")) {
ret.index_gutter =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-index-minsep")) {
ret.index_minsep =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-footer-distance")) {
ret.footer_distance =
- (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ (int) (0.5 + FUNITS_PER_PT * utof(uadv(p->keyword)));
} else if (!ustricmp(p->keyword, L"paper-base-font-size")) {
ret.fbase.font_size = utoi(uadv(p->keyword));
} else if (!ustricmp(p->keyword, L"paper-index-columns")) {
@@ -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;
@@ -1846,8 +1846,8 @@ static page_data *page_breaks(line_data *first, line_data *last,
*/
if (m != last && m->next && !m->next->page_break)
{
- int x = (this_height - minheight) / FUNITS_PER_PT *
- 4096.0;
+ int x = (int)((this_height - minheight) / FUNITS_PER_PT *
+ 4096.0);
int xf;
xf = x & 0xFF;
@@ -1938,8 +1938,8 @@ static page_data *page_breaks(line_data *first, line_data *last,
l->page = page;
l->ypos = text + space + head;
if (page->first_line->space[n]) {
- l->ypos += space * (float)page->first_line->vshortfall[n] /
- page->first_line->space[n];
+ l->ypos += (int)(space * (float)page->first_line->vshortfall[n] /
+ page->first_line->space[n]);
}
if (l == page->last_line)
@@ -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;
@@ -2530,7 +2530,8 @@ static para_data *code_paragraph(int indent, word *words, paper_conf *conf)
w->alt = NULL;
w->type = (prev == 0 ? word_WeakCode :
prev == 1 ? word_Emph : word_Normal);
- w->text = snewn(t-start+1, wchar_t);
+ w->text = snewn((int)(t-start+1),
+ wchar_t);
memcpy(w->text, start, (t-start) * sizeof(wchar_t));
w->text[t-start] = '\0';
w->breaks = FALSE;
@@ -2740,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/charset/fromucs.c b/app/tools/halibut/charset/fromucs.c
index 8090c19..3faf48e 100644
--- a/app/tools/halibut/charset/fromucs.c
+++ b/app/tools/halibut/charset/fromucs.c
@@ -16,7 +16,7 @@ static void charset_emit(void *ctx, long int output)
struct charset_emit_param *param = (struct charset_emit_param *)ctx;
if (param->outlen > 0) {
- *param->output++ = output;
+ *param->output++ = (char)output;
param->outlen--;
} else {
param->stopped = 1;
@@ -47,7 +47,7 @@ int charset_from_unicode(const wchar_t **input, int *inlen,
*error = FALSE;
while (*inlen > 0) {
- int lenbefore = param.output - output;
+ int lenbefore = (int)(param.output - output);
int ret;
if (input)
@@ -78,5 +78,5 @@ int charset_from_unicode(const wchar_t **input, int *inlen,
(*input)++;
(*inlen)--;
}
- return param.output - output;
+ return (int)(param.output - output);
}
diff --git a/app/tools/halibut/charset/iso2022.c b/app/tools/halibut/charset/iso2022.c
index 8cf3c25..b0492d9 100644
--- a/app/tools/halibut/charset/iso2022.c
+++ b/app/tools/halibut/charset/iso2022.c
@@ -879,7 +879,7 @@ static void docs_char(charset_state *state,
emit(emitctx, '/');
emit(emitctx, '0' + ctext_encodings[curr_cset].octets_per_char);
len = currlen + datalen +
- strlen(ctext_encodings[curr_cset].name);
+ (int)strlen(ctext_encodings[curr_cset].name);
assert(len < (1 << 14));
emit(emitctx, 0x80 | ((len >> 7) & 0x7F));
emit(emitctx, 0x80 | ((len ) & 0x7F));
@@ -964,7 +964,7 @@ static void docs_char(charset_state *state,
static void write_to_pointer(void *ctx, long int output)
{
char **ptr = (char **)ctx;
- *(*ptr)++ = output;
+ *(*ptr)++ = (char)output;
}
/*
@@ -1195,7 +1195,7 @@ static int write_iso2022(charset_spec const *charset, long int input_chr,
}
if (cs != -2) {
- docs_char(state, emit, emitctx, cs, data, p - data);
+ docs_char(state, emit, emitctx, cs, data, (int)(p - data));
return TRUE;
}
}
diff --git a/app/tools/halibut/charset/test.c b/app/tools/halibut/charset/test.c
index fc5128e..54eab56 100644
--- a/app/tools/halibut/charset/test.c
+++ b/app/tools/halibut/charset/test.c
@@ -39,7 +39,7 @@ int main(int argc, char **argv)
while (1) {
- rdret = fread(inbuf, 1, sizeof(inbuf), stdin);
+ rdret = (int)fread(inbuf, 1, sizeof(inbuf), stdin);
if (rdret <= 0)
break; /* EOF */
diff --git a/app/tools/halibut/charset/toucs.c b/app/tools/halibut/charset/toucs.c
index bee98ab..807001b 100644
--- a/app/tools/halibut/charset/toucs.c
+++ b/app/tools/halibut/charset/toucs.c
@@ -30,7 +30,7 @@ static void unicode_emit(void *ctx, long int output)
outlen = 1;
}
} else {
- outval = output;
+ outval = (wchar_t)output;
p = &outval;
outlen = 1;
}
@@ -65,7 +65,7 @@ int charset_to_unicode(const char **input, int *inlen,
localstate = *state; /* structure copy */
while (*inlen > 0) {
- int lenbefore = param.output - output;
+ int lenbefore = (int)(param.output - output);
spec->read(spec, (unsigned char)**input, &localstate,
unicode_emit, &param);
if (param.stopped) {
@@ -83,5 +83,5 @@ int charset_to_unicode(const char **input, int *inlen,
(*inlen)--;
}
- return param.output - output;
+ return (int)(param.output - output);
}
diff --git a/app/tools/halibut/deflate.c b/app/tools/halibut/deflate.c
index 685097b..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
@@ -1786,8 +1787,9 @@ static struct table *mkonetab(int *codes, unsigned char *lengths, int nsyms,
int pfxmask = (1 << pfxbits) - 1;
int nbits, i, j, code;
- tab->table = snewn(1 << bits, struct tableentry);
- tab->mask = (1 << bits) - 1;
+ int bit = 1 << bits;
+ tab->table = snewn(bit, struct tableentry);
+ tab->mask = bit - 1;
for (code = 0; code <= tab->mask; code++) {
tab->table[code].code = -1;
@@ -2041,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) {
@@ -2440,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 b2aacae..cb2b39c 100644
--- a/app/tools/halibut/in_afm.c
+++ b/app/tools/halibut/in_afm.c
@@ -100,56 +100,56 @@ void read_afm_file(input *in) {
error(err_afmval, &in->pos, key, 4);
goto giveup;
}
- fi->fontbbox[i] = atof(val);
+ fi->fontbbox[i] = (float)atof(val);
}
} else if (strcmp(key, "CapHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
- fi->capheight = atof(val);
+ fi->capheight = (float)atof(val);
} else if (strcmp(key, "XHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
- fi->xheight = atof(val);
+ fi->xheight = (float)atof(val);
} else if (strcmp(key, "Ascender") == 0) {
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
- fi->ascent = atof(val);
+ fi->ascent = (float)atof(val);
} else if (strcmp(key, "Descender") == 0) {
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
- fi->descent = atof(val);
+ fi->descent = (float)atof(val);
} else if (strcmp(key, "CapHeight") == 0) {
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
- fi->capheight = atof(val);
+ fi->capheight = (float)atof(val);
} else if (strcmp(key, "StdHW") == 0) {
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
- fi->stemh = atof(val);
+ fi->stemh = (float)atof(val);
} else if (strcmp(key, "StdVW") == 0) {
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
- fi->stemv = atof(val);
+ fi->stemv = (float)atof(val);
} else if (strcmp(key, "ItalicAngle") == 0) {
if (!(val = strtok(NULL, " \t"))) {
error(err_afmval, &in->pos, key, 1);
goto giveup;
}
- fi->italicangle = atof(val);
+ fi->italicangle = (float)atof(val);
} else if (strcmp(key, "StartCharMetrics") == 0) {
int nglyphs, i;
if (!(val = strtok(NULL, " \t"))) {
@@ -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/in_pf.c b/app/tools/halibut/in_pf.c
index 3df6d37..a50dce0 100644
--- a/app/tools/halibut/in_pf.c
+++ b/app/tools/halibut/in_pf.c
@@ -22,6 +22,8 @@
typedef struct t1_font_Tag t1_font;
typedef struct t1_data_Tag t1_data;
+font_info *all_fonts;
+
struct t1_font_Tag {
t1_data *data;
size_t length1;
@@ -68,7 +70,7 @@ static t1_data *load_pfb_file(FILE *fp, filepos *pos) {
if (c == EOF) abort();
tail->length |= c << (8 * i);
}
- tail->data = snewn(tail->length, unsigned char);
+ tail->data = snewn((int)tail->length, unsigned char);
if (fread(tail->data, 1, tail->length, fp) != tail->length) abort();
}
}
@@ -80,15 +82,15 @@ static t1_data *load_pfa_file(FILE *fp, filepos *pos) {
pos->line = 0;
ret->type = PFB_ASCII;
len = 32768;
- ret->data = snewn(len, unsigned char);
+ ret->data = snewn((int)len, unsigned char);
for (;;) {
got = fread(ret->data + off, 1, len - off, fp);
off += got;
if (off != len) break;
len *= 2;
- ret->data = sresize(ret->data, len, unsigned char);
+ ret->data = sresize(ret->data, (int)len, unsigned char);
}
- ret->data = sresize(ret->data, off, unsigned char);
+ ret->data = sresize(ret->data, (int)off, unsigned char);
ret->length = off;
return ret;
}
@@ -189,7 +191,7 @@ static void pf_identify(t1_font *tf) {
p++;
p += strspn(p, " \t");
len = strcspn(p, " \t");
- fontname = snewn(len + 1, char);
+ fontname = snewn((int)len + 1, char);
memcpy(fontname, p, len);
fontname[len] = 0;
sfree(rsc.text);
@@ -283,11 +285,11 @@ static void pf_getascii(t1_font *tf, size_t off, size_t len,
while (td && len) {
blk = len < td->length ? len : td->length;
if (td->type == PFB_ASCII) {
- *bufp = sresize(*bufp, *lenp + blk, char);
+ *bufp = sresize(*bufp, (int)(*lenp + blk), char);
memcpy(*bufp + *lenp, td->data + off, blk);
*lenp += blk;
} else {
- *bufp = sresize(*bufp, *lenp + blk * 2 + blk / 39 + 3, char);
+ *bufp = sresize(*bufp, (int)(*lenp + blk * 2 + blk / 39 + 3), char);
p = *bufp + *lenp;
for (i = 0; i < blk; i++) {
if (i % 39 == 0) p += sprintf(p, "\n");
@@ -334,11 +336,11 @@ static void pf_getbinary(t1_font *tf, size_t off, size_t len,
while (td && len) {
blk = len < td->length ? len : td->length;
if (td->type == PFB_BINARY) {
- *bufp = sresize(*bufp, *lenp + blk, char);
+ *bufp = sresize(*bufp, (int)(*lenp + blk), char);
memcpy(*bufp + *lenp, td->data + off, blk);
*lenp += blk;
} else {
- *bufp = sresize(*bufp, *lenp + blk / 2 + 1, char);
+ *bufp = sresize(*bufp, (int)(*lenp + blk / 2 + 1), char);
p = *bufp + *lenp;
for (i = 0; i < blk; i++) {
if (pf_isspace(td->data[off + i])) continue;
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/malloc.c b/app/tools/halibut/malloc.c
index 2ff22fd..32f286a 100644
--- a/app/tools/halibut/malloc.c
+++ b/app/tools/halibut/malloc.c
@@ -92,7 +92,7 @@ void *(srealloc)(LOGPARAMS void *p, int size) {
* of smalloc (and also reliably defined in all environments :-)
*/
char *dupstr(char *s) {
- char *r = smalloc(1+strlen(s));
+ char *r = smalloc(1+(int)strlen(s));
strcpy(r,s);
return r;
}
diff --git a/app/tools/halibut/misc.c b/app/tools/halibut/misc.c
index 3f2483c..c0e86e4 100644
--- a/app/tools/halibut/misc.c
+++ b/app/tools/halibut/misc.c
@@ -90,7 +90,7 @@ void rdaddc(rdstringc *rs, char c) {
rs->text[rs->pos] = 0;
}
void rdaddsc(rdstringc *rs, char const *p) {
- rdaddsn(rs, p, strlen(p));
+ rdaddsn(rs, p, (int)strlen(p));
}
void rdaddsn(rdstringc *rs, char const *p, int len) {
if (rs->pos >= rs->size - len) {
@@ -527,7 +527,7 @@ void cmdline_cfg_add(paragraph *cfg, char *string)
ulen += 1 + ustrlen(cfg->keyword+ulen);
len = 0;
while (cfg->origkeyword[len])
- len += 1 + strlen(cfg->origkeyword+len);
+ len += 1 + (int)strlen(cfg->origkeyword+len);
ustring = ufroma_locale_dup(string);
@@ -538,7 +538,7 @@ void cmdline_cfg_add(paragraph *cfg, char *string)
cfg->keyword[ulen-1] = L'\0';
pos = len;
- len += 2 + strlen(string);
+ len += 2 + (int)strlen(string);
cfg->origkeyword = sresize(cfg->origkeyword, len, char);
strcpy(cfg->origkeyword+pos, string);
cfg->origkeyword[len-1] = '\0';
diff --git a/app/tools/halibut/paper.h b/app/tools/halibut/paper.h
index 29d6407..959accd 100644
--- a/app/tools/halibut/paper.h
+++ b/app/tools/halibut/paper.h
@@ -78,8 +78,6 @@ struct ligature_Tag {
* metrics are read in.
*/
-font_info *all_fonts;
-
struct font_info_Tag {
font_info *next;
/*
@@ -118,6 +116,8 @@ struct font_info_Tag {
float italicangle;
};
+extern font_info *all_fonts;
+
/*
* This structure holds the information about how a font is used
* in a document.
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 95477a5..99303ef 100644
--- a/app/tools/halibut/ustring.c
+++ b/app/tools/halibut/ustring.c
@@ -72,7 +72,7 @@ wchar_t *ustrfroma(char const *s, wchar_t *outbuf, int size, int charset) {
return outbuf;
}
- len = strlen(s);
+ len = (int)strlen(s);
size--; /* allow for terminating NUL */
*outbuf = L'\0';
while (len > 0) {
@@ -155,7 +155,7 @@ wchar_t *ufroma_dup(char const *s, int charset) {
int len;
wchar_t *buf = NULL;
- len = strlen(s) + 1;
+ len = (int)strlen(s) + 1;
do {
buf = sresize(buf, len, wchar_t);
ustrfroma(s, buf, len, charset);
@@ -184,7 +184,7 @@ char *utoa_locale_dup(wchar_t const *s)
if (siz) {
assert(siz <= (size_t)(MB_CUR_MAX * len));
ret[siz] = '\0';
- ret = sresize(ret, siz+1, char);
+ ret = sresize(ret, (int)siz+1, char);
return ret;
}
@@ -206,7 +206,7 @@ wchar_t *ufroma_locale_dup(char const *s)
int len;
size_t siz;
- len = strlen(s);
+ len = (int)strlen(s);
ret = snewn(1 + 2*len, wchar_t); /* be conservative */
@@ -215,7 +215,7 @@ wchar_t *ufroma_locale_dup(char const *s)
if (siz) {
assert(siz <= (size_t)(2 * len));
ret[siz] = L'\0';
- ret = sresize(ret, siz+1, wchar_t);
+ ret = sresize(ret, (int)siz+1, wchar_t);
return ret;
}
@@ -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;
@@ -429,7 +429,7 @@ wchar_t *ustrftime(const wchar_t *wfmt, const struct tm *timespec)
rdadd(&rs, L'%');
wfmt += 2;
} else if (wfmt[0] == L'%' && wfmt[1]) {
- ustrftime_internal(&rs, wfmt[1], timespec);
+ ustrftime_internal(&rs, (char)(wfmt[1]), timespec);
wfmt += 2;
} else {
rdadd(&rs, wfmt[0]);
diff --git a/app/tools/halibut/wcwidth.c b/app/tools/halibut/wcwidth.c
index 269359f..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) {
@@ -165,7 +166,7 @@ int ustrwid(wchar_t const *s, int charset)
int strwid(char const *s, int charset)
{
wchar_t buf[256];
- int wid, len = strlen(s);
+ int wid, len = (int)strlen(s);
charset_state state = CHARSET_INIT_STATE;
wid = 0;
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 97ab56f..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
@@ -20,11 +25,11 @@ set(sources
notice.c
opendocument.c
pixbuf.c
- png.c
print.c
single.c
splash.c
statusbar.c
+ sysinfo.c
text.c
timer.c
tooltip.c
@@ -32,66 +37,80 @@ set(sources
util.c
window.c
wpref.c
-# end of refactored sources
+ writebitmap.c
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 eb5ef94..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, wPos_t x, wPos_t y, long options, wIcon_p 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( wPos_t w, wPos_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( wPos_t w, wPos_t h, const char * bits, wDrawColor col
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 cf419e6..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,
- wPos_t w,
- wPos_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,
- wPos_t x,
- wPos_t y,
- wPos_t w,
- wPos_t h)
+ wWin_p win,
+ wBoxType_e style,
+ wWinPix_t x,
+ wWinPix_t y,
+ wWinPix_t w,
+ wWinPix_t h)
{
- wPos_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,
- wPos_t bx,
- wPos_t by,
- const char * labelStr,
- wBoxType_e boxTyp,
- wPos_t bw,
- wPos_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 aa8f5c7..6d2ac5d 100644
--- a/app/wlib/gtklib/browserhelp.c
+++ b/app/wlib/gtklib/browserhelp.c
@@ -17,18 +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 <stdlib.h>
#include <assert.h>
#include <string.h>
+#include <limits.h>
-#include "misc.h"
+//#include "misc.h"
#include "gtkint.h"
#include "i18n.h"
+extern wBool_t CheckHelpTopicExists(const char * topic);
+
#include "dynstring.h"
#define debug 0
@@ -43,7 +46,8 @@
"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
@@ -52,20 +56,29 @@
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
@@ -77,22 +90,22 @@ TopicToUrl(char **helpUrl, const char *topic)
void wHelp(const char * topic)
{
- int rc;
- char *url;
- char *currentPath;
-
- assert(topic != NULL);
- assert(strlen(topic));
+ int rc;
+ char *url;
+// char *currentPath;
- if (!CheckHelpTopicExists(topic)) return;
+ assert(topic != NULL);
+ assert(strlen(topic));
- 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 51106c8..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,10 +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;
+ 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;
+ }
}
/**
@@ -70,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));
+ }
+ }
+ }
}
/**
@@ -131,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);
}
/**
@@ -141,51 +149,166 @@ 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);
+ }
}
+
/**
* Signal handler for button push
- * \param widget IN the widget
+ * \param widget IN the widget or NULL for autorepeat
* \param value IN the button handle (same as widget???)
*/
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);
+ }
- if (b->action) {
- b->action(b->data);
- }
- if (!b->busy) {
- b->recursion++;
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->widget), FALSE);
- b->recursion--;
- }
}
+#define REPEAT_STAGE0_DELAY 500
+#define REPEAT_STAGE1_DELAY 150
+#define REPEAT_STAGE2_DELAY 100
+
+/* Timer callback function! */
+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;
+
+}
+
+static gint pressButt(
+ GtkWidget *widget,
+ GdkEventButton *event,
+ wButton_p bb)
+{
+
+ if ( debugWindow >= 1 ) {
+ printf( "buttonPress: %s\n", bb->labelStr );
+ }
+ if (bb->recursion) {
+ return TRUE;
+
+ }
+
+
+ if (bb->option & BO_REPEAT) {
+ /* Remove an existing timer */
+ 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;
+
+ }
+
+ if (!bb->busy) {
+ bb->recursion++;
+ int sensitive = gtk_widget_get_sensitive (GTK_WIDGET(bb->widget));
+ if (sensitive) {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bb->widget), TRUE);
+ }
+ bb->recursion--;
+ }
+
+
+ return TRUE;
+
+}
+
+static gint releaseButt(
+ GtkWidget *widget,
+ GdkEventButton *event,
+ wButton_p bb)
+{
+
+ 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;
+ }
+
+ bb->timer_state = -1;
+
+ pushButt(widget,bb); //Do here to simulate "clicked"
+
+ if (!bb->busy) {
+ bb->recursion++;
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bb->widget), FALSE);
+ bb->recursion--;
+ }
+ return TRUE;
+}
+
+
/**
* 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);
@@ -207,57 +330,62 @@ static wBool_t exposeButt(
*/
wButton_p wButtonCreate(
- wWin_p parent,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wPos_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), "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;
}
@@ -270,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;
};
@@ -288,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;
}
/**
@@ -325,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);
+ }
}
/**
@@ -353,9 +481,9 @@ void wRadioSetValue(
*/
long wRadioGetValue(
- wChoice_p bc) /* Radio box */
+ wChoice_p bc) /* Radio box */
{
- return choiceGetValue(bc);
+ return choiceGetValue(bc);
}
/**
@@ -366,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++;
+ 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);
- }
+ 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--;
}
@@ -395,9 +523,9 @@ void wToggleSetValue(
*/
long wToggleGetValue(
- wChoice_p b) /* Toggle box */
+ wChoice_p b) /* Toggle box */
{
- return choiceGetValue(b);
+ return choiceGetValue(b);
}
/**
@@ -410,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;
}
/**
@@ -449,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);
+ }
}
/**
@@ -475,95 +603,95 @@ static void choiceRepaint(
*/
wChoice_p wRadioCreate(
- wWin_p parent,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char **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 ** 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;
}
/**
@@ -583,82 +711,82 @@ wChoice_p wRadioCreate(
*/
wChoice_p wToggleCreate(
- wWin_p parent,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char **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 ** 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 e1689d2..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,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wPos_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 07d9210..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,14 +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 ) {
+
+ 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_WIDGET(b->widget), active);
+ } else {
+
+ gtk_widget_set_sensitive(GTK_WIDGET(b->widget), active);
+
+ }
}
/**
@@ -102,17 +112,17 @@ void wControlActive(
* \returns width of label including some space
*/
-wPos_t wLabelWidth(
- const char * label)
+wWinPix_t wLabelWidth(
+ 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;
}
/**
@@ -122,10 +132,10 @@ wPos_t wLabelWidth(
* \returns width
*/
-wPos_t wControlGetWidth(
- wControl_p b)
+wWinPix_t wControlGetWidth(
+ wControl_p b)
{
- return b->w;
+ return b->w;
}
/**
@@ -135,10 +145,10 @@ wPos_t wControlGetWidth(
* \returns height
*/
-wPos_t wControlGetHeight(
- wControl_p b)
+wWinPix_t wControlGetHeight(
+ wControl_p b)
{
- return b->h;
+ return b->h;
}
/**
@@ -148,10 +158,10 @@ wPos_t wControlGetHeight(
* \returns position
*/
-wPos_t wControlGetPosX(
- wControl_p b) /* Control */
+wWinPix_t wControlGetPosX(
+ wControl_p b) /* Control */
{
- return b->realX;
+ return b->realX;
}
/**
@@ -161,10 +171,11 @@ wPos_t wControlGetPosX(
* \returns position
*/
-wPos_t wControlGetPosY(
- wControl_p b) /* Control */
+wWinPix_t wControlGetPosY(
+ 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);
}
/**
@@ -176,27 +187,29 @@ wPos_t wControlGetPosY(
*/
void wControlSetPos(
- wControl_p b,
- wPos_t x,
- wPos_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));
+ }
}
/**
@@ -207,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);
+ }
}
/**
@@ -235,10 +249,10 @@ void wControlSetLabel(
*/
void wControlSetContext(
- wControl_p b,
- void * context)
+ wControl_p b,
+ void * context)
{
- b->data = context;
+ b->data = context;
}
/**
@@ -248,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);
@@ -281,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);
}
@@ -289,7 +293,7 @@ wBool_t wControlExpose (
cairo_destroy(cr);
- return FALSE;
+ return FALSE;
}
/**
@@ -301,26 +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 (b->widget == NULL) {
- return;
- }
-
- if (! gtk_widget_get_visible(b->widget)) {
- return;
- }
-
- if (! gtk_widget_get_visible(b->parent->widget)) {
- return;
- }
+// cairo_t *cr;
+// int off = GTKCONTROLHILITEWIDTH/2+1;
+ if ( debugWindow >= 1 ) {
+ printf( "wControlHIlite( %s, %d )\n", b->labelStr, hilite );
+ }
- b->outline = hilite;
+ if (b->widget == NULL) {
+ return;
+ }
+ b->outline = hilite;
- if (b->widget)
- gtk_widget_queue_draw(b->widget);
+ if (b->widget) {
+ gtk_widget_queue_draw(b->widget);
+ }
}
diff --git a/app/wlib/gtklib/droplist.c b/app/wlib/gtklib/droplist.c
index 69a2efd..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,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- wPos_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 a1fb7cc..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 );
@@ -324,28 +331,28 @@ int wFilSelect( struct wFilSel_t * fs, const char * dirName )
extension = startDelimiter + 2;
}
}
- file = g_realloc( file, strlen(file)+strlen(extension));
+ file = g_realloc( file, strlen(file)+strlen(extension)+1);
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 e2f741b..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;
}
@@ -182,62 +182,63 @@ PangoLayout *wlibFontCreatePangoLayout(GtkWidget *widget,
wFont_p fp,
wFontSize_t fs,
const char *s,
- int *width_p,
- int *height_p,
- int *ascent_p,
- int *descent_p,
- int *baseline_p)
+ wDrawPix_t *width_p,
+ wDrawPix_t *height_p,
+ wDrawPix_t *ascent_p,
+ wDrawPix_t *descent_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 */
- pango_layout_get_size(layout, width_p, height_p);
- *width_p = *width_p / PANGO_SCALE;
- *height_p = *height_p / 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;
}
/**
@@ -247,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);
}
@@ -258,9 +259,9 @@ void wlibFontDestroyPangoLayout(PangoLayout *layout)
void wInitializeFonts()
{
- if (!fontInitted) {
- fontInit();
- }
+ if (!fontInitted) {
+ fontInit();
+ }
}
/**
@@ -271,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);
}
/**
@@ -316,11 +317,11 @@ void wSelectFont(
static wFont_p wlibSelectedFont(void)
{
- if (!fontInitted) {
- fontInit();
- }
+ if (!fontInitted) {
+ fontInit();
+ }
- return curFont;
+ return curFont;
}
/**
@@ -331,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;
}
/**
@@ -352,7 +353,7 @@ wFontSize_t wSelectedFontSize(void)
void wSetSelectedFontSize(wFontSize_t size)
{
- absoluteFontSize = size;
+ absoluteFontSize = size;
}
/**
@@ -367,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;
}
/**
@@ -401,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 4498a2c..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;
- //wPos_t maxW;
- //wPos_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;
- //wPos_t lastX;
- //wPos_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, wPos_t width, wPos_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, wPos_t width, wP
}
- void wDrawLine(
- wDraw_p bd,
- wPos_t x0, wPos_t y0,
- wPos_t x1, wPos_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, wPos_t width, wP
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, wPos_t width, wP
*/
- void wDrawArc(
- wDraw_p bd,
- wPos_t x0, wPos_t y0,
- wPos_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,
- wPos_t x0, wPos_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,23 +394,23 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wPos_t width, wP
*
******************************************************************************/
- void wDrawString(
- wDraw_p bd,
- wPos_t x, wPos_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;
- int w;
- int h;
- gint ascent;
- gint descent;
- gint baseline;
+ wDrawPix_t w;
+ wDrawPix_t h;
+ wDrawPix_t ascent;
+ wDrawPix_t descent;
+ wDrawPix_t baseline;
double angle = -M_PI * a / 180.0;
if ( bd == &psPrint_d ) {
@@ -528,19 +422,21 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wPos_t width, wP
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,
- (int *) &w, (int *) &h,
- (int *) &ascent, (int *) &descent, (int *) &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, wPos_t width, wP
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,48 +461,52 @@ cairo_t* CreateCursorSurface(wControl_p ct, wSurface_p surface, wPos_t width, wP
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(
- wPos_t *w,
- wPos_t *h,
- wPos_t *d,
- wPos_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 )
{
- int textWidth;
- int textHeight;
- int ascent;
- int descent;
- int baseline;
+ wDrawPix_t textWidth;
+ wDrawPix_t textHeight;
+ wDrawPix_t ascent;
+ wDrawPix_t descent;
+ wDrawPix_t baseline;
*w = 0;
*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, (int *) &textHeight,
- (int *) &ascent, (int *) &descent, (int *) &baseline) );
-
- *w = (wPos_t) textWidth;
- *h = (wPos_t) textHeight;
- *a = (wPos_t) ascent;
- //*d = (wPos_t) textHeight-ascent;
- *d = (wPos_t) descent;
-
- if (debugWindow >= 3)
- fprintf(stderr, "text metrics: w=%d, h=%d, d=%d\n", *w, *h, *d);
+ wlibFontCreatePangoLayout(bd->widget, cairo, fp, fs, s,
+ &textWidth, &textHeight,
+ &ascent, &descent, &baseline) );
+
+ *w = textWidth;
+ *h = textHeight;
+ *a = ascent;
+ //*d = textHeight-ascent;
+ *d = descent;
+
+ 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, wPos_t width, wP
*******************************************************************************/
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,
- wPos_t x,
- wPos_t y,
- wPos_t w,
- wPos_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,
- wPos_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,34 +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;
}
- wPos_t min_x,max_x,min_y,max_y;
+ 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].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
@@ -770,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);
@@ -795,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,
- wPos_t x0,
- wPos_t y0,
- wPos_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;
@@ -820,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);
@@ -847,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;
}
@@ -881,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;
@@ -902,23 +822,21 @@ static void wlibDrawFilled(
}
- void wDrawBitMap(
- wDraw_p bd,
- wDrawBitMap_p bm,
- wPos_t x, wPos_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;
- wPos_t xx, yy;
- wControl_p b;
- wWin_p win;
- GdkDrawable * gdk_drawable, * cairo_surface;
+ wDrawPix_t xx, yy;
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;
@@ -926,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);
@@ -960,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);
+ }
}
@@ -1021,8 +873,8 @@ static void wlibDrawFilled(
- void wDrawSaveImage(
- wDraw_p bd )
+void wDrawSaveImage(
+ wDraw_p bd )
{
cairo_t * cr;
if ( bd->pixmapBackup ) {
@@ -1032,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;
@@ -1040,8 +892,8 @@ static void wlibDrawFilled(
}
- void wDrawRestoreImage(
- wDraw_p bd )
+void wDrawRestoreImage(
+ wDraw_p bd )
{
GdkRectangle update_rect;
if ( bd->pixmapBackup ) {
@@ -1054,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;
@@ -1064,10 +916,10 @@ static void wlibDrawFilled(
}
- void wDrawSetSize(
- wDraw_p bd,
- wPos_t w,
- wPos_t h , void * redraw)
+void wDrawSetSize(
+ wDraw_p bd,
+ wWinPix_t w,
+ wWinPix_t h, void * redraw)
{
wBool_t repaint;
if (bd == NULL) {
@@ -1076,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,
- wPos_t *w,
- wPos_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;
}
@@ -1118,76 +980,68 @@ 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,
- wPos_t x,
- wPos_t y,
- wPos_t w,
- wPos_t h )
+void wDrawClip(
+ wDraw_p d,
+ wDrawPix_t x,
+ wDrawPix_t y,
+ wDrawPix_t w,
+ wDrawPix_t h )
{
GdkRectangle rect;
- rect.width = w;
- rect.height = h;
- rect.x = INMAPX( d, x );
- rect.y = INMAPY( d, y ) - rect.height;
+ rect.width = (wWinPix_t)w;
+ rect.height = (wWinPix_t)h;
+ rect.x = (wWinPix_t)INMAPX( d, x );
+ rect.y = (wWinPix_t)INMAPY( d, y ) - rect.height;
gdk_gc_set_clip_rectangle( d->gc, &rect );
}
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 %dx%d+%dx%d\n", cDEE++,
- event->area.x, event->area.y, event->area.width, event->area.height,
- 0, bd->w, 0, bd->h );
+ 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 );
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;
@@ -1195,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
@@ -1211,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, 0, 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;
@@ -1248,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 {
@@ -1306,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)
- printf( "%s[%dx%d]\n", actionNames[action], bd->lastX, bd->lastY );
- bd->action( bd, bd->context, action, bd->lastX, bd->lastY );
+ 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);
}
return TRUE;
@@ -1320,8 +1184,8 @@ static gint draw_scroll_event(
static gint draw_leave_event(
- GtkWidget *widget,
- GdkEvent * event )
+ GtkWidget *widget,
+ GdkEvent * event )
{
wlibHelpHideBalloon();
return TRUE;
@@ -1332,14 +1196,19 @@ static gint draw_leave_event(
* Handler for mouse button clicks.
*/
+
+
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);
@@ -1347,35 +1216,43 @@ static gint draw_button_event(
switch ( event->button ) {
case 1: /* left mouse button */
action = event->type==GDK_BUTTON_PRESS?wActionLDown:wActionLUp;
- if (event->type==GDK_2BUTTON_PRESS) action = wActionLDownDouble;
- /*bd->action( bd, bd->context, event->type==GDK_BUTTON_PRESS?wActionLDown:wActionLUp, bd->lastX, bd->lastY );*/
+ 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 */
action = event->type==GDK_BUTTON_PRESS?wActionRDown:wActionRUp;
- /*bd->action( bd, bd->context, event->type==GDK_BUTTON_PRESS?wActionRDown:wActionRUp, bd->lastX, bd->lastY );*/
+ /*bd->action( bd, bd->context, event->type==GDK_BUTTON_PRESS?wActionRDown:wActionRUp, (wDrawPix_t)bd->lastX, (wDrawPix_t)bd->lastY );*/
break;
}
if (action != 0) {
- if (drawVerbose >= 2)
- printf( "%s[%dx%d]\n", actionNames[action], bd->lastX, bd->lastY );
- bd->action( bd, bd->context, action, bd->lastX, bd->lastY );
+ 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 );
}
- 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);
@@ -1387,6 +1264,8 @@ static gint draw_motion_event(
if (state & GDK_BUTTON1_MASK) {
action = wActionLDrag;
+ } else if (state & GDK_BUTTON2_MASK) {
+ action = wActionMDrag;
} else if (state & GDK_BUTTON3_MASK) {
action = wActionRDrag;
} else {
@@ -1394,48 +1273,54 @@ static gint draw_motion_event(
}
bd->lastX = OUTMAPX(bd, x);
bd->lastY = OUTMAPY(bd, y);
- if (drawVerbose >= 2)
- printf( "%lx: %s[%dx%d] %s\n", (long)bd, actionNames[action], bd->lastX, bd->lastY, event->is_hint?"<Hint>":"<>" );
- bd->action( bd, bd->context, action, bd->lastX, 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), bd->lastX, 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;
@@ -1444,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;
@@ -1480,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), bd->lastX, 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), bd->lastX, 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), bd->lastX, 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), bd->lastX, 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;
}
@@ -1523,17 +1420,17 @@ int XW = 0;
int XH = 0;
int xw, xh, cw, ch;
- wDraw_p wDrawCreate(
- wWin_p parent,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- long option,
- wPos_t width,
- wPos_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;
@@ -1549,37 +1446,51 @@ 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;
- bd->dpi = 75;
+
+ 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;
@@ -1587,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 );
@@ -1614,14 +1527,19 @@ int xw, xh, cw, ch;
*
*******************************************************************************/
-wDraw_p wBitMapCreate( wPos_t w, wPos_t h, int arg )
+wDraw_p wBitMapCreate( wWinPix_t w, wWinPix_t h, int arg )
{
wDraw_p bd;
bd = (wDraw_p)wlibAlloc( gtkMainW, B_DRAW, 0, 0, NULL, sizeof *bd, NULL );
bd->lastColor = -1;
- bd->dpi = 75;
+
+ double dpi;
+
+ wPrefGetFloat(PREFSECTION, DPISET, &dpi, 96.0);
+
+ bd->dpi = dpi;
bd->maxW = bd->w = w;
bd->maxH = bd->h = h;
@@ -1655,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;
@@ -1677,10 +1596,41 @@ int wDrawSetBackground( wDraw_p bd, char * path, char ** error) {
}
-void wDrawShowBackground( wDraw_p bd, wPos_t pos_x, wPos_t pos_y, wPos_t size, wAngle_t angle, int screen) {
+/**
+ * Use a loaded background in another context.
+ *
+ * \param from context with 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;
+ }
+}
+
+/**
+* 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 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)
+{
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);
@@ -1697,19 +1647,24 @@ void wDrawShowBackground( wDraw_p bd, wPos_t pos_x, wPos_t pos_y, wPos_t size, w
}
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 410fd7f..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;
- wPos_t width;
- wPos_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 );
@@ -69,11 +61,10 @@ typedef void (*setTriggerCallback_p)( wControl_p b );
wControl_p next; \
wControl_p synonym; \
wWin_p parent; \
- wPos_t origX, origY; \
- wPos_t realX, realY; \
- wPos_t default_size_x, default_size_y; \
- wPos_t labelW; \
- wPos_t w, h; \
+ wWinPix_t origX, origY; \
+ wWinPix_t realX, realY; \
+ wWinPix_t labelW; \
+ wWinPix_t w, h; \
int maximize_initially; \
long option; \
const char * labelStr; \
@@ -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 */
- wPos_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;
- wPos_t *colWidths;
- wBool_t *colRightJust;
- GtkListStore *listStore;
- GtkWidget *treeView;
- int last;
- wPos_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;
- wPos_t w;
- wPos_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,36 +147,42 @@ extern wDrawColor wDrawColorBlack;
/* boxes.c */
-void wlibDrawBox(wWin_p win, wBoxType_e style, wPos_t x, wPos_t y, wPos_t w, wPos_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;
+ 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 {
@@ -201,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, wPos_t x, wPos_t y, const char *helpStr, const char *labelStr, long option, long number, wPos_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, int *width_p, int *height_p, int *ascent_p, int *descent_p, int *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);
@@ -217,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);
@@ -236,20 +242,21 @@ 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, wPos_t origX, wPos_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);
-wControl_p wlibGetControlFromPos(wWin_p win, wPos_t x, wPos_t y);
+wControl_p wlibGetControlFromPos(wWin_p win, wWinPix_t x, wWinPix_t y);
char *wlibConvertInput(const char *inString);
char *wlibConvertOutput(const char *inString);
struct accelData_t *wlibFindAccelKey(GdkEventKey *event);
@@ -264,48 +271,56 @@ 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;
- wPos_t maxW;
- wPos_t maxH;
- unsigned long lastColor;
- wBool_t lastColorInverted;
- const char * helpStr;
-
- wPos_t lastX;
- wPos_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(wPos_t x0, wPos_t y0, wPos_t x1, wPos_t y1, wDrawWidth width, wDrawLineType_e lineType, wDrawColor color, wDrawOpts opts);
-void psPrintArc(wPos_t x0, wPos_t y0, wPos_t r, double angle0, double angle1, wBool_t drawCenter, wDrawWidth width, wDrawLineType_e lineType, wDrawColor color, wDrawOpts opts);
-void psPrintFillRectangle(wPos_t x0, wPos_t y0, wPos_t x1, wPos_t y1, wDrawColor color, wDrawOpts opts);
-void psPrintFillPolygon(wPos_t p[][2], wPolyLine_e type[], int cnt, wDrawColor color, wDrawOpts opts, int fill, int open);
-void psPrintFillCircle(wPos_t x0, wPos_t y0, wPos_t r, wDrawColor color, wDrawOpts opts);
-void psPrintString(wPos_t x, wPos_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();
/* splash.c */
@@ -321,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);
@@ -334,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 8f2766d..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
@@ -28,7 +28,8 @@
#include <gtk/gtk.h>
#include <gdk/gdk.h>
-#include "misc.h"
+//#include "misc.h"
+extern const char * GetCurCommandName();
#include "gtkint.h"
#include "i18n.h"
@@ -45,29 +46,31 @@
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("index");
- 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);
}
@@ -80,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 ac66aba..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,53 +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 {
- inx = bl->last;
-
- if (inx >= 0) {
- id_p = wlibListStoreGetContext(bl->listStore, inx);
-
- if (id_p==NULL) {
- fprintf(stderr, "wListGetValues - id_p == NULL\n");
- } 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;
}
/**
@@ -278,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;
+ }
}
/**
@@ -304,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;
}
/**
@@ -325,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;
+ }
+ }
}
/**
@@ -359,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;
}
/**
@@ -387,31 +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--;
+ }
- b->recursion--;
- return;
+ if (b->last == inx-1) { b->last = -1; }
+ else if (b->last >= inx) { b->last = -1; }
+
+ b->recursion--;
+ return;
}
/**
@@ -424,29 +431,29 @@ void wListDelete(
*/
int wListGetColumnWidths(
- wList_p bl,
- int colCnt,
- wPos_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;
}
/**
@@ -460,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;
}
@@ -510,16 +517,16 @@ wIndex_t wListAddValue(
* \param h IN height (ignored for droplist)
*/
-void wListSetSize(wList_p bl, wPos_t w, wPos_t h)
+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;
}
/**
@@ -533,20 +540,20 @@ void wListSetSize(wList_p bl, wPos_t w, wPos_t h)
*/
wList_p wComboListCreate(
- wWin_p parent, /* Parent window */
- wPos_t x, /* X-position */
- wPos_t y, /* Y-position */
- const char * helpStr, /* Help string */
- const char * labelStr, /* Label */
- long option, /* Options */
- long number, /* Number of displayed list entries */
- wPos_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 79695d4..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;
- wMenuToggleCallBack_p action;
+ 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:
@@ -151,13 +153,14 @@ static void pushMenuItem(
case M_TOGGLE:
mt = (wMenuToggle_p)m;
wMenuToggleSet( mt, !mt->set );
- mt->action( mt->set, mt->data );
+ mt->action( mt->data );
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,
- wMenuToggleCallBack_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,
- wPos_t x,
- wPos_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;
@@ -1067,7 +1098,7 @@ wBool_t wMenuAction(
wBeep();
} else {
wMenuToggleSet( mt, !mt->set );
- mt->action( mt->set, mt->data );
+ mt->action( mt->data );
}
break;
case M_MENU:
@@ -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 af37d22..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;
- wPos_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,
- wPos_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);
}
/**
@@ -90,48 +90,48 @@ void wMessageSetWidth(
* \return text height
*/
-wPos_t wMessageGetHeight(
- long flags)
+wWinPix_t wMessageGetHeight(
+ 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 @@ wPos_t wMessageGetHeight(
*/
wMessage_p wMessageCreateEx(
- wWin_p parent,
- wPos_t x,
- wPos_t y,
- const char * labelStr,
- wPos_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;
}
/**
@@ -212,13 +212,13 @@ wMessage_p wMessageCreateEx(
* \return expected width of message box
*/
-wPos_t
+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 4ec1f5e..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>
@@ -28,7 +28,6 @@
#include <errno.h>
#include <fcntl.h>
-#include "misc.h"
#include "gtkint.h"
#include "i18n.h"
@@ -40,6 +39,7 @@ static pid_t pidOfChild;
static int handleOfPipe;
extern char *wExecutableName;
+extern wBool_t CheckHelpTopicExists(const char *);
/**
* Create the fully qualified filename for the help helper
@@ -51,15 +51,15 @@ extern char *wExecutableName;
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 7b8d7d1..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, " %d %d 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/png.c b/app/wlib/gtklib/png.c
deleted file mode 100644
index 809de6a..0000000
--- a/app/wlib/gtklib/png.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** \file png.c
- * PNG creation
- */
-
-/* XTrackCad - Model Railroad CAD
- * Copyright (C) 2015 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.
- */
-
-#define GTK_DISABLE_SINGLE_INCLUDES
-#define GDK_DISABLE_DEPRECATED
-#define GTK_DISABLE_DEPRECATED
-#define GSEAL_ENABLE
-
-#include <gtk/gtk.h>
-#include "gtkint.h"
-
-#define BITMAPFILEFORMAT "png"
-
-/**
-* Export as bitmap file.
-*
-* \param d IN the drawing area ?
-* \param fileName IN fully qualified filename for the bitmap file.
-* \return TRUE on success, FALSE on error
-*/
-
-wBool_t wBitMapWriteFile(wDraw_p d, const char * fileName)
-{
- GdkPixbuf *pixbuf;
- GError *error;
- gboolean res;
- 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, BITMAPFILEFORMAT, &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/gtklib/print.c b/app/wlib/gtklib/print.c
index 860a7c7..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(
- wPos_t x0, wPos_t y0,
- wPos_t x1, wPos_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(
- wPos_t x0, wPos_t y0,
- wPos_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(
- wPos_t x0, wPos_t y0,
- wPos_t x1, wPos_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(
- wPos_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);
- wPos_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]);
@@ -623,35 +620,39 @@ void psPrintFillPolygon(
mid3[1] = (p[inx][1]-mid0[1])/2+mid0[1];
mid4[0] = (mid1[0]-p[inx][0])/2+p[inx][0];
mid4[1] = (mid1[1]-p[inx][1])/2+p[inx][1];
- wPos_t save[2];
+ 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(
- wPos_t x0, wPos_t y0,
- wPos_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,97 +711,102 @@ void psPrintFillCircle(
*/
void psPrintString(
- wPos_t x, wPos_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;
+
+ PangoLayout *layout;
+ PangoFontDescription *desc;
+// PangoFontMetrics *metrics;
+ PangoContext *pcontext;
- cairo_t *cr;
- cairo_matrix_t matrix;
+ if (color == wDrawColorWhite) {
+ return;
+ }
- PangoLayout *layout;
- PangoFontDescription *desc;
- PangoFontMetrics *metrics;
- PangoContext *pcontext;
+ cr = psPrint_d.printContext;
- if (color == wDrawColorWhite) {
- return;
- }
+ // get the current transformation matrix and transform the starting
+ // point of the string
- cr = psPrint_d.printContext;
+ cairo_save(cr);
- // get the current transformation matrix and transform the starting
- // point of the string
+ cairo_get_matrix(cr, &matrix);
- cairo_save(cr);
+ cairo_matrix_transform_point(&matrix, &x0, &y0);
- cairo_get_matrix(cr, &matrix);
+ cairo_identity_matrix(cr);
- cairo_matrix_transform_point(&matrix, &x0, &y0);
+ layout = pango_cairo_create_layout(cr);
- cairo_identity_matrix(cr);
+ // set the correct font and size
+ /** \todo use a getter function instead of double conversion */
+ desc = pango_font_description_from_string(wlibFontTranslate(fp));
- layout = pango_cairo_create_layout(cr);
+ pango_font_description_set_size(desc, fs * PANGO_SCALE * scale_text);
- // set the correct font and size
- /** \todo use a getter function instead of double conversion */
- desc = pango_font_description_from_string(wlibFontTranslate(fp));
+ // render the string to a Pango layout
+ pango_layout_set_font_description(layout, desc);
- pango_font_description_set_size(desc, fs * PANGO_SCALE * scale_text);
+ gchar *utf8 = wlibConvertInput(s);
- // render the string to a Pango layout
- pango_layout_set_font_description(layout, desc);
- pango_layout_set_text(layout, s, -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 );
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);
}
/**
@@ -811,14 +817,14 @@ void psPrintString(
* \return
*/
-void wPrintClip(wPos_t x, wPos_t y, wPos_t w, wPos_t h)
+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);
}
/*****************************************************************************
@@ -835,22 +841,22 @@ void wPrintClip(wPos_t x, wPos_t y, wPos_t w, wPos_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;
+ }
}
/**
@@ -863,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; }
}
@@ -884,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;
}
/**
@@ -904,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.
@@ -920,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;
}
/**
@@ -940,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;
}
/*****************************************************************************
@@ -965,112 +971,134 @@ 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));
+
+ // 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);
+ res = gtk_dialog_run((GtkDialog *)printDialog);
- printDialog = gtk_print_unix_dialog_new(title, GTK_WINDOW(gtkMainW->gtkwin));
+ if (res == GTK_RESPONSE_OK) {
+ selPrinter = gtk_print_unix_dialog_get_selected_printer((
+ GtkPrintUnixDialog *)printDialog);
- // load the settings
- WlibApplySettings(NULL);
+ if (settings) {
+ g_object_unref(settings);
+ }
+
+ settings = gtk_print_unix_dialog_get_settings((GtkPrintUnixDialog *)
+ printDialog);
- // 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);
+ if (page_setup) {
+ g_object_unref(page_setup);
+ }
- res = gtk_dialog_run((GtkDialog *)printDialog);
+ page_setup = gtk_print_unix_dialog_get_page_setup((GtkPrintUnixDialog *)
+ printDialog);
- if (res == GTK_RESPONSE_OK) {
- selPrinter = gtk_print_unix_dialog_get_selected_printer((
- GtkPrintUnixDialog *)printDialog);
+ curPrintJob = gtk_print_job_new(title,
+ selPrinter,
+ settings,
+ page_setup);
- if (settings) {
- g_object_unref(settings);
- }
+ psPrint_d.curPrintSurface = gtk_print_job_get_surface(curPrintJob,
+ NULL);
+ psPrint_d.printContext = cairo_create(psPrint_d.curPrintSurface);
- settings = gtk_print_unix_dialog_get_settings((GtkPrintUnixDialog *)
- printDialog);
+ WlibApplySettings( NULL );
+ //update the paper dimensions
+ WlibGetPaperSize();
- if (page_setup) {
- g_object_unref(page_setup);
- }
+ /* 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);
- page_setup = gtk_print_unix_dialog_get_page_setup((GtkPrintUnixDialog *)
- printDialog);
+ /*
+ * 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";
- curPrintJob = gtk_print_job_new(title,
- selPrinter,
- settings,
- page_setup);
+ scale_text = 1.0;
+ scale_adjust = 1.0;
- psPrint_d.curPrintSurface = gtk_print_job_get_surface(curPrintJob,
- NULL);
- psPrint_d.printContext = cairo_create(psPrint_d.curPrintSurface);
+ double printScale,printTextScale;
- WlibApplySettings( NULL );
- //update the paper dimensions
- WlibGetPaperSize();
+ wPrefGetFloat(PREFSECTION, PRINTSCALE, &printScale, -1.0);
+ wPrefGetFloat(PREFSECTION, PRINTTEXTSCALE, &printTextScale, -1.0);
- /* 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 sets 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 variable XTRKCADPRINTTEXTSCALE
- * Note - doing this will introduce differing artifacts.
- *
- */
- char * sEnvScale = PRODUCT "PRINTSCALE";
+ //If the preferences are not set, look at environmental variables
- const char * sPrinterName = gtk_printer_get_name( selPrinter );
- if ((strcmp(sPrinterName,"Print to File") == 0) || getenv(sEnvScale) == NULL) {
+ 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) {
double p_def = 600;
cairo_surface_set_fallback_resolution(psPrint_d.curPrintSurface, p_def, p_def);
psPrint_d.dpi = p_def;
scale_adjust = 72/p_def;
} else {
- char * sEnvTextScale = PRODUCT "PRINTTEXTSCALE";
- if (getenv(sEnvTextScale) && (atof(getenv(sEnvTextScale)) != 0.0)) {
- scale_text = atof(getenv(sEnvTextScale));
- } else scale_text = 1.0;
- if (getenv(sEnvScale) && (atof(getenv(sEnvScale)) != 0.0)) {
- scale_adjust = atof(getenv(sEnvScale));
- } else scale_adjust = 1.0;
+ if (printTextScale > 0.0) {
+ scale_text = printTextScale;
+ }
+ if (printScale > 0.0) {
+ scale_adjust = printScale;
+ }
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;
+ }
}
/**
@@ -1085,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);
+ }
}
/**
@@ -1104,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 );
}
@@ -1117,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 600f1dd..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
@@ -35,7 +35,6 @@
#include "gtkint.h"
-#define TIMEOUT_INACTIVITY (500) /**< timeout for entry fields in millisecs */
/*
*****************************************************************************
@@ -54,7 +53,6 @@ struct wString_t {
wBool_t enter_pressed; /**< flag if enter was pressed */
wBool_t hasSignal; /** needs signal to be suppressed */
int count; /** number of 100ms since last entry **/
- guint timer; /**< timer source for inactivity timer */
};
/**
@@ -62,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);
+ }
}
}
@@ -88,12 +89,12 @@ void wStringSetValue(
*
* \param b IN widget to be updated
* \param w IN new width
- * \return
+ * \return
*/
void wStringSetWidth(
- wString_p b,
- wPos_t w)
+ wString_p b,
+ wWinPix_t w)
{
gtk_widget_set_size_request(b->widget, w, -1);
b->w = w;
@@ -107,113 +108,71 @@ 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));
}
-/**
- * Kill an active timer
- *
- * \param b IN entry field
- * \return the entered text
- */
-
-static gboolean killTimer(
- GtkEntry *widget,
- GdkEvent *event,
- wString_p b)
-{
-
- // remove all timers related to this widget
- while( g_source_remove_by_user_data( b ))
- ;
- b->timer = 0;
-
- if (b->action) {
- const char *s;
-
- s = gtk_entry_get_text(GTK_ENTRY(b->widget));
- b->action(s, b->data);
- }
- gtk_editable_select_region( GTK_EDITABLE( widget ), 0, 0 );
- return( FALSE );
-}
/**
- * Timer handler for string activity. This timer checks the input if the user
- * doesn't change an entry value for the preset time (0.5s).
+ * Do the current active string's action when a button was pushed
+ * Used to validate input
*/
-
-static gboolean
-timeoutString( wString_p bs )
+static wString_p stringControl = NULL;
+void wlibStringUpdate()
{
- const char *new_value;
- if ( !bs )
- return( FALSE );
- if (bs->widget == 0)
- abort();
-
- bs->count--;
-
- if (bs->count==0) {
- // get the currently entered value
- new_value = wStringGetValue(bs);
- if (bs->valueP != NULL)
- strcpy(bs->valueP, new_value);
-
- if (bs->action) {
- bs->enter_pressed = FALSE; //Normal input
- if ( new_value )
- bs->action(new_value,bs->data);
- }
- }
- if (bs->count<=0) {
- bs->timer = 0;
- return( FALSE ); //Stop timer
- } else {
- return TRUE; //Wait 100ms
+ if ( stringControl && stringControl->action ) {
+ stringControl->action( wStringGetValue(stringControl), stringControl->data );
+ stringControl = NULL;
}
}
+
/**
* Signal handler for 'activate' signal: enter pressed - callback with the current value and then
* select the whole default value
*
* \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 ) {
+ 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);
@@ -225,40 +184,113 @@ static gboolean stringExposed(GtkWidget* widget, GdkEventExpose * event, gpointe
*
* \param widget IN
* \param entry field IN
- * \return
+ * \return
*/
-static void stringChanged(
- GtkEntry *widget,
- wString_p b)
+static int stringChanged(
+ GtkEntry *widget,
+ wString_p b)
{
- const char *new_value;
-
- if ( !b )
- return;
-
- b->count = 5; /* set ~500 ms from now */
-
- // get the entered value
- //new_value = wStringGetValue(b);
- //if (b->valueP != NULL)
- // strcpy(b->valueP, new_value);
- //
- //
- if (b->action){
- // if one exists, remove the inactivity timer
- if( !b->timer ) {
- //g_source_remove( b->timer );
-
- // create a new timer
- b->timer = g_timeout_add( TIMEOUT_INACTIVITY/5,
- (GSourceFunc)timeoutString,
- b );
- }
- }
- return;
+ if ( debugWindow >= 1 ) {
+ printf( "stringChanged: %s\n", b->labelStr);
+ }
+ stringControl = b;
+ return FALSE;
}
+static int stringPreeditChanged(
+ GtkEntry *widget,
+ wString_p b)
+{
+ if ( debugWindow >= 1 ) {
+ printf( "stringPreeditChanged: %s\n", b->labelStr );
+ }
+ return FALSE;
+}
+static int stringFocusOutEvent(
+ GtkEntry *widget,
+ GdkEvent * event,
+ wString_p b)
+{
+ if ( debugWindow >= 1 ) {
+ printf( "stringFocusOut: %s\n", b->labelStr );
+ }
+ if (b->action) {
+ const char *s;
+ s = gtk_entry_get_text(GTK_ENTRY(b->widget));
+ b->action(s, b->data);
+ }
+ gtk_editable_select_region( GTK_EDITABLE( widget ), 0, 0 );
+ return FALSE;
+}
+static int stringFocusInEvent(
+ GtkEntry *widget,
+ GdkEvent * event,
+ wString_p b)
+{
+ if ( debugWindow >= 1 ) {
+ printf( "stringFocusIn: %s\n", b->labelStr );
+ }
+ stringControl = b;
+ return FALSE;
+}
+static int stringLeaveNotifyEvent(
+ GtkEntry *widget,
+ GdkEvent * event,
+ wString_p b)
+{
+ if ( debugWindow >= 3 ) {
+ printf( "stringLeaveNotfyEvent: %s\n", b->labelStr );
+ }
+ return FALSE;
+}
+static int stringEventAfter(
+ GtkEntry *widget,
+ wString_p b)
+{
+ if ( debugWindow >= 3 ) {
+ printf( "stringEventAfter: %s\n", b->labelStr );
+ }
+ return FALSE;
+}
+static int stringEvent(
+ GtkEntry *widget,
+ wString_p b)
+{
+ if ( debugWindow >= 3 ) {
+ printf( "stringEvent: %s\n", b->labelStr );
+ }
+ return FALSE;
+}
+static int stringKeyPressEvent(
+ GtkEntry *widget,
+ GdkEvent * event,
+ wString_p b)
+{
+ if ( debugWindow >= 1 ) {
+ printf( "stringKeyPressEvent: %s\n", b->labelStr );
+ }
+ return FALSE;
+}
+static int stringStateChanged(
+ GtkEntry *widget,
+ int state,
+ wString_p b)
+{
+ if ( debugWindow >= 1 ) {
+ printf( "stringStateChanged: %s\n", b->labelStr );
+ }
+ return FALSE;
+}
+static int stringActivate(
+ GtkEntry *widget,
+ wString_p b)
+{
+ if ( debugWindow >= 1 ) {
+ printf( "stringActivate: %s\n", b->labelStr );
+ }
+ return stringChanged( widget, b );
+}
/**
* Create a single line entry field for a string value
*
@@ -268,86 +300,109 @@ static void stringChanged(
* \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,
- wPos_t x,
- wPos_t y,
- const char *helpStr,
- const char *labelStr,
- long option,
- wPos_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;
b->option = option;
b->valueL = valueL;
- b->timer = 0;
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), "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);
+
//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);
@@ -355,7 +410,6 @@ wString_p wStringCreate(
}
gtk_widget_add_events( b->widget, GDK_FOCUS_CHANGE_MASK );
- g_signal_connect(GTK_OBJECT(b->widget), "focus-out-event", G_CALLBACK(killTimer), b);
-
+
return b;
}
diff --git a/app/wlib/gtklib/splash.c b/app/wlib/gtklib/splash.c
index 5d56e9f..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,14 +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);
- wFlush();
- return TRUE;
- }
-
- return FALSE;
+ if (!window) { return FALSE; }
+ if (msg && message) {
+ gtk_label_set_text(GTK_LABEL(message), msg);
+ return TRUE;
+ }
+
+ return FALSE;
}
/**
@@ -138,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 3a2fd0d..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;
- wPos_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,
- wPos_t x,
- wPos_t y,
- const char * labelStr,
- wPos_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;
}
/**
@@ -124,25 +123,25 @@ wStatus_p wStatusCreate(
* \return expected width of message box
*/
-wPos_t
+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);
}
/**
@@ -152,50 +151,50 @@ wStatusGetWidth(const char *testString)
* \return text height
*/
-wPos_t wStatusGetHeight(
- long flags)
+wWinPix_t wStatusGetHeight(
+ 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 @@ wPos_t wStatusGetHeight(
*/
void wStatusSetWidth(
- wStatus_p b,
- wPos_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 0812ace..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
- wPos_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;
}
/**
@@ -462,11 +463,11 @@ wBool_t wTextGetModified(wText_p bt)
* \return
*/
-void wTextSetSize(wText_p bt, wPos_t w, wPos_t h)
+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, wPos_t w, wPos_t h)
* \return
*/
-void wTextComputeSize(wText_p bt, int rows, int cols, wPos_t *width,
- wPos_t *height)
+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, int rows, int cols, wPos_t *width,
void wTextSetPosition(wText_p bt, int pos)
{
- /* TODO */
+ /* 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;
}
/**
@@ -536,69 +538,69 @@ static void textChanged(GtkWidget *widget, wText_p bt)
wText_p
wTextCreate(wWin_p parent,
- wPos_t x,
- wPos_t y,
+ wWinPix_t x,
+ wWinPix_t y,
const char *helpStr,
const char *labelStr,
long option,
- wPos_t width,
- wPos_t height)
+ 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 20a1ba9..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>
@@ -47,18 +47,18 @@ static GtkWidget * balloonPI;
static char balloonMsg[100] = "";
static wControl_p balloonB;
-static wPos_t balloonDx, balloonDy;
+static wWinPix_t balloonDx, balloonDy;
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,84 +128,93 @@ void wControlSetBalloonText(
* \return
*/
-void wControlSetBalloon( wControl_p b, wPos_t dx, wPos_t dy, const char * msg )
+void wControlSetBalloon( wControl_p b, wWinPix_t dx, wWinPix_t dy,
+ const char * msg )
{
- PangoLayout * layout;
-
- wPos_t x, y;
- wPos_t w, h;
- wPos_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;
-
- 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);
-
+
+ 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;
- 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;
+
+ 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
+#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;
}
/**
@@ -223,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 2b743cb..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,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- wPos_t width,
- int colCnt,
- wPos_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 wPos_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 = (wPos_t*)malloc(colCnt * sizeof *(wPos_t*)0);
- memcpy(bl->colWidths, colWidths, colCnt * sizeof *(wPos_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 a265938..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>
@@ -37,41 +37,43 @@
#include "gtkint.h"
#include "i18n.h"
-wWin_p gtkMainW;
+extern wWin_p gtkMainW;
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, " %d %d 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,
- wPos_t origX,
- wPos_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,
- wPos_t x,
- wPos_t y)
+ wWin_p win,
+ wWinPix_t x,
+ wWinPix_t y)
{
- wControl_p b;
- wPos_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());
}
/**
@@ -386,6 +387,8 @@ void wWinTop(wWin_p win)
{
}
+extern long dontHideCursor;
+
/**
* Set the cursor in GTK
*
@@ -397,69 +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);
+// 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);
- 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);
}
@@ -471,7 +476,7 @@ void wSetCursor(wDraw_p bd, wCursor_t cursor)
const char * wMemStats(void)
{
- return "No stats available";
+ return "No stats available";
}
/**
@@ -481,14 +486,14 @@ const char * wMemStats(void)
* \param h IN pointer to height
*/
-void wGetDisplaySize(wPos_t * w, wPos_t * h)
+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;
}
@@ -505,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;
}
/**
@@ -552,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;
}
/*-----------------------------------------------------------------*/
@@ -591,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 */
};
/**
@@ -629,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;
}
/**
@@ -657,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;
}
/**
@@ -691,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;
}
/**
@@ -717,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;
}
/**
@@ -736,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 1468c89..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));
-
- wPos_t maxDisplayWidth = monitor_dimensions.width-10;
- wPos_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, "%d %d", 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 */
- wPos_t * width, /* Returned window width */
- wPos_t * height) /* Returned window height */
+ wWin_p win, /* Window */
+ wWinPix_t * width, /* Returned window width */
+ wWinPix_t * height) /* Returned window height */
{
- GtkRequisition requisition;
- wPos_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 */
- wPos_t width, /* Window width */
- wPos_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,
- wPos_t x,
- wPos_t y,
- wPos_t width,
- wPos_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, int min_width, int max_width, int min_height, int max_height, int base_width, int 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, int min_width, int max_width, int min_height, int
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, int min_width, int max_width, int min_height, int
*/
static wWin_p wWinCommonCreate(
- wWin_p parent,
- int winType,
- wPos_t x,
- wPos_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);
- }
- }
- int 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 */
- wPos_t x, /* Initial window width */
- wPos_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,
- wPos_t x,
- wPos_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 124305a..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/lib/xtrkcad
- * 4. /usr/local/lib/xtrkcad
- *
+ * 3. /usr/share/xtrkcad
+ * 4. /usr/local/share/xtrkcad
+ *
* \return pointer to directory name
*/
@@ -79,46 +82,66 @@ 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;
}
}
- strcpy(appLibDir, XTRKCAD_INSTALL_PREFIX);
- strcat(appLibDir, "/share/");
+ strcpy(appLibDir, "../share/");
strcat(appLibDir, wlibGetAppName());
-
if ((stat( appLibDir, &buf) == 0 ) && S_ISDIR( buf.st_mode)) {
+ //printf( "wAppLbDir=%s\n", appLibDir );
return appLibDir;
}
- strcpy( appLibDir, "/usr/lib/" );
+ 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;
}
- strcpy( appLibDir, "/usr/local/lib/" );
+ strcpy( appLibDir, dir2 );
strcat( appLibDir, wlibGetAppName() );
if ((stat( appLibDir, &buf) == 0 ) && S_ISDIR( buf.st_mode)) {
+ //printf( "wAppLbDir=%s\n", appLibDir );
return appLibDir;
}
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"
- " %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."),
- XTRKCAD_INSTALL_PREFIX, 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);
@@ -135,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 {
@@ -157,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 );
}
}
}
@@ -185,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;
}
@@ -209,63 +239,116 @@ 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( void )
+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();
- 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';
- DYNARR_APPEND( prefs_t, prefs_da, 10 );
- p = &prefs(prefs_da.cnt-1);
- p->name = strdup(np);
- p->section = strdup(sp);
- p->dirty = FALSE;
- p->val = strdup(vp);
+ if (update) {
+ 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);
+ p->dirty = TRUE;
+ break;
+ }
+ }
+ } else {
+ DYNARR_APPEND( prefs_t, prefs_da, 10 );
+ p = &prefs(prefs_da.cnt-1);
+ p->name = strdup(np);
+ p->section = strdup(sp);
+ p->dirty = FALSE;
+ p->val = strdup(vp);
+ }
}
fclose( prefFile );
}
@@ -279,19 +362,21 @@ static void readPrefs( void )
*/
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)
- readPrefs();
-
+ 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;
@@ -313,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)
- readPrefs();
-
+ 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;
@@ -337,14 +423,14 @@ 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];
- sprintf(tmp, "%ld", lval );
+ snprintf(tmp, sizeof(tmp), "%ld", lval );
wPrefSetString( section, name, tmp );
}
@@ -359,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) {
@@ -381,21 +467,21 @@ 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];
- sprintf(tmp, "%0.6f", lval );
+ snprintf(tmp, sizeof(tmp), "%0.6f", lval );
wPrefSetString( section, name, tmp );
}
@@ -411,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) {
@@ -432,55 +518,117 @@ wBool_t wPrefGetFloatBasic(
return TRUE;
}
+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(
- void )
+ char * name )
{
prefs_t * p;
- char tmp[BUFSIZ];
- const char *workDir;
+ char tmp[BUFSIZ+32];
FILE * prefFile;
- if (!prefInitted)
+ if (!prefInitted) {
return;
-
- workDir = wGetAppWorkDir();
- sprintf( 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
new file mode 100644
index 0000000..0f5041a
--- /dev/null
+++ b/app/wlib/gtklib/writebitmap.c
@@ -0,0 +1,102 @@
+/** \file writebitmap.c
+ * Bitmap file creation
+ */
+
+/* XTrackCad - Model Railroad CAD
+ * Copyright (C) 2015 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
+ */
+
+#define GTK_DISABLE_SINGLE_INCLUDES
+#define GDK_DISABLE_DEPRECATED
+#define GTK_DISABLE_DEPRECATED
+#define GSEAL_ENABLE
+
+#include <string.h>
+#include <gtk/gtk.h>
+#include "gtkint.h"
+
+#define PNGFORMAT "png"
+#define JPEGFORMAT "jpeg"
+
+/**
+ * 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);
+
+ while (end > fname && *end != '.') {
+ --end;
+ }
+ return( end + 1 );
+}
+
+/**
+* Export as bitmap file.
+*
+* \param d IN the drawing area ?
+* \param fileName IN fully qualified filename for the bitmap file.
+* \return TRUE on success, FALSE on error
+*/
+
+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;
+}
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 d3bfc18..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,17 +24,25 @@ 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);
/*
* Interface types
*/
+// a big integer
typedef long wInteger_t;
-typedef int wPos_t;
+// Position/Size of objects drawn on a WDraw canvas (fractional pixels)
+typedef double wDrawPix_t;
+// Position/Size of controls/windows (integral pixels)
+typedef long wWinPix_t;
+// Boolean
typedef int wBool_t;
+// index for lists etc
typedef int wIndex_t;
/*
@@ -68,7 +77,7 @@ typedef int wDrawColor;
typedef struct {
const char * name;
const char * value;
- } wBalloonHelp_t;
+} wBalloonHelp_t;
extern long debugWindow;
extern long wDebugFont;
@@ -78,8 +87,10 @@ extern long wDebugFont;
* Bitmap Controls bitmap.c
*/
-wControl_p wBitmapCreate(wWin_p parent, wPos_t x, wPos_t y, long options, wIcon_p iconP);
-wIcon_p wIconCreateBitMap(wPos_t w, wPos_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);
@@ -97,12 +108,15 @@ typedef enum {
wBoxThickB,
wBoxThickW,
wBoxRidge,
- wBoxTrough }
- wBoxType_e;
+ wBoxTrough
+}
+wBoxType_e;
-void wBoxSetSize(wBox_p b, wPos_t w, wPos_t h);
-void wlibDrawBox(wWin_p win, wBoxType_e style, wPos_t x, wPos_t y, wPos_t w, wPos_t h);
-wBox_p wBoxCreate(wWin_p parent, wPos_t bx, wPos_t by, const char *labelStr, wBoxType_e boxTyp, wPos_t bw, wPos_t bh);
+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);
/*------------------------------------------------------------------------------
*
@@ -129,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, wPos_t x, wPos_t y, const char *helpStr, const char *labelStr, long option, wPos_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, wPos_t x, wPos_t y, const char *helpStr, const char *labelStr, long option, const char **labels, long *valueP, wChoiceCallBack_p action, void *data);
-wChoice_p wToggleCreate(wWin_p parent, wPos_t x, wPos_t y, const char *helpStr, const char *labelStr, long option, const char **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);
/*------------------------------------------------------------------------------
@@ -160,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);
@@ -179,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
@@ -202,12 +224,13 @@ const char * wMemStats( void );
#define WKEY_ALT (1<<3)
int wGetKeyState( void );
-void wGetDisplaySize( wPos_t*, wPos_t* );
+void wGetDisplaySize( wWinPix_t*, wWinPix_t* );
-wIcon_p wIconCreateBitMap( wPos_t, wPos_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, wPos_t x, wPos_t y );
+void wIconDraw( wDraw_p d, wIcon_p bm, wWinPix_t x, wWinPix_t y );
void wConvertToCharSet( char *, int );
void wConvertFromCharSet( char *, int );
@@ -226,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 */
@@ -246,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 *, wPos_t, wPos_t, const char *, const char *, const char *,
- long, wWinCallBack_p, void * );
-wWin_p wWinPopupCreate( wWin_p, wPos_t, wPos_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 );
@@ -257,17 +283,19 @@ void wWinSetSmallIcon( wWin_p, wIcon_p );
void wWinShow( wWin_p, wBool_t );
wBool_t wWinIsVisible( wWin_p );
wBool_t wWinIsMaximized( wWin_p win);
-void wWinGetSize ( wWin_p, wPos_t *, wPos_t * );
-void wWinSetSize( wWin_p, wPos_t, wPos_t );
+void wWinGetSize ( wWin_p, wWinPix_t *, wWinPix_t * );
+void wWinSetSize( wWin_p, wWinPix_t, wWinPix_t );
void wWinSetTitle( wWin_p, const char * );
void wWinSetBusy( wWin_p, wBool_t );
const char * wWinGetTitle( wWin_p );
-void wWinClear( wWin_p, wPos_t, wPos_t, wPos_t, wPos_t );
+void wWinClear( wWin_p, wWinPix_t, wWinPix_t, wWinPix_t, wWinPix_t );
void wMessage( wWin_p, const char *, wBool_t );
void wWinTop( wWin_p );
void wWinDoCancel( wWin_p );
void wWinBlockEnable( wBool_t );
-void wSetGeometry(wWin_p, int min_width, int max_width, int min_height, int max_height, int base_width, int 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 );
@@ -284,20 +312,23 @@ void wDestroySplash( void );
#define BO_READONLY (1L<<2)
#define BO_NOTAB (1L<<8)
#define BO_BORDER (1L<<9)
-#define BO_ENTER (1L<<10)
+//#define BO_ENTER (1L<<10)
+#define BO_ENTER 0
+#define BO_REPEAT (1L<<11)
+#define BO_IGNFOCUS (1L<<12)
-wPos_t wLabelWidth( const char * );
+wWinPix_t wLabelWidth( const char * );
const char * wControlGetHelp( wControl_p );
void wControlSetHelp( wControl_p, const char * );
void wControlShow( wControl_p, wBool_t );
-wPos_t wControlGetWidth( wControl_p );
-wPos_t wControlGetHeight( wControl_p );
-wPos_t wControlGetPosX( wControl_p );
-wPos_t wControlGetPosY( wControl_p );
-void wControlSetPos( wControl_p, wPos_t, wPos_t );
+wWinPix_t wControlGetWidth( wControl_p );
+wWinPix_t wControlGetHeight( wControl_p );
+wWinPix_t wControlGetPosX( wControl_p );
+wWinPix_t wControlGetPosY( wControl_p );
+void wControlSetPos( wControl_p, wWinPix_t, wWinPix_t );
void wControlSetFocus( wControl_p );
void wControlActive( wControl_p, wBool_t );
-void wControlSetBalloon( wControl_p, wPos_t, wPos_t, const char * );
+void wControlSetBalloon( wControl_p, wWinPix_t, wWinPix_t, const char * );
void wControlSetLabel( wControl_p, const char * );
void wControlSetBalloonText( wControl_p, const char * );
void wControlSetContext( wControl_p, void * );
@@ -314,11 +345,12 @@ 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, wPos_t, wPos_t, const char *, const char *, long,
- wPos_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, wPos_t );
+void wStringSetWidth( wString_p, wWinPix_t );
const char * wStringGetValue( wString_p );
@@ -328,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, wPos_t, wPos_t, const char *, const char *, long,
- wPos_t, wInteger_t, wInteger_t, wInteger_t *,
- wIntegerCallBack_p, void * );
-wFloat_p wFloatCreate( wWin_p, wPos_t, wPos_t, const char *, const char *, long,
- wPos_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 );
@@ -348,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)
@@ -364,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, wPos_t, wPos_t, const char *, const char *, long,
- long, wPos_t, int, wPos_t *, wBool_t *, const char **, long *, wListCallBack_p, void * );
-wList_p wDropListCreate( wWin_p, wPos_t, wPos_t, const char *, const char *, long,
- long, wPos_t, long *, wListCallBack_p, void * );
-
-wList_p wComboListCreate(wWin_p parent, wPos_t x, wPos_t y, const char *helpStr, const char *labelStr, long option, long number, wPos_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);
@@ -379,11 +419,13 @@ 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, wPos_t *colWidths);
-wIndex_t wListAddValue(wList_p b, const char *labelStr, wIcon_p bm, void *itemData);
-void wListSetSize(wList_p bl, wPos_t w, wPos_t h);
+int wListGetColumnWidths(wList_p bl, int colCnt, wWinPix_t *colWidths);
+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 * * );
/** \todo Check for the existance of following functions */
@@ -404,13 +446,13 @@ void wListSetEditable( wList_p, wBool_t );
#define wMessageSetFont( x ) ( x & (BM_LARGE | BM_SMALL ))
#define wMessageCreate( w, p1, p2, l, p3, m ) wMessageCreateEx( w, p1, p2, l, p3, m, 0 )
-wMessage_p wMessageCreateEx( wWin_p, wPos_t, wPos_t, const char *,
- wPos_t, const char *, long );
+wMessage_p wMessageCreateEx( wWin_p, wWinPix_t, wWinPix_t, const char *,
+ wWinPix_t, const char *, long );
void wMessageSetValue( wMessage_p, const char * );
-void wMessageSetWidth( wMessage_p, wPos_t );
-wPos_t wMessageGetWidth( const char *testString );
-wPos_t wMessageGetHeight( long );
+void wMessageSetWidth( wMessage_p, wWinPix_t );
+wWinPix_t wMessageGetWidth( const char *testString );
+wWinPix_t wMessageGetHeight( long );
/*------------------------------------------------------------------------------
@@ -422,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 *);
@@ -439,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, wPos_t, wPos_t, const char *, const char *, long,
- wPos_t, wPos_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 );
@@ -450,8 +493,9 @@ wBool_t wTextGetModified( wText_p );
void wTextReadFile( wText_p, const char * );
wBool_t wTextSave( wText_p, const char * );
wBool_t wTextPrint( wText_p );
-void wTextSetSize( wText_p, wPos_t, wPos_t );
-void wTextComputeSize( wText_p, int, int, wPos_t *, wPos_t * );
+void wTextSetSize( wText_p, wWinPix_t, wWinPix_t );
+void wTextComputeSize( wText_p, wWinPix_t, wWinPix_t, wWinPix_t *,
+ wWinPix_t * );
void wTextSetPosition( wText_p bt, int pos );
@@ -483,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)
@@ -510,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)\
@@ -518,8 +567,9 @@ typedef int wAction_t;
/* Creation CallBacks */
-typedef void (*wDrawRedrawCallBack_p)( wDraw_p, void *, wPos_t, wPos_t );
-typedef void (*wDrawActionCallBack_p)( wDraw_p, void*, wAction_t, wPos_t, wPos_t );
+typedef void (*wDrawRedrawCallBack_p)( wDraw_p, void *, wWinPix_t, wWinPix_t );
+typedef void (*wDrawActionCallBack_p)( wDraw_p, void*, wAction_t, wDrawPix_t,
+ wDrawPix_t );
/* Creation Options */
#define BD_TICKS (1L<<25)
@@ -529,38 +579,44 @@ typedef void (*wDrawActionCallBack_p)( wDraw_p, void*, wAction_t, wPos_t, wPos_t
#define BD_MODKEYS (1L<<29)
/* Create: */
-wDraw_p wDrawCreate( wWin_p, wPos_t, wPos_t, const char *, long,
- wPos_t, wPos_t, void *,
- wDrawRedrawCallBack_p, wDrawActionCallBack_p );
+wDraw_p wDrawCreate( wWin_p, wWinPix_t, wWinPix_t, const char *, long,
+ wWinPix_t, wWinPix_t, void *,
+ wDrawRedrawCallBack_p, wDrawActionCallBack_p );
/* Draw: */
-void wDrawLine( wDraw_p, wPos_t, wPos_t, wPos_t, wPos_t,
- wDrawWidth, wDrawLineType_e, wDrawColor,
- wDrawOpts );
+void wDrawLine( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t, wDrawPix_t,
+ wDrawWidth, wDrawLineType_e, wDrawColor,
+ wDrawOpts );
#define double2wAngle_t( A ) (A)
typedef double wAngle_t;
-void wDrawArc( wDraw_p, wPos_t, wPos_t, wPos_t, wAngle_t, wAngle_t,
- int, wDrawWidth, wDrawLineType_e, wDrawColor,
- wDrawOpts );
-void wDrawPoint( wDraw_p, wPos_t, wPos_t, 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, wPos_t, wPos_t, wAngle_t, const char *, wFont_p,
- wFontSize_t, wDrawColor, wDrawOpts );
-void wDrawFilledRectangle( wDraw_p, wPos_t, wPos_t, wPos_t, wPos_t,
- wDrawColor, wDrawOpts );
-void wDrawPolygon( wDraw_p, wPos_t [][2], wPolyLine_e [], wIndex_t, wDrawColor, wDrawWidth, wDrawLineType_e,
- wDrawOpts, int, int );
-void wDrawFilledCircle( wDraw_p, wPos_t, wPos_t, wPos_t, wDrawColor, wDrawOpts );
-
-void wDrawGetTextSize( wPos_t *, wPos_t *, wPos_t *, wPos_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 );
void wDrawDelayUpdate( wDraw_p, wBool_t );
-void wDrawClip( wDraw_p, wPos_t, wPos_t, wPos_t, wPos_t );
+void wDrawClip( wDraw_p, wDrawPix_t, wDrawPix_t, wDrawPix_t, wDrawPix_t );
wDrawColor wDrawColorGray( int );
wDrawColor wDrawFindColor( long );
long wDrawGetRGB( wDrawColor );
@@ -568,15 +624,16 @@ long wDrawGetRGB( wDrawColor );
/* Geometry */
double wDrawGetDPI( wDraw_p );
double wDrawGetMaxRadius( wDraw_p );
-void wDrawSetSize( wDraw_p, wPos_t, wPos_t, void * );
-void wDrawGetSize( wDraw_p, wPos_t *, wPos_t * );
+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 * );
-void wDrawBitMap( wDraw_p, wDrawBitMap_p, wPos_t, wPos_t,
- wDrawColor, wDrawOpts );
+wDrawBitMap_p wDrawBitMapCreate( wDraw_p, int, int, int, int,
+ const unsigned char * );
+void wDrawBitMap( wDraw_p, wDrawBitMap_p, wDrawPix_t, wDrawPix_t,
+ wDrawColor, wDrawOpts );
-wDraw_p wBitMapCreate( wPos_t, wPos_t, int );
+wDraw_p wBitMapCreate( wWinPix_t, wWinPix_t, int );
wBool_t wBitMapDelete( wDraw_p );
wBool_t wBitMapWriteFile( wDraw_p, const char * );
@@ -585,7 +642,9 @@ void * wDrawGetContext( wDraw_p );
void wDrawSaveImage( wDraw_p );
void wDrawRestoreImage( wDraw_p );
int wDrawSetBackground( wDraw_p, char * path, char ** error);
-void wDrawShowBackground( wDraw_p, wPos_t pos_x, wPos_t pos_y, wPos_t width, wAngle_t angle, int screen);
+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);
/*------------------------------------------------------------------------------
*
@@ -594,7 +653,7 @@ void wDrawShowBackground( wDraw_p, wPos_t pos_x, wPos_t pos_y, wPos_t width, w
void wInitializeFonts();
void wSelectFont( const char * );
wFontSize_t wSelectedFontSize( void );
-void wSetSelectionFontSize(wFontSize_t);
+void wSetSelectedFontSize(wFontSize_t size);
#define F_TIMES (1)
#define F_HELV (2)
wFont_p wStandardFont( int, wBool_t, wBool_t );
@@ -616,7 +675,7 @@ wDraw_p wPrintPageStart( void );
wBool_t wPrintPageEnd( wDraw_p );
void wPrintDocEnd( void );
wBool_t wPrintQuit( void );
-void wPrintClip( wPos_t, wPos_t, wPos_t, wPos_t );
+void wPrintClip( wDrawPix_t, wDrawPix_t, wDrawPix_t, wDrawPix_t );
const char * wPrintGetName( void );
@@ -656,37 +715,40 @@ 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 * );
/* Creation CallBacks */
typedef void (*wMenuCallBack_p)( void * );
typedef void (*wMenuListCallBack_p)( int, const char *, void * );
-typedef void (*wMenuToggleCallBack_p)( wBool_t , void * );
+typedef void (*wMenuCallBack_p)( void * );
typedef void (*wAccelKeyCallBack_p)( wAccelKey_e, void * );
typedef void (*wMenuTraceCallBack_p)( wMenu_p, const char *, void * );
/* Creation Options */
#define BM_ICON (1L<<0)
-wMenu_p wMenuCreate( wWin_p, wPos_t, wPos_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 * );
@@ -699,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, wMenuToggleCallBack_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 );
@@ -725,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 * );
@@ -741,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, wPos_t, wPos_t, const char *, const char *,
- long, wPos_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 );
@@ -756,21 +822,33 @@ char * wPrefGetString(const char *section, const char *name);
char * wPrefGetStringBasic( const char *section, const char *name );
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 );
-void wPrefFlush( void );
-void wPrefReset( void );
-
-void CleanupCustom( void );
+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 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 );
/*------------------------------------------------------------------------------
*
@@ -778,18 +856,30 @@ void CleanupCustom( void );
*/
wStatus_p wStatusCreate(
- wWin_p parent,
- wPos_t x,
- wPos_t y,
- const char * labelStr,
- wPos_t width,
- const char *message );
+ wWin_p parent,
+ wWinPix_t x,
+ wWinPix_t y,
+ const char * labelStr,
+ wWinPix_t width,
+ const char *message );
-wPos_t wStatusGetWidth(const char *testString);
-wPos_t wStatusGetHeight(long flags);
+wWinPix_t wStatusGetWidth(const char *testString);
+wWinPix_t wStatusGetHeight(long flags);
void wStatusSetValue(wStatus_p b, const char * arg);
-void wStatusSetWidth(wStatus_p b, wPos_t width);
+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
@@ -797,4 +887,7 @@ void wStatusSetWidth(wStatus_p b, wPos_t width);
#define PREFSECTION "Preference"
#define LARGEICON "LargeIcons"
+#define DPISET "ScreenDPI"
+#define PRINTSCALE "PrintScale"
+#define PRINTTEXTSCALE "PrintTextScale"
#endif
diff --git a/app/wlib/mswlib/CMakeLists.txt b/app/wlib/mswlib/CMakeLists.txt
index 07558f9..1d8464a 100644
--- a/app/wlib/mswlib/CMakeLists.txt
+++ b/app/wlib/mswlib/CMakeLists.txt
@@ -1,50 +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})
-
-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 d35f19a..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>
@@ -29,192 +29,215 @@
static char *lastErrorMessage; /**< store last message from FreeImage */
#define ERRORPUNCTUATION " : "
-/**
- * FreeImage error handler
- * \param fif Format / Plugin responsible for the error
- * \param message Error message
+/**
+ * FreeImage error handler
+ * \param fif Format / Plugin responsible for the error
+ * \param message Error message
*/
-static void
-HandleFreeImageError(FREE_IMAGE_FORMAT fif, const char *message)
-{
- unsigned totalLength = strlen(message) + 1;
-
- if (fif != FIF_UNKNOWN) {
- totalLength += strlen(FreeImage_GetFormatFromFIF(fif)) + strlen(ERRORPUNCTUATION);
- }
-
- lastErrorMessage = malloc(totalLength);
-
- if (fif != FIF_UNKNOWN) {
- sprintf(lastErrorMessage,
- "%s" ERRORPUNCTUATION "%s",
- FreeImage_GetFormatFromFIF(fif),
- message);
- } else {
- strcpy(lastErrorMessage, message);
- }
+static void
+HandleFreeImageError( FREE_IMAGE_FORMAT fif, const char *message )
+{
+ size_t totalLength = strlen( message ) + 1;
+
+ if( fif != FIF_UNKNOWN ) {
+ totalLength += strlen( FreeImage_GetFormatFromFIF( fif ) ) + strlen(
+ ERRORPUNCTUATION );
+ }
+
+ lastErrorMessage = malloc( totalLength );
+
+ if( fif != FIF_UNKNOWN ) {
+ sprintf( lastErrorMessage,
+ "%s" ERRORPUNCTUATION "%s",
+ FreeImage_GetFormatFromFIF( fif ),
+ message );
+ } else {
+ strcpy( lastErrorMessage, message );
+ }
}
-/**
-* Load the background image
-* \param bd drawing context
-* \param path filename for image file, if NULL the existing background will be removed
-* \param error returned error message
-* \return -1 unsupported or invalid file, 0 success, 1 background removed
+/**
+* Load the background image
+* \param bd drawing context
+* \param path filename for image file, if NULL the existing background will be removed
+* \param error returned error message
+* \return -1 unsupported or invalid file, 0 success, 1 background removed
*/
int
-wDrawSetBackground(wDraw_p bd, char * path, char ** error)
+wDrawSetBackground( wDraw_p bd, char * path, char ** error )
{
- FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;
+ FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;
+
+ FreeImage_SetOutputMessage( HandleFreeImageError );
- FreeImage_SetOutputMessage(HandleFreeImageError);
-
- if (lastErrorMessage) {
- free(lastErrorMessage);
- lastErrorMessage = NULL;
+ if( lastErrorMessage ) {
+ free( lastErrorMessage );
+ lastErrorMessage = NULL;
}
- if (path) {
- // check the file signature and deduce its format
- // (the second argument is currently not used by FreeImage)
- fif = FreeImage_GetFileType(path, 0);
-
- if (fif == FIF_UNKNOWN) {
- // no signature ?
- // try to guess the file format from the file extension
- fif = FreeImage_GetFIFFromFilename(path);
- }
-
- // check that the plugin has reading capabilities ...
- if ((fif != FIF_UNKNOWN) && FreeImage_FIFSupportsReading(fif)) {
- // ok, let's load the file
- bd->background = FreeImage_Load(fif, path, 0);
-
- // unless a bad file format, we are done !
- if (!bd->background) {
- *error = lastErrorMessage;
- return (-1);
- } else {
- return (0);
- }
- } else {
- *error = strdup(_("Image file is invalid or cannot be read."));
- return (-1);
- }
- } else {
- if (bd->background) {
- FreeImage_Unload(bd->background);
- bd->background = 0;
- }
-
- return (1);
- }
+ if( path ) {
+ // check the file signature and deduce its format
+ // (the second argument is currently not used by FreeImage)
+ fif = FreeImage_GetFileType( path, 0 );
+
+ if( fif == FIF_UNKNOWN ) {
+ // no signature ?
+ // try to guess the file format from the file extension
+ fif = FreeImage_GetFIFFromFilename( path );
+ }
+
+ // check that the plugin has reading capabilities ...
+ if( ( fif != FIF_UNKNOWN ) && FreeImage_FIFSupportsReading( fif ) ) {
+ // ok, let's load the file
+ bd->background = FreeImage_Load( fif, path, 0 );
+
+ // unless a bad file format, we are done !
+ if( !bd->background ) {
+ *error = lastErrorMessage;
+ return ( -1 );
+ } else {
+ return ( 0 );
+ }
+ } else {
+ *error = _strdup( _( "Image file is invalid or cannot be read." ) );
+ return ( -1 );
+ }
+ } else {
+ if( bd->background ) {
+ FreeImage_Unload( bd->background );
+ bd->background = 0;
+ }
+
+ return ( 1 );
+ }
}
+/**
+ * Use a loaded background in another context.
+ *
+ * \param from context with background
+ * \param to context to get a reference to the existing background
+ */
-/**
-* 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 screen visibility of bitmap in percent
+void
+wDrawCloneBackground( wDraw_p from, wDraw_p to )
+{
+ 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.
+*
+* \param bd drawing context
+* \param pos_x, pos_y bitmap position
+* \param size desired width after scaling
+* \param angle
+* \param screen visibility of bitmap in percent
*/
void
-wDrawShowBackground(wDraw_p bd, wPos_t pos_x, wPos_t pos_y, wPos_t size,
- wAngle_t angle, int screen)
+wDrawShowBackground( wDraw_p bd, wWinPix_t pos_x, wWinPix_t pos_y,
+ wWinPix_t size,
+ wAngle_t angle, int screen )
{
- if (bd->background) {
- double scale;
- FIBITMAP *tmp;
- FIBITMAP *rotated;
-
- if (size == 0) {
- scale = 1.0;
- } else {
- scale = (double)size / FreeImage_GetWidth(bd->background);
- }
-
- tmp = FreeImage_RescaleRect(bd->background,
- (int)((double)FreeImage_GetWidth(bd->background) * scale),
- (int)((double)FreeImage_GetHeight(bd->background) * scale),
- 0,
- 0,
- FreeImage_GetWidth(bd->background),
- FreeImage_GetHeight(bd->background),
- FILTER_BILINEAR,
- 0);
- FreeImage_AdjustColors(tmp, screen, -screen, 1.0, FALSE);
- FREE_IMAGE_TYPE image_type = FreeImage_GetImageType(tmp);
-
- switch (image_type) {
- case FIT_BITMAP:
- switch (FreeImage_GetBPP(tmp)) {
- case 8: {
- BYTE color = 255;
- rotated = FreeImage_Rotate(tmp, angle, &color);
- }
- break;
-
- case 24: // we could also use 'RGBTRIPLE color' here
- case 32: {
- RGBQUAD color = { 255, 255, 255, 0 };
- // for 24-bit images, the first 3 bytes will be read
- // for 32-bit images, the first 4 bytes will be read
- rotated = FreeImage_Rotate(tmp, angle, &color);
- }
- break;
- }
-
- break;
-
- case FIT_UINT16: {
- WORD color = 255;
- rotated = FreeImage_Rotate(tmp, angle, &color);
- }
- break;
-
- case FIT_RGB16: // we could also use 'FIRGB16 color' here
- case FIT_RGBA16: {
- FIRGBA16 color = { 255, 255, 255, 0 };
- // for RGB16 images, the first 3 WORD will be read
- // for RGBA16 images, the first 4 WORD will be read
- rotated = FreeImage_Rotate(tmp, angle, &color);
- }
- break;
-
- case FIT_FLOAT: {
- float color = 1.0F;
- rotated = FreeImage_Rotate(tmp, angle, &color);
- }
- break;
-
- case FIT_RGBF: // we could also use 'FIRGBF color' here
- case FIT_RGBAF: {
- FIRGBAF color = { 1, 1, 1, 0 };
- // for RGBF images, the first 3 float will be read
- // for RGBAF images, the first 4 float will be read
- rotated = FreeImage_Rotate(tmp, angle, &color);
- }
- break;
- }
-
- SetDIBitsToDevice(bd->hDc,
- pos_x,
- bd->h - pos_y - FreeImage_GetHeight(rotated),
- FreeImage_GetWidth(rotated),
- FreeImage_GetHeight(rotated),
- 0, 0,
- 0,
- FreeImage_GetHeight(rotated),
- FreeImage_GetBits(rotated),
- FreeImage_GetInfo(rotated),
- DIB_RGB_COLORS);
- FreeImage_Unload(tmp);
- FreeImage_Unload(rotated);
- }
-} \ No newline at end of file
+ if( bd->background ) {
+ double scale;
+ FIBITMAP *tmp;
+ FIBITMAP *rotated;
+
+ if( size == 0 ) {
+ scale = 1.0;
+ } else {
+ scale = ( double )size / FreeImage_GetWidth( bd->background );
+ }
+
+ tmp = FreeImage_RescaleRect( bd->background,
+ ( int )( ( double )FreeImage_GetWidth( bd->background ) * scale ),
+ ( int )( ( double )FreeImage_GetHeight( bd->background ) * scale ),
+ 0,
+ 0,
+ FreeImage_GetWidth( bd->background ),
+ FreeImage_GetHeight( bd->background ),
+ FILTER_BILINEAR,
+ 0 );
+
+ if( tmp == NULL ) {
+ return;
+ }
+
+ FreeImage_AdjustColors( tmp, screen, -screen, 1.0, FALSE );
+ FREE_IMAGE_TYPE image_type = FreeImage_GetImageType( tmp );
+
+ switch( image_type ) {
+ case FIT_BITMAP:
+ switch( FreeImage_GetBPP( tmp ) ) {
+ case 8: {
+ BYTE color = 255;
+ rotated = FreeImage_Rotate( tmp, angle, &color );
+ }
+ break;
+
+ case 24: // we could also use 'RGBTRIPLE color' here
+ case 32: {
+ RGBQUAD color = { 255, 255, 255, 0 };
+ // for 24-bit images, the first 3 bytes will be read
+ // for 32-bit images, the first 4 bytes will be read
+ rotated = FreeImage_Rotate( tmp, angle, &color );
+ }
+ break;
+ }
+
+ break;
+
+ case FIT_UINT16: {
+ WORD color = 255;
+ rotated = FreeImage_Rotate( tmp, angle, &color );
+ }
+ break;
+
+ case FIT_RGB16: // we could also use 'FIRGB16 color' here
+ case FIT_RGBA16: {
+ FIRGBA16 color = { 255, 255, 255, 0 };
+ // for RGB16 images, the first 3 WORD will be read
+ // for RGBA16 images, the first 4 WORD will be read
+ rotated = FreeImage_Rotate( tmp, angle, &color );
+ }
+ break;
+
+ case FIT_FLOAT: {
+ float color = 1.0F;
+ rotated = FreeImage_Rotate( tmp, angle, &color );
+ }
+ break;
+
+ case FIT_RGBF: // we could also use 'FIRGBF color' here
+ case FIT_RGBAF: {
+ FIRGBAF color = { 1, 1, 1, 0 };
+ // for RGBF images, the first 3 float will be read
+ // for RGBAF images, the first 4 float will be read
+ rotated = FreeImage_Rotate( tmp, angle, &color );
+ }
+ break;
+ }
+
+ SetDIBitsToDevice( bd->hDc,
+ pos_x,
+ bd->h - pos_y - FreeImage_GetHeight( rotated ),
+ FreeImage_GetWidth( rotated ),
+ FreeImage_GetHeight( rotated ),
+ 0, 0,
+ 0,
+ FreeImage_GetHeight( rotated ),
+ FreeImage_GetBits( rotated ),
+ FreeImage_GetInfo( rotated ),
+ DIB_RGB_COLORS );
+ FreeImage_Unload( tmp );
+ FreeImage_Unload( rotated );
+ }
+}
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 5bd7a8e..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) { \
@@ -31,10 +31,6 @@ typedef struct {
#ifdef WINDOWS
-#ifndef WIN32
-#define FAR _far
-#endif
-#define M_PI 3.14159
#define strcasecmp _stricmp
#else
#endif
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 6b0c7f3..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
*
@@ -40,7 +39,7 @@
#include <errno.h>
#include <ctype.h>
#if defined(_MSC_VER) || defined(__DMC__)
-# include <io.h>
+#include <io.h>
#endif /* _MSC_VER || __DMC__ */
#ifndef SUBLANG_SERBIAN_LATIN_BA
@@ -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 95b8a69..9069c35 100644
--- a/app/wlib/mswlib/mswbitmap.c
+++ b/app/wlib/mswlib/mswbitmap.c
@@ -18,40 +18,38 @@
*
* 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>
#include <stdio.h>
#include <assert.h>
-#include "misc.h"
#include "mswint.h"
#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,
- wPos_t w,
- wPos_t h,
- const char * bits )
+ COLORREF fgCol1,
+ COLORREF fgCol2,
+ COLORREF bgCol,
+ int w,
+ int h,
+ const char * bits )
{
HDC hDc;
HDC hButtDc;
@@ -70,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 );
@@ -85,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 );
@@ -100,12 +99,12 @@ HBITMAP mswCreateBitMap(
return hBitMap;
}
-dynArr_t bitmap_da;
+static dynArr_t bitmap_da;
#define controlMap(N) DYNARR_N(controlMap_t,controlMap_da,N)
#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;
@@ -114,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
@@ -132,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 ));
@@ -181,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
@@ -252,12 +256,13 @@ void mswDrawIcon(
* \return pointer to icon
*/
-wIcon_p wIconCreateBitMap( wPos_t w, wPos_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;
@@ -279,13 +284,13 @@ wIcon_p wIconCreateBitMap( wPos_t w, wPos_t h, const char * bits, wDrawColor col
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 );
@@ -294,19 +299,19 @@ wIcon_p wIconCreateBitMap( wPos_t w, wPos_t h, const char * bits, wDrawColor col
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;
@@ -324,18 +329,19 @@ wIcon_p wIconCreateBitMap( wPos_t w, wPos_t h, const char * bits, wDrawColor col
* 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[])
{
wIcon_p ip;
- int col, r, g, b, len;
+ int col, r, g, b;
+ size_t len;
int width, height;
char buff[3];
char * cp, * cq, * ptr;
int i, j, k;
- int lineLength;
+ size_t lineLength;
unsigned *keys;
unsigned numchars;
unsigned pixel;
@@ -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,12 +476,12 @@ 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
*/
void
-wIconDraw( wDraw_p d, wIcon_p bm, wPos_t x, wPos_t y )
+wIconDraw( wDraw_p d, wIcon_p bm, wWinPix_t x, wWinPix_t y )
{
mswDrawIcon( d->hDc, (int)x, (int)y, bm, FALSE, 0, 0 );
}
@@ -489,20 +497,22 @@ wIconDraw( wDraw_p d, wIcon_p bm, wPos_t x, wPos_t y )
*/
wControl_p
-wBitmapCreate( wWin_p parent, wPos_t x, wPos_t y, long option, wIcon_p 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)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)");
@@ -510,7 +520,7 @@ wBitmapCreate( wWin_p parent, wPos_t x, wPos_t y, long option, wIcon_p iconP )
}
control->h = iconP->h;
control->w = iconP->w;
- control->data = iconP;
+ control->data = (void*)iconP;
return (wControl_p)control;
}
diff --git a/app/wlib/mswlib/mswbox.c b/app/wlib/mswlib/mswbox.c
index 04b3656..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,
- wPos_t w,
- wPos_t h )
+ wBox_p bb,
+ wWinPix_t w,
+ wWinPix_t h )
{
bb->w = w;
bb->h = h;
@@ -39,10 +38,10 @@ void wBoxSetSize(
static void repaintBox( HWND hWnd, wControl_p b )
-{
+{
HDC hDc;
wBox_p bb = (wBox_p)(b);
- wPos_t x0, y0, x1, y1;
+ wWinPix_t x0, y0, x1, y1;
char lastColor;
int lastRop;
static char colors[8][4][2] = {
@@ -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,
- wPos_t origX,
- wPos_t origY,
- const char * labelStr,
- wBoxType_e typ,
- wPos_t width,
- wPos_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 16f31c1..be72257 100644
--- a/app/wlib/mswlib/mswbutt.c
+++ b/app/wlib/mswlib/mswbutt.c
@@ -17,17 +17,24 @@
*
* 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>
#include "mswint.h"
-int kludge12 = 0;
+
+/** Macros for button repeat timers */
+#define REPEAT_STAGE0_DELAY 500
+#define REPEAT_STAGE1_DELAY 150
+#define REPEAT_STAGE2_DELAY 75
+#define STOP_TIMER (-1)
+#define INITIAL_WAIT (0)
+#define SLOW_REPEATS (1)
+#define FAST_REPEATS (2)
/*
*****************************************************************************
@@ -40,25 +47,29 @@ int kludge12 = 0;
static XWNDPROC oldButtProc = NULL;
struct wButton_t {
- WOBJ_COMMON
- wButtonCallBack_p action;
- wBool_t busy;
- wBool_t selected;
- wIcon_p icon;
- };
+ 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
@@ -66,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;
- POS_T offw=5, offh=5;
- TRIVERTEX vert[2] ;
- GRADIENT_RECT gRect;
+ wWinPix_t offw=5, offh=5;
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 );
@@ -106,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;
@@ -117,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++;
@@ -187,37 +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;
- POS_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)
+ if (!value) {
b->selected = FALSE;
- /*SendMessage( b->hWnd, BM_SETSTATE, (WPARAM)value, 0L );*/
- InvalidateRgn( b->hWnd, NULL, 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;*/
@@ -227,9 +204,64 @@ void wButtonSetLabel(
}
InvalidateRgn( b->hWnd, NULL, FALSE );
}
-
-static LRESULT buttPush( wControl_p b, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
+/**
+ * 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
+ * - stop timer
+ *
+ * \param hWnd Handle of the window, unused
+ * \param message The message, unused
+ * \param timer The timer id is the wlib widget .
+ * \param timepast The timepast, unused
+ */
+
+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;
+}
+
+
+static LRESULT buttPush( wControl_p b, HWND hWnd, UINT message, WPARAM wParam,
+ LPARAM lParam )
{
wButton_p bb = (wButton_p)b;
DRAWITEMSTRUCT * di = (DRAWITEMSTRUCT *)lParam;
@@ -240,19 +272,20 @@ static LRESULT buttPush( wControl_p b, HWND hWnd, UINT message, WPARAM wParam, L
case WM_COMMAND:
if (bb->action /*&& !bb->busy*/) {
bb->action( bb->data );
- return 0L;
+ return (LRESULT)0;
}
break;
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 = wParam;
- mi->itemWidth = (UINT)ceil(bb->w*scaleIcon);
- mi->itemHeight = (UINT)ceil(bb->h*scaleIcon);
- } return 0L;
+ mi->CtlID = (UINT)wParam;
+ 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) {
@@ -261,33 +294,29 @@ static LRESULT buttPush( wControl_p b, HWND hWnd, UINT message, WPARAM wParam, L
bb->selected = selected;
InvalidateRgn( bb->hWnd, NULL, FALSE );
}
- return TRUE;
+ return (LRESULT)TRUE;
}
break;
-
}
return DefWindowProc( hWnd, message, wParam, lParam );
}
static void buttDone(
- wControl_p b )
+ wControl_p b )
{
free(b);
}
LRESULT CALLBACK pushButt(
- HWND hWnd,
- UINT message,
- UINT wParam,
- LONG lParam )
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
/* Catch <Return> and cause focus to leave control */
-#ifdef WIN32
- long inx = GetWindowLong( hWnd, GWL_ID );
-#else
- short inx = GetWindowWord( hWnd, GWW_ID );
-#endif
+
+ wIndex_t inx = (wIndex_t)GetWindowLongPtr( hWnd, GWL_ID );
wButton_p b = (wButton_p)mswMapIndex( inx );
PAINTSTRUCT ps;
@@ -297,7 +326,7 @@ LRESULT CALLBACK pushButt(
BeginPaint( hWnd, &ps );
buttDrawIcon( (wButton_p)b, ps.hdc );
EndPaint( hWnd, &ps );
- return 1L;
+ return (LRESULT)1;
}
break;
case WM_CHAR:
@@ -308,41 +337,55 @@ 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 0L;
+ return (LONG_PTR)0;
}
}
break;
case WM_KILLFOCUS:
- if ( b )
+ if ( b ) {
InvalidateRect( b->hWnd, NULL, TRUE );
- return 0L;
+ }
+ return (LRESULT)0;
+ break;
+ case WM_LBUTTONDOWN:
+ if (b->option&BO_REPEAT) {
+ SetTimer(hWnd, (UINT_PTR)b,REPEAT_STAGE0_DELAY,buttTimer);
+ b->timer_state = INITIAL_WAIT;
+ 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) {
+ KillTimer(hWnd, (UINT_PTR)b);
+ }
+ b->timer_id = 0;
+ b->timer_state = STOP_TIMER;
break;
}
return CallWindowProc( oldButtProc, hWnd, message, wParam, lParam );
}
static callBacks_t buttonCallBacks = {
- mswRepaintLabel,
- buttDone,
- buttPush };
+ mswRepaintLabel,
+ buttDone,
+ buttPush
+};
wButton_p wButtonCreate(
- wWin_p parent,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wPos_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;
@@ -352,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 {
@@ -366,20 +410,21 @@ wButton_p wButtonCreate(
b->selected = 0;
mswComputePos( (wControl_p)b, x, y );
if (b->option&BO_ICON) {
- width = (wPos_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 = (wPos_t)(width*mswScale);
+ 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)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;
@@ -393,16 +438,16 @@ wButton_p wButtonCreate(
mswCallBacks[B_BUTTON] = &buttonCallBacks;
mswChainFocus( (wControl_p)b );
- oldButtProc = (WNDPROC) SetWindowLongPtr(b->hWnd, GWL_WNDPROC, (LONG_PTR)&pushButt);
+ 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, 0L );
+ 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 2ac391a..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>
@@ -15,48 +14,49 @@
*****************************************************************************
*/
-int CHOICE_HEIGHT=(17);
-int CHOICE_MIN_WIDTH=25;
+#define CHOICE_HEIGHT (17)
+#define CHOICE_MIN_WIDTH (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 * * 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 ** labels;
+ const char * const * labels;
long cnt;
wChoiceItem_p * butts;
butts = (wChoiceItem_p*)bc->buttList;
for (labels = bc->labels, cnt=0; *labels; labels++, cnt++, butts++ )
SendMessage( (*butts)->hWnd, BM_SETCHECK,
- (val==cnt)?1:0, 0L );
+ (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,93 +64,94 @@ long wRadioGetValue(
void wToggleSetValue(
- wChoice_p bc,
- long val )
+ wChoice_p bc,
+ long val )
{
- const char ** labels;
+ const char * const * labels;
long cnt;
wChoiceItem_p * butts;
butts = (wChoiceItem_p*)bc->buttList;
for (labels = bc->labels, cnt=0; *labels; labels++, cnt++, butts++ )
SendMessage( (*butts)->hWnd, BM_SETCHECK,
- (val & (1L<<cnt)) != 0, 0L );
+ (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,
- wPos_t x,
- wPos_t y )
+ wControl_p b,
+ wWinPix_t x,
+ wWinPix_t y )
{
wChoice_p bc = (wChoice_p)b;
wChoiceItem_p * butts;
- wPos_t dx, dy;
+ wWinPix_t dx, dy;
dx = x - bc->x;
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+=dx, (*butts)->y+=dy,
- 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;
}
-long FAR PASCAL _export pushChoiceItem(
- HWND hWnd,
- UINT message,
- UINT wParam,
- LONG lParam )
+LRESULT FAR PASCAL _export pushChoiceItem(
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
/* Catch <Return> and cause focus to leave control */
-#ifdef WIN32
- long inx = GetWindowLong( hWnd, GWL_ID );
-#else
- short inx = GetWindowWord( hWnd, GWW_ID );
-#endif
-
+ wIndex_t inx = (wIndex_t)GetWindowLongPtr( hWnd, GWL_ID );
wControl_p b = mswMapIndex( inx );
switch (message) {
@@ -160,12 +161,12 @@ long 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 0L;
+ return (LRESULT)0;
}
}
break;
@@ -174,18 +175,18 @@ long 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:
@@ -194,53 +195,57 @@ LRESULT choiceItemProc(
for (rest = (wChoiceItem_p*)bc->buttList; *rest; rest++ ) {
switch (bc->type) {
case B_TOGGLE:
- num = rest-(wChoiceItem_p*)bc->buttList;
+ num = (int)(rest-(wChoiceItem_p*)bc->buttList);
if (*rest == me) {
bc->oldVal ^= (1L<<num);
}
SendMessage( (*rest)->hWnd, BM_SETCHECK,
- (bc->oldVal & (1L<<num)) != 0, 0L );
+ (WPARAM)((bc->oldVal & (1L<<num)) != 0), (LPARAM)0 );
break;
-
+
case B_RADIO:
if (*rest != me) {
- SendMessage( (*rest)->hWnd, BM_SETCHECK, 0, 0L );
+ SendMessage( (*rest)->hWnd, BM_SETCHECK, (WPARAM)0, (LPARAM)0 );
} else {
- bc->oldVal = rest-(wChoiceItem_p*)bc->buttList;
- SendMessage( (*rest)->hWnd, BM_SETCHECK, 1, 0L );
+ bc->oldVal = (long)(rest-(wChoiceItem_p*)bc->buttList);
+ SendMessage( (*rest)->hWnd, BM_SETCHECK, (WPARAM)1, (LPARAM)0 );
}
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
@@ -257,27 +262,27 @@ static callBacks_t choiceItemCallBacks = {
*/
static wChoice_p choiceCreate(
- wType_e type,
- wWin_p parent,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char **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 ** lp;
+ const char * const * lp;
int cnt;
wChoiceItem_p * butts;
- int ppx, ppy;
+ wWinPix_t ppx, ppy;
int bs;
HDC hDc;
HWND hButt;
- int lab_l;
+ size_t lab_l;
DWORD dw;
int w, maxW;
int pw, ph;
@@ -292,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 );
@@ -310,54 +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)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), 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)GetWindowLong( (*butts)->hWnd, GWL_WNDPROC );
- SetWindowLong( (*butts)->hWnd, GWL_WNDPROC, (LONG)newChoiceItemProc );
- if ( !mswThickFont )
- SendMessage( (*butts)->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, 0L );
+ }
+ 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);
+#endif
+ SendMessage( (*butts)->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
}
*butts = NULL;
switch (b->type) {
@@ -375,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;
@@ -391,33 +402,33 @@ static wChoice_p choiceCreate(
wChoice_p wRadioCreate(
- wWin_p parent,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char **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,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- const char **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 41bf6a9..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>
@@ -25,8 +24,8 @@
#define NUM_GRAYS (16)
#define NUM_COLORS (256)
-wDrawColor wDrawColorWhite = 0;
-wDrawColor wDrawColorBlack = 1;
+static wDrawColor wDrawColorWhite = 0;
+static wDrawColor wDrawColorBlack = 1;
#define MAX_COLOR_DISTANCE (3)
@@ -34,18 +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 */
- } };
-
-COLORREF mappedColors[NUM_COLORS];
+ }
+};
static long flipRGB( long rgb )
@@ -70,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 );
}
@@ -93,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;
@@ -106,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++;
}
@@ -132,8 +134,9 @@ void mswInitColorPalette( void )
PALETTEENTRY palPalEntry[256];
} pe;
- if (initted)
+ if (initted) {
return;
+ }
initted = TRUE;
mswGetCustomColors();
@@ -160,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;
@@ -172,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;
@@ -212,7 +219,7 @@ wDrawColor wDrawFindColor(
long wDrawGetRGB(
- wDrawColor color )
+ wDrawColor color )
{
long rgb;
int r, g, b;
@@ -236,6 +243,7 @@ static void mswGetCustomColors( void )
strcpy( colorName, "custom-" );
for ( inx=0; inx<16; inx++ ) {
sprintf( colorName+7, "%d", inx );
+ /** @prefs [mswcolor] custom-0=<rgb> to custom-15=<rgb> Set custom colors */
wPrefGetInteger( "mswcolor", colorName, &rgb, 0 );
aclrCust[inx] = flipRGB(rgb);
}
@@ -260,8 +268,8 @@ void mswPutCustomColors( void )
wBool_t wColorSelect(
- const char * title,
- wDrawColor * color )
+ const char * title,
+ wDrawColor * color )
{
long rgb;
@@ -286,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;
@@ -306,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,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- const char * labelStr,
- long option,
- wPos_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;
@@ -337,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 );
@@ -356,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 c2739e6..7ab38ac 100644
--- a/app/wlib/mswlib/mswdraw.c
+++ b/app/wlib/mswlib/mswdraw.c
@@ -17,25 +17,19 @@
*
* 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>
#include <winuser.h>
-#ifdef WIN32
#define wFont_t tagLOGFONTA
-#else
-#define wFont_t tagLOGFONT
-#endif
-#include "misc.h"
#include "mswint.h"
#include <FreeImage.h>
@@ -48,9 +42,9 @@ wBool_t wDrawDoTempDraw = TRUE;
*****************************************************************************
*/
-static wBool_t initted = FALSE;
+#define M_PI 3.14159265358979323846
-long wDebugFont;
+static wBool_t initted = FALSE;
static FARPROC oldDrawProc;
@@ -59,69 +53,53 @@ static long tmpOp = 0x990066;
static long setOp = 0x8800c6;
static long clrOp = 0xbb0226;
-#define CENTERMARK_LENGTH 6
+#define CENTERMARK_LENGTH 4
-bool bDrawMainBM = 0;
+static bool bDrawMainBM = 0;
+
+typedef struct {
+ double x, y;
+} coOrd;
#ifdef SLOW
-static wPos_t XPIX2INCH( wDraw_p d, int ix )
+static wDrawPix_t XWINPIX2DRAWPIX( wDraw_p d, wWinPix_t ix )
{
- return (wPos_t)ix;
+ return (wDrawPix_t)ix;
}
-static wPos_t YPIX2INCH( wDraw_p d, int iy )
+static wDrawPix_t YWINPIX2DRAWPIX( wDraw_p d, wWinPix_t iy )
{
- wPos_t y;
- y = (wPos_t)(d->h-2-iy);
+ wWinPix_t y;
+ y = (wDrawPix_t)(d->h-2-iy);
return y;
}
-static int XINCH2PIX( wDraw_p d, wPos_t xx )
+static wWinPix_t XDRAWPIX2WINPIX( wDraw_p d, wDrawPix_t xx )
{
- int ix;
- ix = (int)(xx);
+ wWinPix_t ix;
+ ix = (wWinPix_t)(xx);
return ix;
}
-static int YINCH2PIX( wDraw_p d, wPos_t y )
+static wWinPix_t YDRAWPIX2WINPIX( wDraw_p d, wDrawPix_t y )
{
- int iy;
- iy = d->h-2 - (int)(y);
+ wWinPix_t iy;
+ iy = (d->h)-2 - (wWinPix_t)(y);
return iy;
}
-
-static wPos_t XPIXELSTOINCH( wDraw_p d, int ix )
-{
- return (wPos_t)ix;
-}
-
-
-static wPos_t YPIXELSTOINCH( wDraw_p d, int iy )
-{
- return (wPos_t)iy;
-}
#else
-#define XPIX2INCH( d, ix ) \
- ((wPos_t)ix)
-
-#define YPIX2INCH( d, iy ) \
- ((wPos_t)(d->h-2-iy))
-
-#define XINCH2PIX( d, xx ) \
- ((int)(xx))
-
-#define YINCH2PIX( d, y ) \
- (d->h-2 - (int)(y))
-
+#define XWINPIX2DRAWPIX( d, ix ) \
+ ((wDrawPix_t)ix)
-#define XPIXELSTOINCH( d, ix ) \
- ((wPos_t)ix)
+#define YWINPIX2DRAWPIX( d, iy ) \
+ ((wDrawPix_t)(d->h-2-iy))
+#define XDRAWPIX2WINPIX( d, xx ) \
+ ((wWinPix_t)(xx))
-#define YPIXELSTOINCH( d, iy ) \
- ((wPos_t)iy)
-
+#define YDRAWPIX2WINPIX( d, y ) \
+ (d->h - 2 - (wWinPix_t)(y))
#endif
/*
@@ -134,18 +112,15 @@ static wPos_t YPIXELSTOINCH( wDraw_p d, int iy )
-static long noNegDrawArgs = -1;
-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;
@@ -153,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;
@@ -170,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};
@@ -197,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();
@@ -211,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;
@@ -225,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;
@@ -244,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 );
}
@@ -293,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 ) {
@@ -302,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 ) {
@@ -310,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;
@@ -322,61 +299,67 @@ static int clip0( POINT * p0, POINT * p1, wDraw_p d )
void wDrawLine(
- wDraw_p d,
- wPos_t p0x,
- wPos_t p0y,
- wPos_t p1x,
- wPos_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;
setDrawMode( d, dw, lt, dc, dopt );
- p0.x = XINCH2PIX(d,p0x);
- p0.y = YINCH2PIX(d,p0y);
- p1.x = XINCH2PIX(d,p1x);
- p1.y = YINCH2PIX(d,p1y);
- if ( noNegDrawArgs>0 && !clip0( &p0, &p1, d ) )
- return;
+ p0.x = XDRAWPIX2WINPIX(d,p0x);
+ p0.y = YDRAWPIX2WINPIX(d,p0y);
+ p1.x = XDRAWPIX2WINPIX(d,p1x);
+ p1.y = YDRAWPIX2WINPIX(d,p1y);
+
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 );
}
}
+static double d2r(double angle)
+{
+ angle *= (M_PI / 180.0);
+ return 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 );
}
@@ -389,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
*
@@ -405,33 +395,34 @@ static double mswasin( double x, double h )
void wDrawArc(
- wDraw_p d,
- wPos_t px,
- wPos_t py,
- wPos_t r,
- double a0,
- double a1,
- int drawCenter,
- 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;
- double psx, psy, pex, pey, len, aa;
+ wDrawPix_t psx, psy, pex, pey;
+ double aa, ai;
RECT rect;
int needMoveTo;
wBool_t fakeArc = FALSE;
- len = a1/360.0 * (2 * M_PI) * r;
- if (len < 3)
- return;
+ // calculate the center coordinates
+ pc.x = XDRAWPIX2WINPIX( d, px );
+ pc.y = YDRAWPIX2WINPIX( d, py );
- p0.x = XINCH2PIX(d,px-r);
- p0.y = YINCH2PIX(d,py+r)+1;
- p1.x = XINCH2PIX(d,px+r);
- p1.y = YINCH2PIX(d,py-r)+1;
+ p0.x = XDRAWPIX2WINPIX(d,px-r);
+ p0.y = YDRAWPIX2WINPIX(d,py+r);
+ p1.x = XDRAWPIX2WINPIX(d,px+r);
+ p1.y = YDRAWPIX2WINPIX(d,py-r);
pex = px + r * mswsin(a0);
pey = py + r * mswcos(a0);
@@ -440,40 +431,43 @@ void wDrawArc(
/*pointOnCircle( &pe, p, r, a0 );
pointOnCircle( &ps, p, r, a0+a1 );*/
- ps.x = XINCH2PIX(d,(wPos_t)psx);
- ps.y = YINCH2PIX(d,(wPos_t)psy);
- pe.x = XINCH2PIX(d,(wPos_t)pex);
- pe.y = YINCH2PIX(d,(wPos_t)pey);
+ ps.x = XDRAWPIX2WINPIX(d,psx);
+ ps.y = YDRAWPIX2WINPIX(d,psy);
+ pe.x = XDRAWPIX2WINPIX(d,pex);
+ pe.y = YDRAWPIX2WINPIX(d,pey);
setDrawMode( d, dw, lt, dc, dopt );
- if (dw == 0)
+ if (dw == 0) {
dw = 1;
+ }
- if (r>4096) {
+ 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;
- if ( cnt <= 0 ) cnt = 1;
- if ( cnt > 360 ) cnt = 360;
- aa = a1 / cnt;
- psx = px + r * mswsin(a0);
- psy = py + r * mswcos(a0);
- pp0.x = XINCH2PIX( d, (wPos_t)psx );
- pp0.y = YINCH2PIX( d, (wPos_t)psy );
+ cnt = (int)(a1 / 2);
+ if ( cnt <= 0 ) { cnt = 1; }
+ if ( cnt > 180 ) { cnt = 180; }
+
+ ai = d2r(a1) / cnt;
+ aa = d2r(a0);
needMoveTo = TRUE;
+
for ( i=0; i<cnt; i++ ) {
- a0 += aa;
- psx = px + r * mswsin(a0);
- psy = py + r * mswcos(a0);
- pp2.x = pp1.x = XINCH2PIX( d, (wPos_t)psx );
- pp2.y = pp1.y = YINCH2PIX( d, (wPos_t)psy );
+ aa += ai;
+ psx = px + r * sin(aa);
+ psy = py + r * cos(aa);
+ pp2.x = pp1.x = XDRAWPIX2WINPIX( d, psx );
+ pp2.y = pp1.y = YDRAWPIX2WINPIX( d, psy );
if ( clip0( &pp0, &pp1, d ) ) {
if (needMoveTo) {
MoveTo( d->hDc, pp0.x, pp0.y );
@@ -486,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-1, pe.x, p1.y-1 );
- Arc( d->hDc, p0.x, p1.y, p1.x, p0.y, ps.x, p1.y-1, pe.x, p0.y-1 );
+ 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( drawCenter ) {
-
- // calculate the center coordinates
- pc.x = XINCH2PIX( d, px );
- pc.y = YINCH2PIX( d, py );
- // now draw the crosshair
- MoveTo( d->hDc, pc.x - CENTERMARK_LENGTH/2, pc.y );
- LineTo( d->hDc, pc.x + CENTERMARK_LENGTH/2, pc.y );
- MoveTo( d->hDc, pc.x, pc.y - CENTERMARK_LENGTH/2 );
- LineTo( d->hDc, pc.x, pc.y + CENTERMARK_LENGTH/2 );
-
- // invalidate the area of the crosshair
- rect.top = pc.y - CENTERMARK_LENGTH / 2 - 1;
- rect.bottom = pc.y + CENTERMARK_LENGTH / 2 + 1;
- rect.left = pc.x - CENTERMARK_LENGTH / 2 - 1;
- rect.right = pc.x + CENTERMARK_LENGTH / 2 + 1;
- myInvalidateRect( d, &rect );
+ if( sizeCenter ) {
+
+ // 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;
@@ -543,25 +552,28 @@ void wDrawArc(
}
void wDrawPoint(
- wDraw_p d,
- wPos_t px,
- wPos_t py,
- wDrawColor dc,
- wDrawOpts dopt )
+ wDraw_p d,
+ wDrawPix_t px,
+ wDrawPix_t py,
+ wDrawColor dc,
+ wDrawOpts dopt )
{
POINT p0;
RECT rect;
- p0.x = XINCH2PIX(d,px);
- p0.y = YINCH2PIX(d,py);
+ 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;
@@ -581,133 +593,150 @@ 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 )
{
const char * face;
long size;
+ /** @prefs [msw window font] face=FontName */
face = wPrefGetString( "msw window font", "face" );
+ /** @prefs [msw window font] size=-24 */
wPrefGetInteger( "msw window font", "size", &size, -24 );
if (face) {
strncpy( logFont.lfFaceName, face, LF_FACESIZE );
@@ -732,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 );
}
@@ -744,45 +774,47 @@ 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(
- wPos_t *w,
- wPos_t *h,
- wPos_t *d,
- wPos_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 )
{
- int x, y;
+ wWinPix_t x, y;
HFONT newFont, prevFont;
DWORD extent;
int oldLfHeight;
TEXTMETRIC textMetric;
- if (fp == NULL)
+ if (fp == NULL) {
fp = &logFont;
+ }
fp->lfEscapement = 0;
oldLfHeight = fp->lfHeight;
fp->lfHeight = computeFontSize( bd, siz );
fp->lfWidth = 0;
newFont = CreateFontIndirect( fp );
prevFont = SelectObject( bd->hDc, newFont );
- extent = GetTextExtent( bd->hDc, CAST_AWAY_CONST text, strlen(text) );
+ extent = GetTextExtent( bd->hDc, CAST_AWAY_CONST text, (int)(strlen(text)) );
GetTextMetrics(bd->hDc, &textMetric);
x = LOWORD(extent);
y = HIWORD(extent);
- *w = XPIXELSTOINCH( bd, x );
- *h = YPIXELSTOINCH( bd, y );
- *d = YPIXELSTOINCH(bd, textMetric.tmDescent );
- *a = YPIXELSTOINCH(bd, textMetric.tmAscent );
+ *w = (wDrawPix_t)x;
+ *h = (wDrawPix_t)y;
+ *d = (wDrawPix_t)textMetric.tmDescent;
+ *a = (wDrawPix_t)textMetric.tmAscent;
SelectObject( bd->hDc, prevFont );
DeleteObject( newFont );
@@ -790,7 +822,7 @@ void wDrawGetTextSize(
}
/**
* Draw text
- *
+ *
* \param d device context
* \param px position x
* \param py position y
@@ -802,80 +834,74 @@ void wDrawGetTextSize(
* \param dopts drawing options
*/
void wDrawString(
- wDraw_p d,
- wPos_t px,
- wPos_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 = XINCH2PIX(d,px) + (int)(mswsin(angle)*fp->lfHeight-0.5);
- y = YINCH2PIX(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, 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, strlen(text));
- SetTextColor(d->hDc, old);
- }
-
- extent = GetTextExtent(d->hDc, CAST_AWAY_CONST text, 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 )
@@ -889,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 )
@@ -924,44 +951,50 @@ void wSetSelectedFontSize(wFontSize_t size)
void wDrawFilledRectangle(
- wDraw_p d,
- wPos_t px,
- wPos_t py,
- wPos_t sx,
- wPos_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);
- rect.left = XINCH2PIX(d,px);
- rect.right = XINCH2PIX(d,px+sx);
- rect.top = YINCH2PIX(d,py+sy);
- rect.bottom = YINCH2PIX(d,py);
+ rect.left = XDRAWPIX2WINPIX(d,px);
+ rect.right = XDRAWPIX2WINPIX(d,px+sx);
+ 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--;
@@ -973,7 +1006,7 @@ void wDrawFilledRectangle(
}
#ifdef DRAWFILLPOLYLOG
- static FILE * logF;
+static FILE * logF;
#endif
static dynArr_t wFillPoints_da;
@@ -994,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 = XINCH2PIX(d, pp->x);
- p.y = YINCH2PIX(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;
+ }
}
/**
@@ -1041,208 +1074,190 @@ static void addPoint(
*/
void wDrawPolygon(
- wDraw_p d,
- wPos_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 = XINCH2PIX(d,node[cnt-1][0]-1);
- rect.top = rect.bottom = YINCH2PIX(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 (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 = node[i][0] - node[prevNode][0];
- int prevYDistance = node[i][1] - node[prevNode][1];
- int nextXDistance = node[nextNode][0]-node[i][0];
- int nextYDistance = 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 (!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,
- wPos_t x,
- wPos_t y,
- wPos_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 wPos_t circlePts[MAX_FILLCIRCLE_POINTS][2];
- int inx, cnt;
- double dang;
-
- p0.x = XINCH2PIX(d,x-r);
- p0.y = YINCH2PIX(d,y+r)+1;
- p1.x = XINCH2PIX(d,x+r);
- p1.y = YINCH2PIX(d,y-r)+1;
-
- 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 = 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 );
- }
+ static wDrawPix_t circlePts[MAX_FILLCIRCLE_POINTS][2];
+
+ 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 );
+ 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 );
}
}
@@ -1256,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" );
@@ -1307,14 +1323,14 @@ void wDrawClear( wDraw_p d )
void wDrawSetSize(
- wDraw_p d,
- wPos_t width,
- wPos_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 );*/
@@ -1322,9 +1338,9 @@ void wDrawSetSize(
void wDrawGetSize(
- wDraw_p d,
- wPos_t * width,
- wPos_t * height )
+ wDraw_p d,
+ wWinPix_t * width,
+ wWinPix_t * height )
{
*width = d->w-2;
*height = d->h-2;
@@ -1348,18 +1364,18 @@ double wDrawGetMaxRadius( wDraw_p d )
}
void wDrawClip(
- wDraw_p d,
- wPos_t x,
- wPos_t y,
- wPos_t w,
- wPos_t h )
+ wDraw_p d,
+ wDrawPix_t x,
+ wDrawPix_t y,
+ wDrawPix_t w,
+ wDrawPix_t h )
{
- int ix0, iy0, ix1, iy1;
+ wWinPix_t ix0, iy0, ix1, iy1;
HRGN hRgnClip;
- ix0 = XINCH2PIX(d,x);
- iy0 = YINCH2PIX(d,y);
- ix1 = XINCH2PIX(d,x+w);
- iy1 = YINCH2PIX(d,y+h);
+ ix0 = XDRAWPIX2WINPIX(d,x);
+ iy0 = YDRAWPIX2WINPIX(d,y);
+ ix1 = XDRAWPIX2WINPIX(d,x+w);
+ iy1 = YDRAWPIX2WINPIX(d,y+h);
/* Note: Ydim is upside down so iy1<iy0 */
hRgnClip = CreateRectRgn( ix0, iy1, ix1, iy0 );
SelectClipRgn( d->hDc, hRgnClip );
@@ -1370,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();
+}
+
+
/*
*****************************************************************************
@@ -1383,25 +1486,27 @@ void wRedraw( wDraw_p d )
*/
struct wDrawBitMap_t {
- wDrawBitMap_p next;
- wPos_t x;
- wPos_t y;
- wPos_t w;
- wPos_t h;
- char * bmx;
- wDrawColor color;
- HBITMAP bm;
- };
-wDrawBitMap_p bmRoot = NULL;
-
+ 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,
- wPos_t px,
- wPos_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;
@@ -1409,50 +1514,53 @@ void wDrawBitMap(
int x0, y0;
RECT rect;
- x0 = XINCH2PIX(d,px-bm->x);
- y0 = YINCH2PIX(d,py-bm->y+bm->h);
+ 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 == wDrawColorWhite) {
+ if (dc == drawColorWhite) {
mode = clrOp;
- dc = wDrawColorBlack;
+ dc = drawColorBlack;
} else {
mode = setOp;
}
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 ), bm->w, 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;
}
bmDc = CreateCompatibleDC( d->hDc );
setDrawMode( d, 0, wDrawLineSolid, dc, dopt );
oldBm = SelectObject( bmDc, bm->bm );
- BitBlt( d->hDc, x0, y0, bm->w, bm->h, bmDc, 0, 0, mode );
+ BitBlt( d->hDc, x0, y0, (wWinPix_t)bm->w, (wWinPix_t)bm->h, bmDc, 0, 0, mode );
SelectObject( bmDc, oldBm );
DeleteDC( bmDc );
if (d->hWnd) {
- rect.top = y0-1;
- rect.bottom = rect.top+bm->h+1;
- rect.left = x0-1;
- rect.right = rect.left+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;
@@ -1484,22 +1592,18 @@ wDrawBitMap_p wDrawBitMapCreate(
*****************************************************************************
*/
-int doSetFocus = 1;
+static int doSetFocus = 1;
-long FAR PASCAL XEXPORT mswDrawPush(
- HWND hWnd,
- UINT message,
- UINT wParam,
- LONG lParam )
+LRESULT FAR PASCAL XEXPORT mswDrawPush(
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
-#ifdef WIN32
- long inx = GetWindowLong( hWnd, GWL_ID );
-#else
- short inx = GetWindowWord( hWnd, GWW_ID );
-#endif
+ wIndex_t inx = (wIndex_t)GetWindowLongPtr( hWnd, GWL_ID );
wDraw_p b;
- short int ix, iy;
- wPos_t x, y;
+ wWinPix_t ix, iy;
+ wDrawPix_t x, y;
HDC hDc;
PAINTSTRUCT ps;
wAction_t action;
@@ -1518,7 +1622,7 @@ long 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 );
@@ -1529,7 +1633,10 @@ long FAR PASCAL XEXPORT mswDrawPush(
}
b->wFactor = (double)GetDeviceCaps( b->hDc, LOGPIXELSX );
b->hFactor = (double)GetDeviceCaps( b->hDc, LOGPIXELSY );
- b->DPI = 96.0; /*min( b->wFactor, b->hFactor );*/
+ double dpi;
+ /** @prefs [Preference] ScreenDPI=96.0 Sets DPI of screen */
+ wPrefGetFloat(PREFSECTION, DPISET, &dpi, 96.0);
+ b->DPI = dpi;
b->hWnd = hWnd;
SetROP2( b->hDc, R2_WHITE );
Rectangle( b->hDc, 0, 0, b->w, b->h );
@@ -1548,116 +1655,137 @@ long 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 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 );
- x = XPIX2INCH( b, ix );
- y = YPIX2INCH( b, iy );
+ x = XWINPIX2DRAWPIX( b, ix );
+ 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 0;
+ }
+ 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 + ( 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 0;
+ return (LRESULT)0;
case WM_PAINT:
b = (wDraw_p)mswMapIndex( inx );
@@ -1673,17 +1801,17 @@ long 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;
@@ -1703,6 +1831,13 @@ long 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;
}
@@ -1710,10 +1845,11 @@ long 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 */
@@ -1738,9 +1874,10 @@ 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 0;
+ }
+ return (LRESULT)0;
case WM_MOUSEHWHEEL:
if ( GET_KEYSTATE_WPARAM(wParam) & (MK_SHIFT|MK_MBUTTON)) {
if ( GET_WHEEL_DELTA_WPARAM(wParam) > 0 ) {
@@ -1749,9 +1886,10 @@ 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 0;
+ }
+ return (LRESULT)0;
}
return DefWindowProc( hWnd, message, wParam, lParam );
@@ -1787,27 +1925,30 @@ 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
+};
-wDraw_p drawList = NULL;
+static wDraw_p drawList = NULL;
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 );
+ }
}
}
@@ -1824,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 );
}
@@ -1840,27 +1981,22 @@ void mswRepaintAll( void )
wDraw_p wDrawCreate(
- wWin_p parent,
- wPos_t x,
- wPos_t y,
- const char * helpStr,
- long option,
- wPos_t w,
- wPos_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;
@@ -1870,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)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)" );
@@ -1909,7 +2045,7 @@ wDraw_p wDrawCreate(
*****************************************************************************
*/
-wDraw_p wBitMapCreate( wPos_t w, wPos_t h, int planes )
+wDraw_p wBitMapCreate( wWinPix_t w, wWinPix_t h, int planes )
{
wDraw_p d;
HDC hDc;
@@ -1926,7 +2062,7 @@ wDraw_p wBitMapCreate( wPos_t w, wPos_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;
@@ -1934,11 +2070,13 @@ wDraw_p wBitMapCreate( wPos_t w, wPos_t h, int planes )
d->hBmMain = CreateCompatibleBitmap( hDc, d->w, d->h );
if ( d->hBmMain == (HBITMAP)0 ) {
wNoticeEx( NT_ERROR, "CreateBitMap: CreateBM Main fails", "Ok", NULL );
+ ReleaseDC(mswHWnd, hDc);
return FALSE;
}
d->hBmTemp = CreateCompatibleBitmap( hDc, d->w, d->h );
if ( d->hBmTemp == (HBITMAP)0 ) {
wNoticeEx( NT_ERROR, "CreateBitMap: CreateBM Temp fails", "Ok", NULL );
+ ReleaseDC(mswHWnd, hDc);
return FALSE;
}
d->hasPalette = (GetDeviceCaps(hDc,RASTERCAPS ) & RC_PALETTE) != 0;
@@ -1992,63 +2130,74 @@ 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) {
- bSuccess = FreeImage_Save(fif, dib2, fileName, PNG_DEFAULT);
- return bSuccess;
- }
- }
- FreeImage_Unload(dib2);
-
- return bSuccess;
+ 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) {
+ case FIF_JPEG:
+ flags = JPEG_QUALITYNORMAL;
+ break;
+ case FIF_PNG:
+ flags = PNG_DEFAULT;
+ break;
+ default:
+ flags = 0; // whatver the default is for the file format
+ }
+ bSuccess = FreeImage_Save(fif, dib2, fileName, flags);
+ }
+ }
+ FreeImage_Unload(dib2);
+
+ return bSuccess;
}
diff --git a/app/wlib/mswlib/mswedit.c b/app/wlib/mswlib/mswedit.c
index dc70ac3..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,72 +30,68 @@
struct wString_t {
- WOBJ_COMMON
- char * valueP;
- wIndex_t valueL;
- wStringCallBack_p action;
- };
+ 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
static XWNDPROC oldEditProc = NULL;
static XWNDPROC newEditProc;
-static void triggerString( wControl_p b );
+static void triggerString( wString_p b );
#ifdef LATER
static void triggerInteger( wControl_p b );
static void triggerFloat( wControl_p b );
#endif
-long FAR PASCAL _export pushEdit(
- HWND hWnd,
- UINT message,
- UINT wParam,
- LONG lParam )
+LRESULT FAR PASCAL _export pushEdit(
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
-#ifdef WIN32
- long inx = GetWindowLong( hWnd, GWL_ID );
-#else
- short inx = GetWindowWord( hWnd, GWW_ID );
-#endif
- wControl_p b = mswMapIndex(inx);
+ 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 (0L);
- break;
- case 0x1B:
- case 0x09:
- SetFocus(((wControl_p)(b->parent))->hWnd);
- SendMessage(((wControl_p)(b->parent))->hWnd, WM_CHAR,
- wParam, lParam);
- return 0L;
- }
- }
- 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);
@@ -112,61 +107,61 @@ long 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, 0, (DWORD)arg );
-#ifdef WIN32
- SendMessage( b->hWnd, EM_SETSEL, 0, -1 );
- SendMessage( b->hWnd, EM_SCROLLCARET, 0, 0L );
-#else
- SendMessage( b->hWnd, EM_SETSEL, 0, MAKELPARAM(len,len) );
-#endif
- SendMessage( b->hWnd, EM_SETMODIFY, FALSE, 0L );
+ SendMessage( b->hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)arg );
+ SendMessage( b->hWnd, EM_SETSEL, (WPARAM)0, (LPARAM)-1 );
+ SendMessage( b->hWnd, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0 );
+ SendMessage( b->hWnd, EM_SETMODIFY, (WPARAM)FALSE, (LPARAM)0 );
}
void wStringSetWidth(
- wString_p b,
- wPos_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, sizeof buff, (DWORD)buff );
+ SendMessage( b->hWnd, WM_GETTEXT, (WPARAM)sizeof buff, (LPARAM)buff );
return buff;
}
/**
* 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 = SendMessage(bs->hWnd, EM_LINELENGTH, (WPARAM)0, 0L);
-
- if (chars) {
- tmpBuffer = malloc(chars > sizeof(WORD)? chars + 1 : sizeof(WORD) + 1);
- *(WORD *)tmpBuffer = chars;
- SendMessage(bs->hWnd, (UINT)EM_GETLINE, 0, (LPARAM)tmpBuffer);
- tmpBuffer[chars] = '\0';
- }
+ 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);
+ return (tmpBuffer);
}
/**
@@ -177,126 +172,126 @@ static char *getString(wString_p bs)
*/
static void triggerString(
- wControl_p b)
+ wString_p b)
{
- wString_p bs = (wString_p)b;
-
- char *enteredString = getString(bs);
- if (enteredString)
- {
- if (bs->valueP) {
- strcpy(bs->valueP, enteredString);
- }
- if (bs->action) {
- bs->action(enteredString, bs->data);
- }
+ const char *output = "\n";
+
+ 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);
}
}
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, 0, 0L);
- 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, FALSE, 0L);
- }
- 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,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- POS_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;
+ }
-#ifdef WIN32
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)index, mswHInst, NULL );
-#else
- 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 );
-#endif
+ 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;
}
newEditProc = MakeProcInstance( (XWNDPROC)pushEdit, mswHInst );
- oldEditProc = (XWNDPROC)GetWindowLong(b->hWnd, GWL_WNDPROC );
+ oldEditProc = (XWNDPROC)GetWindowLongPtr(b->hWnd, GWLP_WNDPROC);
+ SetWindowLongPtr(b->hWnd, GWLP_WNDPROC, (LONG_PTR)newEditProc);
+#ifdef _OLDCODE
+ oldEditProc = (XWNDPROC)GetWindowLongPtr(b->hWnd, GWL_WNDPROC );
SetWindowLong( b->hWnd, GWL_WNDPROC, (LONG)newEditProc );
+#endif // WIN64
if (b->valueP) {
- SendMessage( b->hWnd, WM_SETTEXT, 0, (DWORD)b->valueP );
+ SendMessage( b->hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)b->valueP );
}
- SendMessage( b->hWnd, EM_SETMODIFY, FALSE, 0L );
- if ( !mswThickFont )
- SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, 0L );
+ SendMessage( b->hWnd, EM_SETMODIFY, (WPARAM)FALSE, (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;
@@ -322,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 );
@@ -333,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;
@@ -349,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 );
}
@@ -367,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;
@@ -400,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 );
@@ -427,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
@@ -452,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,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- POS_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;
@@ -491,35 +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;
}
-#ifdef CONTROL3D
- Ctl3dSubclassCtl( b->hWnd);
-#endif
-
+
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 );
@@ -547,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 );
@@ -558,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;
@@ -627,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 );
@@ -655,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
@@ -677,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,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- POS_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;
@@ -715,37 +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;
}
-#ifdef CONTROL3D
- Ctl3dSubclassCtl( b->hWnd);
-#endif
-
+
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 e560053..525a37c 100644
--- a/app/wlib/mswlib/mswint.h
+++ b/app/wlib/mswlib/mswint.h
@@ -1,15 +1,31 @@
+/** \file mswint.h
+ * Windows specific definitions and prototypes for wlib
+ */
+
+/* XTrackCAD - 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 "wlib.h"
#include "mswlib.h"
-//#include "dynarr.h"
-#include "common.h"
-#ifndef WIN32
-/*#define CONTROL3D*/
-#endif
-#include "stdio.h"
+#include "dynarr.h"
-#ifdef CONTROL3D
-#include "ctl3d.h"
-#endif
+#include <FreeImage.h>
+#include <stdio.h>
#ifdef WIN32
#ifdef FAR
@@ -40,39 +56,39 @@
#endif
#ifndef CAST_AWAY_CONST
- #define CAST_AWAY_CONST (char *)
+#define CAST_AWAY_CONST (char *)
#endif
#define BOOL_T wBool_t
-#define POS_T wPos_t
#define INDEX_T wIndex_t
#define INTEGER_T wInteger_t
typedef enum {
- W_MAIN, W_POPUP,
- B_BUTTON, B_STRING, B_INTEGER, B_FLOAT,
- B_LIST, B_DROPLIST, B_COMBOLIST,
- B_RADIO, B_TOGGLE,
- B_DRAW, B_TEXT, B_MESSAGE, B_LINES,
- B_MENUITEM, B_CHOICEITEM, B_BOX,
- B_BITMAP } wType_e;
-
-typedef void (*repaintProcCallback_p)( HWND, wControl_p );
-typedef void (*doneProcCallback_p)( wControl_p b );
-typedef LRESULT (*messageCallback_p)( wControl_p, HWND, UINT, WPARAM, LPARAM );
-typedef void (*setTriggerCallback_p)( wControl_p b );
-typedef void (*setBusyCallback_p)( wControl_p, BOOL_T );
-typedef void (*showCallback_p)( wControl_p, BOOL_T );
-typedef void (*setPosCallback_p)( wControl_p, wPos_t, wPos_t );
+ W_MAIN, W_POPUP,
+ B_BUTTON, B_STRING, B_INTEGER, B_FLOAT,
+ B_LIST, B_DROPLIST, B_COMBOLIST,
+ B_RADIO, B_TOGGLE,
+ B_DRAW, B_TEXT, B_MESSAGE, B_LINES,
+ B_MENUITEM, B_CHOICEITEM, B_BOX,
+ B_BITMAP
+} wType_e;
+
+typedef void ( *repaintProcCallback_p )( HWND, wControl_p );
+typedef void ( *doneProcCallback_p )( wControl_p b );
+typedef LRESULT( *messageCallback_p )( wControl_p, HWND, UINT, WPARAM, LPARAM );
+typedef void ( *setTriggerCallback_p )( wControl_p b );
+typedef void ( *setBusyCallback_p )( wControl_p, BOOL_T );
+typedef void ( *showCallback_p )( wControl_p, BOOL_T );
+typedef void ( *setPosCallback_p )( wControl_p, wWinPix_t, wWinPix_t );
typedef struct {
- repaintProcCallback_p repaintProc;
- doneProcCallback_p doneProc;
- messageCallback_p messageProc;
- setBusyCallback_p setBusyProc;
- showCallback_p showProc;
- setPosCallback_p setPosProc;
- } callBacks_t;
+ repaintProcCallback_p repaintProc;
+ doneProcCallback_p doneProc;
+ messageCallback_p messageProc;
+ setBusyCallback_p setBusyProc;
+ showCallback_p showProc;
+ setPosCallback_p setPosProc;
+} callBacks_t;
#define CALLBACK_CNT (B_BOX+1)
extern callBacks_t *mswCallBacks[CALLBACK_CNT];
@@ -83,67 +99,68 @@ extern callBacks_t *mswCallBacks[CALLBACK_CNT];
wControl_p next; \
wControl_p synonym; \
wWin_p parent; \
- POS_T x, y; \
- POS_T w, h; \
+ wWinPix_t x, y; \
+ wWinPix_t w, h; \
long option; \
- POS_T labelX, labelY; \
+ wWinPix_t labelX, labelY; \
const char * labelStr; \
const char * helpStr; \
const char * tipStr; \
+ char * errStr; \
HWND hWnd; \
void * data;\
wControl_p focusChainNext; \
- wBool_t shown;
+ wBool_t shown; \
+ wBool_t hilite;
struct wControl_t {
- WOBJ_COMMON
- };
+ WOBJ_COMMON
+};
typedef struct {
- unsigned key;
- wDrawColor color;
- } wIconColorMap_t;
+ unsigned key;
+ wDrawColor color;
+} wIconColorMap_t;
#define mswIcon_bitmap (1)
#define mswIcon_pixmap (2)
struct wIcon_t {
- int type;
- wPos_t w; /**< width */
- wPos_t h; /**< height */
- wDrawColor color;
- int colorcnt; /**< number of colors */
- RGBQUAD *colormap;
- char *pixels; /**< pointer to pixel information */
- int transparent; /**< index of transparent color */
- };
+ int type;
+ wWinPix_t w; /**< width */
+ wWinPix_t h; /**< height */
+ wDrawColor color;
+ int colorcnt; /**< number of colors */
+ RGBQUAD *colormap;
+ char *pixels; /**< pointer to pixel information */
+ int transparent; /**< index of transparent color */
+};
struct wDraw_t {
- WOBJ_COMMON
- HDC hDc;
- double wFactor;
- double hFactor;
- double DPI;
- wDrawRedrawCallBack_p drawRepaint;
- wDrawActionCallBack_p action;
- HBITMAP hBmMain;
- HBITMAP hBmTemp;
- HBITMAP hBmOld;
- HPEN hPen;
- HBRUSH hBrush;
- wDraw_p drawNext;
- wBool_t hasPalette;
- int paletteClock;
- HBITMAP hBmBackup;
- HDC hDcBackup;
- HBITMAP hBmBackupOld;
- void *background;
- wBool_t bTempMode;
- wBool_t bCopiedMain;
-
- wPos_t lastX;
- wPos_t lastY;
-
- };
+ WOBJ_COMMON
+ HDC hDc;
+ double wFactor;
+ double hFactor;
+ double DPI;
+ wDrawRedrawCallBack_p drawRepaint;
+ wDrawActionCallBack_p action;
+ HBITMAP hBmMain;
+ HBITMAP hBmTemp;
+ HBITMAP hBmOld;
+ HPEN hPen;
+ HBRUSH hBrush;
+ wDraw_p drawNext;
+ wBool_t hasPalette;
+ int paletteClock;
+ HBITMAP hBmBackup;
+ HDC hDcBackup;
+ HBITMAP hBmBackupOld;
+ FIBITMAP *background;
+ wBool_t bTempMode;
+ wBool_t bCopiedMain;
+ wDrawPix_t lastX;
+ wDrawPix_t lastY;
+
+};
extern HINSTANCE mswHInst;
extern char mswTmpBuff[1024];
@@ -156,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 * );
@@ -168,7 +183,7 @@ void mswResize( wWin_p );
wControl_p mswMapIndex( INDEX_T );
void mswButtPush( wControl_p );
void * mswAlloc( wWin_p, wType_e, const char *, int, void *, int * );
-void mswComputePos( wControl_p, wPos_t, wPos_t );
+void mswComputePos( wControl_p, wWinPix_t, wWinPix_t );
void mswAddButton( wControl_p, BOOL_T, const char * );
void mswRepaintLabel( HWND, wControl_p );
int mswRegister( wControl_p );
@@ -178,7 +193,7 @@ void mswSetFocus( wControl_p );
void mswSetTrigger( wControl_p, setTriggerCallback_p );
void mswMenuPush( wControl_p );
void mswCreateCheckBitmaps( void );
-long FAR PASCAL XEXPORT mswDrawPush( HWND, UINT, UINT, LONG );
+LRESULT FAR PASCAL XEXPORT mswDrawPush( HWND, UINT, WPARAM, LPARAM );
#ifdef WIN32
DWORD GetTextExtent( HDC, CHAR *, UINT );
#endif
@@ -186,7 +201,7 @@ void mswRedrawAll( void );
void mswRepaintAll( void );
HDC mswGetPrinterDC( void );
int mswMenuAccelerator( wWin_p, long );
-void mswMenuMove( wMenu_p, wPos_t, wPos_t );
+void mswMenuMove( wMenu_p, wWinPix_t, wWinPix_t );
void mswRegisterBitMap( HBITMAP );
void mswFontInit( void );
void mswInitColorPalette( void );
@@ -202,5 +217,5 @@ void deleteBitmaps( void );
void mswDrawIcon( HDC, int, int, wIcon_p, int, COLORREF, COLORREF );
/* gwin32.c*/
-char *g_win32_getlocale (void);
+char *g_win32_getlocale( void );
diff --git a/app/wlib/mswlib/mswlines.c b/app/wlib/mswlib/mswlines.c
index be1330d..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;
- POS_T minX, maxX, minY, maxY;
+ 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 95ecec3..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,73 +19,75 @@ 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;
- wPos_t * colWidths;
- wBool_t * colRightJust;
- const char * * colTitles;
- wPos_t maxWidth;
- wPos_t scrollPos;
- HWND hScrollWnd;
- wPos_t scrollH;
- wPos_t dragPos;
- int dragCol;
- wPos_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, 0, 0 );
+ }
+ SendMessage( b->hWnd, msg, (WPARAM)0, (LPARAM)0 );
b->last = -1;
b->count = 0;
}
-void wListSetSize( wList_p bl, wPos_t w, wPos_t h )
+void wListSetSize( wList_p bl, wWinPix_t w, wWinPix_t h )
{
int rc;
RECT rect;
- wPos_t y;
+ wWinPix_t y;
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,104 +98,111 @@ void wListSetSize( wList_p bl, wPos_t w, wPos_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 )
- SendMessage( bl->hWnd, LB_SETSEL, 0, MAKELPARAM(bl->last,0) );
- if ( index >= 0 )
- SendMessage( bl->hWnd, LB_SETSEL, 1, MAKELPARAM(index, 0) );
+ if ( bl->last != -1 ) {
+ SendMessage( bl->hWnd, LB_SETSEL, (WPARAM)0, (LPARAM)bl->last );
+ }
+ if ( index >= 0 ) {
+ SendMessage( bl->hWnd, LB_SETSEL, (WPARAM)1, (LPARAM)index );
+ }
} else {
SendMessage( bl->hWnd,
- bl->type==B_LIST?LB_SETCURSEL:CB_SETCURSEL, index, 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),
- bl->last, 0L );
- 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),
- index, 0L );
- 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, 0, (DWORD)(LPSTR)val );
+ SendMessage( bl->hWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)val );
bl->last = -1;
}
}
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), inx,
- (DWORD)(LPSTR)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,15 +212,16 @@ 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 {
msg = CB_GETLBTEXT;
}
}
- cnt = (int)SendMessage( bl->hWnd, msg, inx, (DWORD)(LPSTR)mswTmpBuff );
+ cnt = (int)SendMessage( bl->hWnd, msg, (WPARAM)inx, (LPARAM)mswTmpBuff );
mswTmpBuff[cnt] = '\0';
if (s) {
strncpy(s, mswTmpBuff, siz);
@@ -220,29 +229,32 @@ wIndex_t wListGetValues(
}
if (bl->last >= 0) {
ldp = (listData*)SendMessage( bl->hWnd,
- (bl->type==B_LIST?LB_GETITEMDATA:CB_GETITEMDATA),
- bl->last, 0L );
- 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,
- (DWORD)0L );
+ (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,
- (DWORD)0L );
+ (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,
- (DWORD)(LPSTR)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,
- (DWORD)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,
- (DWORD)0L );
+ 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,
- (DWORD)0L );
+ (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,
- (DWORD)-1L );
+ 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),
- inx, 0L );
+ (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,
- (DWORD)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, 0, 0L );
+ 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),
- inx, 0L );
+ (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),
- inx, 0L );
+ (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,
- (DWORD)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,
- (DWORD)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,
- (DWORD)ldp );
+ (UINT)b->type==B_LIST?LB_SETITEMDATA:CB_SETITEMDATA,
+ (WPARAM)nindex,
+ (LPARAM)ldp );
return nindex;
}
int wListGetColumnWidths(
- wList_p bl,
- int colCnt,
- wPos_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,
- wPos_t x,
- wPos_t y )
+ wControl_p b,
+ wWinPix_t x,
+ wWinPix_t y )
{
wList_p bl = (wList_p)b;
- wPos_t x1, y1;
+ 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;
@@ -492,11 +516,12 @@ static void listRepaintLabel(
const char * * title;
int inx;
int start;
- wPos_t colWidth;
+ 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, 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,15 +609,15 @@ 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;
- long len;
+ size_t len;
listData * ldp;
HDC hDc;
LPMEASUREITEMSTRUCT lpmis;
@@ -597,7 +625,8 @@ LRESULT listProc(
LPDRAWITEMSTRUCT lpdis;
RECT rc, rc1;
char * cp0, * cp1;
- wPos_t colWidth, x;
+ wWinPix_t x;
+ int colWidth;
int nPos;
HFONT hFont;
HPEN hPen;
@@ -606,353 +635,388 @@ 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, inx, 0L );
- if ( ldp != NULL && ldp != (void*)LB_ERR ) {
- selected = ((long)SendMessage( bl->hWnd, LB_GETSEL, inx, 0L ) != 0L );
- if ( selected != ldp->selected ) {
- ldp->selected = selected;
- if ( selected ) {
- bl->last = inx;
- cnt = (int)SendMessage( bl->hWnd, LB_GETTEXT, bl->last, (DWORD)(LPSTR)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, 0, 0L );
- cnt = (int)SendMessage( bl->hWnd, LB_GETTEXT, bl->last,
- (DWORD)(LPSTR)mswTmpBuff );
- mswTmpBuff[cnt] = '\0';
if (bl->action) {
- ldp = (listData*)SendMessage( bl->hWnd, LB_GETITEMDATA,
- bl->last, 0L );
+ 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, 0, 0L ) )
- (void)SendMessage( bl->hWnd, LB_SETCURSEL, bl->last, 0L );
- 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, 0, 0L );
- 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, bl->last,
- (DWORD)(LPSTR)mswTmpBuff );
- ldp = (listData*)SendMessage( bl->hWnd, CB_GETITEMDATA,
- bl->last, 0L );
- 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, 0, 0L );
- if ( bl->last != inx )
- (void)SendMessage( bl->hWnd, CB_SETCURSEL, bl->last, 0L );
- 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, sizeof mswTmpBuff,
- (DWORD)(LPSTR)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),
- lpdis->itemID, 0L );
- 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),
- lpdis->itemID, (LONG)(LPSTR)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 TRUE;
- }
-
- break;
- case WM_HSCROLL:
- len = ((long)bl->maxWidth)-((long)bl->w);
- if ( len <= 0 )
- return 0;
- switch ( WSCROLL_PARAM_CODE ) {
- case SB_LEFT:
- if ( bl->scrollPos == 0 )
- return 0;
- bl->scrollPos = 0;
break;
- case SB_LINELEFT:
- case SB_PAGELEFT:
- if ( bl->scrollPos == 0 )
- return 0;
- for ( inx=colWidth=0; inx<bl->colCnt; inx++ ) {
- if ( colWidth+bl->colWidths[inx] >= bl->scrollPos ) {
- bl->scrollPos = colWidth;
- break;
- }
- colWidth += bl->colWidths[inx];
+
+ case WM_HSCROLL:
+ len = ((long)bl->maxWidth)-((long)bl->w);
+ if ( len <= 0 ) {
+ return (LRESULT)0;
}
- break;
- case SB_LINERIGHT:
- case SB_PAGERIGHT:
- if ( bl->scrollPos >= len )
- return 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;
+ }
+ 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];
}
- 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;
+ case SB_THUMBPOSITION:
+ nPos = (int)WSCROLL_PARAM_NPOS;
+ bl->scrollPos = (int)(len*nPos/100);
+ break;
+ case SB_ENDSCROLL:
+ return (LRESULT)0;
}
- break;
- case SB_RIGHT:
- if ( bl->scrollPos >= len )
- return 0;
- bl->scrollPos = (int)len;
- break;
- case SB_THUMBTRACK:
- return 0;
- case SB_THUMBPOSITION:
- nPos = (int)WSCROLL_PARAM_NPOS;
- bl->scrollPos = (int)(len*nPos/100);
- break;
- case SB_ENDSCROLL:
- return 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 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 0L;
+ 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 0L;
+ }
+ 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 0L;
- }
-
return DefWindowProc( hWnd, message, wParam, lParam );
-}
+}
-long FAR PASCAL _export pushList(
- HWND hWnd,
- UINT message,
- UINT wParam,
- LONG lParam )
+LRESULT FAR PASCAL _export pushList(
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
/* Catch <Return> and cause focus to leave control */
-#ifdef WIN32
+ wIndex_t inx = (wIndex_t)GetWindowLongPtr(hWnd, GWL_ID);
+ wControl_p b = mswMapIndex(inx);
+#ifdef OLDCODE
long inx = GetWindowLong( hWnd, GWL_ID );
-#else
- short inx = GetWindowWord( hWnd, GWW_ID );
-#endif
wControl_p b = mswMapIndex( inx );
+#endif
switch (message) {
case WM_CHAR:
@@ -961,12 +1025,12 @@ long 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 0L;
+ return (LRESULT)0;
}
}
break;
@@ -974,18 +1038,14 @@ long FAR PASCAL _export pushList(
return CallWindowProc( oldListProc, hWnd, message, wParam, lParam );
}
-long FAR PASCAL _export pushCombo(
- HWND hWnd,
- UINT message,
- UINT wParam,
- LONG lParam )
+LRESULT FAR PASCAL _export pushCombo(
+ HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam )
{
/* Catch <Return> and cause focus to leave control */
-#ifdef WIN32
- long inx = GetWindowLong( hWnd, GWL_ID );
-#else
- short inx = GetWindowWord( hWnd, GWW_ID );
-#endif
+ wIndex_t inx = (wIndex_t)GetWindowLongPtr( hWnd, GWL_ID );
wControl_p b = mswMapIndex( inx );
switch (message) {
@@ -995,12 +1055,12 @@ long 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 0L;
+ return (LRESULT)0;
}
}
break;
@@ -1009,37 +1069,39 @@ long 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,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- POS_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;
@@ -1054,18 +1116,14 @@ 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)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;
}
-#ifdef CONTROL3D
- Ctl3dSubclassCtl( b->hWnd );
-#endif
-
GetWindowRect( b->hWnd, &rect );
b->w = rect.right - rect.left;
b->h = rect.bottom - rect.top;
@@ -1078,40 +1136,49 @@ static wList_p listCreate(
if (addFocus) {
mswChainFocus( (wControl_p)b );
if (b->type == B_LIST) {
- newListProc = MakeProcInstance( (XWNDPROC)pushList, mswHInst );
- oldListProc = (XWNDPROC)GetWindowLong( b->hWnd, GWL_WNDPROC );
- SetWindowLong( b->hWnd, GWL_WNDPROC, (LONG)newListProc );
+ newListProc = MakeProcInstance((XWNDPROC)pushList, mswHInst);
+ oldListProc = (XWNDPROC)GetWindowLongPtr(b->hWnd, GWLP_WNDPROC);
+ SetWindowLongPtr(b->hWnd, GWLP_WNDPROC, (LONG_PTR)newListProc);
+#ifdef _OLDCODE
+ oldListProc = (XWNDPROC)GetWindowLong(b->hWnd, GWL_WNDPROC);
+ SetWindowLong(b->hWnd, GWL_WNDPROC, (LONG)newListProc);
+#endif
} else {
- newComboProc = MakeProcInstance( (XWNDPROC)pushCombo, mswHInst );
- oldComboProc = (XWNDPROC)GetWindowLong( b->hWnd, GWL_WNDPROC );
- SetWindowLong( b->hWnd, GWL_WNDPROC, (LONG)newComboProc );
+ newComboProc = MakeProcInstance((XWNDPROC)pushCombo, mswHInst);
+ oldComboProc = (XWNDPROC)GetWindowLongPtr(b->hWnd, GWLP_WNDPROC);
+ SetWindowLongPtr(b->hWnd, GWLP_WNDPROC, (LONG_PTR)newComboProc);
+#ifdef _OLDCODE
+ oldComboProc = (XWNDPROC)GetWindowLong(b->hWnd, GWL_WNDPROC);
+ SetWindowLong(b->hWnd, GWL_WNDPROC, (LONG)newComboProc);
+#endif
}
}
- if ( indexR )
+ if ( indexR ) {
*indexR = index;
- if ( !mswThickFont )
- SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, 0L );
+ }
+
+ SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0 );
return b;
}
wList_p wListCreate(
- wWin_p parent,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- POS_T width,
- int colCnt,
- wPos_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;
@@ -1120,25 +1187,28 @@ 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 = (int*)malloc( colCnt * sizeof *bl->colWidths );
+ bl->colWidths = (wWinPix_t*)malloc( colCnt * sizeof *bl->colWidths );
bl->colRightJust = (wBool_t*)malloc( colCnt * sizeof *bl->colRightJust );
bl->colTitles = colTitles;
bl->maxWidth = 0;
@@ -1148,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)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;
@@ -1162,49 +1234,52 @@ wList_p wListCreate(
wList_p wDropListCreate(
- wWin_p parent,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- POS_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,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- long number,
- POS_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 d56e24d..0a2851d 100644
--- a/app/wlib/mswlib/mswmenu.c
+++ b/app/wlib/mswlib/mswmenu.c
@@ -18,20 +18,18 @@
*
* 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>
#include <ctype.h>
#include <assert.h>
-#include "misc.h"
#include "mswint.h"
#include "i18n.h"
@@ -49,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 */
@@ -62,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;
- wMenuToggleCallBack_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)
@@ -140,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;
@@ -166,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)
- ((wMenuToggle_p)m)->action(set, ((wMenuPush_p)m)->data);
+ 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 0L;
+ 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 );
}
@@ -199,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;
@@ -255,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;
-dynArr_t acclTable_da;
+ 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 );
@@ -293,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 ) {
@@ -350,132 +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 */
-
- /* 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);
-
- 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);
-
+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);
+ 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);
+
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.top = (bmCheckbox.bmHeight / 3) + 1;
- rc.bottom = (bmCheckbox.bmHeight / 3) * 2;
+ rc.left = (bmCheckbox.bmWidth / 4);
+ rc.right = (bmCheckbox.bmWidth / 4) * 2;
+ rc.top = (bmCheckbox.bmHeight / 3);
+ rc.bottom = (bmCheckbox.bmHeight / 3) * 2;
break;
case RADIOUNCHECK:
- rc.top = (bmCheckbox.bmHeight / 3) + 1;
- rc.bottom = (bmCheckbox.bmHeight / 3) * 2;
- rc.left = 0;
- rc.right = (bmCheckbox.bmWidth / 4);
+ rc.top = (bmCheckbox.bmHeight / 3);
+ 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
- {
- BitBlt(hdcTarget, 0, 0, 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;
-}
+
+ /* 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;
+}
void mswCreateCheckBitmaps()
{
@@ -487,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;
@@ -536,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;
}
@@ -545,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 ));
@@ -562,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;
@@ -620,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;
}
@@ -632,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;
@@ -655,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)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 );
@@ -678,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;
@@ -689,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;
@@ -698,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 );
@@ -727,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:
@@ -740,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;
@@ -752,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) {
@@ -770,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 );
@@ -812,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;
@@ -852,13 +874,13 @@ void wMenuListClear(
wMenuToggle_p wMenuToggleCreate(
- wMenu_p m,
- const char * helpStr,
- const char * labelStr,
- long acclKey,
- wBool_t set,
- wMenuToggleCallBack_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;
@@ -868,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;
@@ -909,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;
}
@@ -922,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;
-}
+}
/*
*****************************************************************************
@@ -957,39 +984,40 @@ void wMenuToggleEnable(
void mswMenuMove(
- wMenu_p m,
- wPos_t x,
- wPos_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,
- POS_T x,
- POS_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;
@@ -1002,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;
@@ -1021,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;
@@ -1041,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)m->menu, labelStr );
+ rc = AppendMenu( menu, MF_STRING|MF_POPUP|MF_ENABLED, (UINT_PTR)(m->menu),
+ labelStr );
DrawMenuBar( ((wControl_p)w)->hWnd );
return m;
@@ -1050,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;
@@ -1081,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;
@@ -1106,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;
@@ -1118,7 +1148,7 @@ wBool_t wMenuAction(
} else {
set = wMenuToggleGet( mt );
wMenuToggleSet( mt, !set );
- mt->action( set, mt->data );
+ mt->action( mt->data );
}
break;
case M_MENU:
diff --git a/app/wlib/mswlib/mswmisc.c b/app/wlib/mswlib/mswmisc.c
index 6b5f1c9..4bf9481 100644
--- a/app/wlib/mswlib/mswmisc.c
+++ b/app/wlib/mswlib/mswmisc.c
@@ -17,21 +17,20 @@
*
* 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>
#include <stdio.h>
#include <assert.h>
#include <htmlhelp.h>
-#include "misc.h"
#include "mswint.h"
#include "i18n.h"
#include "FreeImage.h"
@@ -45,6 +44,7 @@
#define OFN_LONGFILENAMES 0x00200000L
char * mswStrdup(const char *);
+const char * GetCurCommandName(void);
#define PAUSE_TIMER (901)
#define ALARM_TIMER (902)
@@ -61,15 +61,14 @@ char * mswStrdup(const char *);
#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
/*
* EXPORTED VARIABLES
*/
-long debugWindow = 0;
HINSTANCE mswHInst;
HWND mswHWnd = (HWND)0;
@@ -77,37 +76,40 @@ const char *mswDrawWindowClassName = "DRAWWINDOW";
char mswTmpBuff[1024];
int mswEditHeight;
int mswAllowBalloonHelp = TRUE;
-int mswGroupStyle;
HFONT mswOldTextFont;
HFONT mswLabelFont;
-long mswThickFont = 1;
double mswScale = 1.0;
-double scaleIcon = 1.0; /**< Scaling factor for toolbar icons */
-
callBacks_t *mswCallBacks[CALLBACK_CNT];
-void closeBalloonHelp(void);
+void closeBalloonHelp(int inx);
static wControl_p getControlFromCursor(HWND, wWin_p *);
+
+#ifdef BALLOON_TRACE
+// To use:
+// change logFile defn in lprintf.c from static to EXPORT
+// Run with some debug flag set to ensure logFile is set
+extern FILE * logFile;
+#endif
/*
* LOCAL VARIABLES
*/
struct wWin_t {
- WOBJ_COMMON
- int validGeometry;
- int min_width;
- int max_width;
- int min_height;
- int max_height;
- wPos_t lastX, lastY;
- wPos_t padX, padY;
+ 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;
wWinCallBack_p winProc;
BOOL_T busy;
#ifdef OWNERICON
HBITMAP wicon_bm;
- wPos_t wicon_w, wicon_h;
+ wWinPix_t wicon_w, wicon_h;
#endif
DWORD baseStyle;
wControl_p focusChainFirst;
@@ -131,15 +133,15 @@ static int mResizeBorderH;
static int mMenuH;
static int screenWidth = 0, screenHeight = 0;
-wWin_p mswWin = NULL;
-wWin_p winFirst, winLast;
+static wWin_p mswWin = NULL;
+static wWin_p winFirst, winLast;
static long count51 = 0;
-static UINT alarmTimer;
-static UINT pauseTimer;
-static UINT balloonHelpTimer = (UINT)0;
-static UINT triggerTimer;
+static UINT_PTR alarmTimer;
+static UINT_PTR pauseTimer;
+static UINT_PTR balloonHelpTimer = (UINT_PTR)0;
+static UINT_PTR triggerTimer;
static UINT balloonHelpTimeOut = 500;
static wControl_p balloonHelpButton = NULL;
@@ -160,7 +162,7 @@ static DWORD dwCookie;
typedef struct {
wControl_p b;
} controlMap_t;
-dynArr_t controlMap_da;
+static dynArr_t controlMap_da;
#define controlMap(N) DYNARR_N(controlMap_t,controlMap_da,N)
@@ -170,15 +172,11 @@ char *mswProfileFile;
static wBalloonHelp_t * balloonHelpStrings;
-static wCursor_t curCursor = wCursorNormal;
-
#ifdef HELPSTR
static FILE * helpStrF;
#endif
static int inMainWndProc = FALSE;
-int newHelp = 1;
-
static wBool_t mswWinBlockEnabled = TRUE;
static FILE * dumpControlsF;
@@ -187,19 +185,21 @@ static int dumpControls;
extern char *userLocale;
// list of supported fileformats for image files
-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 (*)"),
- "*",
- };
+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 (*)"),
+ "*",
+ };
+
+static HICON hWindowIcon;
/*
*****************************************************************************
@@ -251,8 +251,8 @@ static void doDumpControls(void)
b = controlMap(inx).b;
if (b) {
- fprintf(dumpControlsF, "[%0.3d] [%x] %s %s %s\n", inx,
- (unsigned int)b->hWnd,
+ fprintf(dumpControlsF, "[%0.3d] [%p] %s %s %s\n", inx,
+ b->hWnd,
(b->type>=0&&b->type<=B_BOX?controlNames[b->type]:"NOTYPE"),
(b->labelStr?b->labelStr:"<NULL>"),
(b->helpStr?b->helpStr:"<NULL>"));
@@ -303,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, 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);
@@ -313,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, strlen(b->labelStr))) {
+ if (!TextOut(hDc, b->labelX, b->labelY, b->labelStr,
+ (int)(strlen(b->labelStr)))) {
mswFail("Repainting text label");
}
@@ -376,14 +378,16 @@ void * mswAlloc(
w->data = data;
w->focusChainNext = NULL;
w->shown = TRUE;
+ w->hilite = FALSE;
+ w->errStr = NULL;
return w;
}
void mswComputePos(
wControl_p b,
- wPos_t origX,
- wPos_t origY)
+ wWinPix_t origX,
+ wWinPix_t origY)
{
wWin_p w = b->parent;
@@ -403,14 +407,14 @@ void mswComputePos(
b->labelY = b->y+2;
if (b->labelStr) {
- int lab_l;
+ size_t lab_l;
HDC hDc;
DWORD dw;
LABELFONTDECL
hDc = GetDC(w->hWnd);
LABELFONTSELECT
lab_l = strlen(b->labelStr);
- dw = GetTextExtent(hDc, CAST_AWAY_CONST b->labelStr, lab_l);
+ dw = GetTextExtent(hDc, CAST_AWAY_CONST b->labelStr, (UINT)lab_l);
b->labelX -= LOWORD(dw) + 5;
LABELFONTRESET
ReleaseDC(w->hWnd, hDc);
@@ -557,7 +561,7 @@ void mswSetFocus(
b->parent->focusChainNext = b;
}
}
-
+
/*
******************************************************************************
*
@@ -569,10 +573,10 @@ void mswSetFocus(
static void getSavedSizeAndPos(
long option,
const char * nameStr,
- wPos_t *rw,
- wPos_t *rh,
- wPos_t *rx,
- wPos_t *ry,
+ wWinPix_t *rw,
+ wWinPix_t *rh,
+ wWinPix_t *rx,
+ wWinPix_t *ry,
int *showCmd)
{
char *cq;
@@ -580,14 +584,29 @@ static void getSavedSizeAndPos(
if ((option&F_RECALLPOS) && nameStr) {
int x, y, w, h;
+ 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;
+ //}
+
if ((option & F_RESIZE) &&
(cp = wPrefGetStringBasic("msw window size", nameStr)) &&
- (state = (int)strtol(cp, &cq, 10), cp != cq) && // state is not used
- (cp = cq, w = (wPos_t)strtod(cp, &cq), cp != cq) &&
- (cp = cq, h = (int)strtod(cp, &cq), cp != cq)
+ (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)
) {
if (w < 10) {
w = 10;
@@ -597,12 +616,12 @@ static void getSavedSizeAndPos(
h = 10;
}
- if (w > screenWidth) {
- w = screenWidth;
+ if (w > screenWidth - xadj) {
+ w = screenWidth - xadj;
}
- if (h > screenHeight) {
- h = screenHeight;
+ if (h > screenHeight - yadj) {
+ h = screenHeight - yadj;
}
*rw = w;
@@ -610,8 +629,8 @@ static void getSavedSizeAndPos(
}
if ((cp = wPrefGetStringBasic("msw window pos", nameStr)) &&
- (x = (wPos_t)strtod(cp, &cq), cp != cq) &&
- (cp = cq, y = (wPos_t)strtod(cp, &cq), cp != cq)
+ (x = (wWinPix_t)(strtod(cp, &cq)), cp != cq) &&
+ (cp = cq, y = (wWinPix_t)(strtod(cp, &cq)), cp != cq)
) {
if (y < 0) {
y = 0;
@@ -621,12 +640,17 @@ static void getSavedSizeAndPos(
x = 0;
}
- if (y > screenHeight-40) {
- y = screenHeight-40;
+ // Make sure we can see the dialog
+ xadj += 100;
+ yadj += 100;
+
+
+ if (y + h > screenHeight - yadj) {
+ y = screenHeight - yadj - h;
}
- if (x > screenWidth-40) {
- x = screenWidth-40;
+ if (x + w > screenWidth - xadj) {
+ x = screenWidth - xadj - w;
}
*rx = x;
@@ -636,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
@@ -647,21 +671,21 @@ static void getSavedSizeAndPos(
* \param aspect_ration IN unused on Windows
*/
void wSetGeometry(wWin_p win,
- int min_width,
- int max_width,
- int min_height,
- int max_height,
- int base_width,
- int 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;
}
/**
@@ -671,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
*/
@@ -690,15 +714,15 @@ static wWin_p winCommonCreate(
long style,
const char * labelStr,
wWinCallBack_p winProc,
- wPos_t w,
- wPos_t h,
+ wWinPix_t w,
+ wWinPix_t h,
void * data,
const char * nameStr,
int * pShowCmd)
{
wWin_p win;
int index;
- wPos_t ww, hh, xx, yy;
+ wWinPix_t ww, hh, xx, yy;
RECT rect;
win = (wWin_p)mswAlloc(NULL, typ, mswStrdup(labelStr), sizeof *win, data,
&index);
@@ -715,6 +739,8 @@ 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
}
if (xx != CW_USEDEFAULT) {
@@ -774,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();
}
@@ -806,8 +836,8 @@ void wInitAppName(char *_appName)
wWin_p wWinMainCreate(
const char * name,
- POS_T x,
- POS_T y,
+ wWinPix_t x,
+ wWinPix_t y,
const char * helpStr,
const char * labelStr,
const char * nameStr,
@@ -816,7 +846,6 @@ wWin_p wWinMainCreate(
void * data)
{
wWin_p w;
- RECT rect;
const char * appDir;
const char * libDir;
int showCmd;
@@ -825,7 +854,7 @@ wWin_p wWinMainCreate(
TEXTMETRIC tm;
char *pos;
char * configName;
- long maximize;
+ long maximize;
/* check for configuration name */
if (pos = strchr(name, ';')) {
@@ -862,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",
@@ -877,26 +901,22 @@ wWin_p wWinMainCreate(
nameStr, &showCmd);
mswHWnd = w->hWnd;
- if (!mswThickFont) {
- SendMessage(w->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, 0L);
- hDc = GetDC(w->hWnd);
- GetTextMetrics(hDc, &tm);
- mswEditHeight = tm.tmHeight+2;
- ReleaseDC(w->hWnd, hDc);
- }
+ SendMessage(mswHWnd, WM_SETFONT, (WPARAM)mswLabelFont, (LPARAM)0);
+ hDc = GetDC(mswHWnd);
+ GetTextMetrics(hDc, &tm);
+ mswEditHeight = tm.tmHeight+2;
+ ReleaseDC(mswHWnd, hDc);
- ShowWindow(w->hWnd, showCmd);
- UpdateWindow(w->hWnd);
- GetWindowRect(w->hWnd, &rect);
- GetClientRect(w->hWnd, &rect);
+ ShowWindow(mswHWnd, showCmd);
+ UpdateWindow(mswHWnd);
w->busy = FALSE;
return w;
}
wWin_p wWinPopupCreate(
wWin_p parent,
- POS_T x,
- POS_T y,
+ wWinPix_t x,
+ wWinPix_t y,
const char * helpStr,
const char * labelStr,
const char * nameStr,
@@ -1077,7 +1097,7 @@ static wAccelKey_e translateExtKey(UINT wParam)
}
-long notModKey;
+static long notModKey;
int mswTranslateAccelerator(
HWND hWnd,
LPMSG pMsg)
@@ -1091,7 +1111,7 @@ int mswTranslateAccelerator(
return FALSE;
}
- acclKey = pMsg->wParam;
+ acclKey = (long)pMsg->wParam;
b = getControlFromCursor(pMsg->hwnd, &win);
if (win == NULL) {
@@ -1112,7 +1132,7 @@ int mswTranslateAccelerator(
}
if (acclKey == (long)VK_F1) {
- closeBalloonHelp();
+ closeBalloonHelp(1);
if (!b && win) {
wHelp(win->helpStr);
@@ -1162,14 +1182,14 @@ int mswTranslateAccelerator(
-void wGetDisplaySize(POS_T * width, POS_T * height)
+void wGetDisplaySize(wWinPix_t * width, wWinPix_t * height)
{
*width = screenWidth;
*height = screenHeight;
}
-void wWinGetSize(wWin_p w, POS_T * width, POS_T * height)
+void wWinGetSize(wWin_p w, wWinPix_t * width, wWinPix_t * height)
{
RECT rect;
GetWindowRect(w->hWnd, &rect);
@@ -1181,7 +1201,7 @@ void wWinGetSize(wWin_p w, POS_T * width, POS_T * height)
}
-void wWinSetSize(wWin_p w, POS_T width, POS_T height)
+void wWinSetSize(wWin_p w, wWinPix_t width, wWinPix_t height)
{
RECT rect;
w->w = width;
@@ -1224,33 +1244,24 @@ static void blockingLoop(void)
static void savePos(wWin_p win)
{
- WINDOWPLACEMENT windowPlace;
- wPos_t w, h;
+ wWinPix_t w, h;
RECT rect;
if (win->nameStr &&
IsWindowVisible(win->hWnd) /*&& !IsIconic( win->hWnd )*/) {
- windowPlace.length = sizeof windowPlace;
- GetWindowPlacement(win->hWnd, &windowPlace);
+ GetWindowRect(win->hWnd, &rect);
if (win->option&F_RECALLPOS) {
char posStr[20];
wsprintf(posStr, "%d %d",
- windowPlace.rcNormalPosition.left,
- windowPlace.rcNormalPosition.top);
+ rect.left,
+ rect.top);
wPrefSetString("msw window pos", win->nameStr, posStr);
if (win->option&F_RESIZE) {
GetClientRect(win->hWnd, &rect);
- w = windowPlace.rcNormalPosition.right - windowPlace.rcNormalPosition.left;
- h = windowPlace.rcNormalPosition.bottom - windowPlace.rcNormalPosition.top;
- w -= mResizeBorderW*2;
- h -= mResizeBorderH*2 + mTitleH;
-
- if (win->option&F_MENUBAR) {
- h -= mMenuH;
- }
-
+ w = rect.right - rect.left;
+ h = rect.bottom - rect.top;
wsprintf(posStr, "%d %d %d",
0, // unused
w, h);
@@ -1265,7 +1276,7 @@ void wWinShow(
wWin_p win,
BOOL_T show)
{
- wPos_t x, y;
+ wWinPix_t x, y;
wWin_p win1;
win->busy = TRUE;
@@ -1292,6 +1303,11 @@ void wWinShow(
win->centerWin = FALSE;
win->shown = TRUE;
+ // 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);
@@ -1429,73 +1445,13 @@ const char * wWinGetTitle(
void wWinClear(
wWin_p win,
- wPos_t x,
- wPos_t y,
- wPos_t width,
- wPos_t height)
+ wWinPix_t x,
+ wWinPix_t y,
+ wWinPix_t width,
+ wWinPix_t height)
{
}
-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;
- }
-
- curCursor = cursor;
-}
void wWinDoCancel(wWin_p win)
{
@@ -1667,44 +1623,44 @@ const char * wControlGetHelp(wControl_p b)
}
-wPos_t wLabelWidth(const char * labelStr)
+wWinPix_t wLabelWidth(const char * labelStr)
{
- int lab_l;
+ size_t lab_l;
HDC hDc;
DWORD dw;
LABELFONTDECL
hDc = GetDC(mswHWnd);
lab_l = strlen(labelStr);
LABELFONTSELECT
- dw = GetTextExtent(hDc, CAST_AWAY_CONST labelStr, lab_l);
+ dw = GetTextExtent(hDc, CAST_AWAY_CONST labelStr, (UINT)lab_l);
LABELFONTRESET
ReleaseDC(mswHWnd, hDc);
return LOWORD(dw) + 5;
}
-wPos_t wControlGetWidth(
+wWinPix_t wControlGetWidth(
wControl_p b) /* Control */
{
return b->w;
}
-wPos_t wControlGetHeight(
+wWinPix_t wControlGetHeight(
wControl_p b) /* Control */
{
return b->h;
}
-wPos_t wControlGetPosX(
+wWinPix_t wControlGetPosX(
wControl_p b) /* Control */
{
return b->x;
}
-wPos_t wControlGetPosY(
+wWinPix_t wControlGetPosY(
wControl_p b) /* Control */
{
return b->y;
@@ -1713,21 +1669,21 @@ wPos_t wControlGetPosY(
void wControlSetPos(
wControl_p b,
- wPos_t x,
- wPos_t y)
+ wWinPix_t x,
+ wWinPix_t y)
{
b->labelX = x;
b->labelY = y+2;
if (b->labelStr) {
- int lab_l;
+ size_t lab_l;
HDC hDc;
DWORD dw;
LABELFONTDECL
hDc = GetDC(b->parent->hWnd);
LABELFONTSELECT
lab_l = strlen(b->labelStr);
- dw = GetTextExtent(hDc, CAST_AWAY_CONST b->labelStr, lab_l);
+ dw = GetTextExtent(hDc, CAST_AWAY_CONST b->labelStr, (UINT)lab_l);
b->labelX -= LOWORD(dw) + 5;
LABELFONTRESET
ReleaseDC(b->parent->hWnd, hDc);
@@ -1757,14 +1713,14 @@ void wControlSetLabel(
if (b->type == B_RADIO ) {
;
} else {
- int lab_l;
+ size_t lab_l;
HDC hDc;
DWORD dw;
LABELFONTDECL
hDc = GetDC(b->parent->hWnd);
lab_l = strlen(labelStr);
LABELFONTSELECT
- dw = GetTextExtent(hDc, CAST_AWAY_CONST labelStr, lab_l);
+ dw = GetTextExtent(hDc, CAST_AWAY_CONST labelStr, (UINT)lab_l);
LABELFONTRESET
b->labelX = b->x - LOWORD(dw) - 5;
ReleaseDC(b->parent->hWnd, hDc);
@@ -1791,33 +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 (!IsWindowVisible(b->parent->hWnd)) {
+ if ((b->parent==NULL) || (!IsWindowVisible(b->parent->hWnd))
+ || (!IsWindowVisible(b->hWnd))) {
+ b->hilite = FALSE;
return;
}
- if (!IsWindowVisible(b->hWnd)) {
+ 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);
@@ -1840,7 +1799,7 @@ void wMessage(
{
HDC hDc;
int oldRop;
- POS_T h;
+ wWinPix_t h;
RECT rect;
LABELFONTDECL
@@ -1855,30 +1814,30 @@ void wMessage(
Rectangle(hDc, 0, h, w->w, h);
SetROP2(hDc, oldRop);
LABELFONTSELECT
- TextOut(hDc, 0, h, msg, strlen(msg));
+ TextOut(hDc, 0, h, msg, (int)(strlen(msg)));
LABELFONTRESET
ReleaseDC(w->hWnd, hDc);
}
/**
* 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 ((int)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)
@@ -1886,7 +1845,6 @@ void wExit(int rc)
INDEX_T inx;
wControl_p b;
mswPutCustomColors();
- wPrefFlush();
for (inx=controlMap_da.cnt-1; inx>=0; inx--) {
b = controlMap(inx).b;
@@ -1903,6 +1861,8 @@ void wExit(int rc)
}
}
+ wPrefFlush("");
+
for (inx=controlMap_da.cnt-1; inx>=0; inx--) {
b = controlMap(inx).b;
@@ -1923,7 +1883,7 @@ void wExit(int rc)
}
if (helpInitted) {
- WinHelp(mswHWnd, helpFile, HELP_QUIT, 0L);
+ WinHelp(mswHWnd, helpFile, HELP_QUIT, (DWORD)0);
helpInitted = FALSE;
}
@@ -2155,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.
*/
@@ -2165,14 +2125,14 @@ void wHelp(
{
char *pszHelpTopic;
HWND hwndHelp;
- char *theTopic = "index";
+ const char *theTopic = "index";
- if (topic) {
- theTopic = topic;
- }
+ if (topic) {
+ theTopic = topic;
+ }
if (!helpInitted) {
- HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD)&dwCookie) ;
+ HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD_PTR)&dwCookie) ;
helpInitted = TRUE;
}
@@ -2199,11 +2159,12 @@ void doHelpMenu(void * context)
HH_FTS_QUERY ftsQuery;
if (!helpInitted) {
- HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD)&dwCookie) ;
+ HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD_PTR)&dwCookie) ;
helpInitted = TRUE;
}
- switch ((int)(long)context) {
+ const char * topic;
+ switch ((int)(INT_PTR)context) {
case 1: /* Contents */
HtmlHelp(mswHWnd, helpFile, HH_DISPLAY_TOC, (DWORD_PTR)NULL);
break;
@@ -2215,15 +2176,14 @@ void doHelpMenu(void * context)
ftsQuery.fTitleOnly = FALSE;
ftsQuery.pszSearchQuery = NULL;
ftsQuery.pszWindow = NULL;
- HtmlHelp(mswHWnd, helpFile, HH_DISPLAY_SEARCH,(DWORD)&ftsQuery);
+ HtmlHelp(mswHWnd, helpFile, HH_DISPLAY_SEARCH,(DWORD_PTR)&ftsQuery);
break;
case 3: /*Context*/
- const char * topic;
- topic = GetCurCommandName();
- wHelp(topic);
- break;
+ topic = GetCurCommandName();
+ wHelp(topic);
+ break;
default:
return;
@@ -2232,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(
@@ -2267,88 +2228,108 @@ void wControlSetBalloonText(wControl_p b, const char * text)
b->tipStr = mswStrdup(text);
}
-
-void startBalloonHelp(void)
+void openBalloonHelp(wControl_p b, int dx, int dy)
{
HDC hDc;
DWORD extent;
RECT rect;
POINT pt;
- wBalloonHelp_t * bh;
- const char * hs;
HFONT hFont;
-
- if (!balloonHelpStrings) {
- return;
+ 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);
+#endif
+ return;
+ }
}
-
- if (!balloonHelpEnable) {
+#ifdef BALLOON_TRACE
+ 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 (balloonHelpHWnd) {
- if (balloonHelpButton->tipStr) {
- hs = balloonHelpButton->tipStr;
- } else {
- hs = balloonHelpButton->helpStr;
-
- if (!hs) {
- return;
- }
+ if (b->type == B_RADIO ||
+ b->type == B_TOGGLE) {
+ pt.y = b->h;
+ } else {
+ GetClientRect(b->hWnd, &rect);
+ pt.y = rect.bottom;
+ }
- for (bh = balloonHelpStrings; bh->name && strcmp(bh->name,hs) != 0; bh++);
+ pt.x = dx;
+ pt.y -= dy;
+ ClientToScreen(b->hWnd, &pt);
- if (!bh->name || !bh->value) {
- return;
- }
+ if (pt.x + w + 2 > screenWidth) {
+ pt.x = screenWidth - (w + 2);
+ }
- balloonHelpButton->tipStr = hs = bh->value;
- }
+ if (pt.x < 0) {
+ pt.x = 0;
+ }
- if (newHelp) {
- wControlSetBalloon(balloonHelpButton, 0, 0, hs);
- } else {
- int w, h;
- hDc = GetDC(balloonHelpHWnd);
- hFont = SelectObject(hDc, mswLabelFont);
- extent = GetTextExtent(hDc, CAST_AWAY_CONST hs, strlen(hs));
- w = LOWORD(extent);
- h = HIWORD(extent);
- pt.x = 0;
-
- if (balloonHelpButton->type == B_RADIO ||
- balloonHelpButton->type == B_TOGGLE) {
- pt.y = balloonHelpButton->h;
- } else {
- GetClientRect(balloonHelpButton->hWnd, &rect);
- pt.y = rect.bottom;
- }
+ 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;
+}
- ClientToScreen(balloonHelpButton->hWnd, &pt);
- if (pt.x + w+2 > screenWidth) {
- pt.x = screenWidth-(w+2);
- }
- if (pt.x < 0) {
- pt.x = 0;
- }
+void startBalloonHelp(void)
+{
+ wBalloonHelp_t * bh;
- SetWindowPos(balloonHelpHWnd, HWND_TOPMOST, pt.x, pt.y, w+6, h+4,
- SWP_SHOWWINDOW|SWP_NOACTIVATE);
- SetBkColor(hDc, GetSysColor(COLOR_INFOBK));
- TextOut(hDc, 2, 1, hs, strlen(hs));
- SelectObject(hDc, hFont);
- ReleaseDC(balloonHelpHWnd, hDc);
+ 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(void)
+
+void closeBalloonHelp(int inx)
{
+#ifdef BALLOON_TRACE
+ fprintf(logFile, "closeBallonHelp %d state=%d\n", inx, balloonHelpState);
+ fflush(logFile);
+#endif
if (balloonHelpTimer) {
KillTimer(mswHWnd, balloonHelpTimer);
- balloonHelpTimer = 0;
+ balloonHelpTimer = (UINT_PTR)0;
}
if (balloonHelpState == balloonHelpShow)
@@ -2360,56 +2341,26 @@ void closeBalloonHelp(void)
}
-void wControlSetBalloon(wControl_p b, wPos_t dx, wPos_t dy, const char * msg)
+void wControlSetBalloon(wControl_p b, wWinPix_t dx, wWinPix_t dy,
+ const char * msg)
{
- HDC hDc;
- DWORD extent;
- RECT rect;
- POINT pt;
- HFONT hFont;
-
if (msg) {
- int w, h;
- hDc = GetDC(balloonHelpHWnd);
- hFont = SelectObject(hDc, mswLabelFont);
- extent = GetTextExtent(hDc, CAST_AWAY_CONST msg, 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;
+ if (b->errStr) {
+ free(b->errStr);
}
-
- 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);
- SetBkColor(hDc, GetSysColor(COLOR_INFOBK));
- TextOut(hDc, 2, 1, msg, strlen(msg));
- SelectObject(hDc, hFont);
- ReleaseDC(balloonHelpHWnd, hDc);
- balloonHelpState = balloonHelpShow;
- balloonControlButton = b;
+ b->errStr = mswStrdup(msg);
+ openBalloonHelp(b, dx, dy);
} else {
- closeBalloonHelp();
+ if (b->errStr) {
+ free(b->errStr);
+ }
+ b->errStr = NULL;
+ closeBalloonHelp(2);
}
}
+
int wGetKeyState(void)
{
int rc, keyState;
@@ -2467,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);
}
/**
@@ -2515,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);
@@ -2613,7 +2564,7 @@ struct wFilSel_t * wFilSelCreate(
{
char * cp;
struct wFilSel_t * ret;
- int len;
+ size_t len;
ret = (struct wFilSel_t*)malloc(sizeof *ret);
ret->parent = parent;
ret->mode = mode;
@@ -2671,7 +2622,7 @@ const char * wMemStats(void)
", Unknown Heap Status");
return msg;
}
-
+
/*
*****************************************************************************
*
@@ -2750,8 +2701,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
int inx;
wWin_p w;
wControl_p b, oldW;
- int child = ((GetWindowLong(hWnd, GWL_STYLE) & WS_CHILD) != 0);
- POS_T newW, newH;
+ wWinPix_t newW, newH;
RECT rect;
PAINTSTRUCT ps;
HWND hWnd2;
@@ -2759,23 +2709,24 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
HDC hDc;
wAccelKey_e extChar;
+ LPMINMAXINFO pMMI;
switch (message) {
- case WM_GETMINMAXINFO:
- LPMINMAXINFO 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(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);
@@ -2785,14 +2736,14 @@ 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 (0);
+ return (LRESULT)0;
- case WM_DRAWITEM:
case WM_COMMAND:
+ closeBalloonHelp(3);
+ case WM_DRAWITEM:
case WM_MEASUREITEM:
- closeBalloonHelp();
if (WCMD_PARAM_ID < CONTROL_BASE || WCMD_PARAM_ID > (WPARAM)controlMap_da.cnt) {
break;
@@ -2808,10 +2759,10 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
// draw the bitmap
mswDrawIcon(((LPDRAWITEMSTRUCT)lParam)->hDC, 0, 0, (wIcon_p)(b->data), FALSE,
(COLORREF)0, (COLORREF)0);
- return (TRUE);
+ return (LRESULT)TRUE;
} else {
mswSetFocus(b);
- ret = 0L;
+ ret = 0;
if (!inMainWndProc) {
inMainWndProc = TRUE;
@@ -2824,7 +2775,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
inMainWndProc = FALSE;
}
- return ret;
+ return (LRESULT)ret;
}
case WM_PAINT:
@@ -2846,7 +2797,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
EndPaint(hWnd, &ps);
- return 1L;
+ return (LRESULT)1;
}
break;
@@ -2876,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;
@@ -2895,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;
@@ -2924,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;
}
@@ -2942,9 +2893,20 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
b = getControlFromCursor(hWnd, NULL);
- closeBalloonHelp();
+ closeBalloonHelp(4);
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;
+ }
+ }
return SendMessage(b->hWnd, WM_CHAR, wParam, lParam);
}
@@ -2959,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;
@@ -2967,7 +2929,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
}
- return 0L;
+ return (LRESULT)0;
case 0x1B:
@@ -2979,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;
@@ -2988,7 +2950,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
mswSetTrigger((wControl_p)TRIGGER_TIMER, NULL);
- return 0L;
+ return (LRESULT)0;
case 0x20:
@@ -3002,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;
@@ -3010,7 +2972,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
}
- return 0L;
+ return (LRESULT)0;
case 0x09:
@@ -3041,16 +3003,16 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
}
- return 0L;
+ return (LRESULT)0;
}
/* Not a Draw control */
MessageBeep(MB_ICONHAND);
- return 0L;
+ return (LRESULT)0;
break;
case WM_ENABLE:
- if (wParam == 1) { /* WIN32??? */
+ if (wParam == (WPARAM)1) {
hWnd2 = SetFocus(hWnd);
}
@@ -3068,53 +3030,72 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
break;
}
- closeBalloonHelp();
+ closeBalloonHelp(5);
wHelp(b->helpStr);
- return 0L;
+ return (LRESULT)0;
case WM_SETCURSOR:
- /*if (any buttons down)
- break;*/
- wSetCursor(NULL, curCursor);
+ // Set normal Arrow cursor, DefWindowProc can override it
+ SetCursor(LoadCursor(NULL, IDC_ARROW));
if (!mswAllowBalloonHelp) {
- return TRUE;
+ break;
}
if (IsIconic(mswHWnd)) {
- return TRUE;
+ break;
}
b = getControlFromCursor(hWnd, NULL);
+#ifdef BALLOON_TRACE
+ fprintf(logFile, "SETCURSOR %s\n", b ? b->helpStr : "NULL");
+ fflush(logFile);
+#endif
if (b == balloonControlButton) {
- return TRUE;
+ //closeBalloonHelp(61);
+ break;
}
- if (/*(!IsWindowEnabled(hWnd))*/ GetActiveWindow() != hWnd ||
- (!b) || b->type == B_DRAW || b->helpStr == NULL) {
- closeBalloonHelp();
- return TRUE;
+ 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();
+ closeBalloonHelp(7);
}
-
+#ifdef BALLOON_TRACE
+ fprintf(logFile, "SETCURSOR state %d\n", balloonHelpState);
+ fflush(logFile);
+#endif
if (balloonHelpState != balloonHelpIdle) {
- return TRUE;
+ break;
}
balloonHelpTimer = SetTimer(mswHWnd, BALLOONHELP_TIMER,
balloonHelpTimeOut, NULL);
- if (balloonHelpTimer == (UINT)0) {
- return TRUE;
+ if (balloonHelpTimer == (UINT_PTR)0) {
+ break;
}
balloonHelpState = balloonHelpWait;
balloonHelpButton = b;
- return TRUE;
+ break;
+
case WM_SYSCOMMAND:
inx = GetWindowWord(hWnd, 0);
@@ -3146,7 +3127,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
wWinShow(w, FALSE);
- return 0L;
+ return (LRESULT)0;
case WM_CLOSE:
inx = GetWindowWord(hWnd, 0);
@@ -3168,13 +3149,13 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
(w->winProc(w, wClose_e, NULL, NULL));
}
- return 0L;
+ return (LRESULT)0;
}
case WM_DESTROY:
if (hWnd == mswHWnd) {
PostQuitMessage(0L);
- return 0L;
+ return (LRESULT)0;
}
break;
@@ -3192,15 +3173,15 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
} else if (wParam == BALLOONHELP_TIMER) {
KillTimer(hWnd, balloonHelpTimer);
- balloonHelpTimer = (UINT)0;
+ balloonHelpTimer = (UINT_PTR)0;
startBalloonHelp();
}
- return 0L;
+ return (LRESULT)0;
case WM_MENUSELECT:
mswAllowBalloonHelp = TRUE;
- closeBalloonHelp();
+ closeBalloonHelp(8);
break;
case WM_WINDOWPOSCHANGED:
@@ -3221,12 +3202,12 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case 51:
count51++;
- /*return NULL;*/
+ /*return NULL;*/
case WM_PALETTECHANGED:
if (wParam == (WPARAM)hWnd) {
- return 0L;
+ return (LRESULT)0;
}
case WM_QUERYNEWPALETTE:
@@ -3240,12 +3221,12 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
InvalidateRect(hWnd, NULL, TRUE);
}
- return inx;
+ return (LRESULT)inx;
}
case WM_ACTIVATE:
if (LOWORD(wParam) == WA_INACTIVE) {
- closeBalloonHelp();
+ closeBalloonHelp(9);
}
break;
@@ -3272,7 +3253,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
inMainWndProc = FALSE;
}
- return ret;
+ return (LRESULT)ret;
case WM_LBUTTONDOWN:
case WM_MOUSEMOVE:
@@ -3297,7 +3278,7 @@ MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
inMainWndProc = FALSE;
}
- return ret;
+ return (LRESULT)ret;
default:
;
@@ -3379,7 +3360,7 @@ static BOOL InitApplication(HINSTANCE hinstCurrent)
wc.cbWndExtra = 4;
if (!RegisterClass(&wc)) {
- mswFail("RegisterClass(drawClass)");
+ mswFail("RegisterClass(drawClass)");
return FALSE;
}
@@ -3401,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;
@@ -3419,6 +3400,7 @@ int PASCAL WinMain(HINSTANCE hinstCurrent, HINSTANCE hinstPrevious,
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;
@@ -3467,5 +3449,5 @@ int PASCAL WinMain(HINSTANCE hinstCurrent, HINSTANCE hinstPrevious,
HtmlHelp(NULL, NULL, HH_UNINITIALIZE, (DWORD)dwCookie);
}
- return msg.wParam;
+ return (int)msg.wParam;
}
diff --git a/app/wlib/mswlib/mswmsg.c b/app/wlib/mswlib/mswmsg.c
index 6445299..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>
@@ -21,20 +20,15 @@
#define SCALE_LARGE 1.6
#define SCALE_SMALL 0.8
-#ifdef CONTROL3D
-static int messageHeight = 18;
-#endif
-
struct wMessage_t {
- WOBJ_COMMON
- long flags;
- const char * message;
- };
+ WOBJ_COMMON
+ long flags;
+ const char * message;
+};
-#ifndef CONTROL3D
static void repaintMessage(
- HWND hWnd,
- wControl_p b )
+ HWND hWnd,
+ wControl_p b )
{
wMessage_p bm = (wMessage_p)b;
HDC hDc;
@@ -46,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);
@@ -83,137 +73,107 @@ 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, 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 );
}
-#endif
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;
-#ifdef CONTROL3D
- SetWindowText( b->hWnd, arg );
-#else
+ }
+
repaintMessage( ((wControl_p)(b->parent))->hWnd, (wControl_p)b );
-#endif
+
}
void wMessageSetWidth(
- wMessage_p b,
- wPos_t width )
+ wMessage_p b,
+ wWinPix_t width )
{
b->w = width;
-#ifdef CONTROL3D
- SetWindowPos( b->hWnd, HWND_TOP, CW_USEDEFAULT, CW_USEDEFAULT,
- width, messageHeight, SWP_NOMOVE );
-#endif
+
}
-wPos_t wMessageGetWidth(const char *string)
+wWinPix_t wMessageGetWidth(const char *string)
{
return(wLabelWidth(string));
}
-wPos_t wMessageGetHeight( long flags )
+wWinPix_t wMessageGetHeight( long flags )
{
-#ifdef CONTROL3D
- return messageHeight;
-#else
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 ));
- return((wPos_t)((mswEditHeight) * scale ));
-#endif
}
static void mswMessageSetBusy(
- wControl_p b,
- BOOL_T busy )
+ wControl_p b,
+ BOOL_T busy )
{
}
-#ifndef CONTROL3D
-static callBacks_t messageCallBacks = {
- repaintMessage,
- NULL,
- NULL,
- mswMessageSetBusy };
-#endif
+static callBacks_t messageCallBacks = {
+ repaintMessage,
+ NULL,
+ NULL,
+ mswMessageSetBusy
+};
wMessage_p wMessageCreateEx(
- wWin_p parent,
- POS_T x,
- POS_T y,
- const char * helpStr,
- POS_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;
-
-#ifdef CONTROL3D
- RECT rect;
-#endif
-
+
+
b = (wMessage_p)mswAlloc( parent, B_MESSAGE, NULL, sizeof *b, NULL, &index );
mswComputePos( (wControl_p)b, x, y );
b->option |= BO_READONLY;
b->message = mswStrdup( message );
b->flags = flags;
-#ifdef CONTROL3D
- if ( width <= 0 && strlen(b->message) > 0 ) {
- width = wLabelWidth( b->message );
- }
-
- b->hWnd = CreateWindow( "STATIC", NULL,
- SS_LEFTNOWORDWRAP | WS_CHILD | WS_VISIBLE,
- b->x, b->y,
- width, messageHeight,
- ((wControl_p)parent)->hWnd, (HMENU)index, mswHInst, NULL );
- if (b->hWnd == NULL) {
- mswFail("CreateWindow(MESSAGE)");
- return b;
- }
-
- if ( !mswThickFont )
- SendMessage( b->hWnd, WM_SETFONT, (WPARAM)mswLabelFont, 0L );
- SetWindowText( b->hWnd, message );
-
- GetWindowRect( b->hWnd, &rect );
- b->w = rect.right - rect.left;
- b->h = rect.bottom - rect.top;
-#else
b->w = width;
b->h = wMessageGetHeight( flags ) + 1;
repaintMessage( ((wControl_p)parent)->hWnd, (wControl_p)b );
-#endif
+
mswAddButton( (wControl_p)b, FALSE, helpStr );
-#ifndef CONTROL3D
mswCallBacks[B_MESSAGE] = &messageCallBacks;
-#endif
+
return b;
}
diff --git a/app/wlib/mswlib/mswpref.c b/app/wlib/mswlib/mswpref.c
index 201171a..e65b0dd 100644
--- a/app/wlib/mswlib/mswpref.c
+++ b/app/wlib/mswlib/mswpref.c
@@ -1,17 +1,15 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
#include <stdio.h>
-#include "misc.h"
#include "mswint.h"
#include <shlobj.h>
#include <Shlwapi.h>
#if _MSC_VER >=1400
- #define stricmp _stricmp
+#define stricmp _stricmp
#endif
char * mswStrdup( const char * );
@@ -27,38 +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
- strcpy(appLibDirName, module_name);
- strcat(appLibDirName, "\\..\\share\\xtrkcad");
- _fullpath( appLibDirName, appLibDirName, MAX_PATH );
- return appLibDirName;
-#endif
-
- strcpy(appLibDirName, module_name);
- 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.
*
@@ -67,209 +68,302 @@ const char * wGetAppLibDir( void )
*/
const char * wGetAppWorkDir( void )
{
- char *cp;
- int rc;
- if ( appWorkDirName[0] != 0 ) {
- return appWorkDirName;
- }
- wGetAppLibDir();
- sprintf( mswTmpBuff, "%s\\xtrkcad0.ini", appLibDirName );
- rc = GetPrivateProfileString( "workdir", "path", "", appWorkDirName, sizeof appWorkDirName, mswTmpBuff );
- if ( rc!=0 ) {
- if ( stricmp( appWorkDirName, "installdir" ) == 0 ) {
- strcpy( appWorkDirName, appLibDirName );
- } 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 {
- sprintf( 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;
-dynArr_t prefs_da;
+ 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);
+ }
+}
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];
-
- sprintf( 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];
- sprintf(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( void )
+void wPrefFlush( char * name )
{
- prefs_t * p;
-
- for (p=&prefs(0); p<&prefs(prefs_da.cnt); p++) {
- if ( p->dirty )
- WritePrivateProfileString( p->section, p->name, p->val, mswProfileFile );
- }
- 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 13756c7..9a7f65b 100644
--- a/app/wlib/mswlib/mswprint.c
+++ b/app/wlib/mswlib/mswprint.c
@@ -1,12 +1,8 @@
#include <windows.h>
#include <string.h>
-#include <malloc.h>
#include <stdlib.h>
#include <commdlg.h>
#include <math.h>
-#ifndef WIN32
-#include <print.h>
-#endif
#include "mswint.h"
/*
@@ -18,13 +14,9 @@
*/
-struct wDraw_t print_d;
+static struct wDraw_t print_d;
-#ifdef WIN32
-struct tagPDA printDlg;
-#else
-struct tagPD printDlg;
-#endif
+static struct tagPDA printDlg;
static int printStatus = FALSE;
static DOCINFO docInfo;
static double tBorder = 0.0, rBorder = 0.0, bBorder = 0.0, lBorder = 0.0;
@@ -35,7 +27,7 @@ static HPALETTE newPrintPalette;
static HPALETTE oldPrintPalette;
-void wPrintClip( wPos_t x, wPos_t y, wPos_t w, wPos_t h )
+void wPrintClip( wDrawPix_t x, wDrawPix_t y, wDrawPix_t w, wDrawPix_t h )
{
wDrawClip( &print_d, x, y, w, h );
}
@@ -49,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 );
@@ -122,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" );
@@ -141,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" );
@@ -167,7 +162,7 @@ static wBool_t printInit( void )
}
getPageDim( hDc );
DeleteDC( hDc );
-
+
FreeLibrary( hDriver );
#endif
printerOk = TRUE;
@@ -196,9 +191,9 @@ void wPrintSetup( wPrintSetupCallBack_p callback )
if (PrintDlg(&printDlg) != 0 && printDlg.hDC) {
getPageDim( printDlg.hDC );
}
- if ( callback ) {
- callback( TRUE );
- }
+ //if ( callback ) {
+ // callback( TRUE );
+ //}
}
const char* wPrintGetName()
@@ -208,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 );
@@ -218,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; }
}
@@ -247,16 +242,17 @@ 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;
+ }
}
static wBool_t printAbort = FALSE;
-HWND hAbortDlgWnd;
-FARPROC lpAbortDlg, lpAbortProc;
+static HWND hAbortDlgWnd;
+static FARPROC lpAbortDlg, lpAbortProc;
static int pageNumber;
int FAR PASCAL mswAbortDlg( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
@@ -297,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
@@ -374,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 );
@@ -401,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 172b563..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 )
{
- ULONG ul;
+ ULONGLONG ul;
- ul = (ULONG) 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;
@@ -148,61 +147,66 @@ wCreateSplash( char *appname, char *appver )
cyDlgUnit = HIWORD(GetDialogBaseUnits());
/* load the logo bitmap */
- sprintf( logoPath, "%s\\logo.bmp", wGetAppLibDir());
- hBmp = LoadImage( mswHInst, logoPath, IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE );
- if( !hBmp )
+ snprintf( logoPath, sizeof(logoPath), "%s\\logo.bmp", wGetAppLibDir());
+ 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 ) {
@@ -266,4 +271,5 @@ wDestroySplash(void)
{
DestroyWindow( hSplash );
return;
-} \ No newline at end of file
+}
+
diff --git a/app/wlib/mswlib/mswstatus.c b/app/wlib/mswlib/mswstatus.c
index f9d72f4..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,
- wPos_t x,
- wPos_t y,
- const char * labelStr,
- wPos_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);
}
/**
@@ -75,10 +75,10 @@ wStatus_p wStatusCreate(
* \return expected width of message box
*/
-wPos_t
+wWinPix_t
wStatusGetWidth(const char *testString)
{
- return (wMessageGetWidth(testString));
+ return (wMessageGetWidth(testString));
}
/**
@@ -88,10 +88,10 @@ wStatusGetWidth(const char *testString)
* \return text height
*/
-wPos_t wStatusGetHeight(
- long flags)
+wWinPix_t wStatusGetHeight(
+ long flags)
{
- return (wMessageGetHeight(flags));
+ return (wMessageGetHeight(flags));
}
/**
@@ -103,8 +103,8 @@ wPos_t wStatusGetHeight(
*/
void wStatusSetWidth(
- wStatus_p b,
- wPos_t width)
+ wStatus_p b,
+ wWinPix_t width)
{
- wMessageSetWidth((wMessage_p)b, width);
-} \ No newline at end of file
+ wMessageSetWidth((wMessage_p)b, width);
+}
diff --git a/app/wlib/mswlib/mswtext.c b/app/wlib/mswlib/mswtext.c
index 0a0ce88..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,44 +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;
};
-BOOL_T textPrintAbort = FALSE;
-
void wTextClear(
- wText_p b)
+ wText_p b)
{
- long rc;
- rc = SendMessage(b->hWnd, EM_SETREADONLY, 0, 0L);
-#ifdef WIN32
- rc = SendMessage(b->hWnd, EM_SETSEL, 0, -1);
-#else
- rc = SendMessage(b->hWnd, EM_SETSEL, 1, MAKELONG(0, -1));
-#endif
- rc = SendMessage(b->hWnd, WM_CLEAR, 0, 0L);
+ 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, 1, 0L);
- }
+ if (b->option&BO_READONLY) {
+ rc = SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)1, (LPARAM)0);
+ }
}
/**
@@ -90,200 +83,200 @@ void wTextClear(
*/
void wTextAppend(
- wText_p b,
- const char * text)
+ wText_p b,
+ const char * text)
{
- char *cp;
- char *buffer;
- char *extText;
- int textSize;
- int 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, 1, 0L);
- }
+ 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, 0, 10000L);
+ SendMessage(b->hWnd, EM_LINESCROLL, (WPARAM)0, (LPARAM)10000);
}
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, 0, 0L);
-
- for (l=0; l<lc; l++) {
- *(WORD*)line = sizeof(line)-1;
- len = (int)SendMessage(b->hWnd, EM_GETLINE, l, (DWORD)(LPSTR)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, 0, 0L);
- IOStatus = 0;
-
- for (l=0; l<lc; l++) {
- *(WORD*)line = sizeof(line)-1;
- len = (int)SendMessage(b->hWnd, EM_GETLINE, l, (DWORD)(LPSTR)line);
- TextOut(hDc, 0, currentLine*lineSpace, line, len);
-
- if (++currentLine > linesPerPage) {
- IOStatus = EndPage(hDc);
- if (IOStatus < 0 || textPrintAbort) {
- 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 && !textPrintAbort) {
- 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, 0, 0L);
- 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;
@@ -302,157 +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, ro, 0L);
+ SendMessage(b->hWnd, EM_SETREADONLY, (WPARAM)ro, (LPARAM)0);
}
void wTextSetSize(
- wText_p bt,
- wPos_t width,
- wPos_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,
- int rows,
- int lines,
- wPos_t * w,
- wPos_t * h)
+ wText_p bt,
+ wWinPix_t rows,
+ wWinPix_t lines,
+ wWinPix_t * w,
+ wWinPix_t * h)
{
- static wPos_t scrollV_w = -1;
- static wPos_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)
{
- long rc;
- rc = SendMessage(bt->hWnd, EM_LINESCROLL, 0, 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,
- POS_T x,
- POS_T y,
- const char * helpStr,
- const char * labelStr,
- long option,
- POS_T width,
- POS_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)index, mswHInst, NULL);
-
- if (b->hWnd == NULL) {
- mswFail("CreateWindow(TEXT)");
- return b;
- }
-
-#ifdef CONTROL3D
- Ctl3dSubclassCtl(b->hWnd);
-#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 {
+ 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");
+ }
+ }
- 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, 0L);
- }
-
- b->hText = (HANDLE)SendMessage(b->hWnd, EM_GETHANDLE, 0, 0L);
-
- if (option & BT_CHARUNITS) {
- wPos_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;
+ 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 412eece..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 = 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, 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 = 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, 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 62ada76..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 * (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 * (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
*/
diff --git a/debian/changelog b/debian/changelog
index 7f10bb0..80354fa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,27 @@
+xtrkcad (1:5.3.0GA-1) unstable; urgency=medium
+
+ * New upstream release (Closes: #1057286, #1074722):
+ * debian/control:
+ - Add Build-Depends:
+ + inkscape
+ + libfreeimage-dev
+ + pandoc
+ - Change to new repository URL.
+ - Change Standards-Version to 4.7.0.0 (No changes needed).
+ - Add myself as Maintainer and Daniel E. Markle as Uploader.
+ (Closes: #1057287)
+ * debian/xtrkcad.install:
+ - Add CHANGELOG.txt, Readme.txt
+ * debian/copyright:
+ - Add year 2024 to myself.
+ - Rebase for the new release.
+ * debian/changlog:
+ - Remove trailing whitespace.
+ * debian/rules:
+ - Remove trailing whitespace.
+
+ -- Jörg Frings-Fürst <debian@jff.email> Wed, 03 Jul 2024 21:32:38 +0200
+
xtrkcad (1:5.2.0Beta2.1-1) unstable; urgency=medium
* New upstream release.
@@ -8,7 +32,7 @@ xtrkcad (1:5.2.0Beta2.1-1) unstable; urgency=medium
- xtrkcad.desktop
* debian/control:
- Add new Build-Depend libzip-dev
- * debian/rules:
+ * debian/rules:
- Add export DEB_LDFLAGS_MAINT_APPEND to fix the ld error
"multiple definition" (Closes: #958005).
* Refresh patches:
diff --git a/debian/control b/debian/control
index f9621c4..21463b0 100644
--- a/debian/control
+++ b/debian/control
@@ -1,20 +1,23 @@
Source: xtrkcad
Section: editors
Priority: optional
-Maintainer: Daniel E. Markle <dmarkle@ashtech.net>
+Maintainer: Jörg Frings-Fürst <debian@jff.email>
Uploaders:
- Mike Gabriel <sunweaver@debian.org>,
- Jörg Frings-Fürst <debian@jff.email>
+ Daniel E. Markle <dmarkle@ashtech.net>,
+ Mike Gabriel <sunweaver@debian.org>
Build-Depends:
cmake,
debhelper-compat (= 13),
+ inkscape,
+ libfreeimage-dev,
libgtk2.0-dev,
- libzip-dev
+ libzip-dev,
+ pandoc
Rules-Requires-Root: no
-Standards-Version: 4.5.0
+Standards-Version: 4.7.0.0
Homepage: http://xtrkcad.org/
-Vcs-Git: git://jff.email/opt/git/xtrkcad.git
-Vcs-Browser: https://jff.email/cgit/xtrkcad.git/
+Vcs-Git: git://git.jff.email/xtrkcad.git
+Vcs-Browser: https://git.jff.email/cgit/xtrkcad.git
Package: xtrkcad
Architecture: any
diff --git a/debian/copyright b/debian/copyright
index dcd7cfe..836e54f 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -6,8 +6,8 @@ Source: http://sourceforge.net/projects/xtrkcad-fork/
Files: *
Copyright: 2003 Sillub Technology
2005-2015 Troy D. Hanson
- 2005-2007 Dave Bullis
- 2006-2017 Martin Fischer
+ 2005-2022 Dave Bullis
+ 2006-2024 Martin Fischer
2007 Bob Blackwell
License: GPL-2+
@@ -21,12 +21,41 @@ Files: app/bin/cblock.c
Copyright: 2002-2017 Robert Heller D/B/A Deepwoods Software
License: GPL-2+
+Files: app/bin/include/dirent.h
+Copyright: 2006-2012 Toni Ronkko
+License: Expat
+
+Files: app/cJSON/cJSON.*
+Copyright: 2009-2017 Dave Gamble and cJSON contributors
+License: Expat
+
+Files: app/bin/include/utlist.h
+ app/bin/uthash.h
+Copyright: 2007-2018 Troy D. Hanson
+License: BSD-1-Clause
+
+Files: CMake/FindGTKUnixPrint.cmake
+Copyright: 2012 Raphael Kubo da Costa <rakuco@webkit.org>
+ 2014 Igalia S.L.
+License: BSD-2-Clause
+
+Files: app/lib/xdg-open
+Copyright: 2009-2010 Fathi Boudra <fabo@freedesktop.org>
+ 2009-2010 Rex Dieter <rdieter@fedoraproject.org>
+ 2006 Kevin Krammer <kevin.krammer@gmx.at>
+ 2006 Jeremy White <jwhite@codeweavers.com>
+License: Expat
+
Files: app/bin/i18n.*
app/i18n/stripmsg.c
app/i18n/fi.po
Copyright: 2007-2008 Mikko Nissinen
License: GPL-2+
+Files: distribution/fedora/xtrkcad.spec
+Copyright: 2022 Phil Cameron <pecameron1 -at- gmail.com>
+License: GPL-2
+
Files: app/i18n/pt_BR.po
Copyright: 2009 Daniel Spagnol
License: GPL-2+
@@ -39,6 +68,10 @@ Files: app/tools/halibut/*
Copyright: 1999-2007 Simon Tatham
License: Expat
+Files: app/tools/halibut/licence.c
+Copyright: 1999-2007 Simon Tatham
+License: APAFML
+
Files: app/tools/halibut/charset/macenc.c
Copyright: 2008 Ben Harris
License: Expat
@@ -62,20 +95,19 @@ License: GPL-2+
Files: app/wlib/mswlib/gwin32.c
Copyright: 1995-1998 Peter Mattis, Spencer Kimball and Josh MacDonald
1998-1999 Tor Lillqvist
-License: GPL-2+
+License: LGPL-2+
Files: app/wlib/mswlib/simple-gettext.c
Copyright: 1995-2005 Free Software Foundation, Inc.
License: GPL-2+
Files: app/lib/icon.svg
- app/bin/bitmaps/SVG/tipofday.svg
Copyright: Jakub Steiner
License: public-domain
Files: debian/*
Copyright: 2015 Daniel E. Markle <dmarkle@ashtech.net>
- 2016-2020 Jörg Frings-Fürst <debian@jff.email>
+ 2016-2024 Jörg Frings-Fürst <debian@jff.email>
2016-2017 Mike Gabriel <sunweaver@debian.org>
License: GPL-2+
@@ -177,3 +209,103 @@ License: public-domain
otherwise exploited by anyone for any purpose, commercial or non-commercial,
and in any way, including by methods that have not yet been invented or
conceived.
+
+License: LGPL-2+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+ .
+ This library 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
+ Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ .
+ On Debian systems, the complete text of the GNU Library General Public License
+ version 2 can be found in "/usr/share/common-licenses/LGPL-2".
+
+License: GPL-2
+ 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 version
+ 2 of the License.
+ .
+ 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 package; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
+
+License: BSD-2-Clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ .
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ .
+ * 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
+ OWNER 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.
+
+License: APAFML
+ 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.",
+ .
+ Halibut contains font metrics derived from the "Font Metrics for PDF
+ Core 14 Fonts", which carry the following copyright notice and licence:
+ .
+ Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1993, 1997
+ Adobe Systems Incorporated. All Rights Reserved.
+ .
+ This file and the 14 PostScript(R) AFM files it accompanies may be
+ used, copied, and distributed for any purpose and without charge,
+ with or without modification, provided that all copyright notices
+ are retained; that the AFM files are not distributed without this
+ file; that all modifications to this file or any of the AFM files
+ are prominently noted in the modified file(s); and that this
+ paragraph is not modified. Adobe Systems has no responsibility or
+ obligation to support the use of the AFM files.
diff --git a/debian/not-installed b/debian/not-installed
index 6e2f846..8e2c9b4 100644
--- a/debian/not-installed
+++ b/debian/not-installed
@@ -6,3 +6,8 @@ usr/share/pixmaps/xtrkcad.png
usr/share/applications/xtrkcad.desktop
usr/share/xtrkcad/xdg-open
usr/share/xtrkcad/COPYING
+usr/share/locale/cy_GB/LC_MESSAGES/xtrkcad.mo
+usr/share/locale/ru/LC_MESSAGES/xtrkcad.mo
+usr/share/xtrkcad/applications/xtrkcad.xml
+usr/share/xtrkcad/xtrkcad-setup
+usr/share/xtrkcad/xtrkcad.upd
diff --git a/debian/patches/0001-usr_gtk-3.patch b/debian/patches/0001-usr_gtk-3.patch
new file mode 100644
index 0000000..afe0689
--- /dev/null
+++ b/debian/patches/0001-usr_gtk-3.patch
@@ -0,0 +1,13 @@
+Index: trunk/CMakeLists.txt
+===================================================================
+--- trunk.orig/CMakeLists.txt
++++ trunk/CMakeLists.txt
+@@ -64,7 +64,7 @@ if(APPLE)
+ endif()
+
+ IF(UNIX)
+- PKG_CHECK_MODULES(GTK REQUIRED "gtk+-2.0")
++ PKG_CHECK_MODULES(GTK REQUIRED "gtk+-3.0")
+ ENDIF()
+
+ IF(APPLE)
diff --git a/debian/patches/series b/debian/patches/series
index c6c3550..0f9e10d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
-0900-spelling-errors.patch
+#0001-usr_gtk-3.patch
+#0900-spelling-errors.patch
diff --git a/debian/rules b/debian/rules
index fe59e52..e58c57d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -5,7 +5,7 @@
# hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
-export DEB_LDFLAGS_MAINT_APPEND = -Wl,--allow-multiple-definition
+export DEB_LDFLAGS_MAINT_APPEND = -Wl,--allow-multiple-definition
%:
dh $@
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
new file mode 100644
index 0000000..aec63b9
--- /dev/null
+++ b/debian/source/lintian-overrides
@@ -0,0 +1 @@
+source-is-missing [app/doc/xtrkcad-manual-5.3.0.html]
diff --git a/debian/xtrkcad-common.lintian-overrides b/debian/xtrkcad-common.lintian-overrides
index 362d6fb..467e3d1 100644
--- a/debian/xtrkcad-common.lintian-overrides
+++ b/debian/xtrkcad-common.lintian-overrides
@@ -1 +1,2 @@
national-encoding
+source-is-missing [app/doc/xtrkcad-manual-5.3.0.html]
diff --git a/debian/xtrkcad.install b/debian/xtrkcad.install
index b7f9538..73fef3e 100644
--- a/debian/xtrkcad.install
+++ b/debian/xtrkcad.install
@@ -1,4 +1,6 @@
usr/share/xtrkcad/applications/xtrkcad.desktop usr/share/applications
usr/share/xtrkcad/logo.bmp usr/share/doc/xtrkcad
usr/share/xtrkcad/pixmaps/xtrkcad.png usr/share/doc/xtrkcad
+usr/share/xtrkcad/CHANGELOG.txt usr/share/doc/xtrkcad
+usr/share/xtrkcad/Readme.txt usr/share/doc/xtrkcad
usr/bin/*
diff --git a/distribution/CMakeLists.txt b/distribution/CMakeLists.txt
index 9eede85..30acac7 100644
--- a/distribution/CMakeLists.txt
+++ b/distribution/CMakeLists.txt
@@ -1,7 +1,12 @@
# Setup global packaging parameters ...
SET(CPACK_PACKAGE_DESCRIPTION "XTrackCad is a CAD program for designing model railroad layouts.")
SET(CPACK_PACKAGE_EXECUTABLES "xtrkcad;XTrkCAD ${XTRKCAD_VERSION}")
-SET(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}")
+IF(WIN32)
+ # Add suffix
+ SET(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}-${XTRKCAD_ARCH_SUBDIR}")
+ELSE(WIN32)
+ SET(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}")
+ENDIF(WIN32)
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "XTrkCAD ${XTRKCAD_VERSION}")
SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "XTrkCAD ${XTRKCAD_VERSION}")
SET(CPACK_PACKAGE_NAME "xtrkcad")
diff --git a/distribution/fedora/README b/distribution/fedora/README
new file mode 100644
index 0000000..239b454
--- /dev/null
+++ b/distribution/fedora/README
@@ -0,0 +1,26 @@
+202220315
+This is repository of the files needed to make a fedora release.
+
+Temporary patches needed for 5.2.2, delete on next GA
+xtrkcad-5.2.2GA-xtrkcad.desktop.patch
+
+Builds the needed fedora rpms
+xtrkcad.spec
+Also needs (not saved here)
+xtrkcad-source-5.2.2GA.tar.gz
+
+builds the fc37 rpms
+fedpkg --release rawhide mockbuild
+
+builds fc35 rpms
+fedpkg --release f 35 mockbuild
+
+Built xtrkcad-5.2.2-1.fc35.x86_64.rpm installs as
+a graphical app, Can be selected by Applications->Graphics->XTrackCAD
+
+https://bugzilla.redhat.com/show_bug.cgi?id=2040728
+2040728 - xtrkcad - CAD for Model Railroad layout
+Approved 03/15 Comment #21
+
+
+
diff --git a/distribution/fedora/xtrkcad-5.2.2GA-xtrkcad.desktop.patch b/distribution/fedora/xtrkcad-5.2.2GA-xtrkcad.desktop.patch
new file mode 100644
index 0000000..54f74dc
--- /dev/null
+++ b/distribution/fedora/xtrkcad-5.2.2GA-xtrkcad.desktop.patch
@@ -0,0 +1,106 @@
+diff -ru orig/xtrkcad-source-5.2.2GA/app/bin/CMakeLists.txt xtrkcad-source-5.2.2GA/app/bin/CMakeLists.txt
+--- orig/xtrkcad-source-5.2.2GA/app/bin/CMakeLists.txt 2021-12-18 12:12:02.000000000 -0500
++++ xtrkcad-source-5.2.2GA/app/bin/CMakeLists.txt 2022-02-21 15:22:10.656926058 -0500
+@@ -169,7 +169,6 @@
+ utility.c
+ utility.h
+ validator.c
+- cJSON.c
+ archive.h
+ directory.h
+ manifest.h
+@@ -237,10 +236,7 @@
+ # This ensures that messages.h has been generated before we build xtrkcad-lib
+ ADD_DEPENDENCIES(xtrkcad-lib Help)
+
+-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-lib)
+-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-wlib)
+-TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-cornu)
+-TARGET_LINK_LIBRARIES(xtrkcad dynstring)
++TARGET_LINK_LIBRARIES(xtrkcad xtrkcad-lib xtrkcad-wlib xtrkcad-cornu dynstring cjson)
+ if(XTRKCAD_CREATE_SVG)
+ IF(UNIX)
+ if (NOT APPLE)
+diff -ru orig/xtrkcad-source-5.2.2GA/app/bin/fileio.c xtrkcad-source-5.2.2GA/app/bin/fileio.c
+--- orig/xtrkcad-source-5.2.2GA/app/bin/fileio.c 2021-12-18 10:31:35.000000000 -0500
++++ xtrkcad-source-5.2.2GA/app/bin/fileio.c 2022-02-20 10:51:17.258176965 -0500
+@@ -20,7 +20,7 @@
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+-#include <cJSON.h>
++#include <cjson/cJSON.h>
+
+ #include "archive.h"
+ #include "common.h"
+Only in orig/xtrkcad-source-5.2.2GA/app/bin/include: dirent.h
+Only in xtrkcad-source-5.2.2GA/app/bin/include: dirent.h.phil
+diff -ru orig/xtrkcad-source-5.2.2GA/app/bin/manifest.c xtrkcad-source-5.2.2GA/app/bin/manifest.c
+--- orig/xtrkcad-source-5.2.2GA/app/bin/manifest.c 2021-12-18 10:31:34.000000000 -0500
++++ xtrkcad-source-5.2.2GA/app/bin/manifest.c 2022-02-20 10:51:14.426213927 -0500
+@@ -21,7 +21,7 @@
+
+ #include <string.h>
+
+-#include "cJSON.h"
++#include <cjson/cJSON.h>
+ #include "fileio.h"
+ #include "layout.h"
+ #include "misc2.h"
+diff -ru orig/xtrkcad-source-5.2.2GA/app/help/CMakeLists.txt xtrkcad-source-5.2.2GA/app/help/CMakeLists.txt
+--- orig/xtrkcad-source-5.2.2GA/app/help/CMakeLists.txt 2021-12-18 10:27:44.000000000 -0500
++++ xtrkcad-source-5.2.2GA/app/help/CMakeLists.txt 2022-02-21 15:24:51.868816364 -0500
+@@ -1,6 +1,6 @@
+ PROJECT(help)
+
+-ADD_EXECUTABLE(genhelp genhelp.c cJSON.c cJSON.h)
++ADD_EXECUTABLE(genhelp genhelp.c)
+
+ ADD_EXECUTABLE(genmessages genmessages.c)
+
+@@ -10,6 +10,8 @@
+ 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
+ DEPENDS genmessages ${CMAKE_CURRENT_SOURCE_DIR}/messages.in
+diff -ru orig/xtrkcad-source-5.2.2GA/app/help/genhelp.c xtrkcad-source-5.2.2GA/app/help/genhelp.c
+--- orig/xtrkcad-source-5.2.2GA/app/help/genhelp.c 2021-12-18 10:27:44.000000000 -0500
++++ xtrkcad-source-5.2.2GA/app/help/genhelp.c 2022-02-20 10:28:37.155745877 -0500
+@@ -20,7 +20,7 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+-#include "cJSON.h"
++#include <cjson/cJSON.h>
+
+ #define I18NHEADERFILE "i18n.h"
+
+diff -ru orig/xtrkcad-source-5.2.2GA/app/lib/CMakeLists.txt xtrkcad-source-5.2.2GA/app/lib/CMakeLists.txt
+--- orig/xtrkcad-source-5.2.2GA/app/lib/CMakeLists.txt 2021-12-18 12:12:02.000000000 -0500
++++ xtrkcad-source-5.2.2GA/app/lib/CMakeLists.txt 2022-02-21 15:25:06.717622045 -0500
+@@ -42,10 +42,6 @@
+ endif()
+
+ if(UNIX AND NOT APPLE)
+- install(PROGRAMS
+- xdg-open xtrkcad-setup
+- DESTINATION ${XTRKCAD_SHARE_INSTALL_DIR}
+- )
+ install(FILES
+ xtrkcad.desktop xtrkcad.xml
+ DESTINATION "${XTRKCAD_SHARE_INSTALL_DIR}/applications"
+diff -ru orig/xtrkcad-source-5.2.2GA/CMakeLists.txt xtrkcad-source-5.2.2GA/CMakeLists.txt
+--- orig/xtrkcad-source-5.2.2GA/CMakeLists.txt 2021-12-18 13:10:04.000000000 -0500
++++ xtrkcad-source-5.2.2GA/CMakeLists.txt 2022-02-21 15:30:10.711643816 -0500
+@@ -1,6 +1,6 @@
+ PROJECT(XTrkCAD)
+ enable_testing()
+-cmake_minimum_required(VERSION 2.8)
++cmake_minimum_required(VERSION 3.22)
+ set(CMAKE_MACOSX_RPATH 0)
+
+ # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
diff --git a/distribution/fedora/xtrkcad.spec b/distribution/fedora/xtrkcad.spec
new file mode 100644
index 0000000..eae4a74
--- /dev/null
+++ b/distribution/fedora/xtrkcad.spec
@@ -0,0 +1,97 @@
+Name: xtrkcad
+Summary: CAD for Model Railroad layout
+Version: 5.2.2
+Release: 1%{?dist}
+License: GPLv2
+URL: https://sourceforge.net/projects/xtrkcad-fork
+Source0: https://sourceforge.net/projects/xtrkcad-fork/files/XTrackCad/Version%20%{version}/xtrkcad-source-%{version}GA.tar.gz
+# patch (to be removed on next GA release)
+# patch0 adds xtrkcad.desktop to build - Changed upstream
+# It also uses cJSON and xdg-utils packages
+Patch0: xtrkcad-5.2.2GA-xtrkcad.desktop.patch
+
+BuildRequires: gcc
+BuildRequires: gcc-c++
+BuildRequires: cmake >= 2.4.7
+BuildRequires: pkgconfig
+BuildRequires: gtk2-devel
+BuildRequires: libzip-devel
+BuildRequires: desktop-file-utils
+BuildRequires: gettext-devel
+BuildRequires: glibc-devel
+BuildRequires: pandoc
+BuildRequires: doxygen
+BuildRequires: cjson-devel
+
+Requires: xdg-utils
+
+%description
+XTrkCad is a CAD program for designing Model Railroad layouts.
+XTrkCad supports any scale, has libraries of popular brands of x
+turnouts and sectional track (plus you add your own easily), can
+automatically use spiral transition curves when joining track
+XTrkCad 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,
+benchwork, 'Print to BitMap', elevations, train simulation and
+car inventory.
+
+%prep
+%setup -n xtrkcad-source-%{version}GA -q
+
+# removed on next GA release
+%patch0 -p1
+
+%package doc
+Summary: Documentation for %{name}
+BuildArch: noarch
+
+%description doc
+This package contains user documentation for XTrkCad,
+in HTML format. It also contains demos, and examples.
+
+%build
+%cmake -DBUILD_SHARED_LIBS=OFF -DXTRKCAD_USE_DOXYGEN=ON
+%cmake_build
+
+%install
+%cmake_install
+
+desktop-file-install --dir=%{buildroot}/%{_datadir}/applications \
+ %{buildroot}/%{_datadir}/%{name}/applications/xtrkcad.desktop
+rm %{buildroot}/%{_datadir}/%{name}/applications/xtrkcad.desktop
+
+mkdir -p %{buildroot}/%{_datadir}/pixmaps
+mv %{buildroot}/%{_datadir}/%{name}/pixmaps/xtrkcad.png \
+ %{buildroot}/%{_datadir}/pixmaps/xtrkcad.png
+rm -rf %{buildroot}/%{_datadir}/%{name}/pixmaps
+
+mkdir -p %{buildroot}/%{_datadir}/mime/packages
+mv %{buildroot}/%{_datadir}/%{name}/applications/xtrkcad.xml \
+ %{buildroot}/%{_datadir}/mime/packages/xtrkcad.xml
+
+# Tests require a feature in the next release
+#%check
+#%ctest
+
+%files
+%license app/COPYING
+%{_bindir}/%{name}
+%{_datadir}/applications/xtrkcad.desktop
+%{_datadir}/pixmaps/xtrkcad.png
+%{_datadir}/mime/packages/xtrkcad.xml
+%{_datadir}/%{name}
+%exclude %{_datadir}/%{name}/demos
+%exclude %{_datadir}/%{name}/examples
+%exclude %{_datadir}/%{name}/html
+
+%files doc
+%{_datadir}/%{name}/demos
+%{_datadir}/%{name}/examples
+%{_datadir}/%{name}/html
+
+%changelog
+* Mon Feb 21 2022 Phil Cameron <pecameron1 -at- gmail.com> 5.2.2-1
+- V5.2.2 GA
+
diff --git a/distribution/posix/CMakeLists.txt b/distribution/posix/CMakeLists.txt
index 3356005..f202791 100644
--- a/distribution/posix/CMakeLists.txt
+++ b/distribution/posix/CMakeLists.txt
@@ -8,7 +8,13 @@ set(CPACK_RPM_PACKAGE_GROUP "Applications/Engineering")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}////xtrkcad-desc.txt")
set(CPACK_PACKAGE_FILE_NAME "xtrkcad-setup-${XTRKCAD_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}")
-set(CPACK_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} )
+if(XTRKCAD_BETA MATCHES "-beta")
+ set(CPACK_INSTALL_PREFIX "/usr/local" )
+else()
+ set(CPACK_INSTALL_PREFIX "/usr" )
+ set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/postinst;${CMAKE_CURRENT_SOURCE_DIR}/prerm")
+endif()
+
set(CPACK_PACKAGING_INSTALL_PREFIX ${CPACK_INSTALL_PREFIX})
# get the specific configuration for each packager
@@ -17,7 +23,7 @@ set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/package.txt)
set(CPACK_PACKAGE_VENDOR "XTrackCAD Fork Project")
# common dependencies for all Linux builds
-set(CPACK_RPM_PACKAGE_REQUIRES "glibc gtk2 zip zlib")
+set(CPACK_RPM_PACKAGE_REQUIRES "glibc gtk2 zlib")
set(CPACK_RPM_BUILDREQUIRES
"gcc, cmake >= 2.4.7, pkgconfig, gtk2-devel"
@@ -31,6 +37,12 @@ if(NOT XTRKCAD_USE_BROWSER)
# message(AUTHOR_WARNING "Add dependency to webkitgtk for viewing help!")
endif()
+#Add dependency to MiniXML (mxml) if configured
+if(XTRKCAD_CREATE_SVG)
+ set(CPACK_RPM_PACKAGE_REQUIRES
+ "${CPACK_RPM_PACKAGE_REQUIRES} mxml")
+endif()
+
# exclude these directories from the rpm
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
"/usr/local"
@@ -48,19 +60,29 @@ set(CPACK_RPM_CHANGELOG_FILE "${CMAKE_CURRENT_SOURCE_DIR}////changelog.txt")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
-set(CPACK_DEBIAN_PACKAGE_NAME "XTrkCad")
+set(CPACK_DEBIAN_PACKAGE_NAME "XTrkCad${XTRKCAD_BETA}")
set(CPACK_DEBIAN_PACKAGE_VERSION "1:${XTRKCAD_VERSION}")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
-set(CPACK_DEBIAN_PACKAGE_DEPENDS "zip")
+set(CPACK_DEBIAN_PACKAGE_DEPENDS "xdg-utils")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "xtrkcad@sillub.com")
set(CPACK_PACKAGE_CONTACT "xtrkcad@sillub.com")
-set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "XTrkCad description")
+set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "XTrkCad 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 \
+XTrkCad 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, \
+benchwork, 'Print to BitMap', elevations, train simulation and \
+car inventory. \
+")
+
set(CPACK_DEBIAN_PACKAGE_SECTION "contrib/graphics")
@@ -75,4 +97,3 @@ set(CPACK_PACKAGE_EXECUTABLES "xtrkcad;XTrkCad-5.2.1-Beta")
set(CPACK_CREATE_DESKTOP_LINKS "xtrkcad")
include(CPack)
-
diff --git a/distribution/posix/postinst b/distribution/posix/postinst
new file mode 100755
index 0000000..969aa7e
--- /dev/null
+++ b/distribution/posix/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+LOGF=/tmp/xtrkcad-setup.log
+if [ -f "${LOGF}" ] ; then
+ chmod 666 ${LOGF}
+ echo postinst: $* >> ${LOGF}
+else
+ LOGF=/dev/null
+fi
+
+INSTALLDIR=/usr/share/xtrkcad
+
+( su -c "sh ${INSTALLDIR}/xtrkcad-setup install ${INSTALLDIR}" -l $SUDO_USER ) >> ${LOGF} 2>&1
+
+exit 0
diff --git a/distribution/posix/prerm b/distribution/posix/prerm
new file mode 100755
index 0000000..b5ae917
--- /dev/null
+++ b/distribution/posix/prerm
@@ -0,0 +1,15 @@
+#!/bin/sh
+LOGF=/tmp/xtrkcad-setup.log
+if [ -f "${LOGF}" ] ; then
+ chmod 666 ${LOGF}
+ echo prerm: $* >> ${LOGF}
+else
+ LOGF=/dev/null
+fi
+
+INSTALLDIR=/usr/share/xtrkcad
+
+( su -c "sh ${INSTALLDIR}/xtrkcad-setup remove ${INSTALLDIR}" -l $SUDO_USER ) >> ${LOGF} 2>&1
+
+exit 0
+
diff --git a/distribution/win32/CMakeLists.txt b/distribution/win32/CMakeLists.txt
index 80ecfe3..3a46c7f 100644
--- a/distribution/win32/CMakeLists.txt
+++ b/distribution/win32/CMakeLists.txt
@@ -1,4 +1,3 @@
-SET(CPACK_SOURCE_GENERATOR "ZIP")
-
-ADD_SUBDIRECTORY(nsis)
+set(CPACK_SOURCE_GENERATOR "ZIP")
+add_subdirectory(nsis)
diff --git a/distribution/win32/nsis/CMakeLists.txt b/distribution/win32/nsis/CMakeLists.txt
index 150fe43..ef1775c 100644
--- a/distribution/win32/nsis/CMakeLists.txt
+++ b/distribution/win32/nsis/CMakeLists.txt
@@ -1,23 +1,26 @@
-STRING(REPLACE "/" "\\\\" NATIVE_CURRENT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+string(REPLACE "/" "\\\\" NATIVE_CURRENT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
-SET(CPACK_GENERATOR "NSIS")
-SET(CPACK_PACKAGE_INSTALL_DIRECTORY "XTrackCAD")
-SET(CPACK_NSIS_EXECUTABLE_NAME "bin\\\\xtrkcad.exe")
-SET(CPACK_NSIS_DISPLAY_NAME "XTrackCAD ${CPACK_PACKAGE_VERSION}")
-SET(CPACK_PACKAGE_ICON "${NATIVE_CURRENT_SOURCE_DIR}\\\\headerimage.bmp")
-SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\xtrkcad.exe")
-SET(CPACK_NSIS_HELP_LINK "http://www.xtrkcad.org")
-SET(CPACK_NSIS_MUI_FINISHPAGE_RUN "xtrkcad.exe")
+set(CPACK_GENERATOR "NSIS")
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "XTrackCAD")
+set(CPACK_NSIS_EXECUTABLE_NAME "bin\\\\xtrkcad.exe")
+set(CPACK_NSIS_DISPLAY_NAME "XTrackCAD ${CPACK_PACKAGE_VERSION}")
+set(CPACK_PACKAGE_ICON "${NATIVE_CURRENT_SOURCE_DIR}\\\\headerimage.bmp")
+set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\xtrkcad.exe")
+set(CPACK_NSIS_HELP_LINK "http://www.xtrkcad.org")
+set(CPACK_NSIS_MUI_FINISHPAGE_RUN "xtrkcad.exe")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "on")
+set(CMAKE_INSTALL_OPENMP_LIBRARIES TRUE)
-SET(CPACK_NSIS_STARTMENU_FOLDER "XTrackCAD")
+set(CPACK_NSIS_STARTMENU_FOLDER "XTrackCAD")
-SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS
+set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS
"; add part specific to XTrackCAD installation
!include \\\"${NATIVE_CURRENT_SOURCE_DIR}\\\\install.nsh\\\"")
-SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
+set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
"; add part specific to XTrackCAD uninstall
!include \\\"${NATIVE_CURRENT_SOURCE_DIR}\\\\uninstall.nsh\\\"")
-INCLUDE(CPack)
+include (InstallRequiredSystemLibraries)
+
+include(CPack)
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
index 2cbf49f..4f7201c 100644
--- a/docs/CMakeLists.txt
+++ b/docs/CMakeLists.txt
@@ -1,3 +1,3 @@
-IF(XTRKCAD_USE_DOXYGEN)
- ADD_SUBDIRECTORY(doxygen)
-ENDIF(XTRKCAD_USE_DOXYGEN)
+if(XTRKCAD_USE_DOXYGEN)
+ add_subdirectory(doxygen)
+endif(XTRKCAD_USE_DOXYGEN)
diff --git a/docs/DevGuide.docx b/docs/DevGuide.docx
new file mode 100644
index 0000000..3fa6836
--- /dev/null
+++ b/docs/DevGuide.docx
Binary files differ
diff --git a/docs/doxygen/CMakeLists.txt b/docs/doxygen/CMakeLists.txt
index 8ccbc65..5f2ac40 100644
--- a/docs/doxygen/CMakeLists.txt
+++ b/docs/doxygen/CMakeLists.txt
@@ -1,18 +1,23 @@
-PROJECT(doxygen)
+project(sourcedoc)
-INCLUDE(FindDoxygen)
+#
+# create source documentation using Doxygen
-IF(WIN32)
- SET( XTrkCAD_WLIB_DIR
+find_package(Doxygen
+ REQUIRED
+)
+
+if(WIN32)
+ set( XTrkCAD_WLIB_DIR
"mswlib" )
-ELSE(WIN32)
+else(WIN32)
SET( XTrkCAD_WLIB_DIR
"gtklib" )
-ENDIF(WIN32)
+endif(WIN32)
-CONFIGURE_FILE(${doxygen_SOURCE_DIR}/Doxyfile.in ${doxygen_BINARY_DIR}/Doxyfile)
+configure_file(${sourcedoc_SOURCE_DIR}/Doxyfile.in ${sourcedoc_BINARY_DIR}/Doxyfile)
-ADD_CUSTOM_TARGET(docs-doxygen
- COMMAND ${DOXYGEN_EXECUTABLE} ${doxygen_BINARY_DIR}/Doxyfile
+add_custom_target(docs-doxygen
+ COMMAND ${DOXYGEN_EXECUTABLE} ${sourcedoc_BINARY_DIR}/Doxyfile
)
diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in
index 323f2ce..811d50f 100644
--- a/docs/doxygen/Doxyfile.in
+++ b/docs/doxygen/Doxyfile.in
@@ -1,104 +1,130 @@
-# Doxyfile 1.8.2
+# Doxyfile 1.8.16
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
#
-# All text after a hash (#) is considered a comment and will be ignored.
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ").
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
+# This tag specifies the encoding used for all characters in the configuration
+# file that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
+# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
+# The default value is: UTF-8.
DOXYFILE_ENCODING = UTF-8
-# The PROJECT_NAME tag is a single word (or sequence of words) that should
-# identify the project. Note that if you do not use Doxywizard you need
-# to put quotes around the project name if it contains spaces.
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
PROJECT_NAME = XTrackCAD
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
PROJECT_NUMBER = @XTRKCAD_VERSION@
# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer
-# a quick idea about the purpose of the project. Keep the description short.
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF =
-# With the PROJECT_LOGO tag one can specify an logo or icon that is
-# included in the documentation. The maximum height of the logo should not
-# exceed 55 pixels and the maximum width should not exceed 200 pixels.
-# Doxygen will copy the logo to the output directory.
+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+# in the documentation. The maximum height of the logo should not exceed 55
+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+# the logo to the output directory.
PROJECT_LOGO =
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
OUTPUT_DIRECTORY = "@doxygen_BINARY_DIR@"
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
CREATE_SUBDIRS = NO
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = NO
+
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
OUTPUT_LANGUAGE = English
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
+# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all generated output in the proper direction.
+# Possible values are: None, LTR, RTL and Context.
+# The default value is: None.
+
+OUTPUT_TEXT_DIRECTION = None
+
+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
BRIEF_MEMBER_DESC = YES
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
+# The default value is: YES.
REPEAT_BRIEF = YES
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
@@ -113,8 +139,9 @@ ABBREVIATE_BRIEF = "The $name class" \
the
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
+# doxygen will generate a detailed section even if there is only a brief
# description.
+# The default value is: NO.
ALWAYS_DETAILED_SEC = NO
@@ -122,242 +149,310 @@ ALWAYS_DETAILED_SEC = NO
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
+# The default value is: NO.
INLINE_INHERITED_MEMB = NO
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
FULL_PATH_NAMES = YES
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip. Note that you specify absolute paths here, but also
-# relative paths, which will be relative from the directory where doxygen is
-# started.
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
STRIP_FROM_PATH = "@XTrkCAD_SOURCE_DIR@/app/"
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
STRIP_FROM_INC_PATH =
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful if your file system
-# doesn't support long names like on DOS, Mac, or CD-ROM.
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
SHORT_NAMES = NO
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
JAVADOC_AUTOBRIEF = YES
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
+# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
+# such as
+# /***************
+# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
+# Javadoc-style will behave just like regular comments and it will not be
+# interpreted by doxygen.
+# The default value is: NO.
+
+JAVADOC_BANNER = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
QT_AUTOBRIEF = NO
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
MULTILINE_CPP_IS_BRIEF = NO
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
INHERIT_DOCS = YES
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+# page for each member. If set to NO, the documentation of a member will be part
+# of the file/class/namespace that contains it.
+# The default value is: NO.
SEPARATE_MEMBER_PAGES = NO
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
TAB_SIZE = 4
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines (in the resulting output). You can put ^^ in the value part of an
+# alias to insert a newline as if a physical newline was in the original file.
+# When you need a literal { or } or , in the value part of an alias you have to
+# escape them by means of a backslash (\), this can lead to conflicts with the
+# commands \{ and \} for these it is advised to use the version @{ and @} or use
+# a double escape (\\{ and \\})
+
+ALIASES = "logcmd=\xrefitem log \"Log\" \"Log Commands\"" \
+ "prefs=\xrefitem pref \"Pref\" \"Preferences\""
# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding
-# "class=itcl::class" will allow you to use the command class in the
-# itcl::class meaning.
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
TCL_SUBST =
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
OPTIMIZE_OUTPUT_FOR_C = YES
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
OPTIMIZE_FOR_FORTRAN = NO
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
OPTIMIZE_OUTPUT_VHDL = NO
+# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
+# sources only. Doxygen will then generate output that is more tailored for that
+# language. For instance, namespaces will be presented as modules, types will be
+# separated into more groups, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_SLICE = NO
+
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension,
-# and language is one of the parsers supported by doxygen: IDL, Java,
-# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
-# C++. For instance to make doxygen treat .inc files as Fortran files (default
-# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
-# that for custom extensions you also need to set FILE_PATTERNS otherwise the
-# files are not read by doxygen.
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice,
+# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
+# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
+# tries to guess whether the code is fixed or free formatted code, this is the
+# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is
+# Fortran), use: inc=Fortran f=C.
+#
+# Note: For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
EXTENSION_MAPPING =
-# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
-# comments according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you
-# can mix doxygen, HTML, and XML commands with Markdown formatting.
-# Disable only in case of backward compatibilities issues.
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See https://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
MARKDOWN_SUPPORT = YES
-# When enabled doxygen tries to link words that correspond to documented classes,
-# or namespaces to their corresponding documentation. Such a link can be
-# prevented in individual cases by by putting a % sign in front of the word or
+# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
+# to that level are automatically included in the table of contents, even if
+# they do not have an id attribute.
+# Note: This feature currently applies only to Markdown headings.
+# Minimum value: 0, maximum value: 99, default value: 5.
+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+
+TOC_INCLUDE_HEADINGS = 5
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by putting a % sign in front of the word or
# globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
AUTOLINK_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also makes the inheritance and collaboration
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
+# The default value is: NO.
CPP_CLI_SUPPORT = NO
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
SIP_SUPPORT = NO
-# For Microsoft's IDL there are propget and propput attributes to indicate getter and setter methods for a property. Setting this option to YES (the default) will make doxygen replace the get and set methods by a property in the documentation. This will only work if the methods are indeed getting or setting a simple type. If this is not the case, or you want to show the methods anyway, you should set this option to NO.
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
+# tag is set to YES then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
+# The default value is: NO.
DISTRIBUTE_GROUP_DOC = NO
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
+# If one adds a struct or class to a group and this option is enabled, then also
+# any nested class or struct is added to the same group. By default this option
+# is disabled and one has to add nested compounds explicitly via \ingroup.
+# The default value is: NO.
+
+GROUP_NESTED_COMPOUNDS = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
SUBGROUPING = YES
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
-# unions are shown inside the group in which they are included (e.g. using
-# @ingroup) instead of on a separate page (for HTML and Man pages) or
-# section (for LaTeX and RTF).
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
INLINE_GROUPED_CLASSES = NO
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
-# unions with only public data fields will be shown inline in the documentation
-# of the scope in which they are defined (i.e. file, namespace, or group
-# documentation), provided this scope is documented. If set to NO (the default),
-# structs, classes, and unions are shown on a separate page (for HTML and Man
-# pages) or section (for LaTeX and RTF).
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
INLINE_SIMPLE_STRUCTS = NO
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
TYPEDEF_HIDES_STRUCT = NO
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penalty.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will roughly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-SYMBOL_CACHE_SIZE = 0
-
-# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
-# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
-# their name and scope. Since this can be an expensive process and often the
-# same symbol appear multiple times in the code, doxygen keeps a cache of
-# pre-resolved symbols. If the cache is too small doxygen will become slower.
-# If the cache is too large, memory is wasted. The cache size is given by this
-# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
LOOKUP_CACHE_SIZE = 0
@@ -365,345 +460,417 @@ LOOKUP_CACHE_SIZE = 0
# Build related configuration options
#---------------------------------------------------------------------------
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
EXTRACT_ALL = YES
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
EXTRACT_PRIVATE = NO
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
+# methods of a class will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIV_VIRTUAL = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
+# The default value is: NO.
EXTRACT_PACKAGE = NO
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
EXTRACT_STATIC = YES
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO,
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
EXTRACT_LOCAL_CLASSES = YES
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
+# This flag is only useful for Objective-C code. If set to YES, local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO, only methods in the interface are
+# included.
+# The default value is: NO.
EXTRACT_LOCAL_METHODS = NO
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespaces are hidden.
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
EXTRACT_ANON_NSPACES = NO
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
HIDE_UNDOC_MEMBERS = NO
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO, these classes will be included in the various overviews. This option
+# has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
HIDE_UNDOC_CLASSES = NO
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO, these declarations will be
+# included in the documentation.
+# The default value is: NO.
HIDE_FRIEND_COMPOUNDS = NO
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO, these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
HIDE_IN_BODY_DOCS = NO
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
INTERNAL_DOCS = YES
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES, upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
+# (including Cygwin) ands Mac users are advised to set this option to NO.
+# The default value is: system dependent.
CASE_SENSE_NAMES = YES
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES, the
+# scope will be hidden.
+# The default value is: NO.
HIDE_SCOPE_NAMES = NO
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+# append additional text to a page's title, such as Class Reference. If set to
+# YES the compound reference will be hidden.
+# The default value is: NO.
+
+HIDE_COMPOUND_REFERENCE= NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
SHOW_INCLUDE_FILES = YES
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
-# will list include files with double quotes in the documentation
-# rather than with sharp brackets.
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
FORCE_LOCAL_INCLUDES = NO
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
INLINE_INFO = YES
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO, the members will appear in declaration order.
+# The default value is: YES.
SORT_MEMBER_DOCS = YES
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO, the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
SORT_BRIEF_DOCS = NO
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
-# will sort the (brief and detailed) documentation of class members so that
-# constructors and destructors are listed first. If set to NO (the default)
-# the constructors will appear in the respective orders defined by
-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
SORT_MEMBERS_CTORS_1ST = NO
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
SORT_GROUP_NAMES = NO
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
SORT_BY_SCOPE_NAME = NO
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
-# do proper type resolution of all parameters of a function it will reject a
-# match between the prototype and the implementation of a member function even
-# if there is only one candidate or it is obvious which candidate to choose
-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
-# will still accept a match between prototype and implementation in such cases.
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
STRICT_PROTO_MATCHING = NO
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+# list. This list is created by putting \todo commands in the documentation.
+# The default value is: YES.
GENERATE_TODOLIST = YES
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+# list. This list is created by putting \test commands in the documentation.
+# The default value is: YES.
GENERATE_TESTLIST = YES
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
GENERATE_BUGLIST = YES
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
GENERATE_DEPRECATEDLIST= YES
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
ENABLED_SECTIONS =
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or macro consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and macros in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
MAX_INITIALIZER_LINES = 30
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES, the
# list will mention the files that were used to generate the documentation.
+# The default value is: YES.
SHOW_USED_FILES = YES
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
SHOW_FILES = YES
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option.
-# You can optionally specify a file name after the option, if omitted
-# DoxygenLayout.xml will be used as the name of the layout file.
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
LAYOUT_FILE =
-# The CITE_BIB_FILES tag can be used to specify one or more bib files
-# containing the references data. This must be a list of .bib files. The
-# .bib extension is automatically appended if omitted. Using this command
-# requires the bibtex tool to be installed. See also
-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path.
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. See also \cite for info how to create references.
CITE_BIB_FILES =
#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
+# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
WARNINGS = YES
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
WARN_IF_UNDOCUMENTED = YES
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
WARN_IF_DOC_ERROR = YES
-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO, doxygen will only warn about wrong or incomplete
+# parameter documentation, but not about the absence of documentation. If
+# EXTRACT_ALL is set to YES then this flag will automatically be disabled.
+# The default value is: NO.
WARN_NO_PARAMDOC = NO
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
+# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
+# a warning is encountered.
+# The default value is: NO.
+
+WARN_AS_ERROR = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
WARN_FORMAT = "$file:$line: $text"
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
WARN_LOGFILE = ./doxygen.log
#---------------------------------------------------------------------------
-# configuration options related to the input files
+# Configuration options related to the input files
#---------------------------------------------------------------------------
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
+# Note: If this tag is empty the current directory is searched.
INPUT = "@XTrkCAD_SOURCE_DIR@/app/bin" \
"@XTrkCAD_SOURCE_DIR@/app/wlib/@XTrkCAD_WLIB_DIR@" \
"@XTrkCAD_SOURCE_DIR@/app/wlib/include/wlib.h" \
- "@XTrkCAD_SOURCE_DIR@/app/dynstring"
+ "@XTrkCAD_SOURCE_DIR@/app/dynstring"
# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: https://www.gnu.org/software/libiconv/) for the list of
+# possible encodings.
+# The default value is: UTF-8.
INPUT_ENCODING = UTF-8
# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
-# *.f90 *.f *.for *.vhd *.vhdl
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# read by doxygen.
+#
+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
+# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
+# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.
FILE_PATTERNS = *.c \
*.h
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
RECURSIVE = NO
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
# Note that relative paths are relative to the directory from which doxygen is
# run.
@@ -712,14 +879,16 @@ EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
+# The default value is: NO.
EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
EXCLUDE_PATTERNS =
@@ -728,765 +897,1199 @@ EXCLUDE_PATTERNS =
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
EXCLUDE_SYMBOLS =
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
EXAMPLE_PATTERNS =
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
EXAMPLE_RECURSIVE = NO
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty or if
-# non of the patterns match the file name, INPUT_FILTER is applied.
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# INPUT_FILTER) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
FILTER_SOURCE_FILES = NO
# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
-# and it is also possible to disable source filtering for a specific pattern
-# using *.ext= (so without naming a filter). This option only has effect when
-# FILTER_SOURCE_FILES is enabled.
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
FILTER_SOURCE_PATTERNS =
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
#---------------------------------------------------------------------------
-# configuration options related to source browsing
+# Configuration options related to source browsing
#---------------------------------------------------------------------------
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
SOURCE_BROWSER = YES
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
INLINE_SOURCES = NO
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C, C++ and Fortran comments will always remain visible.
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
STRIP_CODE_COMMENTS = YES
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# entity all documented functions referencing it will be listed.
+# The default value is: NO.
REFERENCED_BY_RELATION = YES
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
REFERENCES_RELATION = YES
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
REFERENCES_LINK_SOURCE = YES
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see https://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
USE_HTAGS = NO
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
VERBATIM_HEADERS = YES
+# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
+# cost of reduced performance. This can be particularly helpful with template
+# rich C++ code for which doxygen's built-in parser lacks the necessary type
+# information.
+# Note: The availability of this option depends on whether or not doxygen was
+# generated with the -Duse_libclang=ON option for CMake.
+# The default value is: NO.
+
+CLANG_ASSISTED_PARSING = NO
+
+# If clang assisted parsing is enabled you can provide the compiler with command
+# line options that you would normally use when invoking the compiler. Note that
+# the include paths will already be set by doxygen for the files and directories
+# specified with INPUT and INCLUDE_PATH.
+# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+
+CLANG_OPTIONS =
+
+# If clang assisted parsing is enabled you can provide the clang parser with the
+# path to the compilation database (see:
+# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files
+# were built. This is equivalent to specifying the "-p" option to a clang tool,
+# such as clang-check. These options will then be passed to the parser.
+# Note: The availability of this option depends on whether or not doxygen was
+# generated with the -Duse_libclang=ON option for CMake.
+
+CLANG_DATABASE_PATH =
+
#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
+# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
ALPHABETICAL_INDEX = NO
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
COLS_IN_ALPHA_INDEX = 5
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
IGNORE_PREFIX =
#---------------------------------------------------------------------------
-# configuration options related to the HTML output
+# Configuration options related to the HTML output
#---------------------------------------------------------------------------
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
+# The default value is: YES.
GENERATE_HTML = YES
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = html
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FILE_EXTENSION = .html
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header. Note that when using a custom header you are responsible
-# for the proper inclusion of any scripts and style sheets that doxygen
-# needs, which is dependent on the configuration options used.
-# It is advised to generate a default header using "doxygen -w html
-# header.html footer.html stylesheet.css YourConfigFile" and then modify
-# that header. Note that the header is subject to change so you typically
-# have to redo this when upgrading to a newer version of doxygen or when
-# changing the value of configuration settings such as GENERATE_TREEVIEW!
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_HEADER =
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FOOTER =
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If left blank doxygen will
-# generate a default style sheet. Note that it is recommended to use
-# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
-# tag will in the future become obsolete.
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_STYLESHEET =
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
-# user-defined cascading style sheet that is included after the standard
-# style sheets created by doxygen. Using this option one can overrule
-# certain style aspects. This is preferred over using HTML_STYLESHEET
-# since it does not replace the standard style sheet and is therefor more
-# robust against future updates. Doxygen will copy the style sheet file to
-# the output directory.
+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# cascading style sheets that are included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefore more robust against future updates.
+# Doxygen will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list). For an example see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET =
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
-# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
-# the files will be copied as-is; there are no commands or markers available.
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_FILES =
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
-# Doxygen will adjust the colors in the style sheet and background images
-# according to this color. Hue is specified as an angle on a colorwheel,
-# see http://en.wikipedia.org/wiki/Hue for more information.
-# For instance the value 0 represents red, 60 is yellow, 120 is green,
-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-# The allowed range is 0 to 359.
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the style sheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_HUE = 220
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
-# the colors in the HTML output. For a value of 0 the output will use
-# grayscales only. A value of 255 will produce the most vivid colors.
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_SAT = 100
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
-# the luminance component of the colors in the HTML output. Values below
-# 100 gradually make the output lighter, whereas values above 100 make
-# the output darker. The value divided by 100 is the actual gamma applied,
-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
-# and 100 does not change the gamma.
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_GAMMA = 80
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting
-# this to NO can help when comparing the output of multiple runs.
+# page will contain the date and time when the page was generated. Setting this
+# to YES can help to show when doxygen was last run and thus if the
+# documentation is up to date.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_TIMESTAMP = YES
+# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
+# documentation will contain a main index with vertical navigation menus that
+# are dynamically created via Javascript. If disabled, the navigation index will
+# consists of multiple levels of tabs that are statically embedded in every HTML
+# page. Disable this option to support browsers that do not have Javascript,
+# like the Qt help browser.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_MENUS = YES
+
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_SECTIONS = NO
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
-# entries shown in the various tree structured indices initially; the user
-# can expand and collapse entries dynamically later on. Doxygen will expand
-# the tree to such a level that at most the specified number of entries are
-# visible (unless a fully collapsed tree already exceeds this amount).
-# So setting the number of entries 1 will produce a full collapsed tree by
-# default. 0 is a special value representing an infinite number of entries
-# and will result in a full expanded tree by default.
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_INDEX_NUM_ENTRIES = 100
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: https://developer.apple.com/xcode/), introduced with OSX
+# 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
+# genXcode/_index.html for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_DOCSET = NO
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_FEEDNAME = "Doxygen generated docs"
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_BUNDLE_ID = org.doxygen.Project
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
-# identify the documentation publisher. This should be a reverse domain-name
-# style string, e.g. com.mycompany.MyDocSet.documentation.
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_PUBLISHER_NAME = Publisher
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_HTMLHELP = NO
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_FILE =
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler (hhc.exe). If non-empty,
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
HHC_LOCATION =
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
+# The GENERATE_CHI flag controls if a separate .chi index file is generated
+# (YES) or that it should be included in the master .chm file (NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
GENERATE_CHI = NO
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_INDEX_ENCODING =
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
+# The BINARY_TOC flag controls whether a binary table of contents is generated
+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
BINARY_TOC = NO
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
TOC_EXPAND = NO
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
-# that can be used as input for Qt's qhelpgenerator to generate a
-# Qt Compressed Help (.qch) of the generated HTML documentation.
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_QHP = YES
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
QCH_FILE = doc.qch
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_NAMESPACE = org.doxygen.Project
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_VIRTUAL_FOLDER = doc
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
-# add. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_NAME =
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
-# Qt Help Project / Custom Filters</a>.
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
-# Qt Help Project / Filter Attributes</a>.
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_SECT_FILTER_ATTRS =
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
QHG_LOCATION =
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
-# will be generated, which together with the HTML files, form an Eclipse help
-# plugin. To install this plugin and make it available under the help contents
-# menu in Eclipse, the contents of the directory containing the HTML and XML
-# files needs to be copied into the plugins directory of eclipse. The name of
-# the directory within the plugins directory should be the same as
-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
-# the help appears.
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_ECLIPSEHELP = NO
-# A unique identifier for the eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have
-# this name.
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
ECLIPSE_DOC_ID = org.doxygen.Project
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
-# at top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it. Since the tabs have the same information as the
-# navigation tree you can set this option to NO if you already set
-# GENERATE_TREEVIEW to YES.
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
DISABLE_INDEX = NO
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-# Since the tree basically has the same information as the tab index you
-# could consider to set DISABLE_INDEX to NO when enabling this option.
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_TREEVIEW = NO
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
-# documentation. Note that a value of 0 will completely suppress the enum
-# values from appearing in the overview section.
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
ENUM_VALUES_PER_LINE = 4
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
TREEVIEW_WIDTH = 250
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
-# links to external symbols imported via tag files in a separate window.
+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
EXT_LINKS_IN_WINDOW = NO
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
FORMULA_FONTSIZE = 10
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are
-# not supported properly for IE 6.0, but are supported on all modern browsers.
-# Note that when changing this option you need to delete any form_*.png files
-# in the HTML output before the changes have effect.
+# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
FORMULA_TRANSPARENT = YES
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
-# (see http://www.mathjax.org) which uses client side Javascript for the
-# rendering instead of using prerendered bitmaps. Use this if you do not
-# have LaTeX installed or if you want to formulas look prettier in the HTML
-# output. When enabled you may also need to install MathJax separately and
-# configure the path to it using the MATHJAX_RELPATH option.
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# https://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
USE_MATHJAX = NO
-# When MathJax is enabled you need to specify the location relative to the
-# HTML output directory using the MATHJAX_RELPATH option. The destination
-# directory should contain the MathJax.js script. For instance, if the mathjax
-# directory is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to
-# the MathJax Content Delivery Network so you can quickly see the result without
-# installing MathJax.
-# However, it is strongly recommended to install a local
-# copy of MathJax from http://www.mathjax.org before deployment.
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from https://www.mathjax.org before deployment.
+# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/.
+# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
-# names that should be enabled during MathJax rendering.
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_EXTENSIONS =
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
-# for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using
-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
-# (GENERATE_DOCSET) there is already a search function so this one should
-# typically be disabled. For large projects the javascript based search engine
-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
SEARCHENGINE = NO
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a PHP enabled web server instead of at the web client
-# using Javascript. Doxygen will generate the search PHP script and index
-# file to put on the web server. The advantage of the server
-# based approach is that it scales better to large projects and allows
-# full text search. The disadvantages are that it is more difficult to setup
-# and does not have live searching capabilities.
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
SERVER_BASED_SEARCH = NO
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer (doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: https://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer (doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: https://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS =
+
#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
+# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
+# The default value is: YES.
GENERATE_LATEX = NO
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-# Note that when enabling USE_PDFLATEX this option is only used for
-# generating bitmaps for formulas in the HTML output, but not in the
-# Makefile that is written to the output directory.
+# invoked.
+#
+# Note that when not enabling USE_PDFLATEX the default is latex when enabling
+# USE_PDFLATEX the default is pdflatex and when in the later case latex is
+# chosen this is overwritten by pdflatex. For specific output languages the
+# default can have been set differently, this depends on the implementation of
+# the output language.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_CMD_NAME = latex
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# Note: This tag is used in the Makefile / make.bat.
+# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
+# (.tex).
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
MAKEINDEX_CMD_NAME = makeindex
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
+# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
+# generate index for LaTeX. In case there is no backslash (\) as first character
+# it will be automatically added in the LaTeX code.
+# Note: This tag is used in the generated output file (.tex).
+# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
+# The default value is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_MAKEINDEX_CMD = makeindex
+
+# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
COMPACT_LATEX = NO
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, letter, legal and
-# executive. If left blank a4wide will be used.
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
PAPER_TYPE = a4wide
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. The package can be specified just
+# by its name or with the correct syntax as to be used with the LaTeX
+# \usepackage command. To get the times font for instance you can specify :
+# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+# To use the option intlimits with the amsmath package you can specify:
+# EXTRA_PACKAGES=[intlimits]{amsmath}
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
EXTRA_PACKAGES =
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
+# string, for the replacement values of the other commands the user is referred
+# to HTML_HEADER.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HEADER =
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
-# the generated latex document. The footer should contain everything after
-# the last chapter. If it is left blank doxygen will generate a
-# standard footer. Notice: only use this tag if you know what you are doing!
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer. See
+# LATEX_HEADER for more information on how to generate a default footer and what
+# special commands can be used inside the footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_FOOTER =
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
+# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# LaTeX style sheets that are included after the standard style sheets created
+# by doxygen. Using this option one can overrule certain style aspects. Doxygen
+# will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_STYLESHEET =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
PDF_HYPERLINKS = NO
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
+# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES, to get a
# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
USE_PDFLATEX = NO
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BATCHMODE = NO
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HIDE_INDICES = NO
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-# source code with syntax highlighting in the LaTeX output.
-# Note that which sources are shown also depends on other settings
-# such as SOURCE_BROWSER.
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_SOURCE_CODE = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
-# http://en.wikipedia.org/wiki/BibTeX for more info.
+# bibliography, e.g. plainnat, or ieeetr. See
+# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BIB_STYLE = plain
+# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_TIMESTAMP = NO
+
+# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
+# path from which the emoji images will be read. If a relative path is entered,
+# it will be relative to the LATEX_OUTPUT directory. If left blank the
+# LATEX_OUTPUT directory will be used.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EMOJI_DIRECTORY =
+
#---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Configuration options related to the RTF output
#---------------------------------------------------------------------------
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
+# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
GENERATE_RTF = NO
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_OUTPUT = rtf
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
+# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
COMPACT_RTF = NO
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_HYPERLINKS = NO
-# Load style sheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# configuration file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_STYLESHEET_FILE =
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's configuration file. A template extensions file can be
+# generated using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_EXTENSIONS_FILE =
+# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
+# with syntax highlighting in the RTF output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_SOURCE_CODE = NO
+
#---------------------------------------------------------------------------
-# configuration options related to the man page output
+# Configuration options related to the man page output
#---------------------------------------------------------------------------
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
+# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
GENERATE_MAN = NO
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_OUTPUT = man
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_EXTENSION = .3
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_LINKS = NO
#---------------------------------------------------------------------------
-# configuration options related to the XML output
+# Configuration options related to the XML output
#---------------------------------------------------------------------------
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
+# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
GENERATE_XML = NO
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
XML_OUTPUT = xml
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
+# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING = YES
+
+# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
+# namespace members in file scope as well, matching the HTML output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_XML is set to YES.
-XML_SCHEMA =
+XML_NS_MEMB_FILE_SCOPE = NO
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
-XML_DTD =
+# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
+GENERATE_DOCBOOK = NO
-XML_PROGRAMLISTING = YES
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT = docbook
+
+# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
+# program listings (including syntax highlighting and cross-referencing
+# information) to the DOCBOOK output. Note that enabling this will significantly
+# increase the size of the DOCBOOK output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_PROGRAMLISTING = NO
#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
+# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
+# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
+# the structure of the code including all documentation. Note that this feature
+# is still experimental and incomplete at the moment.
+# The default value is: NO.
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
+# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
+# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
GENERATE_PERLMOD = NO
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
+# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_LATEX = NO
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.
-# This is useful
-# if you want to understand what is going on.
-# On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
+# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO, the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_PRETTY = YES
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_MAKEVAR_PREFIX =
@@ -1494,329 +2097,432 @@ PERLMOD_MAKEVAR_PREFIX =
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
+# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
ENABLE_PREPROCESSING = YES
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
+# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+# in the source code. If set to NO, only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
MACRO_EXPANSION = NO
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_ONLY_PREDEF = NO
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# pointed to by INCLUDE_PATH will be searched when a #include is found.
+# If the SEARCH_INCLUDES tag is set to YES, the include files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
INCLUDE_FILE_PATTERNS =
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
PREDEFINED =
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition that
-# overrules the definition found in the source code.
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_AS_DEFINED =
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all references to function-like macros
-# that are alone on a line, have an all uppercase name, and do not end with a
-# semicolon, because these will confuse the parser if not removed.
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
-# Configuration::additions related to external references
+# Configuration options related to external references
#---------------------------------------------------------------------------
-# The TAGFILES option can be used to specify one or more tagfiles. For each
-# tag file the location of the external documentation should be added. The
-# format of a tag file without this location is as follows:
-#
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
-#
# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths
-# or URLs. Note that each tag file must have a unique name (where the name does
-# NOT include the path). If a tag file is not located in the directory in which
-# doxygen is run, you must also specify the path to the tagfile here.
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
TAGFILES =
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
GENERATE_TAGFILE =
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
+# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+# the class index. If set to NO, only the inherited external classes will be
+# listed.
+# The default value is: NO.
ALLEXTERNALS = NO
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
+# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
EXTERNAL_GROUPS = YES
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
+# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
-PERL_PATH = /usr/bin/perl
+EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option also works with HAVE_DOT disabled, but it is recommended to
-# install and use dot, since it yields more powerful graphs.
+# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
CLASS_DIAGRAMS = YES
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
-MSCGEN_PATH =
+DIA_PATH =
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
+# If set to YES the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
HAVE_DOT = NO
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
-# allowed to run in parallel. When set to 0 (the default) doxygen will
-# base this on the number of processors available in the system. You can set it
-# explicitly to a value larger than 0 to get control over the balance
-# between CPU load and processing speed.
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_NUM_THREADS = 0
-# By default doxygen will use the Helvetica font for all dot files that
-# doxygen generates. When you want a differently looking font you can specify
-# the font name using DOT_FONTNAME. You need to make sure dot is able to find
-# the font, which can be done by putting it in a standard location or by setting
-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
-# directory containing the font.
+# When you want a differently looking font in the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTNAME = Helvetica
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTSIZE = 10
-# By default doxygen will tell dot to use the Helvetica font.
-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
-# set the path where dot can find it.
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTPATH =
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# CLASS_DIAGRAMS tag to NO.
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
CLASS_GRAPH = YES
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
COLLABORATION_GRAPH = YES
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
GROUP_GRAPHS = YES
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
UML_LOOK = NO
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside
-# the class node. If there are many fields or methods and many nodes the
-# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
-# threshold limits the number of items for each type to make the size more
-# managable. Set this to 0 for no limit. Note that the threshold may be
-# exceeded by 50% before the limit is enforced.
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
UML_LIMIT_NUM_FIELDS = 10
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
TEMPLATE_RELATIONS = NO
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDE_GRAPH = YES
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDED_BY_GRAPH = YES
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command. Disabling a call graph can be
+# accomplished by means of the command \hidecallgraph.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
CALL_GRAPH = NO
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command. Disabling a caller graph can be
+# accomplished by means of the command \hidecallergraph.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
CALLER_GRAPH = NO
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will generate a graphical hierarchy of all classes instead of a textual one.
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
GRAPHICAL_HIERARCHY = YES
-# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are svg, png, jpg, or gif.
-# If left blank png will be used. If you choose svg you need to set
-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible in IE 9+ (other browsers do not have this requirement).
+# generated by dot. For an explanation of the image formats see the section
+# output formats in the documentation of the dot tool (Graphviz (see:
+# http://www.graphviz.org/)).
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
+# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+# png:gdiplus:gdiplus.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_IMAGE_FORMAT = png
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
-# Note that this requires a modern browser other than Internet Explorer.
-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible. Older versions of IE do not have SVG support.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
INTERACTIVE_SVG = NO
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
DOTFILE_DIRS =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the
-# \mscfile command).
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
MSCFILE_DIRS =
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS =
+
+# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+# path where java can find the plantuml.jar file. If left blank, it is assumed
+# PlantUML is not used or called during a preprocessing step. Doxygen will
+# generate a warning when it encounters a \startuml command in this case and
+# will not generate output for the diagram.
+
+PLANTUML_JAR_PATH =
+
+# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
+# configuration file for plantuml.
+
+PLANTUML_CFG_FILE =
+
+# When using plantuml, the specified paths are searched for files specified by
+# the !include statement in a plantuml block.
+
+PLANTUML_INCLUDE_PATH =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_GRAPH_MAX_NODES = 50
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_TRANSPARENT = NO
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_MULTI_TARGETS = NO
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
GENERATE_LEGEND = YES
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
+# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_CLEANUP = YES
diff --git a/xtrkcad-config.h.in b/xtrkcad-config.h.in
index d532aa9..9699812 100644
--- a/xtrkcad-config.h.in
+++ b/xtrkcad-config.h.in
@@ -16,13 +16,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
*/
/* Generated file, do not edit! */
#cmakedefine XTRKCAD_USE_GETTEXT
#cmakedefine XTRKCAD_TESTING
+#cmakedefine XTRKCAD_CREATE_SVG 1
#define XTRKCAD_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@"
#define XTRKCAD_PACKAGE "@XTRKCAD_PACKAGE@"
@@ -32,4 +33,3 @@
#define XTRKCAD_MINPARAMVERSION (1)
#endif // !XTRKCAD_CONFIG_H
-