Add snapToPixel

This commit is contained in:
Tom Payne
2013-11-10 13:57:25 +01:00
parent 8c3c304497
commit bc8c328483
4 changed files with 14 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
// FIXME complete missing functionality
// FIXME factor out drawImage
// FIXME apply snapToPixel
// FIXME factor out moveTo/lineTo
goog.provide('ol.render.canvas.Render');

View File

@@ -1,3 +1,5 @@
// FIXME decide default snapToPixel behaviour
goog.provide('ol.render.canvas.BatchGroup');
goog.require('goog.array');
@@ -108,10 +110,13 @@ ol.render.canvas.Batch.prototype.draw = function(context, transform) {
end = /** @type {number} */ (instruction[1]);
var imageStyle = /** @type {ol.style.Image} */ (instruction[2]);
for (; i < end; i += 2) {
context.drawImage(
imageStyle.image,
pixelCoordinates[i] - imageStyle.anchor[0],
pixelCoordinates[i + 1] - imageStyle.anchor[1]);
var x = pixelCoordinates[i] - imageStyle.anchor[0];
var y = pixelCoordinates[i + 1] - imageStyle.anchor[1];
if (imageStyle.snapToPixel) {
x = (x + 0.5) | 0;
y = (y + 0.5) | 0;
}
context.drawImage(imageStyle.image, x, y);
}
} else if (type == ol.render.canvas.Instruction.FILL) {
context.fill();

View File

@@ -1,4 +1,5 @@
// FIXME decide how to handle fill opacity
// FIXME decide default value for snapToPixel
goog.provide('ol.style');
goog.provide('ol.style.DefaultStyleFunction');
@@ -32,6 +33,7 @@ ol.style.fill.equals = function(fillStyle1, fillStyle2) {
* @typedef {{anchor: Array.<number>,
* image: (HTMLCanvasElement|HTMLVideoElement|Image),
* rotation: number,
* snapToPixel: (boolean|undefined),
* subtractViewRotation: boolean}}
*/
ol.style.Image;
@@ -89,6 +91,7 @@ ol.style.DEFAULT_IMAGE_STYLE = {
anchor: [0, 0],
image: null, // FIXME
rotation: 0.0,
snapToPixel: undefined,
subtractViewRotation: false
};

View File

@@ -40,6 +40,7 @@ ol.symbol.renderCircle = function(radius, fillStyle, strokeStyle) {
anchor: [size / 2, size / 2],
image: canvas,
rotation: 0,
snapToPixel: undefined,
subtractViewRotation: false
};