123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- import defined from './defined.js';
- import isBitSet from './isBitSet.js';
- // Bitmask for checking tile properties
- var childrenBitmasks = [0x01, 0x02, 0x04, 0x08];
- var anyChildBitmask = 0x0F;
- var cacheFlagBitmask = 0x10; // True if there is a child subtree
- var imageBitmask = 0x40;
- var terrainBitmask = 0x80;
- /**
- * Contains information about each tile from a Google Earth Enterprise server
- *
- * @param {Number} bits Bitmask that contains the type of data and available children for each tile.
- * @param {Number} cnodeVersion Version of the request for subtree metadata.
- * @param {Number} imageryVersion Version of the request for imagery tile.
- * @param {Number} terrainVersion Version of the request for terrain tile.
- * @param {Number} imageryProvider Id of imagery provider.
- * @param {Number} terrainProvider Id of terrain provider.
- *
- * @private
- */
- function GoogleEarthEnterpriseTileInformation(bits, cnodeVersion, imageryVersion, terrainVersion, imageryProvider, terrainProvider) {
- this._bits = bits;
- this.cnodeVersion = cnodeVersion;
- this.imageryVersion = imageryVersion;
- this.terrainVersion = terrainVersion;
- this.imageryProvider = imageryProvider;
- this.terrainProvider = terrainProvider;
- this.ancestorHasTerrain = false; // Set it later once we find its parent
- this.terrainState = undefined;
- }
- /**
- * Creates GoogleEarthEnterpriseTileInformation from an object
- *
- * @param {Object} info Object to be cloned
- * @param {GoogleEarthEnterpriseTileInformation} [result] The object onto which to store the result.
- * @returns {GoogleEarthEnterpriseTileInformation} The modified result parameter or a new GoogleEarthEnterpriseTileInformation instance if none was provided.
- */
- GoogleEarthEnterpriseTileInformation.clone = function(info, result) {
- if (!defined(result)) {
- result = new GoogleEarthEnterpriseTileInformation(info._bits, info.cnodeVersion, info.imageryVersion, info.terrainVersion,
- info.imageryProvider, info.terrainProvider);
- } else {
- result._bits = info._bits;
- result.cnodeVersion = info.cnodeVersion;
- result.imageryVersion = info.imageryVersion;
- result.terrainVersion = info.terrainVersion;
- result.imageryProvider = info.imageryProvider;
- result.terrainProvider = info.terrainProvider;
- }
- result.ancestorHasTerrain = info.ancestorHasTerrain;
- result.terrainState = info.terrainState;
- return result;
- };
- /**
- * Sets the parent for the tile
- *
- * @param {GoogleEarthEnterpriseTileInformation} parent Parent tile
- */
- GoogleEarthEnterpriseTileInformation.prototype.setParent = function(parent) {
- this.ancestorHasTerrain = parent.ancestorHasTerrain || this.hasTerrain();
- };
- /**
- * Gets whether a subtree is available
- *
- * @returns {Boolean} true if subtree is available, false otherwise.
- */
- GoogleEarthEnterpriseTileInformation.prototype.hasSubtree = function() {
- return isBitSet(this._bits, cacheFlagBitmask);
- };
- /**
- * Gets whether imagery is available
- *
- * @returns {Boolean} true if imagery is available, false otherwise.
- */
- GoogleEarthEnterpriseTileInformation.prototype.hasImagery = function() {
- return isBitSet(this._bits, imageBitmask);
- };
- /**
- * Gets whether terrain is available
- *
- * @returns {Boolean} true if terrain is available, false otherwise.
- */
- GoogleEarthEnterpriseTileInformation.prototype.hasTerrain = function() {
- return isBitSet(this._bits, terrainBitmask);
- };
- /**
- * Gets whether any children are present
- *
- * @returns {Boolean} true if any children are available, false otherwise.
- */
- GoogleEarthEnterpriseTileInformation.prototype.hasChildren = function() {
- return isBitSet(this._bits, anyChildBitmask);
- };
- /**
- * Gets whether a specified child is available
- *
- * @param {Number} index Index of child tile
- *
- * @returns {Boolean} true if child is available, false otherwise
- */
- GoogleEarthEnterpriseTileInformation.prototype.hasChild = function(index) {
- return isBitSet(this._bits, childrenBitmasks[index]);
- };
- /**
- * Gets bitmask containing children
- *
- * @returns {Number} Children bitmask
- */
- GoogleEarthEnterpriseTileInformation.prototype.getChildBitmask = function() {
- return this._bits & anyChildBitmask;
- };
- export default GoogleEarthEnterpriseTileInformation;
|