code: function (strokeWidth, x, y, width, height) {
  
  		var wrapper = this,
  			key,
  			attr = {},
  			values = {},
  			normalizer;
  
  		strokeWidth = strokeWidth || wrapper.strokeWidth || 0;
  		normalizer = strokeWidth % 2 / 2;
  
  		// normalize for crisp edges
  		values.x = mathFloor(x || wrapper.x || 0) + normalizer;
  		values.y = mathFloor(y || wrapper.y || 0) + normalizer;
  		values.width = mathFloor((width || wrapper.width || 0) - 2 * normalizer);
  		values.height = mathFloor((height || wrapper.height || 0) - 2 * normalizer);
  		values.strokeWidth = strokeWidth;
  
  		for (key in values) {
  			if (wrapper[key] !== values[key]) { // only set attribute if changed
  				wrapper[key] = attr[key] = values[key];
  			}
  		}
  
  		return attr;
  	}
docs: Calculate the coordinates needed for drawing a rectangle crisply and return the
  calculated attributes
  @param {Number} strokeWidth
  @param {Number} x
  @param {Number} y
  @param {Number} width
  @param {Number} height