From d2ab7fc08b4c9953cf75cc9a91700a9db8b6d101 Mon Sep 17 00:00:00 2001 From: Rick Companje Date: Tue, 22 Apr 2014 21:03:25 +0200 Subject: [PATCH 01/12] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3c85697..7178083 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ Doodle3D client app # How to build ## Prerequisites -- get `npm`, the Node.js package manager, for instance using macports on OSX. -- (prerequisite) install Grunt: `sudo pm install -g grunt-cli`. +- install npm, the Node.js package manager: `sudo port install npm` +- install Grunt: `sudo npm install -g grunt-cli` - run `npm install` in the project root to install project dependencies Finally run grunt to build minified css and js files. By default, it will keep From 7441b848f346c3432da282afc08eaea059ab6311 Mon Sep 17 00:00:00 2001 From: Rick Companje Date: Tue, 22 Apr 2014 21:04:56 +0200 Subject: [PATCH 02/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7178083..8cd9728 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Doodle3D client app ## Prerequisites - install npm, the Node.js package manager: `sudo port install npm` - install Grunt: `sudo npm install -g grunt-cli` -- run `npm install` in the project root to install project dependencies +- run `npm install` in the *project root* to install project dependencies Finally run grunt to build minified css and js files. By default, it will keep running to automatically rebuild when source files are changed. From c4593a4dc34f13216c69a24a57d92f71ce662284 Mon Sep 17 00:00:00 2001 From: Rick Companje Date: Tue, 22 Apr 2014 21:05:10 +0200 Subject: [PATCH 03/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8cd9728..3a27a52 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Doodle3D client app ## Prerequisites - install npm, the Node.js package manager: `sudo port install npm` - install Grunt: `sudo npm install -g grunt-cli` -- run `npm install` in the *project root* to install project dependencies +- run `npm install` in the **project root** to install project dependencies Finally run grunt to build minified css and js files. By default, it will keep running to automatically rebuild when source files are changed. From 4d986a352809334baf34fc109d6cbcef8172a611 Mon Sep 17 00:00:00 2001 From: Rick Companje Date: Tue, 22 Apr 2014 21:06:38 +0200 Subject: [PATCH 04/12] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a27a52..e1808cf 100644 --- a/README.md +++ b/README.md @@ -9,5 +9,6 @@ Doodle3D client app - install Grunt: `sudo npm install -g grunt-cli` - run `npm install` in the **project root** to install project dependencies -Finally run grunt to build minified css and js files. By default, it will keep +## Build +- run `grunt` in the project root to to build minified css and js files. By default, it will keep running to automatically rebuild when source files are changed. From 3d99c146a0e9d1e32208ef7f70350952411bce90 Mon Sep 17 00:00:00 2001 From: Rick Companje Date: Thu, 9 Oct 2014 16:24:24 +0200 Subject: [PATCH 05/12] added a button for importing photos for tracing by hand --- js/AddScanDialog.js | 41 +++++++++++++++++++++++++++++++++++ js/Keyboard.js | 1 + js/buttonbehaviors.js | 9 ++++++++ js/gcodeGenerating.js | 1 + js/main.js | 1 + less/base_centerpanel.less | 16 ++++++++++++++ less/buttons.less | 16 +++++++++++--- less/popup.less | 15 +++++++++++++ www/img/buttons/btnClose.png | Bin 0 -> 1374 bytes www/img/buttons/btnGuide.png | Bin 0 -> 14838 bytes www/img/buttons/btnScan.png | Bin 0 -> 14633 bytes www/index.html | 14 +++++++++++- 12 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 js/AddScanDialog.js create mode 100644 www/img/buttons/btnClose.png create mode 100644 www/img/buttons/btnGuide.png create mode 100644 www/img/buttons/btnScan.png diff --git a/js/AddScanDialog.js b/js/AddScanDialog.js new file mode 100644 index 0000000..4e59ccf --- /dev/null +++ b/js/AddScanDialog.js @@ -0,0 +1,41 @@ +//var shapeResolution=3; +var shapePopup; + +function initScanDialog() { + scanPopup = new Popup($("#popupScan"), $("#popupMask")); + $("#btnScanOk").on("onButtonClick", onBtnScanOk); + $("#btnCloseScan").on("onButtonClick", onBtnCloseScan); +} + +function onBtnCloseScan() { + $('#imgGuide').hide(); + $('#btnCloseScan').hide(); +} + +function onBtnScanOk() { + scanPopup.commit(); +} + +function showScanDialog() { + scanPopup.open(); +} + +function readURL(input) { + + if (input.files && input.files[0]) { + var reader = new FileReader(); + + reader.onload = function (e) { + $('#imgGuide').attr('src', e.target.result); + $('#imgGuide').show(); + $('#btnCloseScan').show(); + scanPopup.commit(); + } + + reader.readAsDataURL(input.files[0]); + } +} + +$("#fileScan").change(function(){ + readURL(this); +}); diff --git a/js/Keyboard.js b/js/Keyboard.js index 825e514..a8c9e10 100644 --- a/js/Keyboard.js +++ b/js/Keyboard.js @@ -66,6 +66,7 @@ function initKeyboard() { case '|': resetTwist(); break; case 't': showWordArtDialog(); break; case 'i': showShapeDialog(); break; + case 'T': showScanDialog(); break; case ';': moveShape(-5,0); break; case '\'': moveShape(5,0); break; diff --git a/js/buttonbehaviors.js b/js/buttonbehaviors.js index 0d935a4..0f0238c 100644 --- a/js/buttonbehaviors.js +++ b/js/buttonbehaviors.js @@ -13,6 +13,7 @@ var btnSettings, btnWordArt; var btnToggleEdit, buttonGroupEdit, btnZoom, btnMove, btnRotate; var btnToggleVerticalShapes, btnHeight, btnTwist, btnShape, btnConv, btnStraight, btnSine, btnDiv; var buttonGroupAdd, popupWordArt; +var btnScan, popupScan; var state; var prevState; @@ -43,8 +44,10 @@ function initButtonBehavior() { buttonGroupAdd = $("#buttonGroupAdd"); btnShape = new Button("#btnShape"); btnWordArt = new Button("#btnWordArt"); + btnScan = new Button("#btnScan"); popupWordArt = $("#popupWordArt"); popupShape = $("#popupShape"); + popupScan = $("#popupScan"); popupMask = $("#popupMask"); logoPanel = $("#logopanel"); btnToggleEdit = new Button("#btnToggleEdit"); @@ -69,6 +72,7 @@ function initButtonBehavior() { btnAdd.on("onButtonClick", onBtnAdd); btnWordArt.on("onButtonClick", onBtnWordArt); btnShape.on("onButtonClick", onBtnShape); + btnScan.on("onButtonClick", onBtnScan); btnPrint.on("onButtonClick", print); btnStop.on("onButtonClick", stopPrint); btnSave.on("onButtonClick", saveSketch); @@ -191,6 +195,11 @@ function initButtonBehavior() { buttonGroupAdd.fadeOut(); } + function onBtnScan(e) { + showScanDialog(); + buttonGroupAdd.fadeOut(); + } + btnSettings.on("onButtonClick", openSettingsWindow); // 29-okt-2013 - we're not doing help for smartphones at the moment diff --git a/js/gcodeGenerating.js b/js/gcodeGenerating.js index 93f4cba..d01a4d3 100644 --- a/js/gcodeGenerating.js +++ b/js/gcodeGenerating.js @@ -218,6 +218,7 @@ function subsituteVariables(gcode) { case "makerbot_replicator2x": printerType = "r2x"; break; case "makerbot_thingomatic": printerType = "t6"; break; case "makerbot_generic": printerType = "r2"; break; + case "_3Dison_plus": printerType = "r2"; break; } var heatedBedReplacement = (heatedbed)? "" : ";"; diff --git a/js/main.js b/js/main.js index 8f8f9b1..1bed917 100644 --- a/js/main.js +++ b/js/main.js @@ -74,6 +74,7 @@ $(function() { // initVerticalShapes(); initWordArt(); initShapeDialog(); + initScanDialog(); disableDragging(); diff --git a/less/base_centerpanel.less b/less/base_centerpanel.less index 56cf46a..2131fee 100644 --- a/less/base_centerpanel.less +++ b/less/base_centerpanel.less @@ -127,4 +127,20 @@ } +#mycanvas { + position: absolute; +} +#imgGuide { + // z-index: -1000; + position: absolute; + // -webkit-filter: contrast(400%); + //-webkit-filter: brightness(100%); + // opacity: 50%; + opacity: 0.4; + filter: alpha(opacity=40); + pointer-events:none; + max-width: 100%; + max-height: 100%; + width: 100%; +} diff --git a/less/buttons.less b/less/buttons.less index 1c4f032..388186d 100644 --- a/less/buttons.less +++ b/less/buttons.less @@ -130,6 +130,16 @@ left: 4px; position: absolute; } + +#btnCloseScan { + top: 4px; + right: 8px; + position: absolute; + display: none; + opacity: 0.7; + filter: alpha(opacity=70); +} + #buttonGroupEdit { position: absolute; top: 5px; @@ -163,10 +173,10 @@ margin-top: -60%; margin-left: 70%; width: 200%; - max-width: 140px; /*fixme: can this grow based on it's content?*/ + max-width: 240px; /*fixme: can this grow based on it's content?*/ padding: 5% 0 5% 5%; - #btnWordArt, #btnShape { - width: 45%; + #btnWordArt, #btnShape, #btnScan { + width: 30%; } } diff --git a/less/popup.less b/less/popup.less index 93646b8..38700d0 100644 --- a/less/popup.less +++ b/less/popup.less @@ -47,6 +47,21 @@ } } +#popupScan { + width: 330px; + height:210px; + margin-left: -165px; + margin-top: -105px; + + input[type="file"] { + width: 98%; + } + #btnScanOk { + float: right; + margin: 15px 0 0 0; + } +} + #popupShape { width: 310px; margin-left: -155px; diff --git a/www/img/buttons/btnClose.png b/www/img/buttons/btnClose.png new file mode 100644 index 0000000000000000000000000000000000000000..290ae3fe41b97c4cb486510896cd46cabf8e5936 GIT binary patch literal 1374 zcmV-k1)=(hP)+f}D-Rrl$BCIGWI~5cZz}s3`S(!3{UM=#k<;l6Zxje}2?JZnfT=36_jOJWl zUuz|htVT|PGb<*AhKA|`Y;SKvV`C$XkB{@--e>3M=P)}v3w?ck+(#I-O(Oq8jr>bF z!`H80>))iew-;PpT_Gtci7%?FtE)T2XJ=>7-`@|Zsi_bW5(3@b-Eebr!=J6Lu7bI_ zxtzeaGC3(-jd&OzA8$~`si`SQOiTn%PftimNrAz^LEZ*ol+4J;2qY&bgRQMC#KgqF z=;)|Ho3gU9Wb)r+@=(NI;$drRtHE0xA0I<=b2Eg6g@KKY4Wy-|@yc9YUUGt&nHj!5 zyu7?1JUpDwB_G*dy?P~+lW4ss$dknb+M}DBn|I2(x3>p%b#*)eBFWCqhRMlESX^9$ zqM{;jadCm*;9#h)uUFN9lamwPIw^sV&2{~D5smlp@nJaWj!fCv*)iO^{QsJo8rIp_ z$rDHMVO?Ea3@gI0B`hv3j{mPTOG``U=jX?^wzkC37lPbgj5s+t-K)iv0QR2k@9(qP z+FI7u*2YXtO_`OI70bxTVCm`Un*Joml6_>VJl83hmN_^$u-MpG78n@FaBDFvF>`Zs zW4N7|ySuyQ@oZ*hCV#yZOh;nm;NU=$9DB#G*KB!tSzpeLjSb$0wY4=(U#gg7*MfXg zjL^w+czCGlOmB*-mf@meZ{ECN(b3Ti_ddft%wD{B!Elwc-Q8VPUsOHisW&86`xD)5 zgs;SxFJG#v7mX(*Bmnjmo<4obw+{w{l9Cee@bG|ufB>kfssdb8cl=2!uq9%pUm~mp zxjWB9N1m6LXW&R$P5YWe#NOT>A|oTAy}g}pAF_po1<23O=OX0q?+?}0)qoW+h*4f% zE^o78rM#wzhmRgT0xYZEk@jt6WhHofdqYG-1T-}@0k+0K;ijjjc>+`w((<99A-%#; zk~A)n|EMIVW%{R>Kr$*T-1Fzpxw5siv=|TzBORZZn1JHqV#v(QUZ)a6cc@5DkGIwjaaV0`uaMTTcL84w1T)s>oPGSPi|;vFgRq4InTvu*3r?SJk99* zu+k#`K)3buPNk)#1{VZltfHbq?MC}V^BSf5PCp86WyhePAbx1zP4!+vY6&eyI($@! zvy~S}t*dhYezYJyk(0yi#4tF+J={Ygg!o)7mS))>Fj|aX>00q2{SeUU1N|D=p>qlG g3u4-sVE+g(0CgwnbPHz*N&o-=07*qoM6N<$f^93DlK=n! literal 0 HcmV?d00001 diff --git a/www/img/buttons/btnGuide.png b/www/img/buttons/btnGuide.png new file mode 100644 index 0000000000000000000000000000000000000000..c64ded240a56faf2b8daf3eb9e4f1e2a5a732caa GIT binary patch literal 14838 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 literal 0 HcmV?d00001 diff --git a/www/img/buttons/btnScan.png b/www/img/buttons/btnScan.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce983d4342c6c854cc54e2d0461ff571ee6b191 GIT binary patch literal 14633 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 literal 0 HcmV?d00001 diff --git a/www/index.html b/www/index.html index cab8fab..54a2400 100644 --- a/www/index.html +++ b/www/index.html @@ -40,6 +40,7 @@
+
@@ -75,10 +76,12 @@
-
+
+ +
@@ -125,6 +128,15 @@
+ +