Bump to v1.0.7.

This commit is contained in:
Lucio Andrés Illanes Albornoz 2018-11-25 13:49:21 +01:00
parent 21909c5cd0
commit 0b6376e542
39 changed files with 828 additions and 1236 deletions

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget id="com.lalbornoz.asciiblaster" version="1.0.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <widget id="com.lalbornoz.asciiblaster" version="1.0.7" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<author email="lucio@lucioillanes.de" href="https://github.com/lalbornoz/asciiblaster#readme"> <author email="lucio@lucioillanes.de" href="https://github.com/lalbornoz/asciiblaster#readme">
Lucio Andrés Illanes Albornoz &lt;lucio@lucioillanes.de&gt;, based on work by JOLLO NET NA Lucio Andrés Illanes Albornoz &lt;lucio@lucioillanes.de&gt;, based on work by JOLLO NET NA
</author> </author>

View File

@ -1,6 +1,6 @@
{ {
"name": "asciiblaster-cordoba", "name": "asciiblaster-cordoba",
"version": "1.0.6", "version": "1.0.7",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -127,7 +127,7 @@
} }
}, },
"inflight": { "inflight": {
"version": "1.0.6", "version": "1.0.7",
"bundled": true, "bundled": true,
"requires": { "requires": {
"once": "^1.3.0", "once": "^1.3.0",

View File

@ -30,5 +30,5 @@
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"version": "1.0.6" "version": "1.0.7"
} }

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10006" android:versionName="1.0.6" package="com.lalbornoz.asciiblaster" xmlns:android="http://schemas.android.com/apk/res/android"> <manifest android:hardwareAccelerated="true" android:versionCode="10007" android:versionName="1.0.7" package="com.lalbornoz.asciiblaster" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true"> <application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">

View File

@ -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)} * Foreground mIRC colours
.winxp .fc{color:rgb(0,0,128)} */
.winxp .fd{color:rgb(0,128,0)} .fa {color: #FFFFFF}
.winxp .fe{color:rgb(255,0,0)} .fb {color: #000000}
.winxp .ff{color:rgb(128,0,0)} .fc {color: #00007F}
.winxp .fg{color:rgb(128,0,128)} .fd {color: #009300}
.winxp .fh{color:rgb(255,128,0)} .fe {color: #FF0000}
.winxp .fi{color:rgb(255,255,0)} .ff {color: #7F0000}
.winxp .fj{color:rgb(0,255,0)} .fg {color: #9C009C}
.winxp .fk{color:rgb(0,128,128)} .fh {color: #FC7F00}
.winxp .fl{color:rgb(0,255,255)} .fi {color: #FFFF00}
.winxp .fm{color:rgb(0,0,255)} .fj {color: #00FC00}
.winxp .fn{color:rgb(255,0,255)} .fk {color: #009393}
.winxp .fo{color:rgb(128,128,128)} .fl {color: #00FFFF}
.winxp .fp{color:rgb(192,192,192)} .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)} * vim:ts=2 sw=2 expandtab fenc=utf-8 foldmethod=marker nowrap tw=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)}

View File

@ -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
*/

View File

@ -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
*/

View File

@ -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;
}
*/

View File

@ -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} /* {{{ BODY.grid styles */
a:link, a:visited {text-decoration: none; color: #6b6760} body.grid div {
a:hover { text-decoration: underline } border-left: 1px solid #444444;
.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;
} }
.rapper { body.grid span {
white-space:pre-wrap; border-bottom: 1px solid #444444;
word-wrap: break-word; border-right: 1px solid #444444;
} }
#ui_rapper .block { body.grid .tool {
width: 100px; border: 1px solid #444444;
} }
.block { body.grid #brush_wrapper > div:first-child,
padding:4px; 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 { /* {{{ .selector_el styles */
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 { .selector_el {
border: 1px dashed #fff !important; border: 1px dashed white !important;
padding-top: 1px; left: -999px;
position:absolute; margin-top: -1px;
margin-top: -1px; padding-top: 1px;
top:-999px;left:-999px; pointer-events: none;
pointer-events: none; position: absolute;
} top: -999px;
.selector_el.dragging {
color: #0f0;
} }
.selector_el.creating div { .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 { .custom {
float: left; float: left;
margin-right: 5px; margin-bottom: 5px;
margin-bottom: 5px; margin-right: 5px;
} }
@keyframes rainbow { .ed {
0% { color: hsl(0,100%,50%) } color: white;
33% { color: hsl(90,100%,50%) }
50% { color: #fff }
66% { color: hsl(320,100%,50%) }
100% { color: hsl(360,100%,50%) }
} }
.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, * vim:ts=2 sw=2 expandtab fenc=utf-8 foldmethod=marker nowrap tw=0
.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; }

View File

@ -1,30 +0,0 @@
<!-- https://raw.githubusercontent.com/lalbornoz/asciiblaster/master/LICENCE -->
<meta charset="UTF-8">
<link rel="stylesheet" href="../css/sally.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="../css/ak.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="../css/nitelite.css" type="text/css" charset="utf-8" />
<style>
body { font-family: 'FixedsysExcelsior301Regular'; }
a:nth-of-type(2n+1), a { color: #0f0; }
a:nth-of-type(2n+2), a { color: #ff0; }
</style>
<br><br>
<center>
<table border=35 cellpadding=10>
<tr><td style="background: rgba(0,0,100,0.5)">
<h1>asdf.us/ascii documentation</h1>
<span style="white-space: pre; color: white;">
These are some handy documents which address some of the more obscure
features of the asdf.us color code tool:
* <a href="tips.txt">tips.txt</a> - Tips on using the keyboard
* <a href="irssi.txt">irssi.txt</a> - Instructions on using IRSSI to make color codes.
For more information on IRC, Color Codes, and much more, visit the
<a href="http://jollo.org/LNT/doc/">documentation sitemap</a>, part of the <a href="http://jollo.org/">Jollo IRC Network</a>.
<a href="/ascii/">asdf.us/ascii</a>

View File

@ -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!

View File

@ -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

View File

@ -6003,4 +6003,4 @@
<glyph unicode="&#xfffc;" horiz-adv-x="3072" d="M256 1152h2688v-1152h-2688v1152zM1536 768h128v-128h-128v128zM1536 512h128v-128h-128v128zM896 384h-128v384h128v-384zM2432 384h-128v128h-256v-128h128v-128h384v128h128v512h-256v-512zM512 384h128v-128h384v128h128v384h-128v128h-384v-128h-128v-384zM1280 256 h512v128h128v128h-128v128h128v128h-128v128h-512v-640z" /> <glyph unicode="&#xfffc;" horiz-adv-x="3072" d="M256 1152h2688v-1152h-2688v1152zM1536 768h128v-128h-128v128zM1536 512h128v-128h-128v128zM896 384h-128v384h128v-384zM2432 384h-128v128h-256v-128h128v-128h384v128h128v512h-256v-512zM512 384h128v-128h384v128h128v384h-128v128h-384v-128h-128v-384zM1280 256 h512v128h128v128h-128v128h128v128h-128v128h-512v-640z" />
<glyph unicode="&#xfffd;" d="M896 1024h-128v128h-512v-128h-128v-256h256v256h256v-256h-128v-128h-128v-256h256v256h128v128h128v256zM640 256h-256v-256h256v256zM0 1280h1024v-1408h-1024v1408z" /> <glyph unicode="&#xfffd;" d="M896 1024h-128v128h-512v-128h-128v-256h256v256h256v-256h-128v-128h-128v-256h256v256h128v128h128v256zM640 256h-256v-256h256v256zM0 1280h1024v-1408h-1024v1408z" />
</font> </font>
</defs></svg> </defs></svg>

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<!-- {{{ HEAD -->
<head>
<link charset="utf-8" href="../css/fonts.css" rel="stylesheet" type="text/css" />
<link charset="utf-8" href="../css/help.css" rel="stylesheet" type="text/css" />
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>asciiblaster v1.0.6 documentation</title>
</head>
<!-- }}} -->
<!-- {{{ BODY -->
<body>
<div id="box_wrapper">
<div id="box">
<h1>asciiblaster documentation</h1>
<p>
These are some handy documents which address some of the more obscure features of asciiblaster:
</p>
<h2>Tips on using the keyboard</h2>
<pre>
[ Decrease brush size
] Increase brush size
&lt;Alt&gt; + &lt;LMB&gt; on canvas Fill brush with sampled color
&lt;Alt&gt; + &lt;Shift&gt; + &lt;LMB&gt; on canvas Copy canvas to brush
&lt;Ctrl&gt; + &lt;LMB&gt; on brush Erase cell
&lt;Ctrl&gt; + &lt;LMB&gt; on canvas Draw with background color
&lt;Shift&gt; + &lt;LMB&gt; on canvas Draw line from last position
&lt;Shift&gt; + &lt;LMB&gt; on character box Switch to next character set
&lt;Shift&gt; + &lt;LMB&gt; on stored brush Delete stored brush
&lt;RMB&gt; on palette Set background color (when drawing with a letter)
</pre>
<h2>Notate bene</h2>
<p>
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.)<br />
<br />
Internet Explorer is explicitly unsupported.<br />
<br />
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.
</p>
</div>
</div>
</body>
<!-- }}} -->
</html>
<!--
vim:ts=2 sw=2 expandtab fenc=utf-8 foldmethod=marker nowrap tw=0
-->

View File

@ -6,11 +6,9 @@ var selecting = false
var filling = false var filling = false
var changed = false var changed = false
var transforming = false var transforming = false
var mirror_x = false
var mirror_y = false
var focused var focused
var canvas, tools, palette, controls, brush, mode var canvas, tools, palette, controls, brush, mode
var current_tool, current_filetool, current_canvas var current_tool, current_filetool, current_canvas
var mouse = { x: 0, y: 0 } var mouse = { x: 0, y: 0 }
@ -19,12 +17,12 @@ function init () {
bind() bind()
} }
function build () { function build () {
canvas.append(canvas_rapper) canvas.append(canvas_wrapper)
brush.append(brush_rapper) brush.append(brush_wrapper)
palette.append(palette_rapper) palette.append(palette_wrapper)
letters.append(letters_rapper) letters.append(letters_wrapper)
letters.repaint("Basic Latin") letters.repaint("Basic Latin")
controls.circle.focus() controls.circle.focus()
brush.bg = colors.red brush.bg = colors.red
@ -32,7 +30,7 @@ function build () {
brush.build() brush.build()
// controls.grid.use() // controls.grid.use()
canvas.resize_rapper() canvas.resize_wrapper()
} }
function bind () { function bind () {
canvas.bind() canvas.bind()
@ -42,14 +40,14 @@ function bind () {
controls.bind() controls.bind()
keys.bind() keys.bind()
clipboard.bind() clipboard.bind()
window.addEventListener('mouseup', function(e){ window.addEventListener('mouseup', function(e){
dragging = erasing = false dragging = erasing = false
var ae = document.activeElement var ae = document.activeElement
if (ae !== import_textarea) { if (ae !== import_textarea) {
if (is_desktop) cursor_input.focus() cursor_input.focus()
} }
if (selecting) { if (selecting) {
@ -61,20 +59,20 @@ function bind () {
}) })
window.addEventListener("touchend", function(){ window.addEventListener("touchend", function(){
if (current_tool.name === "text") { if (current_tool.name === "text") {
if (is_desktop) cursor_input.focus() cursor_input.focus()
} }
dragging = false dragging = false
}) })
window.addEventListener('mousedown', function(e){ window.addEventListener('mousedown', function(e){
// if (is_desktop) { cursor_input.focus() } // cursor_input.focus()
}) })
document.addEventListener('DOMContentLoaded', function(){ document.addEventListener('DOMContentLoaded', function(){
if (is_desktop) { cursor_input.focus() } cursor_input.focus()
document.body.classList.remove('loading') document.body.classList.remove('loading')
}) })
window.onbeforeunload = function() { window.onbeforeunload = function() {
// if (changed && !in_iframe()) return "You have edited this drawing." // if (changed && !in_iframe()) return "You have edited this drawing."
} }

View File

@ -1,7 +1,7 @@
var clipboard = (function () { var clipboard = (function () {
var exports = { var exports = {
format: "irssi", format: "mirc",
importing: false, importing: false,
visible: false, visible: false,
canvas: document.createElement("canvas"), canvas: document.createElement("canvas"),
@ -19,8 +19,8 @@ var clipboard = (function () {
if (! clipboard.importing) { clipboard.export_data() } if (! clipboard.importing) { clipboard.export_data() }
} }
}, },
show: function () { import_rapper.style.display = "block"; clipboard.visible = true; changed = false }, show: function () { import_wrapper.style.display = "block"; clipboard.visible = true; changed = false },
hide: function () { import_rapper.style.display = "none"; clipboard.visible = false }, hide: function () { import_wrapper.style.display = "none"; clipboard.visible = false },
focus: function () { focus: function () {
if (! clipboard.importing) { if (! clipboard.importing) {
import_textarea.focus() 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 import_colorcode: function (data, no_undo) {
if (data.match(irssi_style_regex)){ if (data && data.preventDefault) {
data = data.replace(/\\x03/gm, '\x03') data = import_textarea.value
.replace(/(\\x..)+/gm, unicode.unescapeFromEscapedBytes) } else {
.replace(/\\x5C/g, '\\') data = data || import_textarea.value
.replace(/\\n/gm, '\n')
.replace(/\\`/gm, '`')
.replace(/\\"/gm, '"')
.replace(/\\\$/gm, '$')
.replace(irssi_style_regex, '')
.replace(/"\s*$/, '')
} }
var to_json = function(string, opts){ 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 () { export_data: function () {
var output var output
// switch (clipboard.format) { // switch (clipboard.format) {
@ -186,12 +170,6 @@ var clipboard = (function () {
case 'mirc': case 'mirc':
output = canvas.mirc({cutoff: 425}) output = canvas.mirc({cutoff: 425})
break break
case 'irssi':
output = canvas.irssi({cutoff: 425})
break
case 'ansi':
output = canvas.ansi()
break
} }
if (output.cutoff){ if (output.cutoff){
cutoff_warning_el.style.display = 'block' cutoff_warning_el.style.display = 'block'
@ -204,9 +182,9 @@ var clipboard = (function () {
}, },
} }
return exports return exports
})() })()

View File

@ -66,7 +66,7 @@ var blit = (function(){
blit.circle = function(A, lex){ blit.circle = function(A, lex){
var hw = brush.w/2, hh = brush.h/2 var hw = brush.w/2, hh = brush.h/2
var ratio, distance var ratio, distance
if (brush.w === brush.h){ if (brush.w === brush.h){
distance = distance_square distance = distance_square
ratio = hw / hh * (brush.w === 3 || brush.w === 5 ? 1.2 : 1.05) 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){ blit.square = function(A, lex){
// i.e. no transparency // i.e. no transparency
} }
return blit return blit
})() })()
@ -108,61 +108,33 @@ var blit = (function(){
var draw = (function(){ var draw = (function(){
var last_point = [0,0] var last_point = [0,0]
function down (e, lex, point) { function down (e, lex, point) {
var w = canvas.w, h = canvas.h var w = canvas.w, h = canvas.h
erasing = (e.which == "3" || e.ctrlKey) erasing = (e.which == "3" || e.ctrlKey)
changed = true changed = true
if (e.shiftKey) { if (e.shiftKey) {
line (lex, last_point, point, erasing) 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 { else {
stamp (canvas, brush, point[0], point[1], erasing) 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[0] = point[0]
last_point[1] = point[1] last_point[1] = point[1]
} }
function set_last_point (e, point) { function set_last_point (e, point) {
last_point[0] = point[0] last_point[0] = point[0]
last_point[1] = point[1] last_point[1] = point[1]
} }
function move (e, lex, point) { function move (e, lex, point) {
var w = canvas.w, h = canvas.h var w = canvas.w, h = canvas.h
line(lex, last_point, point, erasing) 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[0] = point[0]
last_point[1] = point[1] last_point[1] = point[1]
} }
function move_toroidal (e, lex, point) { function move_toroidal (e, lex, point) {
var w = canvas.w, h = canvas.h var w = canvas.w, h = canvas.h
var src_x_quantile = quantile( last_point[0], w ) var src_x_quantile = quantile( last_point[0], w )
@ -223,18 +195,12 @@ var draw = (function(){
var y_b = mod( point[1], h ) var y_b = mod( point[1], h )
var last_point_mod = [x_b, y_b], point_mod = [x_a, y_a] var last_point_mod = [x_b, y_b], point_mod = [x_a, y_a]
line(lex, last_point_mod, point_mod, erasing) 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[0] = point[0]
last_point[1] = point[1] last_point[1] = point[1]
// y = point.y // y = point.y
} }
function point (lex, x, y, erasing) { function point (lex, x, y, erasing) {
stamp (canvas, brush, x, y, erasing) stamp (canvas, brush, x, y, erasing)
} }
@ -268,7 +234,7 @@ var draw = (function(){
} }
}) })
} }
function fill (lex, x, y) { function fill (lex, x, y) {
var q = [ [x,y] ] var q = [ [x,y] ]
var aa = canvas.aa var aa = canvas.aa

View File

@ -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] 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){ Lex.prototype.assign = function (lex){
this.fg = lex.fg this.fg = lex.fg
this.bg = lex.bg this.bg = lex.bg

View File

@ -58,8 +58,8 @@ Matrix.prototype.demolish = function (){
this.forEach(function(lex){ this.forEach(function(lex){
lex.demolish() lex.demolish()
}) })
while (this.rapper && this.rapper.firstChild) { while (this.wrapper && this.wrapper.firstChild) {
this.rapper.removeChild(this.rapper.firstChild); this.wrapper.removeChild(this.wrapper.firstChild);
} }
this.aa.forEach(function(row){ this.aa.forEach(function(row){
row.length = 0 row.length = 0
@ -87,7 +87,7 @@ Matrix.prototype.focus = function(x, y){
y = mod(y, this.h) y = mod(y, this.h)
this.focus_x = x this.focus_x = x
this.focus_y = y this.focus_y = y
//focused_input = this //focused_input = this
this.aa[y][x].focus() this.aa[y][x].focus()
} }
@ -122,15 +122,15 @@ Matrix.prototype.build = function(){
lex.build() lex.build()
}) })
} }
Matrix.prototype.append = function(rapper){ Matrix.prototype.append = function(wrapper){
rapper = this.rapper = rapper || this.rapper wrapper = this.wrapper = wrapper || this.wrapper
if (! this.rapper) return if (! this.wrapper) return
this.aa.forEach(function(row, y){ this.aa.forEach(function(row, y){
var div = document.createElement("div") var div = document.createElement("div")
row.forEach(function(lex, x) { row.forEach(function(lex, x) {
div.appendChild(lex.span) div.appendChild(lex.span)
}) })
rapper.appendChild( div ) wrapper.appendChild( div )
}) })
} }
Matrix.prototype.region = function(w,h,x,y) { Matrix.prototype.region = function(w,h,x,y) {
@ -164,7 +164,7 @@ Matrix.prototype.resize = function(w,h){
h = h || canvas.h h = h || canvas.h
var div, row, lex var div, row, lex
var f = this.f, old_h = this.aa.length, old_w = this.aa[0].length 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) w = max(w, 1)
h = max(h, 1) h = max(h, 1)
if (h < old_h) { if (h < old_h) {
@ -180,7 +180,7 @@ Matrix.prototype.resize = function(w,h){
else if (h > old_h) { else if (h > old_h) {
for (var y = old_h; y < h; y++) { for (var y = old_h; y < h; y++) {
div = document.createElement("div") div = document.createElement("div")
rapper.appendChild( div ) wrapper.appendChild( div )
this.aa[y] = new Array (w) this.aa[y] = new Array (w)
for (var x = 0; x < w; x++) { for (var x = 0; x < w; x++) {
lex = this.aa[y][x] = f(x,y) lex = this.aa[y][x] = f(x,y)
@ -188,7 +188,7 @@ Matrix.prototype.resize = function(w,h){
} }
} }
} }
if (w < old_w) { if (w < old_w) {
this.aa.forEach(function(row, y){ this.aa.forEach(function(row, y){
while (row.length > w) { while (row.length > w) {
@ -206,38 +206,27 @@ Matrix.prototype.resize = function(w,h){
} }
}) })
} }
this.w = w this.w = w
this.h = h this.h = h
this.bind && this.bind() this.bind && this.bind()
this.focus_clamp() this.focus_clamp()
if (this.rapper && this.rapper.parentNode != document.body) { if (this.wrapper && this.wrapper.parentNode != document.body) {
this.resize_rapper() this.resize_wrapper()
} }
} }
Matrix.prototype.resize_rapper = function(){ Matrix.prototype.resize_wrapper = function(){
var cell = canvas.aa[0][0].span var cell = canvas.aa[0][0].span
var cw = cell.offsetWidth var cw = cell.offsetWidth
var ch = cell.offsetHeight var ch = cell.offsetHeight
// if (canvas.grid) { ch++ } // if (canvas.grid) { ch++ }
var width = cw * this.aa[0].length var width = cw * this.aa[0].length
var height = ch * this.aa.length var height = ch * this.aa.length
if (canvas.grid) { width++; height++ } if (canvas.grid) { width++; height++ }
if (this.rotated) { this.wrapper.parentNode.style.height = ""
this.rapper.parentNode.classList.add("rotated") this.wrapper.style.width =
this.rapper.parentNode.style.height = (width) + "px" this.wrapper.parentNode.style.width = (width) + "px"
this.rapper.parentNode.style.width = (height) + "px" this.wrapper.style.top = ""
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.ascii = function () { Matrix.prototype.ascii = function () {
var lines = this.aa.map(function(row, y){ var lines = this.aa.map(function(row, y){
@ -250,23 +239,6 @@ Matrix.prototype.ascii = function () {
var txt = lines.join("\n") var txt = lines.join("\n")
return txt 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) { Matrix.prototype.mirc = function (opts) {
var cutoff = false var cutoff = false
var lines = this.aa.map(function(row, y){ var lines = this.aa.map(function(row, y){
@ -275,7 +247,7 @@ Matrix.prototype.mirc = function (opts) {
var bg_ = -1, fg_ = 15 var bg_ = -1, fg_ = 15
if (lex.eqColor(last)) { if (lex.eqColor(last)) {
line += lex.sanitize() line += lex.sanitize()
} }
else { else {
[bg_, fg_, line_] = lex.mirc(bg_, fg_) [bg_, fg_, line_] = lex.mirc(bg_, fg_)
line += line_; last = lex; line += line_; last = lex;
@ -286,39 +258,15 @@ Matrix.prototype.mirc = function (opts) {
} }
return line return line
}) })
var txt = lines.filter(function(line){ return line.length > 0 }).join('\n') var txt = lines.filter(function(line){ return line.length > 0 }).join('\n')
if (cutoff) { if (cutoff) {
txt = new String(txt) txt = new String(txt)
txt.cutoff = true txt.cutoff = true
} }
return txt 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(){ 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 // the reason for stringifying the x y coords is so that each
// coordinate is saved only once in an undo state. // coordinate is saved only once in an undo state.
// otherwise there would be problems with, eg, a brush stroke // otherwise there would be problems with, eg, a brush stroke
// that passed over the same grid cell twice. // that passed over the same grid cell twice.
var save_lex = function(x, y, lex, state){ var save_lex = function(x, y, lex, state){
// var start = Date.now() // var start = Date.now()
state = state || current_undo state = state || current_undo
@ -509,7 +457,7 @@ var undo = function(){
if (!state) return; if (!state) return;
restore_state(state) restore_state(state)
// now take the applied undo state and store it on the redo state // now take the applied undo state and store it on the redo state
// and push the redo state to the redo stack // and push the redo state to the redo stack
state.redo.undo = state state.redo.undo = state
@ -522,7 +470,7 @@ var undo = function(){
var redo = function(){ var redo = function(){
var state = stack.redo.pop(); var state = stack.redo.pop();
if (!state) return; if (!state) return;
restore_state(state) restore_state(state)
state.undo.redo = state state.undo.redo = state

View File

@ -1,5 +1,5 @@
var brush = (function(){ var brush = (function(){
var brush = new Matrix (5, 5, function(x,y){ var brush = new Matrix (5, 5, function(x,y){
var lex = new Lex (x,y) var lex = new Lex (x,y)
lex.build() lex.build()
@ -7,9 +7,9 @@ var brush = (function(){
}) })
brush.modified = false brush.modified = false
brush.mask = blit.circle brush.mask = blit.circle
brush.generate = function(){ brush.generate = function(){
brush.fill(brush) brush.fill(brush)
brush.mask(brush) brush.mask(brush)
@ -25,7 +25,7 @@ var brush = (function(){
if (lex.bound) return if (lex.bound) return
lex.bound = true lex.bound = true
var point = [x,y] var point = [x,y]
lex.span.addEventListener('contextmenu', function(e){ lex.span.addEventListener('contextmenu', function(e){
e.preventDefault() e.preventDefault()
@ -83,7 +83,7 @@ var brush = (function(){
brush.contract = function(i){ brush.contract = function(i){
brush.size_add(-i, -i) brush.size_add(-i, -i)
} }
brush.load = function(lex){ brush.load = function(lex){
brush.char = lex.char brush.char = lex.char
brush.fg = lex.fg brush.fg = lex.fg
@ -98,11 +98,41 @@ var brush = (function(){
brush.fg = 0 brush.fg = 0
brush.bg = 1 brush.bg = 1
brush.opacity = 1 brush.opacity = 1
brush.draw_fg = true brush.draw_fg = true
brush.draw_bg = true brush.draw_bg = true
brush.draw_char = true brush.draw_char = true
return brush 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
})()

View File

@ -20,7 +20,6 @@ var canvas = current_canvas = (function(){
e.preventDefault() e.preventDefault()
}) })
lex.span.addEventListener('mousedown', function(e){ lex.span.addEventListener('mousedown', function(e){
if (is_mobile) return
e.preventDefault() e.preventDefault()
dragging = true dragging = true
current_canvas = canvas current_canvas = canvas
@ -57,7 +56,6 @@ var canvas = current_canvas = (function(){
lex.span.addEventListener("mousemove", function(e){ lex.span.addEventListener("mousemove", function(e){
mouse.x = x mouse.x = x
mouse.y = y mouse.y = y
if (is_mobile) return
if (! dragging) return if (! dragging) return
if (drawing) { if (drawing) {
draw.move(e, lex, point) 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 canvas.min = 1
@ -126,7 +85,7 @@ var canvas = current_canvas = (function(){
if (!no_undo){ if (!no_undo){
undo.new() undo.new()
undo.save_resize(w, h, old_w, old_h) undo.save_resize(w, h, old_w, old_h)
} }
canvas.__proto__.resize.call(canvas, w, h) canvas.__proto__.resize.call(canvas, w, h)
controls.canvas_w.char = "" + w controls.canvas_w.char = "" + w

View File

@ -31,7 +31,7 @@ var controls = (function(){
controls.circle.done = function(){ controls.circle.done = function(){
drawing = false drawing = false
} }
controls.square = new Tool (square_el) controls.square = new Tool (square_el)
controls.square.use = function(){ controls.square.use = function(){
brush.mask = blit.square brush.mask = blit.square
@ -42,7 +42,7 @@ var controls = (function(){
controls.square.done = function(){ controls.square.done = function(){
drawing = false drawing = false
} }
controls.text = new Tool (text_el) controls.text = new Tool (text_el)
controls.text.use = function(){ controls.text.use = function(){
current_filetool && current_filetool.blur() current_filetool && current_filetool.blur()
@ -97,7 +97,7 @@ var controls = (function(){
filling = false filling = false
document.body.classList.remove("bucket") document.body.classList.remove("bucket")
} }
controls.undo = new BlurredTool (undo_el) controls.undo = new BlurredTool (undo_el)
controls.undo.use = function(){ controls.undo.use = function(){
undo.undo() undo.undo()
@ -119,12 +119,12 @@ var controls = (function(){
controls.grid = new BlurredCheckbox (grid_el) controls.grid = new BlurredCheckbox (grid_el)
controls.grid.memorable = true controls.grid.memorable = true
controls.grid.use = function(state){ 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') document.body.classList[ state ? "add" : "remove" ]('grid')
letters.grid = palette.grid = canvas.grid = state letters.grid = palette.grid = canvas.grid = state
canvas.resize_rapper() canvas.resize_wrapper()
palette.resize_rapper() palette.resize_wrapper()
letters.resize_rapper() letters.resize_wrapper()
if (! selection.hidden) selection.reposition() if (! selection.hidden) selection.reposition()
this.update( state ) this.update( state )
} }
@ -145,12 +145,12 @@ var controls = (function(){
clipboard.show() clipboard.show()
clipboard.import_mode() clipboard.import_mode()
} }
controls.save_format = new RadioGroup(format_el) controls.save_format = new RadioGroup(format_el)
controls.save_format.name = 'save_format' controls.save_format.name = 'save_format'
controls.save_format.memorable = true controls.save_format.memorable = true
var cs = controls.save_format.controls 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() clipboard.export_data()
} }
// //
@ -162,20 +162,8 @@ var controls = (function(){
this.update(state) 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 = new BlurredCheckbox (fg_checkbox)
controls.fg.use = function(state){ controls.fg.use = function(state){
brush.draw_fg = state || ! brush.draw_fg brush.draw_fg = state || ! brush.draw_fg
@ -193,38 +181,7 @@ var controls = (function(){
brush.draw_char = state || ! brush.draw_char brush.draw_char = state || ! brush.draw_char
this.update(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 = new BlurredCheckbox (vertical_checkbox)
controls.vertical.memorable = true controls.vertical.memorable = true
controls.vertical.use = function(state){ controls.vertical.use = function(state){
@ -244,14 +201,14 @@ var controls = (function(){
} }
// //
controls.brush_w = new Lex (brush_w_el) controls.brush_w = new Lex (brush_w_el)
controls.brush_h = new Lex (brush_h_el) controls.brush_h = new Lex (brush_h_el)
controls.canvas_w = new Lex (canvas_w_el) controls.canvas_w = new Lex (canvas_w_el)
controls.canvas_h = new Lex (canvas_h_el) controls.canvas_h = new Lex (canvas_h_el)
// bind // bind
controls.bind = function(){ controls.bind = function(){
for (var n in controls){ for (var n in controls){
@ -269,7 +226,6 @@ var controls = (function(){
].forEach(function(lex){ ].forEach(function(lex){
lex.span.addEventListener('mousedown', function(e){ lex.span.addEventListener('mousedown', function(e){
lex.focus() 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.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.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.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.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) }) 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.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.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) }) controls.canvas_h.raw_key = keys.arrow_key(function(h){ canvas.size_add(0, h) })
add_custom_el.addEventListener("click", function(){ add_custom_el.addEventListener("click", function(){
custom.clone() custom.clone()
}) })

View File

@ -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
})()

View File

@ -85,7 +85,7 @@ var keys = (function(){
if (e.shiftKey) if (e.shiftKey)
undo.redo(); undo.redo();
else else
undo.undo(); undo.undo();
break break
// default: // default:
// if (focused) { focused.key(undefined, e.keyCode) } // if (focused) { focused.key(undefined, e.keyCode) }
@ -102,7 +102,7 @@ var keys = (function(){
cursor_input.value = "" cursor_input.value = ""
// console.log("input:", char) // console.log("input:", char)
if (current_tool.name != "text" && ! brush.modified) { if (current_tool.name != "text" && ! brush.modified) {
brush.char = char brush.char = char
if (char == " ") { if (char == " ") {
@ -126,14 +126,14 @@ var keys = (function(){
current_canvas.focus_add(1, 0) current_canvas.focus_add(1, 0)
} }
}) })
cursor_input.addEventListener("keyup", function(e){ cursor_input.addEventListener("keyup", function(e){
if (! e.altKey) { if (! e.altKey) {
document.body.classList.remove("dropper") document.body.classList.remove("dropper")
} }
}) })
} }
keys.int_key = function (f) { keys.int_key = function (f) {
return function (key, keyCode) { return function (key, keyCode) {
var n = parseInt(key) var n = parseInt(key)

View File

@ -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
})()

View File

@ -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 = (function(){
var palette = new Matrix (32, 2, function(x,y){ var palette = new Matrix (32, 2, function(x,y){
@ -102,14 +192,14 @@ var palette = (function(){
brush.char = lex.char brush.char = lex.char
brush.opacity = lex.opacity brush.opacity = lex.opacity
brush.generate() brush.generate()
brush_rapper.style.borderColor = css_reverse_lookup[fillColor] brush_wrapper.style.borderColor = css_reverse_lookup[fillColor]
return return
}) })
}) })
} }
brush_rapper.style.borderColor = css_reverse_lookup[fillColor] brush_wrapper.style.borderColor = css_reverse_lookup[fillColor]
return palette return palette

View File

@ -1,13 +1,13 @@
var selection = (function(){ var selection = (function(){
var creating = false, moving = false, copying = false var creating = false, moving = false, copying = false
var selection_canvas = new Matrix (1, 1, function(x,y){ var selection_canvas = new Matrix (1, 1, function(x,y){
var lex = new Lex (x,y) var lex = new Lex (x,y)
lex.build() lex.build()
return lex return lex
}) })
var selector_el = document.createElement("div") var selector_el = document.createElement("div")
selector_el.className = "selector_el" selector_el.className = "selector_el"
selection_canvas.append(selector_el) selection_canvas.append(selector_el)
@ -21,12 +21,12 @@ var selection = (function(){
// - on mouseup, the selection is locked. then.. // - on mouseup, the selection is locked. then..
// - drag the selection to move it -- this "cuts" it and leaves a blank space on the canvas. // - drag the selection to move it -- this "cuts" it and leaves a blank space on the canvas.
// - shift-drag the selection to copy it // - shift-drag the selection to copy it
var a = [0, 0] var a = [0, 0]
var b = [0, 0] var b = [0, 0]
var c = [0, 0] var c = [0, 0]
var d = [0, 0] var d = [0, 0]
function reset () { function reset () {
a[0] = a[1] = b[0] = b[1] = 0 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) 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 a[0] = l ; a[1] = m ; b[0] = n ; b[1] = o
} }
function contains (a,b,point) { function contains (a,b,point) {
var contains_x = a[0] <= point[0] && point[0] <= b[0] var contains_x = a[0] <= point[0] && point[0] <= b[0]
var contains_y = a[1] <= point[1] && point[1] <= b[1] var contains_y = a[1] <= point[1] && point[1] <= b[1]
@ -130,7 +130,7 @@ var selection = (function(){
creating = moving = copying = false creating = moving = copying = false
selector_el.classList.remove("dragging") selector_el.classList.remove("dragging")
} }
function show () { function show () {
selecting = true selecting = true
} }
@ -144,7 +144,7 @@ var selection = (function(){
selection.hidden = true selection.hidden = true
selecting = false selecting = false
} }
var selection = {} var selection = {}
selection.reposition = reposition selection.reposition = reposition
selection.down = down selection.down = down

View File

@ -26,7 +26,7 @@ var Tool = Model({
current_tool = this current_tool = this
this.el.classList.add('focused') this.el.classList.add('focused')
this.use() this.use()
if (is_desktop) { cursor_input.focus() } cursor_input.focus()
}, },
blur: function(){ blur: function(){
current_tool = null current_tool = null
@ -45,7 +45,7 @@ var FileTool = Tool.extend({
current_filetool = this current_filetool = this
this.el.classList.add('focused') this.el.classList.add('focused')
this.use() this.use()
if (is_desktop) { cursor_input.focus() } cursor_input.focus()
}, },
blur: function(){ blur: function(){
current_filetool = null current_filetool = null
@ -104,7 +104,7 @@ var RadioGroup = Tool.extend({
control.use() control.use()
if (this.memorable){ if (this.memorable){
localStorage.setItem("ascii.tools." + this.name, this.value) localStorage.setItem("ascii.tools." + this.name, this.value)
} }
}, },
bind: function(){ bind: function(){
var tool = this var tool = this

View File

@ -33,7 +33,7 @@ var transform = (function(){
} }
function up (e){ function up (e){
} }
var modes = { var modes = {
rotate: { rotate: {
@ -59,7 +59,7 @@ var transform = (function(){
return true return true
}, },
}, },
scale: { scale: {
init: function(e){ init: function(e){
mode.independent = e.shiftKey || e.altKey || e.metaKey mode.independent = e.shiftKey || e.altKey || e.metaKey
@ -86,7 +86,7 @@ var transform = (function(){
return true return true
}, },
}, },
translate: { translate: {
init: function(e){ init: function(e){
mode.dx = mode.dy = 0 mode.dx = mode.dy = 0
@ -113,7 +113,7 @@ var transform = (function(){
before: function(dx, dy, pdx, pdy, point){ before: function(dx, dy, pdx, pdy, point){
var new_position = mode.is_y ? point[1] : point[0] var new_position = mode.is_y ? point[1] : point[0]
var dd = mode.is_y ? pdx : pdy var dd = mode.is_y ? pdx : pdy
if (mode.position !== new_position) { if (mode.position !== new_position) {
mode.position = new_position mode.position = new_position
mode.direction = 0 mode.direction = 0
@ -151,19 +151,19 @@ var transform = (function(){
}, },
*/ */
} }
function set_mode(m){ function set_mode(m){
if (m in modes) { if (m in modes) {
mode = modes[m] mode = modes[m]
transforming = true transforming = true
} }
} }
function done(){ function done(){
transforming = false transforming = false
copy && copy.demolish() copy && copy.demolish()
} }
return { return {
down: down, down: down,
move: move, move: move,

View File

@ -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 fit(d,x,y){ rgbpixel(d,x*actual_w/w,y*actual_h/h) }
function step(a, b){ function step(a, b){
return (b >= a) + 0 return (b >= a) + 0
// ^^ bool -> int // ^^ 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-{{{-< =Model); // c-{{{-<
function defaults (dest, src) { function defaults (dest, src) {
dest = dest || {} dest = dest || {}
for (var i in src) { for (var i in src) {
dest[i] = typeof dest[i] == 'undefined' ? src[i] : dest[i] dest[i] = typeof dest[i] == 'undefined' ? src[i] : dest[i]
} }
return dest return dest
} }
function setSelectionRange(input, selectionStart, selectionEnd) { function setSelectionRange(input, selectionStart, selectionEnd) {
@ -190,10 +190,3 @@ function setSelectionRange(input, selectionStart, selectionEnd) {
function setCaretToPos(input, pos) { function setCaretToPos(input, pos) {
setSelectionRange(input, pos, 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;

View File

@ -1,29 +1,28 @@
Jollo LNT license Jollo LNT license
Version 1 - February 2015 Version 1 - February 2015
Copyright, 2015. JOLLO NET NA. Copyright, 2015. JOLLO NET NA.
The Jollo IRC Network. <//jollo.org/> The Jollo IRC Network. <//jollo.org/>
Vu, fare wanderer, confronted with raw, programmatic instruction Vu, fare wanderer, confronted with raw, programmatic instruction
dans la forme la plus pure. A hesitation, troubled to the terms 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. et ponder la fabrication. Voila! La remide: egress sans risque.
Sans trace (Leave No Trace) via sept principales: Sans trace (Leave No Trace) via sept principales:
0. Modifique language en advance. L'Apposer Jollo LNT license 0. Modifique language en advance. L'Apposer Jollo LNT license
with copies en distribuer. with copies en distribuer.
1. Non responsible pour neglige programme du problematique. 1. Non responsible pour neglige programme du problematique.
2. Non sympathie pour neglige programme du problematique. 2. Non sympathie pour neglige programme du problematique.
3. Non permission l'modifique under any circumstance. 3. Non permission l'modifique under any circumstance.
4. Non permission distribution under any circumstance. 4. Non permission distribution under any circumstance.
5. Respect les programmatic instructions. 5. Respect les programmatic instructions.
6. Non interfere avec l'harmonie d'une amitie. 6. Non interfere avec l'harmonie d'une amitie.

View File

@ -1,10 +1,19 @@
1) document: constraints for video reverse 1) feature: {bold,italic,underline} attributes
2) document: Shift + LMB to delete brush, Shift + LMB to switch character sets 2) feature: draw w/ keyboard instead of [LR]MB
3) feature: allow to adjust cutoff warning threshold, {dis,en}able cutoff & print line numbers affected 3) feature: {line,measuring} tool
4) feature: {bold,italic,underline} attributes 4) feature: status bar w/ position, etc.
5) feature: keyboard instead of [LR]MB 5) feature: zoom {in,out} (esp. on Android)
6) feature: {line,measuring} tool 6) reimplement: ANSI (maybe,) {save,upload} as PNG & gallery, cutoff (print line #(s) affected, tunably,) shaders (maybe)
7) feature: status bar w/ position, etc. 7) releases: merge w/ MiRCARTools (into asciiblaster,) provide signed release APK
8) feature: zoom {in,out}
9) reimplement: {save,upload} as PNG & gallery, shaders (possibly) In progress:
10) releases: merge w/ MiRCARTools (into asciiblaster,) provide signed release APK, set is_{iphone,ipad,android,mobile,desktop} 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

View File

@ -1,112 +1,116 @@
<!doctype html> <?xml version="1.0" encoding="UTF-8"?>
<html> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<head> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta charset="UTF-8"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<title>asciiblaster v1.0.6</title> <!-- {{{ HEAD -->
<meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=yes" /> <head>
<link rel="stylesheet" href="assets/css/sally.css" type="text/css" charset="utf-8" /> <link charset="utf-8" href="assets/css/ak.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="assets/css/ak.css" type="text/css" charset="utf-8" /> <link charset="utf-8" href="assets/css/fonts.css" rel="stylesheet" type="text/css" />
</head> <link charset="utf-8" href="assets/css/sally.css" rel="stylesheet" type="text/css" />
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<body class="loading panke"> <meta content="width=device-width, maximum-scale=1.0, user-scalable=yes" name="viewport" />
<title>asciiblaster v1.0.7</title>
<div id="workspace_rapper"> </head>
<div id="canvas_rapper" class="rapper"></div> <!-- }}} -->
</div> <!-- {{{ BODY -->
<body class="loading initial">
<div id="ui_rapper"> <!-- {{{ DIV: workspace_wrapper -->
<div class="block" id="tools_block"> <div id="workspace_wrapper">
<div id="palette_rapper"></div> <div id="canvas_wrapper" class="wrapper"></div>
<div id="secret_rapper">
<span id="experimental_palette_toggle">.</span>
</div>
<div id="letters_rapper"></div>
<div id="custom_rapper"></div>
</div> </div>
<div id="brush_container" class="block"> <!-- }}} -->
<div id="brush_rapper"> <!-- {{{ DIV: ui_wrapper -->
<div id="ui_wrapper">
<!-- {{{ DIV: tools_block -->
<div class="block" id="tools_block">
<div id="palette_wrapper"></div>
<div id="secret_wrapper">
<span id="experimental_palette_toggle">.</span>
</div>
<div id="letters_wrapper"></div>
<div id="custom_wrapper"></div>
</div> </div>
<br> <!-- }}} -->
<span id="fg_checkbox" class="tool">x fg</span><br> <!-- {{{ DIV: brush_container -->
<span id="bg_checkbox" class="tool">x bg</span><br> <div id="brush_container" class="block">
<span id="char_checkbox" class="tool">x char</span><br> <div id="brush_wrapper"></div>
<br> <br />
<span id="add_custom_el" class="tool">+ add</span> <span id="fg_checkbox" class="tool">x fg</span><br />
<span id="mirror_x_checkbox" class="tool">_ mirror x</span><br> <span id="bg_checkbox" class="tool">x bg</span><br />
<span id="mirror_y_checkbox" class="tool">_ mirror y</span><br> <span id="char_checkbox" class="tool">x char</span><br />
<br> <span id="add_custom_el" class="tool">+ add</span><br />
<span id="undo_el" class="tool hidden">undo</span><br> <br />
<span id="redo_el" class="tool hidden">redo</span><br> <span id="undo_el" class="tool hidden">undo</span><br />
</div> <span id="redo_el" class="tool hidden">redo</span><br />
<div id="tools_rapper" class="block">
<span id="square_el" class="tool">square</span><br>
<span id="circle_el" class="tool">circle</span><br>
<span id="cross_el" class="tool">cross</span><br>
<span id="text_el" class="tool">text</span><br>
<span id="fill_el" class="tool">fill</span><br>
<span id="select_el" class="tool">select</span><br>
<br>
<span id="rotate_el" class="tool">rotate</span><br>
<span id="scale_el" class="tool">scale</span><br>
<span id="translate_el" class="tool">translate</span><br>
<span id="slice_el" class="tool">slice</span><br>
<span id="grid_el" class="tool">_ grid</span>
<!-- <span id="rotate_checkbox" class="tool">_ rotate</span><br> -->
<span id="vertical_checkbox" class="tool">x vertical</span>
<!-- <span id="pixels_checkbox" class="tool">_ pixels</span><br> -->
</div>
<div id="textarea_mode" style="float: left">
<div>
<span id="clear_el" class="tool">new</span>
<span id="save_el" class="tool">save</span>
<span id="load_el" class="tool">load</span>
<br>
<a id="doc_el" href="assets/doc/index.html" target="_blank">doc</a>
<br>
<span id="advanced_checkbox" class="tool">_ advanced</span>
<br>
<br>
brush: <span id="brush_w_el" class="ed">5</span> x <span id="brush_h_el" class="ed">5</span><br>
canvas: <span id="canvas_w_el" class="ed">100</span> x <span id="canvas_h_el" class="ed">30</span><br>
</div> </div>
<!-- }}} -->
<div id="import_rapper"> <!-- {{{ DIV: tools_wrapper -->
<span id="format_el">ascii *irssi mirc ansi</span> <div id="tools_wrapper" class="block">
<span id="import_buttons"> <span id="square_el" class="tool">square</span><br />
<button id="import_button">import</button> <span id="circle_el" class="tool">circle</span><br />
</span> <span id="cross_el" class="tool">cross</span><br />
<div id="gallery_rapper" /><br > <span id="text_el" class="tool">text</span><br />
<div id="cutoff_warning_el">character limit of 425 exceeded</div> <span id="fill_el" class="tool">fill</span><br />
<textarea id="import_textarea"></textarea> <span id="select_el" class="tool">select</span><br />
<br />
<span id="rotate_el" class="tool">rotate</span><br />
<span id="scale_el" class="tool">scale</span><br />
<span id="translate_el" class="tool">translate</span><br />
<span id="slice_el" class="tool">slice</span><br />
</div> </div>
<!-- }}} -->
<!-- {{{ DIV: textarea_mode -->
<div id="textarea_mode">
<div>
<span id="clear_el" class="tool">new</span>
<span id="save_el" class="tool">save</span>
<span id="load_el" class="tool">load</span>
<a id="doc_el" href="assets/html/help.html" target="_blank">help</a>
<br />
brush: <span id="brush_w_el" class="ed">5</span> x <span id="brush_h_el" class="ed">5</span><br />
canvas: <span id="canvas_w_el" class="ed">100</span> x <span id="canvas_h_el" class="ed">30</span><br />
<span id="grid_el" class="tool">_ grid</span>
<span id="vertical_checkbox" class="tool">x vertical</span>
</div>
<div id="import_wrapper">
<span id="format_el">ascii *mirc</span>
<span id="import_buttons">
<button id="import_button">import</button>
</span>
<div id="gallery_wrapper" /><br />
<div id="cutoff_warning_el">character limit of 425 exceeded</div>
<textarea id="import_textarea" cols="100" rows="30"></textarea>
</div>
</div>
<input type="text" id="cursor_input" />
</div> </div>
</div> <!-- }}} -->
<!-- }}} -->
<input type="text" id="cursor_input"> <!-- {{{ SCRIPTs: assets/js/* -->
<script src="assets/js/util.js" type="text/javascript"></script>
</body> <script src="assets/js/unicode.js" type="text/javascript"></script>
<script src="assets/js/util.js"></script> <script src="assets/js/color.js" type="text/javascript"></script>
<script src="assets/js/unicode.js"></script> <script src="assets/js/clipboard.js" type="text/javascript"></script>
<script src="assets/js/color.js"></script> <script src="assets/js/lex.js" type="text/javascript"></script>
<script src="assets/js/clipboard.js"></script> <script src="assets/js/matrix.js" type="text/javascript"></script>
<script src="assets/js/lex.js"></script> <script src="assets/js/gfx.js" type="text/javascript"></script>
<script src="assets/js/matrix.js"></script> <script src="assets/js/ui/tool.js" type="text/javascript"></script>
<script src="assets/js/gfx.js"></script> <script src="assets/js/gfx.js" type="text/javascript"></script>
<script src="assets/js/ui/tool.js"></script> <!-- }}} -->
<script src="assets/js/gfx.js"></script> <!-- {{{ SCRIPTs: assets/js/ui/* -->
<script src="assets/js/ui/brush.js" type="text/javascript"></script>
<script src="assets/js/ui/brush.js"></script> <script src="assets/js/ui/canvas.js" type="text/javascript"></script>
<script src="assets/js/ui/canvas.js"></script> <script src="assets/js/ui/keys.js" type="text/javascript"></script>
<script src="assets/js/ui/custom.js"></script> <script src="assets/js/ui/controls.js" type="text/javascript"></script>
<script src="assets/js/ui/keys.js"></script> <script src="assets/js/ui/paletters.js" type="text/javascript"></script>
<script src="assets/js/ui/controls.js"></script> <script src="assets/js/ui/selection.js" type="text/javascript"></script>
<script src="assets/js/ui/palette.js"></script> <script src="assets/js/ui/transform.js" type="text/javascript"></script>
<script src="assets/js/ui/letters.js"></script> <!-- }}} -->
<script src="assets/js/ui/selection.js"></script> <script src="assets/js/app.js" type="text/javascript"></script>
<script src="assets/js/ui/transform.js"></script> </body>
<!-- }}} -->
<script src="assets/js/app.js"></script>
</html> </html>
<!--
vim:ts=2 sw=2 expandtab fenc=utf-8 foldmethod=marker nowrap tw=0
-->

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget id="com.lalbornoz.asciiblaster" version="1.0.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <widget id="com.lalbornoz.asciiblaster" version="1.0.7" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<feature name="Whitelist"> <feature name="Whitelist">
<param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" /> <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" />
<param name="onload" value="true" /> <param name="onload" value="true" />

2
asciiblaster-nw/package-lock.json generated vendored
View File

@ -1,5 +1,5 @@
{ {
"name": "asciiblaster", "name": "asciiblaster",
"version": "1.0.6", "version": "1.0.7",
"lockfileVersion": 1 "lockfileVersion": 1
} }

View File

@ -18,7 +18,7 @@
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"version": "1.0.6", "version": "1.0.7",
"window": { "window": {
"title": "asciiblaster (standalone NW app)", "title": "asciiblaster (standalone NW app)",
"toolbar": true, "toolbar": true,

View File

@ -7,7 +7,7 @@
<link charset="utf-8" href="../css/fonts.css" rel="stylesheet" type="text/css" /> <link charset="utf-8" href="../css/fonts.css" rel="stylesheet" type="text/css" />
<link charset="utf-8" href="../css/help.css" rel="stylesheet" type="text/css" /> <link charset="utf-8" href="../css/help.css" rel="stylesheet" type="text/css" />
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>asciiblaster v1.0.6 documentation</title> <title>asciiblaster v1.0.7 documentation</title>
</head> </head>
<!-- }}} --> <!-- }}} -->
<!-- {{{ BODY --> <!-- {{{ BODY -->

View File

@ -9,7 +9,7 @@
<link charset="utf-8" href="assets/css/sally.css" rel="stylesheet" type="text/css" /> <link charset="utf-8" href="assets/css/sally.css" rel="stylesheet" type="text/css" />
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta content="width=device-width, maximum-scale=1.0, user-scalable=yes" name="viewport" /> <meta content="width=device-width, maximum-scale=1.0, user-scalable=yes" name="viewport" />
<title>asciiblaster v1.0.6</title> <title>asciiblaster v1.0.7</title>
</head> </head>
<!-- }}} --> <!-- }}} -->
<!-- {{{ BODY --> <!-- {{{ BODY -->