From 5e2fcfd8a76044bf57cd316e53bad3c366ca07b2 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Mon, 1 Jul 2013 22:55:11 +0200 Subject: [PATCH 01/67] typo --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 3bc1a99..01cb3ec 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@

glitch images

-

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corripted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

+

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

From 790a4b1ef5fe3640ec08b0df69199740f6e650c9 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sun, 21 Jul 2013 14:58:31 +0200 Subject: [PATCH 02/67] add license --- LICENSE | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..aeed56a --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Georg Fischer + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 10528e191f1a5118746efbdc343cb7e7861c2d3e Mon Sep 17 00:00:00 2001 From: georg fischer Date: Tue, 23 Jul 2013 15:08:35 +0200 Subject: [PATCH 03/67] add links to other experiments to copy --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 01cb3ec..f1d0d31 100644 --- a/index.html +++ b/index.html @@ -9,6 +9,7 @@

glitch images

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

+

you can check out some of his other javascript experiments like triangulation, and distort-grid on github, too.

@@ -35,4 +36,4 @@ - \ No newline at end of file + From 4f5ad78a568cb1e06e0e6abb5a32b4d1b7026b0f Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Tue, 23 Jul 2013 23:28:24 +0200 Subject: [PATCH 04/67] update experiments link --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index f1d0d31..c83f73b 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@

glitch images

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

-

you can check out some of his other javascript experiments like triangulation, and distort-grid on github, too.

+

if you like this one, you can check out some of his other javascript experiments gitub.

From 3803fcf877b24ecb7d3ebe32666193c484f6bc64 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Tue, 23 Jul 2013 23:37:07 +0200 Subject: [PATCH 05/67] typo --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index c83f73b..697a1db 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@

glitch images

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

-

if you like this one, you can check out some of his other javascript experiments gitub.

+

if you like this one, you can check out some of his other javascript experiments github.

