From: ian Date: Sun, 25 Jan 2004 23:06:47 +0000 (+0000) Subject: can do spindly X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=2da27a09e8c12884f6236bc82418189999ba9690;p=trains.git can do spindly --- diff --git a/layout/layout b/layout/layout index 1f8d4ef..0db06b5 100755 --- a/layout/layout +++ b/layout/layout @@ -16,6 +16,7 @@ our $psu_gauge= 9; our $psu_sleeperlen= 17; our $psu_sleeperlw= 15; our $psu_raillw= 1.0; +our $psu_thinlw= 1.0; our $lmu_marklw= 4; our $lmu_marktpt= 11; @@ -27,6 +28,9 @@ our $lmu_txtboxlw= 1; our $pi= atan2(0,-1); +our $draw_t_def= '1'; +#$draw_t_def= 'T'; + # Data structures: # $ctx->{CmdLog}= undef } not in defobj # $ctx->{CmdLog}[]= [ command args ] } in defobj @@ -339,6 +343,11 @@ sub psu_coords ($$$) { return $ea_zo{X}." ".$ea_zo{Y}; } +sub parametric__o_pt ($) { + my ($pt)=@_; + o_path_point("$pt->{X} $pt->{Y}"); +} + sub parametric_segment ($$$$) { my ($p0,$p1,$lenperp,$calcfn) = @_; # makes $p (global) go from $p0 to $p1 ($p1>$p0) @@ -346,8 +355,8 @@ sub parametric_segment ($$$$) { # must have a uniform `density' in parameter space # $calcfn is invoked with $p set and should return a loc # (ie, ref to X =>, Y =>, A =>). - my ($pa,$pb,@ends,$side,$ppu,$e,$v,$tick); - return unless $ctx->{Draw}{T} =~ m/1/; + my ($pa,$pb,@ends,$side,$ppu,$e,$v,$tick,$thinline); + return unless $ctx->{Draw}{T} =~ m/./; $ppu= $psu_ulen/$lenperp; my ($railctr)=($psu_gauge + $psu_raillw)*0.5; my ($tickend)=($psu_allwidth - $psu_ticklen); @@ -355,6 +364,19 @@ sub parametric_segment ($$$$) { my ($sleeperctr)=($psu_ulen*0.5); my ($sleeperend)=($psu_sleeperlen*0.5); print DEBUG "ps $p0 $p1 $lenperp ($ppu)\n"; + $thinline= $ctx->{Draw}{T} !~ m/1/; + if ($thinline) { + my ($pt); + o(" $psu_thinlw setlinewidth\n"); + o_path_begin(); + for ($param=$p0; $param<$p1; $param += $ppu) { + parametric__o_pt(&$calcfn); + } + $param=$p1; + parametric__o_pt(&$calcfn); + o(" stroke\n"); + return; + } for ($pa= $p0; $pa<$p1; $pa=$pb) { $pb= $pa + $ppu; $param= $pa; $ends[0]= @ends ? $ends[1] : &$calcfn; @@ -594,7 +616,7 @@ sub newctx () { $ctx= { Trans => { X => 0.0, Y => 0.0, A => 0.0, R => 1.0 }, InRunObj => "", - Draw => { T => 1, L => L1 } + Draw => { T => $draw_t_def, L => L1 } }; }