code: function( geometry, styles ){
  
              var view
                  ,aabb = geometry.aabb()
                  ,hw = aabb.hw + Math.abs(aabb.x)
                  ,hh = aabb.hh + Math.abs(aabb.y)
                  ,offset = { x: hw + 1, y: hh + 1 }
                  ,hiddenCtx = this.hiddenCtx
                  ,hiddenCanvas = this.hiddenCanvas
                  ;
  
              styles = styles || this.options.styles[ name ] || this.options.styles.circle || {};
  
              // must want an image
              if ( styles.src ){
                  view = new Image();
                  view.src = styles.src;
                  if ( styles.width ){
                      view.width = styles.width;
                  }
                  if ( styles.height ){
                      view.height = styles.height;
                  }
                  return view;
              }
  
              offset.x += styles.lineWidth | 0;
              offset.y += styles.lineWidth | 0;
  
              // clear and resize
              hiddenCanvas.width = 2 * hw + 2 + (2 * styles.lineWidth|0);
              hiddenCanvas.height = 2 * hh + 2 + (2 * styles.lineWidth|0);
  
              this.draw( geometry, styles, hiddenCtx, offset );
  
              view = new Image( hiddenCanvas.width, hiddenCanvas.height );
              view.src = hiddenCanvas.toDataURL('image/png');
              return view;
          }
docs: extended