]> gitweb.factorcode.org Git - factor.git/commitdiff
charts.lines: add fix-left-chunk and fix-right-chunk
authorAlexander Iljin <ajsoft@yandex.ru>
Fri, 13 Jan 2017 22:53:26 +0000 (01:53 +0300)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 17 Apr 2017 20:54:50 +0000 (13:54 -0700)
lines/lines.factor

index df28ccb87b905d81b4f5beba031188f8eff230f4..4c8f795eb5be9e122105fe8e8dc86d6fca91159d 100644 (file)
@@ -130,6 +130,36 @@ ALIAS: y second
         left-point y right-point y > [ swap ] when 2array
     ] if ;
 
+:: fix-left-chunk ( left right ymin ymax -- left' )
+    left last :> left-point right first :> right-point
+    left-point y { [ ymin = ] [ ymax = ] } 1|| [
+        left
+    ] [
+        left-point y right-point y < ymin ymax ? :> y-coord
+        left-point x right-point x = [
+            left-point x y-coord 2array
+        ] [
+            left-point right-point calc-line-slope
+            y-coord left-point calc-point-y
+        ] if
+        left but-last-slice swap suffix
+    ] if ;
+
+:: fix-right-chunk ( left right ymin ymax -- right' )
+    left last :> left-point right first :> right-point
+    right-point y { [ ymin = ] [ ymax = ] } 1|| [
+        right
+    ] [
+        left-point y right-point y < ymin ymax ? :> y-coord
+        left-point x right-point x = [
+            right-point x y-coord 2array
+        ] [
+            left-point right-point calc-line-slope
+            y-coord left-point calc-point-y
+        ] if
+        right rest-slice swap suffix
+    ] if ;
+
 ! Split data into chunks to be drawn within the [ymin,ymax] limits.
 ! Return the (empty?) sequence of chunks, possibly with some new
 ! points at ymin and ymax at the gap bounds.