charts.lines: add flip-y-axis

char-rename
Alexander Iljin 2017-01-20 00:55:29 +03:00 committed by John Benediktsson
parent be999902fd
commit 467bc37137
2 changed files with 18 additions and 2 deletions

View File

@ -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

View File

@ -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 ;