diff options
| -rw-r--r-- | css/sally.css | 3 | ||||
| -rw-r--r-- | js/ui/letters.js | 11 | ||||
| -rw-r--r-- | js/ui/palette.js | 31 |
3 files changed, 34 insertions, 11 deletions
diff --git a/css/sally.css b/css/sally.css index f2d7405..29a0b66 100644 --- a/css/sally.css +++ b/css/sally.css @@ -98,6 +98,9 @@ textarea { font-size:12pt; width: 37vw; height: 300px; background: #333; color: } #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; } #webcam_rapper { display: none; position: absolute; top: 0px; left: 0px; width:100%;height:100%; box-sizing:border-box; border: 40px solid rgba(0,0,0,0.5); background-color: rgba(0,0,0,0.5); } diff --git a/js/ui/letters.js b/js/ui/letters.js index 9801a45..cd9e50b 100644 --- a/js/ui/letters.js +++ b/js/ui/letters.js @@ -1,11 +1,15 @@ var letters = (function(){ + var last_charset = "" + var letters = new Matrix (1, 1, function(x,y){ var lex = new Lex (x,y) return lex }) letters.repaint = function(charset){ + charset = charset || last_charset + last_charset = charset var chars = unicode.block(charset, 32) if (chars[0] != " ") chars.unshift(" ") letters.resize( 32, Math.ceil( chars.length / 32 ) ) @@ -14,13 +18,13 @@ var letters = (function(){ letters.forEach(function(lex,x,y){ var char = chars[i++] - if (char == " ") { + if (palette.chars.indexOf(brush.char) > 1) { lex.bg = brush.fg lex.fg = brush.bg } else { - lex.bg = brush.bg - lex.fg = brush.fg + lex.bg = colors.black + lex.fg = brush.fg == fillColor ? colors.black : brush.fg } lex.char = char lex.opacity = 1 @@ -52,6 +56,7 @@ var letters = (function(){ if (! brush.modified) { brush.generate() } + palette.repaint() }) lex.span.addEventListener('contextmenu', function(e){ e.preventDefault() diff --git a/js/ui/palette.js b/js/ui/palette.js index 063e4aa..1fc17cf 100644 --- a/js/ui/palette.js +++ b/js/ui/palette.js @@ -1,13 +1,15 @@ var palette = (function(){ - var palette_index = localStorage.getItem("ascii.palette") || 1 - var palette_list = [all_hue, all_inv_hue, mirc_color, mirc_color_reverse] - var palette_fn = palette_list[palette_index] - var palette_chars = " ▓▒░" var palette = new Matrix (32, 2, function(x,y){ var lex = new Lex (x,y) return lex }) + + var palette_index = localStorage.getItem("ascii.palette") || 1 + var palette_list = [all_hue, all_inv_hue, mirc_color, mirc_color_reverse] + var palette_fn = palette_list[palette_index] + palette.chars = " ▓▒░" + palette.repaint = function(){ palette.forEach(function(lex,x,y){ if (y < 2) { @@ -18,7 +20,7 @@ var palette = (function(){ lex.bg = fillColor lex.fg = palette_fn(x>>1) } - lex.char = palette_chars[y] + lex.char = palette.chars[y] lex.opacity = 1 lex.build() if (lex.char == "_") lex.char = " " @@ -48,9 +50,21 @@ var palette = (function(){ return } if (e.ctrlKey || e.which == 3) return - brush.fg = lex.fg - brush.bg = lex.bg - brush.char = lex.char + if (brush.char == " " && lex.char == " ") { + brush.fg = lex.fg + brush.bg = lex.bg + brush.char = lex.char + } + else if (lex.char != " ") { + brush.fg = lex.bg + brush.bg = lex.fg + brush.char = lex.char + } + else { + brush.fg = lex.bg + brush.bg = fillColor +// brush.char = lex.char + } brush.opacity = lex.opacity if (! brush.modified) { brush.generate() @@ -58,6 +72,7 @@ var palette = (function(){ if (filling || e.ctrlKey) { fillColor = lex.bg } + letters.repaint() }) lex.span.addEventListener('contextmenu', function(e){ |
