From 709ce388ccdbe4ff1a4fd527bb260b657634b2cd Mon Sep 17 00:00:00 2001 From: Mahdi Dibaiee Date: Fri, 2 May 2014 19:43:10 +0430 Subject: [PATCH] Download --- Android/config.xml | 22 -- Android/index.html | 3 +- Android/js/diff.js | 231 +++++++++--------- Android/res/icons/android/icon-48-mdpi.png | Bin 0 -> 2742 bytes .../icons/android/icon-60-hdpi.png} | Bin .../sketchy.png => icons/android/icon.png} | Bin Gruntfile.js | 9 +- Web/js/main.js | 3 +- build/android/AndroidManifest.xml | 2 + build/android/config.xml | 9 +- build/android/index.html | 3 +- build/android/js/diff.js | 2 +- .../res/icons/android/icon-48-mdpi.png | Bin 0 -> 2742 bytes .../res/icons/android/icon-60-hdpi.png | Bin 0 -> 3810 bytes build/android/res/icons/android/icon.png | Bin 0 -> 3810 bytes build/android/res/icons/icon.png | Bin 0 -> 3810 bytes build/web/js/main.js | 2 +- deploy-android | 6 + sketchy-mobile-1.2.1.zip | Bin 557279 -> 557279 bytes sketchy-web-1.2.1.zip | Bin 555060 -> 555096 bytes 20 files changed, 153 insertions(+), 139 deletions(-) delete mode 100644 Android/config.xml create mode 100644 Android/res/icons/android/icon-48-mdpi.png rename Android/{icon.png => res/icons/android/icon-60-hdpi.png} (100%) rename Android/res/{drawable/sketchy.png => icons/android/icon.png} (100%) create mode 100644 build/android/AndroidManifest.xml create mode 100644 build/android/res/icons/android/icon-48-mdpi.png create mode 100644 build/android/res/icons/android/icon-60-hdpi.png create mode 100644 build/android/res/icons/android/icon.png create mode 100644 build/android/res/icons/icon.png create mode 100755 deploy-android diff --git a/Android/config.xml b/Android/config.xml deleted file mode 100644 index a2e9fde..0000000 --- a/Android/config.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - Sketchy - - Free full-featured Sketch app - - - Mahdi Dibaiee - - - - - - - - - - - - - - diff --git a/Android/index.html b/Android/index.html index abc9887..31a15dd 100644 --- a/Android/index.html +++ b/Android/index.html @@ -5,8 +5,9 @@ Sketchy + - +
diff --git a/Android/js/diff.js b/Android/js/diff.js index 9cc8a69..da656fe 100644 --- a/Android/js/diff.js +++ b/Android/js/diff.js @@ -1,123 +1,136 @@ $(document).ready(function() { - $('*').off('click mousemove mousedown mouseup mouseleave').on('click mousemove mousedown mouseup mouseleave', function(e) { - e.preventDefault; + $(document).on('resume', function() { + sizeAndPos(); }) + document.addEventListener('deviceready', function() { + sizeAndPos(); - /*$('a[href^="http"]').tap(function(e) { - e.preventDefault(); - var href = $(this).attr('href'); - var view = new MozActivity({ - name: 'view', - data: { - type: 'url', - url: href - } + $('*').off('click mousemove mousedown mouseup mouseleave').on('click mousemove mousedown mouseup mouseleave', function(e) { + e.preventDefault; }) - return false; - }).click(function(e) { - e.preventDefault(); - return false; - })*/ - /*$('a[href^="mailto"]').tap(function(e) { - e.preventDefault(); - var mail = new MozActivity({ - name: 'new', - data: { - type: 'mail', - url: $(this).attr('href') - } - }) - return false; - }).click(function(e) { - e.preventDefault(); - return false; - })*/ + /*$('a[href^="http"]').tap(function(e) { + e.preventDefault(); + var href = $(this).attr('href'); + var view = new MozActivity({ + name: 'view', + data: { + type: 'url', + url: href + } + }) - window.save = function() { - var f = c.getImageData(0, 0, width(), height()); - switch(save.background) { - case 'white': { - c.fillStyle = 'white'; - c.globalCompositeOperation = 'destination-over'; - c.fillRect(0, 0, width(), height()); - c.fillStyle = settings.color; - c.globalCompositeOperation = settings.composite; - break; - } - case 'current color': { - c.fillStyle = settings.bg; - c.globalCompositeOperation = 'destination-over'; - c.fillRect(0, 0, width(), height()); - c.globalCompositeOperation = settings.composite; - break; - } - } - var data = $c[0].toDataURL(); - if( save.type == 'sketchy project' ) { - var list = JSON.parse(localStorage.getItem('projects')); - var index; - if( list && list.some(function(a, i) { if( a.name == save['file name'] ) {index = i; return true} return false }) ) { - if( confirm('A sketch with this name already exists. Do you want to overwrite ' + save['file name'] + '?') ) { - console.log(index); - list[index] = { - name: save['file name'], - data: data, - points: window.points, - settings: settings - } - localStorage.setItem('projects', JSON.stringify(list)); + return false; + }).click(function(e) { + e.preventDefault(); + return false; + })*/ + + /*$('a[href^="mailto"]').tap(function(e) { + e.preventDefault(); + var mail = new MozActivity({ + name: 'new', + data: { + type: 'mail', + url: $(this).attr('href') + } + }) + return false; + }).click(function(e) { + e.preventDefault(); + return false; + })*/ + + + + window.save = function() { + var f = c.getImageData(0, 0, width(), height()); + switch(save.background) { + case 'white': { + c.fillStyle = 'white'; + c.globalCompositeOperation = 'destination-over'; + c.fillRect(0, 0, width(), height()); + c.fillStyle = settings.color; + c.globalCompositeOperation = settings.composite; + break; + } + case 'current color': { + c.fillStyle = settings.bg; + c.globalCompositeOperation = 'destination-over'; + c.fillRect(0, 0, width(), height()); + c.globalCompositeOperation = settings.composite; + break; } } - else { - list ? list.push({ - name: save['file name'], - data: data, - points: window.points, - settings: settings - }) : list = [{ - name: save['file name'], - data: data, - points: window.points, - settings: settings - }]; - localStorage.setItem('projects', JSON.stringify(list)); - } - } else { - var sd = window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) { - var fdata = dataToBlob(data); - var req = fs.root.getFile(save['file name'] + '.png', {create: true}, function(file) { - file.createWriter(function(writer) { - writer.write(fdata); - alert('Your Sketch was saved successfuly: ' + this.result); - }, function() { - alert('Something bad happened trying to save your sketch ' + save['file name'] + '\n Possible reasons:\n Duplicate Name \n Not enough permission') - }) - }) - }, function(error) { - alert('Couldn\'t access filesystem\n' + error.message); - }); - } - c.putImageData(f, 0, 0); - } - window.load = function() { - var file = JSON.parse(localStorage.getItem('projects')).filter(function(a) { return a.name == load.file })[0]; - var img = document.createElement('img'); - img.src = file.data; - img.onload = function() { - c.clearRect(0, 0, width(), height()); - c.drawImage(img, 0, 0); - window.points = file.points; - window.points.history = [{ data: c.createImageData($c.width(), $c.height()), points: []}, { data: c.getImageData(0, 0, width(), height()), points: file.points}]; - $c.first().css('background', file.settings.bg); - window.settings.bg = file.settings.bg; + var data = $c[0].toDataURL(); + if( save.type == 'sketchy project' ) { + var list = JSON.parse(localStorage.getItem('projects')); + var index; + if( list && list.some(function(a, i) { if( a.name == save['file name'] ) {index = i; return true} return false }) ) { + if( confirm('A sketch with this name already exists. Do you want to overwrite ' + save['file name'] + '?') ) { + console.log(index); + list[index] = { + name: save['file name'], + data: data, + points: window.points, + settings: settings + } + localStorage.setItem('projects', JSON.stringify(list)); + } + } + else { + list ? list.push({ + name: save['file name'], + data: data, + points: window.points, + settings: settings + }) : list = [{ + name: save['file name'], + data: data, + points: window.points, + settings: settings + }]; + localStorage.setItem('projects', JSON.stringify(list)); + } + } else { + var img = dataToBlob(data); + var sd = window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) { + window.alert('SD'); + /*var req = fs.root.getFile(save['file name'] + '.png', {create: true}, function(entry) { + alert('Entry'); + entry.createWriter(function(writer) { + writer.write(img); + alert('Your Sketch was saved successfuly'); + }, function() { + alert('Something bad happened trying to save your sketch ' + save['file name'] + '\n Possible reasons:\n Duplicate Name \n Not enough permission') + }) + })*/ + }, function(e) { + alert('SD Error') + //alert('Couldn\'t access filesystem\nERR: ' + e.code); + }); } + c.putImageData(f, 0, 0); } + window.load = function() { + var file = JSON.parse(localStorage.getItem('projects')).filter(function(a) { return a.name == load.file })[0]; + var img = document.createElement('img'); + img.src = file.data; + img.onload = function() { + c.clearRect(0, 0, width(), height()); + c.drawImage(img, 0, 0); + window.points = file.points; + window.points.history = [{ data: c.createImageData($c.width(), $c.height()), points: []}, { data: c.getImageData(0, 0, width(), height()), points: file.points}]; + $c.first().css('background', file.settings.bg); + window.settings.bg = file.settings.bg; + } + } - if( !localStorage.getItem('sawVote') ) { - $('.vote').removeClass('hidden'); - localStorage.setItem('sawVote', true); - } + if( !localStorage.getItem('sawVote') ) { + $('.vote').removeClass('hidden'); + localStorage.setItem('sawVote', true); + } + }, false) }) diff --git a/Android/res/icons/android/icon-48-mdpi.png b/Android/res/icons/android/icon-48-mdpi.png new file mode 100644 index 0000000000000000000000000000000000000000..301142fef8b155f6311285f502c3c82032004129 GIT binary patch literal 2742 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 literal 0 HcmV?d00001 diff --git a/Android/icon.png b/Android/res/icons/android/icon-60-hdpi.png similarity index 100% rename from Android/icon.png rename to Android/res/icons/android/icon-60-hdpi.png diff --git a/Android/res/drawable/sketchy.png b/Android/res/icons/android/icon.png similarity index 100% rename from Android/res/drawable/sketchy.png rename to Android/res/icons/android/icon.png diff --git a/Gruntfile.js b/Gruntfile.js index 23a9bc9..f5735ec 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -21,6 +21,13 @@ module.exports = function(grunt) { dest: 'build/web/js', filter: 'isFile' }, + { + expand: true, + cwd: 'Shared/js', + src: '**', + dest: 'build/android/js', + filter: 'isFile' + }, { expand: true, cwd: 'Mobile/js/', @@ -79,7 +86,7 @@ module.exports = function(grunt) { { expand: true, cwd: 'Android', - src: ['index.html', 'config.xml', 'res/**', 'icon.png'], + src: ['index.html', 'config.xml', 'AndroidManifest.xml', 'res/**', 'icon.png'], dest: 'build/android' }, { diff --git a/Web/js/main.js b/Web/js/main.js index efcfdf6..0ebdb29 100644 --- a/Web/js/main.js +++ b/Web/js/main.js @@ -61,7 +61,8 @@ $(document).ready(function() { }]; localStorage.setItem('projects', JSON.stringify(list)); } else { - window.open(data, '_blank').focus(); + $('').click(); + //window.open(data, '_blank').focus(); } c.putImageData(f, 0, 0); diff --git a/build/android/AndroidManifest.xml b/build/android/AndroidManifest.xml new file mode 100644 index 0000000..f82a6bf --- /dev/null +++ b/build/android/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/build/android/config.xml b/build/android/config.xml index 33e93ba..82c31ed 100644 --- a/build/android/config.xml +++ b/build/android/config.xml @@ -13,7 +13,7 @@ - + @@ -21,7 +21,12 @@ - + + + + + + diff --git a/build/android/index.html b/build/android/index.html index abc9887..31a15dd 100644 --- a/build/android/index.html +++ b/build/android/index.html @@ -5,8 +5,9 @@ Sketchy + - +
diff --git a/build/android/js/diff.js b/build/android/js/diff.js index b5500e2..d5e6437 100644 --- a/build/android/js/diff.js +++ b/build/android/js/diff.js @@ -1 +1 @@ -$(document).ready(function(){$("*").off("click mousemove mousedown mouseup mouseleave").on("click mousemove mousedown mouseup mouseleave",function(a){a.preventDefault}),window.save=function(){var a=c.getImageData(0,0,width(),height());switch(save.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var b=$c[0].toDataURL();if("sketchy project"==save.type){var d,e=JSON.parse(localStorage.getItem("projects"));e&&e.some(function(a,b){return a.name==save["file name"]?(d=b,!0):!1})?confirm("A sketch with this name already exists. Do you want to overwrite "+save["file name"]+"?")&&(console.log(d),e[d]={name:save["file name"],data:b,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(e))):(e?e.push({name:save["file name"],data:b,points:window.points,settings:settings}):e=[{name:save["file name"],data:b,points:window.points,settings:settings}],localStorage.setItem("projects",JSON.stringify(e)))}else{window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(a){{var c=dataToBlob(b);a.root.getFile(save["file name"]+".png",{create:!0},function(a){a.createWriter(function(a){a.write(c),alert("Your Sketch was saved successfuly: "+this.result)},function(){alert("Something bad happened trying to save your sketch "+save["file name"]+"\n Possible reasons:\n Duplicate Name \n Not enough permission")})})}},function(a){alert("Couldn't access filesystem\n"+a.message)})}c.putImageData(a,0,0)},window.load=function(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==load.file})[0],b=document.createElement("img");b.src=a.data,b.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(b,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}},localStorage.getItem("sawVote")||($(".vote").removeClass("hidden"),localStorage.setItem("sawVote",!0))}); \ No newline at end of file +$(document).ready(function(){$(document).on("resume",function(){sizeAndPos()}),document.addEventListener("deviceready",function(){sizeAndPos(),$("*").off("click mousemove mousedown mouseup mouseleave").on("click mousemove mousedown mouseup mouseleave",function(a){a.preventDefault}),window.save=function(){var a=c.getImageData(0,0,width(),height());switch(save.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var b=$c[0].toDataURL();if("sketchy project"==save.type){var d,e=JSON.parse(localStorage.getItem("projects"));e&&e.some(function(a,b){return a.name==save["file name"]?(d=b,!0):!1})?confirm("A sketch with this name already exists. Do you want to overwrite "+save["file name"]+"?")&&(console.log(d),e[d]={name:save["file name"],data:b,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(e))):(e?e.push({name:save["file name"],data:b,points:window.points,settings:settings}):e=[{name:save["file name"],data:b,points:window.points,settings:settings}],localStorage.setItem("projects",JSON.stringify(e)))}else{dataToBlob(b),window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(){window.alert("SD")},function(){alert("SD Error")})}c.putImageData(a,0,0)},window.load=function(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==load.file})[0],b=document.createElement("img");b.src=a.data,b.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(b,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}},localStorage.getItem("sawVote")||($(".vote").removeClass("hidden"),localStorage.setItem("sawVote",!0))},!1)}); \ No newline at end of file diff --git a/build/android/res/icons/android/icon-48-mdpi.png b/build/android/res/icons/android/icon-48-mdpi.png new file mode 100644 index 0000000000000000000000000000000000000000..301142fef8b155f6311285f502c3c82032004129 GIT binary patch literal 2742 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 literal 0 HcmV?d00001 diff --git a/build/android/res/icons/android/icon-60-hdpi.png b/build/android/res/icons/android/icon-60-hdpi.png new file mode 100644 index 0000000000000000000000000000000000000000..bac55b3360234a70c49e91370b68f294f02c9a17 GIT binary patch literal 3810 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 Y0a`&-tuDhprvLx|07*qoM6N<$f=*mJQ2+n{ literal 0 HcmV?d00001 diff --git a/build/android/res/icons/android/icon.png b/build/android/res/icons/android/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bac55b3360234a70c49e91370b68f294f02c9a17 GIT binary patch literal 3810 zcmV<84ju7{P)0EiGmA^;+cu?VH~^LO5P=i+>giB!|Vot>Q) z(=^vG#(o0eCjc5|scI0wuPLR!w%Kg|*3;9YRcnk@0p77=M?IzVFHFd+jx)Vm*}(a>tGx^#FcF zDSZr>f6zN+9Qap)AZ+aE=^3oV+7$tJc6P1=@GAg|N}%^6t(BlDr4g&u`lmfTJzoKs z(Lm@-U$S%O&gTdrpW!~k0{`b#jInxERe#^r)zt=IMrNK7@Xnn(_ftwg1Yj?|=)S?0 zq%;o3n4K|pw5zM@0A|2*PnYiK=yQhJ^cQg0Xr3}edg&ztDFj={k}tY5z#k3ar6PMUauEk zuNPCr5su?vu~>!$LHJQP9KLqw(4k2dni6>L-o1h(Nnh|hzp@0okaJeobqoy+;hATi z!G;YRpzAvF`8Pd$aFpMDy$EMsJ31UGNqgdhmmzkfd-c;EprI zR>WelZb1;Ncj}*H;qLBkudeIYDWyJ5(-zc~4Z}br62YoftFUq7MrfJ_Ns^FECP4^6 zO-&8b=`>8!L~m~|`uh412m~hS;W!S0Af#$*YgdHB;oE!m>?!{;lPs+3`azE4e2lUC z0=shMN<91QvrrTT*=!bxL;|L1!teJZl}e$%zaIkw16a3i9b{RCqD-zX4a0!0>)uo< zwNF)5+xX8W0C#nDEuxg}2F6@#p@cDpp`jr>^2j4)%jWZWB$G)1fZy*&I-SPAzyJV% z=XqSde7O{)CIqn3rRzF$U2l)aF7zMJZd>>-8d&$zWh$0H$ezQVK!{PM$o8P$&dSr>-@MR<=u$wBO-y*h}}zPw(5e z&q67Eju5h7)@6(#5{aO>xfyM3ZD5Q+Q53}EaWKZ<@pvFf5(Wka$_8*a95{CD7=pnd zc>eAU8%@)oY1#%|*L~;DpC`aL;6kDBV@j!eq2?}Q41(y$edW5nwzd}Uz4sn`J|Ap0+dW}Rm!@fuW%*AuO%uz& z#ksM5A>7$CO$-kYBM=B+>(;Fxgh10Y#N%-oh5=C&Q79D3mNiWi!C(+ajvRs0>4YeX z6}_*Rmw(K0oOt~BaY6xL&z?Px5kl(cJ6M^fiAW>@uh)zA_Vx*|x~{|Fa6r>E^!4?X zi=99qfaAxH!(y?(<#Nr~vg6&FF&4Uc^XAG-Cc~FpdJQ3D-Xn7~8imv8#P;pmK`Dh{ z7>LK?&@>G;n+>|Im))2#2EX5rQ>RWrRaLm%?uuc@rzlC1{*Wpf z6&8yHAAR%@g25mtrBxk|X__^ZQjP)u8I!6h&*gH6$K!bAl~>^N`5?%Q7gX za5xEtX&Ow^1kdwuI2<^7^eAd;YhkrcTE@;vOw%kejsa6jqvIOfbCP^Mk7zWC zef##Iv9S^Pd>$hsBV|}o6eqxP90!-nh4s)%e{$20)!B_-EIsF43rn_lv32x)Zp;p!|-@Ku-onP z)=Hw3g5$WPX_~Awhlhc&*2rwcG)+XKQ9SX)6Ii=;EdU^uN=;biUAuM-vMiV8Q@K8N zxm*?3$CXMEI6(-}cmQCGMM@pNLZMKx!gxH6P$-0L+qMB13tA&1Bju9t`t|FOBnbc} zz>1;>Q55IBNyzg&IF3s&#uOd^91h24k|e=mu~e)qlgWS(f|p-@8I)4waycXt322%I zQ4}#SFo0|}TYf$q4&#FlK7h?;TM$?Puvjeccs!SNUC&bhIC${je{dW(Y_(b|4qUlh z4qLZwh23sPKA%S-kpM7O9^SZd1F2N196ajk>TvAXF<7luxLmI4lT9OnAS47FmV0)bqoy+ zl_P##T^&CD_~UW_TL?EUiQR68+wDGQ7)GkQyW1?ccvi1o-AgHz91h2f-C9u;tXj2d z!aYi98P+sSghC;F^2sMC6bkToJk_PShY&&_ilW@q)bv%MP>2EJdRncmty!zpdQuPs z2!e1=WrkrOm&@VdhaaBwl5jW-#u$RZAbNXyk;~;KZGbJrB?tmsF4sAa#}iXkH8TMi z09(9x@!xP9r?_0MdsHeJ|S#ND^ef{j&v(LHRZnvtc)0Ud1X(E@)!Dh3ex3?FH zqTuVVzlJD^sI9Gqs;bE6^9vfFN2Kt7)b&+}+#Xn@6Hfv)RNRrS8W0)W%$L^vG&Z6FZ% zE}PB%F#fZtHfD^~t5?6taoiQZ-#_iz)a&)4v9S@07cWLI7=+*NFIQ^ST58Tl1VKO` z5V+ag-26*bRr|MZ-##J7PPr4++S-~}zI^#+hrZ{VTldZ4#fv+=UT?wY^G&-;H-ARTrp2Q~Gk$(9LMesc?>C#9n?G!7 zYWmlFK7XaXy{>*OMj_p z+JA1@vL!R!^D{kb={|b&=&ooq`d6`7Oh_h^_uOUFG!3a#3bHI$h%j^Ec^<)FP+Pim z>G9^~=6?imuC1+YM3N+= zQmLwL!BR@$@pw>QUq85P*|N8T!Qk(++3Yu4wroky7!0YymQe62U7!1nw_4S`V_~3*8G%8p zOHq{nmLw@URqDB`zB$e>9zfvRZ@+E5aN)wPWHR}rEX!gxn}sAvP*t_O>oC=Ms_BGM z3PBLy@p$0%dKI6~ce$~#@nk3z`o=JfE168@R(pGU<=sY9?{7R-05!Q>uIcRAvp>3h z`}V3-D)mSCd_IuN)A@@=S<{( Y0a`&-tuDhprvLx|07*qoM6N<$f=*mJQ2+n{ literal 0 HcmV?d00001 diff --git a/build/android/res/icons/icon.png b/build/android/res/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bac55b3360234a70c49e91370b68f294f02c9a17 GIT binary patch literal 3810 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 Y0a`&-tuDhprvLx|07*qoM6N<$f=*mJQ2+n{ literal 0 HcmV?d00001 diff --git a/build/web/js/main.js b/build/web/js/main.js index fb9fc7f..4f82d55 100644 --- a/build/web/js/main.js +++ b/build/web/js/main.js @@ -1 +1 @@ -"use strict";$(document).ready(function(){function a(){var b=c.getImageData(0,0,width(),height());switch(a.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var d=$c[0].toDataURL();if("sketchy project"==a.type){var e,f=JSON.parse(localStorage.getItem("projects"));f&&f.some(function(b,c){return b.name==a["file name"]?(e=c,!0):!1})?confirm("A sketch with this name already exists. Do you want to overwrite "+a["file name"]+"?")&&(console.log(e),f[e]={name:a["file name"],data:d,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(f))):f?f.push({name:a["file name"],data:d,points:window.points,settings:settings}):f=[{name:a["file name"],data:d,points:window.points,settings:settings}],localStorage.setItem("projects",JSON.stringify(f))}else window.open(d,"_blank").focus();c.putImageData(b,0,0)}function b(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==b.file})[0],d=document.createElement("img");d.src=a.data,d.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(d,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}}yepnope({test:window.mobile,yep:["js/mobile.js","js/libs/color-picker-touch.js"],nope:["js/libs/color-picker.js"]}),$(window).resize(sizeAndPos),window.load=b,window.save=a}); \ No newline at end of file +"use strict";$(document).ready(function(){function a(){var b=c.getImageData(0,0,width(),height());switch(a.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var d=$c[0].toDataURL();if("sketchy project"==a.type){var e,f=JSON.parse(localStorage.getItem("projects"));f&&f.some(function(b,c){return b.name==a["file name"]?(e=c,!0):!1})?confirm("A sketch with this name already exists. Do you want to overwrite "+a["file name"]+"?")&&(console.log(e),f[e]={name:a["file name"],data:d,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(f))):f?f.push({name:a["file name"],data:d,points:window.points,settings:settings}):f=[{name:a["file name"],data:d,points:window.points,settings:settings}],localStorage.setItem("projects",JSON.stringify(f))}else $('').click();c.putImageData(b,0,0)}function b(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==b.file})[0],d=document.createElement("img");d.src=a.data,d.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(d,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}}yepnope({test:window.mobile,yep:["js/mobile.js","js/libs/color-picker-touch.js"],nope:["js/libs/color-picker.js"]}),$(window).resize(sizeAndPos),window.load=b,window.save=a}); \ No newline at end of file diff --git a/deploy-android b/deploy-android new file mode 100755 index 0000000..267ca83 --- /dev/null +++ b/deploy-android @@ -0,0 +1,6 @@ +#!/bin/bash + +grunt; +cp -R build/android/* ~/Documents/Workshop/Sketchy-Android/sketchy/www/ +cd ~/Documents/Workshop/Sketchy-Android/sketchy +phonegap run android diff --git a/sketchy-mobile-1.2.1.zip b/sketchy-mobile-1.2.1.zip index 9250af04505ec079f454ffda938eda1ed9c566ec..5ca503c7aeda0f151a71a6066e6cf295c8e9fbfb 100644 GIT binary patch delta 1923 zcmY+Fe^69a6vugQx%VA0P!Jegzy%fpX@v3@!S+Lp9}+o|Az~`Z7z@jfU0?xOkY9ly zHca6ncR+9gWwME>$#ULU;}m0~Q%&V$O)(5VjL6E#vOl1dn)aQ0-yiMF+w-~Sd(OG% z-5_QEz9K)4_AeRdcN+~c(Vm&purKjt z@Yqsk;{W<}A2FD<#P)83+HH__;VfNK$&xyiEa%uYsVm`vtR`GA+$+aXRFJnC6-4fr zX(MK8BLfH@wvj;%)clu8l!DaMO>(`FzUd(^ak88u83cVDjC{m>8AIe#N%OIQv*ZU9 zm(G#`9+rQeWb$&OZ;|)8Z{NE_PQkc>JLIyAWV}mcUe5F<`PG2FhZad7MKUjwP98V@ zFInX3m`q1_MwUXmxO#I1UE=B&zI4>v-_umu%EDv6Zp zNQlzIckVHhvVd1WT^q0Xufn(u$%=6`(z990h7hENLgfnHB{k)wlE*XLeaiD(y*;kH z7R=+WDt~ab;!EWdPMar{Lx5`kEycwbFkoIe#eHwwQ9k3#RdZi49p-T_g2KCh{U9uG zI#CFIxJPWD2=F?y&x-)BDKl7MvzEw~tq{ugSRouowN`iel8S{iQS8a+ zD~5Q~J)?Al6(x{?u)74F(xp)Lc8Lg_DuHZtueZSt1W#9?>{S~C;>golD4VbW-{Bb> z;O`1sRSKI>PcMaM5MC*TG=#59#ni?!G4+u$cn+nDI!NX4BzjWIAq$~Lhsko-hMuqr z$V9MKz!L~#I{c`E*)D>uc0I-pNfsqzQ3U!JsyHjLcbBe668WHTQfqhu#s~X5hh_8i% z2q$YH4`IF*_9LX$iQwTn*o&T}I#F=vQBm;xQ6AG@FO$#ULU;}m0~Q%&V$O)(5VjL6E#vOl1dn)aQ0-yiMF+w-~Sd(OG% z-5_QEz9K)4_AeRdcN+~c(Vm&pu`lsu z@Yqsk;{W<}A2FD<#P)83+HH__;VfNK$&xyiEa%uYsVm`vtR`GA+$+aXRFJnC6-4fr zX(MK8BLfH@wvj;%)clu8l!DaMO>(`FzUd(^ak88u83cVDjC{m>8N=jLN%OIQv*ZU9 zm(G#`9+rQeWb$&OZ;|)8Z{NE_PQkc>JLIyAWV}mcUe5F<`PG2FhZad7MKUjwP98V@ zFInX3m`q1_MwUXmxO#I1UE=B&zI4>v-_un3%EDv6Zev?rSNn(4ZJClHpqOv2TV z1L!86xfn<%c;*Kow4K*Y4W}(K)_5;}@PW&-{@N3-)rev5I02ZS4_(W$g6K*$GJ+oB z`R!)lqvkCX{E+TuQOSf2x@K-1xN7wB(w;bW&q5>A2pj$0h?x)C=`g}z2mKl0_;EUl z5Z_7r5GFe5ErhWy9;~LHp#A=uOPwB|!4XJ{m+71tX>ywS^LP7gj{Y5nzF+>KmvBaP zBt+@qJNKALS->lxu8mjxS7F?SWW~4|>Der0LkLnsp>hT9lA3Z-$>SOBKIM6?-X2$8 z3+8cGl|Q&z@ul(!r_GbfAwaeNmg3?I7%;D#;=VWTD4+4=s=2S24)eGdLE+uMeh?No zohSr9+#@zn1bCg<=S6_mlo_nBSxaQgRtRN#tPqZ)S}Qz_pju&@uH!{!NyS2%DE4IZ z6+=Agp3!!M6(x{?u)74F(xp)Lc8Lg_DuHZtueZSt1W#9?>{S~C;>golD4VbW-{Bb> z;O`1sRSKI>-(CvOAiPov=?Gt!im8odV(KGh@El4Pb&$&8N%W+ZLl#1h4wL1Oik`3v z$V9MKz!L~#I{c`E*)D>uc0I-pNfsqzQ3U!JsyHjLcbBe668WHTQfqhu#s~X5hh_8i% z2q$YH4`IF*_9LX#iQqGJuopc`b)w+TqoUyXqdca+UMP9>BI#m16kyUC7aTySc8N}} zyF|Un2GOajL1cZ~AQm;GQNaF2amdazibFJ`gXx%%3UxTA!-5X6O(MqDB+mJW4wFq{ zyVf)V{#3J^W^oROn#Eb4YZluT+XDD6#)@<}*8*wyUbkDs6zf~X6osv#@=zT diff --git a/sketchy-web-1.2.1.zip b/sketchy-web-1.2.1.zip index c2c04a35e7bc28c88c337e0b0ad65420437edeee..23ab6787827dcc2dc95e53c3c6f0c85e210b9214 100644 GIT binary patch delta 2060 zcmY+F4@^~69LL|gk9+QK2qq}ZcoFyj`IkJ0q5KCC1wtm7q$cmdh4*-Wc<=EaqOoCO zKHan_n8ye+sht1TVqtgCu(4TN&P`WIE|$wSH-?JOYHFp_yT5Z@CEMfoIp5!(^SkGq zd+w-j*>&Ht(8_XMP_Rb*TYqf$P-u)!HO2%qTjNzTut*zu=x{hHr;TW))43xFZH^Y@ z0k<{-$8K%Hz$NV>j%Ct_q31{=J$kr+=vV}^I>hkV9B`7;j>F&F5)E*I}v`2`4 zHmW1q@}~GMLg+4WPzB}8F3}(%UD+pY2|`-_wrF8=pkLe|qBcdvFPV09Nc={tYSi++ z_zODAj*Dg%cIG3ogq8dKtT@WFvm>IAjd7pe7RLl6*PJM@axK4#vpUqw55y$|spGM@ zhsDj$iw~Ihp+HWsjQ1qsW!{8f@{oCB7LwthP=8a!3*?@AMS@0CM0+2Ldg_iKA@t;9 zF<^43<8I5x**IysL-yEFVvs!QFrntX=~r<7%qVdk96Cg)TqJ(fe>!KjQ} z0t=A}Um{vOCQ7k`5Iu%f>?T79cXpE*gdg4_!w5Zl$YF%VUUC!Rp_c_KNA{8P7^W=OK(r-(p18i6NVx(Kas5PcYVb37-W=TSl}OoRa#P_V*3x5?h+fccqwG+^y^PvvQLqjV4)nQ~|FAt&LAg%#~y9t=5J-Lt?5W zHPH}jY3lO0nq-SA$U6)T4wp67BfG5zQ)*&bv&Ux0&o#>ViOFg8E=PT%(zF>)vpv*T z!7a8hy6rHGL{C)%J`(-08t~nw;U;(ypLT&6^weU4XdK;X_m7U7ARb3wo1iEVgjWDX zzij6It7`6tW=O#x|7bnJ(i+%+AlE>Cz@?`XH9T;(2Fg*+tc6m9zS{r#)6=W9fV)WV z)&ky0^m!RpVc-@SvJei+unu8LhGK;1IzGL%j!*wd9c)C`lK^b2hdfmF*Fzb?^#H_M zpb!xOrL4xCn>p&gR_mh&IMpD04v+Mt2F?l?flsL z&o3*O*1`A7-T`>c(~mp&Vf1zIQ=iev_p7H9@JmR?1MsL5)?#D1T~P4!D^2%yL291= zA}JmnAD+D6zmwHp$p1fm9hQ-a IYVarj13oV0z5oCK delta 2039 zcmY+FYfKbZ6vuaGnL8)QTOi6xke8(>(Au&hP(h?TN~si~LJP|-EYDq*$MTTW1PkIy z0i!^<6lvV?33GL3gciT#`+~58G&pC7E z-a9k5mxHI4gWYqoG%l_xUPcI-Gi$fec(%yP|MMt;5k@h{iEpV1eyI0?xk@;&6N{;PnRrG~r>6E2m;# z{GY}#*4Sd6>35(^6N-u5n*GYyIj525H0u3$HG5RNT8@era;%DFKXO)(kDS%~VZm9G zpNrh&Cq6YRGurT;IE>)lA&w{@pYISuB&6@V#XJ|JZ6`z%qrQGIO+@V`6~AWMhhySZ zwW3keY4I+anIDUK7IywqF`borbU~bA+J(IoJ?r17?gYoe1DS}FsLfh9wt+G9m zyzE2rSw@B*nPwSon@K0D*B?mQ1*!QjZ<~(%fU75G#*uMmF2$1x#iSo4 zkPk2_Hj#h_Qu1p=jb}wpttLc^VcAE?7{aed$$f-dU1S{L@G&xou+dHy5LWFhSROh~ zhP)L?ju|2TTahxpB)^0rZJ#IJ>_(Cn$dfIoC9IQ+0Z0!wNquZ=HgT@&mi{CNq=HNGJU~)t6f% zOglnKN-ajKIpq21in_99n>>&U=h*%v<-RAGjI7=*nG=#1a*z=#i z;PgEVkcD!Q0WuIA{b}hp2Jpq1qe(4&WB}YI>TLvk@6Z$@yoCNCBkV?)GQvKDr$$Ic z*jvgw>MrFy+$e?D(F!i(P+tbGpfXtonFwo6$S^@NDm^AhN0>E1B7$!@hXYRNFXzFt zPQ|wZc46=v6_AZ^x&m?$9#%jOLRuwnwXYKJwMT!hggmr#RXn(-iU-eEK|Zsp;Q&H! zHP4!_=2@{dJnQ`$o^_{&XT_R%R*#tn-!(%a*4bl$0)$};6eB#bz*`8pweSwYWGxSN zv%*1CDy+QVWh*bZv5v>o)p6^JQwgpIJ!W;(LlMG4J#SUlzzd#i;H}