docs: function(e, offset) {
        if (!this.hasControls || !this.active) return false;
  
        var pointer = getPointer(e),
            ex = pointer.x - offset.left,
            ey = pointer.y - offset.top,
            xpoints,
            lines;
  
        for (var i in this.oCoords) {
  
          if (i === 'mtr' && !this.hasRotatingPoint) {
            continue;
          }
  
          if (this.lockUniScaling && (i === 'mt' || i === 'mr' || i === 'mb' || i === 'ml')) {
            continue;
          }
  
          lines = this._getImageLines(this.oCoords[i].corner, i);
  
          // debugging
  
          // canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);
          // canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);
  
          // canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);
          // canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);
  
          // canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);
          // canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);
  
          // canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);
          // canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);
  
          xpoints = this._findCrossPoints(ex, ey, lines);
          if (xpoints % 2 == 1 && xpoints != 0) {
            this.__corner = i;
            return i;
          }
        }
        return false;
      }