From 8ef33b1683941b1826c59b0ef38d497a1a7dc9d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz?= Date: Sun, 25 Nov 2018 13:49:21 +0100 Subject: [PATCH] Bump to v1.0.7. --- asciiblaster-cordoba/config.xml | 2 +- asciiblaster-cordoba/package-lock.json | 4 +- asciiblaster-cordoba/package.json | 2 +- .../android/app/src/main/AndroidManifest.xml | 2 +- .../app/src/main/assets/www/assets/css/ak.css | 178 ++----- .../src/main/assets/www/assets/css/fonts.css | 13 + .../src/main/assets/www/assets/css/help.css | 48 ++ .../main/assets/www/assets/css/nitelite.css | 119 ----- .../src/main/assets/www/assets/css/sally.css | 465 +++++++++++------- .../src/main/assets/www/assets/doc/index.html | 30 -- .../src/main/assets/www/assets/doc/irssi.txt | 153 ------ .../src/main/assets/www/assets/doc/tips.txt | 16 - .../www/assets/fonts/fsex300-webfont.svg | 2 +- .../www/assets/fonts/fsex300-webfont.ttf | Bin 659104 -> 659099 bytes .../src/main/assets/www/assets/html/help.html | 56 +++ .../app/src/main/assets/www/assets/js/app.js | 34 +- .../main/assets/www/assets/js/clipboard.js | 46 +- .../app/src/main/assets/www/assets/js/gfx.js | 50 +- .../app/src/main/assets/www/assets/js/lex.js | 8 - .../src/main/assets/www/assets/js/matrix.js | 116 ++--- .../src/main/assets/www/assets/js/ui/brush.js | 44 +- .../main/assets/www/assets/js/ui/canvas.js | 43 +- .../main/assets/www/assets/js/ui/controls.js | 76 +-- .../main/assets/www/assets/js/ui/custom.js | 29 -- .../src/main/assets/www/assets/js/ui/keys.js | 8 +- .../main/assets/www/assets/js/ui/letters.js | 89 ---- .../assets/js/ui/{palette.js => paletters.js} | 94 +++- .../main/assets/www/assets/js/ui/selection.js | 14 +- .../src/main/assets/www/assets/js/ui/tool.js | 6 +- .../main/assets/www/assets/js/ui/transform.js | 14 +- .../app/src/main/assets/www/assets/js/util.js | 19 +- .../src/main/assets/www/assets/text/LICENCE | 31 +- .../app/src/main/assets/www/assets/text/TODO | 29 +- .../app/src/main/assets/www/index.html | 214 ++++---- .../android/app/src/main/res/xml/config.xml | 2 +- asciiblaster-nw/package-lock.json | 2 +- asciiblaster-nw/package.json | 2 +- assets/html/help.html | 2 +- index.html | 2 +- 39 files changed, 828 insertions(+), 1236 deletions(-) create mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/fonts.css create mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/help.css delete mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/nitelite.css delete mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/index.html delete mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/irssi.txt delete mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/tips.txt create mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/html/help.html delete mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/custom.js delete mode 100644 asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/letters.js rename asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/{palette.js => paletters.js} (56%) diff --git a/asciiblaster-cordoba/config.xml b/asciiblaster-cordoba/config.xml index d2481e4..4165253 100644 --- a/asciiblaster-cordoba/config.xml +++ b/asciiblaster-cordoba/config.xml @@ -1,5 +1,5 @@ - + Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de>, based on work by JOLLO NET NA diff --git a/asciiblaster-cordoba/package-lock.json b/asciiblaster-cordoba/package-lock.json index f7603d4..3b3afb7 100644 --- a/asciiblaster-cordoba/package-lock.json +++ b/asciiblaster-cordoba/package-lock.json @@ -1,6 +1,6 @@ { "name": "asciiblaster-cordoba", - "version": "1.0.6", + "version": "1.0.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -127,7 +127,7 @@ } }, "inflight": { - "version": "1.0.6", + "version": "1.0.7", "bundled": true, "requires": { "once": "^1.3.0", diff --git a/asciiblaster-cordoba/package.json b/asciiblaster-cordoba/package.json index 609bdd7..ec95d32 100644 --- a/asciiblaster-cordoba/package.json +++ b/asciiblaster-cordoba/package.json @@ -30,5 +30,5 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, - "version": "1.0.6" + "version": "1.0.7" } diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/AndroidManifest.xml b/asciiblaster-cordoba/platforms/android/app/src/main/AndroidManifest.xml index 7968774..889968f 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/AndroidManifest.xml +++ b/asciiblaster-cordoba/platforms/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/ak.css b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/ak.css index 8a2a8fd..751cc94 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/ak.css +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/ak.css @@ -1,139 +1,43 @@ -.fa{color:#fff}.fb{color:#000}.fc{color:#00007F}.fd{color:#009300}.fe{color:red}.ff{color:#7f0000}.fg{color:#9C009C}.fh{color:#FC7F00}.fi{color:#FF0}.fj{color:#00FC00}.fk{color:#009393}.fl{color:#0FF}.fm{color:#0000FC}.fn{color:#F0F}.fo{color:#7F7F7F}.fp{color:#D2D2D2} -.ba{background-color:#fff}.bb{background-color:#000}.bc{background-color:#00007F}.bd{background-color:#009300}.be{background-color:red}.bf{background-color:#7f0000}.bg{background-color:#9C009C}.bh{background-color:#FC7F00}.bi{background-color:#FF0}.bj{background-color:#00FC00}.bk{background-color:#009393}.bl{background-color:#0FF}.bm{background-color:#0000FC}.bn{background-color:#F0F}.bo{background-color:#7F7F7F}.bp{background-color:#D2D2D2} +/* + * Background mIRC colours + */ +.ba {background-color: #FFFFFF} +.bb {background-color: #000000} +.bc {background-color: #00007F} +.bd {background-color: #009300} +.be {background-color: #FF0000} +.bf {background-color: #7f0000} +.bg {background-color: #9C009C} +.bh {background-color: #FC7F00} +.bi {background-color: #FFFF00} +.bj {background-color: #00FC00} +.bk {background-color: #009393} +.bl {background-color: #00FFFF} +.bm {background-color: #0000FC} +.bn {background-color: #FF00FF} +.bo {background-color: #7F7F7F} +.bp {background-color: #D2D2D2} -.winxp .fa{color:rgb(255,255,255)} -.winxp .fb{color:rgb(0,0,0)} -.winxp .fc{color:rgb(0,0,128)} -.winxp .fd{color:rgb(0,128,0)} -.winxp .fe{color:rgb(255,0,0)} -.winxp .ff{color:rgb(128,0,0)} -.winxp .fg{color:rgb(128,0,128)} -.winxp .fh{color:rgb(255,128,0)} -.winxp .fi{color:rgb(255,255,0)} -.winxp .fj{color:rgb(0,255,0)} -.winxp .fk{color:rgb(0,128,128)} -.winxp .fl{color:rgb(0,255,255)} -.winxp .fm{color:rgb(0,0,255)} -.winxp .fn{color:rgb(255,0,255)} -.winxp .fo{color:rgb(128,128,128)} -.winxp .fp{color:rgb(192,192,192)} +/* + * Foreground mIRC colours + */ +.fa {color: #FFFFFF} +.fb {color: #000000} +.fc {color: #00007F} +.fd {color: #009300} +.fe {color: #FF0000} +.ff {color: #7F0000} +.fg {color: #9C009C} +.fh {color: #FC7F00} +.fi {color: #FFFF00} +.fj {color: #00FC00} +.fk {color: #009393} +.fl {color: #00FFFF} +.fm {color: #0000FC} +.fn {color: #FF00FF} +.fo {color: #7F7F7F} +.fp {color: #D2D2D2} -.winxp .ba{background-color:rgb(255,255,255)} -.winxp .bb{background-color:rgb(0,0,0)} -.winxp .bc{background-color:rgb(0,0,128)} -.winxp .bd{background-color:rgb(0,128,0)} -.winxp .be{background-color:rgb(255,0,0)} -.winxp .bf{background-color:rgb(128,0,0)} -.winxp .bg{background-color:rgb(128,0,128)} -.winxp .bh{background-color:rgb(255,128,0)} -.winxp .bi{background-color:rgb(255,255,0)} -.winxp .bj{background-color:rgb(0,255,0)} -.winxp .bk{background-color:rgb(0,128,128)} -.winxp .bl{background-color:rgb(0,255,255)} -.winxp .bm{background-color:rgb(0,0,255)} -.winxp .bn{background-color:rgb(255,0,255)} -.winxp .bo{background-color:rgb(128,128,128)} -.winxp .bp{background-color:rgb(192,192,192)} - -.vga .fa{color:rgb(255,255,255)} -.vga .fb{color:rgb(0,0,0)} -.vga .fc{color:rgb(0,0,170)} -.vga .fd{color:rgb(0,170,0)} -.vga .fe{color:rgb(255,85,85)} -.vga .ff{color:rgb(170,0,0)} -.vga .fg{color:rgb(170,0,170)} -.vga .fh{color:rgb(170,85,0)} -.vga .fi{color:rgb(255,255,85)} -.vga .fj{color:rgb(85,255,85)} -.vga .fk{color:rgb(0,170,170)} -.vga .fl{color:rgb(85,255,255)} -.vga .fm{color:rgb(85,85,255)} -.vga .fn{color:rgb(255,85,255)} -.vga .fo{color:rgb(85,85,85)} -.vga .fp{color:rgb(170,170,170)} - - -.vga .ba{background-color:rgb(255,255,255)} -.vga .bb{background-color:rgb(0,0,0)} -.vga .bc{background-color:rgb(0,0,170)} -.vga .bd{background-color:rgb(0,170,0)} -.vga .be{background-color:rgb(255,85,85)} -.vga .bf{background-color:rgb(170,0,0)} -.vga .bg{background-color:rgb(170,0,170)} -.vga .bh{background-color:rgb(170,85,0)} -.vga .bi{background-color:rgb(255,255,85)} -.vga .bj{background-color:rgb(85,255,85)} -.vga .bk{background-color:rgb(0,170,170)} -.vga .bl{background-color:rgb(85,255,255)} -.vga .bm{background-color:rgb(85,85,255)} -.vga .bn{background-color:rgb(255,85,255)} -.vga .bo{background-color:rgb(85,85,85)} -.vga .bp{background-color:rgb(170,170,170)} - -.c64 .fa{color:rgb(255,255,255)} -.c64 .fb{color:rgb(0,0,0)} -.c64 .fc{color:rgb(69,32,170)} -.c64 .fd{color:rgb(101,170,69)} -.c64 .fe{color:rgb(138,101,32)} -.c64 .ff{color:rgb(138,69,32)} -.c64 .fg{color:rgb(138,69,170)} -.c64 .fh{color:rgb(101,69,0)} -.c64 .fi{color:rgb(207,207,101)} -.c64 .fj{color:rgb(170,239,138)} -.c64 .fk{color:rgb(138,138,138)} -.c64 .fl{color:rgb(101,170,207)} -.c64 .fm{color:rgb(138,101,223)} -.c64 .fn{color:rgb(207,138,101)} -.c64 .fo{color:rgb(69,69,69)} -.c64 .fp{color:rgb(170,170,170)} - -.c64 .ba{background-color:rgb(255,255,255)} -.c64 .bb{background-color:rgb(0,0,0)} -.c64 .bc{background-color:rgb(69,32,170)} -.c64 .bd{background-color:rgb(101,170,69)} -.c64 .be{background-color:rgb(138,101,32)} -.c64 .bf{background-color:rgb(138,69,32)} -.c64 .bg{background-color:rgb(138,69,170)} -.c64 .bh{background-color:rgb(101,69,0)} -.c64 .bi{background-color:rgb(207,207,101)} -.c64 .bj{background-color:rgb(170,239,138)} -.c64 .bk{background-color:rgb(138,138,138)} -.c64 .bl{background-color:rgb(101,170,207)} -.c64 .bm{background-color:rgb(138,101,223)} -.c64 .bn{background-color:rgb(207,138,101)} -.c64 .bo{background-color:rgb(69,69,69)} -.c64 .bp{background-color:rgb(170,170,170)} - -.appleii .fa{color:rgb(255,255,255)} -.appleii .fb{color:rgb(0,0,0)} -.appleii .fc{color:rgb(64,53,121)} -.appleii .fd{color:rgb(64,75,7)} -.appleii .fe{color:rgb(191,180,248)} -.appleii .ff{color:rgb(109,41,64)} -.appleii .fg{color:rgb(218,60,241)} -.appleii .fh{color:rgb(218,104,15)} -.appleii .fi{color:rgb(191,202,134)} -.appleii .fj{color:rgb(38,195,16)} -.appleii .fk{color:rgb(19,87,64)} -.appleii .fl{color:rgb(146,214,191)} -.appleii .fm{color:rgb(37,151,240)} -.appleii .fn{color:rgb(236,168,191)} -.appleii .fo{color:rgb(128,128,128)} -.appleii .fp{color:rgb(128,128,128)} - -.appleii .ba{background-color:rgb(255,255,255)} -.appleii .bb{background-color:rgb(0,0,0)} -.appleii .bc{background-color:rgb(64,53,121)} -.appleii .bd{background-color:rgb(64,75,7)} -.appleii .be{background-color:rgb(191,180,248)} -.appleii .bf{background-color:rgb(109,41,64)} -.appleii .bg{background-color:rgb(218,60,241)} -.appleii .bh{background-color:rgb(218,104,15)} -.appleii .bi{background-color:rgb(191,202,134)} -.appleii .bj{background-color:rgb(38,195,16)} -.appleii .bk{background-color:rgb(19,87,64)} -.appleii .bl{background-color:rgb(146,214,191)} -.appleii .bm{background-color:rgb(37,151,240)} -.appleii .bn{background-color:rgb(236,168,191)} -.appleii .bo{background-color:rgb(128,128,128)} -.appleii .bp{background-color:rgb(128,128,128)} +/* + * vim:ts=2 sw=2 expandtab fenc=utf-8 foldmethod=marker nowrap tw=0 + */ diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/fonts.css b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/fonts.css new file mode 100644 index 0000000..df42e9b --- /dev/null +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/fonts.css @@ -0,0 +1,13 @@ +@font-face { + font-family: 'FixedsysExcelsior301Regular'; + font-style: normal; + src: url('../fonts/fsex300-webfont.eot'); + src: url('../fonts/fsex300-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/fsex300-webfont.woff') format('woff'), + url('../fonts/fsex300-webfont.ttf') format('truetype'), + url('../fonts/fsex300-webfont.svg#FixedsysExcelsior301Regular') format('svg'); +} + +/* + * vim:ts=2 sw=2 expandtab fenc=utf-8 foldmethod=marker nowrap tw=0 + */ diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/help.css b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/help.css new file mode 100644 index 0000000..3f44ead --- /dev/null +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/help.css @@ -0,0 +1,48 @@ +body { + background: #000000; + background-image: url('../images/tile.jpg'); + color: rgb(255,255,0); + font-family: times new roman; + font-family: 'FixedsysExcelsior301Regular'; + font-size: 16pt; +} + +/* {{{ DIV id styles */ +div#box { + background: rgba(0,0,100,0.5); + border: 3px solid #0000ff; + border-spacing: 0px; + color: #00ffff!important; + display: inline-block; + font-size: 20px; + font-size: 12pt!important; + margin: 10px 0; + padding: 10px; +} +div#box_wrapper { + margin: 0 auto; + width: 50%; +} +/* }}} */ +/* {{{ Element styles */ +h1 { + color: #ff00ff!important; + font-size: 42px; + margin-bottom: 15px; +} +h2 { + color: #00ffff!important; + margin-bottom: 15px; + margin-top: 15px; +} +p { + color: white; +} +pre { + color: white; +} +/* }}} */ + +/* + * vim:ts=2 sw=2 expandtab fenc=utf-8 foldmethod=marker nowrap tw=0 + */ diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/nitelite.css b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/nitelite.css deleted file mode 100644 index dce015e..0000000 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/nitelite.css +++ /dev/null @@ -1,119 +0,0 @@ -.h1 { font-size: 32px } -.h2 { font-size: 24px } -.h3 { font-size: 18.72px } -.h4 { font-size: 16px } -.h5 { font-size: 13.28px } -.h6 { font-size: 10.72px } - -[class^=h] { -font-weight: bold; -display:block; -margin-top:8px; -margin-bottom:8px; -} - - -body { -background:#000; -background-image:url('../images/tile.jpg'); -font-size:16pt; -font-family:times new roman; -color:rgb(255,255,0); -} - -i { -color:#0f0!important; -} - -a:link { -color:rgb(0,255,255); -} - -a:visited { -color:#00f; -} - -a:active { -color:#fff; -} - - - -.code { -white-space:pre-wrap; -background: rgba(128,0,128,.3); -color: rgb(255,0,255); -font-size: 16pt; -font-family: Consolas, Menlo, Courier, monospace; -} - -.inline { -padding: 1px 4px; -} - -.block { -padding:12px 16px; -border-width: 0 0 0 5px; -border-style: solid; -border-color:#0f0; -} - -table { -border-spacing: 0px; -border:3px solid #00f; -margin:10px 0; -font-size:20px; -color:#0ff!important; -font-size:12pt!important; -} - -td { -padding: 6px 9px; -border:2px solid #00f - -} - -h1 { -font-size:42px; -margin-bottom:15px; -color:#f0f!important -} - -h2 { -color:#0ff!important; -margin-top:15px; -margin-bottom:15px; -} - -h3 { -color:#f00!important -} - -h4 { -color:#0f0!important -} - -h5 { -color:#00f!important -} - -a:visited i { -color:#00f!important; -} - -a i { -color:#f0f!important -} - -a:active i { -color:#ff0!important -} - -/* -.logo { -background:url('https://jollo.org/assets/images/logo/rebomine_logo.gif'); -width:255px; -height:107px; -float:right; -} -*/ diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/sally.css b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/sally.css index 59ac265..3037cf2 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/sally.css +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/css/sally.css @@ -1,204 +1,289 @@ -textarea,input[type=text],body { - margin:0; - font-family: 'FixedsysExcelsior301Regular'; - font-size: 12pt; - font-weight: 100; - line-height: 11pt; - color: #6d6b6d; - -webkit-font-smoothing: antialiased !important; -} -body { - background-color: #000000 !important; -} -@font-face { - font-family: 'FixedsysExcelsior301Regular'; - src: url('../fonts/fsex300-webfont.eot'); - src: url('../fonts/fsex300-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/fsex300-webfont.woff') format('woff'), - url('../fonts/fsex300-webfont.ttf') format('truetype'), - url('../fonts/fsex300-webfont.svg#FixedsysExcelsior301Regular') format('svg'); - font-weighmal; - font-style: normal; -} -a {display: block} -a:link, a:visited {text-decoration: none; color: #6b6760} -a:hover { text-decoration: underline } - -.faded { color: #404040; } -.rapper, .block { - float: left; - height:auto; - width:auto; - background-color: #000000; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; +/* {{{ BODY.grid styles */ +body.grid div { + border-left: 1px solid #444444; } -.rapper { - white-space:pre-wrap; - word-wrap: break-word; +body.grid span { + border-bottom: 1px solid #444444; + border-right: 1px solid #444444; } -#ui_rapper .block { - width: 100px; +body.grid .tool { + border: 1px solid #444444; } -.block { - padding:4px; +body.grid #brush_wrapper > div:first-child, +body.grid #canvas_wrapper > div:first-child, +body.grid #letters_wrapper > div:first-child, +body.grid #palette_wrapper > div:first-child { + border-top: 1px solid #444444; } -.block:nth-child(n+2) { - padding-left: 30px; +/* }}} */ +/* {{{ .initial styles */ +.initial #add_custom_el, +.initial #doc_el, +.initial #export_button, +.initial #format_el, +.initial #grid_el, +.initial #import_textarea, +.initial #load_el, +.initial #save_el, +.initial #vertical_checkbox { } -#textarea_mode { padding: 4px; } -.tool { - cursor: pointer; -} -.hidden { - visibility: hidden; -} -.tool.radio { - margin: 0 8px 0 0; -} -.tool.radio.focused { - color: #000; - - background-color: #6d6d6d; - box-shadow: none; -} -.transparent { - background-color: transparent; - background-image: url(../images/gray-dither.gif); - background-size: 8px 8px; -} - -@media (-webkit-min-device-pixel-ratio: 2) { - .transparent { - background-size: 4px 4px; - } -} -span,a { min-width: 8px; line-height: 15px; display: inline-block; } -body.pixels { - line-height: 8px; -} -.pixels #brush_rapper span, -.pixels #brush_rapper a, -.pixels #canvas_rapper span, -.pixels #canvas_rapper a { line-height: 8px; overflow: hidden; } -.rapper { cursor: crosshair; } -body.grid span { border-right: 1px solid #444; border-bottom: 1px solid #444; } -body.grid div { border-left: 1px solid #444; } -body.grid #canvas_rapper > div:first-child, -body.grid #palette_rapper > div:first-child, -body.grid #letters_rapper > div:first-child, -body.grid #brush_rapper > div:first-child { border-top: 1px solid #444; } -body.grid .tool { border: 1px solid #444; } -.ed { color: #fff; } -.locked { border-bottom: 1px solid; color: #bbb; text-decoration: none; } -.tool.locked.focused { box-shadow: 0 0; } -.focused { box-shadow: inset 0 0px 2px #fff; border-color: #fff; } -.ba.focused { box-shadow: inset 0 0px 2px #000, inset 0 0px 2px #000; border-color: #000; } -.tool.focused, .ed.focused { color: white; text-decoration: underline; } -.focused { box-shadow: inset 1px 0 2px white, inset -1px 0 2px white, inset 0 1px 2px white, inset 0 -1px 2px white; } -.faba.focused, .fbba.focused, .fcba.focused, .fdba.focused, .feba.focused, .ffba.focused, .fgba.focused, .fhba.focused, -.fiba.focused, .fjba.focused, .fkba.focused, .flba.focused, .fmba.focused, .fnba.focused, .foba.focused, .fpba.focused - { box-shadow: inset 1px 0 2px #888, inset -1px 0 2px #888, inset 0 1px 2px #888, inset 0 -1px 2px #888; } -body.loading { opacity: 0; } -body { transition: 0.1s linear; } -#import_textarea { font-size: 9pt; } -textarea { font-size:12pt; width: 37vw; height: 300px; background: #333; color: #0f0; border: 0; font-family: 'FixedsysExcelsior301Regular'; outline: 0; border: 1px solid #333; background:#010;} -#import_rapper { display: none; } -#canvas_rapper { - white-space: pre; - box-shadow: 0 0 2px rgba(255,255,255,0.3); - margin: 3px; -} - -#ui_rapper { clear:both; float: left; width: 100vw; } -#workspace_rapper { width: 100%; } - -.loading .vertical #ui_rapper { clear: none } -.vertical #ui_rapper { width: 320px; float: left; clear: none; } -.vertical .rapper, .vertical .block { float: left; } -.vertical #canvas_rapper, -.vertical #canvas_rapper div, -.vertical #tools_rapper, -.vertical #palette_rapper, -.vertical #brush_container { display: inline-block; float: left; } -.vertical #workspace_rapper { width: auto; position: relative; float: left; } -.vertical #palette_rapper { margin-right: 10px; } -.vertical #tools_block { min-width: 100%; } - -#secret_rapper { float: left; clear: right; } -#secret_rapper span { float: left; } -.vertical #secret_rapper { margin-right: 10px; } -.vertical #secret_rapper span { float: left; clear: both; } - -.rotated #canvas_rapper { - transform: translateX(-50%) translateY(-50%) translateZ(0) rotate(-90deg); - transform-origin: 50% 50%; - position: absolute; - left: 50%; -} - -#tools_block > * { - cursor: crosshair; -} -#brush_rapper, #letters_rapper { - cursor: crosshair; -} -.dropper #canvas_rapper { - cursor: url(../images/dropper.gif) 0 15, auto; -} -.bucket #canvas_rapper { - cursor: url(../images/bucket.png) 3 15, auto; -} -#brush_rapper { - border: 1px solid; - display: inline-block; - margin-bottom: 13px; - float: left; -} -#letters_rapper { - display: inline-block; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} -.close { position: absolute; top: 20px; right: 20px; z-index: 2; padding: 10px; background: black; cursor: pointer; } -#experimental_palette_toggle.focused { box-shadow: none; } -#cursor_input { position: fixed; top: 0; right: 0; width:30px; opacity: 0; font-size: 16px; } +/* }}} */ +/* {{{ .selector_el styles */ .selector_el { - border: 1px dashed #fff !important; - padding-top: 1px; - position:absolute; - margin-top: -1px; - top:-999px;left:-999px; - pointer-events: none; -} -.selector_el.dragging { - color: #0f0; + border: 1px dashed white !important; + left: -999px; + margin-top: -1px; + padding-top: 1px; + pointer-events: none; + position: absolute; + top: -999px; } .selector_el.creating div { - display: none; + display: none; } +.selector_el.dragging { + color: #00FF00; +} +/* }}} */ +/* {{{ .tool styles */ +.tool { + cursor: pointer; +} +.tool.focused { + color: white; + text-decoration: underline; +} +.tool.locked.focused { + box-shadow: 0 0; +} +.tool.radio { + margin: 0 8px 0 0; +} +.tool.radio.focused { + background-color: #6D6D6D; + box-shadow: none; + color: black; +} +/* }}} */ +/* {{{ .vertical styles */ +.vertical .wrapper, .vertical .block { + float: left; +} +.vertical #brush_container { + display: inline-block; + float: left; +} +.vertical #canvas_wrapper, +.vertical #canvas_wrapper div, +.vertical #palette_wrapper, +.vertical #palette_wrapper { + margin-right: 10px; +} +.vertical #secret_wrapper { + margin-right: 10px; +} +.vertical #secret_wrapper span { + clear: both; + float: left; +} +.vertical #tools_block { + min-width: 100%; +} +.vertical #tools_wrapper, +.vertical #ui_wrapper { + clear: none; + float: left; + width: 320px; +} +.vertical #workspace_wrapper { + float: left; + position: relative; + width: auto; +} +/* }}} */ + +/* {{{ Class & id styles (simple) */ +.bucket #canvas_wrapper { cursor: url(../images/bucket.png) 3 15, auto; } +.dropper #canvas_wrapper { cursor: url(../images/dropper.gif) 0 15, auto; } +.faded { color: #404040; } +.hidden { visibility: hidden; } +.loading .vertical #ui_wrapper { clear: none } +#experimental_palette_toggle.focused { box-shadow: none; } +#import_wrapper { display: none; } +#tools_block > * { cursor: crosshair; } +#workspace_wrapper { width: 100%; } +/* }}} */ +/* {{{ Class styles (complex) */ +.ba.focused { + box-shadow: inset 0 0px 2px #000, inset 0 0px 2px black; + border-color: black; +} +.block { + background-color: black; + float: left; + height: auto; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + width: auto; +} +.block { + padding: 4px; +} +.block:nth-child(n+2) { + padding-left: 30px; +} +.close { + background: black; + cursor: pointer; + padding: 10px; + position: absolute; + right: 20px; + top: 20px; + z-index: 2; } .custom { - float: left; - margin-right: 5px; - margin-bottom: 5px; + float: left; + margin-bottom: 5px; + margin-right: 5px; } -@keyframes rainbow { - 0% { color: hsl(0,100%,50%) } - 33% { color: hsl(90,100%,50%) } - 50% { color: #fff } - 66% { color: hsl(320,100%,50%) } - 100% { color: hsl(360,100%,50%) } +.ed { + color: white; } +.ed.focused { + color: white; + text-decoration: underline; +} +.faba.focused, .fbba.focused, .fcba.focused, .fdba.focused, .feba.focused, .ffba.focused, .fgba.focused, .fhba.focused, +.fiba.focused, .fjba.focused, .fkba.focused, .flba.focused, .fmba.focused, .fnba.focused, .foba.focused, .fpba.focused { + box-shadow: inset 1px 0 2px #888888, inset -1px 0 2px #888888, inset 0 1px 2px #888888, inset 0 -1px 2px #888888; +} +.focused { + box-shadow: inset 1px 0 2px white, inset -1px 0 2px white, inset 0 1px 2px white, inset 0 -1px 2px white; + border-color: white; +} +.locked { + border-bottom: 1px solid; + color: #bbbbbb; + text-decoration: none; +} +.transparent { + background-color: transparent; + background-image: url(../images/gray-dither.gif); + background-size: 8px 8px; +} +@media (-webkit-min-device-pixel-ratio: 2) { + .transparent { + background-size: 4px 4px; + } +} +.wrapper { + background-color: black; + cursor: crosshair; + float: left; + height: auto; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + white-space: pre-wrap; + width: auto; + word-wrap: break-word; +} +/* }}} */ +/* {{{ Element styles */ +a { + display: block; +} +a:link, a:visited { + color: #6B6760; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +body { + background-color: black !important; + transition: 0.1s linear; +} +body.loading { + opacity: 0; +} +span { + display: inline-block; + line-height: 15px; + min-width: 8px; +} +textarea, input[type=text], body { + color: #6D6B6D; + font-family: 'FixedsysExcelsior301Regular'; + -webkit-font-smoothing: antialiased !important; + line-height: 11pt; + font-size: 12pt; + font-weight: 100; + margin: 0; +} +/* }}} */ +/* {{{ Id styles (complex) */ +#brush_wrapper { + border: 1px solid; + display: inline-block; + float: left; + margin-bottom: 13px; + padding-right: 10px; +} +#brush_wrapper, #letters_wrapper { + cursor: crosshair; +} +#canvas_wrapper { + box-shadow: 0 0 2px rgba(255,255,255,0.3); + margin: 3px; + white-space: pre; +} +#cursor_input { + font-size: 16px; + opacity: 0; + position: fixed; + right: 0; + top: 0; + width: 30px; +} +#import_textarea { + background: #001100; + border: 1px solid #333333; + color: #00FF00; + font-family: 'FixedsysExcelsior301Regular'; + font-size: 12pt; + height: 300px; + outline: 0; + width: 37vw; +} +#letters_wrapper { + display: inline-block; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; +} +#secret_wrapper { + clear: right; + float: left; +} +#secret_wrapper span { + float: left; +} +#textarea_mode { + float: left; + padding: 4px; +} +#ui_wrapper { + clear: both; + float: left; + width: 100vw; +} +#ui_wrapper .block { + width: 100px; +} +/* }}} */ -.panke #load_el, -.panke #import_textarea, -.panke #doc_el, -.panke #export_button, -.panke #grid_el, -.panke #save_el, -.panke #vertical_checkbox, -.panke #add_custom_el, -.panke #format_el { display: none !important; } +/* + * vim:ts=2 sw=2 expandtab fenc=utf-8 foldmethod=marker nowrap tw=0 + */ diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/index.html b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/index.html deleted file mode 100644 index 57dc943..0000000 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - -

-
- - -
-

asdf.us/ascii documentation

- - -These are some handy documents which address some of the more obscure -features of the asdf.us color code tool: - -* tips.txt - Tips on using the keyboard -* irssi.txt - Instructions on using IRSSI to make color codes. - -For more information on IRC, Color Codes, and much more, visit the -documentation sitemap, part of the Jollo IRC Network. - -asdf.us/ascii - diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/irssi.txt b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/irssi.txt deleted file mode 100644 index baded1c..0000000 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/irssi.txt +++ /dev/null @@ -1,153 +0,0 @@ - __________________________________________________________________________ - ____ ____ _____ ____ ___ ___ ____ - /_____ _____/ / ___ \ / ____/ / ____/ /_____ _____/ - / / / / \ \ / / / / / / - / / / /____/ / \ \__ \ \__ / / - / / / ___ __/ \__ \ \__ \ / / - / / / / \ \ \ \ \ \ / / - _____/ /_____ / / \ \ ____/ / ____/ /____/ /_____ - ___/ /__/ /_______\ \__/ /___/ // /____ - __________________________________________________________________________ - - -OPTIMIZE YOUR TERMINAL FOR COLOR CODES ON OSX -============================================= - -You can use terminal, some nerds seem to prefer iterm2, but it's up to you -... http://iterm2.com/ - -To see color codes correctly, make sure your term type is xterm-256color -- - -If you use iterm: https://s3.amazonaws.com/luckyplop/a1b0f0e3d6eae746c82194876f2ccd8b200bc3bb.png -If you use terminal: https://s3.amazonaws.com/luckyplop/6a2270b58ea1cfac587607215e1b829f41d47355.png - -Restart iterm after changing this setting. - -The default iterm colors are kind of ugly for color codes, so you may want to change them -to something like this.. - -https://s3.amazonaws.com/luckyplop/c5f3a1f2b8e2f8a745fa2638c21af7d26117b91b.png - -You can download this iTerm color preset here: - -http://asdf.us/ascii/doc/bamboo.itermcolors - - -INSTALLING IRSSI ON OSX -======================= - -For me the easiest thing is to install homebrew >> http://brew.sh/ - -Follow les instructions and then.. - -brew install irssi - -Then you run irssi from a terminal by typing the magic word.. - -irssi - - -SETTING UP IRSSI FOR COLOR CODES -================================ - -Use these commands for proper unicode support -- - -/set term_charset utf-8 -/set recode_autodetect_utf8 ON -/set recode_fallback ISO-8859-15 -/set recode ON - -Use these commands to dump color codes quickly and efficiently -- - -/set cmd_queue_speed 0msec -/set cmds_max_at_once 1 -/set flood_max_msgs 0 -/set flood_timecheck 0 - -To make your log go back very far -- - -/set scrollback_lines 20000 -/set scrollback_time 10day - -Remember to type /save after doing a /set to save your changes! - -/save - -Your irssi configuration will be stored in your home directory in.. - -.irssi/config - - -NORMAL IRSSI OPERATION -====================== - -If you do not want to do the autojoin thing these are the commands you'd normally use to connect: - -/server -ssl irc.asdf.us 7777 -/join #ascii - - -SETTING UP IRSSI TO AUTOJOIN #ASCII -=================================== - -First run irssi, then paste in these commands. -Please change YOUR_NICK_HERE to your preferred username! - -/network add -nick YOUR_NICK_HERE -user YOUR_NICK_HERE -realname "YOUR NAME HERE" asdf -/server add -network asdf -auto -ssl irc.asdf.us 7777 -/channel add -auto #ascii asdf -/save -/quit - -Now run irssi again.. it should autoconnect to the channels and stuff. -If you want it to move you into #ascii by default, you can do ctrl-N and then - -/layout save -/save - - -IRC TIPS -======== - -/join #ascii -- join a channel :) -/part #ascii -- leave a channel ;( -/quit blabla -- quit irc (with the quit message 'blabla') -/list -- list channels -/nick booboo -- change your nick to booboo -/who #ascii -- show complete list of people on #ascii -/names -- show quick list of names -/msg nick blabla -- send someone a private message ;) - - -IRSSI TIPS -========== - -Ctrl-N -- move to next window -Ctrl-P -- move to previous window -/window close -- close a window -Fn-up arrow -- page up (if you don't have a pageup key) -Fn-down arrow -- page down (if you don't have a pagedown key) - - -IRSSI SCRIPTING -=============== - -This is its own can of worms. May we suggest: - -http://scripts.irssi.org/scripts/noticelogic.pl -http://scripts.irssi.org/scripts/nickcolor.pl - -To make it run on startup, copy it into ~/.irssi/scripts/autorun/ (and restart irssi) - -Another fun IRC thing is running an XDCC server for sharing files.. --- for more info see http://asdf.us/xdcc/ - - -AND REMEMBER... -=============== - -Have fun and be safe online! - - - - diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/tips.txt b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/tips.txt deleted file mode 100644 index d014197..0000000 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/doc/tips.txt +++ /dev/null @@ -1,16 +0,0 @@ -asdf.us/ascii tips -================== - -These keyboard commands work in brush mode (square, circle, cross): - -[ brush smaller -] brush bigger -ctrl~click on brush erase cell -ctrl~click on canvas draw with bg color -shift~click on canvas draw line from last position -alt~click on canvas fill brush with sampled color -alt~shift~click on canvas copy canvas to brush -rightclick on palette set bg color (when drawing with a letter) - -h/t timb for guide - diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/fonts/fsex300-webfont.svg b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/fonts/fsex300-webfont.svg index a99c895..787f710 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/fonts/fsex300-webfont.svg +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/fonts/fsex300-webfont.svg @@ -6003,4 +6003,4 @@ - \ No newline at end of file + diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/fonts/fsex300-webfont.ttf b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/fonts/fsex300-webfont.ttf index d53e501b69201eceabd0faec2c924282dd21b597..50a6699d18b580520a44987011f32dfd5f19b755 100644 GIT binary patch delta 44 ycmZ25S7Y{EjfNJ+7N!>F7M2#)7Pc1l7LF~Py{4>OATWKJDW~f8J*J#bZU6v6T@F0} delta 50 zcmbO|S7X6kjfNJ+7N!>F7M2#)7Pc1l7LF~Py{4R;TwGk-Ts&O7( + + + + + + + + asciiblaster v1.0.6 documentation + + + + +
+
+

asciiblaster documentation

+

+ These are some handy documents which address some of the more obscure features of asciiblaster: +

+ +

Tips on using the keyboard

+
+          [                                   Decrease brush size
+          ]                                   Increase brush size
+          <Alt> + <LMB> on canvas             Fill brush with sampled color
+          <Alt> + <Shift> + <LMB> on canvas   Copy canvas to brush
+          <Ctrl> + <LMB> on brush             Erase cell
+          <Ctrl> + <LMB> on canvas            Draw with background color
+          <Shift> + <LMB> on canvas           Draw line from last position
+          <Shift> + <LMB> on character box    Switch to next character set
+          <Shift> + <LMB> on stored brush     Delete stored brush
+          <RMB> on palette                    Set background color (when drawing with a letter)
+        
+ +

Notate bene

+

+ Characters not forming part of the initial set in the character box beneath the colour palette + encode to, assuming UTF-8, 2-3 bytes in total vs. one (1) byte for those part of the initial + set (e.g. 0-9, A-Z, a-z, etc.)
+
+ Internet Explorer is explicitly unsupported.
+
+ Repeating patterns of alternating back- and foreground colours, and vice versa, are encoded + using a single (1) byte in mIRC format (video reverse) and as such save space, especially + with large numbers of repetitions or alternations. +

+
+
+ + + + + diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/app.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/app.js index fdb60a6..33c69b2 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/app.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/app.js @@ -6,11 +6,9 @@ var selecting = false var filling = false var changed = false var transforming = false -var mirror_x = false -var mirror_y = false var focused -var canvas, tools, palette, controls, brush, mode +var canvas, tools, palette, controls, brush, mode var current_tool, current_filetool, current_canvas var mouse = { x: 0, y: 0 } @@ -19,12 +17,12 @@ function init () { bind() } function build () { - canvas.append(canvas_rapper) - brush.append(brush_rapper) - palette.append(palette_rapper) - letters.append(letters_rapper) + canvas.append(canvas_wrapper) + brush.append(brush_wrapper) + palette.append(palette_wrapper) + letters.append(letters_wrapper) letters.repaint("Basic Latin") - + controls.circle.focus() brush.bg = colors.red @@ -32,7 +30,7 @@ function build () { brush.build() // controls.grid.use() - canvas.resize_rapper() + canvas.resize_wrapper() } function bind () { canvas.bind() @@ -42,14 +40,14 @@ function bind () { controls.bind() keys.bind() clipboard.bind() - + window.addEventListener('mouseup', function(e){ dragging = erasing = false - + var ae = document.activeElement if (ae !== import_textarea) { - if (is_desktop) cursor_input.focus() + cursor_input.focus() } if (selecting) { @@ -61,20 +59,20 @@ function bind () { }) window.addEventListener("touchend", function(){ if (current_tool.name === "text") { - if (is_desktop) cursor_input.focus() + cursor_input.focus() } dragging = false }) - + window.addEventListener('mousedown', function(e){ - // if (is_desktop) { cursor_input.focus() } + // cursor_input.focus() }) - + document.addEventListener('DOMContentLoaded', function(){ - if (is_desktop) { cursor_input.focus() } + cursor_input.focus() document.body.classList.remove('loading') }) - + window.onbeforeunload = function() { // if (changed && !in_iframe()) return "You have edited this drawing." } diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/clipboard.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/clipboard.js index 98a2f34..b93e346 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/clipboard.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/clipboard.js @@ -1,7 +1,7 @@ var clipboard = (function () { var exports = { - format: "irssi", + format: "mirc", importing: false, visible: false, canvas: document.createElement("canvas"), @@ -19,8 +19,8 @@ var clipboard = (function () { if (! clipboard.importing) { clipboard.export_data() } } }, - show: function () { import_rapper.style.display = "block"; clipboard.visible = true; changed = false }, - hide: function () { import_rapper.style.display = "none"; clipboard.visible = false }, + show: function () { import_wrapper.style.display = "block"; clipboard.visible = true; changed = false }, + hide: function () { import_wrapper.style.display = "none"; clipboard.visible = false }, focus: function () { if (! clipboard.importing) { import_textarea.focus() @@ -64,28 +64,12 @@ var clipboard = (function () { } }) }, - - import_colorcode: function (data, no_undo) { - if (data && data.preventDefault) { - data = import_textarea.value - } - else { - data = data || import_textarea.value - } - - var irssi_style_regex = /^\s*\/exec -out printf ("%b" )?"/; - // turn irssi style into mirc style - if (data.match(irssi_style_regex)){ - data = data.replace(/\\x03/gm, '\x03') - .replace(/(\\x..)+/gm, unicode.unescapeFromEscapedBytes) - .replace(/\\x5C/g, '\\') - .replace(/\\n/gm, '\n') - .replace(/\\`/gm, '`') - .replace(/\\"/gm, '"') - .replace(/\\\$/gm, '$') - .replace(irssi_style_regex, '') - .replace(/"\s*$/, '') + import_colorcode: function (data, no_undo) { + if (data && data.preventDefault) { + data = import_textarea.value + } else { + data = data || import_textarea.value } var to_json = function(string, opts){ @@ -173,9 +157,9 @@ var clipboard = (function () { } } - current_filetool && current_filetool.blur() + current_filetool && current_filetool.blur() }, - + export_data: function () { var output // switch (clipboard.format) { @@ -186,12 +170,6 @@ var clipboard = (function () { case 'mirc': output = canvas.mirc({cutoff: 425}) break - case 'irssi': - output = canvas.irssi({cutoff: 425}) - break - case 'ansi': - output = canvas.ansi() - break } if (output.cutoff){ cutoff_warning_el.style.display = 'block' @@ -204,9 +182,9 @@ var clipboard = (function () { }, } - + return exports - + })() diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/gfx.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/gfx.js index 5e0c59a..54678a9 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/gfx.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/gfx.js @@ -66,7 +66,7 @@ var blit = (function(){ blit.circle = function(A, lex){ var hw = brush.w/2, hh = brush.h/2 var ratio, distance - + if (brush.w === brush.h){ distance = distance_square ratio = hw / hh * (brush.w === 3 || brush.w === 5 ? 1.2 : 1.05) @@ -100,7 +100,7 @@ var blit = (function(){ }) } blit.square = function(A, lex){ - // i.e. no transparency + // i.e. no transparency } return blit })() @@ -108,61 +108,33 @@ var blit = (function(){ var draw = (function(){ var last_point = [0,0] - + function down (e, lex, point) { var w = canvas.w, h = canvas.h erasing = (e.which == "3" || e.ctrlKey) changed = true if (e.shiftKey) { line (lex, last_point, point, erasing) - if (mirror_x) { - line(lex, [w-last_point[0], last_point[1]], [w-point[0], point[1]], erasing) - } - if (mirror_y) { - line(lex, [last_point[0], h-last_point[1]], [point[0], h-point[1]], erasing) - } - if (mirror_x && mirror_y) { - line(lex, [w-last_point[0], h-last_point[1]], [w-point[0], h-point[1]], erasing) - } } else { stamp (canvas, brush, point[0], point[1], erasing) - if (mirror_x) { - stamp (canvas, brush, w-point[0], point[1], erasing) - } - if (mirror_y) { - stamp (canvas, brush, point[0], h-point[1], erasing) - } - if (mirror_x && mirror_y) { - stamp (canvas, brush, w-point[0], h-point[1], erasing) - } } last_point[0] = point[0] last_point[1] = point[1] } - + function set_last_point (e, point) { last_point[0] = point[0] last_point[1] = point[1] } - + function move (e, lex, point) { var w = canvas.w, h = canvas.h line(lex, last_point, point, erasing) - if (mirror_x) { - line(lex, [w-last_point[0], last_point[1]], [w-point[0], point[1]], erasing) - } - if (mirror_y) { - line(lex, [last_point[0], h-last_point[1]], [point[0], h-point[1]], erasing) - } - if (mirror_x && mirror_y) { - line(lex, [w-last_point[0], h-last_point[1]], [w-point[0], h-point[1]], erasing) - } - last_point[0] = point[0] last_point[1] = point[1] } - + function move_toroidal (e, lex, point) { var w = canvas.w, h = canvas.h var src_x_quantile = quantile( last_point[0], w ) @@ -223,18 +195,12 @@ var draw = (function(){ var y_b = mod( point[1], h ) var last_point_mod = [x_b, y_b], point_mod = [x_a, y_a] line(lex, last_point_mod, point_mod, erasing) - // if (mirror_x) { - // line(lex, [w-last_point_mod[0], last_point_mod[1]], [w-point_mod[0], point_mod[1]], erasing) - // } - // if (mirror_y) { - // line(lex, [last_point_mod[0], h-last_point_mod[1]], [point_mod[0], h-point_mod[1]], erasing) - // } } last_point[0] = point[0] last_point[1] = point[1] // y = point.y } - + function point (lex, x, y, erasing) { stamp (canvas, brush, x, y, erasing) } @@ -268,7 +234,7 @@ var draw = (function(){ } }) } - + function fill (lex, x, y) { var q = [ [x,y] ] var aa = canvas.aa diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/lex.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/lex.js index 9bfd128..c17f142 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/lex.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/lex.js @@ -64,14 +64,6 @@ Lex.prototype.mirc = function(bg_, fg_){ return [bg_, fg_, "\x03" + (this.fg&15) + "," + ((this.bg&15) < 10 && !charIsNaN ? "0" : "") + (this.bg&15) + char] } } -Lex.prototype.ansi = function(){ - var fg = ansi_fg[ this.fg&15 ] - var bg = ansi_bg[ this.bg&15 ] - var c = this.sanitize() - if (c == "\\") c = "\\\\" - if (c == '"') c = '\\"' - return "\\e[" + fg + ";" + bg + "m" + c -} Lex.prototype.assign = function (lex){ this.fg = lex.fg this.bg = lex.bg diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/matrix.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/matrix.js index 0ec4ec5..2dfb85c 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/matrix.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/matrix.js @@ -58,8 +58,8 @@ Matrix.prototype.demolish = function (){ this.forEach(function(lex){ lex.demolish() }) - while (this.rapper && this.rapper.firstChild) { - this.rapper.removeChild(this.rapper.firstChild); + while (this.wrapper && this.wrapper.firstChild) { + this.wrapper.removeChild(this.wrapper.firstChild); } this.aa.forEach(function(row){ row.length = 0 @@ -87,7 +87,7 @@ Matrix.prototype.focus = function(x, y){ y = mod(y, this.h) this.focus_x = x this.focus_y = y - + //focused_input = this this.aa[y][x].focus() } @@ -122,15 +122,15 @@ Matrix.prototype.build = function(){ lex.build() }) } -Matrix.prototype.append = function(rapper){ - rapper = this.rapper = rapper || this.rapper - if (! this.rapper) return +Matrix.prototype.append = function(wrapper){ + wrapper = this.wrapper = wrapper || this.wrapper + if (! this.wrapper) return this.aa.forEach(function(row, y){ var div = document.createElement("div") row.forEach(function(lex, x) { div.appendChild(lex.span) }) - rapper.appendChild( div ) + wrapper.appendChild( div ) }) } Matrix.prototype.region = function(w,h,x,y) { @@ -164,7 +164,7 @@ Matrix.prototype.resize = function(w,h){ h = h || canvas.h var div, row, lex var f = this.f, old_h = this.aa.length, old_w = this.aa[0].length - var rapper = this.rapper + var wrapper = this.wrapper w = max(w, 1) h = max(h, 1) if (h < old_h) { @@ -180,7 +180,7 @@ Matrix.prototype.resize = function(w,h){ else if (h > old_h) { for (var y = old_h; y < h; y++) { div = document.createElement("div") - rapper.appendChild( div ) + wrapper.appendChild( div ) this.aa[y] = new Array (w) for (var x = 0; x < w; x++) { lex = this.aa[y][x] = f(x,y) @@ -188,7 +188,7 @@ Matrix.prototype.resize = function(w,h){ } } } - + if (w < old_w) { this.aa.forEach(function(row, y){ while (row.length > w) { @@ -206,38 +206,27 @@ Matrix.prototype.resize = function(w,h){ } }) } - + this.w = w this.h = h this.bind && this.bind() this.focus_clamp() - if (this.rapper && this.rapper.parentNode != document.body) { - this.resize_rapper() + if (this.wrapper && this.wrapper.parentNode != document.body) { + this.resize_wrapper() } } -Matrix.prototype.resize_rapper = function(){ - var cell = canvas.aa[0][0].span - var cw = cell.offsetWidth - var ch = cell.offsetHeight -// if (canvas.grid) { ch++ } - var width = cw * this.aa[0].length - var height = ch * this.aa.length - if (canvas.grid) { width++; height++ } - if (this.rotated) { - this.rapper.parentNode.classList.add("rotated") - this.rapper.parentNode.style.height = (width) + "px" - this.rapper.parentNode.style.width = (height) + "px" - this.rapper.style.top = (width/2) + "px" - // this.rapper.style.left = ((canvas_rapper.offsetHeight+20)/2) + "px" - } - else { - this.rapper.parentNode.classList.remove("rotated") - this.rapper.parentNode.style.height = "" - this.rapper.style.width = - this.rapper.parentNode.style.width = (width) + "px" - this.rapper.style.top = "" - // canvas_rapper.style.left = "auto" - } +Matrix.prototype.resize_wrapper = function(){ + var cell = canvas.aa[0][0].span + var cw = cell.offsetWidth + var ch = cell.offsetHeight +// if (canvas.grid) { ch++ } + var width = cw * this.aa[0].length + var height = ch * this.aa.length + if (canvas.grid) { width++; height++ } + this.wrapper.parentNode.style.height = "" + this.wrapper.style.width = + this.wrapper.parentNode.style.width = (width) + "px" + this.wrapper.style.top = "" } Matrix.prototype.ascii = function () { var lines = this.aa.map(function(row, y){ @@ -250,23 +239,6 @@ Matrix.prototype.ascii = function () { var txt = lines.join("\n") return txt } -Matrix.prototype.ansi = function (opts) { - var lines = this.aa.map(function(row, y){ - var last, line = "" - row.forEach(function(lex, x) { - if (lex.eqColor(last)) { - line += lex.sanitize() - } - else { - line += lex.ansi() - last = lex - } - }) - return line - }) - var txt = lines.filter(function(line){ return line.length > 0 }).join('\\e[0m\\n') + "\\e[0m" - return 'echo -e "' + txt + '"' -} Matrix.prototype.mirc = function (opts) { var cutoff = false var lines = this.aa.map(function(row, y){ @@ -275,7 +247,7 @@ Matrix.prototype.mirc = function (opts) { var bg_ = -1, fg_ = 15 if (lex.eqColor(last)) { line += lex.sanitize() - } + } else { [bg_, fg_, line_] = lex.mirc(bg_, fg_) line += line_; last = lex; @@ -286,39 +258,15 @@ Matrix.prototype.mirc = function (opts) { } return line }) - + var txt = lines.filter(function(line){ return line.length > 0 }).join('\n') - + if (cutoff) { txt = new String(txt) txt.cutoff = true } return txt } -Matrix.prototype.irssi = function(opts){ - var mirc = this.mirc(opts) - var txt = mirc - // .replace(/\%/g, '%%') - .replace(/\\/g, '\\x5C') - .replace(/\"/g, '\\\"') - // .replace(/\'/g, '\\\'') - .replace(/\`/g, '\\\`') - .replace(/\$/g, '\\$') - // .replace(/\n\s+/g, '\n') - // .replace(/\s+$/g, '\n') - // .replace(/^\n+/, '') - .replace(/\n/g, '\\n') - .replace(/\x02/g, '\\x02') - .replace(/\x03/g, '\\x03') - - txt = unicode.escapeToEscapedBytes(txt) - txt = '/exec -out printf "%b" "' + txt + '"\n' - if (mirc.cutoff){ - txt = new String(txt) - txt.cutoff = true - } - return txt -} var undo = (function(){ @@ -388,8 +336,8 @@ var save_size = function(w, h, state){ } // the reason for stringifying the x y coords is so that each // coordinate is saved only once in an undo state. -// otherwise there would be problems with, eg, a brush stroke -// that passed over the same grid cell twice. +// otherwise there would be problems with, eg, a brush stroke +// that passed over the same grid cell twice. var save_lex = function(x, y, lex, state){ // var start = Date.now() state = state || current_undo @@ -509,7 +457,7 @@ var undo = function(){ if (!state) return; restore_state(state) - + // now take the applied undo state and store it on the redo state // and push the redo state to the redo stack state.redo.undo = state @@ -522,7 +470,7 @@ var undo = function(){ var redo = function(){ var state = stack.redo.pop(); if (!state) return; - + restore_state(state) state.undo.redo = state diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/brush.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/brush.js index 668538f..285bc82 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/brush.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/brush.js @@ -1,5 +1,5 @@ var brush = (function(){ - + var brush = new Matrix (5, 5, function(x,y){ var lex = new Lex (x,y) lex.build() @@ -7,9 +7,9 @@ var brush = (function(){ }) brush.modified = false - + brush.mask = blit.circle - + brush.generate = function(){ brush.fill(brush) brush.mask(brush) @@ -25,7 +25,7 @@ var brush = (function(){ if (lex.bound) return lex.bound = true - + var point = [x,y] lex.span.addEventListener('contextmenu', function(e){ e.preventDefault() @@ -83,7 +83,7 @@ var brush = (function(){ brush.contract = function(i){ brush.size_add(-i, -i) } - + brush.load = function(lex){ brush.char = lex.char brush.fg = lex.fg @@ -98,11 +98,41 @@ var brush = (function(){ brush.fg = 0 brush.bg = 1 brush.opacity = 1 - + brush.draw_fg = true brush.draw_bg = true brush.draw_char = true - + return brush })() + +var custom = (function(){ + + var exports = {} + + exports.clone = function (){ + var new_brush = brush.clone() + var wrapper = document.createElement("div") + wrapper.className = "custom" + new_brush.append(wrapper) + custom_wrapper.appendChild(wrapper) + // store in localstorage? + wrapper.addEventListener("click", function(e){ + if (e.shiftKey) { + wrapper.parentNode.removeChild(wrapper) + delete new_brush + } else { + // load this brush + exports.load(new_brush) + } + }) + } + + exports.load = function(new_brush){ + brush.assign( new_brush ) + } + + return exports + +})() diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/canvas.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/canvas.js index 57bea79..739a083 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/canvas.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/canvas.js @@ -20,7 +20,6 @@ var canvas = current_canvas = (function(){ e.preventDefault() }) lex.span.addEventListener('mousedown', function(e){ - if (is_mobile) return e.preventDefault() dragging = true current_canvas = canvas @@ -57,7 +56,6 @@ var canvas = current_canvas = (function(){ lex.span.addEventListener("mousemove", function(e){ mouse.x = x mouse.y = y - if (is_mobile) return if (! dragging) return if (drawing) { draw.move(e, lex, point) @@ -72,45 +70,6 @@ var canvas = current_canvas = (function(){ }) }) - - if (is_mobile) { - canvas.rapper.addEventListener('touchstart', function(e){ - e.preventDefault() - var x, y, point, lex - x = (e.touches[0].pageX - canvas.rapper.offsetTop) / canvas.aa[0][0].span.offsetWidth - y = (e.touches[0].pageY - canvas.rapper.offsetTop) / canvas.aa[0][0].span.offsetHeight - x = ~~clamp(x, 0, canvas.aa[0].length-1) - y = ~~clamp(y, 0, canvas.aa.length-1) - point = [x,y] - lex = canvas.aa[y][x] - dragging = true - if (drawing) { - undo.new() - draw.down(e, lex, point) - } - else if (filling) { - undo.new() - draw.fill(brush, x, y) - } - canvas.focus(x, y) - }) - canvas.rapper.addEventListener("touchmove", function(e){ - e.preventDefault() - var x, y, point, lex - x = (e.touches[0].pageX - canvas.rapper.offsetTop) / canvas.aa[0][0].span.offsetWidth - y = (e.touches[0].pageY - canvas.rapper.offsetTop) / canvas.aa[0][0].span.offsetHeight - x = ~~clamp(x, 0, canvas.aa[0].length-1) - y = ~~clamp(y, 0, canvas.aa.length-1) - point = [x,y] - lex = canvas.aa[y][x] - if (! dragging) return - if (drawing) { - draw.move(e, lex, point) - } - canvas.focus(x, y) - }) - } - } canvas.min = 1 @@ -126,7 +85,7 @@ var canvas = current_canvas = (function(){ if (!no_undo){ undo.new() undo.save_resize(w, h, old_w, old_h) - } + } canvas.__proto__.resize.call(canvas, w, h) controls.canvas_w.char = "" + w diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/controls.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/controls.js index efa3bae..37c9813 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/controls.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/controls.js @@ -31,7 +31,7 @@ var controls = (function(){ controls.circle.done = function(){ drawing = false } - + controls.square = new Tool (square_el) controls.square.use = function(){ brush.mask = blit.square @@ -42,7 +42,7 @@ var controls = (function(){ controls.square.done = function(){ drawing = false } - + controls.text = new Tool (text_el) controls.text.use = function(){ current_filetool && current_filetool.blur() @@ -97,7 +97,7 @@ var controls = (function(){ filling = false document.body.classList.remove("bucket") } - + controls.undo = new BlurredTool (undo_el) controls.undo.use = function(){ undo.undo() @@ -119,12 +119,12 @@ var controls = (function(){ controls.grid = new BlurredCheckbox (grid_el) controls.grid.memorable = true controls.grid.use = function(state){ - state = typeof state == "boolean" ? state : ! document.body.classList.contains("grid") + state = typeof state == "boolean" ? state : ! document.body.classList.contains("grid") document.body.classList[ state ? "add" : "remove" ]('grid') - letters.grid = palette.grid = canvas.grid = state - canvas.resize_rapper() - palette.resize_rapper() - letters.resize_rapper() + letters.grid = palette.grid = canvas.grid = state + canvas.resize_wrapper() + palette.resize_wrapper() + letters.resize_wrapper() if (! selection.hidden) selection.reposition() this.update( state ) } @@ -145,12 +145,12 @@ var controls = (function(){ clipboard.show() clipboard.import_mode() } - + controls.save_format = new RadioGroup(format_el) controls.save_format.name = 'save_format' controls.save_format.memorable = true var cs = controls.save_format.controls - cs.mirc.use = cs.irssi.use = cs.ascii.use = function(){ + cs.mirc.use = cs.ascii.use = function(){ clipboard.export_data() } // @@ -162,20 +162,8 @@ var controls = (function(){ this.update(state) } - controls.advanced = new BlurredCheckbox (advanced_checkbox) - controls.advanced.memorable = true - controls.advanced.use = function(state){ - console.log(state) - state = typeof state == "boolean" ? state : ! document.body.classList.contains('panke') - if (state) - document.body.classList.add('panke') - else - document.body.classList.remove('panke') - this.update(state) - } - // - + controls.fg = new BlurredCheckbox (fg_checkbox) controls.fg.use = function(state){ brush.draw_fg = state || ! brush.draw_fg @@ -193,38 +181,7 @@ var controls = (function(){ brush.draw_char = state || ! brush.draw_char this.update(brush.draw_char) } - - // -// controls.turn = new BlurredCheckbox (turn_checkbox) -// controls.turn.memorable = true -// controls.turn.use = function(state){ -// canvas.rotated = typeof state == "boolean" ? state : ! canvas.rotated -// canvas.resize_rapper() -// this.update(canvas.rotated) -// } - - // controls.pixels = new BlurredCheckbox (pixels_checkbox) - // controls.pixels.memorable = true - // controls.pixels.use = function(state){ - // canvas.pixels = typeof state == "boolean" ? state : ! canvas.pixels - // document.body.classList.toggle("pixels", canvas.pixels) - // this.update(canvas.pixels) - // } - - controls.mirror_x = new BlurredCheckbox (mirror_x_checkbox) - controls.mirror_x.use = function(state){ - window.mirror_x = typeof state == "boolean" ? state : ! window.mirror_x - this.update(window.mirror_x) - } - controls.mirror_y = new BlurredCheckbox (mirror_y_checkbox) - controls.mirror_y.use = function(state){ - window.mirror_y = typeof state == "boolean" ? state : ! window.mirror_y - this.update(window.mirror_y) - } - - // - controls.vertical = new BlurredCheckbox (vertical_checkbox) controls.vertical.memorable = true controls.vertical.use = function(state){ @@ -244,14 +201,14 @@ var controls = (function(){ } // - + controls.brush_w = new Lex (brush_w_el) controls.brush_h = new Lex (brush_h_el) controls.canvas_w = new Lex (canvas_w_el) controls.canvas_h = new Lex (canvas_h_el) - // bind - + // bind + controls.bind = function(){ for (var n in controls){ @@ -269,7 +226,6 @@ var controls = (function(){ ].forEach(function(lex){ lex.span.addEventListener('mousedown', function(e){ lex.focus() - if (is_mobile) cursor_input.focus() }) }); @@ -278,7 +234,7 @@ var controls = (function(){ controls.brush_h.key = keys.single_numeral_key(controls.brush_h, function(h){ brush.resize(brush.w, h) }) controls.brush_h.raw_key = keys.arrow_key(function(h){ brush.size_add(0, h) }) - + controls.canvas_w.key = keys.multi_numeral_key(controls.canvas_w, 3) controls.canvas_w.onBlur = keys.multi_numeral_blur(controls.canvas_w, function(w){ canvas.resize(w, canvas.h) }) controls.canvas_w.raw_key = keys.arrow_key(function(w){ canvas.size_add(w, 0) }) @@ -286,7 +242,7 @@ var controls = (function(){ controls.canvas_h.key = keys.multi_numeral_key(controls.canvas_h, 3) controls.canvas_h.onBlur = keys.multi_numeral_blur(controls.canvas_h, function(h){ canvas.resize(canvas.w, h) }) controls.canvas_h.raw_key = keys.arrow_key(function(h){ canvas.size_add(0, h) }) - + add_custom_el.addEventListener("click", function(){ custom.clone() }) diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/custom.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/custom.js deleted file mode 100644 index c021679..0000000 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/custom.js +++ /dev/null @@ -1,29 +0,0 @@ -var custom = (function(){ - - var exports = {} - - exports.clone = function (){ - var new_brush = brush.clone() - var rapper = document.createElement("div") - rapper.className = "custom" - new_brush.append(rapper) - custom_rapper.appendChild(rapper) - // store in localstorage? - rapper.addEventListener("click", function(e){ - if (e.shiftKey) { - rapper.parentNode.removeChild(rapper) - delete new_brush - } else { - // load this brush - exports.load(new_brush) - } - }) - } - - exports.load = function(new_brush){ - brush.assign( new_brush ) - } - - return exports - -})() diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/keys.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/keys.js index 621c7a7..fc7ea3c 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/keys.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/keys.js @@ -85,7 +85,7 @@ var keys = (function(){ if (e.shiftKey) undo.redo(); else - undo.undo(); + undo.undo(); break // default: // if (focused) { focused.key(undefined, e.keyCode) } @@ -102,7 +102,7 @@ var keys = (function(){ cursor_input.value = "" // console.log("input:", char) - + if (current_tool.name != "text" && ! brush.modified) { brush.char = char if (char == " ") { @@ -126,14 +126,14 @@ var keys = (function(){ current_canvas.focus_add(1, 0) } }) - + cursor_input.addEventListener("keyup", function(e){ if (! e.altKey) { document.body.classList.remove("dropper") } }) } - + keys.int_key = function (f) { return function (key, keyCode) { var n = parseInt(key) diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/letters.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/letters.js deleted file mode 100644 index d745171..0000000 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/letters.js +++ /dev/null @@ -1,89 +0,0 @@ -var letters = (function(){ - - var last_charset = "" - var charset_index = 0 - var charsets = [ - 'Basic Latin', - 'Latin-1 Supplement', - 'Box Drawing', - 'Block Elements', - ] - - var letters = new Matrix (1, 1, function(x,y){ - var lex = new Lex (x,y) - return lex - }) - - letters.charset = "" - - letters.repaint = function(charset){ - letters.charset = charset = charset || last_charset - last_charset = charset - var chars = unicode.block(charset, 32) - if (chars[0] != " ") chars.unshift(" ") - if (canvas.vertical) { - letters.resize( Math.ceil( chars.length / 16 ), 16 ) - } - else { - letters.resize( 32, Math.ceil( chars.length / 32 ) ) - } - - var i = 0 - - letters.forEach(function(lex,x,y){ - if (canvas.vertical) { x=x^y;y=x^y;x=x^y } - var char = chars[i++] - if (palette.chars.indexOf(brush.char) > 1) { - lex.bg = brush.fg - lex.fg = brush.bg - } - else { - lex.bg = colors.black - lex.fg = brush.fg == fillColor ? colors.black : brush.fg - } - lex.char = char - lex.opacity = 1 - lex.build() - }) - } - - letters.bind = function(){ - letters.forEach(function(lex,x,y){ - if (lex.bound) return - lex.bound = true - - lex.span.addEventListener('mousedown', function(e){ - e.preventDefault() - if (e.shiftKey) { - charset_index = (charset_index+1) % charsets.length - letters.repaint(charsets[charset_index]) - return - } - else if (e.ctrlKey || e.which == 3) { - brush.char = lex.char - brush.bg = brush.fg - brush.fg = fillColor - } - else { - brush.char = lex.char - if (lex.char == " ") { - brush.bg = brush.fg - } - else if (brush.bg != fillColor) { - brush.fg = brush.bg - brush.bg = fillColor - } - } - if (! brush.modified) { - brush.generate() - } - palette.repaint() - }) - lex.span.addEventListener('contextmenu', function(e){ - e.preventDefault() - }) - }) - } - - return letters -})() \ No newline at end of file diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/palette.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/paletters.js similarity index 56% rename from asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/palette.js rename to asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/paletters.js index 46045eb..26bac3a 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/palette.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/paletters.js @@ -1,3 +1,93 @@ +var letters = (function(){ + + var last_charset = "" + var charset_index = 0 + var charsets = [ + 'Basic Latin', + 'Latin-1 Supplement', + 'Box Drawing', + 'Block Elements', + ] + + var letters = new Matrix (1, 1, function(x,y){ + var lex = new Lex (x,y) + return lex + }) + + letters.charset = "" + + letters.repaint = function(charset){ + letters.charset = charset = charset || last_charset + last_charset = charset + var chars = unicode.block(charset, 32) + if (chars[0] != " ") chars.unshift(" ") + if (canvas.vertical) { + letters.resize( Math.ceil( chars.length / 16 ), 16 ) + } + else { + letters.resize( 32, Math.ceil( chars.length / 32 ) ) + } + + var i = 0 + + letters.forEach(function(lex,x,y){ + if (canvas.vertical) { x=x^y;y=x^y;x=x^y } + var char = chars[i++] + if (palette.chars.indexOf(brush.char) > 1) { + lex.bg = brush.fg + lex.fg = brush.bg + } + else { + lex.bg = colors.black + lex.fg = brush.fg == fillColor ? colors.black : brush.fg + } + lex.char = char + lex.opacity = 1 + lex.build() + }) + } + + letters.bind = function(){ + letters.forEach(function(lex,x,y){ + if (lex.bound) return + lex.bound = true + + lex.span.addEventListener('mousedown', function(e){ + e.preventDefault() + if (e.shiftKey) { + charset_index = (charset_index+1) % charsets.length + letters.repaint(charsets[charset_index]) + return + } + else if (e.ctrlKey || e.which == 3) { + brush.char = lex.char + brush.bg = brush.fg + brush.fg = fillColor + } + else { + brush.char = lex.char + if (lex.char == " ") { + brush.bg = brush.fg + } + else if (brush.bg != fillColor) { + brush.fg = brush.bg + brush.bg = fillColor + } + } + if (! brush.modified) { + brush.generate() + } + palette.repaint() + }) + lex.span.addEventListener('contextmenu', function(e){ + e.preventDefault() + }) + }) + } + + return letters +})() + var palette = (function(){ var palette = new Matrix (32, 2, function(x,y){ @@ -102,14 +192,14 @@ var palette = (function(){ brush.char = lex.char brush.opacity = lex.opacity brush.generate() - brush_rapper.style.borderColor = css_reverse_lookup[fillColor] + brush_wrapper.style.borderColor = css_reverse_lookup[fillColor] return }) }) } - brush_rapper.style.borderColor = css_reverse_lookup[fillColor] + brush_wrapper.style.borderColor = css_reverse_lookup[fillColor] return palette diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/selection.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/selection.js index a2720cb..09e2194 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/selection.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/selection.js @@ -1,13 +1,13 @@ var selection = (function(){ var creating = false, moving = false, copying = false - + var selection_canvas = new Matrix (1, 1, function(x,y){ var lex = new Lex (x,y) lex.build() return lex }) - + var selector_el = document.createElement("div") selector_el.className = "selector_el" selection_canvas.append(selector_el) @@ -21,12 +21,12 @@ var selection = (function(){ // - on mouseup, the selection is locked. then.. // - drag the selection to move it -- this "cuts" it and leaves a blank space on the canvas. // - shift-drag the selection to copy it - + var a = [0, 0] var b = [0, 0] var c = [0, 0] var d = [0, 0] - + function reset () { a[0] = a[1] = b[0] = b[1] = 0 } @@ -42,7 +42,7 @@ var selection = (function(){ var l = left(a,b), m = top(a,b), n = right(a,b), o = bottom(a,b) a[0] = l ; a[1] = m ; b[0] = n ; b[1] = o } - + function contains (a,b,point) { var contains_x = a[0] <= point[0] && point[0] <= b[0] var contains_y = a[1] <= point[1] && point[1] <= b[1] @@ -130,7 +130,7 @@ var selection = (function(){ creating = moving = copying = false selector_el.classList.remove("dragging") } - + function show () { selecting = true } @@ -144,7 +144,7 @@ var selection = (function(){ selection.hidden = true selecting = false } - + var selection = {} selection.reposition = reposition selection.down = down diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/tool.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/tool.js index ad62d80..e941127 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/tool.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/tool.js @@ -26,7 +26,7 @@ var Tool = Model({ current_tool = this this.el.classList.add('focused') this.use() - if (is_desktop) { cursor_input.focus() } + cursor_input.focus() }, blur: function(){ current_tool = null @@ -45,7 +45,7 @@ var FileTool = Tool.extend({ current_filetool = this this.el.classList.add('focused') this.use() - if (is_desktop) { cursor_input.focus() } + cursor_input.focus() }, blur: function(){ current_filetool = null @@ -104,7 +104,7 @@ var RadioGroup = Tool.extend({ control.use() if (this.memorable){ localStorage.setItem("ascii.tools." + this.name, this.value) - } + } }, bind: function(){ var tool = this diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/transform.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/transform.js index d6253bc..dd4fe62 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/transform.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/ui/transform.js @@ -33,7 +33,7 @@ var transform = (function(){ } function up (e){ } - + var modes = { rotate: { @@ -59,7 +59,7 @@ var transform = (function(){ return true }, }, - + scale: { init: function(e){ mode.independent = e.shiftKey || e.altKey || e.metaKey @@ -86,7 +86,7 @@ var transform = (function(){ return true }, }, - + translate: { init: function(e){ mode.dx = mode.dy = 0 @@ -113,7 +113,7 @@ var transform = (function(){ before: function(dx, dy, pdx, pdy, point){ var new_position = mode.is_y ? point[1] : point[0] var dd = mode.is_y ? pdx : pdy - + if (mode.position !== new_position) { mode.position = new_position mode.direction = 0 @@ -151,19 +151,19 @@ var transform = (function(){ }, */ } - + function set_mode(m){ if (m in modes) { mode = modes[m] transforming = true } } - + function done(){ transforming = false copy && copy.demolish() } - + return { down: down, move: move, diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/util.js b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/util.js index ca97630..c71cae5 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/util.js +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/js/util.js @@ -77,7 +77,7 @@ function rgbpixel(d,x,y){ function fit(d,x,y){ rgbpixel(d,x*actual_w/w,y*actual_h/h) } function step(a, b){ - return (b >= a) + 0 + return (b >= a) + 0 // ^^ bool -> int } @@ -167,11 +167,11 @@ d=this.apply(a,arguments))===e?a:d}.bind(d):d;a.init&&a.init.apply(a,arguments) =Model); // c-{{{-< function defaults (dest, src) { - dest = dest || {} - for (var i in src) { - dest[i] = typeof dest[i] == 'undefined' ? src[i] : dest[i] - } - return dest + dest = dest || {} + for (var i in src) { + dest[i] = typeof dest[i] == 'undefined' ? src[i] : dest[i] + } + return dest } function setSelectionRange(input, selectionStart, selectionEnd) { @@ -190,10 +190,3 @@ function setSelectionRange(input, selectionStart, selectionEnd) { function setCaretToPos(input, pos) { setSelectionRange(input, pos, pos); } - -// Naive useragent detection pattern -var is_iphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) -var is_ipad = (navigator.userAgent.match(/iPad/i)) -var is_android = (navigator.userAgent.match(/Android/i)) -var is_mobile = is_iphone || is_ipad || is_android -var is_desktop = ! is_mobile; diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/text/LICENCE b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/text/LICENCE index b451736..9057f84 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/text/LICENCE +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/text/LICENCE @@ -1,29 +1,28 @@ Jollo LNT license Version 1 - February 2015 - - Copyright, 2015. JOLLO NET NA. + + Copyright, 2015. JOLLO NET NA. The Jollo IRC Network. - + Vu, fare wanderer, confronted with raw, programmatic instruction dans la forme la plus pure. A hesitation, troubled to the terms - qui ce license affirme. Par un voyage du explorer le mechanisme + qui ce license affirme. Par un voyage du explorer le mechanisme et ponder la fabrication. Voila! La remide: egress sans risque. - + Sans trace (Leave No Trace) via sept principales: - + 0. Modifique language en advance. L'Apposer Jollo LNT license - with copies en distribuer. - - 1. Non responsible pour neglige programme du problematique. - + with copies en distribuer. + + 1. Non responsible pour neglige programme du problematique. + 2. Non sympathie pour neglige programme du problematique. - + 3. Non permission l'modifique under any circumstance. - + 4. Non permission distribution under any circumstance. - + 5. Respect les programmatic instructions. - + 6. Non interfere avec l'harmonie d'une amitie. - - \ No newline at end of file + diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/text/TODO b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/text/TODO index e3fa8fb..255bbe9 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/text/TODO +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/assets/text/TODO @@ -1,10 +1,19 @@ -1) document: constraints for video reverse -2) document: Shift + LMB to delete brush, Shift + LMB to switch character sets -3) feature: allow to adjust cutoff warning threshold, {dis,en}able cutoff & print line numbers affected -4) feature: {bold,italic,underline} attributes -5) feature: keyboard instead of [LR]MB -6) feature: {line,measuring} tool -7) feature: status bar w/ position, etc. -8) feature: zoom {in,out} -9) reimplement: {save,upload} as PNG & gallery, shaders (possibly) -10) releases: merge w/ MiRCARTools (into asciiblaster,) provide signed release APK, set is_{iphone,ipad,android,mobile,desktop} +1) feature: {bold,italic,underline} attributes +2) feature: draw w/ keyboard instead of [LR]MB +3) feature: {line,measuring} tool +4) feature: status bar w/ position, etc. +5) feature: zoom {in,out} (esp. on Android) +6) reimplement: ANSI (maybe,) {save,upload} as PNG & gallery, cutoff (print line #(s) affected, tunably,) shaders (maybe) +7) releases: merge w/ MiRCARTools (into asciiblaster,) provide signed release APK + +In progress: +1) each newly created & modified(!) ascii is assigned an ascii UUID, if not present already +2) each ascii w/ an ascii UUID is auto-saved to localStorage every 3 minutes +3) ascii autosaves w/ count >8 (or >8*3mins=24mins old) are purged from localStorage +4) asciis w/ count >8 are purged from localStorage +5) limits are tunable and either defaulted or localStorage'd +6) UI lists: a) asciis (with UUID) b) autosaves c) parameters +7) always prompt on close window/exit/... +8) always prompt on new +9) save to text file @ standalone app +10) bump version to 1.0.8, deploy-all.sh, upblog releases to github diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/index.html b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/index.html index 6fcb175..ce326d6 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/index.html +++ b/asciiblaster-cordoba/platforms/android/app/src/main/assets/www/index.html @@ -1,112 +1,116 @@ - - - - -asciiblaster v1.0.6 - - - - - - - -
-
-
- -
-
-
-
- . -
-
-
+ + + + + + + + + + + asciiblaster v1.0.7 + + + + + +
+
-
-
+ + +
+ +
+
+
+ . +
+
+
-
- x fg
- x bg
- x char
-
- + add - _ mirror x
- _ mirror y
-
-
-
-
-
- square
- circle
- cross
- text
- fill
- select
-
- rotate
- scale
- translate
- slice
- - _ grid - - x vertical - -
- -
-
- new - save - load -
- doc -
- _ advanced -
-
- brush: 5 x 5
- canvas: 100 x 30
+ + +
+
+
+ x fg
+ x bg
+ x char
+ + add
+
+
+
- -
- ascii *irssi mirc ansi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/asciiblaster-cordoba/platforms/android/app/src/main/res/xml/config.xml b/asciiblaster-cordoba/platforms/android/app/src/main/res/xml/config.xml index d03f57c..5fa2fda 100644 --- a/asciiblaster-cordoba/platforms/android/app/src/main/res/xml/config.xml +++ b/asciiblaster-cordoba/platforms/android/app/src/main/res/xml/config.xml @@ -1,5 +1,5 @@ - + diff --git a/asciiblaster-nw/package-lock.json b/asciiblaster-nw/package-lock.json index 96cc879..1e839d1 100644 --- a/asciiblaster-nw/package-lock.json +++ b/asciiblaster-nw/package-lock.json @@ -1,5 +1,5 @@ { "name": "asciiblaster", - "version": "1.0.6", + "version": "1.0.7", "lockfileVersion": 1 } diff --git a/asciiblaster-nw/package.json b/asciiblaster-nw/package.json index 67e9433..bd48bb4 100644 --- a/asciiblaster-nw/package.json +++ b/asciiblaster-nw/package.json @@ -18,7 +18,7 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, - "version": "1.0.6", + "version": "1.0.7", "window": { "title": "asciiblaster (standalone NW app)", "toolbar": true, diff --git a/assets/html/help.html b/assets/html/help.html index 4e8da98..0277f1e 100644 --- a/assets/html/help.html +++ b/assets/html/help.html @@ -7,7 +7,7 @@ - asciiblaster v1.0.6 documentation + asciiblaster v1.0.7 documentation diff --git a/index.html b/index.html index 6a63d0f..ce326d6 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@ - asciiblaster v1.0.6 + asciiblaster v1.0.7