chiark / gitweb /
layout/layout: join arcline gets sense of tracks right when swap=-1
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 28 Nov 2010 17:26:02 +0000 (17:26 +0000)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 28 Nov 2010 17:26:02 +0000 (17:26 +0000)
layout/layout

index aeec2029d56fed7a124fe1073b95d6a170d338db..616e16f2f61e7d0204c49d72424310953033f1c9 100755 (executable)
@@ -1220,11 +1220,18 @@ sub joins_arcline ($$$$) {
            o("ok\n");
            $j->{A}= $ap->{A};
            $c->{A}= 0;
-           $path= [{ T => Line, A => $ap, B => $j, L => $aja },
-                   { T => Arc, F => $j, C => $c, R => $rj,
-                     D => -signum($rj) * a_normalise
-                         (-signum($rj) * ($bp->{A} + $pi - $j->{A}), 0) }];
-           $path= [ reverse @$path ] if $swap<0;
+           my $angle= -signum($rj) *
+               a_normalise(-signum($rj) * ($bp->{A} + $pi - $j->{A}), 0);
+           if ($swap > 0) {
+               $path= [{ T => Line, A => $ap, B => $j, L => $aja },
+                       { T => Arc, F => $j, C => $c, R => $rj,
+                         D => $angle }];
+           } else {
+               $path= [{ T => Arc, F => $from, C => $c, R => -$rj,
+                         D => -$angle },
+                       { T => Line, A => { %$j, A => $to->{A} },
+                         B => $to, L => $aja }];
+           }
            push @$results, { Path => $path, SolKinds =>  [ 'arcline' ] };
        }
     }