From 6eddb1835cfe7b1f461d1a936258351b9f992463 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 18 Sep 2013 10:46:36 +0200 Subject: [PATCH 01/22] first implementation of different layouting. Doesn't work well yet.. --- css/fixedPosInterface.css | 176 ++++++++++++++++++++++---------------- index.html | 12 +-- js/Thermometer.js | 2 + js/buttonbehaviors.js | 4 +- js/canvasDrawing_v01.js | 13 +-- js/gcodeGenerating_v01.js | 6 +- js/init_layout.js | 83 +++++++++++++----- js/main.js | 19 ++++ 8 files changed, 201 insertions(+), 114 deletions(-) diff --git a/css/fixedPosInterface.css b/css/fixedPosInterface.css index 49c43f9..c56f968 100644 --- a/css/fixedPosInterface.css +++ b/css/fixedPosInterface.css @@ -4,49 +4,6 @@ body { } -.button { - display: table; -} - -/*.big {*/ - /*background: #a6e19c;*/ - /*border: 1px solid #222;*/ - /*height: 64px;*/ - /*width: 64px;*/ - /*display: table-cell;*/ - /*vertical-align: middle;*/ - /*text-align: center;*/ - /*border-radius: 32px;*/ - /*-moz-border-radius: 32px;*/ - /*-webkit-border-radius: 32px;*/ -/*}*/ -/*.small {*/ - /*background: #a3d5f7;*/ - /*border: 1px solid #222;*/ - /*height: 40px;*/ - /*width: 40px;*/ - /*display: table-cell;*/ - /*vertical-align: middle;*/ - /*text-align: center;*/ - /*border-radius: 20px;*/ - /*-moz-border-radius: 20px;*/ - /*-webkit-border-radius: 20px;*/ -/*}*/ - -#logo { - position: absolute; - /*left: 50%;*/ - /*margin-left: -220px;*/ - top: 20px; - left: 315px; - width: 400px; - height: 140px; -} - -/*ha {*/ - /*background: #f5f5f5 url('../images/bg.jpg') no-repeat;*/ -/*}*/ - /* Portrait */ @media screen and (orientation:portrait) { body { @@ -74,39 +31,73 @@ body { } } -.container { - position: fixed; - top: 0px; - left: 0px; +/* + + Containers and content blocks + +*/ +#landscape { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + max-width: 1024px; + height: 100%; + margin: 0px auto; +} +/* http://stackoverflow.com/questions/8129524/simulate-inner-border-in-css */ +#landscape:after { + content:' '; + display:block; + position:absolute; + left:0; + top:0; + right:0; + bottom:0; border: 2px solid #333; - width: 1024px; - min-height: 500px; - max-height: 768px; - height: 100%; +} + +.container { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + /*margin: 0px auto;*/ + + /*position: fixed;*/ + /*top: 0px;*/ + /*left: 0px;*/ + /*width: 1024px;*/ + /*min-height: 500px;*/ + /*max-height: 768px;*/ + /*height: 100%;*/ /* height: 768px;*/ } -#d3dlogo { - position: absolute; - top: 15px; - left: 31%; - width: 399px; - height: 139px; - background-image: url('../img/logo_full.png'); - cursor: pointer; -} - -#svg { - cursor: pointer; -} - #drawAreaContainer { + /*position: absolute;*/ + /*top: 193px;*/ + /*left: 193px;*/ + /*width: 650px;*/ + /*height: 450px;*/ + /*background-color: #fff;*/ + /*border: 4px solid #000;*/ + /*border-radius: 15px;*/ position: absolute; - top: 193px; - left: 193px; - width: 650px; - height: 450px; + top: 50%; + left: 50%; + /*margin: -225px 0 0 -325px;*/ background-color: #fff; + width: 75%; + min-width: 150px; + max-width: 650px; + height: 70%; + min-height: 150px; border: 4px solid #000; border-radius: 15px; } @@ -126,10 +117,20 @@ body { } #mycanvas { - width: 500px; - height: 450px; - border: 0px solid #333; - border-right: 2px solid #333; + /*width: 500px;*/ + /*height: 450px;*/ + /*border: 0px solid #333;*/ + /*border-right: 2px solid #333;*/ + /*background-color: #f0f;*/ + + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 80%; + height: 100%; + background: #808; } #preview { @@ -137,8 +138,32 @@ body { position: absolute; right: 0px; top: 0px; - width: 150px; - height: 450px; + + /*width: 150px;*/ + /*height: 450px;*/ + + width: 20%; + height: 100%; +} + + +/* + + Buttons and logo's + +*/ +.button { + display: table; +} + +#d3dlogo { + position: absolute; + top: 15px; + left: 31%; + width: 399px; + height: 139px; + background-image: url('../img/logo_full.png'); + cursor: pointer; } .vertImage { @@ -150,7 +175,6 @@ body { width: auto; /* for ie9 */ } - .bgTop { position: absolute; top: 0px; diff --git a/index.html b/index.html index 9e234f4..4e462dd 100755 --- a/index.html +++ b/index.html @@ -6,9 +6,12 @@ - - - + + + + + + @@ -53,9 +56,6 @@
- - -
diff --git a/js/Thermometer.js b/js/Thermometer.js index 687b94f..fc5188a 100644 --- a/js/Thermometer.js +++ b/js/Thermometer.js @@ -1,3 +1,5 @@ + var $displayThermometer = $("#thermometerContainer"); + function Thermometer() { this.currentTemperature = 0; // default val this.targetTemperature = 180; // default val diff --git a/js/buttonbehaviors.js b/js/buttonbehaviors.js index 17c7a5c..83fadb3 100644 --- a/js/buttonbehaviors.js +++ b/js/buttonbehaviors.js @@ -297,7 +297,7 @@ function previewTwistRight(redrawLess) { function update() { if(!displayTempEnabled && printer.alive) { - displayTemp.show(); + //displayTemp.show(); $displayThermometer.show(); displayTempEnabled = true; } else if(displayTempEnabled && !printer.alive) { @@ -307,7 +307,7 @@ function update() { } if(displayTempEnabled) { - displayTemp.text(printer.temperature+"/"+printer.targetTemperature); + //displayTemp.text(printer.temperature+"/"+printer.targetTemperature); thermometer.update(printer.temperature, printer.targetTemperature); } diff --git a/js/canvasDrawing_v01.js b/js/canvasDrawing_v01.js index f6bd21a..b20c231 100644 --- a/js/canvasDrawing_v01.js +++ b/js/canvasDrawing_v01.js @@ -41,6 +41,7 @@ var lineweight = 2; function initDoodleDrawing() { console.log("f:initDoodleDrawing()"); + //TODO make these jquery eventhandlers (works for all) if (!canvas.addEventListener) { canvas.attachEvent('onmousedown',onCanvasMouseDown); canvas.attachEvent('onmousemove',onCanvasMouseMove); @@ -254,11 +255,11 @@ function adjustPreviewTransformation() { * * * * * * * * * * */ function onCanvasMouseDown(e) { -// console.log("onmousedown"); -// console.log("onmousedown >> e.offsetX,e.offsetY = " + e.offsetX+","+e.offsetY); -// console.log("onmousedown >> e.layerX,e.layerY= " + e.layerX+","+e.layerY); -// console.log("onmousedown >> e: " + e); -// console.log(e); + // console.log("onmousedown >> e.offsetX,e.offsetY = " + e.offsetX+","+e.offsetY); + // console.log("onmousedown >> e.layerX,e.layerY= " + e.layerX+","+e.layerY); + // console.log("onmousedown >> e: " + e); + // console.log(e); + console.log("f:onCanvasMouseDown()"); dragging = true; prevCountingTime = new Date().getTime(); @@ -287,6 +288,7 @@ function onCanvasMouseDown(e) { var prevPoint = {x:-1, y:-1}; function onCanvasMouseMove(e) { + console.log("f:onCanvasMouseMove()"); if (!dragging) return; // console.log("onmousemove"); @@ -347,6 +349,7 @@ prevUpdateFullPreview = 0; // 0 is not a timeframe but refers to the _points arr prevUpdateFullPreviewInterval = 25; // refers to number of points, not a timeframe function onCanvasMouseUp(e) { + console.log("f:onCanvasMouseUp()"); // console.log("onmouseup"); dragging = false; console.log("doodleBounds: " + doodleBounds); diff --git a/js/gcodeGenerating_v01.js b/js/gcodeGenerating_v01.js index 7a4908f..4996d61 100755 --- a/js/gcodeGenerating_v01.js +++ b/js/gcodeGenerating_v01.js @@ -91,7 +91,7 @@ function generate_gcode(callback) { //*/ objectHeight = Math.ceil(numLayers / 5); // in settings objectHeight = 20, in previewRendering_v01.js numLayers is 100, hence the / 5 - objectHeight = numLayers; // in settings objectHeight = 20, in previewRendering_v01.js numLayers is 100, hence the / 5 + objectHeight = (numLayers / maxNumLayers) * maxObjectHeight; // in settings objectHeight = 20, in previewRendering_v01.js numLayers is 100, hence the / 5 // todo hier een array van PATHS maken wat de losse paths zijn @@ -147,7 +147,9 @@ function generate_gcode(callback) { // sort-of in de buurt van (360/2.5) // // -> aight.. er zijn 750 lines vs 1000 in de d3d app. 135 = .75 * 180... dit kan je nog rechttrekken als je NET wat slimmer nadenkt :) // update: NEE, het is niet .75 * 180 want 135 was niet de beste value. //TODO dus. - pointsRotate(p, rStep * progress * 139); + var radToDeg = 180/Math.PI; + //pointsRotate(p, (rStep * radToDeg) * progress); + pointsRotate(p, (rStep * 139) * progress); if (layer == 0) { //gcode.push("M107"); //fan off diff --git a/js/init_layout.js b/js/init_layout.js index 7034376..b18fc78 100644 --- a/js/init_layout.js +++ b/js/init_layout.js @@ -1,7 +1,7 @@ var imgDims = [320, 320]; // width and height of image function doClientAndOrientationStuff() { - console.log("doClientAndOrientationStuff"); + console.log("f:doClientAndOrientationStuff()"); $(".agentInfo").text(""); @@ -19,13 +19,18 @@ function doClientAndOrientationStuff() { //*/ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) { + console.log("PHONE OR TABLET! --> window.orientation = " + window.orientation); if (window.orientation == -90 || window.orientation == 90) { + console.log(" landscape"); // landscape // var ww = ( $(window).width() < window.screen.width ) ? $(window).width() : window.screen.width; //get proper width var ww = 0; //get proper width - if (window.screen.availWidth) { - ww = window.screen.availWidth; + if (window.innerWidth) { + ww = window.innerWidth; + // if (window.screen.availWidth) { +// ww = window.screen.availWidth; + // if( /iPhone|iPad|iPod/i.test(navigator.userAgent) ) { // ww = window.innerWidth; // } @@ -54,10 +59,13 @@ function doClientAndOrientationStuff() { // $('#Viewport').attr('content', 'initial-scale=1.0, maximum-scale=2, minimum-scale=1.0, user-scalable=yes, width=' + ww); } + console.log(" ww: " + ww + ", mw: " + mw + ", ratio: " + ratio); + $(".agentInfo").append("ww: " + ww + ", mw: " + mw + "
"); $(".agentInfo").append("ratio: " + ratio + "
"); $(".agentInfo").append("
"); } else { + console.log(" portrait"); // portrait // $('#Viewport').attr('content', 'initial-scale='+1+',maximum-scale='+1+',minimum-scale='+1+',user-scalable=no'); $('#Viewport').attr('content', 'width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no'); @@ -69,6 +77,7 @@ function doClientAndOrientationStuff() { } + $(".agentInfo").append("$(window).width(): " + $(window).width() + "
"); $(".agentInfo").append("window.screen.width: " + window.screen.width+ "
"); $(".agentInfo").append("window.screen.availWidth: " + window.screen.availWidth+ "
"); @@ -104,7 +113,22 @@ function doOnResize() { // console.log("doOnResize() >> " + new Date().getTime()); // $(".container").css("height", window.innerHeight); - doClientAndOrientationStuff() // <-- is this necessary in this method? + // code from new layouting approach... //TODO give this a more logical spot + $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height"))/2); + doodleCanvas.width = doodleCanvas.clientWidth; + doodleCanvas.height = doodleCanvas.clientHeight; + // $("#drawAreaContainer").attr("width", parseInt($("#drawAreaContainer").css("width"), 10)); + // $("#drawAreaContainer").attr("height", parseInt($("#drawAreaContainer").css("height"), 10)); + // canvas.width = parseInt($canvas.css("width"), 10); + // canvas.height = parseInt($canvas.css("height"), 10); + preview.width = parseInt($preview.css("width"), 10); + preview.height = parseInt($preview.css("height"), 10); + canvasWidth = canvas.width; + canvasHeight = canvas.height; + + //return; + +// doClientAndOrientationStuff() // <-- is this necessary in this method? // console.log("f:doOnResize() >> $('#canvascontainer').innerHeight: " + window.innerHeight); if (window.innerHeight < 768) { @@ -139,14 +163,20 @@ function initLayouting() { - $("#drawAreaContainer").attr("width", parseInt($("#drawAreaContainer").css("width"), 10)); - $("#drawAreaContainer").attr("height", parseInt($("#drawAreaContainer").css("height"), 10)); - canvas.width = parseInt($canvas.css("width"), 10); - canvas.height = parseInt($canvas.css("height"), 10); + + // code from new layouting approach... //TODO give this a more logical spot + $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height"))/2); + doodleCanvas.width = doodleCanvas.clientWidth; + doodleCanvas.height = doodleCanvas.clientHeight; +// $("#drawAreaContainer").attr("width", parseInt($("#drawAreaContainer").css("width"), 10)); +// $("#drawAreaContainer").attr("height", parseInt($("#drawAreaContainer").css("height"), 10)); +// canvas.width = parseInt($canvas.css("width"), 10); +// canvas.height = parseInt($canvas.css("height"), 10); preview.width = parseInt($preview.css("width"), 10); preview.height = parseInt($preview.css("height"), 10); canvasWidth = canvas.width; canvasHeight = canvas.height; + // console.log("f:initLayouting() >> canvas height: " + canvas.height); @@ -167,23 +197,9 @@ function initLayouting() { // $(".container").css("height", window.innerHeight); - // Initial execution if needed - //* 2013-07-26 not doing this resizing stuff now, it's not working well yet - if (!window.addEventListener) { - window.attachEvent('orientationchange', doOnOrientationChange); - window.attachEvent('resize', doOnResize) - } else { - window.addEventListener('orientationchange', doOnOrientationChange); - window.addEventListener('resize', doOnResize) - } - //*/ - doClientAndOrientationStuff(); - doOnResize(); - // doOnOrientationChange(); - - // window.innerHeight console.log("window.innerHeight: " + window.innerHeight); + console.log("window.innerWidth: " + window.innerWidth); console.log("$('#drawAreaContainer').innerHeight(): " + $("#drawAreaContainer").innerHeight()); console.log("$('#drawAreaContainer').offset().top: " + $("#drawAreaContainer").offset().top); @@ -194,4 +210,25 @@ function initLayouting() { } //*/ + // timeout because it SEEMS to be beneficial for initting the layout + // 2013-09-18 seems beneficial since when? + setTimeout(_startOrientationAndChangeEventListening, 1000); +} + +function _startOrientationAndChangeEventListening() { + // Initial execution if needed + + $(window).on('resize', doOnResize); + +// if (!window.addEventListener) { +// window.attachEvent('orientationchange', doOnOrientationChange, false); +// window.attachEvent('resize', doOnResize, false); +// } else { +// window.addEventListener('orientationchange', doOnOrientationChange, false); +// window.addEventListener('resize', doOnResize, false); +// } + + // is it necessary to call these? Aren't they called by the above eventhandlers? +// doClientAndOrientationStuff(); + doOnResize(); } diff --git a/js/main.js b/js/main.js index 4d5ca0d..5bf35f7 100644 --- a/js/main.js +++ b/js/main.js @@ -8,9 +8,28 @@ var printer = new Printer(); var thermometer = new Thermometer(); var settingsWindow = new SettingsWindow(); +var $drawAreaContainer, $doodleCanvas, doodleCanvas, doodleCanvasContext, $previewContainer; + $(function() { console.log("ready"); + + //TODO give more logical place in code + $drawAreaContainer = $("#drawAreaContainer"); + $doodleCanvas = $("#mycanvas"); + doodleCanvas = $("#mycanvas")[0]; + doodleCanvasContext = doodleCanvas.getContext('2d'); + + $drawAreaContainer.css("margin", 0); + $drawAreaContainer.css("marginLeft", -parseInt($drawAreaContainer.css("width"))/2); + $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height"))/2); + + doodleCanvas.width = doodleCanvas.clientWidth; + doodleCanvas.height = doodleCanvas.clientWidth; + + + + if (getURLParameter("d") != "null") debugMode = (getURLParameter("d") == "1"); if (getURLParameter("p") != "null") sendPrintCommands = (getURLParameter("p") == "1"); if (getURLParameter("c") != "null") communicateWithWifibox = (getURLParameter("c") == "1"); From 51aabf56c1e5565c5b8c3e04b43ecb9276fe21e0 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 18 Sep 2013 11:39:34 +0200 Subject: [PATCH 02/22] tiny, tiny indent change --- js/Thermometer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/Thermometer.js b/js/Thermometer.js index fc5188a..d118de6 100644 --- a/js/Thermometer.js +++ b/js/Thermometer.js @@ -1,4 +1,4 @@ - var $displayThermometer = $("#thermometerContainer"); +var $displayThermometer = $("#thermometerContainer"); function Thermometer() { this.currentTemperature = 0; // default val From d7c32c926f2a275a84f4c897fcef8759f41215d1 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 18 Sep 2013 12:04:06 +0200 Subject: [PATCH 03/22] added todo for future --- js/Thermometer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/Thermometer.js b/js/Thermometer.js index d118de6..c69ea38 100644 --- a/js/Thermometer.js +++ b/js/Thermometer.js @@ -1,5 +1,7 @@ var $displayThermometer = $("#thermometerContainer"); + +//TODO 2013-09-18 allow displaying temperatures HIGHER than the targTemp (it's now being capped at targTemp). function Thermometer() { this.currentTemperature = 0; // default val this.targetTemperature = 180; // default val From bd83fc42f85b5c14a0ae09db57503eb5c7f43b75 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 18 Sep 2013 12:04:53 +0200 Subject: [PATCH 04/22] commented out part of the css (not final solution) --- css/fixedPosInterface.css | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/css/fixedPosInterface.css b/css/fixedPosInterface.css index c56f968..2da5bb4 100644 --- a/css/fixedPosInterface.css +++ b/css/fixedPosInterface.css @@ -245,7 +245,7 @@ body { /* The code below is for resizing UI elements as the viewport becomes less high (suitable for tablets & smartphones) */ - +/* @media screen and (max-height: 675px) { .bgMiddle { display: none; @@ -266,7 +266,6 @@ body { #btnNew { zoom: 0.94; -moz-transform: translate(-5px,-5px) scale(.94); - /*-moz-transform: translate(-3px,-3px);*/ } #btnOops { zoom: 0.94; @@ -297,10 +296,6 @@ body { height: 57px; background-image: url('../img/logo_smaller_wide.png'); margin-top: 14px; - /*zoom: 0.8;*/ - /*-moz-transform: translate(-20px,-15px) scale(.8);*/ - /*-moz-transform: ;*/ - /*left: 34%;*/ } #btnsUpDown, #btnsTurnLeftRight { @@ -333,7 +328,6 @@ body { } #btnPrevious, #btnNext { - /*top: 200px;*/ -moz-transform: translate(-5px,-10px); } @@ -342,6 +336,7 @@ body { height: 350px; } } +//*/ From 066eb182f08d7806b7288b0261f8d915cf67ed15 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 18 Sep 2013 16:02:51 +0200 Subject: [PATCH 05/22] intermediary progress --- css/fixedPosInterface.css | 122 +++++++++++++++++++++++--------------- index.html | 10 +++- js/init_layout.js | 35 +++++++---- js/main.js | 13 +--- 4 files changed, 106 insertions(+), 74 deletions(-) diff --git a/css/fixedPosInterface.css b/css/fixedPosInterface.css index 2da5bb4..c63af8e 100644 --- a/css/fixedPosInterface.css +++ b/css/fixedPosInterface.css @@ -43,12 +43,13 @@ body { left: 0; right: 0; width: 100%; - max-width: 1024px; height: 100%; + max-width: 1024px; + max-height: 768px; margin: 0px auto; } /* http://stackoverflow.com/questions/8129524/simulate-inner-border-in-css */ -#landscape:after { +#landscape:before { content:' '; display:block; position:absolute; @@ -93,15 +94,75 @@ body { left: 50%; /*margin: -225px 0 0 -325px;*/ background-color: #fff; - width: 75%; + width: 65%; min-width: 150px; max-width: 650px; - height: 70%; + height: 60%; min-height: 150px; + max-height: 450px; border: 4px solid #000; border-radius: 15px; } +#canvasContainers { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + /*height: 100%;*/ + background-color: #0e0; +} + +#mycanvas, #preview { + /*border: 1px solid #08c;*/ + /*float:left;*/ +} + +#mycanvasContainer { + display: table-cell; + float:left; +} + +#previewContainer { + display: table-cell; +} + +#mycanvas { + /*width: 500px;*/ + /*height: 450px;*/ + /*border: 0px solid #333;*/ + border-right: 2px solid #333; + /*background-color: #f0f;*/ + + /*position: absolute;*/ + /*top: 0;*/ + /*bottom: 0;*/ + /*left: 0;*/ + /*right: 0;*/ + /*width: 80%;*/ + /*float:left;*/ + /*width: 100%;*/ + /*height: 100%;*/ + background: #808; +} + +#preview { + /*border: 1px solid #f8c;*/ + /*position: absolute;*/ + /*right: 0px;*/ + /*top: 0px;*/ + + float:right; + width: 150px; + height: 100%; + background: #f44; + + /*width: 150px;*/ + /*height: 450px;*/ +} + #preview_tmp { position: absolute; top: 0px; @@ -111,41 +172,6 @@ body { display: none; } -#mycanvas, #preview { - /*border: 1px solid #08c;*/ - float: left; -} - -#mycanvas { - /*width: 500px;*/ - /*height: 450px;*/ - /*border: 0px solid #333;*/ - /*border-right: 2px solid #333;*/ - /*background-color: #f0f;*/ - - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 80%; - height: 100%; - background: #808; -} - -#preview { - /*border: 1px solid #f8c;*/ - position: absolute; - right: 0px; - top: 0px; - - /*width: 150px;*/ - /*height: 450px;*/ - - width: 20%; - height: 100%; -} - /* @@ -245,7 +271,6 @@ body { /* The code below is for resizing UI elements as the viewport becomes less high (suitable for tablets & smartphones) */ -/* @media screen and (max-height: 675px) { .bgMiddle { display: none; @@ -284,10 +309,10 @@ body { -moz-transform: scale(.94); } - #drawAreaContainer { - top: 128px; - height: 350px; - } + /*#drawAreaContainer {*/ + /*top: 128px;*/ + /*height: 350px;*/ + /*}*/ } @media screen and (max-height: 560px) { @@ -331,12 +356,11 @@ body { -moz-transform: translate(-5px,-10px); } - #drawAreaContainer { - top: 110px; - height: 350px; - } + /*#drawAreaContainer {*/ + /*top: 110px;*/ + /*height: 350px;*/ + /*}*/ } -//*/ diff --git a/index.html b/index.html index 4e462dd..73c4f17 100755 --- a/index.html +++ b/index.html @@ -55,8 +55,14 @@
- - +
+
+ +
+
+ +
+
diff --git a/js/init_layout.js b/js/init_layout.js index b18fc78..b7e3262 100644 --- a/js/init_layout.js +++ b/js/init_layout.js @@ -115,18 +115,21 @@ function doOnResize() { // code from new layouting approach... //TODO give this a more logical spot $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height"))/2); - doodleCanvas.width = doodleCanvas.clientWidth; - doodleCanvas.height = doodleCanvas.clientHeight; + canvas.width = canvas.clientWidth; + canvas.height = canvas.clientHeight; // $("#drawAreaContainer").attr("width", parseInt($("#drawAreaContainer").css("width"), 10)); // $("#drawAreaContainer").attr("height", parseInt($("#drawAreaContainer").css("height"), 10)); // canvas.width = parseInt($canvas.css("width"), 10); // canvas.height = parseInt($canvas.css("height"), 10); - preview.width = parseInt($preview.css("width"), 10); - preview.height = parseInt($preview.css("height"), 10); +// preview.width = parseInt($preview.css("width"), 10); +// preview.height = parseInt($preview.css("height"), 10); canvasWidth = canvas.width; canvasHeight = canvas.height; - //return; + redrawDoodle(); + redrawPreview(); + + return; // doClientAndOrientationStuff() // <-- is this necessary in this method? @@ -164,16 +167,25 @@ function initLayouting() { - // code from new layouting approach... //TODO give this a more logical spot + $drawAreaContainer = $("#drawAreaContainer"); +// $doodleCanvas = $("#mycanvas"); +// doodleCanvas = $("#mycanvas")[0]; +// doodleCanvasContext = doodleCanvas.getContext('2d'); + + $drawAreaContainer.css("margin", 0); + $drawAreaContainer.css("marginLeft", -parseInt($drawAreaContainer.css("width"))/2); $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height"))/2); - doodleCanvas.width = doodleCanvas.clientWidth; - doodleCanvas.height = doodleCanvas.clientHeight; + + canvas.width = canvas.clientWidth; + canvas.height = canvas.clientHeight; + + // code from new layouting approach... //TODO give this a more logical spot // $("#drawAreaContainer").attr("width", parseInt($("#drawAreaContainer").css("width"), 10)); // $("#drawAreaContainer").attr("height", parseInt($("#drawAreaContainer").css("height"), 10)); // canvas.width = parseInt($canvas.css("width"), 10); // canvas.height = parseInt($canvas.css("height"), 10); - preview.width = parseInt($preview.css("width"), 10); - preview.height = parseInt($preview.css("height"), 10); +// preview.width = parseInt($preview.css("width"), 10); +// preview.height = parseInt($preview.css("height"), 10); canvasWidth = canvas.width; canvasHeight = canvas.height; @@ -184,7 +196,8 @@ function initLayouting() { // imgDims[0] = parseInt($(".container").css("width").match(/[0-9]+/).join("")); // imgDims[1] = parseInt($(".container").css("height").match(/[0-9]+/).join("")); - imgDims = [1024, 768]; +// imgDims = [1024, 768]; + /* if( /Android|webOS|BlackBerry/i.test(navigator.userAgent) ) { imgDims[1] = parseInt($(".container").css("height").match(/[0-9]+/).join("")); diff --git a/js/main.js b/js/main.js index 5bf35f7..2c8dd6d 100644 --- a/js/main.js +++ b/js/main.js @@ -14,18 +14,7 @@ $(function() { console.log("ready"); - //TODO give more logical place in code - $drawAreaContainer = $("#drawAreaContainer"); - $doodleCanvas = $("#mycanvas"); - doodleCanvas = $("#mycanvas")[0]; - doodleCanvasContext = doodleCanvas.getContext('2d'); - - $drawAreaContainer.css("margin", 0); - $drawAreaContainer.css("marginLeft", -parseInt($drawAreaContainer.css("width"))/2); - $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height"))/2); - - doodleCanvas.width = doodleCanvas.clientWidth; - doodleCanvas.height = doodleCanvas.clientWidth; + //TODO give this a more logical place in code From c51107a275d4dd799bb88cdb11d87980bf93f765 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 18 Sep 2013 17:45:02 +0200 Subject: [PATCH 06/22] changes (sry) --- css/fixedPosInterface.css | 81 ++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/css/fixedPosInterface.css b/css/fixedPosInterface.css index 6b41cb7..cc8f81b 100644 --- a/css/fixedPosInterface.css +++ b/css/fixedPosInterface.css @@ -100,67 +100,76 @@ body { height: 60%; min-height: 150px; max-height: 450px; - border: 4px solid #000; - border-radius: 15px; + /*border: 4px solid #000;*/ + /*border-radius: 15px;*/ } #canvasContainers { + display:table; position: absolute; top: 0; + bottom: 0; left: 0; right: 0; - bottom: 0; width: 100%; - /*height: 100%;*/ - background-color: #0e0; -} - -#mycanvas, #preview { - /*border: 1px solid #08c;*/ - /*float:left;*/ + height: 100%; + padding: 0; + margin: 0; + /*border: 4px solid #000;*/ + /*border-radius: 15px;*/ } #mycanvasContainer { - display: table-cell; - float:left; + display:table-cell; + width: auto; + height: 100%; + /*border: 4px solid #000;*/ } - #previewContainer { - display: table-cell; + display:table-cell; + width: 150px; + height: 100%; + /*border: 4px solid #000;*/ + /*border-radius: 15px;*/ } -#mycanvas { - /*width: 500px;*/ - /*height: 450px;*/ - /*border: 0px solid #333;*/ - border-right: 2px solid #333; - /*background-color: #f0f;*/ - +/*#canvasContainers {*/ /*position: absolute;*/ /*top: 0;*/ - /*bottom: 0;*/ /*left: 0;*/ /*right: 0;*/ - /*width: 80%;*/ - /*float:left;*/ + /*bottom: 0;*/ /*width: 100%;*/ - /*height: 100%;*/ - background: #808; + /*background-color: #0e0;*/ +/*}*/ + +#mycanvas { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + /*float: left;*/ + border-width: 0px; + background-color: #f0f; + border-right: 2px solid #333; + /*border-radius: 15px;*/ + /*border-radius: 15px;*/ + border-radius-topleft: 15px; + /*border-radius-topright: 15px;*/ + -moz-border-radius-topleft: 15px; + /*-moz-border-radius-topright: 15px;*/ + -webkit-border-radius-topleft: 15px; + /*-webkit-border-radius-topright: 15px;*/ } #preview { - /*border: 1px solid #f8c;*/ - /*position: absolute;*/ - /*right: 0px;*/ - /*top: 0px;*/ - - float:right; width: 150px; height: 100%; - background: #f44; - - /*width: 150px;*/ - /*height: 450px;*/ + float: right; + margin: 0; + padding: 0; + border-width: 0px; + background-color: #0ff; } #preview_tmp { From 6e32a36e12e2ea224209be1addfa9755260c13a8 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 18 Sep 2013 19:08:58 +0200 Subject: [PATCH 07/22] a lot of changes -> almost there but the drawing is not consistent yet across devices. Drawing on the draw canvas is going OK but the preview is not drawing well now. Giving up for now. --- css/fixedPosInterface.css | 64 ++------------ index.html | 2 +- js/canvasDrawing_v01.js | 30 +++++-- js/init_layout.js | 177 +++++--------------------------------- 4 files changed, 52 insertions(+), 221 deletions(-) diff --git a/css/fixedPosInterface.css b/css/fixedPosInterface.css index cc8f81b..062b76e 100644 --- a/css/fixedPosInterface.css +++ b/css/fixedPosInterface.css @@ -60,7 +60,7 @@ body { border: 2px solid #333; } -.container { +.uiButtonsContainer { position: absolute; top: 0; bottom: 0; @@ -68,31 +68,12 @@ body { right: 0; width: 100%; height: 100%; - /*margin: 0px auto;*/ - - /*position: fixed;*/ - /*top: 0px;*/ - /*left: 0px;*/ - /*width: 1024px;*/ - /*min-height: 500px;*/ - /*max-height: 768px;*/ - /*height: 100%;*/ -/* height: 768px;*/ } #drawAreaContainer { - /*position: absolute;*/ - /*top: 193px;*/ - /*left: 193px;*/ - /*width: 650px;*/ - /*height: 450px;*/ - /*background-color: #fff;*/ - /*border: 4px solid #000;*/ - /*border-radius: 15px;*/ position: absolute; top: 50%; left: 50%; - /*margin: -225px 0 0 -325px;*/ background-color: #fff; width: 65%; min-width: 150px; @@ -100,8 +81,8 @@ body { height: 60%; min-height: 150px; max-height: 450px; - /*border: 4px solid #000;*/ - /*border-radius: 15px;*/ + border: 4px solid #000; + border-radius: 15px; } #canvasContainers { @@ -115,63 +96,36 @@ body { height: 100%; padding: 0; margin: 0; - /*border: 4px solid #000;*/ - /*border-radius: 15px;*/ } #mycanvasContainer { display:table-cell; width: auto; height: 100%; - /*border: 4px solid #000;*/ } -#previewContainer { - display:table-cell; - width: 150px; - height: 100%; - /*border: 4px solid #000;*/ - /*border-radius: 15px;*/ -} - -/*#canvasContainers {*/ - /*position: absolute;*/ - /*top: 0;*/ - /*left: 0;*/ - /*right: 0;*/ - /*bottom: 0;*/ - /*width: 100%;*/ - /*background-color: #0e0;*/ -/*}*/ - #mycanvas { width: 100%; height: 100%; margin: 0; padding: 0; /*float: left;*/ - border-width: 0px; - background-color: #f0f; border-right: 2px solid #333; - /*border-radius: 15px;*/ - /*border-radius: 15px;*/ - border-radius-topleft: 15px; - /*border-radius-topright: 15px;*/ - -moz-border-radius-topleft: 15px; - /*-moz-border-radius-topright: 15px;*/ - -webkit-border-radius-topleft: 15px; - /*-webkit-border-radius-topright: 15px;*/ } +#previewContainer { + display:table-cell; + width: 150px; + height: 100%; +} #preview { width: 150px; height: 100%; float: right; margin: 0; padding: 0; - border-width: 0px; - background-color: #0ff; } +/* DEBUG THING */ #preview_tmp { position: absolute; top: 0px; diff --git a/index.html b/index.html index 73c4f17..3e0fbdb 100755 --- a/index.html +++ b/index.html @@ -26,7 +26,7 @@
-
+
diff --git a/js/canvasDrawing_v01.js b/js/canvasDrawing_v01.js index b20c231..aee80dc 100644 --- a/js/canvasDrawing_v01.js +++ b/js/canvasDrawing_v01.js @@ -41,6 +41,7 @@ var lineweight = 2; function initDoodleDrawing() { console.log("f:initDoodleDrawing()"); + //* //TODO make these jquery eventhandlers (works for all) if (!canvas.addEventListener) { canvas.attachEvent('onmousedown',onCanvasMouseDown); @@ -57,14 +58,19 @@ function initDoodleDrawing() { canvas.addEventListener('touchstart',onCanvasTouchDown,false); canvas.addEventListener('touchmove',onCanvasTouchMove,false); canvas.addEventListener('touchend',onCanvasTouchEnd,false); - document.body.addEventListener('touchmove',prevent,false); } + //*/ drawCanvas = $("#drawAreaContainer"); +// drawCanvas = $("#mycanvasContainer"); // $("#drawAreaContainer") console.log("drawCanvasTopLeftCoords: " + drawCanvasTopLeftCoords); - drawCanvasTopLeftCoords[0] = drawCanvas.css("left").match(/[0-9]/g).join(""); - drawCanvasTopLeftCoords[1] = drawCanvas.css("top").match(/[0-9]/g).join(""); +// drawCanvasTopLeftCoords[0] = drawCanvas.css("left").match(/[0-9]/g).join(""); +// drawCanvasTopLeftCoords[1] = drawCanvas.css("top").match(/[0-9]/g).join(""); + drawCanvasTopLeftCoords[0] = drawCanvas.offset().left; + drawCanvasTopLeftCoords[1] = drawCanvas.offset().top; +// drawCanvasTopLeftCoords[0] = drawCanvas[0].offsetParent.offsetLeft; +// drawCanvasTopLeftCoords[1] = drawCanvas[0].offsetParent.offsetTop; console.log("f:initDoodleDrawing() >> canvasWidth: " + canvasWidth); console.log("f:initDoodleDrawing() >> canvasHeight: " + canvasHeight); @@ -146,6 +152,8 @@ function clearDoodle() { doodleBounds = [-1, -1, -1, -1]; // left, top, right, bottom doodleTransform = [0, 0, 1.0, 1.0]; // [ x, y, scaleX, scaleY ] + dragging = false; + clearMainView(); resetPreview(); } @@ -259,7 +267,7 @@ function onCanvasMouseDown(e) { // console.log("onmousedown >> e.layerX,e.layerY= " + e.layerX+","+e.layerY); // console.log("onmousedown >> e: " + e); // console.log(e); - console.log("f:onCanvasMouseDown()"); +// console.log("f:onCanvasMouseDown()"); dragging = true; prevCountingTime = new Date().getTime(); @@ -288,7 +296,7 @@ function onCanvasMouseDown(e) { var prevPoint = {x:-1, y:-1}; function onCanvasMouseMove(e) { - console.log("f:onCanvasMouseMove()"); +// console.log("f:onCanvasMouseMove()"); if (!dragging) return; // console.log("onmousemove"); @@ -349,7 +357,7 @@ prevUpdateFullPreview = 0; // 0 is not a timeframe but refers to the _points arr prevUpdateFullPreviewInterval = 25; // refers to number of points, not a timeframe function onCanvasMouseUp(e) { - console.log("f:onCanvasMouseUp()"); +// console.log("f:onCanvasMouseUp()"); // console.log("onmouseup"); dragging = false; console.log("doodleBounds: " + doodleBounds); @@ -370,10 +378,13 @@ function onCanvasMouseUp(e) { function onCanvasTouchDown(e) { e.preventDefault(); + console.log("f:onCanvasTouchDown >> e: " , e); // var x = e.touches[0].pageX - e.touches[0].target.offsetLeft; // var y = e.touches[0].pageY - e.touches[0].target.offsetTop; - var x = e.touches[0].pageX - drawCanvasTopLeftCoords[0]; - var y = e.touches[0].pageY - drawCanvasTopLeftCoords[1]; +// var x = e.touches[0].pageX - drawCanvasTopLeftCoords[0]; +// var y = e.touches[0].pageY - drawCanvasTopLeftCoords[1]; + var x = e.touches[0].layerX; + var y = e.touches[0].layerY; _points.push([x, y, true]); adjustBounds(x, y); @@ -387,10 +398,13 @@ function onCanvasTouchDown(e) { function onCanvasTouchMove(e) { e.preventDefault(); + console.log("f:onCanvasTouchMove >> e: " , e); // var x = e.touches[0].pageX - e.touches[0].target.offsetLeft; // var y = e.touches[0].pageY - e.touches[0].target.offsetTop; var x = e.touches[0].pageX - drawCanvasTopLeftCoords[0]; var y = e.touches[0].pageY - drawCanvasTopLeftCoords[1]; +// var x = e.touches[0].layerX; +// var y = e.touches[0].layerY; if (prevPoint.x != -1 || prevPoint.y != -1) { var dist = Math.sqrt(Math.pow((prevPoint.x - x), 2) + Math.pow((prevPoint.y - y), 2)); diff --git a/js/init_layout.js b/js/init_layout.js index b7e3262..2c7e683 100644 --- a/js/init_layout.js +++ b/js/init_layout.js @@ -1,131 +1,27 @@ -var imgDims = [320, 320]; // width and height of image - -function doClientAndOrientationStuff() { - console.log("f:doClientAndOrientationStuff()"); - - $(".agentInfo").text(""); - - /* - if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) { - if (window.orientation == -90 || window.orientation == 90) { - // landscape -// $('#Viewport').attr('content', 'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=yes'); - } else { - // portrait - $('#Viewport').attr('content', 'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=yes'); - } - } - return; - //*/ - - if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) { - console.log("PHONE OR TABLET! --> window.orientation = " + window.orientation); - if (window.orientation == -90 || window.orientation == 90) { - console.log(" landscape"); - // landscape - - // var ww = ( $(window).width() < window.screen.width ) ? $(window).width() : window.screen.width; //get proper width - var ww = 0; //get proper width - if (window.innerWidth) { - ww = window.innerWidth; - // if (window.screen.availWidth) { -// ww = window.screen.availWidth; - -// if( /iPhone|iPad|iPod/i.test(navigator.userAgent) ) { -// ww = window.innerWidth; -// } - } else if($(window).width()) { - ww = $(window).width(); - } else { - - } - - // ww = 480; - - var mw = imgDims[0]; // min width of site - //* - if( /iPhone|iPad|iPod/i.test(navigator.userAgent) ) { - var mw = imgDims[1]; // in landscape: min-width is image width - } - //*/ - var ratio = ww / mw; //calculate ratio - $('#Viewport').attr('content', 'initial-scale='+ratio+',maximum-scale='+ratio+',minimum-scale='+ratio+',user-scalable=no,width='+mw); - if( ww < mw){ //smaller than minimum size -// $(".colmask").css("background-color", "#ff0"); - // $('#Viewport').attr('content', 'initial-scale=' + ratio + ', maximum-scale=' + ratio + ', minimum-scale=' + ratio + ', user-scalable=yes, width=' + ww); - // $('#Viewport').attr('content', 'initial-scale=1.0, maximum-scale=2, minimum-scale=1.0, user-scalable=yes, width=' + ww); - }else{ //regular size -// $(".colmask").css("background-color", "#0ff"); - // $('#Viewport').attr('content', 'initial-scale=1.0, maximum-scale=2, minimum-scale=1.0, user-scalable=yes, width=' + ww); - } - - console.log(" ww: " + ww + ", mw: " + mw + ", ratio: " + ratio); - - $(".agentInfo").append("ww: " + ww + ", mw: " + mw + "
"); - $(".agentInfo").append("ratio: " + ratio + "
"); - $(".agentInfo").append("
"); - } else { - console.log(" portrait"); - // portrait -// $('#Viewport').attr('content', 'initial-scale='+1+',maximum-scale='+1+',minimum-scale='+1+',user-scalable=no'); - $('#Viewport').attr('content', 'width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no'); - } - - } else { - // console.log("else"); - $(".colmask").css("background-color", "#f80"); - - } - - - $(".agentInfo").append("$(window).width(): " + $(window).width() + "
"); - $(".agentInfo").append("window.screen.width: " + window.screen.width+ "
"); - $(".agentInfo").append("window.screen.availWidth: " + window.screen.availWidth+ "
"); - $(".agentInfo").append("
"); - $(".agentInfo").append("window.innerWidth: " + window.innerWidth + "
"); - $(".agentInfo").append("window.innerHeight: " + window.innerHeight + "
"); - $(".agentInfo").append("
"); - $(".agentInfo").append("$(window).height(): " + $(window).height() + "
"); - $(".agentInfo").append("window.screen.height: " + window.screen.height+ "
"); - $(".agentInfo").append("window.screen.availHeight: " + window.screen.availHeight+ "
"); - $(".agentInfo").append("
"); - $(".agentInfo").append("user agent: " + navigator.userAgent + "
"); -}; - -function doOnOrientationChange() { - console.log("doOnOrientationChange"); - doClientAndOrientationStuff(); - - // switch(window.orientation) { - // case -90: - // case 90: - // alert('landscape'); - // break; - // default: - // alert('portrait'); - // break; - // } -} - var drawAreaContainerMinHeight = 300; var drawAreaContainerMaxHeight = 450; function doOnResize() { // console.log("doOnResize() >> " + new Date().getTime()); // $(".container").css("height", window.innerHeight); - // code from new layouting approach... //TODO give this a more logical spot - $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height"))/2); - canvas.width = canvas.clientWidth; - canvas.height = canvas.clientHeight; - // $("#drawAreaContainer").attr("width", parseInt($("#drawAreaContainer").css("width"), 10)); - // $("#drawAreaContainer").attr("height", parseInt($("#drawAreaContainer").css("height"), 10)); - // canvas.width = parseInt($canvas.css("width"), 10); - // canvas.height = parseInt($canvas.css("height"), 10); + $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height")) * 0.45); + + canvas.width = $drawAreaContainer.width() - 150; // canvas.clientWidth; + canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; + + preview.width = 150; + preview.height = $drawAreaContainer.height(); // preview.width = parseInt($preview.css("width"), 10); // preview.height = parseInt($preview.css("height"), 10); + canvasWidth = canvas.width; canvasHeight = canvas.height; + drawCanvasTopLeftCoords[0] = drawCanvas.offset().left; + drawCanvasTopLeftCoords[1] = drawCanvas.offset().top; +// drawCanvasTopLeftCoords[0] = drawCanvas[0].offsetParent.offsetLeft; +// drawCanvasTopLeftCoords[1] = drawCanvas[0].offsetParent.offsetTop; + redrawDoodle(); redrawPreview(); @@ -167,49 +63,24 @@ function initLayouting() { - $drawAreaContainer = $("#drawAreaContainer"); // $doodleCanvas = $("#mycanvas"); // doodleCanvas = $("#mycanvas")[0]; // doodleCanvasContext = doodleCanvas.getContext('2d'); + $drawAreaContainer = $("#drawAreaContainer"); $drawAreaContainer.css("margin", 0); $drawAreaContainer.css("marginLeft", -parseInt($drawAreaContainer.css("width"))/2); - $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height"))/2); + $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height")) * 0.45); - canvas.width = canvas.clientWidth; - canvas.height = canvas.clientHeight; + canvas.width = $drawAreaContainer.width() - 150; // canvas.clientWidth; + canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; + + preview.width = 150; + preview.height = $drawAreaContainer.height(); - // code from new layouting approach... //TODO give this a more logical spot -// $("#drawAreaContainer").attr("width", parseInt($("#drawAreaContainer").css("width"), 10)); -// $("#drawAreaContainer").attr("height", parseInt($("#drawAreaContainer").css("height"), 10)); -// canvas.width = parseInt($canvas.css("width"), 10); -// canvas.height = parseInt($canvas.css("height"), 10); -// preview.width = parseInt($preview.css("width"), 10); -// preview.height = parseInt($preview.css("height"), 10); canvasWidth = canvas.width; canvasHeight = canvas.height; -// console.log("f:initLayouting() >> canvas height: " + canvas.height); - - - - // imgDims[0] = parseInt($(".container").css("width").match(/[0-9]+/).join("")); - // imgDims[1] = parseInt($(".container").css("height").match(/[0-9]+/).join("")); - -// imgDims = [1024, 768]; - - /* - if( /Android|webOS|BlackBerry/i.test(navigator.userAgent) ) { - imgDims[1] = parseInt($(".container").css("height").match(/[0-9]+/).join("")); - } else if ( /iPhone|iPad|iPod/i.test(navigator.userAgent) ) { - imgDims[1] = parseInt($(".container").css("width").match(/[0-9]+/).join("")); - } else { - imgDims[1] = parseInt($(".container").css("height").match(/[0-9]+/).join("")); - } - //*/ - - // $(".container").css("height", window.innerHeight); - // window.innerHeight console.log("window.innerHeight: " + window.innerHeight); console.log("window.innerWidth: " + window.innerWidth); @@ -233,14 +104,6 @@ function _startOrientationAndChangeEventListening() { $(window).on('resize', doOnResize); -// if (!window.addEventListener) { -// window.attachEvent('orientationchange', doOnOrientationChange, false); -// window.attachEvent('resize', doOnResize, false); -// } else { -// window.addEventListener('orientationchange', doOnOrientationChange, false); -// window.addEventListener('resize', doOnResize, false); -// } - // is it necessary to call these? Aren't they called by the above eventhandlers? // doClientAndOrientationStuff(); doOnResize(); From dd2ca8a1cb51ff1acecc83a18ec2de96b3965f1b Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Fri, 27 Sep 2013 18:15:33 +0200 Subject: [PATCH 08/22] commit of current state of this branch. It's a work-in-progress (comitting because I need to change to other branch) --- css/fixedPosInterface.css | 7 ++++++- css/settingsPopup.css | 2 +- fixedPosInterface01_v02.html | 2 +- js/init_layout.js | 16 +++++++++++++--- js/previewRendering_v02.js | 12 ++++++++++-- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/css/fixedPosInterface.css b/css/fixedPosInterface.css index 062b76e..866ccf2 100644 --- a/css/fixedPosInterface.css +++ b/css/fixedPosInterface.css @@ -45,6 +45,8 @@ body { width: 100%; height: 100%; max-width: 1024px; + min-width: 900px; + min-height: 500px; max-height: 768px; margin: 0px auto; } @@ -76,13 +78,16 @@ body { left: 50%; background-color: #fff; width: 65%; - min-width: 150px; + min-width: 500px; max-width: 650px; height: 60%; min-height: 150px; max-height: 450px; border: 4px solid #000; border-radius: 15px; + /*overflow: hidden;*/ + z-index: 15; + display: none; } #canvasContainers { diff --git a/css/settingsPopup.css b/css/settingsPopup.css index f2800c0..95b407b 100644 --- a/css/settingsPopup.css +++ b/css/settingsPopup.css @@ -1,6 +1,6 @@ #contentOverlay { background-color: rgba(255, 255, 255, 0.65); - z-index: 10; + z-index: 20; position: absolute; top: 0px; left: 0px; diff --git a/fixedPosInterface01_v02.html b/fixedPosInterface01_v02.html index d9bb379..3cfe699 100755 --- a/fixedPosInterface01_v02.html +++ b/fixedPosInterface01_v02.html @@ -50,7 +50,7 @@
-
+
diff --git a/js/init_layout.js b/js/init_layout.js index 2c7e683..2ab02c9 100644 --- a/js/init_layout.js +++ b/js/init_layout.js @@ -4,13 +4,18 @@ function doOnResize() { // console.log("doOnResize() >> " + new Date().getTime()); // $(".container").css("height", window.innerHeight); - $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height")) * 0.45); + $drawAreaContainer.css("marginLeft", -$drawAreaContainer.width()/2); + $drawAreaContainer.css("marginTop", -$drawAreaContainer.height() *.45); +// $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height")) * 0.45); canvas.width = $drawAreaContainer.width() - 150; // canvas.clientWidth; canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; preview.width = 150; preview.height = $drawAreaContainer.height(); + calcPreviewCanvasProperties(); +// layerOffsetY = preview.height - 1.75 * layerCY; +// yStep = preview.height / 150; // preview.width = parseInt($preview.css("width"), 10); // preview.height = parseInt($preview.css("height"), 10); @@ -22,6 +27,9 @@ function doOnResize() { // drawCanvasTopLeftCoords[0] = drawCanvas[0].offsetParent.offsetLeft; // drawCanvasTopLeftCoords[1] = drawCanvas[0].offsetParent.offsetTop; +// preview.height = $("#previewContainer").height(); +// console.log("f:doOnResize() >> preview.height: " + preview.height); + redrawDoodle(); redrawPreview(); @@ -69,8 +77,8 @@ function initLayouting() { $drawAreaContainer = $("#drawAreaContainer"); $drawAreaContainer.css("margin", 0); - $drawAreaContainer.css("marginLeft", -parseInt($drawAreaContainer.css("width"))/2); - $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height")) * 0.45); + $drawAreaContainer.css("marginLeft", -$drawAreaContainer.width()/2); + $drawAreaContainer.css("marginTop", -$drawAreaContainer.height() *.45); canvas.width = $drawAreaContainer.width() - 150; // canvas.clientWidth; canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; @@ -81,6 +89,8 @@ function initLayouting() { canvasWidth = canvas.width; canvasHeight = canvas.height; + $drawAreaContainer.show(); + // window.innerHeight console.log("window.innerHeight: " + window.innerHeight); console.log("window.innerWidth: " + window.innerWidth); diff --git a/js/previewRendering_v02.js b/js/previewRendering_v02.js index 2e1d23b..52709df 100644 --- a/js/previewRendering_v02.js +++ b/js/previewRendering_v02.js @@ -34,12 +34,19 @@ function initPreviewRendering() { previewCtx_tmp = preview_tmp.getContext('2d'); + calcPreviewCanvasProperties(); + redrawPreview(); +} + +function calcPreviewCanvasProperties() { + console.log("f:calcPreviewCanvasProperties()"); + layerCX = (canvasWidth / 2) * globalScale; // defined in canvasDrawing_v01.js layerCY = (canvasHeight / 2) * globalScale; // defined in canvasDrawing_v01.js layerOffsetY = preview.height - 1.75 * layerCY; - yStep = preview.height / 150; + yStep = (preview.height * (2 * previewVerticalPadding)) / maxNumLayers; - redrawPreview(); +// previewVerticalPadding } // TODO (perhaps) : make the twist limit dynamic, depending on what's printable (w.r.t. overlapping) @@ -52,6 +59,7 @@ var globalScale = 0.3; // global scale of preview (width preview / width canvas var globalAlpha = 0.20; // global alpha of preview var scaleY = 0.4; // additional vertical scale per path for 3d effect var viewerScale = 0.65; // additional scale to fit into preview nicely (otherwise is fills out totally) +var previewVerticalPadding = .15; // % var strokeWidth = 2; //4; //var rStep = Math.PI/40; //Math.PI/40; // var rStep = previewDefaults.rotation; // Math.PI/180; //Math.PI/40; // From 4d54dc56d99103a853897f8591394750e64cdc5a Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 9 Oct 2013 18:15:47 +0200 Subject: [PATCH 09/22] started using LESS for stylesheeting --- less/base.less | 100 +++++++++++++++++++++ less/base_centerpanel.less | 54 ++++++++++++ less/base_centerpanel_drawarea.less | 79 +++++++++++++++++ less/base_centerpanel_logo.less | 15 ++++ less/base_leftpanel.less | 43 +++++++++ less/base_rightpanel.less | 67 ++++++++++++++ less/full.less | 21 +++++ less/mobile.less | 130 ++++++++++++++++++++++++++++ less/portrait.less | 7 ++ less/styles.less | 21 +++++ lesstocss.sh | 45 ++++++++++ 11 files changed, 582 insertions(+) create mode 100644 less/base.less create mode 100644 less/base_centerpanel.less create mode 100644 less/base_centerpanel_drawarea.less create mode 100644 less/base_centerpanel_logo.less create mode 100644 less/base_leftpanel.less create mode 100644 less/base_rightpanel.less create mode 100644 less/full.less create mode 100644 less/mobile.less create mode 100644 less/portrait.less create mode 100644 less/styles.less create mode 100755 lesstocss.sh diff --git a/less/base.less b/less/base.less new file mode 100644 index 0000000..8e2a3fd --- /dev/null +++ b/less/base.less @@ -0,0 +1,100 @@ +/* + + GLOBAL CONTAINER + +*/ +body { + background-color: #fcfcfc; +} +#landscape { + position:absolute; + background-color: #fff; + width: 100%; + max-width: 1024px; + max-height: 768px; + top: 0px; + bottom: 0px; + left: 0px; + right: 0px; + z-index: 5; + overflow: hidden; + margin: 0px auto; + outline: 2px solid #5e8c71; + box-shadow: 0 0 8px rgba(8, 8, 8, 0.25); +} +#portrait { + display: none; +} +.bgContainer { + position: absolute; + width: 100%; + height: 100%; + overflow: hidden; +} +.bgTop, .bgMiddle, .bgBottom { + opacity: 1.0; + transition: opacity .35s linear; + position: absolute; + left: 0px; + z-index: -5; +} +.bgTop { + top: 0px; +} +.bgMiddle { + top: 30%; +} +.bgBottom { + bottom: 0px; +} +.rightpanel, .leftpanel { + img { + cursor: pointer; + } +} + +/* + + CENTER PANEL + +*/ +@import "base_centerpanel.less"; + +/* + + LEFT PANEL + +*/ +@import "base_leftpanel.less"; + +/* + + RIGHT PANEL + +*/ +@import "base_rightpanel.less"; + + + + +/* + + REST + +*/ +/* CLEARFIX */ +.clearfix:before, +.clearfix:after { + content: " "; /* 1 */ + display: table; /* 2 */ +} +.clearfix:after { + clear: both; +} + +/* For IE 6/7 only*/ +.clearfix { + *zoom: 1; +} + + diff --git a/less/base_centerpanel.less b/less/base_centerpanel.less new file mode 100644 index 0000000..10cac8b --- /dev/null +++ b/less/base_centerpanel.less @@ -0,0 +1,54 @@ +// CENTER PANEL +.centerpanel { + position: absolute; + left: 50%; + margin-left: -33%; + width: 66%; + height: 100%; + z-index: 5; +} + + +// top panel +@import "base_centerpanel_logo.less"; + +// draw area stuff (plus up/down/left/right buttons) +@import "base_centerpanel_drawarea.less"; + + +/* + HEIGHT-related RESPONSIVE STUFF +*/ +@media screen and (max-height: 700px) { + .logopanel { + height: 22%; + } + .doodlecontainer { + height: 68%; + } + .d3dlogo { + top: 25%; + max-width: 399px; + height: 74px; + background-image: url('../img/logo/logo_small.png'); + } +} +@media screen and (max-height: 655px) { + .bgMiddle { opacity: 0; } +} + +@media screen and (max-height: 525px) { + .d3dlogo { + max-width: 399px; + top: 20%; + height: 57px; + background-image: url('../img/logo/logo_smaller_wide.png'); + } +} +@media screen and (max-height: 375px) { + .d3dlogo { + max-width: 399px; + height: 40px; + background-image: url('../img/logo/logo_smallest_wide.png'); + } +} \ No newline at end of file diff --git a/less/base_centerpanel_drawarea.less b/less/base_centerpanel_drawarea.less new file mode 100644 index 0000000..f68be62 --- /dev/null +++ b/less/base_centerpanel_drawarea.less @@ -0,0 +1,79 @@ +// DRAW AREA +.drawareacontainer { + position: relative; + width: 100%; + height: 65%; + background-color: #fff; + border: 4px solid #000; + border-radius: 15px; + box-sizing: border-box; + z-index: 15px; +} +/* DEBUG THING */ +#preview_tmp { + position: absolute; + top: 0px; + left: 0px; + z-index: 500; + border: 1px solid #f80; + display: none; +} +.bottompanel { + position: relative; + bottom: 0px; + width: 100%; + height: 10%; +} + +/* DOODLE UP/DOWN/LEFT/RIGHT buttons */ +.manipulationBtns { + margin: 2px 5px; + position: absolute; + right: 0; + top: 0; + max-width: 340px; + max-height: 70px; + width: 45%; +} + +.manipulationBtn { + width: 45%; + height: auto; + cursor: pointer; +} + +#btnsUpDown { + float: left; + width: 45%; +} +#btnsUpDown > div { + float: left; + padding-right: 8px; + background-repeat: no-repeat; +} + +#btnsTurnLeftRight { + float: right; + width: 45%; +} +#btnsTurnLeftRight >div { + float: left; + padding-right: 8px; + background-repeat: no-repeat; +} + +#btnMoveUp { + max-width: 65px; +} + +#btnMoveDown { + max-width: 64px; +} + +#btnTwistLeft { + max-width: 59px; +} + +#btnTwistRight { + max-width: 64px; +} \ No newline at end of file diff --git a/less/base_centerpanel_logo.less b/less/base_centerpanel_logo.less new file mode 100644 index 0000000..a84a3fd --- /dev/null +++ b/less/base_centerpanel_logo.less @@ -0,0 +1,15 @@ +.logopanel { + height: 25%; +} +.d3dlogo { + position: relative; + top: 15%; + width: 100%; + height: 100%; + margin: 0px auto; + max-width: 399px; + height: 139px; + background: url('../img/logo/logo_full.png') no-repeat center center; + cursor: pointer; +} + diff --git a/less/base_leftpanel.less b/less/base_leftpanel.less new file mode 100644 index 0000000..0729f10 --- /dev/null +++ b/less/base_leftpanel.less @@ -0,0 +1,43 @@ +// LEFT PANEL +.leftpanel { + position: absolute; + width: 17%; +/* background-color: rgba(67, 204, 67, 0.4);*/ + top: 0px; + left: 0px; + bottom: 0px; +} + +.btnNew { + margin: 5% 0% 1% 5%; + width: 100%; + max-width: 180px; + height: auto; +} +.btnsPrevNext { + margin: 1% 7%; + max-width: 160px; +} +.btnPrevious { + width: 40%; + max-width: 56px; + height: auto; +} +.btnNext { + width: 40%; + max-width: 56px; + height: auto; + float: right; +} +.btnSave { + margin: 5% 5% 1% 5%; + width: 90%; + max-width: 144px; + height: auto; +} +.btnOops { + margin: 5% 5% 1% 5%; + width: 90%; + max-width: 144px; + height: auto; +} diff --git a/less/base_rightpanel.less b/less/base_rightpanel.less new file mode 100644 index 0000000..713cf7c --- /dev/null +++ b/less/base_rightpanel.less @@ -0,0 +1,67 @@ +// RIGHT PANEL +.rightpanel { + position: absolute; + width: 17%; +/* background-color: rgba(255, 0, 254, 0.4);*/ + top: 0px; + right: 0px; + bottom: 0px; +} +.btnPrint { + margin: 1% 5% 5% 0%; + width: 100%; + max-width: 163px; + height: auto; + float: right; +} +.btnStop { + margin: 5% 10% 1% 5%; + float: right; + width: 90%; + max-width: 98px; + height: auto; +} +.btnsSettingsInfo { + position: absolute; + bottom: 25px; + right: 5px; + width: 80%; + margin: 1% 5%; + max-width: 160px; +} +.btnInfo { + width: 40%; + max-width: 53px; + height: auto; +} +.btnSettings { + width: 40%; + max-width: 53px; + height: auto; + float: right; +} + + + + +/* + + REST + +*/ +/* CLEARFIX */ +.clearfix:before, +.clearfix:after { + content: " "; /* 1 */ + display: table; /* 2 */ +} +.clearfix:after { + clear: both; +} + +/* For IE 6/7 only*/ +.clearfix { + *zoom: 1; +} + + diff --git a/less/full.less b/less/full.less new file mode 100644 index 0000000..ed712bf --- /dev/null +++ b/less/full.less @@ -0,0 +1,21 @@ +/* +.leftpanel { + background-color: #8F8; +} +.rightpanel { + background-color: #4Fc; +} +*/ + + + +/* +.leftpanel { + background-color: #0FF; + width: 200px; +} + +.rightpanel { + width: 200px; +} +*/ \ No newline at end of file diff --git a/less/mobile.less b/less/mobile.less new file mode 100644 index 0000000..2d381ec --- /dev/null +++ b/less/mobile.less @@ -0,0 +1,130 @@ +/* + TOP LOGO +*/ +.centerpanel { + left: 0; + margin-left: 0; + width: 100%; +/* background-color: rgba(0, 135, 255, 0.4);*/ +} +.logopanel { + height: 40px; +} +.d3dlogo { + top: 0; + max-width: 399px; + height: 40px; + background-image: url('../img/logo/logo_smallest_wide.png'); +} +.doodlecontainer { +/* position: absolute;*/ + height: 85%; +} +/*.bottompanel { + display: none; +}*/ + +/* + LEFT +*/ +.leftpanel { + width: 100px; + background-color: #fff; + z-index: 50; + -webkit-transition: left .15s ease-out; + -moz-transition: left .15s ease-out; + -o-transition: left .15s ease-out; + transition: left .15s ease-out; +} +.hideleft { + left: -101px; +} +.shadowright { + -moz-box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); + -webkit-box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); + box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); +} +.btnNew { + margin: 5% 5% 1% 5%; + width: 90%; +} +.btnSave { + margin-left: 9%; + width: 75%; +} +.btnOops { + margin-left: 6%; + width: 71%; +} + +/* + RIGHT +*/ +.rightpanel { + width: 100px; + background-color: #fff; + z-index: 50; + -webkit-transition: right .15s ease-out; + -moz-transition: right .15s ease-out; + -o-transition: right .15s ease-out; + transition: right .15s ease-out; +} +.hideright { + right: -101px; +} +.shadowleft { + -moz-box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); + -webkit-box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); + box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); +} +.btnPrint { + margin: 1% 5% 5% 5%; + width: 90%; +} +.btnStop { + margin: 5% 6% 1% 5%; + width: 70%; +} + + +/* + REST +*/ +.sidebutton { + display: block; + position:absolute; +/* top: 50%;*/ +/* margin-top: -20px;*/ + top: 0px; + /*float:right;*/ + width: 25px; + height: 38px; + border: 1px solid #808; + background: url('../img/arrows.png') no-repeat; + background-color: #eee; +} +.sidebutton:active { + background-color: #aaa; +} + +.leftpanel .sidebutton { + right: -27px; + background-position: 0px 0px; +} +.rightpanel .sidebutton { + left: -27px; + background-position: -25px 0px; +} + + +.leftpanel .sidebuttonin { + background-color: #ccc; + background-position: -25px 0px; +} +.rightpanel .sidebuttonin { + background-color: #ccc; + background-position: -0px 0px; +} +.sidebuttonin:active { + background-color: #888; +} diff --git a/less/portrait.less b/less/portrait.less new file mode 100644 index 0000000..6ead101 --- /dev/null +++ b/less/portrait.less @@ -0,0 +1,7 @@ +#landscape { + display: none; +} + +#portrait { + display: block; +} \ No newline at end of file diff --git a/less/styles.less b/less/styles.less new file mode 100644 index 0000000..23b87c5 --- /dev/null +++ b/less/styles.less @@ -0,0 +1,21 @@ +// IMPORTS +@import "base.less"; + + +// MOBILE +@media only screen and (max-width: 480px), + only screen and (max-width: 720px) and (min-device-pixel-ratio : 1.5), + only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio : 1.5) { + @import "mobile.less"; +} + +// FULL +@media only screen and (min-width: 1000px) and (max-device-pixel-ratio : 1.5), + only screen and (min-width: 1000px) and (-webkit-max-device-pixel-ratio : 1.5) { + @import "full.less"; +} + +// PORTRAIT +@media only screen and (orientation:portrait) { + @import "portrait.less"; +} diff --git a/lesstocss.sh b/lesstocss.sh new file mode 100755 index 0000000..3ad7c74 --- /dev/null +++ b/lesstocss.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +echo 'converting LESS to CSS...' +# generate CSS from LESS +lessc less/styles.less css/styles.css +rm css/styles.min.css + +if [ -n "$1" ]; then + if [ $1 = '--prefix' ] || [ $1 = '-p' ]; then + echo 'applying prefixr...' + + # prefixed (-s overwrites existing file) + prefixr --input ./css/styles.css -s + fi + if [ $1 = '--minify' ] || [ $1 = '-m' ]; then + echo 'creating minified and prefixed...' + + # copy to .min.css to create a minified version as well + cp css/styles.css css/styles.min.css + + # prefixed and minified (-s overwrites existing file) + prefixr --input ./css/styles.min.css -s -c + fi +fi + + + +if [ -n "$2" ]; then + if [ $2 = '--prefix' ] || [ $2 = '-p' ]; then + echo 'applying prefixr...' + + # prefixed (-s overwrites existing file) + prefixr --input ./css/styles.css -s + fi + if [ $2 = '--minify' ] || [ $2 = '-m' ]; then + echo 'creating minified and prefixed...' + + # copy to .min.css to create a minified version as well + cp css/styles.css css/styles.min.css + + # prefixed and minified (-s overwrites existing file) + prefixr --input ./css/styles.min.css -s -c + fi +fi + From c449ccd3172073a463614c4c757a7471ed12860a Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 9 Oct 2013 18:18:34 +0200 Subject: [PATCH 10/22] smallest size of the doodle3d logo --- img/logo_smallest_wide.png | Bin 0 -> 19862 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/logo_smallest_wide.png diff --git a/img/logo_smallest_wide.png b/img/logo_smallest_wide.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f2fa16cea5a1d5dc5f9d0f3813554ee41fa97c GIT binary patch literal 19862 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 d}48AWaP>FJ%hzlJmm5J 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 N002ovPDHLkV1jZ5L-7Cr literal 0 HcmV?d00001 From 1af5ee6125204ad364042526c56bb704d6291e15 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 9 Oct 2013 18:21:49 +0200 Subject: [PATCH 11/22] copy normalize.css to the LESS dir since it's a source file --- less/normalize.css | 534 +++++++++++++++++++++++++++++++++++++++++ less/normalize.min.css | 1 + 2 files changed, 535 insertions(+) create mode 100644 less/normalize.css create mode 100644 less/normalize.min.css diff --git a/less/normalize.css b/less/normalize.css new file mode 100644 index 0000000..823cc10 --- /dev/null +++ b/less/normalize.css @@ -0,0 +1,534 @@ +/*! normalize.css v1.0.2 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/* + * Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* + * Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/* + * Prevents modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/* + * Addresses styling for `hidden` attribute not present in IE 7/8/9, Firefox 3, + * and Safari 4. + * Known issue: no IE 6 support. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/* + * 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevents iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-size: 100%; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/* + * Addresses `font-family` inconsistency between `textarea` and other form + * elements. + */ + +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/* + * Addresses margins handled incorrectly in IE 6/7. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/* + * Addresses `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/* + * Improves readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/* + * Addresses font sizes and margins set differently in IE 6/7. + * Addresses font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +/* + * Addresses styling not present in IE 7/8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Addresses style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/* + * Addresses styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/* + * Addresses styling not present in IE 6/7/8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/* + * Addresses margins set differently in IE 6/7. + */ + +p, +pre { + margin: 1em 0; +} + +/* + * Corrects font family set oddly in IE 6, Safari 4/5, and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/* + * Improves readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/* + * Addresses CSS quotes not supported in IE 6/7. + */ + +q { + quotes: none; +} + +/* + * Addresses `quotes` property not supported in Safari 4. + */ + +q:before, +q:after { + content: ''; + content: none; +} + +/* + * Addresses inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/* + * Prevents `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Lists + ========================================================================== */ + +/* + * Addresses margins set differently in IE 6/7. + */ + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/* + * Addresses paddings set differently in IE 6/7. + */ + +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/* + * Corrects list images handled incorrectly in IE 7. + */ + +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/* + * 1. Removes border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improves image quality when scaled in IE 7. + */ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/* + * Corrects overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/* + * Addresses margin not present in IE 6/7/8/9, Safari 5, and Opera 11. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/* + * Corrects margin displayed oddly in IE 6/7. + */ + +form { + margin: 0; +} + +/* + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Corrects color not being inherited in IE 6/7/8/9. + * 2. Corrects text not wrapping in Firefox 3. + * 3. Corrects alignment displayed oddly in IE 6/7. + */ + +legend { + border: 0; /* 1 */ + padding: 0; + white-space: normal; /* 2 */ + *margin-left: -7px; /* 3 */ +} + +/* + * 1. Corrects font size not being inherited in all browsers. + * 2. Addresses margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improves appearance and consistency in all browsers. + */ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/* + * Addresses Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/* + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Corrects inability to style clickable `input` types in iOS. + * 3. Improves usability and consistency of cursor style between image-type + * `input` and others. + * 4. Removes inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + *overflow: visible; /* 4 */ +} + +/* + * Re-set default cursor for disabled elements. + */ + +button[disabled], +input[disabled] { + cursor: default; +} + +/* + * 1. Addresses box sizing set to content-box in IE 8/9. + * 2. Removes excess padding in IE 8/9. + * 3. Removes excess padding in IE 7. + * Known issue: excess padding remains in IE 6. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/* + * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/* + * Removes inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* + * Removes inner padding and border in Firefox 3+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Removes default vertical scrollbar in IE 6/7/8/9. + * 2. Improves readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/* + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + + +/* http://nicolasgallagher.com/micro-clearfix-hack/ */ +/** + * For modern browsers + * 1. The space content is one way to avoid an Opera bug when the + * contenteditable attribute is included anywhere else in the document. + * Otherwise it causes space to appear at the top and bottom of elements + * that are clearfixed. + * 2. The use of `table` rather than `block` is only necessary if using + * `:before` to contain the top-margins of child elements. + */ + +/** + * For IE 6/7 only + * Include this rule to trigger hasLayout and contain floats. + */ +.cf { + *zoom: 1; +} + +.cf:before, +.cf:after { + content: " "; /* 1 */ + display: table; /* 2 */ +} + +.cf:after { + clear: both; +} diff --git a/less/normalize.min.css b/less/normalize.min.css new file mode 100644 index 0000000..6eb5fd1 --- /dev/null +++ b/less/normalize.min.css @@ -0,0 +1 @@ +/*! normalize.css v1.0.2 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:1em 40px}dfn{font-style:italic}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new',monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.cf{*zoom:1}.cf:before,.cf:after{content:" ";display:table}.cf:after{clear:both} \ No newline at end of file From 58d8fa1454e9dae84b15370eaa5b1c93c5b782c2 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 9 Oct 2013 18:46:25 +0200 Subject: [PATCH 12/22] moved logos to their own dir + removed a few redundant ones --- img/{ => logo}/logo_full.png | Bin img/{ => logo}/logo_small.png | Bin img/{ => logo}/logo_smaller_wide.png | Bin img/{ => logo}/logo_smallest_wide.png | Bin img/logo_full_8bit.png | Bin 19659 -> 0 bytes img/logo_small_8bit.png | Bin 14509 -> 0 bytes img/logo_smaller.png | Bin 19093 -> 0 bytes img/logo_smaller_8bit.png | Bin 6217 -> 0 bytes img/logo_smaller_wide_8bit.png | Bin 6347 -> 0 bytes 9 files changed, 0 insertions(+), 0 deletions(-) rename img/{ => logo}/logo_full.png (100%) rename img/{ => logo}/logo_small.png (100%) rename img/{ => logo}/logo_smaller_wide.png (100%) rename img/{ => logo}/logo_smallest_wide.png (100%) delete mode 100644 img/logo_full_8bit.png delete mode 100644 img/logo_small_8bit.png delete mode 100644 img/logo_smaller.png delete mode 100644 img/logo_smaller_8bit.png delete mode 100644 img/logo_smaller_wide_8bit.png diff --git a/img/logo_full.png b/img/logo/logo_full.png similarity index 100% rename from img/logo_full.png rename to img/logo/logo_full.png diff --git a/img/logo_small.png b/img/logo/logo_small.png similarity index 100% rename from img/logo_small.png rename to img/logo/logo_small.png diff --git a/img/logo_smaller_wide.png b/img/logo/logo_smaller_wide.png similarity index 100% rename from img/logo_smaller_wide.png rename to img/logo/logo_smaller_wide.png diff --git a/img/logo_smallest_wide.png b/img/logo/logo_smallest_wide.png similarity index 100% rename from img/logo_smallest_wide.png rename to img/logo/logo_smallest_wide.png diff --git a/img/logo_full_8bit.png b/img/logo_full_8bit.png deleted file mode 100644 index adba35c7befb3ec2267180469f72d4479a06c92b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19659 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 P00000NkvXXu0mjf5XX!x diff --git a/img/logo_small_8bit.png b/img/logo_small_8bit.png deleted file mode 100644 index a2c0189357a6efd483a4c190da0c092f257796da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14509 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%0A2{$K`0M1|Ax zm%gEsdrni^?kUuDL?@~P<&>Pf?Bk=VY20O9P*@73mo;?bYjsRx z+^jGf&ML77-oAbNXrNetCx$eT0l|2^x1J$*fhW+lLD`D2m<@Z7ipxu>7K^O`XJ*4v zV!?dztgo){g;J_xVq&;H$QAic0!?)W3JVA(YE+!%l7`^=LBTf=m)M03x$oV}sMTs* zFkS_W<_w?n0mYZq7^@(cDxpj=(M#weLr@5XMaGcDY*s@iK60_G-hEHp66F;9XN8g> z&e8C8l-FK+O=Jn1Q})I^kNgw#&2pFiaiEvk8=ojHv4OCmFv|0xn@m61quJ zai&<>n2L4N1JTspHbJ^jkV9?HAE8s(7sv=kakIQcIJPiDAf-gLp#CWx1qI{(SYLH; zKs}P%(dnElKIEofj~+divSPz|%D9fF)~FhqdPR8TWleTQ(z|txv!mAQLckhm{rdHP z;T;d55ivC5t%X2DU;1>xUnukBVd^{TK1xj+2w!k33(cxl3)E#A+99=T^@Ir%ij?!` z&-Vw4>9ex4L?Fn;<%ZDTB@>FxZBkrcaaogi8^zn^@xO0pX3JP6?J{VKd(B6dxub?=>r#}yb3Z`Td= zAec*RO%Z8l#CEM(1d1&YSy_1r2xdFt{Z$acW0Hb#twrudNKWZ`B$ZjHLPvZA2TK^3#{b?-~SC-!~ z3O_i2`4b+d*Qd-RAFC%Ls={^WjG0Os5AUMgd-jYTHEL9E%qas7*hj`2Ynv>B+q;P{ z0FF{2SCQRuyO~Lpv8brH_3G8D7k~EIXR{*X66Akdx{?CJ{ON-yXVR~$mQ!$O1Wlg% zf?!j;*Uw{Ld@vCh)8(_|Ks=w6lzbVeTA;ji>5{&_u3qEG8#!*}fp`J8sSy>N)@^%%4^w<`(VEiC>klw%V+UnCQr}-TI^*$7?m5z^W)OcW40nK$1t^S-U(c0><&oi2KQbIMQma zqjoU~G-Jd>dVB4c1{nKz(AKl&db8-HcgPx&#Nvmg&Z8TFq2Yoey4|-*6|B;7ACI)R zZr$1wYtu`K_w*e!luqv6Mcbw?qjJRPVbQTP_q{Ku1!BdT%3J-ha=8aIuADw5{@p4e z;V7Jn8@i&fNrxw@)IQ#>au2(zN5JiHIY3wRBI(h<*YO_2THy;>ojTowC0W-I_^(OPU4b5=CNbP#7?@a z*NWgxYA7a3C%Cg2)bFwBy=dS5ELykjP_lHn^z?T0(MMAeyt+WsJzj~o(_guqj~Jv9 z9=!bxgTYV%3UMA(*3KTT1W=wQ+Y)xl@wrn@v(e#8SKt|&lI?)jmd`s zJy}!5h7B7gVQnYz?ub3R_ZSf;*D4W{014%wrDeT)_x=iK@&%{=8G$%P!#s{72CmA_ z&kw99uYXWO1Wk_bn+uKe%9Y8s&y*WR9PF0i!Y<{RZ%VGcj4F}((AM) zo7H-T$F2k|2!cR-)fzSV2N=lZO`)?zN=Bj4`8BkWG@Km)bc;@jqKBTJLR-Jt4*n^p zR&834A+UKAeY3(8_`w1-Mb zyLVp{HM8*Wuzm2%c3e9f9s_L59HEY() zm6VWcGSgrFH^roIeCp}H<6Zc9S*OVi>IhF*1?OOcGAiy>W|DR>a8tJQNJvVc*4+|u zJ)eMTQ*}Vm%_6EUGQsg&i9*b>WYC~NeSshg;A!(Y1_On=jM(iM3~a=?bJyv{^$Kc} z5&}iGQTOgGG1oS9J6lVrvl=mfy`Fm6BqPFVIZ1U%Tusva*=|I`Npqm#nGc!#b z({Tv_)L `TZOZLr<@ThlN$75ZjqEq2GBuH z&8KwhMbSwe5J$_Y*4WI>4xNmS?Al4!FI}MYe*Mltm#;A^P*zu0_W^wfXC%@G>O93{ zZ>q7Z#B+L)%G-X_xNnP<$cFz$K0TNQOzSO-Mx*uP#T3j!wB}%8M9r(o=}Rg<&LxVdJY*)6Xv`~Ejo0ix@xPShrH2`3;er(SRvkvv2Q3UDssye_c-^>TX*9aTF={x zq#X@6^GK;vh}xIRUrFtIx1|XGC_2CQqB!Dg=gyr|ii?X=Cr_R{7xZvXZf>pxDF5q@ z9Xm#pmKkZsuFKT6eI(gUW(o>c(@XytNB2#-MoX7|_S$2Q{n_57OBX&0-Nv+#pVE;4 z%^{dVgc!F@-hzJU_$WG1!+tOxQ%GoNNoYvOMWfM}kN2EHd|d+Lvjbh_Ow}>g8K9Z* zoU-Q=zsSq97=3une0W`~_1q2{WUj9dHTZ`jhBb(8dx=R@lzFn3K3a{p3Ha7paaX)t zsiKMVUZLTS%@(x7PopOvU$scUa6;3Jb#Xhbcj`0HvaYImsrF=#`LrJkcR{;v?;N-- zbA@2tKggfHe|r-h-<81zl?f&Nnt412%{rZ~a>9fOtJuK!GuyXcpn3C#fbz*j(!&#+ zJ3Iwt*{#kb={~H63Z;fVTeh99<(BZ*-0UAee*7^uc~3r^j1oEnZOYh3n~&_FnAq6s@VHx;_BiZzrKe`3x}%|i z>tBE`N*nb66<^P#R_!~{;0GS3c6|nkez`iMRmhUFl7>J9{qotTl(ByYP`Yyl5O)_8 zzrQC*K@AC_JG+T_%Y=o-JULXHUs-;$g05Y-PI)dlck>Pb#gwXi`URtQb3gm0isib z$yDj-8Zy^=WZ+eIti_>TMy{t=6gq%{Z`bHGTc|3+$C0 z82dsvoGQr17Y4`&q>0n2RKCrZ!#E-3A7h{aNqq$a5e&lWq>6$nD#;cW-irK zn5eF@o~~zK$LnRB1r9lJ;>0x2nvFori-QLb`C<9;<@5LMy+9{V6i|4-nxr?5p!GG#6 zb|CX3EId^7?)}j-Z`@vf#Pu$%UW3JU)0)?Rq;K9?!&J-p^wUrO6>-2OR(wx}%1=53 zwRGy#ss8|#TMOmVEm^W1G_ei&`6_{scb>~3((*pw+*quA`>xUxPkatEw9r#eJ+%;V z*LL2z?H0R~#WBq^ZQ8UqVZ411hqV2C>js+KX9T5$L?Py>zAe^lY{kAnuDqHGdVI+% zboS~cf|33_Zrr#JMYb3ZOy6w+__c;N_S-ZM-%h0BP+j!2=@g70%S zk_-4s7#4SogTCb7qzxZ@N*h0440N{ALk~Ulc83lf_^?%uL5wQ3%3OG($nUomyG8T0 z%e#^Dw%Qn8;5BntJ=tJJ9+^r;5y_zx+uqZG)=$<;jEftsnWnFL=Lh=nwtuHG;CNh_3W7d`Z*IHL&U70e}27$0wCwdM&3v9 zq2Z*)YawuIt>RiyLTD8EL!0fU8nQ8+^KBHET)O;?WP(hu)#q+>fza^1uM<9cD>pn*%-(j_{{XWB^z_+t@%nK^Uj;txLf z;HB-`Pt)SXI}vw{!R4#TYPC0b6wY$--Xpm}O>5Skqy^7@OME88n6YD5fgZlW*ObOB zwesNpc{66rc=3%l-dK}gR;+z(&8PI$ytfcT>OJvRqdii5289ek@tNyc^z>)%(2Q-oZl_M2-euGk9Rppv?s$C0)fO@aeC=B??Gca${P=Tur@*A0a9EjXGe7Y{CWN+(t<}HeRRS5 z?=M_;?09z2g@2vd-G^Ct5cIuch`{~(_>Gk>>Jbvjk zEFLcq^NkxfZnWLIcdtm<^AU2_P9LRm#C|+>A#5N_;f-9nk#m7=W@l0^o_4F5f`fvp z`t|F#XUv!}9|i;j?Bn!zBV~2=?%jJ4?sxI@snbh9=Ua=@s6g3{Y&=2!VFoI?Q7jTq z;v7eezof8CB!5Kg#uB$3lgKEV2e$XpEHOx$B@~_g5M|RRT zJAR_Vic&75Z<{-3?vpSm6KC%DJ{X%7?C3ANN9>0mewg?AW0S;*QvSgq6cQatetN#_ zf7qNL7u(H5LWB>`tt`Asmros|1Dn>;@!eZRVgzyWS?Ka#+qG-Ay-^F;?FJ@gwuF&Q zobWO%)$!qnAHKo?rberwqAMk&_E&q(W@yI1c-OPcEhme~O!>KmRC=SFZe-=rwez`x z`zvG$S7Kt~)!`$De}kCf8(8|y=2~kSCq=wRp_w0fs&>SO4v$m)0nM`|T{H zr>A;1xVb4iJ6~)?FD|a4(9p2Ti4!M$0OMJRYg?p4G@FYH897_GZvFYZdGqR5tXQ$= zyB$A=oXoyJW77tZA9vYfYcESO$dS^49+bLYC{oIOD=P8=dmy=~4f1_uRJckR^SR7`B_E-cV4{+d$$rkLiA z31HbHzW8nKGjm6N|NZw%_V3?6wz{f@mcF$7&h>zU21>XP zbE%R}N0#&%|F#StKK!rzZ8PiEty>^6ez;HJ}&E_bup+43DfFFkrxb7}o|s_6`i9m|J&#?~!EQZR0j9{!0+n z*^3vmUOamAe8&R^E;b636t3v#sL}@>7`6j~{s_W6(X`lkuf|gZ_212(H!o-Bu3fJl zJalNld+WYdH-2A0P*63ldl=sEOHj*AFj%LwS#kqF9URGXJTUTp^;@X0Of-E-Ac>oT`pbXb5=WQfFCmWEK50K$T zW(%0XO*||xY)4*Ro*7P~UP_}&sdbhQu7CX5XP+I1YrndG|ADDrez`N?tFLyFuUbjL zA%WuD6h0b&yBgpO8SiOin#TRHe#8*>kct-%!X~e%wLrs_m$No$9oIci3 zTCd|5&(p-W=8+LHy#Zyet*`U+4tiMy;!1l;YHC)uE?u__9z1w0WOknA(%cumi_^WF zPTSC-LtlVM)SEYNo?Tg1OmEDXEV?#CS7VcNJB5?y-AK3}pWZ7eJa+~{&&mf3=zpMN z$IcsKV`H}F=jT^7W?gqRFjg4J8;jG9z+>U9--6KVwr$%sxz+`h(0t1g?u_r}DM0Ca&+W>vE zT8-8P!z%aF_+=w-y~GO01yGiggo><;?CmdJym;F+q2w9QJ@?#r(8W;D#WIYWcNnws zmqNi!M~@zLA3JtT^Z-iRVt!9Yx`dP%b1j_CJD`(3Y#>{l{zq*+YR7Fh0=io2hIx#30Vq*8H%`e6z0~Vva%|uurN>U z(FeCorBd5LnJxbQk=4P$$_l*S4#RXoOr>}|3o^LQ_u+Z-J!4{G_F>(Ib?@GNSXo)w zq)V4BwKi58LyufO&xb>~^ai~>COp)n0)xTa%E5m2;5w%u!;AR6ggZT&TkpmWkbmdm zSpWY0pXD(P6zqn`5o~sHA3;p2nuo zJMlhl(8Xd_VDQdXtyRd@Xxp1CbV7LU3shmNbUO<7m#~-^<%cK(3}?q89UlhYs0 zqX(Q_xOdJnIKdjkLxs?%OgQOG7=;BC%6jV5sX7>smABtZV`9hV_5P*MsqaRO8np@Q z*n{*NN@hqKO>s{zSkrzxTY#|3`oU Y0B~6WW9t*vtN;K207*qoM6N<$g1-~C+5i9m diff --git a/img/logo_smaller_8bit.png b/img/logo_smaller_8bit.png deleted file mode 100644 index bd85479c7dd5291123bacd621243eb84bfab88e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6217 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 diff --git a/img/logo_smaller_wide_8bit.png b/img/logo_smaller_wide_8bit.png deleted file mode 100644 index ef193abf1f5944ff05574f204550b4320237d16c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6347 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 Lx_qsyY3Tm|as(#d From 1e646caef06e984b628004e64611a3a43d380842 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 9 Oct 2013 18:50:11 +0200 Subject: [PATCH 13/22] removed this because it's being rolled into the styles.css by LESS --- css/normalize.css | 534 ---------------------------------------------- 1 file changed, 534 deletions(-) delete mode 100644 css/normalize.css diff --git a/css/normalize.css b/css/normalize.css deleted file mode 100644 index 823cc10..0000000 --- a/css/normalize.css +++ /dev/null @@ -1,534 +0,0 @@ -/*! normalize.css v1.0.2 | MIT License | git.io/normalize */ - -/* ========================================================================== - HTML5 display definitions - ========================================================================== */ - -/* - * Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section, -summary { - display: block; -} - -/* - * Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. - */ - -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} - -/* - * Prevents modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/* - * Addresses styling for `hidden` attribute not present in IE 7/8/9, Firefox 3, - * and Safari 4. - * Known issue: no IE 6 support. - */ - -[hidden] { - display: none; -} - -/* ========================================================================== - Base - ========================================================================== */ - -/* - * 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using - * `em` units. - * 2. Prevents iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-size: 100%; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ - -ms-text-size-adjust: 100%; /* 2 */ -} - -/* - * Addresses `font-family` inconsistency between `textarea` and other form - * elements. - */ - -html, -button, -input, -select, -textarea { - font-family: sans-serif; -} - -/* - * Addresses margins handled incorrectly in IE 6/7. - */ - -body { - margin: 0; -} - -/* ========================================================================== - Links - ========================================================================== */ - -/* - * Addresses `outline` inconsistency between Chrome and other browsers. - */ - -a:focus { - outline: thin dotted; -} - -/* - * Improves readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* ========================================================================== - Typography - ========================================================================== */ - -/* - * Addresses font sizes and margins set differently in IE 6/7. - * Addresses font sizes within `section` and `article` in Firefox 4+, Safari 5, - * and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -h2 { - font-size: 1.5em; - margin: 0.83em 0; -} - -h3 { - font-size: 1.17em; - margin: 1em 0; -} - -h4 { - font-size: 1em; - margin: 1.33em 0; -} - -h5 { - font-size: 0.83em; - margin: 1.67em 0; -} - -h6 { - font-size: 0.67em; - margin: 2.33em 0; -} - -/* - * Addresses styling not present in IE 7/8/9, Safari 5, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/* - * Addresses style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -blockquote { - margin: 1em 40px; -} - -/* - * Addresses styling not present in Safari 5 and Chrome. - */ - -dfn { - font-style: italic; -} - -/* - * Addresses styling not present in IE 6/7/8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/* - * Addresses margins set differently in IE 6/7. - */ - -p, -pre { - margin: 1em 0; -} - -/* - * Corrects font family set oddly in IE 6, Safari 4/5, and Chrome. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, serif; - _font-family: 'courier new', monospace; - font-size: 1em; -} - -/* - * Improves readability of pre-formatted text in all browsers. - */ - -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -/* - * Addresses CSS quotes not supported in IE 6/7. - */ - -q { - quotes: none; -} - -/* - * Addresses `quotes` property not supported in Safari 4. - */ - -q:before, -q:after { - content: ''; - content: none; -} - -/* - * Addresses inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/* - * Prevents `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ========================================================================== - Lists - ========================================================================== */ - -/* - * Addresses margins set differently in IE 6/7. - */ - -dl, -menu, -ol, -ul { - margin: 1em 0; -} - -dd { - margin: 0 0 0 40px; -} - -/* - * Addresses paddings set differently in IE 6/7. - */ - -menu, -ol, -ul { - padding: 0 0 0 40px; -} - -/* - * Corrects list images handled incorrectly in IE 7. - */ - -nav ul, -nav ol { - list-style: none; - list-style-image: none; -} - -/* ========================================================================== - Embedded content - ========================================================================== */ - -/* - * 1. Removes border when inside `a` element in IE 6/7/8/9 and Firefox 3. - * 2. Improves image quality when scaled in IE 7. - */ - -img { - border: 0; /* 1 */ - -ms-interpolation-mode: bicubic; /* 2 */ -} - -/* - * Corrects overflow displayed oddly in IE 9. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* ========================================================================== - Figures - ========================================================================== */ - -/* - * Addresses margin not present in IE 6/7/8/9, Safari 5, and Opera 11. - */ - -figure { - margin: 0; -} - -/* ========================================================================== - Forms - ========================================================================== */ - -/* - * Corrects margin displayed oddly in IE 6/7. - */ - -form { - margin: 0; -} - -/* - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/* - * 1. Corrects color not being inherited in IE 6/7/8/9. - * 2. Corrects text not wrapping in Firefox 3. - * 3. Corrects alignment displayed oddly in IE 6/7. - */ - -legend { - border: 0; /* 1 */ - padding: 0; - white-space: normal; /* 2 */ - *margin-left: -7px; /* 3 */ -} - -/* - * 1. Corrects font size not being inherited in all browsers. - * 2. Addresses margins set differently in IE 6/7, Firefox 3+, Safari 5, - * and Chrome. - * 3. Improves appearance and consistency in all browsers. - */ - -button, -input, -select, -textarea { - font-size: 100%; /* 1 */ - margin: 0; /* 2 */ - vertical-align: baseline; /* 3 */ - *vertical-align: middle; /* 3 */ -} - -/* - * Addresses Firefox 3+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -button, -input { - line-height: normal; -} - -/* - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Corrects inability to style clickable `input` types in iOS. - * 3. Improves usability and consistency of cursor style between image-type - * `input` and others. - * 4. Removes inner spacing in IE 7 without affecting normal text inputs. - * Known issue: inner spacing remains in IE 6. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ - *overflow: visible; /* 4 */ -} - -/* - * Re-set default cursor for disabled elements. - */ - -button[disabled], -input[disabled] { - cursor: default; -} - -/* - * 1. Addresses box sizing set to content-box in IE 8/9. - * 2. Removes excess padding in IE 8/9. - * 3. Removes excess padding in IE 7. - * Known issue: excess padding remains in IE 6. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ - *height: 13px; /* 3 */ - *width: 13px; /* 3 */ -} - -/* - * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. - * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/* - * Removes inner padding and search cancel button in Safari 5 and Chrome - * on OS X. - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* - * Removes inner padding and border in Firefox 3+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/* - * 1. Removes default vertical scrollbar in IE 6/7/8/9. - * 2. Improves readability and alignment in all browsers. - */ - -textarea { - overflow: auto; /* 1 */ - vertical-align: top; /* 2 */ -} - -/* ========================================================================== - Tables - ========================================================================== */ - -/* - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - - -/* http://nicolasgallagher.com/micro-clearfix-hack/ */ -/** - * For modern browsers - * 1. The space content is one way to avoid an Opera bug when the - * contenteditable attribute is included anywhere else in the document. - * Otherwise it causes space to appear at the top and bottom of elements - * that are clearfixed. - * 2. The use of `table` rather than `block` is only necessary if using - * `:before` to contain the top-margins of child elements. - */ - -/** - * For IE 6/7 only - * Include this rule to trigger hasLayout and contain floats. - */ -.cf { - *zoom: 1; -} - -.cf:before, -.cf:after { - content: " "; /* 1 */ - display: table; /* 2 */ -} - -.cf:after { - clear: both; -} From a38535ecd183b381c12c49be1f05316f6cae3fdf Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 9 Oct 2013 18:52:54 +0200 Subject: [PATCH 14/22] the resulting css files which LESS outputs --- css/styles.css | 715 +++++++++++++++++++++++++++++++++++++++++++++ css/styles.min.css | 1 + 2 files changed, 716 insertions(+) create mode 100644 css/styles.css create mode 100644 css/styles.min.css diff --git a/css/styles.css b/css/styles.css new file mode 100644 index 0000000..88ba6b9 --- /dev/null +++ b/css/styles.css @@ -0,0 +1,715 @@ +/*! normalize.css v1.0.2 | MIT License | git.io/normalize */article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden] { + display: none; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} +body { + margin: 0; +} +a:focus { + outline: thin dotted; +} +a:active, +a:hover { + outline: 0; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} +h3 { + font-size: 1.17em; + margin: 1em 0; +} +h4 { + font-size: 1em; + margin: 1.33em 0; +} +h5 { + font-size: .83em; + margin: 1.67em 0; +} +h6 { + font-size: .67em; + margin: 2.33em 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: 700; +} +blockquote { + margin: 1em 40px; +} +dfn { + font-style: italic; +} +mark { + background: #ff0; + color: #000000; +} +p, +pre { + margin: 1em 0; +} +code, +kbd, +pre, +samp { + font-family: monospace,serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} +q { + quotes: none; +} +q:before, +q:after { + content: ''; + content: none; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +dl, +menu, +ol, +ul { + margin: 1em 0; +} +dd { + margin: 0 0 0 40px; +} +menu, +ol, +ul { + padding: 0 0 0 40px; +} +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} +img { + border: 0; + -ms-interpolation-mode: bicubic; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 0; +} +form { + margin: 0; +} +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; + white-space: normal; + *margin-left: -7px; +} +button, +input, +select, +textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; +} +button, +input { + line-height: normal; +} +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer; + *overflow: visible; +} +button[disabled], +input[disabled] { + cursor: default; +} +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0; + *height: 13px; + *width: 13px; +} +input[type=search] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +textarea { + overflow: auto; + vertical-align: top; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +.cf { + *zoom: 1; +} +.cf:before, +.cf:after { + content: " "; + display: table; +} +.cf:after { + clear: both; +} +/* + + GLOBAL CONTAINER + +*/ +body { + background-color: #fcfcfc; +} +#landscape { + position: absolute; + background-color: #fff; + width: 100%; + max-width: 1024px; + max-height: 768px; + top: 0px; + bottom: 0px; + left: 0px; + right: 0px; + z-index: 5; + overflow: hidden; + margin: 0px auto; + outline: 2px solid #5e8c71; + box-shadow: 0 0 8px rgba(8, 8, 8, 0.25); +} +#portrait { + display: none; +} +.bgContainer { + position: absolute; + width: 100%; + height: 100%; + overflow: hidden; +} +.bgTop, +.bgMiddle, +.bgBottom { + opacity: 1.0; + transition: opacity .35s linear; + position: absolute; + left: 0px; + z-index: -5; +} +.bgTop { + top: 0px; +} +.bgMiddle { + top: 30%; +} +.bgBottom { + bottom: 0px; +} +.rightpanel img, +.leftpanel img { + cursor: pointer; +} +/* + + CENTER PANEL + +*/ +.centerpanel { + position: absolute; + left: 50%; + margin-left: -33%; + width: 66%; + height: 100%; + z-index: 5; +} +.logopanel { + height: 25%; +} +.d3dlogo { + position: relative; + top: 15%; + width: 100%; + height: 100%; + margin: 0px auto; + max-width: 399px; + height: 139px; + background: url('../img/logo/logo_full.png') no-repeat center center; + cursor: pointer; +} +.drawareacontainer { + position: relative; + width: 100%; + height: 65%; + background-color: #fff; + border: 4px solid #000; + border-radius: 15px; + box-sizing: border-box; + z-index: 15px; +} +/* DEBUG THING */ +#preview_tmp { + position: absolute; + top: 0px; + left: 0px; + z-index: 500; + border: 1px solid #f80; + display: none; +} +.bottompanel { + position: relative; + bottom: 0px; + width: 100%; + height: 10%; +} +/* DOODLE UP/DOWN/LEFT/RIGHT buttons */ +.manipulationBtns { + margin: 2px 5px; + position: absolute; + right: 0; + top: 0; + max-width: 340px; + max-height: 70px; + width: 45%; +} +.manipulationBtn { + width: 45%; + height: auto; + cursor: pointer; +} +#btnsUpDown { + float: left; + width: 45%; +} +#btnsUpDown > div { + float: left; + padding-right: 8px; + background-repeat: no-repeat; +} +#btnsTurnLeftRight { + float: right; + width: 45%; +} +#btnsTurnLeftRight > div { + float: left; + padding-right: 8px; + background-repeat: no-repeat; +} +#btnMoveUp { + max-width: 65px; +} +#btnMoveDown { + max-width: 64px; +} +#btnTwistLeft { + max-width: 59px; +} +#btnTwistRight { + max-width: 64px; +} +/* + HEIGHT-related RESPONSIVE STUFF +*/ +@media screen and (max-height: 700px) { + .logopanel { + height: 22%; + } + .doodlecontainer { + height: 68%; + } + .d3dlogo { + top: 25%; + max-width: 399px; + height: 74px; + background-image: url('../img/logo/logo_small.png'); + } +} +@media screen and (max-height: 655px) { + .bgMiddle { + opacity: 0; + } +} +@media screen and (max-height: 525px) { + .d3dlogo { + max-width: 399px; + top: 20%; + height: 57px; + background-image: url('../img/logo/logo_smaller_wide.png'); + } +} +@media screen and (max-height: 375px) { + .d3dlogo { + max-width: 399px; + height: 40px; + background-image: url('../img/logo/logo_smallest_wide.png'); + } +} +/* + + LEFT PANEL + +*/ +.leftpanel { + position: absolute; + width: 17%; + /* background-color: rgba(67, 204, 67, 0.4);*/ + + top: 0px; + left: 0px; + bottom: 0px; +} +.btnNew { + margin: 5% 0% 1% 5%; + width: 100%; + max-width: 180px; + height: auto; +} +.btnsPrevNext { + margin: 1% 7%; + max-width: 160px; +} +.btnPrevious { + width: 40%; + max-width: 56px; + height: auto; +} +.btnNext { + width: 40%; + max-width: 56px; + height: auto; + float: right; +} +.btnSave { + margin: 5% 5% 1% 5%; + width: 90%; + max-width: 144px; + height: auto; +} +.btnOops { + margin: 5% 5% 1% 5%; + width: 90%; + max-width: 144px; + height: auto; +} +/* + + RIGHT PANEL + +*/ +.rightpanel { + position: absolute; + width: 17%; + /* background-color: rgba(255, 0, 254, 0.4);*/ + + top: 0px; + right: 0px; + bottom: 0px; +} +.btnPrint { + margin: 1% 5% 5% 0%; + width: 100%; + max-width: 163px; + height: auto; + float: right; +} +.btnStop { + margin: 5% 10% 1% 5%; + float: right; + width: 90%; + max-width: 98px; + height: auto; +} +.btnsSettingsInfo { + position: absolute; + bottom: 25px; + right: 5px; + width: 80%; + margin: 1% 5%; + max-width: 160px; +} +.btnInfo { + width: 40%; + max-width: 53px; + height: auto; +} +.btnSettings { + width: 40%; + max-width: 53px; + height: auto; + float: right; +} +/* + + REST + +*/ +/* CLEARFIX */ +.clearfix:before, +.clearfix:after { + content: " "; + /* 1 */ + + display: table; + /* 2 */ + +} +.clearfix:after { + clear: both; +} +/* For IE 6/7 only*/ +.clearfix { + *zoom: 1; +} +/* + + REST + +*/ +/* CLEARFIX */ +.clearfix:before, +.clearfix:after { + content: " "; + /* 1 */ + + display: table; + /* 2 */ + +} +.clearfix:after { + clear: both; +} +/* For IE 6/7 only*/ +.clearfix { + *zoom: 1; +} +@media only screen and (max-width: 480px), only screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5), only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio: 1.5) { + /* + TOP LOGO + */ + .centerpanel { + left: 0; + margin-left: 0; + width: 100%; + /* background-color: rgba(0, 135, 255, 0.4);*/ + + } + .logopanel { + height: 40px; + } + .d3dlogo { + top: 0; + max-width: 399px; + height: 40px; + background-image: url('../img/logo/logo_smallest_wide.png'); + } + .doodlecontainer { + /* position: absolute;*/ + + height: 85%; + } + /*.bottompanel { + display: none; + }*/ + /* + LEFT + */ + .leftpanel { + width: 100px; + background-color: #fff; + z-index: 50; + transition: left 0.15s ease-out; + } + .hideleft { + left: -101px; + } + .shadowright { + box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); + } + .btnNew { + margin: 5% 5% 1% 5%; + width: 90%; + } + .btnSave { + margin-left: 9%; + width: 75%; + } + .btnOops { + margin-left: 6%; + width: 71%; + } + /* + RIGHT + */ + .rightpanel { + width: 100px; + background-color: #fff; + z-index: 50; + transition: right 0.15s ease-out; + } + .hideright { + right: -101px; + } + .shadowleft { + box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); + } + .btnPrint { + margin: 1% 5% 5% 5%; + width: 90%; + } + .btnStop { + margin: 5% 6% 1% 5%; + width: 70%; + } + /* + REST + */ + .sidebutton { + display: block; + position: absolute; + /* top: 50%;*/ + + /* margin-top: -20px;*/ + + top: 0px; + /*float:right;*/ + + width: 25px; + height: 38px; + border: 1px solid #808; + background: url('../img/arrows.png') no-repeat; + background-color: #eee; + } + .sidebutton:active { + background-color: #aaa; + } + .leftpanel .sidebutton { + right: -27px; + background-position: 0px 0px; + } + .rightpanel .sidebutton { + left: -27px; + background-position: -25px 0px; + } + .leftpanel .sidebuttonin { + background-color: #ccc; + background-position: -25px 0px; + } + .rightpanel .sidebuttonin { + background-color: #ccc; + background-position: 0px 0px; + } + .sidebuttonin:active { + background-color: #888; + } +} +@media only screen and (min-width: 1000px) and (max-device-pixel-ratio: 1.5), only screen and (min-width: 1000px) and (-webkit-max-device-pixel-ratio: 1.5) { + /* + .leftpanel { + background-color: #8F8; + } + .rightpanel { + background-color: #4Fc; + } + */ + /* + .leftpanel { + background-color: #0FF; + width: 200px; + } + + .rightpanel { + width: 200px; + } + */ +} +@media only screen and (orientation: portrait) { + #landscape { + display: none; + } + #portrait { + display: block; + } +} diff --git a/css/styles.min.css b/css/styles.min.css new file mode 100644 index 0000000..2999772 --- /dev/null +++ b/css/styles.min.css @@ -0,0 +1 @@ +article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}html,button,input,select,textarea{font-family:sans-serif;}body{margin:0;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em 0;}h2{font-size:1.5em;margin:0.83em 0;}h3{font-size:1.17em;margin:1em 0;}h4{font-size:1em;margin:1.33em 0;}h5{font-size:.83em;margin:1.67em 0;}h6{font-size:.67em;margin:2.33em 0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:700;}blockquote{margin:1em 40px;}dfn{font-style:italic;}mark{background:#ff0;color:#000000;}p,pre{margin:1em 0;}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new', monospace;font-size:1em;}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word;}q{quotes:none;}q:before,q:after{content:'';content:none;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}dl,menu,ol,ul{margin:1em 0;}dd{margin:0 0 0 40px;}menu,ol,ul{padding:0 0 0 40px;}nav ul,nav ol{list-style:none;list-style-image:none;}img{border:0;-ms-interpolation-mode:bicubic;}svg:not(:root){overflow:hidden;}figure{margin:0;}form{margin:0;}fieldset{border:1px solid silver;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;white-space:normal;*margin-left:-7px;}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;}button,input{line-height:normal;}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible;}button[disabled],input[disabled]{cursor:default;}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;padding:0;*height:13px;*width:13px;}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box;}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}.cf{*zoom:1;}.cf:before,.cf:after{content:" ";display:table;}.cf:after{clear:both;}body{background-color:#fcfcfc;}#landscape{position:absolute;background-color:#fff;width:100%;max-width:1024px;max-height:768px;top:0px;bottom:0px;left:0px;right:0px;z-index:5;overflow:hidden;margin:0px auto;outline:2px solid #5e8c71;-webkit-box-shadow:0 0 8px rgba(8, 8, 8, 0.25);box-shadow:0 0 8px rgba(8, 8, 8, 0.25);}#portrait{display:none;}.bgContainer{position:absolute;width:100%;height:100%;overflow:hidden;}.bgTop,.bgMiddle,.bgBottom{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1.0;-webkit-transition:opacity .35s linear;-moz-transition:opacity .35s linear;-o-transition:opacity .35s linear;-ms-transition:opacity .35s linear;transition:opacity .35s linear;position:absolute;left:0px;z-index:-5;}.bgTop{top:0px;}.bgMiddle{top:30%;}.bgBottom{bottom:0px;}.rightpanel img,.leftpanel img{cursor:pointer;}.centerpanel{position:absolute;left:50%;margin-left:-33%;width:66%;height:100%;z-index:5;}.logopanel{height:25%;}.d3dlogo{position:relative;top:15%;width:100%;height:100%;margin:0px auto;max-width:399px;height:139px;background:url('../img/logo/logo_full.png') no-repeat center center;cursor:pointer;}.drawareacontainer{position:relative;width:100%;height:65%;background-color:#fff;border:4px solid #000;border-radius:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;z-index:15;}#preview_tmp{position:absolute;top:0px;left:0px;z-index:500;border:1px solid #f80;display:none;}.bottompanel{position:relative;bottom:0px;width:100%;height:10%;}.manipulationBtns{margin:2px 5px;position:absolute;right:0;top:0;max-width:340px;max-height:70px;width:45%;}.manipulationBtn{width:45%;height:auto;cursor:pointer;}#btnsUpDown{float:left;width:45%;}#btnsUpDown > div{float:left;padding-right:8px;background-repeat:no-repeat;}#btnsTurnLeftRight{float:right;width:45%;}#btnsTurnLeftRight > div{float:left;padding-right:8px;background-repeat:no-repeat;}#btnMoveUp{max-width:65px;}#btnMoveDown{max-width:64px;}#btnTwistLeft{max-width:59px;}#btnTwistRight{max-width:64px;}@media screen and (max-height: 700px){.logopanel{height:22%;}.doodlecontainer{height:68%;}.d3dlogo{top:25%;max-width:399px;height:74px;background-image:url('../img/logo/logo_small.png');}}@media screen and (max-height: 655px){.bgMiddle{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;}}@media screen and (max-height: 525px){.d3dlogo{max-width:399px;top:20%;height:57px;background-image:url('../img/logo/logo_smaller_wide.png');}}@media screen and (max-height: 375px){.d3dlogo{max-width:399px;height:40px;background-image:url('../img/logo/logo_smallest_wide.png');}}.leftpanel{position:absolute;width:17%;top:0px;left:0px;bottom:0px;}.btnNew{margin:5% 0% 1% 5%;width:100%;max-width:180px;height:auto;}.btnsPrevNext{margin:1% 7%;max-width:160px;}.btnPrevious{width:40%;max-width:56px;height:auto;}.btnNext{width:40%;max-width:56px;height:auto;float:right;}.btnSave{margin:5% 5% 1% 5%;width:90%;max-width:144px;height:auto;}.btnOops{margin:5% 5% 1% 5%;width:90%;max-width:144px;height:auto;}.rightpanel{position:absolute;width:17%;top:0px;right:0px;bottom:0px;}.btnPrint{margin:1% 5% 5% 0%;width:100%;max-width:163px;height:auto;float:right;}.btnStop{margin:5% 10% 1% 5%;float:right;width:90%;max-width:98px;height:auto;}.btnsSettingsInfo{position:absolute;bottom:25px;right:5px;width:80%;margin:1% 5%;max-width:160px;}.btnInfo{width:40%;max-width:53px;height:auto;}.btnSettings{width:40%;max-width:53px;height:auto;float:right;}.clearfix:before,.clearfix:after{content:" ";display:table;}.clearfix:after{clear:both;}.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{content:" ";display:table;}.clearfix:after{clear:both;}.clearfix{*zoom:1;}@media only screen and (max-width: 480px),only screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5),only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio: 1.5){.centerpanel{left:0;margin-left:0;width:100%;}.logopanel{height:40px;}.d3dlogo{top:0;max-width:399px;height:40px;background-image:url('../img/logo/logo_smallest_wide.png');}.doodlecontainer{height:85%;}.leftpanel{width:100px;background-color:#fff;z-index:50;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:left 0.15s ease-out;-ms-transition:left 0.15s ease-out;transition:left 0.15s ease-out;}.hideleft{left:-101px;}.shadowright{-webkit-box-shadow:2px 0 4px rgba(42, 42, 41, 0.6);box-shadow:2px 0 4px rgba(42, 42, 41, 0.6);}.btnNew{margin:5% 5% 1% 5%;width:90%;}.btnSave{margin-left:9%;width:75%;}.btnOops{margin-left:6%;width:71%;}.rightpanel{width:100px;background-color:#fff;z-index:50;-webkit-transition:right 0.15s ease-out;-moz-transition:right 0.15s ease-out;-o-transition:right 0.15s ease-out;-ms-transition:right 0.15s ease-out;transition:right 0.15s ease-out;}.hideright{right:-101px;}.shadowleft{-webkit-box-shadow:-2px 0 4px rgba(42, 42, 41, 0.6);box-shadow:-2px 0 4px rgba(42, 42, 41, 0.6);}.btnPrint{margin:1% 5% 5% 5%;width:90%;}.btnStop{margin:5% 6% 1% 5%;width:70%;}.sidebutton{display:block;position:absolute;top:0px;width:25px;height:38px;border:1px solid #808;background:url('../img/arrows.png') no-repeat;background-color:#eee;}.sidebutton:active{background-color:#aaa;}.leftpanel .sidebutton{right:-27px;background-position:0px 0px;}.rightpanel .sidebutton{left:-27px;background-position:-25px 0px;}.leftpanel .sidebuttonin{background-color:#ccc;background-position:-25px 0px;}.rightpanel .sidebuttonin{background-color:#ccc;background-position:0px 0px;}.sidebuttonin:active{background-color:#888;}}@media only screen and (orientation: portrait){#landscape{display:none;}#portrait{display:block;}} \ No newline at end of file From 16c46355f129dd79ac327cce2306e8cf1123ac1e Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 9 Oct 2013 18:53:16 +0200 Subject: [PATCH 15/22] arrow file used in the minimal doodle3d interface --- img/arrows.png | Bin 0 -> 726 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/arrows.png diff --git a/img/arrows.png b/img/arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..5698a21ef53a66a0862f2ce630f2ded2c97bea42 GIT binary patch literal 726 zcmV;{0xA88P)aVhayg5 zK}1|E9ZHu>LIqtq+M@U`6uNg4CkJtK?5KZ1u{dcLktz@C>cLQ`XqRe*&fVSD5sQFF0FD)UsFMc zR;I}2#Oh~}R`! z;zmF&kQ3zA`hF_-h|DIc7>p)}KLT<>9Fg{OWG4O?gwX);M?fwD=Lp1_2u3jki&zV~ zYBeK+#VCYe5gEU!&5N#JWDrWRgMg*c9 zp%R0Iv?DeSlpwem7z2sHK(r$q33QAJf?yCgvItKCChb!Q!-Jp^8txE`#-}J4Op&$L8nQ~X{%&yCAfw?B*;;)fuhp++&U7(X?!q(PG99ZSg&ZIk z$O&?5M3m<2yRA^PF`kP93!!;i!K4dFze*QYSz?VJb4{;CIr2`YE Date: Wed, 9 Oct 2013 18:53:49 +0200 Subject: [PATCH 16/22] simple js lib for managing the folded in/out state of the sidebars on the minimal interface --- js/sidebar.js | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 js/sidebar.js diff --git a/js/sidebar.js b/js/sidebar.js new file mode 100644 index 0000000..aeefeed --- /dev/null +++ b/js/sidebar.js @@ -0,0 +1,62 @@ +var sidebarLeft; +var sidebarRight; + +function initSidebars() { + console.log("f:initSidebars()"); + + sidebarLeft = new SideBar(); + sidebarLeft.init(".leftpanel", "hideleft", function() { + $(".leftpanel").show(); + }); + + sidebarRight = new SideBar(); + sidebarRight.init(".rightpanel", "hideright", function() { + $(".rightpanel").show(); + }); +} + +function SideBar() { + this.initted = false; + this.$contentTarg = undefined; + this.$sideBtn = undefined; + this.contentHidden = false; + this.hideClass = ""; + + this.init = function(targ, hideClass, callback) { + console.log("SideBar >> f:init >> targ: " , $(targ) , ", hideClass: " + hideClass); + this.$contentTarg = $(targ); + this.hideClass = hideClass; + + this.$contentTarg.addClass(this.hideClass); + this.contentHidden = true; + + this.$contentTarg.append("

"); + this.$sideBtn = $(targ +" .sidebutton"); + var self = this; + + this.$sideBtn.on('click', function(e) { + console.log("sidebutton"); + self.toggleShowHide(); + }); + + this.initted = true; + + callback(); + } + + this.toggleShowHide = function() { + if (this.contentHidden) { + this.contentHidden = false; + this.$contentTarg.removeClass(this.hideClass); + // self.$sideBtn.addClass("sidebuttonin"); + this.$sideBtn.addClass("sidebuttonin"); + } else { + this.contentHidden = true; + this.$contentTarg.addClass(this.hideClass); + // self.$sideBtn.removeClass("sidebuttonin"); + this.$sideBtn.removeClass("sidebuttonin"); + + } + } +} + From 98edfb2a7e10469a603c35b8c685fd6d4fb4514e Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Wed, 9 Oct 2013 19:21:33 +0200 Subject: [PATCH 17/22] new LESS --- less/settingsPopup.less | 74 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 less/settingsPopup.less diff --git a/less/settingsPopup.less b/less/settingsPopup.less new file mode 100644 index 0000000..472acaf --- /dev/null +++ b/less/settingsPopup.less @@ -0,0 +1,74 @@ +#contentOverlay { + background-color: rgba(255, 255, 255, 0.65); + z-index: 20; + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + display:none; +} +#settings { + background-color: #fff; + z-index: 15; + + position: absolute; + top: 50%; + left: 50%; + width: 835px; + height: 500px; + margin: -250px 0 0 -417.5px; +/*padding: 25px;*/ + +/*overflow: scroll;*/ +/*overflow-y: hidden;*/ + -moz-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); + -webkit-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); + box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); + border: 2px solid #222; + border-radius: 15px; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + overflow: hidden; +} +#settings header { + margin: 25px 25px 0 25px; + height: 44px; +} + +div.content { + margin: 15px 25px 25px 25px; + height: 388px; + display: table; +} + +div.content > div { + height: 100%; +} + +div.content > div.settings { + border: 1px solid rgb(187, 187, 187); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + width: 660px; + overflow: scroll; + max-height: 368px; + overflow-x: hidden; + padding: 10px 10px 10px 10px; +} +div.content > div.manipulationBtns { + display: table-cell; + vertical-align: bottom; + width: 125px; + +} + +div.content .btnOK { + width: 85px; + height: 86px; + background: url('../img/buttons/btnOk_settings.png') no-repeat; + margin: 0 0 0 10px; + cursor: pointer; +} From b6f77fc39e8c64e6eb5f92542b7708ef2dce1aae Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Thu, 10 Oct 2013 19:18:29 +0200 Subject: [PATCH 18/22] many updates CSS and LESS files and generally a responsive scaling overhaul of the settings page --- css/d3d_btns.css | 173 ---------- css/debug.css | 8 +- css/fixedPosInterface.css | 334 ------------------ css/settings.css | 27 +- css/settingsPopup.css | 74 ---- css/styles.css | 508 +++++++++++++--------------- less/base.less | 17 +- less/base_centerpanel_drawarea.less | 52 ++- less/base_leftpanel.less | 1 - less/base_rightpanel.less | 64 +++- less/full.less | 22 +- less/mobile.less | 63 ++-- less/mobile_settingspopup.less | 18 + less/normalize.css | 32 +- less/normalize.less | 504 +++++++++++++++++++++++++++ less/normalize.min.css | 2 +- less/normalize.min.less | 1 + less/portrait.less | 11 +- less/settingsPopup.less | 135 ++++---- less/styles.less | 3 + lesstocss.sh | 24 +- settings.html | 17 +- 22 files changed, 1042 insertions(+), 1048 deletions(-) delete mode 100644 css/d3d_btns.css delete mode 100644 css/fixedPosInterface.css delete mode 100644 css/settingsPopup.css create mode 100644 less/mobile_settingspopup.less create mode 100644 less/normalize.less create mode 100644 less/normalize.min.less diff --git a/css/d3d_btns.css b/css/d3d_btns.css deleted file mode 100644 index da0f5a1..0000000 --- a/css/d3d_btns.css +++ /dev/null @@ -1,173 +0,0 @@ -/*.logo { - background: #f5f5f5 url('../img/logo_full.png') no-repeat left top; -} - -@media screen and (max-width: 500px) { - .logo { - background: #f5f5f5 url('../img/logo_small.png') no-repeat left top; - } -}*/ - -body { - -moz-user-select: none; /* disable cut copy paste */ - -webkit-user-select: none; /* disable cut copy paste */ -} - -img { - z-index: 5; - /*pointer-events:none;*/ - /*-webkit-touch-callout: none; *//*disable callout, image save panel */ - /*-webkit-tap-highlight-color: transparent; *//* "turn off" link highlight */ -} - -/* http://stackoverflow.com/questions/5348092/prevent-default-press-but-not-default-drag-in-ios-mobilesafari */ -.btn { - background-repeat: no-repeat; - cursor: pointer -} - -/* - - INTERFACE BUTTONS - -*/ - -#btnNew { - left: 10px; - top: 10px; - width: 194px; - height: 170px; - background: url('../img/buttons/btnNew.png') no-repeat; -} - -#btnPrevious { - left: 20px; - top: 180px; - z-index: 10; -} - -#btnNext { - left: 126px; - top: 186px; - z-index: 10; -} - -#btnSave { - left: 20px; - top: 240px; -} - -#btnOops { - left: 20px; - top: 450px; -/* bottom: 150px;*/ - width: 146px; - height: 144px; - background: url('../img/buttons/btnOops.png') no-repeat; -} - -#btnPrint { - right: 15px; - top: 15px; -} - -#btnStop { - right: 20px; - top: 200px; -} - -#btnInfo { - right: 25px; - bottom: 90px; -} - -#btnSettings { - right: 25px; - bottom: 20px; -} - - - -/* - - DRAW AREA - -*/ - - -#drawAreaContainer > .manipulationBtns { - margin: 5px; -} - -.manipulationBtn { - cursor: pointer; -} - -#btnsUpDown { - position: absolute; - right: 200px; - bottom: -75px; -} -#btnsUpDown > div { - float: left; - padding-right: 8px; - background-repeat: no-repeat; -} - -#btnsTurnLeftRight { - position: absolute; - right: 20px; - bottom: -75px; -} -#btnsTurnLeftRight >div { - float: left; - padding-right: 8px; - background-repeat: no-repeat; -} - -#btnMoveUp { - width: 65px; - height: 61px; - background: url('../img/buttons/btnUp.png'); -} - -#btnMoveDown { - width: 64px; - height: 63px; - background: url('../img/buttons/btnDown.png'); -} - -#btnTwistLeft { - width: 59px; - height: 61px; - background: url('../img/buttons/btnTurnLeft.png'); -} - -#btnTwistRight { - width: 64px; - height: 56px; - background: url('../img/buttons/btnTurnRight.png'); -} - -.btn { - position: absolute; - -webkit-user-select: none; - cursor: pointer; -} -#displayTemp { - position: absolute; - right: 55px; - top: 334px; - font-weight: bold; - background: white; - display:none; -} - -.disabled { - opacity: 0.3; - cursor: default; -} - -#btnStop.disabled { - display: none; -} \ No newline at end of file diff --git a/css/debug.css b/css/debug.css index 7aeaa36..d30fee8 100644 --- a/css/debug.css +++ b/css/debug.css @@ -1,15 +1,17 @@ .debugContainer { position: absolute; - top: 0px; - left: 0px; + top: 0; + left: 0; z-index: 500; + background-color: #f0f; display: none; } #debug_textArea { position:absolute; bottom: 0; - width: 800px; + /*width: 800px; */ + z-index: 500; display: none; } diff --git a/css/fixedPosInterface.css b/css/fixedPosInterface.css deleted file mode 100644 index 866ccf2..0000000 --- a/css/fixedPosInterface.css +++ /dev/null @@ -1,334 +0,0 @@ -body { -/* This chops off any overhanging divs */ - overflow:hidden; -} - - - /* Portrait */ -@media screen and (orientation:portrait) { - body { -/* background-color: #08F;*/ - } - - #landscape { - display: none; - } - #portrait { - display: block; - } -} - /* Landscape */ -@media screen and (orientation:landscape) { - body { -/* background-color: #8F0;*/ - } - - #landscape { - display: block; - } - #portrait { - display: none; - } -} - -/* - - Containers and content blocks - -*/ -#landscape { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - max-width: 1024px; - min-width: 900px; - min-height: 500px; - max-height: 768px; - margin: 0px auto; -} -/* http://stackoverflow.com/questions/8129524/simulate-inner-border-in-css */ -#landscape:before { - content:' '; - display:block; - position:absolute; - left:0; - top:0; - right:0; - bottom:0; - border: 2px solid #333; -} - -.uiButtonsContainer { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; -} - -#drawAreaContainer { - position: absolute; - top: 50%; - left: 50%; - background-color: #fff; - width: 65%; - min-width: 500px; - max-width: 650px; - height: 60%; - min-height: 150px; - max-height: 450px; - border: 4px solid #000; - border-radius: 15px; - /*overflow: hidden;*/ - z-index: 15; - display: none; -} - -#canvasContainers { - display:table; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - padding: 0; - margin: 0; -} - -#mycanvasContainer { - display:table-cell; - width: auto; - height: 100%; -} -#mycanvas { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - /*float: left;*/ - border-right: 2px solid #333; -} - -#previewContainer { - display:table-cell; - width: 150px; - height: 100%; -} -#preview { - width: 150px; - height: 100%; - float: right; - margin: 0; - padding: 0; -} - -/* DEBUG THING */ -#preview_tmp { - position: absolute; - top: 0px; - left: 0px; - z-index: 500; - border: 1px solid #f80; - display: none; -} - - -/* - - Buttons and logo's - -*/ -.button { - display: table; -} - -#d3dlogo { - position: absolute; - top: 15px; - left: 31%; - width: 399px; - height: 139px; - background-image: url('../img/logo_full.png'); - cursor: pointer; -} - -.vertImage { - margin: 0px; - padding: 0px; - /*border: 2px solid #f0f;*/ - max-width: 100%; - height: auto; - width: auto; /* for ie9 */ -} - -.bgTop { - position: absolute; - top: 0px; - left: 0px; - z-index: -5; -} -.bgMiddle { - display: block; - position: absolute; - top: 30%; - left: 0px; - z-index: -5; -} -.bgBottom { - position: absolute; - bottom: 0px; - left: 0px; - z-index: -5; -} - -/* PRINT PROGRESS DISPLAY */ -#printProgressContainer { - position: absolute; - right: 30px; - top: 370px; - width: 110px; - margin: 5px 0px; - font-weight: bold; - display:none; -} -#progressbarContainer { - margin: 3px 0px; - width: inherit; - height: 20px; - background-color: #fff; - border: 2px solid #333; - border-radius: 5px; - -o-border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; -} -.progressAmount { - margin: 0px 5px; -} -#progressbar { - position: relative; - /*margin-bottom: -20px;*/ - width: 0%; - height: 100%; - background-color: #4c4; - border: 0px solid #f0f; - border-radius: 3px; - -o-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; -} - -/* THERMOMETER */ -#thermometerContainer { - position: absolute; - right: 25px; - top: 370px; -} -#thermometerCanvas { - /*background: #59b2b8;*/ - /*zoom: 2;*/ -} - - -/* The code below is for resizing UI elements as the viewport becomes less high (suitable for tablets & smartphones) */ -@media screen and (max-height: 675px) { - .bgMiddle { - display: none; - } - - #d3dlogo { - width: 399px; - height: 74px; - background-image: url('../img/logo_small.png'); - margin-top: 9px; - } - - #btnsUpDown, #btnsTurnLeftRight { - zoom: 0.94; - -moz-transform: translate(0px,-5px) scale(.94); - } - - #btnNew { - zoom: 0.94; - -moz-transform: translate(-5px,-5px) scale(.94); - } - #btnOops { - zoom: 0.94; - -moz-transform: translate(-5px,-10px) scale(0.94); - } - - #btnPrint { - right: 10px; - top: 10px; - -moz-transform: translate(5px,-5px); - } - - - .btn { - zoom: 0.94; - -moz-transform: scale(.94); - } - - /*#drawAreaContainer {*/ - /*top: 128px;*/ - /*height: 350px;*/ - /*}*/ -} - -@media screen and (max-height: 560px) { - #d3dlogo { - width: 399px; - height: 57px; - background-image: url('../img/logo_smaller_wide.png'); - margin-top: 14px; - } - - #btnsUpDown, #btnsTurnLeftRight { - zoom: 0.86; - -moz-transform: translate(0px,-7px) scale(0.86); - } - - #btnPrint { - right: 6px; - -moz-transform: translate(10px,-10px); - } - - #btnNew { - zoom: 0.86; - -moz-transform: translate(-10px,-10px) scale(.86); - } - - .btn { - zoom: 0.86; - -moz-transform: scale(.86); - } - - #btnOops { - top: 350px; - zoom: 0.86; - -moz-transform: translate(-10px,-25px) scale(.86); - } - #btnSave { - -moz-transform: translate(-5px,-13px); - } - - #btnPrevious, #btnNext { - -moz-transform: translate(-5px,-10px); - } - - /*#drawAreaContainer {*/ - /*top: 110px;*/ - /*height: 350px;*/ - /*}*/ -} - - - diff --git a/css/settings.css b/css/settings.css index 829c410..55cc34d 100644 --- a/css/settings.css +++ b/css/settings.css @@ -9,17 +9,28 @@ body,th,td { font-family: Helvetica, Arial, "Nimbus Sans L", sans-serif; font-size: 13px; } +.settingsContainer { + position:relative; + max-width: 600px; + /*min-width: 370px;*/ + width: 100%; + height: 100%; +} +/*form#settingsForm {*/ + /*width: 100% auto;*/ +/*}*/ form fieldset { - width: 600px; + max-width: 600px; border: 1px solid rgb(187, 187, 187); -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 20px; - padding: 8px 0 8px 8px; + padding: 8px; + /*padding-right: 8px;*/ } form fieldset fieldset{ - width: 580px; + max-width: 580px; margin: 15px 0 5px 0; clear: left; float: left; @@ -60,11 +71,15 @@ form textarea { -moz-border-radius: 5px; border-radius: 5px; } -form textarea.gcode { - width: 270px; - height: 150px; +form .startgcode_left { + float:left; margin-right: 20px; } +form textarea.gcode { + max-width: 262px; + min-width: 200px; + height: 150px; +} form small { margin: 3px 0 0 0; display: block; diff --git a/css/settingsPopup.css b/css/settingsPopup.css deleted file mode 100644 index 95b407b..0000000 --- a/css/settingsPopup.css +++ /dev/null @@ -1,74 +0,0 @@ -#contentOverlay { - background-color: rgba(255, 255, 255, 0.65); - z-index: 20; - position: absolute; - top: 0px; - left: 0px; - width: 100%; - height: 100%; - display:none; -} -#settings { - background-color: #fff; - z-index: 15; - - position: absolute; - top: 50%; - left: 50%; - width: 835px; - height: 500px; - margin: -250px 0 0 -417.5px; - /*padding: 25px;*/ - - /*overflow: scroll;*/ - /*overflow-y: hidden;*/ - -moz-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - -webkit-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - border: 2px solid #222; - border-radius: 15px; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - overflow: hidden; -} -#settings header { - margin: 25px 25px 0 25px; - height: 44px; -} - -div.content { - margin: 15px 25px 25px 25px; - height: 388px; - display: table; -} - -div.content > div { - height: 100%; -} - -div.content > div.settings { - border: 1px solid rgb(187, 187, 187); - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - - width: 660px; - overflow: scroll; - max-height: 368px; - overflow-x: hidden; - padding: 10px 10px 10px 10px; -} -div.content > div.manipulationBtns { - display: table-cell; - vertical-align: bottom; - width: 125px; - -} - -div.content .btnOK { - width: 85px; - height: 86px; - background: url('../img/buttons/btnOk_settings.png') no-repeat; - margin: 0 0 0 10px; - cursor: pointer; -} diff --git a/css/styles.css b/css/styles.css index 88ba6b9..8c1813b 100644 --- a/css/styles.css +++ b/css/styles.css @@ -1,243 +1,3 @@ -/*! normalize.css v1.0.2 | MIT License | git.io/normalize */article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section, -summary { - display: block; -} -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden] { - display: none; -} -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -html, -button, -input, -select, -textarea { - font-family: sans-serif; -} -body { - margin: 0; -} -a:focus { - outline: thin dotted; -} -a:active, -a:hover { - outline: 0; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -h2 { - font-size: 1.5em; - margin: 0.83em 0; -} -h3 { - font-size: 1.17em; - margin: 1em 0; -} -h4 { - font-size: 1em; - margin: 1.33em 0; -} -h5 { - font-size: .83em; - margin: 1.67em 0; -} -h6 { - font-size: .67em; - margin: 2.33em 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: 700; -} -blockquote { - margin: 1em 40px; -} -dfn { - font-style: italic; -} -mark { - background: #ff0; - color: #000000; -} -p, -pre { - margin: 1em 0; -} -code, -kbd, -pre, -samp { - font-family: monospace,serif; - _font-family: 'courier new', monospace; - font-size: 1em; -} -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} -q { - quotes: none; -} -q:before, -q:after { - content: ''; - content: none; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -dl, -menu, -ol, -ul { - margin: 1em 0; -} -dd { - margin: 0 0 0 40px; -} -menu, -ol, -ul { - padding: 0 0 0 40px; -} -nav ul, -nav ol { - list-style: none; - list-style-image: none; -} -img { - border: 0; - -ms-interpolation-mode: bicubic; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 0; -} -form { - margin: 0; -} -fieldset { - border: 1px solid silver; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; - white-space: normal; - *margin-left: -7px; -} -button, -input, -select, -textarea { - font-size: 100%; - margin: 0; - vertical-align: baseline; - *vertical-align: middle; -} -button, -input { - line-height: normal; -} -button, -html input[type=button], -input[type=reset], -input[type=submit] { - -webkit-appearance: button; - cursor: pointer; - *overflow: visible; -} -button[disabled], -input[disabled] { - cursor: default; -} -input[type=checkbox], -input[type=radio] { - box-sizing: border-box; - padding: 0; - *height: 13px; - *width: 13px; -} -input[type=search] { - -webkit-appearance: textfield; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} -input[type=search]::-webkit-search-cancel-button, -input[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -textarea { - overflow: auto; - vertical-align: top; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -.cf { - *zoom: 1; -} -.cf:before, -.cf:after { - content: " "; - display: table; -} -.cf:after { - clear: both; -} /* GLOBAL CONTAINER @@ -245,6 +5,33 @@ table { */ body { background-color: #fcfcfc; + -moz-user-select: none; + /* disable cut copy paste */ + + -webkit-user-select: none; + /* disable cut copy paste */ + + overflow: hidden; + /* This chops off any overhanging divs */ + +} +img { + z-index: 5; + /*pointer-events:none;*/ + + /*-webkit-touch-callout: none; */ + /*disable callout, image save panel */ + + /*-webkit-tap-highlight-color: transparent; */ + /* "turn off" link highlight */ + +} +/* http://stackoverflow.com/questions/5348092/prevent-default-press-but-not-default-drag-in-ios-mobilesafari */ +.btn { + background-repeat: no-repeat; + /* -webkit-user-select: none;*/ + + cursor: pointer; } #landscape { position: absolute; @@ -328,7 +115,45 @@ body { border: 4px solid #000; border-radius: 15px; box-sizing: border-box; - z-index: 15px; + z-index: 15; +} +#canvasContainers { + display: table; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + padding: 0; + margin: 0; +} +#mycanvasContainer { + display: table-cell; + width: auto; + height: 100%; +} +#mycanvas { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + /*float: left;*/ + + border-right: 2px solid #333; +} +#previewContainer { + display: table-cell; + width: 150px; + height: 100%; +} +#preview { + width: 150px; + height: 100%; + float: right; + margin: 0; + padding: 0; } /* DEBUG THING */ #preview_tmp { @@ -345,7 +170,9 @@ body { width: 100%; height: 10%; } -/* DOODLE UP/DOWN/LEFT/RIGHT buttons */ +/* + DOODLE UP/DOWN/LEFT/RIGHT buttons +*/ .manipulationBtns { margin: 2px 5px; position: absolute; @@ -521,12 +348,70 @@ body { height: auto; float: right; } +/* + + PRINT PROGRESS DISPLAY + +*/ +#printProgressContainer { + position: absolute; + right: 30px; + top: 370px; + width: 110px; + margin: 5px 0px; + font-weight: bold; + display: none; +} +#progressbarContainer { + margin: 3px 0px; + width: inherit; + height: 20px; + background-color: #fff; + border: 2px solid #333; + border-radius: 5px; + -o-border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} +.progressAmount { + margin: 0px 5px; +} +#progressbar { + position: relative; + /*margin-bottom: -20px;*/ + + width: 0%; + height: 100%; + background-color: #4c4; + border: 0px solid #f0f; + border-radius: 3px; + -o-border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +/* + + THERMOMETER + +*/ +#thermometerContainer { + position: absolute; + right: 25px; + top: 370px; +} +#thermometerCanvas { + /*background: #59b2b8;*/ + + /*zoom: 2;*/ + +} /* REST */ /* CLEARFIX */ +/* http://nicolasgallagher.com/micro-clearfix-hack/ */ .clearfix:before, .clearfix:after { content: " "; @@ -545,25 +430,83 @@ body { } /* - REST + SETTINGS POPUP */ -/* CLEARFIX */ -.clearfix:before, -.clearfix:after { - content: " "; - /* 1 */ - +#contentOverlay { + background-color: rgba(255, 255, 255, 0.65); + z-index: 20; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + display: none; +} +#contentOverlay #settings { + background-color: #fff; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 15; + max-width: 835px; + max-height: 540px; + width: 80%; + height: 75%; + margin: 7% 8%; + box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); + border: 2px solid #222; + border-radius: 15px; + overflow: hidden; display: table; - /* 2 */ - + padding: 2%; } -.clearfix:after { - clear: both; +#contentOverlay #settings .settingsLabelContainer { + width: 100%; + height: auto; + margin-bottom: 1%; } -/* For IE 6/7 only*/ -.clearfix { - *zoom: 1; +#contentOverlay #settings .settingsLabelImg { + width: 45%; + max-width: 373px; + height: auto; +} +#contentOverlay #settings > .content { + margin: 3% 12%; + margin-top: 12%; + max-height: 388px; + display: table-row; + width: 100%; +} +#contentOverlay #settings > .content > .settings { + border: 1px solid #bbbbbb; + border-radius: 5px; + overflow: scroll; + overflow-x: hidden; +} +#contentOverlay #settings > .content > .btnContainer { + width: 15%; + position: relative; + display: table-cell; +} +#contentOverlay #settings > .content > .btnContainer > .btnOK { + position: absolute; + bottom: 3%; + right: 3%; + max-width: 85px; + min-width: 42px; + width: 91%; + height: auto; + margin: 0 2% 2% 0; + cursor: pointer; + float: right; +} +#contentOverlay #settings > .content > div { + height: 100%; } @media only screen and (max-width: 480px), only screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5), only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio: 1.5) { /* @@ -600,7 +543,7 @@ body { width: 100px; background-color: #fff; z-index: 50; - transition: left 0.15s ease-out; + transition: left 0.3s ease-out; } .hideleft { left: -101px; @@ -627,7 +570,7 @@ body { width: 100px; background-color: #fff; z-index: 50; - transition: right 0.15s ease-out; + transition: right 0.3s ease-out; } .hideright { right: -101px; @@ -661,6 +604,7 @@ body { border: 1px solid #808; background: url('../img/arrows.png') no-repeat; background-color: #eee; + cursor: pointer; } .sidebutton:active { background-color: #aaa; @@ -673,6 +617,9 @@ body { left: -27px; background-position: -25px 0px; } + .sidebuttonin:active { + background-color: #888; + } .leftpanel .sidebuttonin { background-color: #ccc; background-position: -25px 0px; @@ -681,29 +628,25 @@ body { background-color: #ccc; background-position: 0px 0px; } - .sidebuttonin:active { - background-color: #888; + /* + + SETTINGS POPUP - MOBILE + + */ + #contentOverlay { + z-index: 200; + } + #contentOverlay #settings { + width: 87%; + height: 82%; + margin: 6% 4%; + } + #contentOverlay #settings > .right { + width: 14%; } } @media only screen and (min-width: 1000px) and (max-device-pixel-ratio: 1.5), only screen and (min-width: 1000px) and (-webkit-max-device-pixel-ratio: 1.5) { - /* - .leftpanel { - background-color: #8F8; - } - .rightpanel { - background-color: #4Fc; - } - */ - /* - .leftpanel { - background-color: #0FF; - width: 200px; - } - .rightpanel { - width: 200px; - } - */ } @media only screen and (orientation: portrait) { #landscape { @@ -712,4 +655,15 @@ body { #portrait { display: block; } + .vertImage { + margin: 0px; + padding: 0px; + /*border: 2px solid #f0f;*/ + + max-width: 100%; + height: auto; + width: auto; + /* for ie9 */ + + } } diff --git a/less/base.less b/less/base.less index 8e2a3fd..70c6abf 100644 --- a/less/base.less +++ b/less/base.less @@ -5,6 +5,21 @@ */ body { background-color: #fcfcfc; + -moz-user-select: none; /* disable cut copy paste */ + -webkit-user-select: none; /* disable cut copy paste */ + overflow:hidden; /* This chops off any overhanging divs */ +} +img { + z-index: 5; + /*pointer-events:none;*/ + /*-webkit-touch-callout: none; *//*disable callout, image save panel */ + /*-webkit-tap-highlight-color: transparent; *//* "turn off" link highlight */ +} +/* http://stackoverflow.com/questions/5348092/prevent-default-press-but-not-default-drag-in-ios-mobilesafari */ +.btn { + background-repeat: no-repeat; +/* -webkit-user-select: none;*/ + cursor: pointer } #landscape { position:absolute; @@ -83,6 +98,7 @@ body { */ /* CLEARFIX */ +/* http://nicolasgallagher.com/micro-clearfix-hack/ */ .clearfix:before, .clearfix:after { content: " "; /* 1 */ @@ -97,4 +113,3 @@ body { *zoom: 1; } - diff --git a/less/base_centerpanel_drawarea.less b/less/base_centerpanel_drawarea.less index f68be62..e5cfbc7 100644 --- a/less/base_centerpanel_drawarea.less +++ b/less/base_centerpanel_drawarea.less @@ -7,8 +7,48 @@ border: 4px solid #000; border-radius: 15px; box-sizing: border-box; - z-index: 15px; + z-index: 15; } +#canvasContainers { + display:table; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + padding: 0; + margin: 0; +} + +#mycanvasContainer { + display:table-cell; + width: auto; + height: 100%; +} +#mycanvas { + width: 100%; + height: 100%; + margin: 0; + padding: 0; +/*float: left;*/ + border-right: 2px solid #333; +} + +#previewContainer { + display:table-cell; + width: 150px; + height: 100%; +} +#preview { + width: 150px; + height: 100%; + float: right; + margin: 0; + padding: 0; +} + /* DEBUG THING */ #preview_tmp { position: absolute; @@ -25,7 +65,9 @@ height: 10%; } -/* DOODLE UP/DOWN/LEFT/RIGHT buttons */ +/* + DOODLE UP/DOWN/LEFT/RIGHT buttons +*/ .manipulationBtns { margin: 2px 5px; position: absolute; @@ -37,9 +79,9 @@ } .manipulationBtn { - width: 45%; - height: auto; - cursor: pointer; + width: 45%; + height: auto; + cursor: pointer; } #btnsUpDown { diff --git a/less/base_leftpanel.less b/less/base_leftpanel.less index 0729f10..7b5e498 100644 --- a/less/base_leftpanel.less +++ b/less/base_leftpanel.less @@ -7,7 +7,6 @@ left: 0px; bottom: 0px; } - .btnNew { margin: 5% 0% 1% 5%; width: 100%; diff --git a/less/base_rightpanel.less b/less/base_rightpanel.less index 713cf7c..5ec7f90 100644 --- a/less/base_rightpanel.less +++ b/less/base_rightpanel.less @@ -42,26 +42,58 @@ } +/* + PRINT PROGRESS DISPLAY + +*/ +#printProgressContainer { + position: absolute; + right: 30px; + top: 370px; + width: 110px; + margin: 5px 0px; + font-weight: bold; + display:none; +} +#progressbarContainer { + margin: 3px 0px; + width: inherit; + height: 20px; + background-color: #fff; + border: 2px solid #333; + border-radius: 5px; + -o-border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} +.progressAmount { + margin: 0px 5px; +} +#progressbar { + position: relative; +/*margin-bottom: -20px;*/ + width: 0%; + height: 100%; + background-color: #4c4; + border: 0px solid #f0f; + border-radius: 3px; + -o-border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} /* - REST + THERMOMETER */ -/* CLEARFIX */ -.clearfix:before, -.clearfix:after { - content: " "; /* 1 */ - display: table; /* 2 */ +#thermometerContainer { + position: absolute; + right: 25px; + top: 370px; } -.clearfix:after { - clear: both; -} - -/* For IE 6/7 only*/ -.clearfix { - *zoom: 1; -} - - +#thermometerCanvas { +/*background: #59b2b8;*/ +/*zoom: 2;*/ +} \ No newline at end of file diff --git a/less/full.less b/less/full.less index ed712bf..101f62f 100644 --- a/less/full.less +++ b/less/full.less @@ -1,21 +1 @@ -/* -.leftpanel { - background-color: #8F8; -} -.rightpanel { - background-color: #4Fc; -} -*/ - - - -/* -.leftpanel { - background-color: #0FF; - width: 200px; -} - -.rightpanel { - width: 200px; -} -*/ \ No newline at end of file +// FULL styles (not sure if going to use...) \ No newline at end of file diff --git a/less/mobile.less b/less/mobile.less index 2d381ec..9ede81f 100644 --- a/less/mobile.less +++ b/less/mobile.less @@ -31,17 +31,12 @@ width: 100px; background-color: #fff; z-index: 50; - -webkit-transition: left .15s ease-out; - -moz-transition: left .15s ease-out; - -o-transition: left .15s ease-out; - transition: left .15s ease-out; + transition: left .3s ease-out; } .hideleft { left: -101px; } .shadowright { - -moz-box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); - -webkit-box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); } .btnNew { @@ -64,17 +59,12 @@ width: 100px; background-color: #fff; z-index: 50; - -webkit-transition: right .15s ease-out; - -moz-transition: right .15s ease-out; - -o-transition: right .15s ease-out; - transition: right .15s ease-out; + transition: right .3s ease-out; } .hideright { right: -101px; } .shadowleft { - -moz-box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); - -webkit-box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); } .btnPrint { @@ -102,29 +92,36 @@ border: 1px solid #808; background: url('../img/arrows.png') no-repeat; background-color: #eee; -} -.sidebutton:active { - background-color: #aaa; + cursor: pointer; + + &:active { + background-color: #aaa; + } + + .leftpanel & { + right: -27px; + background-position: 0px 0px; + } + + .rightpanel & { + left: -27px; + background-position: -25px 0px; + } } -.leftpanel .sidebutton { - right: -27px; - background-position: 0px 0px; -} -.rightpanel .sidebutton { - left: -27px; - background-position: -25px 0px; -} +.sidebuttonin { + &:active { + background-color: #888; + } -.leftpanel .sidebuttonin { - background-color: #ccc; - background-position: -25px 0px; -} -.rightpanel .sidebuttonin { - background-color: #ccc; - background-position: -0px 0px; -} -.sidebuttonin:active { - background-color: #888; + .leftpanel & { + background-color: #ccc; + background-position: -25px 0px; + } + + .rightpanel & { + background-color: #ccc; + background-position: -0px 0px; + } } diff --git a/less/mobile_settingspopup.less b/less/mobile_settingspopup.less new file mode 100644 index 0000000..213cc06 --- /dev/null +++ b/less/mobile_settingspopup.less @@ -0,0 +1,18 @@ +/* + + SETTINGS POPUP - MOBILE + +*/ +#contentOverlay { + z-index: 200; + + #settings { + width: 87%; + height: 82%; + margin: 6% 4%; + + > .right { + width: 14%; + } + } +} \ No newline at end of file diff --git a/less/normalize.css b/less/normalize.css index 823cc10..4617600 100644 --- a/less/normalize.css +++ b/less/normalize.css @@ -501,34 +501,4 @@ textarea { table { border-collapse: collapse; border-spacing: 0; -} - - -/* http://nicolasgallagher.com/micro-clearfix-hack/ */ -/** - * For modern browsers - * 1. The space content is one way to avoid an Opera bug when the - * contenteditable attribute is included anywhere else in the document. - * Otherwise it causes space to appear at the top and bottom of elements - * that are clearfixed. - * 2. The use of `table` rather than `block` is only necessary if using - * `:before` to contain the top-margins of child elements. - */ - -/** - * For IE 6/7 only - * Include this rule to trigger hasLayout and contain floats. - */ -.cf { - *zoom: 1; -} - -.cf:before, -.cf:after { - content: " "; /* 1 */ - display: table; /* 2 */ -} - -.cf:after { - clear: both; -} +} \ No newline at end of file diff --git a/less/normalize.less b/less/normalize.less new file mode 100644 index 0000000..4617600 --- /dev/null +++ b/less/normalize.less @@ -0,0 +1,504 @@ +/*! normalize.css v1.0.2 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/* + * Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* + * Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/* + * Prevents modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/* + * Addresses styling for `hidden` attribute not present in IE 7/8/9, Firefox 3, + * and Safari 4. + * Known issue: no IE 6 support. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/* + * 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevents iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-size: 100%; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/* + * Addresses `font-family` inconsistency between `textarea` and other form + * elements. + */ + +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/* + * Addresses margins handled incorrectly in IE 6/7. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/* + * Addresses `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/* + * Improves readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/* + * Addresses font sizes and margins set differently in IE 6/7. + * Addresses font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +/* + * Addresses styling not present in IE 7/8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Addresses style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/* + * Addresses styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/* + * Addresses styling not present in IE 6/7/8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/* + * Addresses margins set differently in IE 6/7. + */ + +p, +pre { + margin: 1em 0; +} + +/* + * Corrects font family set oddly in IE 6, Safari 4/5, and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/* + * Improves readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/* + * Addresses CSS quotes not supported in IE 6/7. + */ + +q { + quotes: none; +} + +/* + * Addresses `quotes` property not supported in Safari 4. + */ + +q:before, +q:after { + content: ''; + content: none; +} + +/* + * Addresses inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/* + * Prevents `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Lists + ========================================================================== */ + +/* + * Addresses margins set differently in IE 6/7. + */ + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/* + * Addresses paddings set differently in IE 6/7. + */ + +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/* + * Corrects list images handled incorrectly in IE 7. + */ + +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/* + * 1. Removes border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improves image quality when scaled in IE 7. + */ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/* + * Corrects overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/* + * Addresses margin not present in IE 6/7/8/9, Safari 5, and Opera 11. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/* + * Corrects margin displayed oddly in IE 6/7. + */ + +form { + margin: 0; +} + +/* + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Corrects color not being inherited in IE 6/7/8/9. + * 2. Corrects text not wrapping in Firefox 3. + * 3. Corrects alignment displayed oddly in IE 6/7. + */ + +legend { + border: 0; /* 1 */ + padding: 0; + white-space: normal; /* 2 */ + *margin-left: -7px; /* 3 */ +} + +/* + * 1. Corrects font size not being inherited in all browsers. + * 2. Addresses margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improves appearance and consistency in all browsers. + */ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/* + * Addresses Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/* + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Corrects inability to style clickable `input` types in iOS. + * 3. Improves usability and consistency of cursor style between image-type + * `input` and others. + * 4. Removes inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + *overflow: visible; /* 4 */ +} + +/* + * Re-set default cursor for disabled elements. + */ + +button[disabled], +input[disabled] { + cursor: default; +} + +/* + * 1. Addresses box sizing set to content-box in IE 8/9. + * 2. Removes excess padding in IE 8/9. + * 3. Removes excess padding in IE 7. + * Known issue: excess padding remains in IE 6. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/* + * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/* + * Removes inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* + * Removes inner padding and border in Firefox 3+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Removes default vertical scrollbar in IE 6/7/8/9. + * 2. Improves readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/* + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/less/normalize.min.css b/less/normalize.min.css index 6eb5fd1..5fabfd2 100644 --- a/less/normalize.min.css +++ b/less/normalize.min.css @@ -1 +1 @@ -/*! normalize.css v1.0.2 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:1em 40px}dfn{font-style:italic}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new',monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.cf{*zoom:1}.cf:before,.cf:after{content:" ";display:table}.cf:after{clear:both} \ No newline at end of file +/*! normalize.css v1.0.2 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:1em 40px}dfn{font-style:italic}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new',monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} \ No newline at end of file diff --git a/less/normalize.min.less b/less/normalize.min.less new file mode 100644 index 0000000..5fabfd2 --- /dev/null +++ b/less/normalize.min.less @@ -0,0 +1 @@ +/*! normalize.css v1.0.2 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:1em 40px}dfn{font-style:italic}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new',monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} \ No newline at end of file diff --git a/less/portrait.less b/less/portrait.less index 6ead101..728c21b 100644 --- a/less/portrait.less +++ b/less/portrait.less @@ -4,4 +4,13 @@ #portrait { display: block; -} \ No newline at end of file +} + +.vertImage { + margin: 0px; + padding: 0px; +/*border: 2px solid #f0f;*/ + max-width: 100%; + height: auto; + width: auto; /* for ie9 */ +} diff --git a/less/settingsPopup.less b/less/settingsPopup.less index 472acaf..b4caf4f 100644 --- a/less/settingsPopup.less +++ b/less/settingsPopup.less @@ -1,74 +1,85 @@ +/* + + SETTINGS POPUP + +*/ #contentOverlay { background-color: rgba(255, 255, 255, 0.65); z-index: 20; position: absolute; - top: 0px; - left: 0px; + top: 0; + left: 0; + right: 0; + bottom: 0; width: 100%; height: 100%; display:none; -} -#settings { - background-color: #fff; - z-index: 15; - position: absolute; - top: 50%; - left: 50%; - width: 835px; - height: 500px; - margin: -250px 0 0 -417.5px; -/*padding: 25px;*/ + #settings { + background-color: #fff; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 15; + max-width: 835px; + max-height: 540px; + width: 80%; + height: 75%; + margin: 7% 8%; + box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); + border: 2px solid #222; + border-radius: 15px; + overflow: hidden; + display: table; + padding: 2%; -/*overflow: scroll;*/ -/*overflow-y: hidden;*/ - -moz-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - -webkit-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - border: 2px solid #222; - border-radius: 15px; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - overflow: hidden; -} -#settings header { - margin: 25px 25px 0 25px; - height: 44px; -} + .settingsLabelContainer { + width: 100%; + height: auto; + margin-bottom: 1%; + } + .settingsLabelImg { + width: 45%; + max-width: 373px; + height: auto; + } -div.content { - margin: 15px 25px 25px 25px; - height: 388px; - display: table; -} + > .content { + margin: 3% 12%; + margin-top: 12%; + max-height: 388px; + display: table-row; + width: 100%; -div.content > div { - height: 100%; -} + > .settings { + border: 1px solid rgb(187, 187, 187); + border-radius: 5px; + overflow: scroll; + overflow-x: hidden; + } + > .btnContainer { + width: 15%; + position:relative; + display: table-cell; -div.content > div.settings { - border: 1px solid rgb(187, 187, 187); - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - - width: 660px; - overflow: scroll; - max-height: 368px; - overflow-x: hidden; - padding: 10px 10px 10px 10px; -} -div.content > div.manipulationBtns { - display: table-cell; - vertical-align: bottom; - width: 125px; - -} - -div.content .btnOK { - width: 85px; - height: 86px; - background: url('../img/buttons/btnOk_settings.png') no-repeat; - margin: 0 0 0 10px; - cursor: pointer; -} + > .btnOK { + position: absolute; + bottom: 3%; + right: 3%; + max-width: 85px; + min-width: 42px; + width: 91%; + height: auto; + margin: 0 2% 2% 0; + cursor: pointer; + float: right; + } + } + > div { + height: 100%; + } + } + } +} \ No newline at end of file diff --git a/less/styles.less b/less/styles.less index 23b87c5..ed4d2a5 100644 --- a/less/styles.less +++ b/less/styles.less @@ -1,5 +1,7 @@ // IMPORTS +//@import "normalize.min.less"; @import "base.less"; +@import "settingsPopup.less"; // MOBILE @@ -7,6 +9,7 @@ only screen and (max-width: 720px) and (min-device-pixel-ratio : 1.5), only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio : 1.5) { @import "mobile.less"; + @import "mobile_settingspopup.less"; } // FULL diff --git a/lesstocss.sh b/lesstocss.sh index 3ad7c74..67ca0d9 100755 --- a/lesstocss.sh +++ b/lesstocss.sh @@ -3,7 +3,10 @@ echo 'converting LESS to CSS...' # generate CSS from LESS lessc less/styles.less css/styles.css -rm css/styles.min.css + +if [ -a css/styles.min.css ]; then + rm css/styles.min.css +fi if [ -n "$1" ]; then if [ $1 = '--prefix' ] || [ $1 = '-p' ]; then @@ -12,14 +15,21 @@ if [ -n "$1" ]; then # prefixed (-s overwrites existing file) prefixr --input ./css/styles.css -s fi - if [ $1 = '--minify' ] || [ $1 = '-m' ]; then - echo 'creating minified and prefixed...' + if [ $1 = '--minify' ] || [ $1 = '-m' ]; then - # copy to .min.css to create a minified version as well - cp css/styles.css css/styles.min.css + if [ ! -n "$2" ]; then + echo 'creating minified....' + lessc --yui-compress less/styles.less css/styles.min.css + else + echo 'creating minified and prefixed...' + + # copy to .min.css to create a minified version as well + cp css/styles.css css/styles.min.css + + # prefixed and minified (-s overwrites existing file) + prefixr --input ./css/styles.min.css -s -c + fi - # prefixed and minified (-s overwrites existing file) - prefixr --input ./css/styles.min.css -s -c fi fi diff --git a/settings.html b/settings.html index 5d5c826..601ea2d 100755 --- a/settings.html +++ b/settings.html @@ -9,7 +9,7 @@ -
+
-
+
\ No newline at end of file From 0a44087989a7448079163cdd956f937e4413d68a Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Fri, 11 Oct 2013 11:42:27 +0200 Subject: [PATCH 19/22] changes to how the draw and preview canvasses are positioned and initted --- index.html | 112 ++++++++++++++++------------ js/buttonbehaviors.js | 50 +++++++------ js/canvasDrawing_v01.js | 20 +++-- js/init_layout.js | 45 +++++++---- js/main.js | 9 +-- js/previewRendering_v02.js | 9 +-- less/base_centerpanel_drawarea.less | 22 +++--- 7 files changed, 153 insertions(+), 114 deletions(-) diff --git a/index.html b/index.html index 3e0fbdb..53317df 100755 --- a/index.html +++ b/index.html @@ -6,42 +6,42 @@ - - - - - - + - + -
-
-
-
-
-
- +
+ + +
+ -
- -
- - - -
- - - - +
+ + +
+
+
+
+ +
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+ +
+
+ +
-
-
-
+ +
+
+
+
+ + +
+
+ + +
- +
-
- settings -
+
+ settings +
-
henk
-
-
+
+
+ settings
@@ -106,6 +119,7 @@ + diff --git a/js/buttonbehaviors.js b/js/buttonbehaviors.js index a335815..0c8fa4f 100644 --- a/js/buttonbehaviors.js +++ b/js/buttonbehaviors.js @@ -11,7 +11,7 @@ var btnNew, btnPrevious, btnNext; var btnOops, btnStop, btnClear; var btnMoveUp, btnMoveDown, btnTwistLeft, btnTwistRight; var btnInfo, btnSettings; -var btnDebug; // debug +//var btnDebug; // debug var displayTemp, displayProgress; var displayTempEnabled = false; @@ -23,43 +23,43 @@ var state = IDLE_STATE; var prevState = state; function initButtonBehavior() { - console.log("f:initButtonBehavior >> btnNew = " + btnNew); + console.log("f:initButtonBehavior"); - btnClear= $("#btnClear"); - btnOops = $("#btnOops"); +// btnClear= $(".btnClear"); + btnOops = $(".btnOops"); btnMoveUp = $("#btnMoveUp"); btnMoveDown = $("#btnMoveDown"); btnTwistLeft = $("#btnTwistLeft"); btnTwistRight = $("#btnTwistRight"); - btnInfo = $("#btnInfo"); - btnSettings = $("#btnSettings"); - btnNew = $("#btnNew"); - btnPrint= $("#btnPrint"); - btnStop = $("#btnStop"); - displayTemp = $("#displayTemp"); + btnInfo = $(".btnInfo"); + btnSettings = $(".btnSettings"); + btnNew = $(".btnNew"); + btnPrint= $(".btnPrint"); + btnStop = $(".btnStop"); + displayTemp = $("#thermometerContainer"); displayProgress = $("#printProgressContainer"); -// btnPrevious = $("#btnPrevious"); -// btnNext = $("#btnNext"); + btnPrevious = $(".btnPrevious"); + btnNext = $(".btnNext"); //debug - btnDebug = $(".debugBtn"); + //btnDebug = $(".debugBtn"); - btnNew.bind('touchstart mousedown',clearDoodle); - btnPrint.bind('touchstart mousedown',print); + btnNew.on('touchstart mousedown', clearDoodle); + btnPrint.on('touchstart mousedown', print); // not using these at the moment $("#btnPrevious").css("opacity", "0.3"); - $("#btnNext").css("opacity", "0.3"); + btnNext.css("opacity", "0.3"); $("#btnSave").css("opacity", "0.3"); - $("#btnInfo").css("opacity", "0.3"); + btnInfo.css("opacity", "0.3"); - btnClear.click(function(e) { - e.preventDefault(); - // console.log("clear"); - - clearDoodle(); - }); +// btnClear.click(function(e) { +// e.preventDefault(); +// // console.log("clear"); +// +// clearDoodle(); +// }); function startOops(e) { // console.log("btnOops mouse down"); @@ -180,14 +180,16 @@ function initButtonBehavior() { }); // DEBUG + /* // $(".agentInfo").css("display", "none"); btnDebug.click(function(e) { console.log("debugClick"); $(".agentInfo").toggleClass("agentInfoToggle"); e.preventDefault(); }) + //*/ - btnStop.bind('touchstart mousedown',stopPrint); + btnStop.on('touchstart mousedown',stopPrint); } function stopPrint() { console.log("f:stopPrint() >> sendPrintCommands = " + sendPrintCommands); diff --git a/js/canvasDrawing_v01.js b/js/canvasDrawing_v01.js index aee80dc..6ecadc7 100644 --- a/js/canvasDrawing_v01.js +++ b/js/canvasDrawing_v01.js @@ -11,12 +11,8 @@ var svgPathParamsRegExp = /([LM])(\d*) (\d*)/; var dragging = false; -var $canvas = $("#mycanvas"); -var canvas = $("#mycanvas")[0]; -var ctx = canvas.getContext('2d'); - -var canvasWidth = canvas.width; -var canvasHeight = canvas.height; +var $canvas, canvas, ctx; +var canvasWidth, canvasHeight; var drawCanvas; var drawCanvasTopLeftCoords = [0, 0]; @@ -41,6 +37,14 @@ var lineweight = 2; function initDoodleDrawing() { console.log("f:initDoodleDrawing()"); + $canvas = $("#mycanvas"); + canvas = $canvas[0]; + ctx = canvas.getContext('2d'); + + canvasWidth = canvas.width; + canvasHeight = canvas.height; + + //* //TODO make these jquery eventhandlers (works for all) if (!canvas.addEventListener) { @@ -61,8 +65,8 @@ function initDoodleDrawing() { } //*/ - drawCanvas = $("#drawAreaContainer"); -// drawCanvas = $("#mycanvasContainer"); // $("#drawAreaContainer") +// drawCanvas = $(".drawareacontainer"); + drawCanvas = $("#mycanvasContainer"); // $("#drawAreaContainer") console.log("drawCanvasTopLeftCoords: " + drawCanvasTopLeftCoords); // drawCanvasTopLeftCoords[0] = drawCanvas.css("left").match(/[0-9]/g).join(""); diff --git a/js/init_layout.js b/js/init_layout.js index 2ab02c9..8150cb5 100644 --- a/js/init_layout.js +++ b/js/init_layout.js @@ -1,26 +1,37 @@ var drawAreaContainerMinHeight = 300; var drawAreaContainerMaxHeight = 450; + function doOnResize() { // console.log("doOnResize() >> " + new Date().getTime()); // $(".container").css("height", window.innerHeight); - $drawAreaContainer.css("marginLeft", -$drawAreaContainer.width()/2); + /* 2013-10-09 commented out -> no more need with new layouting + $drawAreaContainer.css("marginLeft", -$drawAreaContainer.width()/2); $drawAreaContainer.css("marginTop", -$drawAreaContainer.height() *.45); // $drawAreaContainer.css("marginTop", -parseInt($drawAreaContainer.css("height")) * 0.45); +//*/ - canvas.width = $drawAreaContainer.width() - 150; // canvas.clientWidth; - canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; + // canvas.width = $drawAreaContainer.width() - preview.width; // canvas.clientWidth; + // canvas.width = $("#mycanvasContainer").width(); + canvas.width = drawCanvas.width(); + canvas.height = drawCanvas.height(); // canvas.clientHeight; + // canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; - preview.width = 150; + // preview.width = 150; preview.height = $drawAreaContainer.height(); + + canvasWidth = $canvas.width(); + canvasHeight = $canvas.height(); + calcPreviewCanvasProperties(); + // layerOffsetY = preview.height - 1.75 * layerCY; // yStep = preview.height / 150; // preview.width = parseInt($preview.css("width"), 10); // preview.height = parseInt($preview.css("height"), 10); - canvasWidth = canvas.width; - canvasHeight = canvas.height; +// canvasWidth = canvas.width; +// canvasHeight = canvas.height; drawCanvasTopLeftCoords[0] = drawCanvas.offset().left; drawCanvasTopLeftCoords[1] = drawCanvas.offset().top; @@ -75,27 +86,33 @@ function initLayouting() { // doodleCanvas = $("#mycanvas")[0]; // doodleCanvasContext = doodleCanvas.getContext('2d'); - $drawAreaContainer = $("#drawAreaContainer"); + $drawAreaContainer = $(".drawareacontainer"); + /* 2013-10-09 commented out -> no more need with new layouting $drawAreaContainer.css("margin", 0); $drawAreaContainer.css("marginLeft", -$drawAreaContainer.width()/2); $drawAreaContainer.css("marginTop", -$drawAreaContainer.height() *.45); + //*/ - canvas.width = $drawAreaContainer.width() - 150; // canvas.clientWidth; - canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; +// console.log(" preview.width: " + preview.width + ", $preview.width(): " + $preview.width()); +// canvas.width = $drawAreaContainer.width() - preview.width; // canvas.clientWidth; +// canvas.width = $("#mycanvasContainer").width(); + canvas.width = drawCanvas.width(); + canvas.height = drawCanvas.height(); // canvas.clientHeight; +// canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; - preview.width = 150; +// preview.width = 150; preview.height = $drawAreaContainer.height(); - canvasWidth = canvas.width; - canvasHeight = canvas.height; + canvasWidth = $canvas.width(); + canvasHeight = $canvas.height(); $drawAreaContainer.show(); // window.innerHeight console.log("window.innerHeight: " + window.innerHeight); console.log("window.innerWidth: " + window.innerWidth); - console.log("$('#drawAreaContainer').innerHeight(): " + $("#drawAreaContainer").innerHeight()); - console.log("$('#drawAreaContainer').offset().top: " + $("#drawAreaContainer").offset().top); + console.log("$drawAreaContainer.innerHeight(): " + $drawAreaContainer.innerHeight()); + console.log("$drawAreaContainer.offset().top: " + $drawAreaContainer.offset().top); /* 2013-07-26 not doing this resizing stuff now, it's not working well yet diff --git a/js/main.js b/js/main.js index 6de3776..48eec0d 100644 --- a/js/main.js +++ b/js/main.js @@ -16,9 +16,6 @@ $(function() { //TODO give this a more logical place in code - - - if (getURLParameter("d") != "null") debugMode = (getURLParameter("d") == "1"); if (getURLParameter("p") != "null") sendPrintCommands = (getURLParameter("p") == "1"); if (getURLParameter("c") != "null") communicateWithWifibox = (getURLParameter("c") == "1"); @@ -40,9 +37,10 @@ $(function() { console.log("wifiboxIsRemote: " + wifiboxIsRemote); console.log("wifibox URL: " + wifiboxURL); - initLayouting(); initDoodleDrawing(); initPreviewRendering(); + initLayouting(); + initSidebars(); initButtonBehavior(); thermometer.init($("#thermometerCanvas"), $("#thermometerContainer")); @@ -51,13 +49,14 @@ $(function() { $(document).on(Printer.UPDATE,update); settingsWindow.init(wifiboxURL); - $(document).on(SettingsWindow.SETTINGS_LOADED,settingsLoaded); + $(document).on(SettingsWindow.SETTINGS_LOADED, settingsLoaded); if(debugMode) { console.log("debug mode is true"); $("body").css("overflow", "auto"); $("#debug_textArea").css("display", "block"); $("#preview_tmp").css("display", "block"); +// $("#debugContainer").css("display", "block"); /* TEMP CODE!! -> artificially populates the startgcode and endgcode textareas in the settings window */ // todo remove this temporary code... diff --git a/js/previewRendering_v02.js b/js/previewRendering_v02.js index 52709df..24a4333 100644 --- a/js/previewRendering_v02.js +++ b/js/previewRendering_v02.js @@ -3,11 +3,6 @@ var $preview; var preview; var previewCtx; -$preview = $("#preview"); - -preview = document.getElementById('preview'); -previewCtx = preview.getContext('2d'); - var preview_tmp; var previewCtx_tmp; @@ -25,6 +20,10 @@ var redrawInterval = 1000 / 30; // ms function initPreviewRendering() { console.log("f:initPreviewRendering()"); + $preview = $("#preview"); + preview = $preview[0]; + previewCtx = preview.getContext('2d'); + // DEBUG --> mbt preview_tmp (voor de toImageData truc) var _ratio = preview.width / canvas.width; preview_tmp = document.getElementById('preview_tmp'); diff --git a/less/base_centerpanel_drawarea.less b/less/base_centerpanel_drawarea.less index e5cfbc7..7838325 100644 --- a/less/base_centerpanel_drawarea.less +++ b/less/base_centerpanel_drawarea.less @@ -7,10 +7,10 @@ border: 4px solid #000; border-radius: 15px; box-sizing: border-box; - z-index: 15; + z-index: 15px; } + #canvasContainers { - display:table; position: absolute; top: 0; bottom: 0; @@ -23,8 +23,10 @@ } #mycanvasContainer { - display:table-cell; - width: auto; + position: absolute; + top: 0; + left: 0; + width: 78%; height: 100%; } #mycanvas { @@ -32,19 +34,21 @@ height: 100%; margin: 0; padding: 0; -/*float: left;*/ border-right: 2px solid #333; } #previewContainer { - display:table-cell; - width: 150px; + position: absolute; + top: 0; + right: 0; + width: 22%; +// max-width: 150px; height: 100%; } #preview { - width: 150px; + min-width: 50px; + width: 100%; height: 100%; - float: right; margin: 0; padding: 0; } From 65f43f197f940f7a0f9ca3b743972cbf3b65fceb Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Fri, 11 Oct 2013 11:44:28 +0200 Subject: [PATCH 20/22] updates css styles --- css/styles.css | 1158 ++++++++++++++++++++++++-------------------- css/styles.min.css | 2 +- 2 files changed, 634 insertions(+), 526 deletions(-) diff --git a/css/styles.css b/css/styles.css index 8c1813b..fea043e 100644 --- a/css/styles.css +++ b/css/styles.css @@ -1,669 +1,777 @@ /* - GLOBAL CONTAINER +GLOBAL CONTAINER -*/ + */ body { - background-color: #fcfcfc; - -moz-user-select: none; - /* disable cut copy paste */ - - -webkit-user-select: none; - /* disable cut copy paste */ - - overflow: hidden; - /* This chops off any overhanging divs */ + background-color: #fcfcfc; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; /* disable cut copy paste */ +/* disable cut copy paste */ +overflow: hidden; /* This chops off any overhanging divs */ } + img { - z-index: 5; - /*pointer-events:none;*/ - - /*-webkit-touch-callout: none; */ - /*disable callout, image save panel */ - - /*-webkit-tap-highlight-color: transparent; */ - /* "turn off" link highlight */ - + z-index: 5; /*pointer-events: none; + */ +/*-webkit-touch-callout: none; + */ +/*disable callout, image save panel */ +/*-webkit-tap-highlight-color: transparent; + */ +/* "turn off" link highlight */ } + /* http://stackoverflow.com/questions/5348092/prevent-default-press-but-not-default-drag-in-ios-mobilesafari */ .btn { - background-repeat: no-repeat; - /* -webkit-user-select: none;*/ + background-repeat: no-repeat; /* -webkit-user-select: none; + */ +cursor: pointer; +} - cursor: pointer; -} #landscape { - position: absolute; - background-color: #fff; - width: 100%; - max-width: 1024px; - max-height: 768px; - top: 0px; - bottom: 0px; - left: 0px; - right: 0px; - z-index: 5; - overflow: hidden; - margin: 0px auto; - outline: 2px solid #5e8c71; - box-shadow: 0 0 8px rgba(8, 8, 8, 0.25); + position: absolute; + background-color: #fff; + width: 100%; + max-width: 1024px; + max-height: 768px; + top: 0px; + bottom: 0px; + left: 0px; + right: 0px; + z-index: 5; + overflow: hidden; + margin: 0px auto; + outline: 2px solid #5e8c71; + + -webkit-box-shadow: 0 0 8px rgba(8, 8, 8, 0.25); + box-shadow: 0 0 8px rgba(8, 8, 8, 0.25); } + #portrait { - display: none; + display: none; } + .bgContainer { - position: absolute; - width: 100%; - height: 100%; - overflow: hidden; + position: absolute; + width: 100%; + height: 100%; + overflow: hidden; } -.bgTop, -.bgMiddle, -.bgBottom { - opacity: 1.0; - transition: opacity .35s linear; - position: absolute; - left: 0px; - z-index: -5; + +.bgTop,.bgMiddle,.bgBottom { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + opacity: 1.0; + + -webkit-transition: opacity .35s linear; + -moz-transition: opacity .35s linear; + -o-transition: opacity .35s linear; + -ms-transition: opacity .35s linear; + transition: opacity .35s linear; + position: absolute; + left: 0px; + z-index: -5; } + .bgTop { - top: 0px; + top: 0px; } + .bgMiddle { - top: 30%; + top: 30%; } + .bgBottom { - bottom: 0px; + bottom: 0px; } -.rightpanel img, -.leftpanel img { - cursor: pointer; + +.rightpanel img,.leftpanel img { + cursor: pointer; } + /* - CENTER PANEL +CENTER PANEL -*/ + */ .centerpanel { - position: absolute; - left: 50%; - margin-left: -33%; - width: 66%; - height: 100%; - z-index: 5; + position: absolute; + left: 50%; + margin-left: -33%; + width: 66%; + height: 100%; + z-index: 5; } -.logopanel { - height: 25%; -} -.d3dlogo { - position: relative; - top: 15%; - width: 100%; - height: 100%; - margin: 0px auto; - max-width: 399px; - height: 139px; - background: url('../img/logo/logo_full.png') no-repeat center center; - cursor: pointer; -} -.drawareacontainer { - position: relative; - width: 100%; - height: 65%; - background-color: #fff; - border: 4px solid #000; - border-radius: 15px; - box-sizing: border-box; - z-index: 15; -} -#canvasContainers { - display: table; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - padding: 0; - margin: 0; -} -#mycanvasContainer { - display: table-cell; - width: auto; - height: 100%; -} -#mycanvas { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - /*float: left;*/ - border-right: 2px solid #333; +.logopanel { + height: 25%; } + +.d3dlogo { + position: relative; + top: 15%; + width: 100%; + height: 100%; + margin: 0px auto; + max-width: 399px; + height: 139px; + background: url('../img/logo/logo_full.png') no-repeat center center; + cursor: pointer; +} + +.drawareacontainer { + position: relative; + width: 100%; + height: 65%; + background-color: #fff; + border: 4px solid #000; + border-radius: 15px; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + z-index: 15px; +} + +#canvasContainers { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + padding: 0; + margin: 0; +} + +#mycanvasContainer { + position: absolute; + top: 0; + left: 0; + width: 78%; + height: 100%; +} + +#mycanvas { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + border-right: 2px solid #333; +} + #previewContainer { - display: table-cell; - width: 150px; - height: 100%; + position: absolute; + top: 0; + right: 0; + width: 22%; + height: 100%; } + #preview { - width: 150px; - height: 100%; - float: right; - margin: 0; - padding: 0; + min-width: 50px; + width: 100%; + height: 100%; + margin: 0; + padding: 0; } + /* DEBUG THING */ #preview_tmp { - position: absolute; - top: 0px; - left: 0px; - z-index: 500; - border: 1px solid #f80; - display: none; + position: absolute; + top: 0px; + left: 0px; + z-index: 500; + border: 1px solid #f80; + display: none; } + .bottompanel { - position: relative; - bottom: 0px; - width: 100%; - height: 10%; + position: relative; + bottom: 0px; + width: 100%; + height: 10%; } + /* - DOODLE UP/DOWN/LEFT/RIGHT buttons -*/ +DOODLE UP/DOWN/LEFT/RIGHT buttons + */ .manipulationBtns { - margin: 2px 5px; - position: absolute; - right: 0; - top: 0; - max-width: 340px; - max-height: 70px; - width: 45%; + margin: 2px 5px; + position: absolute; + right: 0; + top: 0; + max-width: 340px; + max-height: 70px; + width: 45%; } + .manipulationBtn { - width: 45%; - height: auto; - cursor: pointer; + width: 45%; + height: auto; + cursor: pointer; } + #btnsUpDown { - float: left; - width: 45%; + float: left; + width: 45%; } + #btnsUpDown > div { - float: left; - padding-right: 8px; - background-repeat: no-repeat; + float: left; + padding-right: 8px; + background-repeat: no-repeat; } + #btnsTurnLeftRight { - float: right; - width: 45%; + float: right; + width: 45%; } + #btnsTurnLeftRight > div { - float: left; - padding-right: 8px; - background-repeat: no-repeat; + float: left; + padding-right: 8px; + background-repeat: no-repeat; } + #btnMoveUp { - max-width: 65px; + max-width: 65px; } + #btnMoveDown { - max-width: 64px; + max-width: 64px; } + #btnTwistLeft { - max-width: 59px; + max-width: 59px; } + #btnTwistRight { - max-width: 64px; + max-width: 64px; } + /* - HEIGHT-related RESPONSIVE STUFF -*/ +HEIGHT-related RESPONSIVE STUFF + */ @media screen and (max-height: 700px) { - .logopanel { - height: 22%; - } - .doodlecontainer { - height: 68%; - } - .d3dlogo { - top: 25%; - max-width: 399px; - height: 74px; - background-image: url('../img/logo/logo_small.png'); - } + .logopanel { + height: 22%; } + +.doodlecontainer { + height: 68%; +} + +.d3dlogo { + top: 25%; + max-width: 399px; + height: 74px; + background-image: url('../img/logo/logo_small.png'); +} + +} + @media screen and (max-height: 655px) { - .bgMiddle { - opacity: 0; - } + .bgMiddle { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + opacity: 0; } + +} + @media screen and (max-height: 525px) { - .d3dlogo { - max-width: 399px; - top: 20%; - height: 57px; - background-image: url('../img/logo/logo_smaller_wide.png'); - } + .d3dlogo { + max-width: 399px; + top: 20%; + height: 57px; + background-image: url('../img/logo/logo_smaller_wide.png'); } + +} + @media screen and (max-height: 375px) { - .d3dlogo { - max-width: 399px; - height: 40px; - background-image: url('../img/logo/logo_smallest_wide.png'); - } + .d3dlogo { + max-width: 399px; + height: 40px; + background-image: url('../img/logo/logo_smallest_wide.png'); } + +} + /* - LEFT PANEL +LEFT PANEL -*/ + */ .leftpanel { - position: absolute; - width: 17%; - /* background-color: rgba(67, 204, 67, 0.4);*/ - - top: 0px; - left: 0px; - bottom: 0px; + position: absolute; + width: 17%; /* background-color: rgba(67, 204, 67, 0.4); + */ +top: 0px; + left: 0px; + bottom: 0px; } + .btnNew { - margin: 5% 0% 1% 5%; - width: 100%; - max-width: 180px; - height: auto; + margin: 5% 0% 1% 5%; + width: 100%; + max-width: 180px; + height: auto; } + .btnsPrevNext { - margin: 1% 7%; - max-width: 160px; + margin: 1% 7%; + max-width: 160px; } + .btnPrevious { - width: 40%; - max-width: 56px; - height: auto; + width: 40%; + max-width: 56px; + height: auto; } + .btnNext { - width: 40%; - max-width: 56px; - height: auto; - float: right; + width: 40%; + max-width: 56px; + height: auto; + float: right; } + .btnSave { - margin: 5% 5% 1% 5%; - width: 90%; - max-width: 144px; - height: auto; + margin: 5% 5% 1% 5%; + width: 90%; + max-width: 144px; + height: auto; } + .btnOops { - margin: 5% 5% 1% 5%; - width: 90%; - max-width: 144px; - height: auto; + margin: 5% 5% 1% 5%; + width: 90%; + max-width: 144px; + height: auto; } + /* - RIGHT PANEL +RIGHT PANEL -*/ + */ .rightpanel { - position: absolute; - width: 17%; - /* background-color: rgba(255, 0, 254, 0.4);*/ - - top: 0px; - right: 0px; - bottom: 0px; + position: absolute; + width: 17%; /* background-color: rgba(255, 0, 254, 0.4); + */ +top: 0px; + right: 0px; + bottom: 0px; } + .btnPrint { - margin: 1% 5% 5% 0%; - width: 100%; - max-width: 163px; - height: auto; - float: right; + margin: 1% 5% 5% 0%; + width: 100%; + max-width: 163px; + height: auto; + float: right; } + .btnStop { - margin: 5% 10% 1% 5%; - float: right; - width: 90%; - max-width: 98px; - height: auto; + margin: 5% 10% 1% 5%; + float: right; + width: 90%; + max-width: 98px; + height: auto; } + .btnsSettingsInfo { - position: absolute; - bottom: 25px; - right: 5px; - width: 80%; - margin: 1% 5%; - max-width: 160px; + position: absolute; + bottom: 25px; + right: 5px; + width: 80%; + margin: 1% 5%; + max-width: 160px; } + .btnInfo { - width: 40%; - max-width: 53px; - height: auto; + width: 40%; + max-width: 53px; + height: auto; } + .btnSettings { - width: 40%; - max-width: 53px; - height: auto; - float: right; + width: 40%; + max-width: 53px; + height: auto; + float: right; } + /* - PRINT PROGRESS DISPLAY +PRINT PROGRESS DISPLAY -*/ + */ #printProgressContainer { - position: absolute; - right: 30px; - top: 370px; - width: 110px; - margin: 5px 0px; - font-weight: bold; - display: none; + position: absolute; + right: 30px; + top: 370px; + width: 110px; + margin: 5px 0px; + font-weight: bold; + display: none; } + #progressbarContainer { - margin: 3px 0px; - width: inherit; - height: 20px; - background-color: #fff; - border: 2px solid #333; - border-radius: 5px; - -o-border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; + margin: 3px 0px; + width: inherit; + height: 20px; + background-color: #fff; + border: 2px solid #333; + border-radius: 5px; } + .progressAmount { - margin: 0px 5px; + margin: 0px 5px; } + #progressbar { - position: relative; - /*margin-bottom: -20px;*/ - - width: 0%; - height: 100%; - background-color: #4c4; - border: 0px solid #f0f; - border-radius: 3px; - -o-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; + position: relative; /*margin-bottom: -20px; + */ +width: 0%; + height: 100%; + background-color: #4c4; + border: 0px solid #f0f; + border-radius: 3px; } + /* - THERMOMETER +THERMOMETER -*/ + */ #thermometerContainer { - position: absolute; - right: 25px; - top: 370px; + position: absolute; + right: 25px; + top: 370px; } + #thermometerCanvas { - /*background: #59b2b8;*/ - - /*zoom: 2;*/ - + /*background: #59b2b8; + */ +/*zoom: 2; + */ } + /* - REST +REST -*/ + */ /* CLEARFIX */ /* http://nicolasgallagher.com/micro-clearfix-hack/ */ -.clearfix:before, -.clearfix:after { - content: " "; - /* 1 */ - - display: table; - /* 2 */ - +.clearfix:before,.clearfix:after { + content: " "; /* 1 */ +display: table; /* 2 */ } + .clearfix:after { - clear: both; + clear: both; } + /* For IE 6/7 only*/ .clearfix { - *zoom: 1; + *zoom: 1; } + /* - SETTINGS POPUP +SETTINGS POPUP + + */ +#contentOverlay { + background-color: rgba(255, 255, 255, 0.65); + z-index: 20; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + display: none; +} + +#contentOverlay #settings { + background-color: #fff; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 15; + max-width: 835px; + max-height: 540px; + width: 80%; + height: 75%; + margin: 7% 8%; + + -webkit-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); + box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); + border: 2px solid #222; + border-radius: 15px; + overflow: hidden; + display: table; + padding: 2%; +} + +#contentOverlay #settings .settingsLabelContainer { + width: 100%; + height: auto; + margin-bottom: 1%; +} + +#contentOverlay #settings .settingsLabelImg { + width: 45%; + max-width: 373px; + height: auto; +} + +#contentOverlay #settings > .content { + margin: 3% 12%; + margin-top: 12%; + max-height: 388px; + display: table-row; + width: 100%; +} + +#contentOverlay #settings > .content > .settings { + border: 1px solid #bbbbbb; + border-radius: 5px; + overflow: scroll; + + -ms-overflow-x: hidden; + overflow-x: hidden; +} + +#contentOverlay #settings > .content > .btnContainer { + width: 15%; + position: relative; + display: table-cell; +} + +#contentOverlay #settings > .content > .btnContainer > .btnOK { + position: absolute; + bottom: 3%; + right: 3%; + max-width: 85px; + min-width: 42px; + width: 91%; + height: auto; + margin: 0 2% 2% 0; + cursor: pointer; + float: right; +} + +#contentOverlay #settings > .content > div { + height: 100%; +} + +@media only screen and (max-width: 480px),only screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5),only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio: 1.5) { + /* + TOP LOGO + */ +.centerpanel { + left: 0; + margin-left: 0; + width: 100%; /* background-color: rgba(0, 135, 255, 0.4); + */ +} + +.logopanel { + height: 40px; +} + +.d3dlogo { + top: 0; + max-width: 399px; + height: 40px; + background-image: url('../img/logo/logo_smallest_wide.png'); +} + +.doodlecontainer { + /* position: absolute; + */ +height: 85%; +} + +/*.bottompanel { + + display: none; + +} */ +/* + LEFT + */ +.leftpanel { + width: 100px; + background-color: #fff; + z-index: 50; + + -webkit-transition: left 0.3s ease-out; + -moz-transition: left 0.3s ease-out; + -o-transition: left 0.3s ease-out; + -ms-transition: left 0.3s ease-out; + transition: left 0.3s ease-out; +} + +.hideleft { + left: -101px; +} + +.shadowright { + -webkit-box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); + box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); +} + +.btnNew { + margin: 5% 5% 1% 5%; + width: 90%; +} + +.btnSave { + margin-left: 9%; + width: 75%; +} + +.btnOops { + margin-left: 6%; + width: 71%; +} + +/* + RIGHT + */ +.rightpanel { + width: 100px; + background-color: #fff; + z-index: 50; + + -webkit-transition: right 0.3s ease-out; + -moz-transition: right 0.3s ease-out; + -o-transition: right 0.3s ease-out; + -ms-transition: right 0.3s ease-out; + transition: right 0.3s ease-out; +} + +.hideright { + right: -101px; +} + +.shadowleft { + -webkit-box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); + box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); +} + +.btnPrint { + margin: 1% 5% 5% 5%; + width: 90%; +} + +.btnStop { + margin: 5% 6% 1% 5%; + width: 70%; +} + +/* + REST + */ +.sidebutton { + display: block; + position: absolute; /* top: 50%; + */ +/* margin-top: -20px; + */ +top: 0px; /*float: right; + */ +width: 25px; + height: 38px; + border: 1px solid #808; + background: url('../img/arrows.png') no-repeat; + background-color: #eee; + cursor: pointer; +} + +.sidebutton:active { + background-color: #aaa; +} + +.leftpanel .sidebutton { + right: -27px; + background-position: 0px 0px; +} + +.rightpanel .sidebutton { + left: -27px; + background-position: -25px 0px; +} + +.sidebuttonin:active { + background-color: #888; +} + +.leftpanel .sidebuttonin { + background-color: #ccc; + background-position: -25px 0px; +} + +.rightpanel .sidebuttonin { + background-color: #ccc; + background-position: 0px 0px; +} + +/* + + SETTINGS POPUP -MOBILE + + */ #contentOverlay { - background-color: rgba(255, 255, 255, 0.65); - z-index: 20; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; - display: none; + z-index: 200; } + #contentOverlay #settings { - background-color: #fff; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 15; - max-width: 835px; - max-height: 540px; - width: 80%; - height: 75%; - margin: 7% 8%; - box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - border: 2px solid #222; - border-radius: 15px; - overflow: hidden; - display: table; - padding: 2%; + width: 87%; + height: 82%; + margin: 6% 4%; } -#contentOverlay #settings .settingsLabelContainer { - width: 100%; - height: auto; - margin-bottom: 1%; + +#contentOverlay #settings > .right { + width: 14%; } -#contentOverlay #settings .settingsLabelImg { - width: 45%; - max-width: 373px; - height: auto; -} -#contentOverlay #settings > .content { - margin: 3% 12%; - margin-top: 12%; - max-height: 388px; - display: table-row; - width: 100%; -} -#contentOverlay #settings > .content > .settings { - border: 1px solid #bbbbbb; - border-radius: 5px; - overflow: scroll; - overflow-x: hidden; -} -#contentOverlay #settings > .content > .btnContainer { - width: 15%; - position: relative; - display: table-cell; -} -#contentOverlay #settings > .content > .btnContainer > .btnOK { - position: absolute; - bottom: 3%; - right: 3%; - max-width: 85px; - min-width: 42px; - width: 91%; - height: auto; - margin: 0 2% 2% 0; - cursor: pointer; - float: right; -} -#contentOverlay #settings > .content > div { - height: 100%; -} -@media only screen and (max-width: 480px), only screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5), only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio: 1.5) { - /* - TOP LOGO - */ - .centerpanel { - left: 0; - margin-left: 0; - width: 100%; - /* background-color: rgba(0, 135, 255, 0.4);*/ - - } - .logopanel { - height: 40px; - } - .d3dlogo { - top: 0; - max-width: 399px; - height: 40px; - background-image: url('../img/logo/logo_smallest_wide.png'); - } - .doodlecontainer { - /* position: absolute;*/ - - height: 85%; - } - /*.bottompanel { - display: none; - }*/ - /* - LEFT - */ - .leftpanel { - width: 100px; - background-color: #fff; - z-index: 50; - transition: left 0.3s ease-out; - } - .hideleft { - left: -101px; - } - .shadowright { - box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); - } - .btnNew { - margin: 5% 5% 1% 5%; - width: 90%; - } - .btnSave { - margin-left: 9%; - width: 75%; - } - .btnOops { - margin-left: 6%; - width: 71%; - } - /* - RIGHT - */ - .rightpanel { - width: 100px; - background-color: #fff; - z-index: 50; - transition: right 0.3s ease-out; - } - .hideright { - right: -101px; - } - .shadowleft { - box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); - } - .btnPrint { - margin: 1% 5% 5% 5%; - width: 90%; - } - .btnStop { - margin: 5% 6% 1% 5%; - width: 70%; - } - /* - REST - */ - .sidebutton { - display: block; - position: absolute; - /* top: 50%;*/ - - /* margin-top: -20px;*/ - - top: 0px; - /*float:right;*/ - - width: 25px; - height: 38px; - border: 1px solid #808; - background: url('../img/arrows.png') no-repeat; - background-color: #eee; - cursor: pointer; - } - .sidebutton:active { - background-color: #aaa; - } - .leftpanel .sidebutton { - right: -27px; - background-position: 0px 0px; - } - .rightpanel .sidebutton { - left: -27px; - background-position: -25px 0px; - } - .sidebuttonin:active { - background-color: #888; - } - .leftpanel .sidebuttonin { - background-color: #ccc; - background-position: -25px 0px; - } - .rightpanel .sidebuttonin { - background-color: #ccc; - background-position: 0px 0px; - } - /* - - SETTINGS POPUP - MOBILE - - */ - #contentOverlay { - z-index: 200; - } - #contentOverlay #settings { - width: 87%; - height: 82%; - margin: 6% 4%; - } - #contentOverlay #settings > .right { - width: 14%; - } -} -@media only screen and (min-width: 1000px) and (max-device-pixel-ratio: 1.5), only screen and (min-width: 1000px) and (-webkit-max-device-pixel-ratio: 1.5) { - + } + @media only screen and (orientation: portrait) { - #landscape { - display: none; - } - #portrait { - display: block; - } - .vertImage { - margin: 0px; - padding: 0px; - /*border: 2px solid #f0f;*/ - - max-width: 100%; - height: auto; - width: auto; - /* for ie9 */ - - } + #landscape { + display: none; +} + +#portrait { + display: block; +} + +.vertImage { + margin: 0px; + padding: 0px; /*border: 2px solid #f0f; + */ +max-width: 100%; + height: auto; + width: auto; /* for ie9 */ +} + } diff --git a/css/styles.min.css b/css/styles.min.css index 2999772..75c87d4 100644 --- a/css/styles.min.css +++ b/css/styles.min.css @@ -1 +1 @@ -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}html,button,input,select,textarea{font-family:sans-serif;}body{margin:0;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em 0;}h2{font-size:1.5em;margin:0.83em 0;}h3{font-size:1.17em;margin:1em 0;}h4{font-size:1em;margin:1.33em 0;}h5{font-size:.83em;margin:1.67em 0;}h6{font-size:.67em;margin:2.33em 0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:700;}blockquote{margin:1em 40px;}dfn{font-style:italic;}mark{background:#ff0;color:#000000;}p,pre{margin:1em 0;}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new', monospace;font-size:1em;}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word;}q{quotes:none;}q:before,q:after{content:'';content:none;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}dl,menu,ol,ul{margin:1em 0;}dd{margin:0 0 0 40px;}menu,ol,ul{padding:0 0 0 40px;}nav ul,nav ol{list-style:none;list-style-image:none;}img{border:0;-ms-interpolation-mode:bicubic;}svg:not(:root){overflow:hidden;}figure{margin:0;}form{margin:0;}fieldset{border:1px solid silver;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;white-space:normal;*margin-left:-7px;}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;}button,input{line-height:normal;}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible;}button[disabled],input[disabled]{cursor:default;}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;padding:0;*height:13px;*width:13px;}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box;}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}.cf{*zoom:1;}.cf:before,.cf:after{content:" ";display:table;}.cf:after{clear:both;}body{background-color:#fcfcfc;}#landscape{position:absolute;background-color:#fff;width:100%;max-width:1024px;max-height:768px;top:0px;bottom:0px;left:0px;right:0px;z-index:5;overflow:hidden;margin:0px auto;outline:2px solid #5e8c71;-webkit-box-shadow:0 0 8px rgba(8, 8, 8, 0.25);box-shadow:0 0 8px rgba(8, 8, 8, 0.25);}#portrait{display:none;}.bgContainer{position:absolute;width:100%;height:100%;overflow:hidden;}.bgTop,.bgMiddle,.bgBottom{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1.0;-webkit-transition:opacity .35s linear;-moz-transition:opacity .35s linear;-o-transition:opacity .35s linear;-ms-transition:opacity .35s linear;transition:opacity .35s linear;position:absolute;left:0px;z-index:-5;}.bgTop{top:0px;}.bgMiddle{top:30%;}.bgBottom{bottom:0px;}.rightpanel img,.leftpanel img{cursor:pointer;}.centerpanel{position:absolute;left:50%;margin-left:-33%;width:66%;height:100%;z-index:5;}.logopanel{height:25%;}.d3dlogo{position:relative;top:15%;width:100%;height:100%;margin:0px auto;max-width:399px;height:139px;background:url('../img/logo/logo_full.png') no-repeat center center;cursor:pointer;}.drawareacontainer{position:relative;width:100%;height:65%;background-color:#fff;border:4px solid #000;border-radius:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;z-index:15;}#preview_tmp{position:absolute;top:0px;left:0px;z-index:500;border:1px solid #f80;display:none;}.bottompanel{position:relative;bottom:0px;width:100%;height:10%;}.manipulationBtns{margin:2px 5px;position:absolute;right:0;top:0;max-width:340px;max-height:70px;width:45%;}.manipulationBtn{width:45%;height:auto;cursor:pointer;}#btnsUpDown{float:left;width:45%;}#btnsUpDown > div{float:left;padding-right:8px;background-repeat:no-repeat;}#btnsTurnLeftRight{float:right;width:45%;}#btnsTurnLeftRight > div{float:left;padding-right:8px;background-repeat:no-repeat;}#btnMoveUp{max-width:65px;}#btnMoveDown{max-width:64px;}#btnTwistLeft{max-width:59px;}#btnTwistRight{max-width:64px;}@media screen and (max-height: 700px){.logopanel{height:22%;}.doodlecontainer{height:68%;}.d3dlogo{top:25%;max-width:399px;height:74px;background-image:url('../img/logo/logo_small.png');}}@media screen and (max-height: 655px){.bgMiddle{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;}}@media screen and (max-height: 525px){.d3dlogo{max-width:399px;top:20%;height:57px;background-image:url('../img/logo/logo_smaller_wide.png');}}@media screen and (max-height: 375px){.d3dlogo{max-width:399px;height:40px;background-image:url('../img/logo/logo_smallest_wide.png');}}.leftpanel{position:absolute;width:17%;top:0px;left:0px;bottom:0px;}.btnNew{margin:5% 0% 1% 5%;width:100%;max-width:180px;height:auto;}.btnsPrevNext{margin:1% 7%;max-width:160px;}.btnPrevious{width:40%;max-width:56px;height:auto;}.btnNext{width:40%;max-width:56px;height:auto;float:right;}.btnSave{margin:5% 5% 1% 5%;width:90%;max-width:144px;height:auto;}.btnOops{margin:5% 5% 1% 5%;width:90%;max-width:144px;height:auto;}.rightpanel{position:absolute;width:17%;top:0px;right:0px;bottom:0px;}.btnPrint{margin:1% 5% 5% 0%;width:100%;max-width:163px;height:auto;float:right;}.btnStop{margin:5% 10% 1% 5%;float:right;width:90%;max-width:98px;height:auto;}.btnsSettingsInfo{position:absolute;bottom:25px;right:5px;width:80%;margin:1% 5%;max-width:160px;}.btnInfo{width:40%;max-width:53px;height:auto;}.btnSettings{width:40%;max-width:53px;height:auto;float:right;}.clearfix:before,.clearfix:after{content:" ";display:table;}.clearfix:after{clear:both;}.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{content:" ";display:table;}.clearfix:after{clear:both;}.clearfix{*zoom:1;}@media only screen and (max-width: 480px),only screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5),only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio: 1.5){.centerpanel{left:0;margin-left:0;width:100%;}.logopanel{height:40px;}.d3dlogo{top:0;max-width:399px;height:40px;background-image:url('../img/logo/logo_smallest_wide.png');}.doodlecontainer{height:85%;}.leftpanel{width:100px;background-color:#fff;z-index:50;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:left 0.15s ease-out;-ms-transition:left 0.15s ease-out;transition:left 0.15s ease-out;}.hideleft{left:-101px;}.shadowright{-webkit-box-shadow:2px 0 4px rgba(42, 42, 41, 0.6);box-shadow:2px 0 4px rgba(42, 42, 41, 0.6);}.btnNew{margin:5% 5% 1% 5%;width:90%;}.btnSave{margin-left:9%;width:75%;}.btnOops{margin-left:6%;width:71%;}.rightpanel{width:100px;background-color:#fff;z-index:50;-webkit-transition:right 0.15s ease-out;-moz-transition:right 0.15s ease-out;-o-transition:right 0.15s ease-out;-ms-transition:right 0.15s ease-out;transition:right 0.15s ease-out;}.hideright{right:-101px;}.shadowleft{-webkit-box-shadow:-2px 0 4px rgba(42, 42, 41, 0.6);box-shadow:-2px 0 4px rgba(42, 42, 41, 0.6);}.btnPrint{margin:1% 5% 5% 5%;width:90%;}.btnStop{margin:5% 6% 1% 5%;width:70%;}.sidebutton{display:block;position:absolute;top:0px;width:25px;height:38px;border:1px solid #808;background:url('../img/arrows.png') no-repeat;background-color:#eee;}.sidebutton:active{background-color:#aaa;}.leftpanel .sidebutton{right:-27px;background-position:0px 0px;}.rightpanel .sidebutton{left:-27px;background-position:-25px 0px;}.leftpanel .sidebuttonin{background-color:#ccc;background-position:-25px 0px;}.rightpanel .sidebuttonin{background-color:#ccc;background-position:0px 0px;}.sidebuttonin:active{background-color:#888;}}@media only screen and (orientation: portrait){#landscape{display:none;}#portrait{display:block;}} \ No newline at end of file +body{background-color:#fcfcfc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;}img{z-index:5;}.btn{background-repeat:no-repeat;cursor:pointer;}#landscape{position:absolute;background-color:#fff;width:100%;max-width:1024px;max-height:768px;top:0px;bottom:0px;left:0px;right:0px;z-index:5;overflow:hidden;margin:0px auto;outline:2px solid #5e8c71;-webkit-box-shadow:0 0 8px rgba(8, 8, 8, 0.25);box-shadow:0 0 8px rgba(8, 8, 8, 0.25);}#portrait{display:none;}.bgContainer{position:absolute;width:100%;height:100%;overflow:hidden;}.bgTop,.bgMiddle,.bgBottom{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1.0;-webkit-transition:opacity .35s linear;-moz-transition:opacity .35s linear;-o-transition:opacity .35s linear;-ms-transition:opacity .35s linear;transition:opacity .35s linear;position:absolute;left:0px;z-index:-5;}.bgTop{top:0px;}.bgMiddle{top:30%;}.bgBottom{bottom:0px;}.rightpanel img,.leftpanel img{cursor:pointer;}.centerpanel{position:absolute;left:50%;margin-left:-33%;width:66%;height:100%;z-index:5;}.logopanel{height:25%;}.d3dlogo{position:relative;top:15%;width:100%;height:100%;margin:0px auto;max-width:399px;height:139px;background:url('../img/logo/logo_full.png') no-repeat center center;cursor:pointer;}.drawareacontainer{position:relative;width:100%;height:65%;background-color:#fff;border:4px solid #000;border-radius:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;z-index:15px;}#canvasContainers{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;padding:0;margin:0;}#mycanvasContainer{position:absolute;top:0;left:0;width:78%;height:100%;}#mycanvas{width:100%;height:100%;margin:0;padding:0;border-right:2px solid #333;}#previewContainer{position:absolute;top:0;right:0;width:22%;height:100%;}#preview{min-width:50px;width:100%;height:100%;margin:0;padding:0;}#preview_tmp{position:absolute;top:0px;left:0px;z-index:500;border:1px solid #f80;display:none;}.bottompanel{position:relative;bottom:0px;width:100%;height:10%;}.manipulationBtns{margin:2px 5px;position:absolute;right:0;top:0;max-width:340px;max-height:70px;width:45%;}.manipulationBtn{width:45%;height:auto;cursor:pointer;}#btnsUpDown{float:left;width:45%;}#btnsUpDown > div{float:left;padding-right:8px;background-repeat:no-repeat;}#btnsTurnLeftRight{float:right;width:45%;}#btnsTurnLeftRight > div{float:left;padding-right:8px;background-repeat:no-repeat;}#btnMoveUp{max-width:65px;}#btnMoveDown{max-width:64px;}#btnTwistLeft{max-width:59px;}#btnTwistRight{max-width:64px;}@media screen and (max-height: 700px){.logopanel{height:22%;}.doodlecontainer{height:68%;}.d3dlogo{top:25%;max-width:399px;height:74px;background-image:url('../img/logo/logo_small.png');}}@media screen and (max-height: 655px){.bgMiddle{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;}}@media screen and (max-height: 525px){.d3dlogo{max-width:399px;top:20%;height:57px;background-image:url('../img/logo/logo_smaller_wide.png');}}@media screen and (max-height: 375px){.d3dlogo{max-width:399px;height:40px;background-image:url('../img/logo/logo_smallest_wide.png');}}.leftpanel{position:absolute;width:17%;top:0px;left:0px;bottom:0px;}.btnNew{margin:5% 0% 1% 5%;width:100%;max-width:180px;height:auto;}.btnsPrevNext{margin:1% 7%;max-width:160px;}.btnPrevious{width:40%;max-width:56px;height:auto;}.btnNext{width:40%;max-width:56px;height:auto;float:right;}.btnSave{margin:5% 5% 1% 5%;width:90%;max-width:144px;height:auto;}.btnOops{margin:5% 5% 1% 5%;width:90%;max-width:144px;height:auto;}.rightpanel{position:absolute;width:17%;top:0px;right:0px;bottom:0px;}.btnPrint{margin:1% 5% 5% 0%;width:100%;max-width:163px;height:auto;float:right;}.btnStop{margin:5% 10% 1% 5%;float:right;width:90%;max-width:98px;height:auto;}.btnsSettingsInfo{position:absolute;bottom:25px;right:5px;width:80%;margin:1% 5%;max-width:160px;}.btnInfo{width:40%;max-width:53px;height:auto;}.btnSettings{width:40%;max-width:53px;height:auto;float:right;}#printProgressContainer{position:absolute;right:30px;top:370px;width:110px;margin:5px 0px;font-weight:bold;display:none;}#progressbarContainer{margin:3px 0px;width:inherit;height:20px;background-color:#fff;border:2px solid #333;border-radius:5px;}.progressAmount{margin:0px 5px;}#progressbar{position:relative;width:0%;height:100%;background-color:#4c4;border:0px solid #f0f;border-radius:3px;}#thermometerContainer{position:absolute;right:25px;top:370px;}.clearfix:before,.clearfix:after{content:" ";display:table;}.clearfix:after{clear:both;}.clearfix{*zoom:1;}#contentOverlay{background-color:rgba(255, 255, 255, 0.65);z-index:20;position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;display:none;}#contentOverlay #settings{background-color:#fff;position:absolute;top:0;left:0;right:0;bottom:0;z-index:15;max-width:835px;max-height:540px;width:80%;height:75%;margin:7% 8%;-webkit-box-shadow:0px 2px 6px 0px rgba(16, 16, 16, 0.65);box-shadow:0px 2px 6px 0px rgba(16, 16, 16, 0.65);border:2px solid #222;border-radius:15px;overflow:hidden;display:table;padding:2%;}#contentOverlay #settings .settingsLabelContainer{width:100%;height:auto;margin-bottom:1%;}#contentOverlay #settings .settingsLabelImg{width:45%;max-width:373px;height:auto;}#contentOverlay #settings > .content{margin:3% 12%;margin-top:12%;max-height:388px;display:table-row;width:100%;}#contentOverlay #settings > .content > .settings{border:1px solid #bbbbbb;border-radius:5px;overflow:scroll;-ms-overflow-x:hidden;overflow-x:hidden;}#contentOverlay #settings > .content > .btnContainer{width:15%;position:relative;display:table-cell;}#contentOverlay #settings > .content > .btnContainer > .btnOK{position:absolute;bottom:3%;right:3%;max-width:85px;min-width:42px;width:91%;height:auto;margin:0 2% 2% 0;cursor:pointer;float:right;}#contentOverlay #settings > .content > div{height:100%;}@media only screen and (max-width: 480px),only screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5),only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio: 1.5){.centerpanel{left:0;margin-left:0;width:100%;}.logopanel{height:40px;}.d3dlogo{top:0;max-width:399px;height:40px;background-image:url('../img/logo/logo_smallest_wide.png');}.doodlecontainer{height:85%;}.leftpanel{width:100px;background-color:#fff;z-index:50;-webkit-transition:left 0.3s ease-out;-moz-transition:left 0.3s ease-out;-o-transition:left 0.3s ease-out;-ms-transition:left 0.3s ease-out;transition:left 0.3s ease-out;}.hideleft{left:-101px;}.shadowright{-webkit-box-shadow:2px 0 4px rgba(42, 42, 41, 0.6);box-shadow:2px 0 4px rgba(42, 42, 41, 0.6);}.btnNew{margin:5% 5% 1% 5%;width:90%;}.btnSave{margin-left:9%;width:75%;}.btnOops{margin-left:6%;width:71%;}.rightpanel{width:100px;background-color:#fff;z-index:50;-webkit-transition:right 0.3s ease-out;-moz-transition:right 0.3s ease-out;-o-transition:right 0.3s ease-out;-ms-transition:right 0.3s ease-out;transition:right 0.3s ease-out;}.hideright{right:-101px;}.shadowleft{-webkit-box-shadow:-2px 0 4px rgba(42, 42, 41, 0.6);box-shadow:-2px 0 4px rgba(42, 42, 41, 0.6);}.btnPrint{margin:1% 5% 5% 5%;width:90%;}.btnStop{margin:5% 6% 1% 5%;width:70%;}.sidebutton{display:block;position:absolute;top:0px;width:25px;height:38px;border:1px solid #808;background:url('../img/arrows.png') no-repeat;background-color:#eee;cursor:pointer;}.sidebutton:active{background-color:#aaa;}.leftpanel .sidebutton{right:-27px;background-position:0px 0px;}.rightpanel .sidebutton{left:-27px;background-position:-25px 0px;}.sidebuttonin:active{background-color:#888;}.leftpanel .sidebuttonin{background-color:#ccc;background-position:-25px 0px;}.rightpanel .sidebuttonin{background-color:#ccc;background-position:0px 0px;}#contentOverlay{z-index:200;}#contentOverlay #settings{width:87%;height:82%;margin:6% 4%;}#contentOverlay #settings > .right{width:14%;}}@media only screen and (orientation: portrait){#landscape{display:none;}#portrait{display:block;}.vertImage{margin:0px;padding:0px;max-width:100%;height:auto;width:auto;}} \ No newline at end of file From 080cc5670c6d264ab0d52b8d9852727561e1ee61 Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Fri, 11 Oct 2013 13:42:12 +0200 Subject: [PATCH 21/22] adjustments to make preview be initialized and updated better (when resizing) --- js/init_layout.js | 23 +++++++++++++---------- js/previewRendering_v02.js | 22 +++++++++++++--------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/js/init_layout.js b/js/init_layout.js index 8150cb5..63d8859 100644 --- a/js/init_layout.js +++ b/js/init_layout.js @@ -1,3 +1,4 @@ +// TODO refactor this stuff, there's much to wipe var drawAreaContainerMinHeight = 300; var drawAreaContainerMaxHeight = 450; @@ -13,15 +14,17 @@ function doOnResize() { // canvas.width = $drawAreaContainer.width() - preview.width; // canvas.clientWidth; // canvas.width = $("#mycanvasContainer").width(); - canvas.width = drawCanvas.width(); - canvas.height = drawCanvas.height(); // canvas.clientHeight; + canvas.width = $canvas.width(); + canvas.height = $canvas.height(); // canvas.clientHeight; // canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; - // preview.width = 150; + preview.width = $preview.width(); preview.height = $drawAreaContainer.height(); - canvasWidth = $canvas.width(); - canvasHeight = $canvas.height(); + canvasWidth = canvas.width; + canvasHeight = canvas.height; + + console.log(" preview.width: " + preview.width + ", $preview.width(): " + $preview.width()); calcPreviewCanvasProperties(); @@ -96,15 +99,15 @@ function initLayouting() { // console.log(" preview.width: " + preview.width + ", $preview.width(): " + $preview.width()); // canvas.width = $drawAreaContainer.width() - preview.width; // canvas.clientWidth; // canvas.width = $("#mycanvasContainer").width(); - canvas.width = drawCanvas.width(); - canvas.height = drawCanvas.height(); // canvas.clientHeight; + canvas.width = $canvas.width(); + canvas.height = $canvas.height(); // canvas.clientHeight; // canvas.height = $drawAreaContainer.height(); // canvas.clientHeight; -// preview.width = 150; + preview.width = $preview.width(); preview.height = $drawAreaContainer.height(); - canvasWidth = $canvas.width(); - canvasHeight = $canvas.height(); + canvasWidth = canvas.width; + canvasHeight = canvas.height; $drawAreaContainer.show(); diff --git a/js/previewRendering_v02.js b/js/previewRendering_v02.js index 24a4333..413c289 100644 --- a/js/previewRendering_v02.js +++ b/js/previewRendering_v02.js @@ -40,12 +40,12 @@ function initPreviewRendering() { function calcPreviewCanvasProperties() { console.log("f:calcPreviewCanvasProperties()"); + globalScale = preview.width / canvasWidth; layerCX = (canvasWidth / 2) * globalScale; // defined in canvasDrawing_v01.js layerCY = (canvasHeight / 2) * globalScale; // defined in canvasDrawing_v01.js - layerOffsetY = preview.height - 1.75 * layerCY; - yStep = (preview.height * (2 * previewVerticalPadding)) / maxNumLayers; - -// previewVerticalPadding +// layerOffsetY = preview.height - 1.75 * layerCY; + layerOffsetY = preview.height * (1 - previewVerticalPadding.bottom); + yStep = (preview.height - (preview.height * (previewVerticalPadding.top + previewVerticalPadding.bottom))) / maxNumLayers; } // TODO (perhaps) : make the twist limit dynamic, depending on what's printable (w.r.t. overlapping) @@ -58,7 +58,7 @@ var globalScale = 0.3; // global scale of preview (width preview / width canvas var globalAlpha = 0.20; // global alpha of preview var scaleY = 0.4; // additional vertical scale per path for 3d effect var viewerScale = 0.65; // additional scale to fit into preview nicely (otherwise is fills out totally) -var previewVerticalPadding = .15; // % +var previewVerticalPadding = { "top" : .15, "bottom" : 0.12 }; // % var strokeWidth = 2; //4; //var rStep = Math.PI/40; //Math.PI/40; // var rStep = previewDefaults.rotation; // Math.PI/180; //Math.PI/40; // @@ -125,7 +125,8 @@ function redrawPreview(redrawLess) { previewCtx.save(); - previewCtx.translate(layerCX, layerOffsetY + layerCY + y); +// previewCtx.translate(layerCX, layerOffsetY + layerCY + y); + previewCtx.translate(layerCX, layerOffsetY + y); // previewCtx.setTransform(1, 0, 0, scaleY, layerCX, layerOffsetY+layerCY+y); previewCtx.scale(viewerScale, scaleY * viewerScale); previewCtx.rotate(r); @@ -200,7 +201,8 @@ function renderToImageDataPreview() { previewCtx.save(); - previewCtx.translate(layerCX,layerOffsetY+layerCY+y); +// previewCtx.translate(layerCX,layerOffsetY+layerCY+y); + previewCtx.translate(layerCX,layerOffsetY+y); previewCtx.scale(1, scaleY) previewCtx.rotate(r); previewCtx.translate(-layerCX,-layerCY); @@ -245,7 +247,8 @@ function redrawRenderedPreview(redrawLess) { } previewCtx.save(); - previewCtx.translate(layerCX,layerOffsetY+layerCY+y); + previewCtx.translate(layerCX,layerOffsetY+y); +// previewCtx.translate(layerCX,layerOffsetY+layerCY+y); previewCtx.scale(1, scaleY) previewCtx.rotate(r); previewCtx.translate(-layerCX,-layerCY); @@ -310,7 +313,8 @@ function updatePreview(_x, _y, redrawLess) { previewCtx.save(); - previewCtx.translate(layerCX, layerOffsetY + layerCY + y); +// previewCtx.translate(layerCX, layerOffsetY + layerCY + y); + previewCtx.translate(layerCX, layerOffsetY + y); previewCtx.scale(viewerScale, scaleY * viewerScale); previewCtx.rotate(r); previewCtx.translate((-doodleTransform[0]) * (globalScale * doodleTransform[2]), (-doodleTransform[1]) * (globalScale * doodleTransform[3])); From 759616a8d4496be39c9a6d83cea10be0346d338f Mon Sep 17 00:00:00 2001 From: Adriaan Wormgoor Date: Fri, 11 Oct 2013 14:07:15 +0200 Subject: [PATCH 22/22] changed chmod --- js/gcodeGenerating_v01.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 js/gcodeGenerating_v01.js diff --git a/js/gcodeGenerating_v01.js b/js/gcodeGenerating_v01.js old mode 100755 new mode 100644