Commit Graph

7813 Commits

Author SHA1 Message Date
Alexandre Dubé
571760fb32 Flag ol.tilegrid.TileGrid getTileCoordExtent as @api 2015-10-16 11:42:01 -04:00
Petr Sloup
965b88d7c8 Save context state only when it's actually necessary 2015-10-16 16:30:16 +02:00
Petr Sloup
d950dada31 Minor type fix 2015-10-16 16:30:16 +02:00
Petr Sloup
e49f529fe6 Add typedefs for functions returning tiles/images 2015-10-16 16:30:16 +02:00
Petr Sloup
6f9fa4c12e Minor documentation improvements 2015-10-16 16:30:04 +02:00
Petr Sloup
b816128728 Avoid assignment in return statement 2015-10-16 15:46:51 +02:00
Petr Sloup
70021be919 Use lower-case parameter names even for matrices 2015-10-16 15:45:34 +02:00
Petr Sloup
a7cde96056 Simplified wrapX handling
"Unwrap" the coordinates obtained from transformations and utilize wrapX
capabilities of the sources to handle calculations of TileRanges and
unwrapped tile extents.
2015-10-16 09:28:43 +02:00
Petr Sloup
52a7c5e582 Rename some private/local variables to increase readability 2015-10-16 09:28:43 +02:00
Petr Sloup
f52f9b6817 Rename ol.RASTER_REPROJ_* constants to full ol.RASTER_REPROJECTION_* 2015-10-16 09:28:43 +02:00
Petr Sloup
9f8ab48f1f Minor improvements based on pull request comments 2015-10-16 09:28:43 +02:00
Petr Sloup
8fb1d1f244 Remove usage of various goog.* functions
goog.isNull, goog.isDefAndNotNull and goog.array.*
2015-10-16 09:28:43 +02:00
Petr Sloup
f3d5d16a82 Remove use of goog.isDef 2015-10-16 09:28:43 +02:00
Petr Sloup
783acfa961 Use ol.math.clamp instead of goog.math.clamp 2015-10-16 09:28:43 +02:00
Petr Sloup
3f897cfb79 Minor typo fix 2015-10-16 09:28:43 +02:00
Petr Sloup
0f09607725 Slightly decrease build size when reprojection code is disabled 2015-10-16 09:28:43 +02:00
Petr Sloup
94caa07168 Minor code style, documentation and typo fixes 2015-10-16 09:28:43 +02:00
Petr Sloup
5388f96551 Reproject image sources only if actually needed 2015-10-16 09:28:42 +02:00
Petr Sloup
59bce75d2a Improved documentation 2015-10-16 09:28:42 +02:00
Petr Sloup
7a1533925a Reprojection code refactoring and cleaning 2015-10-16 09:28:42 +02:00
Petr Sloup
7864ed7861 Force subdivision when transformation returns infinite coordinate 2015-10-16 09:28:42 +02:00
Petr Sloup
03c75a8648 Transformation caching during reprojection triangulation
This usually saves around 30-35% of transformation calls.
2015-10-16 09:28:42 +02:00
Petr Sloup
726bcbef83 Alternative reprojection triangulation strategy
The quads are now subdivided more granually (to 2 instead of 4), which
usually leads to reduced number of triangles and higher performance.
2015-10-16 09:28:42 +02:00
Petr Sloup
016df5b902 Minor ol.reproj.Image fixes 2015-10-16 09:28:42 +02:00
Petr Sloup
14e20e23a0 Correctly reproject projections with undefined units 2015-10-16 09:28:42 +02:00
Petr Sloup
aad5f94556 Minor type fix in ol.reproj.Image 2015-10-16 09:28:42 +02:00
Petr Sloup
615b54eb67 Use error threshold for image sources reprojection 2015-10-16 09:28:42 +02:00
Petr Sloup
fc23a38692 Take target extent into account when ensuring minimal reproj subdivision 2015-10-16 09:28:41 +02:00
Petr Sloup
3b1d72202a Correctly reproject sources in wrappable projection
With extent smaller than the projection extent
2015-10-16 09:28:41 +02:00
Petr Sloup
4c236a64b8 Handle canvas clip antialiasing during reprojection 2015-10-16 09:28:41 +02:00
Petr Sloup
3cc8291df4 Support pixelRatio during reprojection 2015-10-16 09:28:41 +02:00
Petr Sloup
c2b21985f4 Add ol.source.TileImage#setTileGridForProjection method 2015-10-16 09:28:41 +02:00
Petr Sloup
168b675191 Add reprojectionErrorThreshold option to the tiled image sources 2015-10-16 09:28:41 +02:00
Petr Sloup
ebc1bc0096 Better handling of tilegrids without extent during reprojection
For WMTS source, the tilegrid has no extent, but the projection can
2015-10-16 09:28:41 +02:00
Petr Sloup
be6bf00d74 Add defines for certain reprojection constants 2015-10-16 09:28:41 +02:00
Petr Sloup
f481070f82 Handle tilegrids without extent during tile reprojection 2015-10-16 09:28:41 +02:00
Petr Sloup
9a460b5f6b Handle cross-browser canvas antialiasing issues during reprojection
By doing strictly 1 drawImage per triangle; triangle overlapping and
using different blending mode.
2015-10-16 09:28:41 +02:00
Petr Sloup
8b38928aad Make rendering of reprojection edges configurable 2015-10-16 09:28:41 +02:00
Petr Sloup
30cd0aa584 Improve reprojection performance
Utilize the numerical shifting during reprojection to easily reduce
complexity of the linear system that needs to be solved.
2015-10-16 09:28:41 +02:00
Petr Sloup
8ab197eba6 Optimize the reprojection by stitching the sources prior to rendering
This solves canvas antialiasing issues and also simplifies the code
handling wrapX in the source projection.
2015-10-16 09:28:41 +02:00
Petr Sloup
6482ccf2f7 Make ol.reproj.Triangulation a class 2015-10-16 09:28:41 +02:00
Petr Sloup
0f408e341f Rename ol.source.Image#getImage implementations to #getImageInternal
This allows for the reprojection to be initialized in the #getImage,
while #getImageInternal is used to obtain the actual data.
2015-10-16 09:28:41 +02:00
Petr Sloup
ed1e49045a Allow different source and view projection in image layer renderers
To enable image layer reprojection.
2015-10-16 09:28:41 +02:00
Petr Sloup
be0a0de759 Integrate image reprojection with ol.source.Image 2015-10-16 09:28:41 +02:00
Petr Sloup
15575288e0 Add ol.ENABLE_RASTER_REPROJECTION define 2015-10-16 09:28:41 +02:00
Petr Sloup
f2f77091ad Handle tile sources without projection
Such sources should never be reprojected (and no additional tilecache or
tilegrid should be created).
2015-10-16 09:28:41 +02:00
Petr Sloup
c205323ff2 Reproject correctly when transform returns +-Infinity values 2015-10-16 09:28:41 +02:00
Petr Sloup
b0694c1e3b Add projection parameter to ol.source.Tile#expireCache and #useTile
This is required to be able to determine which cache the xyz coordinates
refer to (in case we have more caches).
2015-10-16 09:28:41 +02:00
Petr Sloup
e0cfa1951a Add projection parameter to ol.source.Tile#forEachLoadedTile 2015-10-16 09:28:41 +02:00
Petr Sloup
63084d30e9 Improve numerical stability of reprojection
By shifting the source points before calculating the affine transform to
obtain values from similar ranges (inputs and outputs of the transform).
2015-10-16 09:28:41 +02:00