From: Robert Kaiser Date: Tue, 9 Dec 2008 01:52:23 +0000 (+0100) Subject: add an option for synching proportions and implement it (mostly) X-Git-Url: https://git-public.kairo.at/?p=mandelbrot.git;a=commitdiff_plain;h=76a4363b8fef4641e47d6e357ebbc6b4637b8ac0;ds=sidebyside add an option for synching proportions and implement it (mostly) --- diff --git a/xulapp/chrome/mandelbrot/content/image-settings.js b/xulapp/chrome/mandelbrot/content/image-settings.js index a907f5a..3b19434 100644 --- a/xulapp/chrome/mandelbrot/content/image-settings.js +++ b/xulapp/chrome/mandelbrot/content/image-settings.js @@ -46,6 +46,21 @@ function drawPreview() { let canvas = document.getElementById("mbrotPreview"); let context = canvas.getContext("2d"); + if (document.getElementById("imgWidth").value / + document.getElementById("imgHeight").value + < 80 / 50) { + canvas.height = 50; + canvas.width = canvas.height * + document.getElementById("imgWidth").value / + document.getElementById("imgHeight").value; + } + else { + canvas.width = 80; + canvas.height = canvas.width * + document.getElementById("imgHeight").value / + document.getElementById("imgWidth").value; + } + let Cr_min = parseFloat(document.getElementById("Cr_min").value); let Cr_max = parseFloat(document.getElementById("Cr_max").value); if ((Cr_min < -2) || (Cr_min > 2) || @@ -82,14 +97,41 @@ function drawPreview() { } function recalcCoord(coord, target) { + let othercoord = (coord == 'Ci') ? 'Cr' : 'Ci'; + let owndim = (coord == 'Ci') ? 'height' : 'width'; + let otherdim = (coord == 'Ci') ? 'width' : 'height'; if (target == 'scale') { - document.getElementById(coord + '_scale').value = + var myscale = parseFloat(document.getElementById(coord + '_max').value) - parseFloat(document.getElementById(coord + '_min').value); + document.getElementById(coord + '_scale').value = roundCoord(myscale); } else if (target == 'max') { - document.getElementById('mandelbrot.last_image.' + coord + '_max').value = + let mymax = parseFloat(document.getElementById(coord + '_min').value) + parseFloat(document.getElementById(coord + '_scale').value); + document.getElementById('mandelbrot.last_image.' + coord + '_max').value = roundCoord(mymax); + var myscale = document.getElementById(coord + '_scale').value; } + if (document.getElementById('syncProp').checked) { + let otherscale = myscale * + document.getElementById('mandelbrot.image.' + otherdim).value / + document.getElementById('mandelbrot.image.' + owndim).value; + document.getElementById(othercoord + '_scale').value = roundCoord(otherscale); + let othermax = + parseFloat(document.getElementById(othercoord + '_min').value) + + parseFloat(document.getElementById(othercoord + '_scale').value); + document.getElementById('mandelbrot.last_image.' + othercoord + '_max').value = roundCoord(othermax); + } +} + +function checkProportions() { + if (!document.getElementById('syncProp').checked) { + recalcCoord('Cr', 'scale'); + } +} + +function roundCoord(floatval) { + // We should round to 10 decimals here or so + return floatval; } \ No newline at end of file diff --git a/xulapp/chrome/mandelbrot/content/image-settings.xul b/xulapp/chrome/mandelbrot/content/image-settings.xul index c4c6092..752fcef 100644 --- a/xulapp/chrome/mandelbrot/content/image-settings.xul +++ b/xulapp/chrome/mandelbrot/content/image-settings.xul @@ -69,6 +69,8 @@ type="string"/> + @@ -109,12 +111,14 @@ @@ -125,6 +129,16 @@