charts.lines: add fix-left-chunk and fix-right-chunk

char-rename
Alexander Iljin 2017-01-14 01:53:26 +03:00 committed by John Benediktsson
parent 48304ce5b5
commit 5c0fa9c94e
1 changed files with 30 additions and 0 deletions

View 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.