From 92626ae00e33ede8d14f844f7891d471008cdeb5 Mon Sep 17 00:00:00 2001 From: ian Date: Fri, 11 Mar 2005 18:08:32 +0000 Subject: [PATCH] wip for %L segmentpart output --- layout/layout | 52 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/layout/layout b/layout/layout index bf006ce..9e03827 100755 --- a/layout/layout +++ b/layout/layout @@ -241,7 +241,7 @@ our @al; # current cmd our $o=''; our $ol=''; -our $param; # for parametric_curve +our $param; # for parametric_segment # ev_... functions # @@ -623,11 +623,46 @@ sub parametric__o_pt ($) { o_path_point("$pt->{X} $pt->{Y}"); } -sub segment_used_len ($) { - my ($used) = @_; +our $segused_incurrent; +our $segused_currentpt; + +sub segment_used_begin ($) { + $segused_incurrent= 0; + $segused_currentpt= $_[0]; +} +sub segment_used_middle ($$) { + my ($used,$pt) = @_: + segment_used__len($used,$pt); +} +sub segment_used_end ($$) { + my ($used,$pt) = @_: + segment_used__len($used,$pt); + segment_used__print(); +} +sub segment_used__print ($) { + my ($pt) = @_; + if ($segused_incurrent > 0) { + o("%L segmentpart ". + $ctx->{Layer}{Level}.$ctx->{Layer}{Kind}." ".$segments[0]." ". + loc2dbg($segused_currentpt)." ". + log2dbg($pt)." ". + $segused_incurrent); + } + $segused_incurrent= undef; + $segused_currentpt= undef; +} + +sub segment_used__len ($$) { + my ($used,$pt) = @_; + $segused_incurrent++; + return if @segments < 3; $segments[1] -= $used; return if $segments[1] > 0; + + segment_used__print(); + segment_used_begin($pt); + @segments= @segments[2..$#segments]; o("% segments @segments\n"); } @@ -657,6 +692,7 @@ print DEBUG "ps $p0 $p1 $lenperp ($ppu)\n"; o(" $psu_subseglw setlinewidth\n"); $param=$p0; $pt= &$calcfn; + segment_used_begin($pt); for (;;) { $movstroke= " stroke\n"; $csegbare= $segments[0]; @@ -684,17 +720,19 @@ print DEBUG "ps $p0 $p1 $lenperp ($ppu)\n"; } o_path_begin(); parametric__o_pt($pt); - + $param += $ppu; last if $param>=$p1; - segment_used_len($psu_ulen); $pt= &$calcfn; + segment_used_middle($psu_ulen,$pt); parametric__o_pt($pt); o($movstroke); } - segment_used_len(($p1-($param-$ppu)) * $lenperp); + $used_last= $p1-($param-$ppu); $param=$p1; - parametric__o_pt(&$calcfn); + $pt= &$calcfn; + segment_used_end($used_last * $lenperp, $pt); + parametric__o_pt($pt); o($movstroke); } if ($draw =~ m/C/) { -- 2.30.2