Mercurial > hg > may
changeset 137:b28512329efc
Offscreen rendering & save-to-file (save-to-file works, offscreen currently doesn't)
author | Chris Cannam |
---|---|
date | Tue, 23 Apr 2013 16:27:28 +0100 |
parents | 1101ecb57e47 |
children | f68c92bd2adb |
files | .hgsubstate yetilab/plot/plot.yeti |
diffstat | 2 files changed, 35 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgsubstate Tue Apr 23 13:51:12 2013 +0100 +++ b/.hgsubstate Tue Apr 23 16:27:28 2013 +0100 @@ -1,1 +1,1 @@ -7349390722d80414bd0ce280d121f344d9908d0d ext +423dfec8262cd97b03e3137bcb05729f86cab6de ext
--- a/yetilab/plot/plot.yeti Tue Apr 23 13:51:12 2013 +0100 +++ b/yetilab/plot/plot.yeti Tue Apr 23 16:27:28 2013 +0100 @@ -14,6 +14,10 @@ import org.jzy3d.plot3d.rendering.canvas: Quality; import org.jzy3d.plot3d.rendering.view.modes: ViewPositionMode; +import javax.imageio: ImageIO; + +import java.io: File; + chartColours = array [ { r = 82, g = 126, b = 154 }, // dark steel blue { r = 161, g = 54, b = 2 }, // red @@ -71,7 +75,9 @@ var animated = false, var normalised = false, var unit = "", - var xkeys = array (sort defaultXKeys) + var xkeys = array (sort defaultXKeys), + var saveTo = "", + var display = true, }; for options \case of @@ -81,12 +87,32 @@ Normalised n: parsed.normalised := n; Unit u: parsed.unit := u; Labels ll: parsed.labels := ll; + SaveTo file: parsed.saveTo := file; + Display d: parsed.display := d; esac; if empty? parsed.labels then parsed.labels := mapIntoHash id id parsed.keys fi; parsed); +newChart opts = + (quality = Quality#Fastest; + quality#setAnimated(opts.animated); +// if opts.display then + new Chart(quality); +// else +// new Chart(quality, "offscreen,640,640"); +// fi); + ); + +showChart opts chart is 'a -> ~Chart -> () = + (//if opts.display then + \() ChartLauncher#openChart(chart); +// fi; + if opts.saveTo != "" then + \() chart#screenshot(opts.saveTo); + fi); + plotMatrix matrix = (mapper = newMatrixMapper matrix; size = matrix.size; @@ -107,12 +133,10 @@ plotBarChart options values = (opts = parseOptions options (keys values) []; - quality = Quality#Fastest; - quality#setAnimated(opts.animated); - chart = new Chart(quality); + chart = newChart opts; var n = length opts.keys; scene = chart#getScene(); - ticks = new float[n+1]; + ticks = new double[n+1]; tickLabels = new TickLabelMap(); var i = 0; var x = n - i - 1; @@ -143,14 +167,11 @@ axes#setXTickProvider(new StaticTickProvider(ticks)); axes#setXTickRenderer(tickLabels); axes#setYTickLabelDisplayed(false); - ChartLauncher#openChart(chart); - ()); + showChart opts chart); plotLines options values = (opts = parseOptions options (keys values) (keys values[head (keys values)]); - quality = Quality#Fastest; - quality#setAnimated(opts.animated); - chart = new Chart(quality); + chart = newChart opts; scene = chart#getScene(); n = length opts.xkeys; var z = 0; @@ -179,8 +200,7 @@ axes#setZAxeLabelDisplayed(true); axes#setZAxeLabel(opts.unit); axes#setYTickLabelDisplayed(false); - ChartLauncher#openChart(chart); - ()); + showChart opts chart); stack keys xkeys values normalised = (stacked = mapIntoHash id \(mapIntoHash id \{ y0 = 0, y1 = 0 } xkeys) keys; @@ -215,9 +235,7 @@ plotStacked options values = (opts = parseOptions options (keys values) (keys values[head (keys values)]); - quality = Quality#Fastest; - quality#setAnimated(opts.animated); - chart = new Chart(quality); + chart = newChart opts; scene = chart#getScene(); stacked = stack opts.keys opts.xkeys values opts.normalised; var z = 0; @@ -252,8 +270,7 @@ axes#setZAxeLabel(opts.unit); fi; axes#setYTickLabelDisplayed(false); - ChartLauncher#openChart(chart); - ()); + showChart opts chart); plotStructure structure = case structure of