add scale field in image settings, add extra button for drawing image right away#
[mandelbrot.git] / xulapp / chrome / mandelbrot / content / image-settings.js
index c00c19a148be5aeb2eb7f3fa09dcd3067bc1f093..a907f5a20bf677a820a4350f3c40b43f88d18a2d 100644 (file)
  *
  * ***** END LICENSE BLOCK ***** */
 
+var gColorPalette = [];
+
 function initSettings() {
+  recalcCoord('Cr', 'scale');
+  recalcCoord('Ci', 'scale');
+}
+
+function drawPreview() {
+  let canvas = document.getElementById("mbrotPreview");
+  let context = canvas.getContext("2d");
+
+  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) ||
+      (Cr_max < -2) || (Cr_max > 2) || (Cr_min >= Cr_max)) {
+    Cr_min = -2.0; Cr_max = 1.0;
+  }
+
+  let Ci_min = parseFloat(document.getElementById("Ci_min").value);
+  let Ci_max = parseFloat(document.getElementById("Ci_max").value);
+  if ((Ci_min < -2) || (Ci_min > 2) ||
+      (Ci_max < -2) || (Ci_max > 2) || (Ci_min >= Ci_max)) {
+    Ci_min = -2.0; Ci_max = 1.0;
+  }
+
+  let iterMax = gPref.getIntPref("mandelbrot.iteration_max");
+  let algorithm = gPref.getCharPref("mandelbrot.use_algorithm");
+
+  context.fillStyle = "rgba(255, 255, 255, 127)";
+  context.fillRect(0, 0, canvas.width, canvas.height);
+
+  try {
+    var currentPalette = gPref.getCharPref("mandelbrot.color_palette");
+  }
+  catch(e) {
+    var currentPalette = '';
+  }
+  if (!currentPalette.length) {
+    currentPalette = 'kairo';
+  }
+  gColorPalette = getColorPalette(currentPalette);
+
+  drawLine(0, [Cr_min, Cr_max, Ci_min, Ci_max],
+              canvas, context, iterMax, algorithm);
 }
+
+function recalcCoord(coord, target) {
+  if (target == 'scale') {
+    document.getElementById(coord + '_scale').value =
+      parseFloat(document.getElementById(coord + '_max').value) -
+      parseFloat(document.getElementById(coord + '_min').value);
+  }
+  else if (target == 'max') {
+    document.getElementById('mandelbrot.last_image.' + coord + '_max').value =
+      parseFloat(document.getElementById(coord + '_min').value) +
+      parseFloat(document.getElementById(coord + '_scale').value);
+  }
+}
\ No newline at end of file