save and load prefs correctly by creating a sync variant to deal with them (via init...
[mandelbrot-web.git] / index.html
index 32648f7cfd1f98cf48aaa899122866144ba90d3e..4a8dbad7db0091228015e40cdbea86b73b63a1e8 100644 (file)
@@ -1,50 +1,97 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+   - You can obtain one at http://mozilla.org/MPL/2.0/.  -->
+
 <!DOCTYPE html>
 <html manifest="manifest.appcache">
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <!-- try to counts default scaling on mobile, see
+       https://developer.mozilla.org/en/Mobile/Viewport_meta_tag -->
+  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=.6667, maximum-scale=.6667">
   <title>KaiRo.at Mandelbrot Web</title>
   <script src="js/mandelbrot.js"></script>
   <link rel="stylesheet" href="style/mandelbrot.css">
+  <link rel="shortcut icon" href="style/mandelbrotIcon16.png" type="image/png">
 </head>
-<body>
+<body onload="Startup();">
 <h1>KaiRo.at Mandelbrot Web</h1>
 
 <div id="overlayArea">
 <input type="button" id="drawButton" value="Draw Image"
        onclick="drawImage();">
+<input type="button" id="backButton" value="Back"
+       onclick="goBack();" disabled="true">
 <input type="button" id="settingsButton" value="Settings"
        onclick="toggleSettings();">
+<label for="bookmarks">Bookmarks:</label>
+<select id="bookmarks" onclick="callBookmark(event.target);">
+<option id="bookmarkOverview" value="-1">Overview</option>
+</select>
+
 <fieldset id="settings"><legend>Image data</legend>
 Image coordinates:
 <br>Real:
-Min: <input id="Cr_min" value="-2.0" maxlength="6" size="6" type="text">
-Max: <input id="Cr_max" value="1.0" maxlength="6" size="6" type="text">
+<br><label for="Cr_min">Min:</label>
+<input id="Cr_min" value="-2.0" maxlength="10" size="10" type="text"
+       onchange="checkISValue(this, 'coord'); recalcCoord('Cr', 'scale');">
+<label for="Cr_max">Max:</label>
+<input id="Cr_max" value="1.0" maxlength="10" size="10" type="text"
+       onchange="checkISValue(this, 'coord'); recalcCoord('Cr', 'scale');">
+<label for="Cr_scale">Scale:</label>
+<input id="Cr_scale" value="3.0" maxlength="10" size="10" type="text"
+       onchange="checkISValue(this, 'coord'); recalcCoord('Cr', 'max');">
 <br>Imag:
-Min: <input id="Ci_min" value="-1.5" maxlength="6" size="6" type="text">
-Max: <input id="Ci_max" value="1.5" maxlength="6" size="6" type="text">
+<br><label for="Ci_min">Min:</label>
+<input id="Ci_min" value="-1.5" maxlength="10" size="10" type="text"
+       onchange="checkISValue(this, 'coord'); recalcCoord('Ci', 'scale');">
+<label for="Ci_max">Max:</label>
+<input id="Ci_max" value="1.5" maxlength="10" size="10" type="text"
+       onchange="checkISValue(this, 'coord'); recalcCoord('Ci', 'scale');">
+<label for="Ci_scale">Scale:</label>
+<input id="Ci_scale" value="3.0" maxlength="10" size="10" type="text"
+       onchange="checkISValue(this, 'coord'); recalcCoord('Ci', 'max');">
+
+<br><br>Image size:
+<br><label for="image_width">Width:</label>
+<input id="image_width" value="300" maxlength="4" size="4" type="number"
+       onchange="checkISValue(this, 'dim'); recalcCoord('Ci', 'scale');">
+<label for="image_height">Height:</label>
+<input id="image_height" value="300" maxlength="4" size="4" type="number"
+       onchange="checkISValue(this, 'dim'); recalcCoord('Cr', 'scale');">
+<input type="checkbox" id="proportional" checked="true"
+       onchange="checkProportions();">
+<label for="proportional">proportional</label>
 
-<br>Maximum of iterations:
-<select id="iterMax">
+<br><br><label for="iterMax">Maximum of iterations:</label>
+<select id="iterMax" onchange="setIter();">
 <option value="50">50</option>
 <option value="100">100</option>
 <option value="500" selected="selected">500</option>
 <option value="1000">1000</option>
 <option value="5000">5000</option>
 </select>
+<input type="hidden" id="algorithm" value="numeric">
 
-<br>Color palette:
-<select id="palette">
+<br><label for="palette">Color palette:</label>
+<select id="palette" onchange="setPalette();">
 <option value="bw">Black &amp; White</option>
 <option value="kairo" selected="selected">KaiRo default</option>
 <option value="rainbow-linear1">Rainbow-linear 1</option>
+<option value="rainbow-squared1">Rainbow 1 Squared</option>
+<option value="rainbow-linear2">Rainbow 2 Linear</option>
+<option value="rainbow-squared2">Rainbow 2 Squared</option>
 </select>
 </fieldset>
 </div>
 
 <div id="mainArea">
-<canvas id="mbrotImage" width="300" height="300"></canvas>
+<canvas id="mbrotImage" width="300" height="300"
+        onclick="drawIfEmpty();"></canvas>
 </div>
 
-<p>Time taken for calculation: <span id="calcTime">none yet</span></p>
+<p id="action">
+Time taken for calculation: <span id="calcTime">none yet</span>
+</p>
 
 </body></html>
\ No newline at end of file