From 5b937f02ae7eaed6e2c6a711cf3e5fb9de961c57 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Tue, 27 Dec 2016 13:42:44 -0700 Subject: [PATCH] Shared module for vector tile render type enum --- externs/olx.js | 4 +-- src/ol/layer/vectortile.js | 33 +++++------------------ src/ol/layer/vectortilerendertype.js | 20 ++++++++++++++ src/ol/renderer/canvas/vectortilelayer.js | 6 ++--- 4 files changed, 32 insertions(+), 31 deletions(-) create mode 100644 src/ol/layer/vectortilerendertype.js diff --git a/externs/olx.js b/externs/olx.js index 53744e0238..4d91ec98a8 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -4014,7 +4014,7 @@ olx.layer.VectorOptions.prototype.visible; * opacity: (number|undefined), * preload: (number|undefined), * renderBuffer: (number|undefined), - * renderMode: (ol.layer.VectorTile.RenderType|string|undefined), + * renderMode: (ol.layer.VectorTileRenderType|string|undefined), * renderOrder: (function(ol.Feature, ol.Feature):number|undefined), * source: (ol.source.VectorTile|undefined), * style: (ol.style.Style|Array.|ol.StyleFunction|undefined), @@ -4049,7 +4049,7 @@ olx.layer.VectorTileOptions.prototype.renderBuffer; * * `'vector'`: Vector tiles are rendered as vectors. Most accurate rendering * even during animations, but slower performance than the other options. * The default is `'hybrid'`. - * @type {ol.layer.VectorTile.RenderType|string|undefined} + * @type {ol.layer.VectorTileRenderType|string|undefined} * @api */ olx.layer.VectorTileOptions.prototype.renderMode; diff --git a/src/ol/layer/vectortile.js b/src/ol/layer/vectortile.js index 6c3054b08a..20ed72c21e 100644 --- a/src/ol/layer/vectortile.js +++ b/src/ol/layer/vectortile.js @@ -4,6 +4,7 @@ goog.require('ol'); goog.require('ol.asserts'); goog.require('ol.layer.TileProperty'); goog.require('ol.layer.Vector'); +goog.require('ol.layer.VectorTileRenderType'); goog.require('ol.obj'); @@ -33,16 +34,16 @@ ol.layer.VectorTile = function(opt_options) { options.useInterimTilesOnError : true); ol.asserts.assert(options.renderMode == undefined || - options.renderMode == ol.layer.VectorTile.RenderType.IMAGE || - options.renderMode == ol.layer.VectorTile.RenderType.HYBRID || - options.renderMode == ol.layer.VectorTile.RenderType.VECTOR, + options.renderMode == ol.layer.VectorTileRenderType.IMAGE || + options.renderMode == ol.layer.VectorTileRenderType.HYBRID || + options.renderMode == ol.layer.VectorTileRenderType.VECTOR, 28); // `renderMode` must be `'image'`, `'hybrid'` or `'vector'` /** * @private - * @type {ol.layer.VectorTile.RenderType|string} + * @type {ol.layer.VectorTileRenderType|string} */ - this.renderMode_ = options.renderMode || ol.layer.VectorTile.RenderType.HYBRID; + this.renderMode_ = options.renderMode || ol.layer.VectorTileRenderType.HYBRID; }; ol.inherits(ol.layer.VectorTile, ol.layer.Vector); @@ -60,7 +61,7 @@ ol.layer.VectorTile.prototype.getPreload = function() { /** - * @return {ol.layer.VectorTile.RenderType|string} The render mode. + * @return {ol.layer.VectorTileRenderType|string} The render mode. */ ol.layer.VectorTile.prototype.getRenderMode = function() { return this.renderMode_; @@ -110,23 +111,3 @@ ol.layer.VectorTile.Property_ = { PRELOAD: 'preload', USE_INTERIM_TILES_ON_ERROR: 'useInterimTilesOnError' }; - - -/** - * @enum {string} - * Render mode for vector tiles: - * * `'image'`: Vector tiles are rendered as images. Great performance, but - * point symbols and texts are always rotated with the view and pixels are - * scaled during zoom animations. - * * `'hybrid'`: Polygon and line elements are rendered as images, so pixels - * are scaled during zoom animations. Point symbols and texts are accurately - * rendered as vectors and can stay upright on rotated views. - * * `'vector'`: Vector tiles are rendered as vectors. Most accurate rendering - * even during animations, but slower performance than the other options. - * @api - */ -ol.layer.VectorTile.RenderType = { - IMAGE: 'image', - HYBRID: 'hybrid', - VECTOR: 'vector' -}; diff --git a/src/ol/layer/vectortilerendertype.js b/src/ol/layer/vectortilerendertype.js new file mode 100644 index 0000000000..af95924c26 --- /dev/null +++ b/src/ol/layer/vectortilerendertype.js @@ -0,0 +1,20 @@ +goog.provide('ol.layer.VectorTileRenderType'); + +/** + * @enum {string} + * Render mode for vector tiles: + * * `'image'`: Vector tiles are rendered as images. Great performance, but + * point symbols and texts are always rotated with the view and pixels are + * scaled during zoom animations. + * * `'hybrid'`: Polygon and line elements are rendered as images, so pixels + * are scaled during zoom animations. Point symbols and texts are accurately + * rendered as vectors and can stay upright on rotated views. + * * `'vector'`: Vector tiles are rendered as vectors. Most accurate rendering + * even during animations, but slower performance than the other options. + * @api + */ +ol.layer.VectorTileRenderType = { + IMAGE: 'image', + HYBRID: 'hybrid', + VECTOR: 'vector' +}; diff --git a/src/ol/renderer/canvas/vectortilelayer.js b/src/ol/renderer/canvas/vectortilelayer.js index 1e97862734..c36e1e1b01 100644 --- a/src/ol/renderer/canvas/vectortilelayer.js +++ b/src/ol/renderer/canvas/vectortilelayer.js @@ -4,7 +4,7 @@ goog.require('ol'); goog.require('ol.extent'); goog.require('ol.proj'); goog.require('ol.proj.Units'); -goog.require('ol.layer.VectorTile'); +goog.require('ol.layer.VectorTileRenderType'); goog.require('ol.render.ReplayType'); goog.require('ol.render.canvas'); goog.require('ol.render.canvas.ReplayGroup'); @@ -44,7 +44,7 @@ ol.renderer.canvas.VectorTileLayer = function(layer) { // Use lower resolution for pure vector rendering. Closest resolution otherwise. this.zDirection = - layer.getRenderMode() == ol.layer.VectorTile.RenderType.VECTOR ? 1 : 0; + layer.getRenderMode() == ol.layer.VectorTileRenderType.VECTOR ? 1 : 0; }; ol.inherits(ol.renderer.canvas.VectorTileLayer, ol.renderer.canvas.TileLayer); @@ -185,7 +185,7 @@ ol.renderer.canvas.VectorTileLayer.prototype.drawTileImage = function( var vectorTile = /** @type {ol.VectorTile} */ (tile); this.createReplayGroup_(vectorTile, frameState); var layer = this.getLayer(); - if (layer.getRenderMode() != ol.layer.VectorTile.RenderType.VECTOR) { + if (layer.getRenderMode() != ol.layer.VectorTileRenderType.VECTOR) { this.renderTileImage_(vectorTile, frameState, layerState); } ol.renderer.canvas.TileLayer.prototype.drawTileImage.apply(this, arguments);