asciiblaster

- draw irc art in your web browser
git clone git://git.acid.vegas/asciiblaster.git
Log | Files | Refs | Archive | README

brush.js (2239B)

      1 var brush = (function(){
      2   
      3   var brush = new Matrix (5, 5, function(x,y){
      4     var lex = new Lex (x,y)
      5     lex.build()
      6     return lex
      7   })
      8 
      9   brush.modified = false
     10   
     11   brush.mask = blit.circle
     12   
     13   brush.generate = function(){
     14     brush.fill(brush)
     15     brush.mask(brush)
     16   }
     17 
     18   brush.bind = function(){
     19 
     20     var last_point = [0,0]
     21     var dragging = false
     22     var erasing = false
     23 
     24     brush.forEach(function(lex, x, y){
     25 
     26       if (lex.bound) return
     27       lex.bound = true
     28       
     29       var point = [x,y]
     30       lex.span.addEventListener('contextmenu', function(e){
     31         e.preventDefault()
     32       })
     33       lex.span.addEventListener('mousedown', function(e){
     34         e.preventDefault()
     35         current_canvas = brush
     36         brush.modified = true
     37         dragging = true
     38         erasing = (e.which == "3" || e.ctrlKey)
     39         if (erasing) {
     40           lex.clear()
     41         }
     42         else {
     43           fillColor = brush.bg
     44           lex.assign(brush)
     45         }
     46         brush.focus(x, y)
     47       })
     48       lex.span.addEventListener('mousemove', function(e){
     49         e.preventDefault()
     50         if (! dragging) {
     51           return
     52         }
     53         erasing = (e.which == "3" || e.ctrlKey)
     54         if (erasing) {
     55           lex.clear()
     56         }
     57         else {
     58           lex.assign(brush)
     59         }
     60         brush.focus(x, y)
     61       })
     62     })
     63     window.addEventListener('mouseup', function(e){
     64       dragging = erasing = false
     65     })
     66   }
     67 
     68   brush.resize = function(w, h){
     69     w = this.w = clamp(w, this.min, this.max)
     70     h = this.h = clamp(h, this.min, this.max)
     71     brush.rebuild()
     72     controls.brush_w.char = "" + w
     73     controls.brush_w.build()
     74     controls.brush_h.char = "" + h
     75     controls.brush_h.build()
     76   }
     77   brush.size_add = function(w, h){
     78     brush.resize(brush.w + w, brush.h + h)
     79   }
     80   brush.expand = function(i){
     81     brush.size_add(i, i)
     82   }
     83   brush.contract = function(i){
     84     brush.size_add(-i, -i)
     85   }
     86   
     87   brush.load = function(lex){
     88     brush.char = lex.char
     89     brush.fg = lex.fg
     90     brush.bg = lex.bg
     91     brush.opacity = 1
     92   }
     93 
     94   brush.min = 1
     95   brush.max = 100
     96 
     97   brush.char = " "
     98   brush.fg = 0
     99   brush.bg = 1
    100   brush.opacity = 1
    101   
    102   brush.draw_fg = true
    103   brush.draw_bg = true
    104   brush.draw_char = true
    105   
    106   return brush
    107 
    108 })()