From 467bc3713790ae920e3d289102d2bd75b40ba9ee Mon Sep 17 00:00:00 2001 From: Alexander Iljin Date: Fri, 20 Jan 2017 00:55:29 +0300 Subject: [PATCH] charts.lines: add flip-y-axis --- lines/lines-tests.factor | 11 +++++++++++ lines/lines.factor | 9 +++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lines/lines-tests.factor b/lines/lines-tests.factor index 9721703d48..d548eab506 100644 --- a/lines/lines-tests.factor +++ b/lines/lines-tests.factor @@ -220,6 +220,17 @@ IN: charts.lines.tests drawable-chunks [ { } like ] map ] unit-test +{ 0 } [ -10 10 middle ] unit-test +{ 15 } [ 10 20 middle ] unit-test +{ -81/2 } [ -50 -31 middle ] unit-test + +{ + { { { 0 300 } { 1 200 } { 2 150 } { 3 100 } { 4 0 } } } +} [ + { { { 0 0 } { 1 100 } { 2 150 } { 3 200 } { 4 300 } } } + { 0 300 } flip-y-axis +] unit-test + { { } } [ { } { } clip-data ] unit-test diff --git a/lines/lines.factor b/lines/lines.factor index da0946863f..4b885c142c 100644 --- a/lines/lines.factor +++ b/lines/lines.factor @@ -206,6 +206,11 @@ SYMBOL: elt monotonic-split-slice ] 2keep (drawable-chunks) ; +: middle ( min max -- middle ) dupd swap - 2 / + ; + +: flip-y-axis ( chunks ymin,ymax -- chunks ) + first2 middle 2 * '[ [ first2 _ swap - 2array ] map ] map ; + PRIVATE> : draw-line ( seq -- ) @@ -228,6 +233,6 @@ M: line draw-gadget* dup parent>> dup chart? [ chart-axes swap [ color>> gl-color ] [ data>> ] bi - dupd clip-data swap second drawable-chunks - [ [ draw-line ] each ] unless-empty + dupd clip-data swap second [ drawable-chunks ] keep + flip-y-axis [ [ draw-line ] each ] unless-empty ] [ 2drop ] if ;