From 658724d1d8f8f2eac2785e5153339a6fe1437397 Mon Sep 17 00:00:00 2001 From: georg fischer Date: Thu, 25 Jul 2013 09:11:21 +0200 Subject: [PATCH 06/67] update license link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 522499f..2413eb3 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,4 @@ third party code used in this experiment license --- -[MIT License](http://www.opensource.org/licenses/mit-license.php) \ No newline at end of file +[MIT License](LICENSE) From 3c403604bd8ee5a4d503ab032b10b238b6f9e99e Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Wed, 11 Sep 2013 21:37:17 +0200 Subject: [PATCH 07/67] rename the aux folder to util, because windows. fixes issue #3 --- scripts/src/glitch.js | 192 +++++++++++++++++++++++++++++++++++ scripts/src/main.js | 2 +- scripts/src/process.js | 2 +- scripts/util/canvas.js | 38 +++++++ scripts/util/feature-test.js | 48 +++++++++ 5 files changed, 280 insertions(+), 2 deletions(-) create mode 100644 scripts/src/glitch.js create mode 100644 scripts/util/canvas.js create mode 100644 scripts/util/feature-test.js diff --git a/scripts/src/glitch.js b/scripts/src/glitch.js new file mode 100644 index 0000000..ade55c0 --- /dev/null +++ b/scripts/src/glitch.js @@ -0,0 +1,192 @@ +/*global define*/ +define( + [ 'util/canvas' ], + function( canvas_helper ) + { + var canvas = document.createElement( 'canvas' ); + var ctx = canvas.getContext( '2d' ); + + var tmp_canvas = document.createElement( 'canvas' ); + var tmp_ctx = tmp_canvas.getContext( '2d' ); + + var canvas_size = { width: 10, height: 10 }; + + var base64_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var base64_map = base64_chars.split( '' ); + var reverse_base64_map = { }; + + var iterations; + var quality; + var seed; + var amount; + var base64; + var byte_array; + var jpg_header_length; + var img; + var new_image_data; + + var i; + var len; + + base64_map.forEach( function( val, key ) { reverse_base64_map[val] = key; } ); + + function getGlitchedImageSrc( image_data, input, callback ) + { + seed = input.seed / 100; + quality = input.quality / 100; + amount = input.amount / 100; + iterations = input.iterations; + + canvas_helper.resize( canvas, image_data ); + canvas_helper.resize( tmp_canvas, image_data ); + + base64 = getBase64FromImageData( image_data, quality ); + byte_array = base64ToByteArray( base64 ); + jpg_header_length = getJpegHeaderSize( byte_array ); + + for ( i = 0; i < iterations; i++ ) + { + glitchJpegBytes( byte_array, jpg_header_length, seed, amount, i, iterations ); + } + + img = new Image(); + img.onload = function() { + ctx.drawImage( img, 0, 0 ); + new_image_data = ctx.getImageData( 0, 0, image_data.width, image_data.height ); + callback( new_image_data ); + }; + + img.src = byteArrayToBase64( byte_array ); + } + + function glitchJpegBytes( byte_array, jpg_header_length, seed, amount, i, len ) + { + var max_index = byte_array.length - jpg_header_length - 4; + var px_min = parseInt( max_index / len * i, 10 ); + var px_max = parseInt( max_index / len * ( i + 1 ), 10 ); + + var delta = px_max - px_min; + var px_i = parseInt( px_min + delta * seed, 10 ); + + if ( px_i > max_index ) + { + px_i = max_index; + } + + var index = Math.floor( jpg_header_length + px_i ); + + byte_array[index] = Math.floor( amount * 256 ); + } + + function getBase64FromImageData( image_data, quality ) + { + var q = typeof quality === 'number' && quality < 1 && quality > 0 ? quality : 0.1; + tmp_ctx.putImageData( image_data, 0, 0 ); + return tmp_canvas.toDataURL( 'image/jpeg', q ); + } + + function getJpegHeaderSize( data ) + { + var result = 417; + + for ( var i = 0, l = data.length; i < l; i++ ) + { + if ( data[i] === 0xFF && data[i + 1] === 0xDA ) + { + result = i + 2; + break; + } + } + + return result; + } + + // https://github.com/mutaphysis/smackmyglitchupjs/blob/master/glitch.html + // base64 is 2^6, byte is 2^8, every 4 base64 values create three bytes + function base64ToByteArray( str ) + { + var result = [ ]; + var digit_num; + var cur; + var prev; + + for ( var i = 23, l = str.length; i < l; i++ ) + { + cur = reverse_base64_map[ str.charAt( i ) ]; + digit_num = ( i - 23 ) % 4; + + switch ( digit_num ) + { + // case 0: first digit - do nothing, not enough info to work with + case 1: // second digit + result.push( prev << 2 | cur >> 4 ); + break; + case 2: // third digit + result.push( ( prev & 0x0f ) << 4 | cur >> 2 ); + break; + case 3: // fourth digit + result.push( ( prev & 3 ) << 6 | cur ); + break; + } + + prev = cur; + } + + return result; + } + + function byteArrayToBase64( arr ) + { + var result = [ 'data:image/jpeg;base64,' ]; + var byte_num; + var cur; + var prev; + var i; + + for ( var i = 0, l = arr.length; i < l; i++ ) + { + cur = arr[i]; + byte_num = i % 3; + + switch ( byte_num ) + { + case 0: // first byte + result.push( base64_map[ cur >> 2 ] ); + break; + case 1: // second byte + result.push( base64_map[( prev & 3 ) << 4 | ( cur >> 4 )] ); + break; + case 2: // third byte + result.push( base64_map[( prev & 0x0f ) << 2 | ( cur >> 6 )] ); + result.push( base64_map[cur & 0x3f] ); + break; + } + + prev = cur; + } + + if ( byte_num === 0 ) + { + result.push( base64_map[( prev & 3 ) << 4] ); + result.push( '==' ); + } + + else if ( byte_num === 1 ) + { + result.push( base64_map[( prev & 0x0f ) << 2] ); + result.push( '=' ); + } + + return result.join( '' ); + } + + function getImageDataCopy( image_data ) + { + var copy = tmp_ctx.createImageData( image_data.width, image_data.height ); + copy.data.set( image_data.data ); + return copy; + } + + return getGlitchedImageSrc; + } +); \ No newline at end of file diff --git a/scripts/src/main.js b/scripts/src/main.js index eea64c7..129f0af 100644 --- a/scripts/src/main.js +++ b/scripts/src/main.js @@ -20,7 +20,7 @@ require( 'src/controls', 'src/export-png', 'src/save-button', - 'aux/feature-test', + 'util/feature-test', 'lib/signals-1.0.0', 'lib/html5slider' ], diff --git a/scripts/src/process.js b/scripts/src/process.js index e2a96b2..26e26d2 100644 --- a/scripts/src/process.js +++ b/scripts/src/process.js @@ -1,6 +1,6 @@ /*global define, requestAnimationFrame*/ define( - [ 'aux/glitch', 'aux/canvas', 'lib/raf' ], + [ 'src/glitch', 'util/canvas', 'lib/raf' ], function( glitch, canvas_helper ) { var tmp_canvas = document.createElement( 'canvas' ); diff --git a/scripts/util/canvas.js b/scripts/util/canvas.js new file mode 100644 index 0000000..f7fe2dd --- /dev/null +++ b/scripts/util/canvas.js @@ -0,0 +1,38 @@ +/*global define*/ +define( + function() + { + var update = false; + + function resize( canvas, size ) + { + + if ( canvas.width !== size.width ) + { + canvas.width = size.width; + update = true; + } + + if ( canvas.height !== size.height ) + { + canvas.height = size.height; + update = true; + } + + if ( update ) + { + canvas.width = size.width; + canvas.height = size.height; + } + + update = false; + } + + function clear( canvas, ctx ) + { + ctx.clearRect( ctx, 0, 0, canvas.width, canvas.height ); + } + + return { resize: resize, clear: clear }; + } +); \ No newline at end of file diff --git a/scripts/util/feature-test.js b/scripts/util/feature-test.js new file mode 100644 index 0000000..f4beb28 --- /dev/null +++ b/scripts/util/feature-test.js @@ -0,0 +1,48 @@ +/*global define*/ +define( + function() + { + var tests = { + 'canvas': { required: true, test: function(){ return !! document.createElement('canvas').getContext; } }, + 'query-selector-all': { required: false, test: function(){ return !! document.querySelectorAll; } }, + 'drag-drop': { required: false, test: function(){ return 'draggable' in document.createElement('span'); } }, + 'file-api': { required: false, test: function(){ return typeof FileReader !== 'undefined'; } } + }; + + function test( success, error ) + { + var required_supported = true; + var results = { }; + var required_features_missing = [ ]; + + for ( var key in tests ) + { + var result = tests[key].test(); + + if ( ! result ) + { + if ( tests[key].required ) + { + required_supported = false; + + required_features_missing.push( key ); + } + } + + results[key] = result; + } + + if ( required_supported ) + { + success( results ); + } + + else + { + error( required_features_missing, results ); + } + } + + return test; + } +); \ No newline at end of file From 9d64a16c644dacb7c9c700240324529228cb39d3 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Wed, 11 Sep 2013 21:45:13 +0200 Subject: [PATCH 08/67] remove obsolete files --- scripts/aux/canvas.js | 38 ------- scripts/aux/feature-test.js | 48 --------- scripts/aux/glitch.js | 192 ------------------------------------ 3 files changed, 278 deletions(-) delete mode 100644 scripts/aux/canvas.js delete mode 100644 scripts/aux/feature-test.js delete mode 100644 scripts/aux/glitch.js diff --git a/scripts/aux/canvas.js b/scripts/aux/canvas.js deleted file mode 100644 index f7fe2dd..0000000 --- a/scripts/aux/canvas.js +++ /dev/null @@ -1,38 +0,0 @@ -/*global define*/ -define( - function() - { - var update = false; - - function resize( canvas, size ) - { - - if ( canvas.width !== size.width ) - { - canvas.width = size.width; - update = true; - } - - if ( canvas.height !== size.height ) - { - canvas.height = size.height; - update = true; - } - - if ( update ) - { - canvas.width = size.width; - canvas.height = size.height; - } - - update = false; - } - - function clear( canvas, ctx ) - { - ctx.clearRect( ctx, 0, 0, canvas.width, canvas.height ); - } - - return { resize: resize, clear: clear }; - } -); \ No newline at end of file diff --git a/scripts/aux/feature-test.js b/scripts/aux/feature-test.js deleted file mode 100644 index f4beb28..0000000 --- a/scripts/aux/feature-test.js +++ /dev/null @@ -1,48 +0,0 @@ -/*global define*/ -define( - function() - { - var tests = { - 'canvas': { required: true, test: function(){ return !! document.createElement('canvas').getContext; } }, - 'query-selector-all': { required: false, test: function(){ return !! document.querySelectorAll; } }, - 'drag-drop': { required: false, test: function(){ return 'draggable' in document.createElement('span'); } }, - 'file-api': { required: false, test: function(){ return typeof FileReader !== 'undefined'; } } - }; - - function test( success, error ) - { - var required_supported = true; - var results = { }; - var required_features_missing = [ ]; - - for ( var key in tests ) - { - var result = tests[key].test(); - - if ( ! result ) - { - if ( tests[key].required ) - { - required_supported = false; - - required_features_missing.push( key ); - } - } - - results[key] = result; - } - - if ( required_supported ) - { - success( results ); - } - - else - { - error( required_features_missing, results ); - } - } - - return test; - } -); \ No newline at end of file diff --git a/scripts/aux/glitch.js b/scripts/aux/glitch.js deleted file mode 100644 index caa5499..0000000 --- a/scripts/aux/glitch.js +++ /dev/null @@ -1,192 +0,0 @@ -/*global define*/ -define( - [ 'aux/canvas' ], - function( canvas_helper ) - { - var canvas = document.createElement( 'canvas' ); - var ctx = canvas.getContext( '2d' ); - - var tmp_canvas = document.createElement( 'canvas' ); - var tmp_ctx = tmp_canvas.getContext( '2d' ); - - var canvas_size = { width: 10, height: 10 }; - - var base64_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - var base64_map = base64_chars.split( '' ); - var reverse_base64_map = { }; - - var iterations; - var quality; - var seed; - var amount; - var base64; - var byte_array; - var jpg_header_length; - var img; - var new_image_data; - - var i; - var len; - - base64_map.forEach( function( val, key ) { reverse_base64_map[val] = key; } ); - - function getGlitchedImageSrc( image_data, input, callback ) - { - seed = input.seed / 100; - quality = input.quality / 100; - amount = input.amount / 100; - iterations = input.iterations; - - canvas_helper.resize( canvas, image_data ); - canvas_helper.resize( tmp_canvas, image_data ); - - base64 = getBase64FromImageData( image_data, quality ); - byte_array = base64ToByteArray( base64 ); - jpg_header_length = getJpegHeaderSize( byte_array ); - - for ( i = 0; i < iterations; i++ ) - { - glitchJpegBytes( byte_array, jpg_header_length, seed, amount, i, iterations ); - } - - img = new Image(); - img.onload = function() { - ctx.drawImage( img, 0, 0 ); - new_image_data = ctx.getImageData( 0, 0, image_data.width, image_data.height ); - callback( new_image_data ); - }; - - img.src = byteArrayToBase64( byte_array ); - } - - function glitchJpegBytes( byte_array, jpg_header_length, seed, amount, i, len ) - { - var max_index = byte_array.length - jpg_header_length - 4; - var px_min = parseInt( max_index / len * i, 10 ); - var px_max = parseInt( max_index / len * ( i + 1 ), 10 ); - - var delta = px_max - px_min; - var px_i = parseInt( px_min + delta * seed, 10 ); - - if ( px_i > max_index ) - { - px_i = max_index; - } - - var index = Math.floor( jpg_header_length + px_i ); - - byte_array[index] = Math.floor( amount * 256 ); - } - - function getBase64FromImageData( image_data, quality ) - { - var q = typeof quality === 'number' && quality < 1 && quality > 0 ? quality : 0.1; - tmp_ctx.putImageData( image_data, 0, 0 ); - return tmp_canvas.toDataURL( 'image/jpeg', q ); - } - - function getJpegHeaderSize( data ) - { - var result = 417; - - for ( var i = 0, l = data.length; i < l; i++ ) - { - if ( data[i] === 0xFF && data[i + 1] === 0xDA ) - { - result = i + 2; - break; - } - } - - return result; - } - - // https://github.com/mutaphysis/smackmyglitchupjs/blob/master/glitch.html - // base64 is 2^6, byte is 2^8, every 4 base64 values create three bytes - function base64ToByteArray( str ) - { - var result = [ ]; - var digit_num; - var cur; - var prev; - - for ( var i = 23, l = str.length; i < l; i++ ) - { - cur = reverse_base64_map[ str.charAt( i ) ]; - digit_num = ( i - 23 ) % 4; - - switch ( digit_num ) - { - // case 0: first digit - do nothing, not enough info to work with - case 1: // second digit - result.push( prev << 2 | cur >> 4 ); - break; - case 2: // third digit - result.push( ( prev & 0x0f ) << 4 | cur >> 2 ); - break; - case 3: // fourth digit - result.push( ( prev & 3 ) << 6 | cur ); - break; - } - - prev = cur; - } - - return result; - } - - function byteArrayToBase64( arr ) - { - var result = [ 'data:image/jpeg;base64,' ]; - var byte_num; - var cur; - var prev; - var i; - - for ( var i = 0, l = arr.length; i < l; i++ ) - { - cur = arr[i]; - byte_num = i % 3; - - switch ( byte_num ) - { - case 0: // first byte - result.push( base64_map[ cur >> 2 ] ); - break; - case 1: // second byte - result.push( base64_map[( prev & 3 ) << 4 | ( cur >> 4 )] ); - break; - case 2: // third byte - result.push( base64_map[( prev & 0x0f ) << 2 | ( cur >> 6 )] ); - result.push( base64_map[cur & 0x3f] ); - break; - } - - prev = cur; - } - - if ( byte_num === 0 ) - { - result.push( base64_map[( prev & 3 ) << 4] ); - result.push( '==' ); - } - - else if ( byte_num === 1 ) - { - result.push( base64_map[( prev & 0x0f ) << 2] ); - result.push( '=' ); - } - - return result.join( '' ); - } - - function getImageDataCopy( image_data ) - { - var copy = tmp_ctx.createImageData( image_data.width, image_data.height ); - copy.data.set( image_data.data ); - return copy; - } - - return getGlitchedImageSrc; - } -); \ No newline at end of file From 09344752d0c631ec5afb0a584e6a4c4d888e6024 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Wed, 11 Sep 2013 21:50:32 +0200 Subject: [PATCH 09/67] some small copy change --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 697a1db..9214977 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@

glitch images

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

-

if you like this one, you can check out some of his other javascript experiments github.

+

if you like this one, you can check out some of his other javascript experiments.

From e96f50d187c29728a775cf672ed2882ea339a9b9 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Wed, 11 Sep 2013 23:30:19 +0200 Subject: [PATCH 10/67] move main.js outside of src folder --- README.md | 8 ++++++++ index.html | 2 +- scripts/lib/require.min.js | 2 ++ scripts/{src => }/main.js | 0 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 scripts/lib/require.min.js rename scripts/{src => }/main.js (100%) diff --git a/README.md b/README.md index 2413eb3..ec604b7 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,14 @@ this is an experiment for the web browser. it corrupts jpg images so that they a this experiment is very much based on the [smack my glitch up js](https://github.com/Hugosslade/smackmyglitchupjs) script. +minification / build +--- +the [requirejs optimizer](http://requirejs.org/docs/optimization.html) is used to minify both javascript and css files. + +to minify javascript, run ```r.js -o name=main out=main.min.js``` in the terminal from the ```scripts``` folder. + +to minify css, run ```r.js -o cssIn=global.css out=global.min.css optimizeCss=default``` from the ```styles``` folder. + third party code used in this experiment --- * [html5slider](http://frankyan.com/labs/html5slider/) by [fryn](https://github.com/fryn), MIT license diff --git a/index.html b/index.html index 9214977..8d6d065 100644 --- a/index.html +++ b/index.html @@ -34,6 +34,6 @@ download bitmap file (.png)
- + diff --git a/scripts/lib/require.min.js b/scripts/lib/require.min.js new file mode 100644 index 0000000..c221717 --- /dev/null +++ b/scripts/lib/require.min.js @@ -0,0 +1,2 @@ +/* RequireJS 2.1.4 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. Available via the MIT or new BSD license. * see: http://github.com/jrburke/requirejs for details*/ +var requirejs,require,define;!function(global){function isFunction(a){return"[object Function]"===ostring.call(a)}function isArray(a){return"[object Array]"===ostring.call(a)}function each(a,b){if(a){var c;for(c=0;c-1&&(!a[c]||!b(a[c],c,a));c-=1);}}function hasProp(a,b){return hasOwn.call(a,b)}function getOwn(a,b){return hasProp(a,b)&&a[b]}function eachProp(a,b){var c;for(c in a)if(hasProp(a,c)&&b(a[c],c))break}function mixin(a,b,c,d){return b&&eachProp(b,function(b,e){(c||!hasProp(a,e))&&(d&&"string"!=typeof b?(a[e]||(a[e]={}),mixin(a[e],b,c,d)):a[e]=b)}),a}function bind(a,b){return function(){return b.apply(a,arguments)}}function scripts(){return document.getElementsByTagName("script")}function getGlobal(a){if(!a)return a;var b=global;return each(a.split("."),function(a){b=b[a]}),b}function makeError(a,b,c,d){var e=new Error(b+"\nhttp://requirejs.org/docs/errors.html#"+a);return e.requireType=a,e.requireModules=d,c&&(e.originalError=c),e}function newContext(a){function o(a){var b,c;for(b=0;a[b];b+=1)if(c=a[b],"."===c)a.splice(b,1),b-=1;else if(".."===c){if(1===b&&(".."===a[2]||".."===a[0]))break;b>0&&(a.splice(b-1,2),b-=2)}}function p(a,b,c){var d,e,f,h,i,j,k,l,m,n,p,q=b&&b.split("/"),r=q,s=g.map,t=s&&s["*"];if(a&&"."===a.charAt(0)&&(b?(r=getOwn(g.pkgs,b)?q=[b]:q.slice(0,q.length-1),a=r.concat(a.split("/")),o(a),e=getOwn(g.pkgs,d=a[0]),a=a.join("/"),e&&a===d+"/"+e.main&&(a=d)):0===a.indexOf("./")&&(a=a.substring(2))),c&&(q||t)&&s){for(h=a.split("/"),i=h.length;i>0;i-=1){if(k=h.slice(0,i).join("/"),q)for(j=q.length;j>0;j-=1)if(f=getOwn(s,q.slice(0,j).join("/")),f&&(f=getOwn(f,k))){l=f,m=i;break}if(l)break;!n&&t&&getOwn(t,k)&&(n=getOwn(t,k),p=i)}!l&&n&&(l=n,m=p),l&&(h.splice(0,m,l),a=h.join("/"))}return a}function q(a){isBrowser&&each(scripts(),function(b){return b.getAttribute("data-requiremodule")===a&&b.getAttribute("data-requirecontext")===d.contextName?(b.parentNode.removeChild(b),!0):void 0})}function r(a){var b=getOwn(g.paths,a);return b&&isArray(b)&&b.length>1?(q(a),b.shift(),d.require.undef(a),d.require([a]),!0):void 0}function s(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function t(a,b,c,e){var f,g,h,i,j=null,l=b?b.name:null,o=a,q=!0,r="";return a||(q=!1,a="_@r"+(m+=1)),i=s(a),j=i[0],a=i[1],j&&(j=p(j,l,e),g=getOwn(k,j)),a&&(j?r=g&&g.normalize?g.normalize(a,function(a){return p(a,l,e)}):p(a,l,e):(r=p(a,l,e),i=s(r),j=i[0],r=i[1],c=!0,f=d.nameToUrl(r))),h=!j||g||c?"":"_unnormalized"+(n+=1),{prefix:j,name:r,parentMap:b,unnormalized:!!h,url:f,originalName:o,isDefine:q,id:(j?j+"!"+r:r)+h}}function u(a){var b=a.id,c=getOwn(h,b);return c||(c=h[b]=new d.Module(a)),c}function v(a,b,c){var d=a.id,e=getOwn(h,d);!hasProp(k,d)||e&&!e.defineEmitComplete?u(a).on(b,c):"defined"===b&&c(k[d])}function w(a,b){var c=a.requireModules,d=!1;b?b(a):(each(c,function(b){var c=getOwn(h,b);c&&(c.error=a,c.events.error&&(d=!0,c.emit("error",a)))}),d||req.onError(a))}function x(){globalDefQueue.length&&(apsp.apply(j,[j.length-1,0].concat(globalDefQueue)),globalDefQueue=[])}function y(a){delete h[a]}function z(a,b,c){var d=a.map.id;a.error?a.emit("error",a.error):(b[d]=!0,each(a.depMaps,function(d,e){var f=d.id,g=getOwn(h,f);!g||a.depMatched[e]||c[f]||(getOwn(b,f)?(a.defineDep(e,k[f]),a.check()):z(g,b,c))}),c[d]=!0)}function A(){var a,c,e,i,j=1e3*g.waitSeconds,k=j&&d.startTime+j<(new Date).getTime(),l=[],m=[],n=!1,o=!0;if(!b){if(b=!0,eachProp(h,function(b){if(a=b.map,c=a.id,b.enabled&&(a.isDefine||m.push(b),!b.error))if(!b.inited&&k)r(c)?(i=!0,n=!0):(l.push(c),q(c));else if(!b.inited&&b.fetched&&a.isDefine&&(n=!0,!a.prefix))return o=!1}),k&&l.length)return e=makeError("timeout","Load timeout for modules: "+l,null,l),e.contextName=d.contextName,w(e);o&&each(m,function(a){z(a,{},{})}),k&&!i||!n||!isBrowser&&!isWebWorker||f||(f=setTimeout(function(){f=0,A()},50)),b=!1}}function B(a){hasProp(k,a[0])||u(t(a[0],null,!0)).init(a[1],a[2])}function C(a,b,c,d){a.detachEvent&&!isOpera?d&&a.detachEvent(d,b):a.removeEventListener(c,b,!1)}function D(a){var b=a.currentTarget||a.srcElement;return C(b,d.onScriptLoad,"load","onreadystatechange"),C(b,d.onScriptError,"error"),{node:b,id:b&&b.getAttribute("data-requiremodule")}}function E(){var a;for(x();j.length;){if(a=j.shift(),null===a[0])return w(makeError("mismatch","Mismatched anonymous define() module: "+a[a.length-1]));B(a)}}var b,c,d,e,f,g={waitSeconds:7,baseUrl:"./",paths:{},pkgs:{},shim:{},map:{},config:{}},h={},i={},j=[],k={},l={},m=1,n=1;return e={require:function(a){return a.require?a.require:a.require=d.makeRequire(a.map)},exports:function(a){return a.usingExports=!0,a.map.isDefine?a.exports?a.exports:a.exports=k[a.map.id]={}:void 0},module:function(a){return a.module?a.module:a.module={id:a.map.id,uri:a.map.url,config:function(){return g.config&&getOwn(g.config,a.map.id)||{}},exports:k[a.map.id]}}},c=function(a){this.events=getOwn(i,a.id)||{},this.map=a,this.shim=getOwn(g.shim,a.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},c.prototype={init:function(a,b,c,d){d=d||{},this.inited||(this.factory=b,c?this.on("error",c):this.events.error&&(c=bind(this,function(a){this.emit("error",a)})),this.depMaps=a&&a.slice(0),this.errback=c,this.inited=!0,this.ignore=d.ignore,d.enabled||this.enabled?this.enable():this.check())},defineDep:function(a,b){this.depMatched[a]||(this.depMatched[a]=!0,this.depCount-=1,this.depExports[a]=b)},fetch:function(){if(!this.fetched){this.fetched=!0,d.startTime=(new Date).getTime();var a=this.map;return this.shim?(d.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return a.prefix?this.callPlugin():this.load()})),void 0):a.prefix?this.callPlugin():this.load()}},load:function(){var a=this.map.url;l[a]||(l[a]=!0,d.load(this.map.id,a))},check:function(){if(this.enabled&&!this.enabling){var a,b,c=this.map.id,e=this.depExports,f=this.exports,g=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(g)){if(this.events.error)try{f=d.execCb(c,g,e,f)}catch(i){a=i}else f=d.execCb(c,g,e,f);if(this.map.isDefine&&(b=this.module,b&&void 0!==b.exports&&b.exports!==this.exports?f=b.exports:void 0===f&&this.usingExports&&(f=this.exports)),a)return a.requireMap=this.map,a.requireModules=[this.map.id],a.requireType="define",w(this.error=a)}else f=g;this.exports=f,this.map.isDefine&&!this.ignore&&(k[c]=f,req.onResourceLoad&&req.onResourceLoad(d,this.map,this.depMaps)),delete h[c],this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var a=this.map,b=a.id,c=t(a.prefix);this.depMaps.push(c),v(c,"defined",bind(this,function(c){var e,f,i,j=this.map.name,k=this.map.parentMap?this.map.parentMap.name:null,l=d.makeRequire(a.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(c.normalize&&(j=c.normalize(j,function(a){return p(a,k,!0)})||""),f=t(a.prefix+"!"+j,this.map.parentMap),v(f,"defined",bind(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),i=getOwn(h,f.id),i&&(this.depMaps.push(f),this.events.error&&i.on("error",bind(this,function(a){this.emit("error",a)})),i.enable()),void 0):(e=bind(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),e.error=bind(this,function(a){this.inited=!0,this.error=a,a.requireModules=[b],eachProp(h,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&y(a.map.id)}),w(a)}),e.fromText=bind(this,function(c,f){var h=a.name,i=t(h),j=useInteractive;f&&(c=f),j&&(useInteractive=!1),u(i),hasProp(g.config,b)&&(g.config[h]=g.config[b]);try{req.exec(c)}catch(k){return w(makeError("fromtexteval","fromText eval for "+b+" failed: "+k,k,[b]))}j&&(useInteractive=!0),this.depMaps.push(i),d.completeLoad(h),l([h],e)}),c.load(a.name,l,e,g),void 0)})),d.enable(c,this),this.pluginMaps[c.id]=c},enable:function(){this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(a,b){var c,f,g;if("string"==typeof a){if(a=t(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[b]=a,g=getOwn(e,a.id))return this.depExports[b]=g(this),void 0;this.depCount+=1,v(a,"defined",bind(this,function(a){this.defineDep(b,a),this.check()})),this.errback&&v(a,"error",this.errback)}c=a.id,f=h[c],hasProp(e,c)||!f||f.enabled||d.enable(a,this)})),eachProp(this.pluginMaps,bind(this,function(a){var b=getOwn(h,a.id);b&&!b.enabled&&d.enable(a,this)})),this.enabling=!1,this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]),c.push(b)},emit:function(a,b){each(this.events[a],function(a){a(b)}),"error"===a&&delete this.events[a]}},d={config:g,contextName:a,registry:h,defined:k,urlFetched:l,defQueue:j,Module:c,makeModuleMap:t,nextTick:req.nextTick,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=g.pkgs,c=g.shim,e={paths:!0,config:!0,map:!0};eachProp(a,function(a,b){e[b]?"map"===b?mixin(g[b],a,!0,!0):mixin(g[b],a,!0):g[b]=a}),a.shim&&(eachProp(a.shim,function(a,b){isArray(a)&&(a={deps:a}),!a.exports&&!a.init||a.exportsFn||(a.exportsFn=d.makeShimExports(a)),c[b]=a}),g.shim=c),a.packages&&(each(a.packages,function(a){var c;a="string"==typeof a?{name:a}:a,c=a.location,b[a.name]={name:a.name,location:c||a.name,main:(a.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}}),g.pkgs=b),eachProp(h,function(a,b){a.inited||a.map.unnormalized||(a.map=t(b))}),(a.deps||a.callback)&&d.require(a.deps||[],a.callback)},makeShimExports:function(a){function b(){var b;return a.init&&(b=a.init.apply(global,arguments)),b||a.exports&&getGlobal(a.exports)}return b},makeRequire:function(b,c){function f(g,i,j){var l,m,n;return c.enableBuildCallback&&i&&isFunction(i)&&(i.__requireJsBuild=!0),"string"==typeof g?isFunction(i)?w(makeError("requireargs","Invalid require call"),j):b&&hasProp(e,g)?e[g](h[b.id]):req.get?req.get(d,g,b):(m=t(g,b,!1,!0),l=m.id,hasProp(k,l)?k[l]:w(makeError("notloaded",'Module name "'+l+'" has not been loaded yet for context: '+a+(b?"":". Use require([])")))):(E(),d.nextTick(function(){E(),n=u(t(null,b)),n.skipMap=c.skipMap,n.init(g,i,j,{enabled:!0}),A()}),f)}return c=c||{},mixin(f,{isBrowser:isBrowser,toUrl:function(a){var c,e,f=a.lastIndexOf("."),g=a.split("/")[0],h="."===g||".."===g;return-1!==f&&(!h||f>1)&&(c=a.substring(f,a.length),a=a.substring(0,f)),e=d.nameToUrl(p(a,b&&b.id,!0),c||".fake"),c?e:e.substring(0,e.length-5)},defined:function(a){return hasProp(k,t(a,b,!1,!0).id)},specified:function(a){return a=t(a,b,!1,!0).id,hasProp(k,a)||hasProp(h,a)}}),b||(f.undef=function(a){x();var c=t(a,b,!0),d=getOwn(h,a);delete k[a],delete l[c.url],delete i[a],d&&(d.events.defined&&(i[a]=d.events),y(a))}),f},enable:function(a){var b=getOwn(h,a.id);b&&u(a).enable()},completeLoad:function(a){var b,c,d,e=getOwn(g.shim,a)||{},f=e.exports;for(x();j.length;){if(c=j.shift(),null===c[0]){if(c[0]=a,b)break;b=!0}else c[0]===a&&(b=!0);B(c)}if(d=getOwn(h,a),!b&&!hasProp(k,a)&&d&&!d.inited){if(!(!g.enforceDefine||f&&getGlobal(f)))return r(a)?void 0:w(makeError("nodefine","No define call for "+a,null,[a]));B([a,e.deps||[],e.exportsFn])}A()},nameToUrl:function(a,b){var c,d,e,f,h,i,j,k,l;if(req.jsExtRegExp.test(a))k=a+(b||"");else{for(c=g.paths,d=g.pkgs,h=a.split("/"),i=h.length;i>0;i-=1){if(j=h.slice(0,i).join("/"),e=getOwn(d,j),l=getOwn(c,j)){isArray(l)&&(l=l[0]),h.splice(0,i,l);break}if(e){f=a===e.name?e.location+"/"+e.main:e.location,h.splice(0,i,f);break}}k=h.join("/"),k+=b||(/\?/.test(k)?"":".js"),k=("/"===k.charAt(0)||k.match(/^[\w\+\.\-]+:/)?"":g.baseUrl)+k}return g.urlArgs?k+((-1===k.indexOf("?")?"?":"&")+g.urlArgs):k},load:function(a,b){req.load(d,a,b)},execCb:function(a,b,c,d){return b.apply(d,c)},onScriptLoad:function(a){if("load"===a.type||readyRegExp.test((a.currentTarget||a.srcElement).readyState)){interactiveScript=null;var b=D(a);d.completeLoad(b.id)}},onScriptError:function(a){var b=D(a);return r(b.id)?void 0:w(makeError("scripterror","Script error",a,[b.id]))}},d.require=d.makeRequire(),d}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(a){return"interactive"===a.readyState?interactiveScript=a:void 0}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.1.4",commentRegExp=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,ap=Array.prototype,apsp=ap.splice,isBrowser=!("undefined"==typeof window||!navigator||!document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if("undefined"==typeof define){if("undefined"!=typeof requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}"undefined"==typeof require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(a,b,c,d){var e,f,g=defContextName;return isArray(a)||"string"==typeof a||(f=a,isArray(b)?(a=b,b=c,c=d):a=[]),f&&f.context&&(g=f.context),e=getOwn(contexts,g),e||(e=contexts[g]=req.s.newContext(g)),f&&e.configure(f),e.require(a,b,c)},req.config=function(a){return req(a)},req.nextTick="undefined"!=typeof setTimeout?function(a){setTimeout(a,4)}:function(a){a()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(a){req[a]=function(){var b=contexts[defContextName];return b.require[a].apply(b,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=function(a){throw a},req.load=function(a,b,c){var e,d=a&&a.config||{};return isBrowser?(e=d.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script"),e.type=d.scriptType||"text/javascript",e.charset="utf-8",e.async=!0,e.setAttribute("data-requirecontext",a.contextName),e.setAttribute("data-requiremodule",b),!e.attachEvent||e.attachEvent.toString&&e.attachEvent.toString().indexOf("[native code")<0||isOpera?(e.addEventListener("load",a.onScriptLoad,!1),e.addEventListener("error",a.onScriptError,!1)):(useInteractive=!0,e.attachEvent("onreadystatechange",a.onScriptLoad)),e.src=c,currentlyAddingScript=e,baseElement?head.insertBefore(e,baseElement):head.appendChild(e),currentlyAddingScript=null,e):(isWebWorker&&(importScripts(c),a.completeLoad(b)),void 0)},isBrowser&&eachReverse(scripts(),function(a){return head||(head=a.parentNode),dataMain=a.getAttribute("data-main"),dataMain?(cfg.baseUrl||(src=dataMain.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath,dataMain=mainScript),dataMain=dataMain.replace(jsSuffixRegExp,""),cfg.deps=cfg.deps?cfg.deps.concat(dataMain):[dataMain],!0):void 0}),define=function(a,b,c){var d,e;"string"!=typeof a&&(c=b,b=a,a=null),isArray(b)||(c=b,b=[]),!b.length&&isFunction(c)&&c.length&&(c.toString().replace(commentRegExp,"").replace(cjsRequireRegExp,function(a,c){b.push(c)}),b=(1===c.length?["require"]:["require","exports","module"]).concat(b)),useInteractive&&(d=currentlyAddingScript||getInteractiveScript(),d&&(a||(a=d.getAttribute("data-requiremodule")),e=contexts[d.getAttribute("data-requirecontext")])),(e?e.defQueue:globalDefQueue).push([a,b,c])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this); \ No newline at end of file diff --git a/scripts/src/main.js b/scripts/main.js similarity index 100% rename from scripts/src/main.js rename to scripts/main.js From 252ebb0eece35d67e54fca34d071b79595a74831 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Thu, 12 Sep 2013 20:21:37 +0200 Subject: [PATCH 11/67] add timeout when loading second image for firefox responsiveness --- scripts/src/image.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/src/image.js b/scripts/src/image.js index dfb7419..563cb3e 100644 --- a/scripts/src/image.js +++ b/scripts/src/image.js @@ -36,7 +36,7 @@ define( image.naturalWidth !== 0 ) { - signals['image-loaded'].dispatch( image ); + setTimeout( imageLoaded, 10 ); } } From 452f82bdcc1c3d1f626b5205b48ab18f69ffdbe7 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Thu, 12 Sep 2013 20:24:09 +0200 Subject: [PATCH 12/67] add button for image import --- index.html | 2 + scripts/main.js | 3 ++ scripts/src/import-button.js | 65 ++++++++++++++++++++++++++++++++ scripts/util/trigger-event.js | 71 +++++++++++++++++++++++++++++++++++ styles/global.css | 5 +++ 5 files changed, 146 insertions(+) create mode 100644 scripts/src/import-button.js create mode 100644 scripts/util/trigger-event.js diff --git a/index.html b/index.html index 8d6d065..4678135 100644 --- a/index.html +++ b/index.html @@ -30,6 +30,8 @@
+ + download bitmap file (.png)
diff --git a/scripts/main.js b/scripts/main.js index 129f0af..1ac5d14 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -20,6 +20,7 @@ require( 'src/controls', 'src/export-png', 'src/save-button', + 'src/import-button', 'util/feature-test', 'lib/signals-1.0.0', 'lib/html5slider' @@ -31,6 +32,7 @@ require( controls, png, save_button, + import_button, testFeatures, Signal ) @@ -55,6 +57,7 @@ require( controls.init( shared ); png.init( shared ); save_button.init( shared ); + import_button.init( shared ); image.init( shared ); } diff --git a/scripts/src/import-button.js b/scripts/src/import-button.js new file mode 100644 index 0000000..15f4baf --- /dev/null +++ b/scripts/src/import-button.js @@ -0,0 +1,65 @@ +/*global define*/ +define( + [ 'util/trigger-event' ], + function( triggerEvent ) + { + var feature; + var signals; + var import_button; + var import_input; + var file_reader; + var image; + var file_loading = false; + var allowed_file_types = [ 'image/png', 'image/jpg', 'image/jpeg' ]; + + function init( shared ) + { + signals = shared.signals; + feature = shared.feature; + + // http://www.html5rocks.com/en/tutorials/file/dndfiles/ + if ( feature['file-api' ] ) + { + file_reader = new FileReader(); + + import_button = document.getElementById( 'import-button' ); + import_input = document.getElementById( 'import-input' ); + + file_reader.addEventListener( 'load', fileLoaded, false ); + import_button.addEventListener( 'click', buttonClicked, false ); + import_input.addEventListener( 'change', fileSelected, false ); + } + } + + function buttonClicked( event ) + { + event.preventDefault(); + + if ( ! file_loading ) + { + triggerEvent( import_input, 'click' ); + } + } + + function fileSelected( event ) + { + var files = event.target.files; + + if ( + files[0] && + files[0].type && + allowed_file_types.indexOf( files[0].type ) !== -1 + ) + { + file_reader.readAsDataURL( files[0] ); + } + } + + function fileLoaded( event ) + { + signals['set-new-src'].dispatch( event.target.result ); + } + + return { init: init }; + } +); \ No newline at end of file diff --git a/scripts/util/trigger-event.js b/scripts/util/trigger-event.js new file mode 100644 index 0000000..04dadd1 --- /dev/null +++ b/scripts/util/trigger-event.js @@ -0,0 +1,71 @@ +/*global define*/ +define( + function() + { + // http://stackoverflow.com/a/2381862/229189 + function triggerEvent( node, event_name ) + { + var doc; + + if ( node.ownerDocument ) + { + doc = node.ownerDocument; + } + + else if ( node.nodeType === 9 ) + { + doc = node; + } + + else + { + throw new Error('Invalid node passed to fireEvent: ' + node.id); + } + + if ( node.fireEvent ) + { + // IE-style + var event = doc.createEventObject(); + + event.synthetic = true; + + node.fireEvent( 'on' + event_name, event ); + } + + else if ( node.dispatchEvent ) + { + var event_class = ''; + + switch ( event_name ) + { + case 'click': + case 'mousedown': + case 'mouseup': + event_class = 'MouseEvents'; + break; + + case 'focus': + case 'change': + case 'blur': + case 'select': + event_class = 'HTMLEvents'; + break; + + default: + throw 'triggerEvent: Couldn’t find an event class for event ' + event_name + '.'; + break; + } + + var event = doc.createEvent( event_class ); + var bubbles = event_name == 'change' ? false : true; + + event.initEvent( event_name, bubbles, true ); + + event.synthetic = true; + node.dispatchEvent( event ); + } + } + + return triggerEvent; + } +); \ No newline at end of file diff --git a/styles/global.css b/styles/global.css index fdb3ed1..d6970a2 100644 --- a/styles/global.css +++ b/styles/global.css @@ -89,6 +89,11 @@ a:hover width: 100px; } +#import-input +{ + display: none; +} + #canvas { clear: both; From f4aa6dc224e8cbbaaeecaa03d2a91986e81369b1 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 20:50:27 +0200 Subject: [PATCH 13/67] show exact slider values for better fine tuning --- index.html | 8 ++++---- scripts/src/controls.js | 8 ++++++++ styles/global.css | 8 ++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 4678135..eb95090 100644 --- a/index.html +++ b/index.html @@ -13,19 +13,19 @@
- +
- +
- +
- +
diff --git a/scripts/src/controls.js b/scripts/src/controls.js index cb8c3e0..2237f1c 100644 --- a/scripts/src/controls.js +++ b/scripts/src/controls.js @@ -23,6 +23,7 @@ define( control.addEventListener( 'change', controlUpdated, false ); updateValue( control.id, control.value ); + updateValueInUI( control.id, control.value ); } is_initialized = true; @@ -36,6 +37,7 @@ define( var target = event.target; updateValue( target.id, target.value ); + updateValueInUI( target.id, target.value ); } function updateValue( key, value ) @@ -48,6 +50,12 @@ define( } } + function updateValueInUI( key, value ) + { + var el = document.querySelectorAll( 'label[for="' + key + '"] .control-slider-value' )[0]; + el.innerHTML = value; + } + return { init: init }; } ); \ No newline at end of file diff --git a/styles/global.css b/styles/global.css index d6970a2..3bca8c3 100644 --- a/styles/global.css +++ b/styles/global.css @@ -83,12 +83,20 @@ a:hover color: #666; } + .control-slider-value + { + display: inline-block; + color: #333; + float: right; + } + .control-input { display: block; width: 100px; } + #import-input { display: none; From 3f3694a8e4059e0c19caf2688739413f0e72874f Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 20:59:10 +0200 Subject: [PATCH 14/67] minify example image --- lincoln.jpg | Bin 192308 -> 160339 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lincoln.jpg b/lincoln.jpg index 20d46a47d7a0a43350490e1516098ab781b17fc4..cc37d1e64c2030aaf84718be584652212c8fe0c2 100644 GIT binary patch literal 160339 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⪙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
5oz^%p#bIsc}8_odH}O+^-OSI@vl(y0f|- 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 Uic&IBLctDoX+#wnkIdnsAv3bf7$>W@yN(!UZ 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 literal 192308 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
4=?$W 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≶xA3I&OjZ&48olL@)ZF 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 Date: Fri, 20 Sep 2013 21:38:17 +0200 Subject: [PATCH 15/67] add random button --- index.html | 1 + scripts/main.js | 4 +++ scripts/src/controls.js | 27 ++++++++++++--- scripts/src/random-button.js | 67 ++++++++++++++++++++++++++++++++++++ styles/global.css | 11 ++++++ 5 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 scripts/src/random-button.js diff --git a/index.html b/index.html index eb95090..c024148 100644 --- a/index.html +++ b/index.html @@ -28,6 +28,7 @@
+
diff --git a/scripts/main.js b/scripts/main.js index 1ac5d14..906cee6 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -21,6 +21,7 @@ require( 'src/export-png', 'src/save-button', 'src/import-button', + 'src/random-button', 'util/feature-test', 'lib/signals-1.0.0', 'lib/html5slider' @@ -33,6 +34,7 @@ require( png, save_button, import_button, + random_button, testFeatures, Signal ) @@ -46,6 +48,7 @@ require( signals: { 'image-loaded' : new Signal(), 'set-new-src' : new Signal(), + 'control-set' : new Signal(), 'control-updated' : new Signal(), 'export-png' : new Signal(), 'saved' : new Signal() @@ -58,6 +61,7 @@ require( png.init( shared ); save_button.init( shared ); import_button.init( shared ); + random_button.init( shared ); image.init( shared ); } diff --git a/scripts/src/controls.js b/scripts/src/controls.js index 2237f1c..33ab075 100644 --- a/scripts/src/controls.js +++ b/scripts/src/controls.js @@ -28,16 +28,35 @@ define( is_initialized = true; + signals['control-set'].add( setControlValues ); signals['control-updated'].dispatch( values ); } } - function controlUpdated( event ) + function controlUpdated( element ) { - var target = event.target; + if ( element.target ) + { + element = element.target; + } - updateValue( target.id, target.value ); - updateValueInUI( target.id, target.value ); + updateValue( element.id, element.value ); + updateValueInUI( element.id, element.value ); + } + + function setControlValues( new_values ) + { + var control; + + for ( var id in new_values ) + { + control = document.getElementById( id ); + control.value = new_values[id]; + controlUpdated( control ); + } + + values = new_values; + signals['control-updated'].dispatch( values ); } function updateValue( key, value ) diff --git a/scripts/src/random-button.js b/scripts/src/random-button.js new file mode 100644 index 0000000..4d3bb5e --- /dev/null +++ b/scripts/src/random-button.js @@ -0,0 +1,67 @@ +/*global define*/ +define( + function() + { + var signals; + var controls; + var random_button; + var constraints = { }; + + function init( shared ) + { + signals = shared.signals; + + if ( shared.feature['query-selector-all'] ) + { + controls = document.querySelectorAll( '.control-input' ); + constraints = getConstraints( controls ); + random_button = document.getElementById( 'random-button' ); + + random_button.addEventListener( 'click', buttonClicked, false ); + random_button.classList.remove( 'is-hidden' ); + } + + } + + function buttonClicked( event ) + { + event.preventDefault(); + randomize(); + } + + function randomize() + { + var new_values = { }; + var constraint; + + for ( var id in constraints ) + { + constraint = constraints[id]; + new_values[id] = getRandomInt( constraint.min, constraint.max ); + } + + signals['control-set'].dispatch( new_values ); + } + + function getConstraints( controls ) + { + var result = { }; + var control; + + for ( var i = 0, len = controls.length; i < len; i++ ) + { + control = controls[i]; + result[control.id] = { min: parseInt( control.min, 10 ), max: parseInt( control.max, 10 ) }; + } + + return result; + } + + function getRandomInt( min, max ) + { + return Math.floor( Math.random() * ( max - min + 1 ) ) + min; + } + + return { init: init }; + } +); \ No newline at end of file diff --git a/styles/global.css b/styles/global.css index 3bca8c3..26d1ab6 100644 --- a/styles/global.css +++ b/styles/global.css @@ -24,6 +24,11 @@ a:hover text-decoration: underline; } +.is-hidden +{ + display: none; +} + .button { background-color: #eaeaea; @@ -45,6 +50,12 @@ a:hover color: #fff; } +#random-button +{ + position: relative; + top: 3px; +} + .headline { font-size: 12px; From 417a09a9678d06d364607ffca593dd3248d84e22 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 21:52:42 +0200 Subject: [PATCH 16/67] update gitignore --- .gitignore | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5fdf453..42e2c62 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,10 @@ Desktop.ini $RECYCLE.BIN/ # SublimeText project files -*.sublime-workspace \ No newline at end of file +*.sublime-workspace + +# build script dependencies +node_modules/ + +# production folder +production/ \ No newline at end of file From 52bf7e10b3a07bbdcf0ec094cefdefeb63852499 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 21:53:29 +0200 Subject: [PATCH 17/67] add almond js library --- scripts/lib/almond-0.2.6.js | 410 ++++++++++++++++++++++++++++++++++++ 1 file changed, 410 insertions(+) create mode 100644 scripts/lib/almond-0.2.6.js diff --git a/scripts/lib/almond-0.2.6.js b/scripts/lib/almond-0.2.6.js new file mode 100644 index 0000000..807815c --- /dev/null +++ b/scripts/lib/almond-0.2.6.js @@ -0,0 +1,410 @@ +/** + * almond 0.2.6 Copyright (c) 2011-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/almond for details + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*jslint sloppy: true */ +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, + foundI, foundStarMap, starI, i, j, part, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name && name.charAt(0) === ".") { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + //Convert baseName to array, and lop off the last part, + //so that . matches that "directory" and not name of the baseName's + //module. For instance, baseName of "one/two/three", maps to + //"one/two/three.js", but we want the directory, "one/two" for + //this normalization. + baseParts = baseParts.slice(0, baseParts.length - 1); + + name = baseParts.concat(name.split("/")); + + //start trimDots + for (i = 0; i < name.length; i += 1) { + part = name[i]; + if (part === ".") { + name.splice(i, 1); + i -= 1; + } else if (part === "..") { + if (i === 1 && (name[2] === '..' || name[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join("/"); + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relName) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relName)); + } else { + name = normalize(name, relName); + } + } else { + name = normalize(name, relName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, + args = [], + usingExports; + + //Use name if no relName + relName = relName || name; + + //Call the callback to define the module, if necessary. + if (typeof callback === 'function') { + + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relName); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback.apply(defined[name], args); + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, callback).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + config = cfg; + if (config.deps) { + req(config.deps, config.callback); + } + return req; + }; + + /** + * Expose module registry for debugging and tooling + */ + requirejs._defined = defined; + + define = function (name, deps, callback) { + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); From 197e96cfe6dba046ed4c39c4b511e0ba87622d4f Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 22:09:48 +0200 Subject: [PATCH 18/67] update readme with build script instructions and almondjs license information --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ec604b7..8a8b8b8 100644 --- a/README.md +++ b/README.md @@ -9,19 +9,19 @@ this is an experiment for the web browser. it corrupts jpg images so that they a this experiment is very much based on the [smack my glitch up js](https://github.com/Hugosslade/smackmyglitchupjs) script. -minification / build +build script --- -the [requirejs optimizer](http://requirejs.org/docs/optimization.html) is used to minify both javascript and css files. -to minify javascript, run ```r.js -o name=main out=main.min.js``` in the terminal from the ```scripts``` folder. +the build script takes care of concatenating and minifying all scripts and styles. it uses [gruntjs](http://gruntjs.com/). -to minify css, run ```r.js -o cssIn=global.css out=global.min.css optimizeCss=default``` from the ```styles``` folder. +please make sure that both [nodejs](http://nodejs.org/) and grunt-cli are [set up properly](http://gruntjs.com/getting-started) on your machine. to build, run ```grunt production``` from within the ```build/``` folder. the optimized files will get copied to the ```production/``` folder. third party code used in this experiment --- * [html5slider](http://frankyan.com/labs/html5slider/) by [fryn](https://github.com/fryn), MIT license * [js signals](http://millermedeiros.github.io/js-signals/) by [millermedeiros](https://github.com/millermedeiros), MIT license * [require js](http://requirejs.org/), by [jrburke](jrburke), BSD & MIT license +* [require js](https://github.com/jrburke/almond), by [jrburke](jrburke), BSD & MIT license * [raf js](https://gist.github.com/paulirish/1579671), by [paulirish](https://github.com/paulirish), MIT license license From a42e851d499b87f959ef2406f502f25fe328b84c Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 22:11:29 +0200 Subject: [PATCH 19/67] rename global.css => main.css --- index.html | 2 +- styles/{global.css => main.css} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename styles/{global.css => main.css} (100%) diff --git a/index.html b/index.html index c024148..5bcdbc4 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ image glitch experiment - +
diff --git a/styles/global.css b/styles/main.css similarity index 100% rename from styles/global.css rename to styles/main.css From 2a112be4c3b81c586fc1305da09a52782afd7d2b Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 22:12:10 +0200 Subject: [PATCH 20/67] add build script --- build/Gruntfile.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++ build/package.json | 11 +++++++ 2 files changed, 85 insertions(+) create mode 100644 build/Gruntfile.js create mode 100644 build/package.json diff --git a/build/Gruntfile.js b/build/Gruntfile.js new file mode 100644 index 0000000..97bccc8 --- /dev/null +++ b/build/Gruntfile.js @@ -0,0 +1,74 @@ +// http://gruntjs.com/configuring-tasks +module.exports = function( grunt ) +{ + var grunt_configuration = { + pkg: grunt.file.readJSON( 'package.json' ), + requirejs: { + index: { + options: { + name: 'lib/almond-0.2.6', + include: 'main', + baseUrl: '../scripts/', + mainConfigFile: '../scripts/main.js', + out: '../production/scripts/main.min.js', + wrap: true + } + } + }, + cssmin: { + inline_import: { + files: { + '../production/styles/main.min.css': [ '../styles/main.css' ] + } + } + }, + copy: { + copy_html: { + options: { processContent: updateHTML }, + files: [ + { src: [ '../index.html' ], dest: '../production/index.html' } + ] + } + }, + imagemin: { + jpg: { + options: { progressive: true }, + files: [ + { + expand: true, + cwd: '../', + src: [ '**/*.jpg', '!**/production/**', '!**/node_modules/**' ], + dest: '../production/', + ext: '.jpg' + } + ] + } + } + }; + + function updateHTML( content, path ) + { + if ( path === '../index.html' ) + { + content = content + .replace( 'href="styles/main.css"', 'href="styles/main.min.css"' ) + .replace( 'src="scripts/lib/require-2.1.4.js"', 'src="scripts/main.min.js"' ) + .replace( ' data-main="scripts/main"', '' ); + } + + return content; + } + + grunt.initConfig( grunt_configuration ); + grunt.loadNpmTasks( 'grunt-contrib-requirejs' ); + grunt.loadNpmTasks( 'grunt-contrib-cssmin' ); + grunt.loadNpmTasks( 'grunt-contrib-copy' ); + grunt.loadNpmTasks( 'grunt-contrib-imagemin' ); + + grunt.registerTask( 'default', [ 'requirejs', 'cssmin', 'copy', 'imagemin' ] ); + grunt.registerTask( 'production', [ 'requirejs', 'cssmin', 'copy', 'imagemin' ] ); + grunt.registerTask( 'js', [ 'requirejs' ] ); + grunt.registerTask( 'css', [ 'cssmin' ] ); + grunt.registerTask( 'cp', [ 'copy' ] ); + grunt.registerTask( 'img', [ 'imagemin' ] ); +}; \ No newline at end of file diff --git a/build/package.json b/build/package.json new file mode 100644 index 0000000..4d5c530 --- /dev/null +++ b/build/package.json @@ -0,0 +1,11 @@ +{ + "name": "jpg-glitch-build", + "version": "0.0.1", + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-requirejs": "~0.4.1", + "grunt-contrib-cssmin": "~0.6.1", + "grunt-contrib-copy": "~0.4.1", + "grunt-contrib-imagemin": "~0.3.0" + } +} From fbe540d0c4ec4afedd05d0334d9f5e8604eadcd2 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 22:14:03 +0200 Subject: [PATCH 21/67] add note about build script dependencies --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a8b8b8..51e1905 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,11 @@ build script the build script takes care of concatenating and minifying all scripts and styles. it uses [gruntjs](http://gruntjs.com/). -please make sure that both [nodejs](http://nodejs.org/) and grunt-cli are [set up properly](http://gruntjs.com/getting-started) on your machine. to build, run ```grunt production``` from within the ```build/``` folder. the optimized files will get copied to the ```production/``` folder. +please make sure that both [nodejs](http://nodejs.org/) and grunt-cli are [set up properly](http://gruntjs.com/getting-started) on your machine. + +run ```npm install``` from within the ```build/``` folder to install the dependencies of the build script. + +to build, run ```grunt production``` from within the ```build/``` folder. the optimized files will get copied to the ```production/``` folder. third party code used in this experiment --- From bb92c1dd025b6272d6561bc26625cfc02377ccb6 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 20 Sep 2013 22:22:56 +0200 Subject: [PATCH 22/67] fix link text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 51e1905..a8011cd 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ third party code used in this experiment * [html5slider](http://frankyan.com/labs/html5slider/) by [fryn](https://github.com/fryn), MIT license * [js signals](http://millermedeiros.github.io/js-signals/) by [millermedeiros](https://github.com/millermedeiros), MIT license * [require js](http://requirejs.org/), by [jrburke](jrburke), BSD & MIT license -* [require js](https://github.com/jrburke/almond), by [jrburke](jrburke), BSD & MIT license +* [almond js](https://github.com/jrburke/almond), by [jrburke](jrburke), BSD & MIT license * [raf js](https://gist.github.com/paulirish/1579671), by [paulirish](https://github.com/paulirish), MIT license license From bf4125478be1d5abdb9e9674b92542caf820f321 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Thu, 26 Sep 2013 20:25:46 +0200 Subject: [PATCH 23/67] update markup of controls: add second input field for better control of values --- index.html | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/index.html b/index.html index 5bcdbc4..029854b 100644 --- a/index.html +++ b/index.html @@ -6,27 +6,31 @@ -
+
- - + + +
- - + + +
- - + + +
- - + + +
From 646f917277afa668520d63176e1bd979bbb63ccf Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Thu, 26 Sep 2013 20:26:30 +0200 Subject: [PATCH 24/67] update style of sliders; add styles for new input fields --- styles/main.css | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/styles/main.css b/styles/main.css index 26d1ab6..d71da37 100644 --- a/styles/main.css +++ b/styles/main.css @@ -63,8 +63,7 @@ a:hover margin-bottom: 10px; } -.content, -.missing-feature +.intro { max-width: 650px; } @@ -84,7 +83,7 @@ a:hover .control-wrapper { float: left; - width: 100px; + width: 200px; margin-right: 20px; } @@ -94,19 +93,29 @@ a:hover color: #666; } - .control-slider-value - { - display: inline-block; - color: #333; - float: right; - } - - .control-input + .control-slider { display: block; - width: 100px; + float: left; + border: none; + width: 160px; + height: 1px; + margin-top: 6px; + background: #ddd; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } + .control-number + { + display: block; + color: #333; + float: right; + border: none; + max-width: 30px; + font-family: sans-serif; + } #import-input { From a10b5d8ffeb63fedc173b95a099d60cf9c1aad61 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Thu, 26 Sep 2013 20:32:11 +0200 Subject: [PATCH 25/67] remove html5slider polyfill this polyfill is no longer needed since firefox 23 added support for input sliders: https://bugzilla.mozilla.org/show_bug.cgi?id=344618#c56 (and i don't really care much for older firefox versions) thanks @fryn for a great piece of code! --- scripts/lib/html5slider.js | 285 ------------------------------------- scripts/main.js | 3 +- 2 files changed, 1 insertion(+), 287 deletions(-) delete mode 100644 scripts/lib/html5slider.js diff --git a/scripts/lib/html5slider.js b/scripts/lib/html5slider.js deleted file mode 100644 index ec96c69..0000000 --- a/scripts/lib/html5slider.js +++ /dev/null @@ -1,285 +0,0 @@ -/* -html5slider - a JS implementation of for Firefox 16 and up -https://github.com/fryn/html5slider - -Copyright (c) 2010-2013 Frank Yan, - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -(function() { - -// test for native support -var test = document.createElement('input'); -try { - test.type = 'range'; - if (test.type == 'range') - return; -} catch (e) { - return; -} - -// test for required property support -test.style.background = 'linear-gradient(red, red)'; -if (!test.style.backgroundImage || !('MozAppearance' in test.style) || - !document.mozSetImageElement || !this.MutationObserver) - return; - -var scale; -var isMac = navigator.platform == 'MacIntel'; -var thumb = { - radius: isMac ? 9 : 6, - width: isMac ? 22 : 12, - height: isMac ? 16 : 20 -}; -var track = 'linear-gradient(transparent ' + (isMac ? - '6px, #999 6px, #999 7px, #ccc 8px, #bbb 9px, #bbb 10px, transparent 10px' : - '9px, #999 9px, #bbb 10px, #fff 11px, transparent 11px') + - ', transparent)'; -var styles = { - 'min-width': thumb.width + 'px', - 'min-height': thumb.height + 'px', - 'max-height': thumb.height + 'px', - padding: '0 0 ' + (isMac ? '2px' : '1px'), - border: 0, - 'border-radius': 0, - cursor: 'default', - 'text-indent': '-999999px' // -moz-user-select: none; breaks mouse capture -}; -var options = { - attributes: true, - attributeFilter: ['min', 'max', 'step', 'value'] -}; -var forEach = Array.prototype.forEach; -var onInput = document.createEvent('HTMLEvents'); -onInput.initEvent('input', true, false); -var onChange = document.createEvent('HTMLEvents'); -onChange.initEvent('change', true, false); - -if (document.readyState == 'loading') - document.addEventListener('DOMContentLoaded', initialize, true); -else - initialize(); - -function initialize() { - // create initial sliders - forEach.call(document.querySelectorAll('input[type=range]'), transform); - // create sliders on-the-fly - new MutationObserver(function(mutations) { - mutations.forEach(function(mutation) { - if (mutation.addedNodes) - forEach.call(mutation.addedNodes, function(node) { - check(node); - if (node.childElementCount) - forEach.call(node.querySelectorAll('input'), check); - }); - }); - }).observe(document, { childList: true, subtree: true }); -} - -function check(input) { - if (input.localName == 'input' && input.type != 'range' && - input.getAttribute('type') == 'range') - transform(input); -} - -function transform(slider) { - - var isValueSet, areAttrsSet, isChanged, isClick, prevValue, rawValue, prevX; - var min, max, step, range, value = slider.value; - - // lazily create shared slider affordance - if (!scale) { - scale = document.body.appendChild(document.createElement('hr')); - style(scale, { - '-moz-appearance': isMac ? 'scale-horizontal' : 'scalethumb-horizontal', - display: 'block', - visibility: 'visible', - opacity: 1, - position: 'fixed', - top: '-999999px' - }); - document.mozSetImageElement('__sliderthumb__', scale); - } - - // reimplement value and type properties - var getValue = function() { return '' + value; }; - var setValue = function setValue(val) { - value = '' + val; - isValueSet = true; - draw(); - delete slider.value; - slider.value = value; - Object.defineProperty(slider, 'value', { - get: getValue, - set: setValue - }); - }; - Object.defineProperty(slider, 'value', { - get: getValue, - set: setValue - }); - Object.defineProperty(slider, 'type', { - get: function() { return 'range'; } - }); - - // sync properties with attributes - ['min', 'max', 'step'].forEach(function(prop) { - if (slider.hasAttribute(prop)) - areAttrsSet = true; - Object.defineProperty(slider, prop, { - get: function() { return this.hasAttribute(prop) ? this.getAttribute(prop) : ''; }, - set: function(val) { val === null ? this.removeAttribute(prop) : this.setAttribute(prop, val); } - }); - }); - - // initialize slider - slider.readOnly = true; - style(slider, styles); - update(); - - new MutationObserver(function(mutations) { - mutations.forEach(function(mutation) { - if (mutation.attributeName != 'value') { - update(); - areAttrsSet = true; - } - // note that value attribute only sets initial value - else if (!isValueSet) { - value = slider.getAttribute('value'); - draw(); - } - }); - }).observe(slider, options); - - slider.addEventListener('mousedown', onDragStart, true); - slider.addEventListener('keydown', onKeyDown, true); - slider.addEventListener('focus', onFocus, true); - slider.addEventListener('blur', onBlur, true); - - function onDragStart(e) { - isClick = true; - setTimeout(function() { isClick = false; }, 0); - if (e.button || !range) - return; - var width = parseFloat(getComputedStyle(this, 0).width); - var multiplier = (width - thumb.width) / range; - if (!multiplier) - return; - // distance between click and center of thumb - var dev = e.clientX - this.getBoundingClientRect().left - thumb.width / 2 - - (value - min) * multiplier; - // if click was not on thumb, move thumb to click location - if (Math.abs(dev) > thumb.radius) { - isChanged = true; - this.value -= -dev / multiplier; - } - rawValue = value; - prevX = e.clientX; - this.addEventListener('mousemove', onDrag, true); - this.addEventListener('mouseup', onDragEnd, true); - } - - function onDrag(e) { - var width = parseFloat(getComputedStyle(this, 0).width); - var multiplier = (width - thumb.width) / range; - if (!multiplier) - return; - rawValue += (e.clientX - prevX) / multiplier; - prevX = e.clientX; - isChanged = true; - this.value = rawValue; - } - - function onDragEnd() { - this.removeEventListener('mousemove', onDrag, true); - this.removeEventListener('mouseup', onDragEnd, true); - slider.dispatchEvent(onChange); - } - - function onKeyDown(e) { - if (e.keyCode > 36 && e.keyCode < 41) { // 37-40: left, up, right, down - onFocus.call(this); - isChanged = true; - this.value = value + (e.keyCode == 38 || e.keyCode == 39 ? step : -step); - } - } - - function onFocus() { - if (!isClick) - this.style.boxShadow = !isMac ? '0 0 0 2px #fb0' : - 'inset 0 0 20px rgba(0,127,255,.1), 0 0 1px rgba(0,127,255,.4)'; - } - - function onBlur() { - this.style.boxShadow = ''; - } - - // determines whether value is valid number in attribute form - function isAttrNum(value) { - return !isNaN(value) && +value == parseFloat(value); - } - - // validates min, max, and step attributes and redraws - function update() { - min = isAttrNum(slider.min) ? +slider.min : 0; - max = isAttrNum(slider.max) ? +slider.max : 100; - if (max < min) - max = min > 100 ? min : 100; - step = isAttrNum(slider.step) && slider.step > 0 ? +slider.step : 1; - range = max - min; - draw(true); - } - - // recalculates value property - function calc() { - if (!isValueSet && !areAttrsSet) - value = slider.getAttribute('value'); - if (!isAttrNum(value)) - value = (min + max) / 2;; - // snap to step intervals (WebKit sometimes does not - bug?) - value = Math.round((value - min) / step) * step + min; - if (value < min) - value = min; - else if (value > max) - value = min + ~~(range / step) * step; - } - - // renders slider using CSS background ;) - function draw(attrsModified) { - calc(); - if (isChanged && value != prevValue) - slider.dispatchEvent(onInput); - isChanged = false; - if (!attrsModified && value == prevValue) - return; - prevValue = value; - var position = range ? (value - min) / range * 100 : 0; - var bg = '-moz-element(#__sliderthumb__) ' + position + '% no-repeat, '; - style(slider, { background: bg + track }); - } - -} - -function style(element, styles) { - for (var prop in styles) - element.style.setProperty(prop, styles[prop], 'important'); -} - -})(); diff --git a/scripts/main.js b/scripts/main.js index 906cee6..c637a5b 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -23,8 +23,7 @@ require( 'src/import-button', 'src/random-button', 'util/feature-test', - 'lib/signals-1.0.0', - 'lib/html5slider' + 'lib/signals-1.0.0' ], function( process, From 920c430851334b3a6667f260cf7b2265f28061f6 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Thu, 26 Sep 2013 20:33:10 +0200 Subject: [PATCH 26/67] remove reference to html5slider --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index a8011cd..097be2f 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@ to build, run ```grunt production``` from within the ```build/``` folder. the op third party code used in this experiment --- -* [html5slider](http://frankyan.com/labs/html5slider/) by [fryn](https://github.com/fryn), MIT license * [js signals](http://millermedeiros.github.io/js-signals/) by [millermedeiros](https://github.com/millermedeiros), MIT license * [require js](http://requirejs.org/), by [jrburke](jrburke), BSD & MIT license * [almond js](https://github.com/jrburke/almond), by [jrburke](jrburke), BSD & MIT license From 9d148d252947fb15954ddfa2587d378b52581120 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Thu, 26 Sep 2013 20:34:32 +0200 Subject: [PATCH 27/67] add support for number input fields and keep sliders and numbers in sync --- scripts/src/controls.js | 56 +++++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/scripts/src/controls.js b/scripts/src/controls.js index 33ab075..fc7c297 100644 --- a/scripts/src/controls.js +++ b/scripts/src/controls.js @@ -5,6 +5,7 @@ define( var values = { }; var is_initialized = false; var signals; + var controls; function init( shared ) { @@ -13,7 +14,7 @@ define( if ( shared.feature['query-selector-all'] ) { var wrapper = document.getElementById( 'controls' ); - var controls = document.querySelectorAll( '.control-input' ); + controls = wrapper.querySelectorAll( '.control-input' ); wrapper.className += ' is-active'; @@ -21,9 +22,10 @@ define( { var control = controls[i]; - control.addEventListener( 'change', controlUpdated, false ); - updateValue( control.id, control.value ); - updateValueInUI( control.id, control.value ); + control.addEventListener( 'input', controlUpdated, false ); + + updateValue( getInputKey( control.id ), control.value ); + updateInput( getCorrespondingInput( control.id ), control.value ); } is_initialized = true; @@ -40,22 +42,24 @@ define( element = element.target; } - updateValue( element.id, element.value ); - updateValueInUI( element.id, element.value ); + updateValue( getInputKey( element.id ), element.value ); + updateInput( getCorrespondingInput( element.id ), element.value ); } function setControlValues( new_values ) { var control; + var updated_values = { }; for ( var id in new_values ) { - control = document.getElementById( id ); + control = getCorrespondingInput( id ); control.value = new_values[id]; controlUpdated( control ); + updated_values[ getInputKey( id ) ] = new_values[id]; } - values = new_values; + values = updated_values; signals['control-updated'].dispatch( values ); } @@ -69,10 +73,40 @@ define( } } - function updateValueInUI( key, value ) + function updateInput( input, value ) { - var el = document.querySelectorAll( 'label[for="' + key + '"] .control-slider-value' )[0]; - el.innerHTML = value; + if ( input.value !== value ) + { + input.value = value; + } + } + + function getCorrespondingInput( id ) + { + var result; + var key = getInputKey( id ); + var element_id; + + for ( var i = 0, len = controls.length; i < len; i++ ) + { + element_id = controls[i].id; + + if ( + element_id !== id && + element_id.indexOf( key ) !== -1 + ) + { + result = controls[i]; + break; + } + } + + return result; + } + + function getInputKey( id ) + { + return id.replace( '-slider', '' ).replace( '-number', '' ); } return { init: init }; From 7b00c02a0622ff2252bf193b2d0da20f5ae7944e Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Thu, 26 Sep 2013 20:38:09 +0200 Subject: [PATCH 28/67] update control selector --- scripts/src/random-button.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/src/random-button.js b/scripts/src/random-button.js index 4d3bb5e..f14cb8a 100644 --- a/scripts/src/random-button.js +++ b/scripts/src/random-button.js @@ -13,14 +13,13 @@ define( if ( shared.feature['query-selector-all'] ) { - controls = document.querySelectorAll( '.control-input' ); + controls = document.querySelectorAll( '.control-slider' ); constraints = getConstraints( controls ); random_button = document.getElementById( 'random-button' ); random_button.addEventListener( 'click', buttonClicked, false ); random_button.classList.remove( 'is-hidden' ); } - } function buttonClicked( event ) From 5640d7a10b14bb348c42a9ee6b18f4da52070c05 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 28 Sep 2013 12:47:56 +0200 Subject: [PATCH 29/67] small speed improvements - only get the imagedata once, when the image first loads - only clear the canvas after image load --- scripts/src/process.js | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/scripts/src/process.js b/scripts/src/process.js index 26e26d2..6f0d8a8 100644 --- a/scripts/src/process.js +++ b/scripts/src/process.js @@ -37,6 +37,8 @@ define( if ( ! is_processing ) { image = img; + resetCanvas( image ); + updateImageData( image ); processImage( image ); } } @@ -64,29 +66,34 @@ define( } } + function updateImageData( img ) + { + tmp_ctx.drawImage( img, 0, 0 ); + + image_data = tmp_ctx.getImageData( 0, 0, tmp_canvas.width, tmp_canvas.height ); + } + + function resetCanvas( img ) + { + canvas_helper.clear( tmp_canvas, tmp_ctx ); + canvas_helper.resize( tmp_canvas, img ); + canvas_helper.clear( canvas, ctx ); + canvas_helper.resize( canvas, img ); + } + function processImage( img ) { is_processing = true; - canvas_helper.clear( tmp_canvas, tmp_ctx ); - canvas_helper.clear( canvas, ctx ); - canvas_helper.resize( tmp_canvas, img ); - canvas_helper.resize( canvas, img ); - - tmp_ctx.drawImage( img, 0, 0 ); - - image_data = tmp_ctx.getImageData( 0, 0, tmp_canvas.width, tmp_canvas.height ); - glitch( image_data, values, draw ); } - function draw( image_data ) + function draw( glitched_image_data ) { - canvas_helper.resize( canvas, image_data ); - ctx.putImageData( image_data, 0, 0 ); + ctx.putImageData( glitched_image_data, 0, 0 ); is_processing = false; - image_data = null; + glitched_image_data = null; } function exportData() From 97c8e633acc141ebd7320e09399ebaa75e238aea Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 28 Sep 2013 12:57:03 +0200 Subject: [PATCH 30/67] remove horizontal scrollbars scale down canvas if the image is wider than the browser window --- index.html | 4 +++- styles/main.css | 25 +++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/index.html b/index.html index 029854b..13e3cdb 100644 --- a/index.html +++ b/index.html @@ -40,7 +40,9 @@ download bitmap file (.png)
- +
+ +
diff --git a/styles/main.css b/styles/main.css index d71da37..e2d4a2d 100644 --- a/styles/main.css +++ b/styles/main.css @@ -122,14 +122,6 @@ a:hover display: none; } -#canvas -{ - clear: both; - float: left; - margin-top: 30px; - display: block; -} - .export-wrapper { clear: both; @@ -156,8 +148,21 @@ a:hover margin-left: 4px; } - .missing-feature { clear: both; -} \ No newline at end of file +} + +.canvas-wrapper +{ + width: 100%; + clear: both; + float: left; + margin-top: 30px; + +} + #canvas + { + display: block; + max-width: 100%; + } \ No newline at end of file From 5bc03c7ce778352a9ce1738148aac26b7469553b Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 28 Sep 2013 13:29:35 +0200 Subject: [PATCH 31/67] add image size constraint constrain image file size and scale down image if necessary --- scripts/src/image.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/scripts/src/image.js b/scripts/src/image.js index 563cb3e..c526f8e 100644 --- a/scripts/src/image.js +++ b/scripts/src/image.js @@ -5,6 +5,9 @@ define( var signals; var image; var initialized = false; + + // max 2k px per side, so 2000 * 2000 + var max_image_area = 4000000; function init( shared ) { @@ -22,6 +25,8 @@ define( function imageLoaded() { + constrainImageSize( image ); + signals['image-loaded'].dispatch( image ); initialized = true; } @@ -39,6 +44,25 @@ define( setTimeout( imageLoaded, 10 ); } } + + function constrainImageSize( img ) + { + var ratio = 0; + var image_width = img.width; + var image_height = img.height; + var image_area = image_width * image_height; + + if ( image_area > max_image_area ) + { + ratio = max_image_area / image_area; + + image_width *= ratio; + image_height *= ratio; + + img.naturalWidth = Math.floor( image_width ); + img.naturalWidth = Math.floor( image_height ); + } + } return { init: init }; } From 939cb3545f9a2a8dc251d5a98c7bbd76cdcbbf8e Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 28 Sep 2013 13:30:17 +0200 Subject: [PATCH 32/67] update img attribute --- scripts/src/image.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/src/image.js b/scripts/src/image.js index c526f8e..d4d7dfc 100644 --- a/scripts/src/image.js +++ b/scripts/src/image.js @@ -48,8 +48,8 @@ define( function constrainImageSize( img ) { var ratio = 0; - var image_width = img.width; - var image_height = img.height; + var image_width = img.naturalWidth; + var image_height = img.naturalWidth; var image_area = image_width * image_height; if ( image_area > max_image_area ) From f47c26c09e0cd0636a454661e5b97bdca074d7a1 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 28 Sep 2013 14:19:37 +0200 Subject: [PATCH 33/67] add re-encoding of jpg-images because of progressive rendering --- scripts/main.js | 4 ++ scripts/src/dragdrop.js | 19 ++++----- scripts/src/file.js | 82 ++++++++++++++++++++++++++++++++++++ scripts/src/glitch.js | 5 ++- scripts/src/image.js | 24 ----------- scripts/src/import-button.js | 15 ++----- 6 files changed, 103 insertions(+), 46 deletions(-) create mode 100644 scripts/src/file.js diff --git a/scripts/main.js b/scripts/main.js index c637a5b..a5da5c1 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -16,6 +16,7 @@ require( [ 'src/process', 'src/image', + 'src/file', 'src/dragdrop', 'src/controls', 'src/export-png', @@ -28,6 +29,7 @@ require( function( process, image, + file, dragdrop, controls, png, @@ -45,6 +47,7 @@ require( var shared = { feature: supported_features, signals: { + 'load-file' : new Signal(), 'image-loaded' : new Signal(), 'set-new-src' : new Signal(), 'control-set' : new Signal(), @@ -62,6 +65,7 @@ require( import_button.init( shared ); random_button.init( shared ); image.init( shared ); + file.init( shared ); } function showError( required_features ) diff --git a/scripts/src/dragdrop.js b/scripts/src/dragdrop.js index 158a386..c24482d 100644 --- a/scripts/src/dragdrop.js +++ b/scripts/src/dragdrop.js @@ -3,7 +3,6 @@ define( function() { var signals; - var reader; var feature; function init( shared ) @@ -11,14 +10,11 @@ define( feature = shared.feature; signals = shared.signals; - if ( feature['drag-drop' ] && feature['file-api' ] ) + if ( feature['drag-drop' ] ) { document.addEventListener( 'drop', dropped, false ); document.addEventListener( 'dragover', preventDefault, false ); document.addEventListener( 'dragleave', preventDefault, false ); - - reader = new FileReader(); - reader.addEventListener( 'load', fileLoaded, false ); } } @@ -30,12 +26,15 @@ define( function dropped( event ) { event.preventDefault(); - reader.readAsDataURL( event.dataTransfer.files[0] ); - } - function fileLoaded( event ) - { - signals['set-new-src'].dispatch( event.target.result ); + if ( + event.dataTransfer && + event.dataTransfer.files && + event.dataTransfer.files[0] + ) + { + signals['load-file'].dispatch( event.dataTransfer.files[0] ); + } } return { init: init }; diff --git a/scripts/src/file.js b/scripts/src/file.js new file mode 100644 index 0000000..f189a00 --- /dev/null +++ b/scripts/src/file.js @@ -0,0 +1,82 @@ +/*global define*/ +define( + function() + { + var signals; + var reader; + var feature; + var allowed_file_types = [ 'image/png', 'image/jpg', 'image/jpeg' ]; + var re_encode = false; + var tmp_canvas = document.createElement( 'canvas' ); + var tmp_ctx = tmp_canvas.getContext( '2d' ); + var tmp_img = new Image(); + + function init( shared ) + { + signals = shared.signals; + feature = shared.feature; + + if ( feature['file-api' ] ) + { + signals['load-file'].add( loadFile ); + reader = new FileReader(); + reader.addEventListener( 'load', fileLoaded, false ); + } + } + + function loadFile( file ) + { + if ( + file && + file.type && + allowed_file_types.indexOf( file.type ) !== -1 + ) + { + re_encode = false; + + // beware of ugly hack: + // jpg images can be progressive, in which case we need to + // convert them to to png to remove the progressive rendering. + // why? because i haven't figured out how to deal with + // progressive jpgs in the glitch logic yet + if ( allowed_file_types.indexOf( file.type ) > 0 ) + { + re_encode = true; + } + + reader.readAsDataURL( event.dataTransfer.files[0] ); + } + } + + function fileLoaded( event ) + { + var file_src = event.target.result; + + if ( re_encode ) + { + re_encode = false; + + reEncode( file_src, signals['set-new-src'].dispatch ); + } + + else + { + signals['set-new-src'].dispatch( file_src ); + } + } + + function reEncode( file_src, callback ) + { + tmp_img.onload = function() { + tmp_canvas.width = tmp_img.naturalWidth; + tmp_canvas.height = tmp_img.naturalHeight; + tmp_ctx.drawImage( tmp_img, 0, 0 ); + callback( tmp_canvas.toDataURL( 'image/png' ) ); + }; + + tmp_img.src = file_src; + } + + return { init: init }; + } +); \ No newline at end of file diff --git a/scripts/src/glitch.js b/scripts/src/glitch.js index ade55c0..ac2fe4f 100644 --- a/scripts/src/glitch.js +++ b/scripts/src/glitch.js @@ -91,7 +91,10 @@ define( for ( var i = 0, l = data.length; i < l; i++ ) { - if ( data[i] === 0xFF && data[i + 1] === 0xDA ) + if ( + data[i] === 0xFF && + data[i + 1] === 0xDA + ) { result = i + 2; break; diff --git a/scripts/src/image.js b/scripts/src/image.js index d4d7dfc..563cb3e 100644 --- a/scripts/src/image.js +++ b/scripts/src/image.js @@ -5,9 +5,6 @@ define( var signals; var image; var initialized = false; - - // max 2k px per side, so 2000 * 2000 - var max_image_area = 4000000; function init( shared ) { @@ -25,8 +22,6 @@ define( function imageLoaded() { - constrainImageSize( image ); - signals['image-loaded'].dispatch( image ); initialized = true; } @@ -44,25 +39,6 @@ define( setTimeout( imageLoaded, 10 ); } } - - function constrainImageSize( img ) - { - var ratio = 0; - var image_width = img.naturalWidth; - var image_height = img.naturalWidth; - var image_area = image_width * image_height; - - if ( image_area > max_image_area ) - { - ratio = max_image_area / image_area; - - image_width *= ratio; - image_height *= ratio; - - img.naturalWidth = Math.floor( image_width ); - img.naturalWidth = Math.floor( image_height ); - } - } return { init: init }; } diff --git a/scripts/src/import-button.js b/scripts/src/import-button.js index 15f4baf..ccd6a52 100644 --- a/scripts/src/import-button.js +++ b/scripts/src/import-button.js @@ -10,7 +10,6 @@ define( var file_reader; var image; var file_loading = false; - var allowed_file_types = [ 'image/png', 'image/jpg', 'image/jpeg' ]; function init( shared ) { @@ -25,7 +24,6 @@ define( import_button = document.getElementById( 'import-button' ); import_input = document.getElementById( 'import-input' ); - file_reader.addEventListener( 'load', fileLoaded, false ); import_button.addEventListener( 'click', buttonClicked, false ); import_input.addEventListener( 'change', fileSelected, false ); } @@ -46,20 +44,15 @@ define( var files = event.target.files; if ( - files[0] && - files[0].type && - allowed_file_types.indexOf( files[0].type ) !== -1 + event.target && + event.target.files && + event.target.files[0] ) { - file_reader.readAsDataURL( files[0] ); + signals['load-file'].dispatch( event.target.files[0] ); } } - function fileLoaded( event ) - { - signals['set-new-src'].dispatch( event.target.result ); - } - return { init: init }; } ); \ No newline at end of file From 65be45c9796078ba31f7b0a162994c9d8051aa58 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 28 Sep 2013 14:26:19 +0200 Subject: [PATCH 34/67] rip out re encoding code because it does not solve the problem. --- scripts/src/file.js | 44 ++------------------------------------------ 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/scripts/src/file.js b/scripts/src/file.js index f189a00..2a7577c 100644 --- a/scripts/src/file.js +++ b/scripts/src/file.js @@ -6,10 +6,6 @@ define( var reader; var feature; var allowed_file_types = [ 'image/png', 'image/jpg', 'image/jpeg' ]; - var re_encode = false; - var tmp_canvas = document.createElement( 'canvas' ); - var tmp_ctx = tmp_canvas.getContext( '2d' ); - var tmp_img = new Image(); function init( shared ) { @@ -32,49 +28,13 @@ define( allowed_file_types.indexOf( file.type ) !== -1 ) { - re_encode = false; - - // beware of ugly hack: - // jpg images can be progressive, in which case we need to - // convert them to to png to remove the progressive rendering. - // why? because i haven't figured out how to deal with - // progressive jpgs in the glitch logic yet - if ( allowed_file_types.indexOf( file.type ) > 0 ) - { - re_encode = true; - } - - reader.readAsDataURL( event.dataTransfer.files[0] ); + reader.readAsDataURL( file ); } } function fileLoaded( event ) { - var file_src = event.target.result; - - if ( re_encode ) - { - re_encode = false; - - reEncode( file_src, signals['set-new-src'].dispatch ); - } - - else - { - signals['set-new-src'].dispatch( file_src ); - } - } - - function reEncode( file_src, callback ) - { - tmp_img.onload = function() { - tmp_canvas.width = tmp_img.naturalWidth; - tmp_canvas.height = tmp_img.naturalHeight; - tmp_ctx.drawImage( tmp_img, 0, 0 ); - callback( tmp_canvas.toDataURL( 'image/png' ) ); - }; - - tmp_img.src = file_src; + signals['set-new-src'].dispatch( event.target.result ); } return { init: init }; From 6579fdaadbf1942b5bfa681a0a2c8f1fbe58df55 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 1 Nov 2013 18:32:03 +0100 Subject: [PATCH 35/67] add @imgur sharing. thanks everyone on @reddit and r/glitch_art for using this! --- README.md | 1 + index.html | 10 +- scripts/lib/reqwest.js | 590 +++++++++++++++++++++++++++++++++++ scripts/main.js | 32 +- scripts/src/export-button.js | 39 +++ scripts/src/export-png.js | 31 -- scripts/src/process.js | 9 +- scripts/src/save-button.js | 25 -- scripts/src/upload-imgur.js | 100 ++++++ styles/main.css | 87 ++++++ 10 files changed, 845 insertions(+), 79 deletions(-) create mode 100644 scripts/lib/reqwest.js create mode 100644 scripts/src/export-button.js delete mode 100644 scripts/src/export-png.js delete mode 100644 scripts/src/save-button.js create mode 100644 scripts/src/upload-imgur.js diff --git a/README.md b/README.md index 097be2f..e8042de 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ third party code used in this experiment * [require js](http://requirejs.org/), by [jrburke](jrburke), BSD & MIT license * [almond js](https://github.com/jrburke/almond), by [jrburke](jrburke), BSD & MIT license * [raf js](https://gist.github.com/paulirish/1579671), by [paulirish](https://github.com/paulirish), MIT license +* [reqwest js](https://github.com/ded/reqwest/), by [ded](https://github.com/ded) license --- diff --git a/index.html b/index.html index 13e3cdb..19d5ec9 100644 --- a/index.html +++ b/index.html @@ -35,10 +35,16 @@
- + - + + download bitmap file (.png) +
+ + open + Sorry, something went wrong. Maybe try again? +
diff --git a/scripts/lib/reqwest.js b/scripts/lib/reqwest.js new file mode 100644 index 0000000..de7d8da --- /dev/null +++ b/scripts/lib/reqwest.js @@ -0,0 +1,590 @@ +!function (name, context, definition) { + if (typeof module != 'undefined' && module.exports) module.exports = definition() + else if (typeof define == 'function' && define.amd) define(definition) + else context[name] = definition() +}('reqwest', this, function () { + + var win = window + , doc = document + , twoHundo = /^20\d$/ + , byTag = 'getElementsByTagName' + , readyState = 'readyState' + , contentType = 'Content-Type' + , requestedWith = 'X-Requested-With' + , head = doc[byTag]('head')[0] + , uniqid = 0 + , callbackPrefix = 'reqwest_' + (+new Date()) + , lastValue // data stored by the most recent JSONP callback + , xmlHttpRequest = 'XMLHttpRequest' + , xDomainRequest = 'XDomainRequest' + , noop = function () {} + + , isArray = typeof Array.isArray == 'function' + ? Array.isArray + : function (a) { + return a instanceof Array + } + + , defaultHeaders = { + contentType: 'application/x-www-form-urlencoded' + , requestedWith: xmlHttpRequest + , accept: { + '*': 'text/javascript, text/html, application/xml, text/xml, */*' + , xml: 'application/xml, text/xml' + , html: 'text/html' + , text: 'text/plain' + , json: 'application/json, text/javascript' + , js: 'application/javascript, text/javascript' + } + } + + , xhr = function(o) { + // is it x-domain + if (o.crossOrigin === true) { + var xhr = win[xmlHttpRequest] ? new XMLHttpRequest() : null + if (xhr && 'withCredentials' in xhr) { + return xhr + } else if (win[xDomainRequest]) { + return new XDomainRequest() + } else { + throw new Error('Browser does not support cross-origin requests') + } + } else if (win[xmlHttpRequest]) { + return new XMLHttpRequest() + } else { + return new ActiveXObject('Microsoft.XMLHTTP') + } + } + , globalSetupOptions = { + dataFilter: function (data) { + return data + } + } + + function handleReadyState(r, success, error) { + return function () { + // use _aborted to mitigate against IE err c00c023f + // (can't read props on aborted request objects) + if (r._aborted) return error(r.request) + if (r.request && r.request[readyState] == 4) { + r.request.onreadystatechange = noop + if (twoHundo.test(r.request.status)) + success(r.request) + else + error(r.request) + } + } + } + + function setHeaders(http, o) { + var headers = o.headers || {} + , h + + headers.Accept = headers.Accept + || defaultHeaders.accept[o.type] + || defaultHeaders.accept['*'] + + // breaks cross-origin requests with legacy browsers + if (!o.crossOrigin && !headers[requestedWith]) headers[requestedWith] = defaultHeaders.requestedWith + if (!headers[contentType]) headers[contentType] = o.contentType || defaultHeaders.contentType + for (h in headers) + headers.hasOwnProperty(h) && 'setRequestHeader' in http && http.setRequestHeader(h, headers[h]) + } + + function setCredentials(http, o) { + if (typeof o.withCredentials !== 'undefined' && typeof http.withCredentials !== 'undefined') { + http.withCredentials = !!o.withCredentials + } + } + + function generalCallback(data) { + lastValue = data + } + + function urlappend (url, s) { + return url + (/\?/.test(url) ? '&' : '?') + s + } + + function handleJsonp(o, fn, err, url) { + var reqId = uniqid++ + , cbkey = o.jsonpCallback || 'callback' // the 'callback' key + , cbval = o.jsonpCallbackName || reqwest.getcallbackPrefix(reqId) + // , cbval = o.jsonpCallbackName || ('reqwest_' + reqId) // the 'callback' value + , cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)') + , match = url.match(cbreg) + , script = doc.createElement('script') + , loaded = 0 + , isIE10 = navigator.userAgent.indexOf('MSIE 10.0') !== -1 + + if (match) { + if (match[3] === '?') { + url = url.replace(cbreg, '$1=' + cbval) // wildcard callback func name + } else { + cbval = match[3] // provided callback func name + } + } else { + url = urlappend(url, cbkey + '=' + cbval) // no callback details, add 'em + } + + win[cbval] = generalCallback + + script.type = 'text/javascript' + script.src = url + script.async = true + if (typeof script.onreadystatechange !== 'undefined' && !isIE10) { + // need this for IE due to out-of-order onreadystatechange(), binding script + // execution to an event listener gives us control over when the script + // is executed. See http://jaubourg.net/2010/07/loading-script-as-onclick-handler-of.html + // + // if this hack is used in IE10 jsonp callback are never called + script.event = 'onclick' + script.htmlFor = script.id = '_reqwest_' + reqId + } + + script.onload = script.onreadystatechange = function () { + if ((script[readyState] && script[readyState] !== 'complete' && script[readyState] !== 'loaded') || loaded) { + return false + } + script.onload = script.onreadystatechange = null + script.onclick && script.onclick() + // Call the user callback with the last value stored and clean up values and scripts. + fn(lastValue) + lastValue = undefined + head.removeChild(script) + loaded = 1 + } + + // Add the script to the DOM head + head.appendChild(script) + + // Enable JSONP timeout + return { + abort: function () { + script.onload = script.onreadystatechange = null + err({}, 'Request is aborted: timeout', {}) + lastValue = undefined + head.removeChild(script) + loaded = 1 + } + } + } + + function getRequest(fn, err) { + var o = this.o + , method = (o.method || 'GET').toUpperCase() + , url = typeof o === 'string' ? o : o.url + // convert non-string objects to query-string form unless o.processData is false + , data = (o.processData !== false && o.data && typeof o.data !== 'string') + ? reqwest.toQueryString(o.data) + : (o.data || null) + , http + , sendWait = false + + // if we're working on a GET request and we have data then we should append + // query string to end of URL and not post data + if ((o.type == 'jsonp' || method == 'GET') && data) { + url = urlappend(url, data) + data = null + } + + if (o.type == 'jsonp') return handleJsonp(o, fn, err, url) + + http = xhr(o) + http.open(method, url, o.async === false ? false : true) + setHeaders(http, o) + setCredentials(http, o) + if (win[xDomainRequest] && http instanceof win[xDomainRequest]) { + http.onload = fn + http.onerror = err + // NOTE: see + // http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/30ef3add-767c-4436-b8a9-f1ca19b4812e + http.onprogress = function() {} + sendWait = true + } else { + http.onreadystatechange = handleReadyState(this, fn, err) + } + o.before && o.before(http) + if (sendWait) { + setTimeout(function () { + http.send(data) + }, 200) + } else { + http.send(data) + } + return http + } + + function Reqwest(o, fn) { + this.o = o + this.fn = fn + + init.apply(this, arguments) + } + + function setType(url) { + var m = url.match(/\.(json|jsonp|html|xml)(\?|$)/) + return m ? m[1] : 'js' + } + + function init(o, fn) { + + this.url = typeof o == 'string' ? o : o.url + this.timeout = null + + // whether request has been fulfilled for purpose + // of tracking the Promises + this._fulfilled = false + // success handlers + this._successHandler = function(){} + this._fulfillmentHandlers = [] + // error handlers + this._errorHandlers = [] + // complete (both success and fail) handlers + this._completeHandlers = [] + this._erred = false + this._responseArgs = {} + + var self = this + , type = o.type || setType(this.url) + + fn = fn || function () {} + + if (o.timeout) { + this.timeout = setTimeout(function () { + self.abort() + }, o.timeout) + } + + if (o.success) { + this._successHandler = function () { + o.success.apply(o, arguments) + } + } + + if (o.error) { + this._errorHandlers.push(function () { + o.error.apply(o, arguments) + }) + } + + if (o.complete) { + this._completeHandlers.push(function () { + o.complete.apply(o, arguments) + }) + } + + function complete (resp) { + o.timeout && clearTimeout(self.timeout) + self.timeout = null + while (self._completeHandlers.length > 0) { + self._completeHandlers.shift()(resp) + } + } + + function success (resp) { + resp = (type !== 'jsonp') ? self.request : resp + // use global data filter on response text + var filteredResponse = globalSetupOptions.dataFilter(resp.responseText, type) + , r = filteredResponse + try { + resp.responseText = r + } catch (e) { + // can't assign this in IE<=8, just ignore + } + if (r) { + switch (type) { + case 'json': + try { + resp = win.JSON ? win.JSON.parse(r) : eval('(' + r + ')') + } catch (err) { + return error(resp, 'Could not parse JSON in response', err) + } + break + case 'js': + resp = eval(r) + break + case 'html': + resp = r + break + case 'xml': + resp = resp.responseXML + && resp.responseXML.parseError // IE trololo + && resp.responseXML.parseError.errorCode + && resp.responseXML.parseError.reason + ? null + : resp.responseXML + break + } + } + + self._responseArgs.resp = resp + self._fulfilled = true + fn(resp) + self._successHandler(resp) + while (self._fulfillmentHandlers.length > 0) { + resp = self._fulfillmentHandlers.shift()(resp) + } + + complete(resp) + } + + function error(resp, msg, t) { + resp = self.request + self._responseArgs.resp = resp + self._responseArgs.msg = msg + self._responseArgs.t = t + self._erred = true + while (self._errorHandlers.length > 0) { + self._errorHandlers.shift()(resp, msg, t) + } + complete(resp) + } + + this.request = getRequest.call(this, success, error) + } + + Reqwest.prototype = { + abort: function () { + this._aborted = true + this.request.abort() + } + + , retry: function () { + init.call(this, this.o, this.fn) + } + + /** + * Small deviation from the Promises A CommonJs specification + * http://wiki.commonjs.org/wiki/Promises/A + */ + + /** + * `then` will execute upon successful requests + */ + , then: function (success, fail) { + success = success || function () {} + fail = fail || function () {} + if (this._fulfilled) { + this._responseArgs.resp = success(this._responseArgs.resp) + } else if (this._erred) { + fail(this._responseArgs.resp, this._responseArgs.msg, this._responseArgs.t) + } else { + this._fulfillmentHandlers.push(success) + this._errorHandlers.push(fail) + } + return this + } + + /** + * `always` will execute whether the request succeeds or fails + */ + , always: function (fn) { + if (this._fulfilled || this._erred) { + fn(this._responseArgs.resp) + } else { + this._completeHandlers.push(fn) + } + return this + } + + /** + * `fail` will execute when the request fails + */ + , fail: function (fn) { + if (this._erred) { + fn(this._responseArgs.resp, this._responseArgs.msg, this._responseArgs.t) + } else { + this._errorHandlers.push(fn) + } + return this + } + } + + function reqwest(o, fn) { + return new Reqwest(o, fn) + } + + // normalize newline variants according to spec -> CRLF + function normalize(s) { + return s ? s.replace(/\r?\n/g, '\r\n') : '' + } + + function serial(el, cb) { + var n = el.name + , t = el.tagName.toLowerCase() + , optCb = function (o) { + // IE gives value="" even where there is no value attribute + // 'specified' ref: http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-862529273 + if (o && !o.disabled) + cb(n, normalize(o.attributes.value && o.attributes.value.specified ? o.value : o.text)) + } + , ch, ra, val, i + + // don't serialize elements that are disabled or without a name + if (el.disabled || !n) return + + switch (t) { + case 'input': + if (!/reset|button|image|file/i.test(el.type)) { + ch = /checkbox/i.test(el.type) + ra = /radio/i.test(el.type) + val = el.value + // WebKit gives us "" instead of "on" if a checkbox has no value, so correct it here + ;(!(ch || ra) || el.checked) && cb(n, normalize(ch && val === '' ? 'on' : val)) + } + break + case 'textarea': + cb(n, normalize(el.value)) + break + case 'select': + if (el.type.toLowerCase() === 'select-one') { + optCb(el.selectedIndex >= 0 ? el.options[el.selectedIndex] : null) + } else { + for (i = 0; el.length && i < el.length; i++) { + el.options[i].selected && optCb(el.options[i]) + } + } + break + } + } + + // collect up all form elements found from the passed argument elements all + // the way down to child elements; pass a '
' or form fields. + // called with 'this'=callback to use for serial() on each element + function eachFormElement() { + var cb = this + , e, i + , serializeSubtags = function (e, tags) { + var i, j, fa + for (i = 0; i < tags.length; i++) { + fa = e[byTag](tags[i]) + for (j = 0; j < fa.length; j++) serial(fa[j], cb) + } + } + + for (i = 0; i < arguments.length; i++) { + e = arguments[i] + if (/input|select|textarea/i.test(e.tagName)) serial(e, cb) + serializeSubtags(e, [ 'input', 'select', 'textarea' ]) + } + } + + // standard query string style serialization + function serializeQueryString() { + return reqwest.toQueryString(reqwest.serializeArray.apply(null, arguments)) + } + + // { 'name': 'value', ... } style serialization + function serializeHash() { + var hash = {} + eachFormElement.apply(function (name, value) { + if (name in hash) { + hash[name] && !isArray(hash[name]) && (hash[name] = [hash[name]]) + hash[name].push(value) + } else hash[name] = value + }, arguments) + return hash + } + + // [ { name: 'name', value: 'value' }, ... ] style serialization + reqwest.serializeArray = function () { + var arr = [] + eachFormElement.apply(function (name, value) { + arr.push({name: name, value: value}) + }, arguments) + return arr + } + + reqwest.serialize = function () { + if (arguments.length === 0) return '' + var opt, fn + , args = Array.prototype.slice.call(arguments, 0) + + opt = args.pop() + opt && opt.nodeType && args.push(opt) && (opt = null) + opt && (opt = opt.type) + + if (opt == 'map') fn = serializeHash + else if (opt == 'array') fn = reqwest.serializeArray + else fn = serializeQueryString + + return fn.apply(null, args) + } + + reqwest.toQueryString = function (o, trad) { + var prefix, i + , traditional = trad || false + , s = [] + , enc = encodeURIComponent + , add = function (key, value) { + // If value is a function, invoke it and return its value + value = ('function' === typeof value) ? value() : (value == null ? '' : value) + s[s.length] = enc(key) + '=' + enc(value) + } + // If an array was passed in, assume that it is an array of form elements. + if (isArray(o)) { + for (i = 0; o && i < o.length; i++) add(o[i].name, o[i].value) + } else { + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for (prefix in o) { + buildParams(prefix, o[prefix], traditional, add) + } + } + + // spaces should be + according to spec + return s.join('&').replace(/%20/g, '+') + } + + function buildParams(prefix, obj, traditional, add) { + var name, i, v + , rbracket = /\[\]$/ + + if (isArray(obj)) { + // Serialize array item. + for (i = 0; obj && i < obj.length; i++) { + v = obj[i] + if (traditional || rbracket.test(prefix)) { + // Treat each array item as a scalar. + add(prefix, v) + } else { + buildParams(prefix + '[' + (typeof v === 'object' ? i : '') + ']', v, traditional, add) + } + } + } else if (obj && obj.toString() === '[object Object]') { + // Serialize object item. + for (name in obj) { + buildParams(prefix + '[' + name + ']', obj[name], traditional, add) + } + + } else { + // Serialize scalar item. + add(prefix, obj) + } + } + + reqwest.getcallbackPrefix = function () { + return callbackPrefix + } + + // jQuery and Zepto compatibility, differences can be remapped here so you can call + // .ajax.compat(options, callback) + reqwest.compat = function (o, fn) { + if (o) { + o.type && (o.method = o.type) && delete o.type + o.dataType && (o.type = o.dataType) + o.jsonpCallback && (o.jsonpCallbackName = o.jsonpCallback) && delete o.jsonpCallback + o.jsonp && (o.jsonpCallback = o.jsonp) + } + return new Reqwest(o, fn) + } + + reqwest.ajaxSetup = function (options) { + options = options || {} + for (var k in options) { + globalSetupOptions[k] = options[k] + } + } + + return reqwest +}); \ No newline at end of file diff --git a/scripts/main.js b/scripts/main.js index a5da5c1..40d3f2c 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -4,11 +4,8 @@ var path = typeof _basepath_ === 'string' ? _basepath_ + '/' : ''; requirejs.config( { baseUrl: path + 'scripts/', - waitSeconds: 5, - urlArgs: 'bust=' + ( new Date() ).getTime(), - shim: { - 'lib/delaunay': { exports: 'triangulate' } - } + waitSeconds: 50, + urlArgs: 'bust=' + ( new Date() ).getTime() } ); @@ -19,10 +16,10 @@ require( 'src/file', 'src/dragdrop', 'src/controls', - 'src/export-png', - 'src/save-button', + 'src/export-button', 'src/import-button', 'src/random-button', + 'src/upload-imgur', 'util/feature-test', 'lib/signals-1.0.0' ], @@ -32,10 +29,10 @@ require( file, dragdrop, controls, - png, - save_button, + export_button, import_button, random_button, + imgur, testFeatures, Signal ) @@ -47,25 +44,24 @@ require( var shared = { feature: supported_features, signals: { - 'load-file' : new Signal(), - 'image-loaded' : new Signal(), - 'set-new-src' : new Signal(), - 'control-set' : new Signal(), - 'control-updated' : new Signal(), - 'export-png' : new Signal(), - 'saved' : new Signal() + 'load-file' : new Signal(), + 'image-loaded' : new Signal(), + 'set-new-src' : new Signal(), + 'control-set' : new Signal(), + 'control-updated' : new Signal(), + 'image-data-url-requested' : new Signal() } }; process.init( shared ); dragdrop.init( shared ); controls.init( shared ); - png.init( shared ); - save_button.init( shared ); + export_button.init( shared ); import_button.init( shared ); random_button.init( shared ); image.init( shared ); file.init( shared ); + imgur.init( shared ); } function showError( required_features ) diff --git a/scripts/src/export-button.js b/scripts/src/export-button.js new file mode 100644 index 0000000..64b3c28 --- /dev/null +++ b/scripts/src/export-button.js @@ -0,0 +1,39 @@ +/*global define*/ +define( + function() + { + var signals; + var export_button; + var png_link; + + function init( shared ) + { + signals = shared.signals; + export_button = document.getElementById( 'export-button' ); + png_link = document.getElementById( 'png-button' ); + + export_button.addEventListener( 'click', exportButtonClicked, false ); + png_link.addEventListener( 'click', hidePNGLink, false ); + } + + function exportButtonClicked( event ) + { + event.preventDefault(); + + signals['image-data-url-requested'].dispatch( upldatePNGLinkAddress ); + } + + function upldatePNGLinkAddress( data_url ) + { + png_link.href = data_url; + png_link.classList.add( 'is-active' ); + } + + function hidePNGLink() + { + png_link.classList.remove( 'is-active' ); + } + + return { init: init }; + } +); \ No newline at end of file diff --git a/scripts/src/export-png.js b/scripts/src/export-png.js deleted file mode 100644 index 2bad560..0000000 --- a/scripts/src/export-png.js +++ /dev/null @@ -1,31 +0,0 @@ -/*global define*/ -define( - function() - { - var signals; - var png_button; - - function init( shared ) - { - signals = shared.signals; - png_button = document.getElementById( 'png-button' ); - - signals['export-png'].add( generatePNG ); - signals['control-updated'].add( hideLink ); - png_button.addEventListener( 'click', hideLink, false ); - } - - function generatePNG( data_url ) - { - png_button.href = data_url; - png_button.classList.add( 'is-active' ); - } - - function hideLink() - { - png_button.classList.remove( 'is-active' ); - } - - return { init: init }; - } -); \ No newline at end of file diff --git a/scripts/src/process.js b/scripts/src/process.js index 6f0d8a8..55523cc 100644 --- a/scripts/src/process.js +++ b/scripts/src/process.js @@ -22,7 +22,7 @@ define( signals['image-loaded'].add( generate ); signals['control-updated'].add( controlsUpdated ); - signals['saved'].add( exportData ); + signals['image-data-url-requested'].add( exportData ); } function controlsUpdated( new_values ) @@ -96,9 +96,12 @@ define( glitched_image_data = null; } - function exportData() + function exportData( callback ) { - signals['export-png'].dispatch( canvas.toDataURL( 'image/png' ) ); + if ( typeof callback === 'function' ) + { + callback( canvas.toDataURL( 'image/png' ) ); + } } function getAdjustedValues( new_values ) diff --git a/scripts/src/save-button.js b/scripts/src/save-button.js deleted file mode 100644 index 089cf5a..0000000 --- a/scripts/src/save-button.js +++ /dev/null @@ -1,25 +0,0 @@ -/*global define*/ -define( - function() - { - var signals; - var save_button; - - function init( shared ) - { - signals = shared.signals; - save_button = document.getElementById( 'save-button' ); - - save_button.addEventListener( 'click', buttonClicked, false ); - } - - function buttonClicked( event ) - { - event.preventDefault(); - - signals['saved'].dispatch(); - } - - return { init: init }; - } -); \ No newline at end of file diff --git a/scripts/src/upload-imgur.js b/scripts/src/upload-imgur.js new file mode 100644 index 0000000..60e8b7c --- /dev/null +++ b/scripts/src/upload-imgur.js @@ -0,0 +1,100 @@ +/*global define*/ +define( + [ 'lib/reqwest' ], + function( reqwest, $ ) + { + var signals; + var imgur_button; + var imgur_url_container; + var imgur_url_input; + var imgur_url_link; + var imgur_url_error; + var is_uploading = false; + + function init( shared ) + { + signals = shared.signals; + imgur_button = document.getElementById( 'imgur-button' ); + imgur_url_container = document.getElementById( 'imgur-url-container' ); + imgur_url_input = document.getElementById( 'imgur-url-input' ); + imgur_url_link = document.getElementById( 'imgur-url-link' ); + imgur_url_error = document.getElementById( 'imgur-url-error' ); + + imgur_button.addEventListener( 'click', buttonClicked, false ); + imgur_url_input.addEventListener( 'click', selectInput, false ); + } + + function buttonClicked( event ) + { + event.preventDefault(); + + if ( ! is_uploading ) + { + signals['image-data-url-requested'].dispatch( upload ); + + imgur_url_container.classList.remove( 'is-active', 'upload-failed', 'upload-successful' ); + } + } + + function selectInput() + { + imgur_url_input.select(); + } + + //http://stackoverflow.com/questions/17805456/upload-a-canvas-image-to-imgur-api-v3-with-javascript + function upload( data_url ) + { + if ( ! is_uploading ) + { + imgur_button.classList.add( 'is-uploading' ); + + is_uploading = true; + + reqwest( + { + url: 'https://api.imgur.com/3/image.json', + method: 'POST', + headers: { + Authorization: 'Client-ID a4c24380d884932' + }, + data: { + image: data_url.split( ',' )[1], + type: 'base64' + }, + type: 'json', + crossOrigin: true, + success: imageUploaded, + error: uploadFailed + } + ); + } + } + + function imageUploaded( response ) + { + is_uploading = false; + + if ( response && response.data && response.data.link ) + { + imgur_button.classList.remove( 'is-uploading' ); + imgur_url_input.setAttribute( 'value', response.data.link ); + imgur_url_link.href = response.data.link; + imgur_url_container.classList.add( 'is-active', 'upload-successful' ); + } + + else + { + uploadFailed(); + } + } + + function uploadFailed( response ) + { + is_uploading = false; + imgur_button.classList.remove( 'is-uploading' ); + imgur_url_container.classList.add( 'is-active', 'upload-failed' ); + } + + return { init: init }; + } +); \ No newline at end of file diff --git a/styles/main.css b/styles/main.css index e2d4a2d..f6b9f99 100644 --- a/styles/main.css +++ b/styles/main.css @@ -42,12 +42,14 @@ a:hover font-family: sans-serif; font-size: 12px; text-decoration: none; + line-height: normal; } .button:hover { background-color: #06f; color: #fff; + text-decoration: none; } #random-button @@ -148,6 +150,91 @@ a:hover margin-left: 4px; } +#imgur-button +{ + width: 85px; +} + +#imgur-button.is-uploading, +#imgur-button.is-uploading:hover +{ + background-color: #eaeaea; + color: #06f; + cursor: default; +} + + #imgur-button span + { + display: block; + width: 154px; + transition: margin-left 0.5s ease-in; + transition-property: margin-left top; + text-align: left; + overflow: hidden; + } + + + #imgur-button.is-uploading span + { + margin-left: -76px; + } + + #imgur-button span::after + { + content: 'loading…'; + display: inline-block; + padding-left: 15px; + color: #999; + } + +#imgur-url-container +{ + display: inline-block; + opacity: 0; + transition: opacity 0.3s ease-in; +} + +#imgur-url-container.is-active +{ + opacity: 1; +} + + #imgur-url-input + { + padding: 4px 9px; + border: 1px #CCC solid; + border-radius: 3px; + font-family: sans-serif; + font-size: 13px; + color: #7C7C7C; + } + + #imgur-url-error + { + padding: 5px 9px; + line-height: normal; + color: #999; + } + + #imgur-url-input, + #imgur-url-link, + #imgur-url-error + { + display: none; + } + + #imgur-url-container.upload-successful #imgur-url-input, + #imgur-url-container.upload-successful #imgur-url-link + { + display: inline-block; + } + + #imgur-url-container.upload-failed #imgur-url-error + { + display: inline-block; + } + + .missing-feature { clear: both; From d39a8797f8f92deb71d5b7e54884e10090cbffd3 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 2 Nov 2013 11:30:17 +0100 Subject: [PATCH 36/67] add license information for reqwest library --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8042de..d48e4ca 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ third party code used in this experiment * [require js](http://requirejs.org/), by [jrburke](jrburke), BSD & MIT license * [almond js](https://github.com/jrburke/almond), by [jrburke](jrburke), BSD & MIT license * [raf js](https://gist.github.com/paulirish/1579671), by [paulirish](https://github.com/paulirish), MIT license -* [reqwest js](https://github.com/ded/reqwest/), by [ded](https://github.com/ded) +* [reqwest js](https://github.com/ded/reqwest/), by [ded](https://github.com/ded), MIT license license --- From 4f2370aa301d9668077392a2062c82eb3768e94d Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 2 Nov 2013 12:33:06 +0100 Subject: [PATCH 37/67] add twitter, facebook and reddit sharing buttons --- index.html | 5 ++++- scripts/src/upload-imgur.js | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 19d5ec9..0fdfa1a 100644 --- a/index.html +++ b/index.html @@ -43,7 +43,10 @@
open - Sorry, something went wrong. Maybe try again? + twitter + facebook + reddit + sorry, something went wrong. maybe try again?
diff --git a/scripts/src/upload-imgur.js b/scripts/src/upload-imgur.js index 60e8b7c..a596314 100644 --- a/scripts/src/upload-imgur.js +++ b/scripts/src/upload-imgur.js @@ -9,6 +9,9 @@ define( var imgur_url_input; var imgur_url_link; var imgur_url_error; + var twitter_link; + var facebook_link; + var reddit_link; var is_uploading = false; function init( shared ) @@ -19,6 +22,9 @@ define( imgur_url_input = document.getElementById( 'imgur-url-input' ); imgur_url_link = document.getElementById( 'imgur-url-link' ); imgur_url_error = document.getElementById( 'imgur-url-error' ); + twitter_link = document.getElementById( 'twitter-link' ); + facebook_link = document.getElementById( 'facebook-link' ); + reddit_link = document.getElementById( 'reddit-link' ); imgur_button.addEventListener( 'click', buttonClicked, false ); imgur_url_input.addEventListener( 'click', selectInput, false ); @@ -76,10 +82,25 @@ define( if ( response && response.data && response.data.link ) { + var twitter_share_url_text = "Check out what I made with @snorpey’s glitch tool: "; + twitter_share_url_text += response.data.link; + twitter_share_url_text += ' http://snorpey.github.io/jpg-glitch'; + + //http://ar.zu.my/how-to-really-customize-the-deprecated-facebook-sharer-dot-php/ + var facebook_share_url = 'http://www.facebook.com/sharer.php?s=100'; + facebook_share_url += '&p[url]=' + response.data.link; + facebook_share_url += '&p[title]=Glitch!'; + facebook_share_url += '&p[images][0]=' + response.data.link; + facebook_share_url += '&p[summary]=' + encodeURIComponent( 'Check out what I made with this glitch tool: http://snorpey.github.io/jpg-glitch' ); + imgur_button.classList.remove( 'is-uploading' ); imgur_url_input.setAttribute( 'value', response.data.link ); imgur_url_link.href = response.data.link; imgur_url_container.classList.add( 'is-active', 'upload-successful' ); + + twitter_link.href = 'https://twitter.com/intent/tweet?text=' + encodeURIComponent( twitter_share_url_text ); + facebook_link.href = facebook_share_url; + reddit_link.href = 'http://www.reddit.com/submit?url=' + encodeURIComponent( response.data.link ) + '&title=Glitch!'; } else From 1e45bd9327632102efc47f68e61d62d05feec555 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Sat, 2 Nov 2013 13:02:22 +0100 Subject: [PATCH 38/67] only show social links if upload was successful --- index.html | 8 ++++---- styles/main.css | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 0fdfa1a..ace1d33 100644 --- a/index.html +++ b/index.html @@ -42,10 +42,10 @@ download bitmap file (.png)
- open - twitter - facebook - reddit + + + + sorry, something went wrong. maybe try again?
diff --git a/styles/main.css b/styles/main.css index f6b9f99..db4f527 100644 --- a/styles/main.css +++ b/styles/main.css @@ -234,6 +234,16 @@ a:hover display: inline-block; } +.social-link +{ + display: none; +} + + .upload-successful .social-link + { + display: inline-block; + } + .missing-feature { From f9f7d0176391b397eafbd973a62c86944bf6dbe1 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Wed, 27 Nov 2013 22:30:00 +0100 Subject: [PATCH 39/67] update readme with link to glitch library --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index d48e4ca..2a17adc 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,10 @@ run ```npm install``` from within the ```build/``` folder to install the depende to build, run ```grunt production``` from within the ```build/``` folder. the optimized files will get copied to the ```production/``` folder. +glitch code +--- +if you're a developer and just interested in the code for the glitch effect, there's a separate repository for that: [glitch-canvas](https://github.com/snorpey/glitch-canvas). + third party code used in this experiment --- * [js signals](http://millermedeiros.github.io/js-signals/) by [millermedeiros](https://github.com/millermedeiros), MIT license From 6a1f4fda80df11dd37c7921cceb7839b4dbbe78f Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 29 Nov 2013 22:00:59 +0100 Subject: [PATCH 40/67] update user interface --- index.html | 89 ++++----- scripts/main.js | 3 + scripts/src/intro.js | 47 +++++ styles/main.css | 420 ++++++++++++++++++++++++------------------- 4 files changed, 339 insertions(+), 220 deletions(-) create mode 100644 scripts/src/intro.js diff --git a/index.html b/index.html index ace1d33..d4a3dd7 100644 --- a/index.html +++ b/index.html @@ -6,51 +6,60 @@ -
-

glitch images

-

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

-

if you like this one, you can check out some of his other javascript experiments.

-
-
-
- - - + + -
- - - - - download bitmap file (.png) -
- - - - - - sorry, something went wrong. maybe try again? +
- + +
+
+

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

+

if you like this one, you can check out some of his other javascript experiments.

+ +
+
diff --git a/scripts/main.js b/scripts/main.js index 40d3f2c..ed519fe 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -20,6 +20,7 @@ require( 'src/import-button', 'src/random-button', 'src/upload-imgur', + 'src/intro', 'util/feature-test', 'lib/signals-1.0.0' ], @@ -33,6 +34,7 @@ require( import_button, random_button, imgur, + intro, testFeatures, Signal ) @@ -62,6 +64,7 @@ require( image.init( shared ); file.init( shared ); imgur.init( shared ); + intro.init( shared ); } function showError( required_features ) diff --git a/scripts/src/intro.js b/scripts/src/intro.js new file mode 100644 index 0000000..d1b12a3 --- /dev/null +++ b/scripts/src/intro.js @@ -0,0 +1,47 @@ +/*global define*/ +define( + function() + { + var signals; + var is_open = true; + var element = document.querySelectorAll( '.intro' )[0]; + var button = document.querySelectorAll( '.intro-button' )[0]; + var close_button = element.querySelectorAll( '.close' )[0]; + + function init( shared ) + { + signals = shared.signals; + button.addEventListener( 'click', buttonClicked ); + close_button.addEventListener( 'click', close ); + } + + function buttonClicked( event ) + { + if ( is_open ) + { + close(); + } + + else + { + open(); + } + } + + function open() + { + button.classList.add( 'is-active' ); + element.classList.add( 'is-active' ); + is_open = true; + } + + function close() + { + button.classList.remove( 'is-active' ); + element.classList.remove( 'is-active' ); + is_open = false; + } + + return { init: init }; + } +); \ No newline at end of file diff --git a/styles/main.css b/styles/main.css index db4f527..cb5b271 100644 --- a/styles/main.css +++ b/styles/main.css @@ -1,40 +1,59 @@ -* -{ +* { margin: 0; padding: 0; } -body -{ - padding: 50px; +body { font-family: sans-serif; color: #666; line-height: 18px; - font-size: 12px; + font-size: 14px; } -a -{ +a { color: #06f; text-decoration: none; } -a:hover -{ +a:hover { text-decoration: underline; } -.is-hidden -{ +.is-hidden { display: none; } -.button -{ - background-color: #eaeaea; +.full-width { + width: 100%; +} + +.dark-bg { + background-color: #333; +} + +.light-bg { + background-color: #efefef; + border-bottom: 1px #ddd solid; +} + +.center { + max-width: 860px; + margin-left: auto; + margin-right: auto; +} + +.nav-wrapper { + padding-top: 17px; + padding-bottom: 17px; + position: relative; + z-index: 3; +} + +.button { + background-color: #ddd; padding: 5px 9px; display: inline-block; - color: #06f; + color: #666; font-weight: normal; border-radius: 2px; cursor: pointer; @@ -43,223 +62,264 @@ a:hover font-size: 12px; text-decoration: none; line-height: normal; + margin-right: 4px; } -.button:hover -{ +.button:hover { background-color: #06f; color: #fff; text-decoration: none; } -#random-button -{ +.dark-bg .button { + background-color: #666; + color: #ccc; +} + +.dark-bg .button:hover { + background-color: #999; + color: #fff; +} + +.dark-bg a { + color: #ddd; +} + +#random-button { position: relative; - top: 3px; + top: 6px; } -.headline -{ - font-size: 12px; - color: #333; - margin-bottom: 10px; +.headline { + font-size: 16px; + color: #fff; + display: inline-block; + font-weight: normal; + margin-right: 20px; + position: relative; + top: 1px; } -.intro -{ - max-width: 650px; +.intro { + width: 100%; + position: absolute; + top: -100%; + background-color: #fff; + background-color: rgba(255,255,255, 0.9); + -webkit-transition: all 0.5s ease-in; + transition: all 0.5s ease-in; } -#controls -{ - float: left; - margin-top: 30px; +.intro.is-active { + top: 0; +} + +.intro .center { + padding: 30px; + max-width: 580px; + position: relative; +} + +.intro .close { + position: absolute; + top: 10px; + right: 10px; + display: block; + font-size: 16px; + background-color: transparent; + border: none; + color: #06f; +} + +.intro-button { + font-size: 17px; + padding-top: 0px; + padding-bottom: 3px; + float: right; +} + +.intro-button.is-active, +.intro-button.is-active:hover { + background-color: #ddd; + color: #666; +} + +#controls { display: none; } -#controls.is-active -{ +#controls.is-active { display: block; } - .control-wrapper - { - float: left; - width: 200px; - margin-right: 20px; - } +.control-wrapper { + display: inline-block; + width: 160px; + margin-right: 20px; +} - .control-label - { - display: block; - color: #666; - } +.control-label { + font-size: 11px; + display: block; + color: #666; + text-align: center; + max-width: 120px; +} - .control-slider - { - display: block; - float: left; - border: none; - width: 160px; - height: 1px; - margin-top: 6px; - background: #ddd; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - } +.control-slider { + display: block; + float: left; + border: none; + width: 120px; + height: 1px; + margin-top: 6px; + background: #ddd; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} - .control-number - { - display: block; - color: #333; - float: right; - border: none; - max-width: 30px; - font-family: sans-serif; - } +.control-number { + display: block; + color: #333; + float: right; + border: none; + max-width: 30px; + font-family: sans-serif; + background-color: transparent; +} -#import-input -{ +#import-input { display: none; } -.export-wrapper -{ - clear: both; - float: left; - margin-top: 30px; +.download-link { + display: none; } - .download-link - { - display: none; - } +.download-link.is-active { + display: inline-block; + margin-left: 15px; +} - .download-link.is-active - { - display: inline-block; - margin-left: 15px; - } +.download-link span { + color: #999; + display: inline-block; + text-decoration: none; + margin-left: 4px; +} - .download-link span - { - color: #999; - display: inline-block; - text-decoration: none; - margin-left: 4px; - } - -#imgur-button -{ +#imgur-button { width: 85px; } #imgur-button.is-uploading, -#imgur-button.is-uploading:hover -{ - background-color: #eaeaea; - color: #06f; +#imgur-button.is-uploading:hover { + background-color: #ddd; + color: #666; cursor: default; } - #imgur-button span - { - display: block; - width: 154px; - transition: margin-left 0.5s ease-in; - transition-property: margin-left top; - text-align: left; - overflow: hidden; - } +#imgur-button span { + display: block; + width: 154px; + -webkit-transition: margin-left 0.5s ease-in; + transition: margin-left 0.5s ease-in; + -webkit-transition-property: margin-left top; + transition-property: margin-left top; + text-align: left; + overflow: hidden; +} +#imgur-button.is-uploading span { + margin-left: -76px; +} - #imgur-button.is-uploading span - { - margin-left: -76px; - } +#imgur-button span::after { + content: 'loading…'; + display: inline-block; + padding-left: 15px; + color: #999; +} - #imgur-button span::after - { - content: 'loading…'; - display: inline-block; - padding-left: 15px; - color: #999; - } - -#imgur-url-container -{ +#imgur-url-container { display: inline-block; opacity: 0; + -webkit-transition: opacity 0.3s ease-in; transition: opacity 0.3s ease-in; } -#imgur-url-container.is-active -{ +#imgur-url-container.is-active { opacity: 1; } - #imgur-url-input - { - padding: 4px 9px; - border: 1px #CCC solid; - border-radius: 3px; - font-family: sans-serif; - font-size: 13px; - color: #7C7C7C; - } +#imgur-url-input { + padding: 5px 9px 4px 9px; + border: none; + border-radius: 2px; + font-family: sans-serif; + font-size: 13px; + color: #333; + margin-right: 7px; + position: relative; + top: 1px; +} - #imgur-url-error - { - padding: 5px 9px; - line-height: normal; - color: #999; - } +#imgur-url-error { + padding: 5px 9px; + line-height: normal; + color: #999; +} - #imgur-url-input, - #imgur-url-link, - #imgur-url-error - { - display: none; - } - - #imgur-url-container.upload-successful #imgur-url-input, - #imgur-url-container.upload-successful #imgur-url-link - { - display: inline-block; - } - - #imgur-url-container.upload-failed #imgur-url-error - { - display: inline-block; - } - -.social-link -{ +#imgur-url-input, +#imgur-url-link, +#imgur-url-error { display: none; } - .upload-successful .social-link - { - display: inline-block; +#imgur-url-container.upload-successful #imgur-url-input, +#imgur-url-container.upload-successful #imgur-url-link { + display: inline-block; +} + +#imgur-url-container.upload-failed #imgur-url-error { + display: inline-block; +} + +.social-link { + display: none; +} + +.upload-successful .social-link { + display: inline-block; +} + +.missing-feature { + clear: both; +} + +.canvas-wrapper { + width: 100%; + margin-top: 30px; + position: relative; + background-color: rgba(255, 255, 255, 0.9); + line-height: 1.7; +} + +#canvas { + margin-left: auto; + margin-right: auto; + display: block; + max-width: 100%; +} + +@media all and (max-width: 860px) { + .nav-wrapper { + text-align: center; } - -.missing-feature -{ - clear: both; -} - -.canvas-wrapper -{ - width: 100%; - clear: both; - float: left; - margin-top: 30px; - -} - #canvas - { - display: block; - max-width: 100%; - } \ No newline at end of file + .center { + padding-left: 10px; + padding-right: 10px; + } +} \ No newline at end of file From 2810d7ac765a8630c8e20b814cd1dbbf84591432 Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 29 Nov 2013 22:09:10 +0100 Subject: [PATCH 41/67] update ui; add open and close button to ui; close intro when new image is uploaded; --- index.html | 3 ++- scripts/main.js | 1 + scripts/src/dragdrop.js | 1 + scripts/src/import-button.js | 1 + scripts/src/intro.js | 1 + styles/main.css | 2 +- 6 files changed, 7 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index d4a3dd7..ddc27be 100644 --- a/index.html +++ b/index.html @@ -55,7 +55,8 @@
-

drag an image into the browser window to modify it. this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

+

drag an image into the browser window to modify it.

+

this script corrupts some bytes in a jpg image. because of the way jpg encoding works, the corrupted file still shows something. inspired by soulwires experiment in flash. this experiment was created by georg. you can follow him on twitter or explore the source code on github.

if you like this one, you can check out some of his other javascript experiments.

diff --git a/scripts/main.js b/scripts/main.js index ed519fe..879bc97 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -51,6 +51,7 @@ require( 'set-new-src' : new Signal(), 'control-set' : new Signal(), 'control-updated' : new Signal(), + 'close-intro' : new Signal(), 'image-data-url-requested' : new Signal() } }; diff --git a/scripts/src/dragdrop.js b/scripts/src/dragdrop.js index c24482d..80a7d51 100644 --- a/scripts/src/dragdrop.js +++ b/scripts/src/dragdrop.js @@ -34,6 +34,7 @@ define( ) { signals['load-file'].dispatch( event.dataTransfer.files[0] ); + signals['close-intro'].dispatch(); } } diff --git a/scripts/src/import-button.js b/scripts/src/import-button.js index ccd6a52..f101b37 100644 --- a/scripts/src/import-button.js +++ b/scripts/src/import-button.js @@ -50,6 +50,7 @@ define( ) { signals['load-file'].dispatch( event.target.files[0] ); + signals['close-intro'].dispatch(); } } diff --git a/scripts/src/intro.js b/scripts/src/intro.js index d1b12a3..1d0426e 100644 --- a/scripts/src/intro.js +++ b/scripts/src/intro.js @@ -13,6 +13,7 @@ define( signals = shared.signals; button.addEventListener( 'click', buttonClicked ); close_button.addEventListener( 'click', close ); + signals['close-intro'].add( close ); } function buttonClicked( event ) diff --git a/styles/main.css b/styles/main.css index cb5b271..1645193 100644 --- a/styles/main.css +++ b/styles/main.css @@ -129,6 +129,7 @@ a:hover { background-color: transparent; border: none; color: #06f; + cursor: pointer; } .intro-button { @@ -300,7 +301,6 @@ a:hover { .canvas-wrapper { width: 100%; - margin-top: 30px; position: relative; background-color: rgba(255, 255, 255, 0.9); line-height: 1.7; From 67487ed7be96ff0a45f7afb705cb558275e4ce0d Mon Sep 17 00:00:00 2001 From: Georg Fischer Date: Fri, 29 Nov 2013 22:16:50 +0100 Subject: [PATCH 42/67] ipdate intro button --- index.html | 5 ++--- styles/main.css | 3 --- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index ddc27be..e214cb6 100644 --- a/index.html +++ b/index.html @@ -5,8 +5,7 @@ image glitch experiment - - +