diff --git a/Android/config.xml b/Android/config.xml
new file mode 100644
index 0000000..c49e637
--- /dev/null
+++ b/Android/config.xml
@@ -0,0 +1,20 @@
+
+
+ Sketchy
+
+ Free full-featured Sketch app
+
+
+ Mahdi Dibaiee
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android/index.html b/Android/index.html
new file mode 100644
index 0000000..abc9887
--- /dev/null
+++ b/Android/index.html
@@ -0,0 +1,275 @@
+
+
+
+
+
diff --git a/Mobile/js/diff.js b/Mobile/js/diff.js
index fabab40..53ebf46 100644
--- a/Mobile/js/diff.js
+++ b/Mobile/js/diff.js
@@ -111,9 +111,9 @@ $(document).ready(function() {
}
}
- if( localStorage.getItem('sawTips') != settings.version ) {
- $('.tour').removeClass('hidden');
- localStorage.setItem('sawTips', settings.version);
+ if( !localStorage.getItem('sawVote') ) {
+ $('.vote').removeClass('hidden');
+ localStorage.setItem('sawVote', true);
}
})
diff --git a/Mobile/manifest.webapp b/Mobile/manifest.webapp
old mode 100755
new mode 100644
index b384d60..326110f
--- a/Mobile/manifest.webapp
+++ b/Mobile/manifest.webapp
@@ -1,7 +1,7 @@
{
"name": "Sketchy",
- "description": "Free Sketch/Paint app",
- "version": "1.2",
+ "description": "Free full-featured Sketch app",
+ "version": "1.2.1",
"fullscreen": "true",
"type": "privileged",
"launch_path": "/index.html",
@@ -18,7 +18,7 @@
},
"developer": {
"name": "Mahdi Dibaiee",
- "url": "https://twitter.com/mdibaiee"
+ "url": "http://dibaiee.ir/"
},
"locales": {
"en": {
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
diff --git a/Shared/css/color-picker.less b/Shared/css/color-picker.less
old mode 100755
new mode 100644
diff --git a/Shared/css/fonts.less b/Shared/css/fonts.less
old mode 100755
new mode 100644
diff --git a/Shared/css/fonts/MozTT-Bold.ttf b/Shared/css/fonts/MozTT-Bold.ttf
old mode 100755
new mode 100644
diff --git a/Shared/css/fonts/MozTT-Light.ttf b/Shared/css/fonts/MozTT-Light.ttf
old mode 100755
new mode 100644
diff --git a/Shared/css/fonts/MozTT-Medium.ttf b/Shared/css/fonts/MozTT-Medium.ttf
old mode 100755
new mode 100644
diff --git a/Shared/css/fonts/MozTT-Regular.ttf b/Shared/css/fonts/MozTT-Regular.ttf
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/bg_overlay_pressed_1.png b/Shared/css/imgs/bg_overlay_pressed_1.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/bg_overlay_pressed_2.png b/Shared/css/imgs/bg_overlay_pressed_2.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/clear.png b/Shared/css/imgs/clear.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/div_line_lg_black.png b/Shared/css/imgs/div_line_lg_black.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/div_line_sm_black.png b/Shared/css/imgs/div_line_sm_black.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/download.png b/Shared/css/imgs/download.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/header_bg_black.png b/Shared/css/imgs/header_bg_black.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/load.png b/Shared/css/imgs/load.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/menu.png b/Shared/css/imgs/menu.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/redo.png b/Shared/css/imgs/redo.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/settings.png b/Shared/css/imgs/settings.png
old mode 100755
new mode 100644
diff --git a/Shared/css/imgs/undo.png b/Shared/css/imgs/undo.png
old mode 100755
new mode 100644
diff --git a/Shared/css/main.css b/Shared/css/main.css
old mode 100755
new mode 100644
diff --git a/Shared/css/main.less b/Shared/css/main.less
old mode 100755
new mode 100644
index b610762..92abcca
--- a/Shared/css/main.less
+++ b/Shared/css/main.less
@@ -87,7 +87,7 @@ button {
left: 97%;
}
-.picker, .about, .tour {
+.picker, .about, .tour, .vote {
font-family: 'MozTT-Light';
width: 30rem;
height: 24.6rem;
@@ -102,7 +102,7 @@ button {
}
}
-.about, .tour {
+.about, .tour, .vote {
background: #262626;
padding: 1rem 2rem;;
height: 23rem;
@@ -130,7 +130,7 @@ button {
}
}
-.tour {
+.tour, .vote {
.button {
width: 30rem;
position: absolute;
@@ -139,6 +139,10 @@ button {
}
}
+.vote {
+ height: 30rem;
+}
+
header {
width: 100%;
height: 5.3rem;
diff --git a/Shared/css/seekbars.less b/Shared/css/seekbars.less
old mode 100755
new mode 100644
diff --git a/Shared/css/seekbars/images/ui/handler.png b/Shared/css/seekbars/images/ui/handler.png
old mode 100755
new mode 100644
diff --git a/Shared/css/seekbars/images/ui/handler@1.5x.png b/Shared/css/seekbars/images/ui/handler@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/seekbars/images/ui/handler@2x.png b/Shared/css/seekbars/images/ui/handler@2x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/seekbars/seekbars.css b/Shared/css/seekbars/seekbars.css
old mode 100755
new mode 100644
diff --git a/Shared/css/switches.less b/Shared/css/switches.less
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/check/danger.png b/Shared/css/switches/images/check/danger.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/check/danger@1.5x.png b/Shared/css/switches/images/check/danger@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/check/danger@2x.png b/Shared/css/switches/images/check/danger@2x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/check/default.png b/Shared/css/switches/images/check/default.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/check/default@1.5x.png b/Shared/css/switches/images/check/default@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/check/default@2x.png b/Shared/css/switches/images/check/default@2x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/radio/danger.png b/Shared/css/switches/images/radio/danger.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/radio/danger@1.5x.png b/Shared/css/switches/images/radio/danger@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/radio/danger@2x.png b/Shared/css/switches/images/radio/danger@2x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/radio/default.png b/Shared/css/switches/images/radio/default.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/radio/default@1.5x.png b/Shared/css/switches/images/radio/default@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/radio/default@2x.png b/Shared/css/switches/images/radio/default@2x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/switch/background.png b/Shared/css/switches/images/switch/background.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/switch/background@1.5x.png b/Shared/css/switches/images/switch/background@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/switch/background_off.png b/Shared/css/switches/images/switch/background_off.png
old mode 100755
new mode 100644
diff --git a/Shared/css/switches/images/switch/background_off@1.5x.png b/Shared/css/switches/images/switch/background_off@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector.less b/Shared/css/value_selector.less
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/icons/checked.png b/Shared/css/value_selector/images/icons/checked.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/icons/checked@1.5x.png b/Shared/css/value_selector/images/icons/checked@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/icons/checked@2x.png b/Shared/css/value_selector/images/icons/checked@2x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/affirmative.png b/Shared/css/value_selector/images/ui/affirmative.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/default.png b/Shared/css/value_selector/images/ui/default.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/gradient.png b/Shared/css/value_selector/images/ui/gradient.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/gradient@1.5x.png b/Shared/css/value_selector/images/ui/gradient@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/pattern.png b/Shared/css/value_selector/images/ui/pattern.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/shadow-invert.png b/Shared/css/value_selector/images/ui/shadow-invert.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/shadow-invert@1.5x.png b/Shared/css/value_selector/images/ui/shadow-invert@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/shadow-invert@2x.png b/Shared/css/value_selector/images/ui/shadow-invert@2x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/shadow.png b/Shared/css/value_selector/images/ui/shadow.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/shadow@1.5x.png b/Shared/css/value_selector/images/ui/shadow@1.5x.png
old mode 100755
new mode 100644
diff --git a/Shared/css/value_selector/images/ui/shadow@2x.png b/Shared/css/value_selector/images/ui/shadow@2x.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/MozillaFXOSIconTemplate1_overlay.png b/Shared/img/icons/MozillaFXOSIconTemplate1_overlay.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon120.png b/Shared/img/icons/icon120.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon128.png b/Shared/img/icons/icon128.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon16.png b/Shared/img/icons/icon16.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon2.png b/Shared/img/icons/icon2.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon2.svg b/Shared/img/icons/icon2.svg
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon32.png b/Shared/img/icons/icon32.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon48.png b/Shared/img/icons/icon48.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon60.png b/Shared/img/icons/icon60.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon64.png b/Shared/img/icons/icon64.png
old mode 100755
new mode 100644
diff --git a/Shared/img/icons/icon90.png b/Shared/img/icons/icon90.png
old mode 100755
new mode 100644
diff --git a/Shared/js/events.js b/Shared/js/events.js
old mode 100755
new mode 100644
index 5612ad4..93db51c
--- a/Shared/js/events.js
+++ b/Shared/js/events.js
@@ -240,7 +240,7 @@ $(document).ready(function() {
}
})
- $('.close, .tour button').on('click tap', function() {
+ $('.close, .tour button, .vote button').on('click tap', function() {
$(this).parent().addClass('hidden');
$('body').off('click tap');
})
diff --git a/Shared/js/functions.js b/Shared/js/functions.js
old mode 100755
new mode 100644
diff --git a/Shared/js/libs/color-picker-touch.js b/Shared/js/libs/color-picker-touch.js
old mode 100755
new mode 100644
diff --git a/Shared/js/libs/color-picker.js b/Shared/js/libs/color-picker.js
old mode 100755
new mode 100644
diff --git a/Shared/js/libs/mobilebrowsers.js b/Shared/js/libs/mobilebrowsers.js
old mode 100755
new mode 100644
diff --git a/Shared/js/libs/stack.js b/Shared/js/libs/stack.js
old mode 100755
new mode 100644
diff --git a/Shared/js/libs/touch.js b/Shared/js/libs/touch.js
old mode 100755
new mode 100644
diff --git a/Shared/js/libs/yepnope.min.js b/Shared/js/libs/yepnope.min.js
old mode 100755
new mode 100644
diff --git a/Shared/js/libs/zepto.min.js b/Shared/js/libs/zepto.min.js
old mode 100755
new mode 100644
diff --git a/Web/cache.appcache b/Web/cache.appcache
old mode 100755
new mode 100644
diff --git a/Web/index.html b/Web/index.html
old mode 100755
new mode 100644
diff --git a/Web/js/main.js b/Web/js/main.js
old mode 100755
new mode 100644
diff --git a/Web/manifest.webapp b/Web/manifest.webapp
old mode 100755
new mode 100644
diff --git a/build/android/.cordova/config.json b/build/android/.cordova/config.json
new file mode 100644
index 0000000..07cdca0
--- /dev/null
+++ b/build/android/.cordova/config.json
@@ -0,0 +1,9 @@
+{
+ "lib": {
+ "www": {
+ "id": "com.mdibaiee.sketchy",
+ "version": "1.2.0",
+ "uri": "https://mdibaiee.github.io/Sketchy/build/web/"
+ }
+ }
+}
diff --git a/build/android/android.zip b/build/android/android.zip
new file mode 100644
index 0000000..3743b44
Binary files /dev/null and b/build/android/android.zip differ
diff --git a/build/android/config.xml b/build/android/config.xml
new file mode 100644
index 0000000..c49e637
--- /dev/null
+++ b/build/android/config.xml
@@ -0,0 +1,20 @@
+
+
+ Sketchy
+
+ Free full-featured Sketch app
+
+
+ Mahdi Dibaiee
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/android/css/fonts/MozTT-Bold.ttf b/build/android/css/fonts/MozTT-Bold.ttf
new file mode 100644
index 0000000..8ad5fab
Binary files /dev/null and b/build/android/css/fonts/MozTT-Bold.ttf differ
diff --git a/build/android/css/fonts/MozTT-Light.ttf b/build/android/css/fonts/MozTT-Light.ttf
new file mode 100644
index 0000000..0553c17
Binary files /dev/null and b/build/android/css/fonts/MozTT-Light.ttf differ
diff --git a/build/android/css/fonts/MozTT-Medium.ttf b/build/android/css/fonts/MozTT-Medium.ttf
new file mode 100644
index 0000000..91466be
Binary files /dev/null and b/build/android/css/fonts/MozTT-Medium.ttf differ
diff --git a/build/android/css/fonts/MozTT-Regular.ttf b/build/android/css/fonts/MozTT-Regular.ttf
new file mode 100644
index 0000000..e74e0b2
Binary files /dev/null and b/build/android/css/fonts/MozTT-Regular.ttf differ
diff --git a/build/android/css/imgs/bg_overlay_pressed_1.png b/build/android/css/imgs/bg_overlay_pressed_1.png
new file mode 100644
index 0000000..753e953
Binary files /dev/null and b/build/android/css/imgs/bg_overlay_pressed_1.png differ
diff --git a/build/android/css/imgs/bg_overlay_pressed_2.png b/build/android/css/imgs/bg_overlay_pressed_2.png
new file mode 100644
index 0000000..8db4bbf
Binary files /dev/null and b/build/android/css/imgs/bg_overlay_pressed_2.png differ
diff --git a/build/android/css/imgs/clear.png b/build/android/css/imgs/clear.png
new file mode 100644
index 0000000..cfcff2e
Binary files /dev/null and b/build/android/css/imgs/clear.png differ
diff --git a/build/android/css/imgs/div_line_lg_black.png b/build/android/css/imgs/div_line_lg_black.png
new file mode 100644
index 0000000..2fd663e
Binary files /dev/null and b/build/android/css/imgs/div_line_lg_black.png differ
diff --git a/build/android/css/imgs/div_line_sm_black.png b/build/android/css/imgs/div_line_sm_black.png
new file mode 100644
index 0000000..c1b4c09
Binary files /dev/null and b/build/android/css/imgs/div_line_sm_black.png differ
diff --git a/build/android/css/imgs/download.png b/build/android/css/imgs/download.png
new file mode 100644
index 0000000..897c9f2
Binary files /dev/null and b/build/android/css/imgs/download.png differ
diff --git a/build/android/css/imgs/header_bg_black.png b/build/android/css/imgs/header_bg_black.png
new file mode 100644
index 0000000..5670021
Binary files /dev/null and b/build/android/css/imgs/header_bg_black.png differ
diff --git a/build/android/css/imgs/load.png b/build/android/css/imgs/load.png
new file mode 100644
index 0000000..193d42f
Binary files /dev/null and b/build/android/css/imgs/load.png differ
diff --git a/build/android/css/imgs/menu.png b/build/android/css/imgs/menu.png
new file mode 100644
index 0000000..c0d38c0
Binary files /dev/null and b/build/android/css/imgs/menu.png differ
diff --git a/build/android/css/imgs/redo.png b/build/android/css/imgs/redo.png
new file mode 100644
index 0000000..d2864fb
Binary files /dev/null and b/build/android/css/imgs/redo.png differ
diff --git a/build/android/css/imgs/settings.png b/build/android/css/imgs/settings.png
new file mode 100644
index 0000000..6792c46
Binary files /dev/null and b/build/android/css/imgs/settings.png differ
diff --git a/build/android/css/imgs/undo.png b/build/android/css/imgs/undo.png
new file mode 100644
index 0000000..6117001
Binary files /dev/null and b/build/android/css/imgs/undo.png differ
diff --git a/build/android/css/main.css b/build/android/css/main.css
new file mode 100644
index 0000000..acbda4a
--- /dev/null
+++ b/build/android/css/main.css
@@ -0,0 +1,650 @@
+@font-face {
+ font-family: 'MozTT-Regular';
+ src: url('fonts/MozTT-Regular.ttf');
+}
+@font-face {
+ font-family: 'MozTT-Light';
+ src: url('fonts/MozTT-Light.ttf');
+}
+@font-face {
+ font-family: 'MozTT-Medium';
+ src: url('fonts/MozTT-Medium.ttf');
+}
+@font-face {
+ font-family: 'MozTT-Bold';
+ src: url('fonts/MozTT-Bold.ttf');
+}
+/* Purty Picker Copyright 2013 Jayden Seric (MIT license): https://github.com/jaydenseric/Purty-Picker */
+/* Core: No touchy! */
+.color-picker .spectrum {
+ position: relative;
+ /* To position pin, luminosity filter */
+ background: linear-gradient(#808080, transparent), linear-gradient(90deg, #ff0000, #ff2b00, #ff5500, #ff8000, #ffaa00, #ffd500, #ffff00, #d4ff00, #aaff00, #80ff00, #55ff00, #2bff00, #00ff00, #00ff2b, #00ff55, #00ff80, #00ffaa, #00ffd5, #00ffff, #00d4ff, #00aaff, #007fff, #0055ff, #002bff, #0000ff, #2a00ff, #5500ff, #7f00ff, #aa00ff, #d400ff, #ff00ff, #ff00d4, #ff00aa, #ff0080, #ff0055, #ff002b, #ff0000);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ /* Prevent pin interaction causing content selection */
+ cursor: crosshair;
+}
+.color-picker .spectrum.active {
+ cursor: none;
+}
+.color-picker .spectrum.active .pin {
+ cursor: none;
+}
+.color-picker .spectrum > div {
+ /* Luminosity filter */
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+}
+.color-picker .spectrum .pin {
+ position: absolute;
+ cursor: move;
+}
+/* Customization: Default skin */
+.color-picker {
+ margin: 20px;
+ padding: 11px;
+ border: 1px solid #e3e3e3;
+ border-radius: 4px;
+ background-color: #f5f5f5;
+}
+.color-picker .color,
+.color-picker .luminosity {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ width: 100%;
+}
+.color-picker .format {
+ display: block;
+ margin: 0 auto 10px auto;
+}
+.color-picker .color {
+ -webkit-appearance: none;
+ border: 0;
+ border-radius: 2px;
+ padding: 10px;
+ text-align: center;
+ font-size: 11px;
+ letter-spacing: 1px;
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
+ color: rgba(0, 0, 0, 0.6);
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);
+ transition: color 0.2s;
+}
+.color-picker .color.dark {
+ color: rgba(255, 255, 255, 0.7);
+}
+.color-picker .spectrum {
+ height: 150px;
+ /* Arbitary but required */
+ overflow: hidden;
+ /* Prevent pin overflowing container */
+ border-radius: 2px;
+ margin: 10px 0;
+}
+.color-picker .spectrum > div {
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);
+}
+.color-picker .spectrum .pin {
+ margin-left: -4px;
+ margin-top: -4px;
+ width: 4px;
+ height: 4px;
+ border: 2px solid white;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);
+ border-radius: 100%;
+}
+.color-picker .luminosity {
+ margin: 0;
+}
+/* ----------------------------------
+* Seekbars
+* ---------------------------------- */
+div[role="slider"] {
+ position: relative;
+ height: 3.5rem;
+}
+div[role="slider"] > div {
+ display: block;
+ padding: 0;
+ overflow-y: hidden;
+ position: relative;
+ height: 100%;
+}
+div[role="slider"] progress {
+ width: 100%;
+ background: #000;
+ border: none;
+ height: 0.1rem;
+ display: block;
+ border-radius: 0;
+ margin-top: 1.9rem;
+}
+div[role="slider"] progress::-moz-progress-bar {
+ background: #01c5ed;
+ height: 0.6rem;
+ margin-top: -0.3rem;
+ border-radius: 0;
+}
+div[role="slider"] > label {
+ font-size: 1.5rem;
+ line-height: 3.8rem;
+ font-family: sans-serif;
+ color: #00aacb;
+ float: right;
+ padding: 0 0 0 1rem;
+ height: 3.5rem;
+ width: auto;
+}
+div[role="slider"] label:first-of-type {
+ float: left;
+ padding: 0 1rem 0 0;
+}
+div[role="slider"] > label.icon {
+ width: 3rem;
+ height: 3rem;
+ margin-top: 0.5rem;
+ font-size: 0;
+ background: no-repeat right top / 3rem auto;
+}
+div[role="slider"] > label.icon:first-of-type {
+ background-position: top left;
+}
+div[role="slider"] button {
+ width: 3.2rem;
+ height: 3.2rem;
+ background: url(seekbars/images/ui/handler.png) no-repeat center center / 3rem auto;
+ font: 0/0 a;
+ position: absolute;
+ top: 50%;
+ left: 0;
+ margin: -1.5rem 0 0 -1.6rem;
+ border-radius: 3.2rem;
+ border: solid 0.1rem transparent;
+ transition: border 0.15s ease;
+ padding: 0;
+ z-index: 10;
+}
+div[role="slider"] button:active {
+ border: solid 0.5rem #01c5ed;
+}
+/* ----------------------------------
+ * Value selector (Single & Multiple)
+ * ---------------------------------- */
+/* Main dialog setup */
+form[role="dialog"][data-type="value-selector"] {
+ background: url(value_selector/images/ui/pattern.png) repeat left top, url(value_selector/images/ui/gradient.png) no-repeat left top / 100% 100%;
+ overflow: hidden;
+ position: absolute;
+ z-index: 100;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: 0 0 7rem;
+ color: #fff;
+ font-family: sans-serif;
+}
+form[role="dialog"][data-type="value-selector"] > section {
+ padding: 0 1.5rem 0;
+ -moz-box-sizing: padding-box;
+ width: 100%;
+ height: 100%;
+ overflow: auto;
+}
+form[role="dialog"][data-type="value-selector"] h1 {
+ font-weight: 400;
+ font-size: 1.9rem;
+ line-height: 4.8rem;
+ color: #fff;
+ border-bottom: 0.1rem solid #616262;
+ background: rgba(0, 0, 0, 0.2);
+ margin: 0 -1.5rem;
+ padding: 0 3rem 1rem;
+ height: 4.8rem;
+ -moz-box-sizing: border-box;
+}
+/* Specific component code */
+form[role="dialog"][data-type="value-selector"] [role="listbox"] {
+ position: relative;
+ padding: 0;
+ margin: 0 -1.5rem;
+ max-height: calc(95%);
+ overflow: auto;
+ border-top: solid 0.1rem #222323;
+}
+form[role="dialog"][data-type="value-selector"] .scrollable:before {
+ content: "";
+ display: block;
+ position: absolute;
+ pointer-events: none;
+ top: 4.8rem;
+ left: 0;
+ right: 0;
+ bottom: 6.9rem;
+ background: url(value_selector/images/ui/shadow.png) repeat-x left top, url(value_selector/images/ui/shadow-invert.png) repeat-x left bottom;
+}
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li {
+ margin: 0;
+ padding: 0 1.5rem;
+ height: auto;
+ list-style: none;
+ position: relative;
+ font-weight: lighter;
+ font-size: 2.2rem;
+ line-height: 3.9rem;
+ color: #fff;
+ transition: background-color 0.2s ease;
+}
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li:first-child label {
+ border-top-color: transparent;
+}
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li label {
+ outline: none;
+ display: block;
+ color: #fff;
+ border-top: 0.1rem solid #666;
+ border-bottom: 0.1rem solid #000;
+}
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li:last-child label {
+ border-bottom-color: transparent;
+}
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li label span {
+ display: block;
+ padding: 1rem 1.5rem;
+ line-height: 4rem;
+ word-wrap: break-word;
+}
+/* Pressed status */
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active {
+ background-color: #00ABCC;
+}
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active label {
+ border-color: transparent;
+}
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active + li label {
+ border-top-color: #000;
+}
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li:active label span {
+ color: #fff !important;
+ background-image: none;
+}
+/* Checked status */
+form[role="dialog"][data-type="value-selector"] [role="listbox"] li[aria-selected="true"]:not([data-input]) span {
+ padding-right: 2.6rem;
+ margin-right: 1.2rem;
+ color: #00abcd;
+ background: transparent url(value_selector/images/icons/checked.png) no-repeat 100% 50%;
+ background-size: 2rem;
+}
+/* Menu & buttons setup */
+form[role="dialog"][data-type="value-selector"] menu {
+ white-space: nowrap;
+ margin: 0;
+ padding: 1.5rem;
+ border-top: solid 0.1rem rgba(255, 255, 255, 0.1);
+ background: #2d2d2d url(value_selector/images/ui/pattern.png) repeat left top;
+ display: block;
+ overflow: hidden;
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+form[role="dialog"][data-type="value-selector"] menu button::-moz-focus-inner {
+ border: none;
+ outline: none;
+}
+form[role="dialog"][data-type="value-selector"] menu button,
+.button {
+ width: calc(49.5%);
+ height: 3.8rem;
+ margin: 0 0 1rem;
+ padding: 0 1.5rem;
+ -moz-box-sizing: border-box;
+ display: inline-block;
+ vertical-align: middle;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ background: #fafafa url(value_selector/images/ui/default.png) repeat-x left bottom / auto 100%;
+ border: 0.1rem solid #a6a6a6;
+ border-radius: 0.3rem;
+ font-weight: 500;
+ font-size: 1.6rem;
+ line-height: 3.8rem;
+ color: #333;
+ text-align: center;
+ text-shadow: 0.1rem 0.1rem 0 rgba(255, 255, 255, 0.3);
+ text-decoration: none;
+ outline: none;
+}
+/* Press (default & affirmative) */
+form[role="dialog"][data-type="value-selector"] menu button:active,
+form[role="dialog"][data-type="value-selector"] menu button.affirmative:active,
+.button:active {
+ border-color: #008aaa;
+ background: #008aaa;
+ color: #333;
+}
+/* affirmative */
+form[role="dialog"][data-type="value-selector"] menu button.affirmative,
+.button.affirmative {
+ background-image: url(value_selector/images/ui/affirmative.png);
+ background-color: #00caf2;
+ border-color: #008eab;
+}
+form[role="dialog"][data-type="value-selector"] menu button:last-child {
+ margin-left: 1rem;
+}
+form[role="dialog"][data-type="value-selector"] menu button,
+form[role="dialog"][data-type="value-selector"] menu button:first-child {
+ margin: 0;
+}
+form[role="dialog"][data-type="value-selector"] menu button.full,
+.button.full {
+ width: 100%;
+}
+/* Right to left tweaks */
+html[dir="rtl"] #value-selector li input:checked + span,
+html[dir="rtl"] #value-selector li[aria-selected="true"] span {
+ padding-left: 2.6rem;
+ margin-left: 1.2rem;
+}
+html,
+body {
+ margin: 0;
+ font-size: 10px;
+ overflow: hidden;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+}
+*::-moz-focus-inner {
+ border: none;
+}
+*:focus {
+ outline: none;
+}
+.hidden {
+ display: none !important;
+ visibility: none !important;
+}
+div#container {
+ position: absolute;
+}
+canvas {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+canvas:first-of-type {
+ background: white;
+}
+.separator {
+ display: block;
+ height: 4.8rem;
+ width: 0.1rem;
+}
+.separator.long {
+ background: url('imgs/div_line_lg_black.png');
+}
+.separator.small {
+ background: url('imgs/div_line_sm_black.png');
+}
+.separator.left {
+ float: left;
+}
+.separator.right {
+ float: right;
+}
+.separator.menu {
+ position: relative;
+ left: -3rem;
+}
+.overlay {
+ z-index: 9999;
+ position: absolute;
+ left: 0;
+ top: 5.3rem;
+}
+button {
+ -moz-appearance: none;
+ z-index: 1;
+ position: relative;
+ border: none;
+}
+.close {
+ display: block;
+ width: 2rem;
+ height: 2rem;
+ padding: 0 0 0.2rem 0.2rem;
+ font-size: 10pt;
+ border: 1px solid #e3e3e3;
+ border-radius: 50%;
+ position: absolute;
+ text-align: center;
+ top: -2%;
+ left: 97%;
+}
+.picker,
+.about,
+.tour,
+.vote {
+ font-family: 'MozTT-Light';
+ width: 30rem;
+ height: 24.6rem;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ margin-top: -12.3rem;
+ margin-left: -15rem;
+}
+.picker .color-picker,
+.about .color-picker,
+.tour .color-picker,
+.vote .color-picker {
+ margin: 0;
+}
+.about,
+.tour,
+.vote {
+ background: #262626;
+ padding: 1rem 2rem;
+ height: 23rem;
+ margin-top: -11.5rem;
+ margin-left: -17rem;
+ border-radius: 0.2rem;
+ color: white;
+ box-shadow: 0 0 0.3rem black;
+}
+.about a,
+.tour a,
+.vote a,
+.about a:link,
+.tour a:link,
+.vote a:link,
+.about a:visited,
+.tour a:visited,
+.vote a:visited,
+.about a:active,
+.tour a:active,
+.vote a:active {
+ color: white;
+}
+.about .close,
+.tour .close,
+.vote .close {
+ background: #262626;
+ color: white;
+ border: 1px solid gray;
+}
+.about p,
+.tour p,
+.vote p {
+ font-size: 11pt;
+}
+.about span,
+.tour span,
+.vote span {
+ font-size: 8pt;
+}
+.tour .button,
+.vote .button {
+ width: 30rem;
+ position: absolute;
+ bottom: 1rem;
+ left: 1.8rem;
+}
+.vote {
+ height: 30rem;
+}
+header {
+ width: 100%;
+ height: 5.3rem;
+ background: url('imgs/header_bg_black.png');
+}
+header button {
+ width: 5rem;
+ height: 5rem;
+}
+header .menu {
+ background: url('imgs/menu.png') -12px center no-repeat;
+ float: left;
+}
+header .menu:active {
+ background: url('imgs/menu.png') -12px center no-repeat, url('imgs/bg_overlay_pressed_1.png') left no-repeat;
+}
+header .save {
+ background: url('imgs/download.png') center center no-repeat;
+ float: right;
+}
+header .save:active {
+ background: url('imgs/download.png') center center no-repeat, url('imgs/bg_overlay_pressed_2.png') center center;
+}
+header .load {
+ background: url('imgs/load.png') center center no-repeat;
+ float: right;
+}
+header .load:active {
+ background: url('imgs/load.png') center center no-repeat, url('imgs/bg_overlay_pressed_2.png') center center;
+}
+header #title {
+ color: white;
+ font-size: 11pt;
+ font-family: 'MozTT-Regular';
+ float: left;
+ margin: 1.5rem 0;
+ position: relative;
+ left: -2rem;
+}
+#menu {
+ width: 15.4rem;
+ height: 100%;
+ display: block;
+ background: #262626;
+ position: absolute;
+ left: -15.4rem;
+ top: 5rem;
+ color: white;
+ transition: left 0.3s ease-out;
+ border-collapse: collapse;
+ overflow: hidden;
+}
+#menu.pulled {
+ left: 0;
+ transition: left 0.3s ease-out;
+}
+#menu button[id^='set'],
+#menu p,
+#menu .bottom button {
+ background: none;
+ display: block;
+ width: 75%;
+ color: white;
+ text-align: left;
+ margin: 1rem 2.5rem;
+ font-family: 'MozTT-Light' !important;
+ font-size: 9pt;
+ padding: 0 0.6rem;
+ cursor: pointer;
+}
+#menu p {
+ width: 65%;
+}
+#menu span {
+ float: right;
+ font-size: 7pt;
+ padding-top: 0.3rem;
+}
+#menu div[role='slider'] {
+ width: 60%;
+ float: right;
+ margin: 0 2rem 0 0;
+}
+#menu div[role='slider'] div {
+ overflow: visible;
+}
+#menu div[role='slider'] div button {
+ margin-top: -3.4rem;
+ left: 0%;
+}
+#menu hr {
+ clear: both;
+ padding: 0.7rem 0;
+ margin-bottom: 0.7rem;
+ border: none;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.3);
+}
+#menu *[class^='icon'] {
+ display: block;
+ margin: 1rem 0.5rem;
+ font-family: 'MozTT-Regular' !important;
+}
+#menu *[class^='icon']:nth-of-type(2) {
+ padding-top: 0.5rem;
+}
+#menu *[class^='icon']:before {
+ content: '';
+ background-size: 2rem;
+ width: 2rem;
+ height: 2rem;
+ display: block;
+ float: left;
+ margin: -0.3rem 0.5rem 0 0;
+}
+#menu .icon-settings:before {
+ background-image: url('imgs/settings.png');
+}
+#menu .icon-clear:before {
+ background-image: url('imgs/clear.png');
+}
+#menu .icon-undo:before {
+ background-image: url('imgs/undo.png');
+}
+#menu .icon-redo:before {
+ background-image: url('imgs/redo.png');
+}
+#menu .options {
+ display: table-row;
+ vertical-align: top;
+ margin-top: 1rem;
+ width: 100%;
+}
+#menu .bottom {
+ width: 100%;
+ position: absolute;
+ bottom: 5rem;
+}
+#menu .bottom button[class^='icon'] {
+ margin-left: 3.5rem;
+}
+#menu .bottom button {
+ margin-left: 5rem;
+}
diff --git a/build/android/css/seekbars/images/ui/handler.png b/build/android/css/seekbars/images/ui/handler.png
new file mode 100644
index 0000000..246b7b4
Binary files /dev/null and b/build/android/css/seekbars/images/ui/handler.png differ
diff --git a/build/android/css/seekbars/images/ui/handler@1.5x.png b/build/android/css/seekbars/images/ui/handler@1.5x.png
new file mode 100644
index 0000000..26a5092
Binary files /dev/null and b/build/android/css/seekbars/images/ui/handler@1.5x.png differ
diff --git a/build/android/css/seekbars/images/ui/handler@2x.png b/build/android/css/seekbars/images/ui/handler@2x.png
new file mode 100644
index 0000000..9a69e77
Binary files /dev/null and b/build/android/css/seekbars/images/ui/handler@2x.png differ
diff --git a/build/android/css/seekbars/seekbars.css b/build/android/css/seekbars/seekbars.css
new file mode 100644
index 0000000..a92a477
--- /dev/null
+++ b/build/android/css/seekbars/seekbars.css
@@ -0,0 +1,79 @@
+/* ----------------------------------
+* Seekbars
+* ---------------------------------- */
+div[role="slider"] {
+ position: relative;
+ height: 3.5rem;
+}
+
+div[role="slider"] > div {
+ display: block;
+ overflow: hidden;
+ padding: 0;
+ position: relative;
+ height: 100%;
+}
+
+div[role="slider"] progress {
+ width: 100%;
+ background: #000;
+ border: none;
+ height: 0.1rem;
+ display: block;
+ border-radius: 0;
+ margin-top: 1.9rem;
+}
+
+div[role="slider"] progress::-moz-progress-bar {
+ background: #01c5ed;
+ height: 0.6rem;
+ margin-top: -0.3rem;
+ border-radius: 0;
+}
+
+div[role="slider"] > label {
+ font-size: 1.5rem;
+ line-height: 3.8rem;
+ font-family: sans-serif;
+ color: #00aacb;
+ float: right;
+ padding: 0 0 0 1rem;
+ height: 3.5rem;
+ width: auto;
+}
+
+div[role="slider"] label:first-of-type {
+ float: left;
+ padding: 0 1rem 0 0;
+}
+
+div[role="slider"] > label.icon {
+ width: 3rem;
+ height: 3rem;
+ margin-top: 0.5rem;
+ font-size: 0;
+ background: no-repeat right top / 3rem auto;
+}
+
+div[role="slider"] > label.icon:first-of-type {
+ background-position: top left;
+}
+
+div[role="slider"] button {
+ width: 3.2rem;
+ height: 3.2rem;
+ background: url(seekbars/images/ui/handler.png) no-repeat center center / 3rem auto;
+ font: 0/0 a;
+ position: absolute;
+ top: 50%;
+ left: 0;
+ margin: -1.5rem 0 0 -1.6rem;
+ border-radius: 3.2rem;
+ border: solid 0.1rem transparent;
+ transition: border 0.15s ease;
+ padding: 0;
+}
+
+div[role="slider"] button:active {
+ border: solid 0.5rem #01c5ed;
+}
diff --git a/build/android/css/switches/images/check/danger.png b/build/android/css/switches/images/check/danger.png
new file mode 100644
index 0000000..ed1f267
Binary files /dev/null and b/build/android/css/switches/images/check/danger.png differ
diff --git a/build/android/css/switches/images/check/danger@1.5x.png b/build/android/css/switches/images/check/danger@1.5x.png
new file mode 100644
index 0000000..8d4b61d
Binary files /dev/null and b/build/android/css/switches/images/check/danger@1.5x.png differ
diff --git a/build/android/css/switches/images/check/danger@2x.png b/build/android/css/switches/images/check/danger@2x.png
new file mode 100644
index 0000000..7befd67
Binary files /dev/null and b/build/android/css/switches/images/check/danger@2x.png differ
diff --git a/build/android/css/switches/images/check/default.png b/build/android/css/switches/images/check/default.png
new file mode 100644
index 0000000..9f188bb
Binary files /dev/null and b/build/android/css/switches/images/check/default.png differ
diff --git a/build/android/css/switches/images/check/default@1.5x.png b/build/android/css/switches/images/check/default@1.5x.png
new file mode 100644
index 0000000..8c25cae
Binary files /dev/null and b/build/android/css/switches/images/check/default@1.5x.png differ
diff --git a/build/android/css/switches/images/check/default@2x.png b/build/android/css/switches/images/check/default@2x.png
new file mode 100644
index 0000000..3e19692
Binary files /dev/null and b/build/android/css/switches/images/check/default@2x.png differ
diff --git a/build/android/css/switches/images/radio/danger.png b/build/android/css/switches/images/radio/danger.png
new file mode 100644
index 0000000..d285887
Binary files /dev/null and b/build/android/css/switches/images/radio/danger.png differ
diff --git a/build/android/css/switches/images/radio/danger@1.5x.png b/build/android/css/switches/images/radio/danger@1.5x.png
new file mode 100644
index 0000000..3b6a7d2
Binary files /dev/null and b/build/android/css/switches/images/radio/danger@1.5x.png differ
diff --git a/build/android/css/switches/images/radio/danger@2x.png b/build/android/css/switches/images/radio/danger@2x.png
new file mode 100644
index 0000000..812f9a3
Binary files /dev/null and b/build/android/css/switches/images/radio/danger@2x.png differ
diff --git a/build/android/css/switches/images/radio/default.png b/build/android/css/switches/images/radio/default.png
new file mode 100644
index 0000000..086d61a
Binary files /dev/null and b/build/android/css/switches/images/radio/default.png differ
diff --git a/build/android/css/switches/images/radio/default@1.5x.png b/build/android/css/switches/images/radio/default@1.5x.png
new file mode 100644
index 0000000..27ead41
Binary files /dev/null and b/build/android/css/switches/images/radio/default@1.5x.png differ
diff --git a/build/android/css/switches/images/radio/default@2x.png b/build/android/css/switches/images/radio/default@2x.png
new file mode 100644
index 0000000..a93f80b
Binary files /dev/null and b/build/android/css/switches/images/radio/default@2x.png differ
diff --git a/build/android/css/switches/images/switch/background.png b/build/android/css/switches/images/switch/background.png
new file mode 100644
index 0000000..99bfe33
Binary files /dev/null and b/build/android/css/switches/images/switch/background.png differ
diff --git a/build/android/css/switches/images/switch/background@1.5x.png b/build/android/css/switches/images/switch/background@1.5x.png
new file mode 100644
index 0000000..d1c2bd5
Binary files /dev/null and b/build/android/css/switches/images/switch/background@1.5x.png differ
diff --git a/build/android/css/switches/images/switch/background_off.png b/build/android/css/switches/images/switch/background_off.png
new file mode 100644
index 0000000..963a0d1
Binary files /dev/null and b/build/android/css/switches/images/switch/background_off.png differ
diff --git a/build/android/css/switches/images/switch/background_off@1.5x.png b/build/android/css/switches/images/switch/background_off@1.5x.png
new file mode 100644
index 0000000..c7bb7f5
Binary files /dev/null and b/build/android/css/switches/images/switch/background_off@1.5x.png differ
diff --git a/build/android/css/value_selector/images/icons/checked.png b/build/android/css/value_selector/images/icons/checked.png
new file mode 100644
index 0000000..69d5c3d
Binary files /dev/null and b/build/android/css/value_selector/images/icons/checked.png differ
diff --git a/build/android/css/value_selector/images/icons/checked@1.5x.png b/build/android/css/value_selector/images/icons/checked@1.5x.png
new file mode 100644
index 0000000..490dded
Binary files /dev/null and b/build/android/css/value_selector/images/icons/checked@1.5x.png differ
diff --git a/build/android/css/value_selector/images/icons/checked@2x.png b/build/android/css/value_selector/images/icons/checked@2x.png
new file mode 100644
index 0000000..c1a6fbd
Binary files /dev/null and b/build/android/css/value_selector/images/icons/checked@2x.png differ
diff --git a/build/android/css/value_selector/images/ui/affirmative.png b/build/android/css/value_selector/images/ui/affirmative.png
new file mode 100644
index 0000000..c1823eb
Binary files /dev/null and b/build/android/css/value_selector/images/ui/affirmative.png differ
diff --git a/build/android/css/value_selector/images/ui/default.png b/build/android/css/value_selector/images/ui/default.png
new file mode 100644
index 0000000..a174b67
Binary files /dev/null and b/build/android/css/value_selector/images/ui/default.png differ
diff --git a/build/android/css/value_selector/images/ui/gradient.png b/build/android/css/value_selector/images/ui/gradient.png
new file mode 100644
index 0000000..d2e6f5b
Binary files /dev/null and b/build/android/css/value_selector/images/ui/gradient.png differ
diff --git a/build/android/css/value_selector/images/ui/gradient@1.5x.png b/build/android/css/value_selector/images/ui/gradient@1.5x.png
new file mode 100644
index 0000000..0e420cd
Binary files /dev/null and b/build/android/css/value_selector/images/ui/gradient@1.5x.png differ
diff --git a/build/android/css/value_selector/images/ui/pattern.png b/build/android/css/value_selector/images/ui/pattern.png
new file mode 100644
index 0000000..af03f56
Binary files /dev/null and b/build/android/css/value_selector/images/ui/pattern.png differ
diff --git a/build/android/css/value_selector/images/ui/shadow-invert.png b/build/android/css/value_selector/images/ui/shadow-invert.png
new file mode 100644
index 0000000..b1b905f
Binary files /dev/null and b/build/android/css/value_selector/images/ui/shadow-invert.png differ
diff --git a/build/android/css/value_selector/images/ui/shadow-invert@1.5x.png b/build/android/css/value_selector/images/ui/shadow-invert@1.5x.png
new file mode 100644
index 0000000..ee2dc1c
Binary files /dev/null and b/build/android/css/value_selector/images/ui/shadow-invert@1.5x.png differ
diff --git a/build/android/css/value_selector/images/ui/shadow-invert@2x.png b/build/android/css/value_selector/images/ui/shadow-invert@2x.png
new file mode 100644
index 0000000..15c95ed
Binary files /dev/null and b/build/android/css/value_selector/images/ui/shadow-invert@2x.png differ
diff --git a/build/android/css/value_selector/images/ui/shadow.png b/build/android/css/value_selector/images/ui/shadow.png
new file mode 100644
index 0000000..728fe77
Binary files /dev/null and b/build/android/css/value_selector/images/ui/shadow.png differ
diff --git a/build/android/css/value_selector/images/ui/shadow@1.5x.png b/build/android/css/value_selector/images/ui/shadow@1.5x.png
new file mode 100644
index 0000000..44b35b4
Binary files /dev/null and b/build/android/css/value_selector/images/ui/shadow@1.5x.png differ
diff --git a/build/android/css/value_selector/images/ui/shadow@2x.png b/build/android/css/value_selector/images/ui/shadow@2x.png
new file mode 100644
index 0000000..f515eff
Binary files /dev/null and b/build/android/css/value_selector/images/ui/shadow@2x.png differ
diff --git a/build/android/index.html b/build/android/index.html
new file mode 100644
index 0000000..abc9887
--- /dev/null
+++ b/build/android/index.html
@@ -0,0 +1,275 @@
+
+
+
+
+
Sketchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sketchy
+
Sketchy is a free sketch / paint application for Firefox. Current version: 1.2
+
Developer
+
Sketchy was found by Mahdi Dibaiee. More info: About.me
+
+ Contact:
+ Twitter •
+ Email
+
+ Changelog
+
+
x
+
+
+
+
Tips
+
Hey! Let me give you some tips to help you along the way,
+
To finish a line, hold your finger for 1 second on mobile, or double click on desktop.
+
Line join, fill / stroke are applied when the line is finished.
+
If you found something missing, please get in touch with us.
+
Gotcha!
+
x
+
+
+
+
King of Firefox OS Apps
+
Hey! FirefoxOSGuide.com has started a competition, judging the best Firefox OS application by users' vote. Would you consider taking a few minutes to vote for us, please?
+
We're working to add new features to Sketchy like sharing and maybe some 'hosted' addons.
+
If you would like to see something in Sketchy's new version, please get in touch with us.
+
+
What's your Favorite Firefox OS application?
+
+
Original post on Firefox OS Guide
+
OK!
+
x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/android/js/diff.js b/build/android/js/diff.js
new file mode 100644
index 0000000..b5500e2
--- /dev/null
+++ b/build/android/js/diff.js
@@ -0,0 +1 @@
+$(document).ready(function(){$("*").off("click mousemove mousedown mouseup mouseleave").on("click mousemove mousedown mouseup mouseleave",function(a){a.preventDefault}),window.save=function(){var a=c.getImageData(0,0,width(),height());switch(save.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var b=$c[0].toDataURL();if("sketchy project"==save.type){var d,e=JSON.parse(localStorage.getItem("projects"));e&&e.some(function(a,b){return a.name==save["file name"]?(d=b,!0):!1})?confirm("A sketch with this name already exists. Do you want to overwrite "+save["file name"]+"?")&&(console.log(d),e[d]={name:save["file name"],data:b,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(e))):(e?e.push({name:save["file name"],data:b,points:window.points,settings:settings}):e=[{name:save["file name"],data:b,points:window.points,settings:settings}],localStorage.setItem("projects",JSON.stringify(e)))}else{window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(a){{var c=dataToBlob(b);a.root.getFile(save["file name"]+".png",{create:!0},function(a){a.createWriter(function(a){a.write(c),alert("Your Sketch was saved successfuly: "+this.result)},function(){alert("Something bad happened trying to save your sketch "+save["file name"]+"\n Possible reasons:\n Duplicate Name \n Not enough permission")})})}},function(a){alert("Couldn't access filesystem\n"+a.message)})}c.putImageData(a,0,0)},window.load=function(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==load.file})[0],b=document.createElement("img");b.src=a.data,b.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(b,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}},localStorage.getItem("sawVote")||($(".vote").removeClass("hidden"),localStorage.setItem("sawVote",!0))});
\ No newline at end of file
diff --git a/build/mobile/css/main.css b/build/mobile/css/main.css
index 40698f9..acbda4a 100644
--- a/build/mobile/css/main.css
+++ b/build/mobile/css/main.css
@@ -435,7 +435,8 @@ button {
}
.picker,
.about,
-.tour {
+.tour,
+.vote {
font-family: 'MozTT-Light';
width: 30rem;
height: 24.6rem;
@@ -447,11 +448,13 @@ button {
}
.picker .color-picker,
.about .color-picker,
-.tour .color-picker {
+.tour .color-picker,
+.vote .color-picker {
margin: 0;
}
.about,
-.tour {
+.tour,
+.vote {
background: #262626;
padding: 1rem 2rem;
height: 23rem;
@@ -463,34 +466,45 @@ button {
}
.about a,
.tour a,
+.vote a,
.about a:link,
.tour a:link,
+.vote a:link,
.about a:visited,
.tour a:visited,
+.vote a:visited,
.about a:active,
-.tour a:active {
+.tour a:active,
+.vote a:active {
color: white;
}
.about .close,
-.tour .close {
+.tour .close,
+.vote .close {
background: #262626;
color: white;
border: 1px solid gray;
}
.about p,
-.tour p {
+.tour p,
+.vote p {
font-size: 11pt;
}
.about span,
-.tour span {
+.tour span,
+.vote span {
font-size: 8pt;
}
-.tour .button {
+.tour .button,
+.vote .button {
width: 30rem;
position: absolute;
bottom: 1rem;
left: 1.8rem;
}
+.vote {
+ height: 30rem;
+}
header {
width: 100%;
height: 5.3rem;
diff --git a/build/mobile/index.html b/build/mobile/index.html
index 563345e..abc9887 100644
--- a/build/mobile/index.html
+++ b/build/mobile/index.html
@@ -238,6 +238,19 @@
x
+
diff --git a/build/mobile/js/diff.js b/build/mobile/js/diff.js
index 58f5503..3db3455 100644
--- a/build/mobile/js/diff.js
+++ b/build/mobile/js/diff.js
@@ -1 +1 @@
-$(document).ready(function(){$("*").off("click mousemove mousedown mouseup mouseleave").on("click mousemove mousedown mouseup mouseleave",function(a){a.preventDefault}),$('a[href^="http"]').tap(function(a){a.preventDefault();{var b=$(this).attr("href");new MozActivity({name:"view",data:{type:"url",url:b}})}return!1}).click(function(a){return a.preventDefault(),!1}),$('a[href^="mailto"]').tap(function(a){a.preventDefault();new MozActivity({name:"new",data:{type:"mail",url:$(this).attr("href")}});return!1}).click(function(a){return a.preventDefault(),!1}),window.save=function(){var a=c.getImageData(0,0,width(),height());switch(save.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var b=$c[0].toDataURL();if("sketchy project"==save.type){var d,e=JSON.parse(localStorage.getItem("projects"));e&&e.some(function(a,b){return a.name==save["file name"]?(d=b,!0):!1})?confirm("A sketch with this name already exists. Do you want to overwrite "+save["file name"]+"?")&&(console.log(d),e[d]={name:save["file name"],data:b,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(e))):(e?e.push({name:save["file name"],data:b,points:window.points,settings:settings}):e=[{name:save["file name"],data:b,points:window.points,settings:settings}],localStorage.setItem("projects",JSON.stringify(e)))}else{var f=navigator.getDeviceStorage("pictures"),g=dataToBlob(b),h=f.addNamed(g,save["file name"]+".png");h.onsuccess=function(){alert("Your Sketch was saved successfuly: "+this.result)},h.onerror=function(){alert("Something bad happened trying to save your sketch "+save["file name"]+"\n Possible reasons:\n Duplicate Name \n Not enough permission")}}c.putImageData(a,0,0)},window.load=function(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==load.file})[0],b=document.createElement("img");b.src=a.data,b.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(b,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}},localStorage.getItem("sawTips")!=settings.version&&($(".tour").removeClass("hidden"),localStorage.setItem("sawTips",settings.version))});
\ No newline at end of file
+$(document).ready(function(){$("*").off("click mousemove mousedown mouseup mouseleave").on("click mousemove mousedown mouseup mouseleave",function(a){a.preventDefault}),$('a[href^="http"]').tap(function(a){a.preventDefault();{var b=$(this).attr("href");new MozActivity({name:"view",data:{type:"url",url:b}})}return!1}).click(function(a){return a.preventDefault(),!1}),$('a[href^="mailto"]').tap(function(a){a.preventDefault();new MozActivity({name:"new",data:{type:"mail",url:$(this).attr("href")}});return!1}).click(function(a){return a.preventDefault(),!1}),window.save=function(){var a=c.getImageData(0,0,width(),height());switch(save.background){case"white":c.fillStyle="white",c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.fillStyle=settings.color,c.globalCompositeOperation=settings.composite;break;case"current color":c.fillStyle=settings.bg,c.globalCompositeOperation="destination-over",c.fillRect(0,0,width(),height()),c.globalCompositeOperation=settings.composite}var b=$c[0].toDataURL();if("sketchy project"==save.type){var d,e=JSON.parse(localStorage.getItem("projects"));e&&e.some(function(a,b){return a.name==save["file name"]?(d=b,!0):!1})?confirm("A sketch with this name already exists. Do you want to overwrite "+save["file name"]+"?")&&(console.log(d),e[d]={name:save["file name"],data:b,points:window.points,settings:settings},localStorage.setItem("projects",JSON.stringify(e))):(e?e.push({name:save["file name"],data:b,points:window.points,settings:settings}):e=[{name:save["file name"],data:b,points:window.points,settings:settings}],localStorage.setItem("projects",JSON.stringify(e)))}else{var f=navigator.getDeviceStorage("pictures"),g=dataToBlob(b),h=f.addNamed(g,save["file name"]+".png");h.onsuccess=function(){alert("Your Sketch was saved successfuly: "+this.result)},h.onerror=function(){alert("Something bad happened trying to save your sketch "+save["file name"]+"\n Possible reasons:\n Duplicate Name \n Not enough permission")}}c.putImageData(a,0,0)},window.load=function(){var a=JSON.parse(localStorage.getItem("projects")).filter(function(a){return a.name==load.file})[0],b=document.createElement("img");b.src=a.data,b.onload=function(){c.clearRect(0,0,width(),height()),c.drawImage(b,0,0),window.points=a.points,window.points.history=[{data:c.createImageData($c.width(),$c.height()),points:[]},{data:c.getImageData(0,0,width(),height()),points:a.points}],$c.first().css("background",a.settings.bg),window.settings.bg=a.settings.bg}},localStorage.getItem("sawVote")||($(".vote").removeClass("hidden"),localStorage.setItem("sawVote",!0))});
\ No newline at end of file
diff --git a/build/mobile/js/events.js b/build/mobile/js/events.js
index 5820938..8d6dc86 100644
--- a/build/mobile/js/events.js
+++ b/build/mobile/js/events.js
@@ -1 +1 @@
-"use strict";$(document).ready(function(){$(".menu").on("click tap",function(){$("#menu").toggleClass("pulled")}),$(".save").on("click tap",function(){$("#save").removeClass("hidden")}),$(".load").on("click tap",function(){$("#load").removeClass("hidden"),$("#load li, #load p").remove();var a=JSON.parse(localStorage.getItem("projects"));if(!a||a.length<1)return void $("#load ol").append($("
No sketch found.
"));for(var c=0,d=a.length;d>c;c++)$("#load ol").append($("
"+a[c].name+" "));b.find("li").off("click").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Current Color"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2)").removeClass("hidden")})}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Current Color"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2) li").removeClass("hidden")}),$c.last().on("mousedown touchstart",function(a){a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]);var b=relative(a.pageX,a.pageY);startPoint(b.x,b.y),window.active=!0}).on("mousemove touchmove",function(a){if(a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]),window.active&&"line"!=settings.type){var b=relative(a.pageX,a.pageY);drawPoint(b.x,b.y)}}).on("mouseup touchend",function(a){if(a.preventDefault(),window.active=!1,"eraser"!=settings.type){if(window.points.history.last
div").addClass("hidden"),$("#menu div.options > .general, #menu div.options > ."+c).removeClass("hidden")),$(this).parents("form").addClass("hidden")}),a.submit(function(a){a.preventDefault(),$(this).addClass("hidden")});var b=$("form.confirm");b.each(function(){$(this).find("li").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$(this).find("button").last().on("click tap",function(a){a.preventDefault();var b=$(this).parents("form").attr("id");$(this).parents("form").find("h1").each(function(a){if(a>0){var c=$(this).html().toLowerCase(),d=$(this).parent().find("ol:nth-of-type("+a+") li[aria-selected] span").html();"file name"!==c&&"file"!==c&&(d=d.toLowerCase()),window[b][c]=d}}),$(this).parents("form").addClass("hidden"),window[b]()}),$(this).find("button").first().on("click tap",function(a){a.preventDefault(),$(this).parents("form").addClass("hidden")})});var d=$('button[id^="set"]');d.each(function(){var a=/set(.*)/.exec($(this).attr("id"))[1];return"color"==a||"bg"==a?$(this).on("click tap",function(){$(".picker").removeClass("hidden"),$(".picker").attr("data-caller",a),setTimeout(function(){$("body").on("click tap","canvas, #menu, header",function(){$(".picker").addClass("hidden"),$("body").off("click tap")})},500)}):void $(this).on("click tap",function(b){b.preventDefault(),$('form[id="'+a+'"]').removeClass("hidden")})});var e;$('div[role="slider"] button').on("mousedown touchstart",function(){$(this).attr("data-moving","true"),e||(e=$('div[role="slider"] button').offset().left)}).on("mousemove touchmove",function(a){if($(this).attr("data-moving")){a.changedTouches&&(a=a.changedTouches[0]);var b=parseInt(a.pageX-e-15),c=$("."+$(this).parents('div[role="slider"]').attr("class")),d=c.find("progress"),f=+d.attr("max"),g=+d.attr("min");if(f>=b&&b>=g){c.find("button").css("left",b+"%"),d.attr("value",b);var h=c.attr("class");settings[h]=b,$("#"+h+" span").html(b)}}}).on("mouseup mouseleave touchend",function(){$(this).removeAttr("data-moving")}),$(".fill, .stroke").on("click tap",function(){var a=$("."+$(this).attr("class")).find("span");"Yes"==a.html()?(a.html("No"),settings[$(this).attr("class")]=!1):(a.html("Yes"),settings[$(this).attr("class")]=!0)}),$(".close, .tour button").on("click tap",function(){$(this).parent().addClass("hidden"),$("body").off("click tap")}),$("#clear").on("click tap",function(){c.clear();var a=window.points.history;window.points=[],window.points.history=a,window.points.history.lastNo sketch found."));for(var c=0,d=a.length;d>c;c++)$("#load ol").append($(""+a[c].name+" "));b.find("li").off("click").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Current Color"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2)").removeClass("hidden")})}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Current Color"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2) li").removeClass("hidden")}),$c.last().on("mousedown touchstart",function(a){a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]);var b=relative(a.pageX,a.pageY);startPoint(b.x,b.y),window.active=!0}).on("mousemove touchmove",function(a){if(a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]),window.active&&"line"!=settings.type){var b=relative(a.pageX,a.pageY);drawPoint(b.x,b.y)}}).on("mouseup touchend",function(a){if(a.preventDefault(),window.active=!1,"eraser"!=settings.type){if(window.points.history.last div").addClass("hidden"),$("#menu div.options > .general, #menu div.options > ."+c).removeClass("hidden")),$(this).parents("form").addClass("hidden")}),a.submit(function(a){a.preventDefault(),$(this).addClass("hidden")});var b=$("form.confirm");b.each(function(){$(this).find("li").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$(this).find("button").last().on("click tap",function(a){a.preventDefault();var b=$(this).parents("form").attr("id");$(this).parents("form").find("h1").each(function(a){if(a>0){var c=$(this).html().toLowerCase(),d=$(this).parent().find("ol:nth-of-type("+a+") li[aria-selected] span").html();"file name"!==c&&"file"!==c&&(d=d.toLowerCase()),window[b][c]=d}}),$(this).parents("form").addClass("hidden"),window[b]()}),$(this).find("button").first().on("click tap",function(a){a.preventDefault(),$(this).parents("form").addClass("hidden")})});var d=$('button[id^="set"]');d.each(function(){var a=/set(.*)/.exec($(this).attr("id"))[1];return"color"==a||"bg"==a?$(this).on("click tap",function(){$(".picker").removeClass("hidden"),$(".picker").attr("data-caller",a),setTimeout(function(){$("body").on("click tap","canvas, #menu, header",function(){$(".picker").addClass("hidden"),$("body").off("click tap")})},500)}):void $(this).on("click tap",function(b){b.preventDefault(),$('form[id="'+a+'"]').removeClass("hidden")})});var e;$('div[role="slider"] button').on("mousedown touchstart",function(){$(this).attr("data-moving","true"),e||(e=$('div[role="slider"] button').offset().left)}).on("mousemove touchmove",function(a){if($(this).attr("data-moving")){a.changedTouches&&(a=a.changedTouches[0]);var b=parseInt(a.pageX-e-15),c=$("."+$(this).parents('div[role="slider"]').attr("class")),d=c.find("progress"),f=+d.attr("max"),g=+d.attr("min");if(f>=b&&b>=g){c.find("button").css("left",b+"%"),d.attr("value",b);var h=c.attr("class");settings[h]=b,$("#"+h+" span").html(b)}}}).on("mouseup mouseleave touchend",function(){$(this).removeAttr("data-moving")}),$(".fill, .stroke").on("click tap",function(){var a=$("."+$(this).attr("class")).find("span");"Yes"==a.html()?(a.html("No"),settings[$(this).attr("class")]=!1):(a.html("Yes"),settings[$(this).attr("class")]=!0)}),$(".close, .tour button, .vote button").on("click tap",function(){$(this).parent().addClass("hidden"),$("body").off("click tap")}),$("#clear").on("click tap",function(){c.clear();var a=window.points.history;window.points=[],window.points.history=a,window.points.history.lastNo sketch found."));for(var c=0,d=a.length;d>c;c++)$("#load ol").append($(""+a[c].name+" "));b.find("li").off("click").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Current Color"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2)").removeClass("hidden")})}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Current Color"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2) li").removeClass("hidden")}),$c.last().on("mousedown touchstart",function(a){a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]);var b=relative(a.pageX,a.pageY);startPoint(b.x,b.y),window.active=!0}).on("mousemove touchmove",function(a){if(a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]),window.active&&"line"!=settings.type){var b=relative(a.pageX,a.pageY);drawPoint(b.x,b.y)}}).on("mouseup touchend",function(a){if(a.preventDefault(),window.active=!1,"eraser"!=settings.type){if(window.points.history.last div").addClass("hidden"),$("#menu div.options > .general, #menu div.options > ."+c).removeClass("hidden")),$(this).parents("form").addClass("hidden")}),a.submit(function(a){a.preventDefault(),$(this).addClass("hidden")});var b=$("form.confirm");b.each(function(){$(this).find("li").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$(this).find("button").last().on("click tap",function(a){a.preventDefault();var b=$(this).parents("form").attr("id");$(this).parents("form").find("h1").each(function(a){if(a>0){var c=$(this).html().toLowerCase(),d=$(this).parent().find("ol:nth-of-type("+a+") li[aria-selected] span").html();"file name"!==c&&"file"!==c&&(d=d.toLowerCase()),window[b][c]=d}}),$(this).parents("form").addClass("hidden"),window[b]()}),$(this).find("button").first().on("click tap",function(a){a.preventDefault(),$(this).parents("form").addClass("hidden")})});var d=$('button[id^="set"]');d.each(function(){var a=/set(.*)/.exec($(this).attr("id"))[1];return"color"==a||"bg"==a?$(this).on("click tap",function(){$(".picker").removeClass("hidden"),$(".picker").attr("data-caller",a),setTimeout(function(){$("body").on("click tap","canvas, #menu, header",function(){$(".picker").addClass("hidden"),$("body").off("click tap")})},500)}):void $(this).on("click tap",function(b){b.preventDefault(),$('form[id="'+a+'"]').removeClass("hidden")})});var e;$('div[role="slider"] button').on("mousedown touchstart",function(){$(this).attr("data-moving","true"),e||(e=$('div[role="slider"] button').offset().left)}).on("mousemove touchmove",function(a){if($(this).attr("data-moving")){a.changedTouches&&(a=a.changedTouches[0]);var b=parseInt(a.pageX-e-15),c=$("."+$(this).parents('div[role="slider"]').attr("class")),d=c.find("progress"),f=+d.attr("max"),g=+d.attr("min");if(f>=b&&b>=g){c.find("button").css("left",b+"%"),d.attr("value",b);var h=c.attr("class");settings[h]=b,$("#"+h+" span").html(b)}}}).on("mouseup mouseleave touchend",function(){$(this).removeAttr("data-moving")}),$(".fill, .stroke").on("click tap",function(){var a=$("."+$(this).attr("class")).find("span");"Yes"==a.html()?(a.html("No"),settings[$(this).attr("class")]=!1):(a.html("Yes"),settings[$(this).attr("class")]=!0)}),$(".close, .tour button").on("click tap",function(){$(this).parent().addClass("hidden"),$("body").off("click tap")}),$("#clear").on("click tap",function(){c.clear();var a=window.points.history;window.points=[],window.points.history=a,window.points.history.lastNo sketch found."));for(var c=0,d=a.length;d>c;c++)$("#load ol").append($(""+a[c].name+" "));b.find("li").off("click").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Current Color"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2)").removeClass("hidden")})}),$("#pro").on("click tap",function(){$("#save ol:nth-of-type(2) li").each(function(){"Current Color"!==$(this).find("span").html()?($(this).addClass("hidden"),$(this).removeAttr("aria-selected")):$(this).attr("aria-selected","true")})}),$("#exp").on("click tap",function(){$("#save ol:nth-of-type(2) li").removeClass("hidden")}),$c.last().on("mousedown touchstart",function(a){a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]);var b=relative(a.pageX,a.pageY);startPoint(b.x,b.y),window.active=!0}).on("mousemove touchmove",function(a){if(a.preventDefault(),a.changedTouches&&(a=a.changedTouches[0]),window.active&&"line"!=settings.type){var b=relative(a.pageX,a.pageY);drawPoint(b.x,b.y)}}).on("mouseup touchend",function(a){if(a.preventDefault(),window.active=!1,"eraser"!=settings.type){if(window.points.history.last div").addClass("hidden"),$("#menu div.options > .general, #menu div.options > ."+c).removeClass("hidden")),$(this).parents("form").addClass("hidden")}),a.submit(function(a){a.preventDefault(),$(this).addClass("hidden")});var b=$("form.confirm");b.each(function(){$(this).find("li").on("click tap",function(){$(this).parent().find("li[aria-selected]").removeAttr("aria-selected"),$(this).attr("aria-selected","true")}),$(this).find("button").last().on("click tap",function(a){a.preventDefault();var b=$(this).parents("form").attr("id");$(this).parents("form").find("h1").each(function(a){if(a>0){var c=$(this).html().toLowerCase(),d=$(this).parent().find("ol:nth-of-type("+a+") li[aria-selected] span").html();"file name"!==c&&"file"!==c&&(d=d.toLowerCase()),window[b][c]=d}}),$(this).parents("form").addClass("hidden"),window[b]()}),$(this).find("button").first().on("click tap",function(a){a.preventDefault(),$(this).parents("form").addClass("hidden")})});var d=$('button[id^="set"]');d.each(function(){var a=/set(.*)/.exec($(this).attr("id"))[1];return"color"==a||"bg"==a?$(this).on("click tap",function(){$(".picker").removeClass("hidden"),$(".picker").attr("data-caller",a),setTimeout(function(){$("body").on("click tap","canvas, #menu, header",function(){$(".picker").addClass("hidden"),$("body").off("click tap")})},500)}):void $(this).on("click tap",function(b){b.preventDefault(),$('form[id="'+a+'"]').removeClass("hidden")})});var e;$('div[role="slider"] button').on("mousedown touchstart",function(){$(this).attr("data-moving","true"),e||(e=$('div[role="slider"] button').offset().left)}).on("mousemove touchmove",function(a){if($(this).attr("data-moving")){a.changedTouches&&(a=a.changedTouches[0]);var b=parseInt(a.pageX-e-15),c=$("."+$(this).parents('div[role="slider"]').attr("class")),d=c.find("progress"),f=+d.attr("max"),g=+d.attr("min");if(f>=b&&b>=g){c.find("button").css("left",b+"%"),d.attr("value",b);var h=c.attr("class");settings[h]=b,$("#"+h+" span").html(b)}}}).on("mouseup mouseleave touchend",function(){$(this).removeAttr("data-moving")}),$(".fill, .stroke").on("click tap",function(){var a=$("."+$(this).attr("class")).find("span");"Yes"==a.html()?(a.html("No"),settings[$(this).attr("class")]=!1):(a.html("Yes"),settings[$(this).attr("class")]=!0)}),$(".close, .tour button, .vote button").on("click tap",function(){$(this).parent().addClass("hidden"),$("body").off("click tap")}),$("#clear").on("click tap",function(){c.clear();var a=window.points.history;window.points=[],window.points.history=a,window.points.history.last
+
+ Sketchy
+
+ Free full-featured Sketch app
+
+
+ Mahdi Dibaiee
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/img/demos/iheart.png b/img/demos/iheart.png
old mode 100755
new mode 100644
diff --git a/img/demos/save.png b/img/demos/save.png
old mode 100755
new mode 100644
diff --git a/img/demos/settings.png b/img/demos/settings.png
old mode 100755
new mode 100644
diff --git a/img/demos/tree.png b/img/demos/tree.png
old mode 100755
new mode 100644
diff --git a/img/demos/types.png b/img/demos/types.png
old mode 100755
new mode 100644
diff --git a/img/icons/MozillaFXOSIconTemplate1_overlay.png b/img/icons/MozillaFXOSIconTemplate1_overlay.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon120.png b/img/icons/icon120.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon128.png b/img/icons/icon128.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon16.png b/img/icons/icon16.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon2.png b/img/icons/icon2.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon2.svg b/img/icons/icon2.svg
old mode 100755
new mode 100644
diff --git a/img/icons/icon32.png b/img/icons/icon32.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon48.png b/img/icons/icon48.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon60.png b/img/icons/icon60.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon64.png b/img/icons/icon64.png
old mode 100755
new mode 100644
diff --git a/img/icons/icon90.png b/img/icons/icon90.png
old mode 100755
new mode 100644
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..abc9887
--- /dev/null
+++ b/index.html
@@ -0,0 +1,275 @@
+
+
+
+
+ Sketchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sketchy
+
Sketchy is a free sketch / paint application for Firefox. Current version: 1.2
+
Developer
+
Sketchy was found by Mahdi Dibaiee. More info: About.me
+
+ Contact:
+ Twitter •
+ Email
+
+ Changelog
+
+
x
+
+
+
+
Tips
+
Hey! Let me give you some tips to help you along the way,
+
To finish a line, hold your finger for 1 second on mobile, or double click on desktop.
+
Line join, fill / stroke are applied when the line is finished.
+
If you found something missing, please get in touch with us.
+
Gotcha!
+
x
+
+
+
+
King of Firefox OS Apps
+
Hey! FirefoxOSGuide.com has started a competition, judging the best Firefox OS application by users' vote. Would you consider taking a few minutes to vote for us, please?
+
We're working to add new features to Sketchy like sharing and maybe some 'hosted' addons.
+
If you would like to see something in Sketchy's new version, please get in touch with us.
+
+
What's your Favorite Firefox OS application?
+
+
Original post on Firefox OS Guide
+
OK!
+
x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sketchy-mobile-1.2.zip b/sketchy-mobile-1.2.1.zip
similarity index 97%
rename from sketchy-mobile-1.2.zip
rename to sketchy-mobile-1.2.1.zip
index 2f271b3..b14bfcd 100644
Binary files a/sketchy-mobile-1.2.zip and b/sketchy-mobile-1.2.1.zip differ
diff --git a/sketchy-web-1.2.zip b/sketchy-web-1.2.1.zip
similarity index 97%
rename from sketchy-web-1.2.zip
rename to sketchy-web-1.2.1.zip
index ef131d1..522109b 100644
Binary files a/sketchy-web-1.2.zip and b/sketchy-web-1.2.1.zip differ