From 118b06be29981db4aa759de0add6e6b43503ebaf Mon Sep 17 00:00:00 2001 From: Alexander Iljin Date: Wed, 11 Jan 2017 00:32:45 +0300 Subject: [PATCH] charts.lines: make clip-by-first operate on slices internally --- lines/lines.factor | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lines/lines.factor b/lines/lines.factor index be6f190127..1c8f434f18 100644 --- a/lines/lines.factor +++ b/lines/lines.factor @@ -21,11 +21,12 @@ TUPLE: line < gadget color data ; : finder ( elt seq -- seq quot ) [ first ] dip [ first = not ] with ; inline -: adjusted-tail ( index elt seq -- seq' ) - [ finder find-last-from drop ] keep swap [ 1 + tail ] when* ; +: adjusted-tail-slice ( index elt seq -- slice ) + [ finder find-last-from drop ] keep + swap [ 1 + tail-slice ] when* ; -: adjusted-head ( index elt seq -- seq' ) - [ finder find-from drop ] keep swap [ head ] when* ; +: adjusted-head-slice ( index elt seq -- slice ) + [ finder find-from drop ] keep swap [ head-slice ] when* ; ! : data-rect ( data -- rect ) ! [ [ first first ] [ last first ] bi ] keep @@ -53,8 +54,9 @@ TUPLE: line < gadget color data ; : clip-by-first ( min,max pairs -- pairs' ) 2dup first-in-bounds? [ - [ dup first ] dip [ search-first ] keep adjusted-tail - [ second ] dip [ search-first ] keep adjusted-head + [ dup first ] dip [ search-first ] keep adjusted-tail-slice + [ second ] dip [ search-first ] keep adjusted-head-slice + dup like ] [ 2drop { } clone ] if ;