code: function ScreenBuffer( options = {} ) {
  	this.dst = options.dst ;	// a terminal or another screenBuffer
  	this.width = Math.floor( options.width ) || ( options.dst ? options.dst.width : 1 ) ;
  	this.height = Math.floor( options.height ) || ( options.dst ? options.dst.height : 1 ) ;
  	this.x = options.x !== undefined ? options.x : ( options.dst && options.dst instanceof termkit.Terminal ? 1 : 0 ) ;	// eslint-disable-line
  	this.y = options.y !== undefined ? options.y : ( options.dst && options.dst instanceof termkit.Terminal ? 1 : 0 ) ;	// eslint-disable-line
  	this.cx = 0 ;
  	this.cy = 0 ;
  	this.lastBuffer = null ;
  	this.lastBufferUpToDate = false ;
  	this.blending = options.blending || false ;
  	this.wrap = !! options.wrap ;
  	this.buffer = Buffer.allocUnsafe( this.width * this.height * this.ITEM_SIZE ) ;
  
  	if ( ! options.noFill ) { this.fill() ; }
  }
docs: /*
  options:
  width: buffer width (default to dst.width)
  height: buffer height (default to dst.height)
  dst: writting destination
  x: default position in the dst
  y: default position in the dst
  wrap: default wrapping behavior of .put()
  noFill: do not call .fill() with default values at ScreenBuffer creation
  blending: false/null or true or object (blending options): default blending params (can be overriden by .draw())