Align pixels when drawing icons or shapes

The floor before setting the transform ensures that we translate by integer pixels for odd and even dimenstions.  The round before drawing the image ensures pixels are aligned.
This commit is contained in:
Tim Schaub
2013-10-15 22:05:36 -06:00
parent 5fe7c20450
commit b02f47a5a5
@@ -238,8 +238,8 @@ ol.renderer.canvas.Vector.prototype.renderPointFeatures_ =
return true; return true;
} }
var midWidth = content.width / 2; var midWidth = Math.floor(content.width / 2);
var midHeight = content.height / 2; var midHeight = Math.floor(content.height / 2);
var contentWidth = content.width * this.inverseScale_; var contentWidth = content.width * this.inverseScale_;
var contentHeight = content.height * this.inverseScale_; var contentHeight = content.height * this.inverseScale_;
var contentXOffset = xOffset * this.inverseScale_; var contentXOffset = xOffset * this.inverseScale_;
@@ -276,7 +276,8 @@ ol.renderer.canvas.Vector.prototype.renderPointFeatures_ =
point = components[j]; point = components[j];
vec = [point.get(0), point.get(1), 0]; vec = [point.get(0), point.get(1), 0];
goog.vec.Mat4.multVec3(this.transform_, vec, vec); goog.vec.Mat4.multVec3(this.transform_, vec, vec);
context.drawImage(content, vec[0] + xOffset, vec[1] + yOffset, context.drawImage(content, Math.round(vec[0] + xOffset),
Math.round(vec[1] + yOffset),
content.width, content.height); content.width, content.height);
} }
} }