Factor out ol.geom.flat.transform
This commit is contained in:
34
src/ol/geom/flat/transformflatgeom.js
Normal file
34
src/ol/geom/flat/transformflatgeom.js
Normal file
@@ -0,0 +1,34 @@
|
||||
goog.provide('ol.geom.flat.transform');
|
||||
|
||||
goog.require('goog.vec.Mat4');
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||
* @param {number} stride Stride.
|
||||
* @param {goog.vec.Mat4.Number} transform Transform.
|
||||
* @param {Array.<number>=} opt_dest Destination.
|
||||
* @return {Array.<number>} Transformed coordinates.
|
||||
*/
|
||||
ol.geom.flat.transform.transform2D =
|
||||
function(flatCoordinates, stride, transform, opt_dest) {
|
||||
var m00 = goog.vec.Mat4.getElement(transform, 0, 0);
|
||||
var m10 = goog.vec.Mat4.getElement(transform, 1, 0);
|
||||
var m01 = goog.vec.Mat4.getElement(transform, 0, 1);
|
||||
var m11 = goog.vec.Mat4.getElement(transform, 1, 1);
|
||||
var m03 = goog.vec.Mat4.getElement(transform, 0, 3);
|
||||
var m13 = goog.vec.Mat4.getElement(transform, 1, 3);
|
||||
var dest = goog.isDef(opt_dest) ? opt_dest : [];
|
||||
var i = 0;
|
||||
var j, jj;
|
||||
for (j = 0, jj = flatCoordinates.length; j < jj; j += stride) {
|
||||
var x = flatCoordinates[j];
|
||||
var y = flatCoordinates[j + 1];
|
||||
dest[i++] = m00 * x + m01 * y + m03;
|
||||
dest[i++] = m10 * x + m11 * y + m13;
|
||||
}
|
||||
if (goog.isDef(opt_dest) && dest.length != i) {
|
||||
dest.length = i;
|
||||
}
|
||||
return dest;
|
||||
};
|
||||
@@ -1,7 +1,5 @@
|
||||
goog.provide('ol.geom.flat');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.vec.Mat4');
|
||||
goog.require('ol.extent');
|
||||
|
||||
|
||||
@@ -26,34 +24,3 @@ ol.geom.flat.linearRingssGetFlatCenters =
|
||||
}
|
||||
return flatCenters;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||
* @param {number} stride Stride.
|
||||
* @param {goog.vec.Mat4.Number} transform Transform.
|
||||
* @param {Array.<number>=} opt_dest Destination.
|
||||
* @return {Array.<number>} Transformed coordinates.
|
||||
*/
|
||||
ol.geom.flat.transform2D =
|
||||
function(flatCoordinates, stride, transform, opt_dest) {
|
||||
var m00 = goog.vec.Mat4.getElement(transform, 0, 0);
|
||||
var m10 = goog.vec.Mat4.getElement(transform, 1, 0);
|
||||
var m01 = goog.vec.Mat4.getElement(transform, 0, 1);
|
||||
var m11 = goog.vec.Mat4.getElement(transform, 1, 1);
|
||||
var m03 = goog.vec.Mat4.getElement(transform, 0, 3);
|
||||
var m13 = goog.vec.Mat4.getElement(transform, 1, 3);
|
||||
var dest = goog.isDef(opt_dest) ? opt_dest : [];
|
||||
var i = 0;
|
||||
var j, jj;
|
||||
for (j = 0, jj = flatCoordinates.length; j < jj; j += stride) {
|
||||
var x = flatCoordinates[j];
|
||||
var y = flatCoordinates[j + 1];
|
||||
dest[i++] = m00 * x + m01 * y + m03;
|
||||
dest[i++] = m10 * x + m11 * y + m13;
|
||||
}
|
||||
if (goog.isDef(opt_dest) && dest.length != i) {
|
||||
dest.length = i;
|
||||
}
|
||||
return dest;
|
||||
};
|
||||
|
||||
@@ -6,6 +6,7 @@ goog.require('goog.object');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.geom.Geometry');
|
||||
goog.require('ol.geom.flat');
|
||||
goog.require('ol.geom.flat.transform');
|
||||
|
||||
|
||||
|
||||
@@ -260,7 +261,7 @@ ol.geom.transformSimpleGeometry2D =
|
||||
return null;
|
||||
} else {
|
||||
var stride = simpleGeometry.getStride();
|
||||
return ol.geom.flat.transform2D(
|
||||
return ol.geom.flat.transform.transform2D(
|
||||
flatCoordinates, stride, transform, opt_dest);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// FIXME test, especially polygons with holes and multipolygons
|
||||
// FIXME need to handle large thick features (where pixel size matters)
|
||||
// FIXME add offset and end to ol.geom.flat.transform2D?
|
||||
// FIXME add offset and end to ol.geom.flat.transform.transform2D?
|
||||
|
||||
goog.provide('ol.render.canvas.Immediate');
|
||||
|
||||
@@ -12,6 +12,7 @@ goog.require('ol.BrowserFeature');
|
||||
goog.require('ol.color');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.geom.flat');
|
||||
goog.require('ol.geom.flat.transform');
|
||||
goog.require('ol.render.IVectorContext');
|
||||
goog.require('ol.render.canvas');
|
||||
goog.require('ol.vec.Mat4');
|
||||
@@ -235,7 +236,7 @@ ol.render.canvas.Immediate.prototype.drawImages_ =
|
||||
}
|
||||
goog.asserts.assert(offset === 0);
|
||||
goog.asserts.assert(end == flatCoordinates.length);
|
||||
var pixelCoordinates = ol.geom.flat.transform2D(
|
||||
var pixelCoordinates = ol.geom.flat.transform.transform2D(
|
||||
flatCoordinates, 2, this.transform_, this.pixelCoordinates_);
|
||||
var context = this.context_;
|
||||
var localTransform = this.tmpLocalTransform_;
|
||||
@@ -301,7 +302,7 @@ ol.render.canvas.Immediate.prototype.drawText_ =
|
||||
this.setContextTextState_(this.textState_);
|
||||
goog.asserts.assert(offset === 0);
|
||||
goog.asserts.assert(end == flatCoordinates.length);
|
||||
var pixelCoordinates = ol.geom.flat.transform2D(
|
||||
var pixelCoordinates = ol.geom.flat.transform.transform2D(
|
||||
flatCoordinates, stride, this.transform_, this.pixelCoordinates_);
|
||||
var context = this.context_;
|
||||
for (; offset < end; offset += stride) {
|
||||
|
||||
@@ -18,6 +18,7 @@ goog.require('ol.extent');
|
||||
goog.require('ol.extent.Relationship');
|
||||
goog.require('ol.geom.flat');
|
||||
goog.require('ol.geom.flat.simplify');
|
||||
goog.require('ol.geom.flat.transform');
|
||||
goog.require('ol.render.IReplayGroup');
|
||||
goog.require('ol.render.IVectorContext');
|
||||
goog.require('ol.render.canvas');
|
||||
@@ -217,7 +218,7 @@ ol.render.canvas.Replay.prototype.replay_ = function(
|
||||
if (ol.vec.Mat4.equals2D(transform, this.renderedTransform_)) {
|
||||
pixelCoordinates = this.pixelCoordinates_;
|
||||
} else {
|
||||
pixelCoordinates = ol.geom.flat.transform2D(
|
||||
pixelCoordinates = ol.geom.flat.transform.transform2D(
|
||||
this.coordinates, 2, transform, this.pixelCoordinates_);
|
||||
goog.vec.Mat4.setFromArray(this.renderedTransform_, transform);
|
||||
goog.asserts.assert(pixelCoordinates === this.pixelCoordinates_);
|
||||
@@ -1852,7 +1853,7 @@ ol.render.canvas.ReplayGroup.prototype.replay_ = function(
|
||||
var minY = maxExtent[1];
|
||||
var maxX = maxExtent[2];
|
||||
var maxY = maxExtent[3];
|
||||
var flatClipCoords = ol.geom.flat.transform2D(
|
||||
var flatClipCoords = ol.geom.flat.transform.transform2D(
|
||||
[minX, minY, minX, maxY, maxX, maxY, maxX, minY], 2, transform);
|
||||
context.save();
|
||||
context.beginPath();
|
||||
|
||||
Reference in New Issue
Block a user