cesium 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.md +259 -0
- data/README.rdoc +90 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
- data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
- data/app/assets/javascripts/Assets/package.json +6 -0
- data/app/assets/javascripts/Cesium.js +320 -0
- data/app/assets/javascripts/Core/AnimationController.js +148 -0
- data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
- data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
- data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
- data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
- data/app/assets/javascripts/Core/Cartesian2.js +762 -0
- data/app/assets/javascripts/Core/Cartesian3.js +861 -0
- data/app/assets/javascripts/Core/Cartesian4.js +762 -0
- data/app/assets/javascripts/Core/Cartographic.js +211 -0
- data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
- data/app/assets/javascripts/Core/Clock.js +195 -0
- data/app/assets/javascripts/Core/ClockRange.js +37 -0
- data/app/assets/javascripts/Core/ClockStep.js +32 -0
- data/app/assets/javascripts/Core/Color.js +1629 -0
- data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
- data/app/assets/javascripts/Core/Core.profile.js +8 -0
- data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
- data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
- data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
- data/app/assets/javascripts/Core/DeveloperError.js +60 -0
- data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
- data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
- data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
- data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
- data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
- data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
- data/app/assets/javascripts/Core/Enumeration.js +67 -0
- data/app/assets/javascripts/Core/Event.js +122 -0
- data/app/assets/javascripts/Core/Extent.js +383 -0
- data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
- data/app/assets/javascripts/Core/FAR.js +13 -0
- data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
- data/app/assets/javascripts/Core/Fullscreen.js +235 -0
- data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
- data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
- data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
- data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
- data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
- data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
- data/app/assets/javascripts/Core/Intersect.js +40 -0
- data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
- data/app/assets/javascripts/Core/Interval.js +27 -0
- data/app/assets/javascripts/Core/Iso8601.js +46 -0
- data/app/assets/javascripts/Core/JulianDate.js +1228 -0
- data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
- data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
- data/app/assets/javascripts/Core/LeapSecond.js +158 -0
- data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
- data/app/assets/javascripts/Core/Math.js +532 -0
- data/app/assets/javascripts/Core/Matrix2.js +833 -0
- data/app/assets/javascripts/Core/Matrix3.js +1099 -0
- data/app/assets/javascripts/Core/Matrix4.js +2164 -0
- data/app/assets/javascripts/Core/MeshFilters.js +568 -0
- data/app/assets/javascripts/Core/Occluder.js +474 -0
- data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
- data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
- data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
- data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
- data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
- data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
- data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
- data/app/assets/javascripts/Core/Quaternion.js +947 -0
- data/app/assets/javascripts/Core/Queue.js +95 -0
- data/app/assets/javascripts/Core/Ray.js +64 -0
- data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
- data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
- data/app/assets/javascripts/Core/RuntimeError.js +59 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
- data/app/assets/javascripts/Core/Shapes.js +230 -0
- data/app/assets/javascripts/Core/Spherical.js +192 -0
- data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
- data/app/assets/javascripts/Core/TimeConstants.js +85 -0
- data/app/assets/javascripts/Core/TimeInterval.js +305 -0
- data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
- data/app/assets/javascripts/Core/TimeStandard.js +31 -0
- data/app/assets/javascripts/Core/Tipsify.js +285 -0
- data/app/assets/javascripts/Core/Transforms.js +614 -0
- data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
- data/app/assets/javascripts/Core/Visibility.js +38 -0
- data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
- data/app/assets/javascripts/Core/WindingOrder.js +40 -0
- data/app/assets/javascripts/Core/binarySearch.js +69 -0
- data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
- data/app/assets/javascripts/Core/clone.js +21 -0
- data/app/assets/javascripts/Core/combine.js +81 -0
- data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
- data/app/assets/javascripts/Core/createGuid.js +25 -0
- data/app/assets/javascripts/Core/defaultValue.js +22 -0
- data/app/assets/javascripts/Core/destroyObject.js +61 -0
- data/app/assets/javascripts/Core/freezeObject.js +20 -0
- data/app/assets/javascripts/Core/getImagePixels.js +46 -0
- data/app/assets/javascripts/Core/isLeapYear.js +30 -0
- data/app/assets/javascripts/Core/jsonp.js +116 -0
- data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
- data/app/assets/javascripts/Core/loadImage.js +85 -0
- data/app/assets/javascripts/Core/loadJson.js +54 -0
- data/app/assets/javascripts/Core/loadText.js +78 -0
- data/app/assets/javascripts/Core/loadXML.js +76 -0
- data/app/assets/javascripts/Core/package.json +6 -0
- data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
- data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
- data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
- data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
- data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
- data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
- data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
- data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
- data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
- data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
- data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
- data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
- data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
- data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
- data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
- data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
- data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
- data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
- data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
- data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
- data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
- data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
- data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
- data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
- data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
- data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
- data/app/assets/javascripts/DynamicScene/package.json +6 -0
- data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
- data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
- data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
- data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
- data/app/assets/javascripts/Renderer/Buffer.js +141 -0
- data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
- data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
- data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
- data/app/assets/javascripts/Renderer/Context.js +2805 -0
- data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
- data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
- data/app/assets/javascripts/Renderer/CullFace.js +50 -0
- data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
- data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
- data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
- data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
- data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
- data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
- data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
- data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
- data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
- data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
- data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
- data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
- data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
- data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
- data/app/assets/javascripts/Renderer/Texture.js +395 -0
- data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
- data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
- data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
- data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
- data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
- data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
- data/app/assets/javascripts/Renderer/UniformState.js +799 -0
- data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
- data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
- data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
- data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
- data/app/assets/javascripts/Renderer/package.json +6 -0
- data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
- data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
- data/app/assets/javascripts/Scene/Billboard.js +680 -0
- data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
- data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
- data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
- data/app/assets/javascripts/Scene/Camera.js +358 -0
- data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
- data/app/assets/javascripts/Scene/CameraController.js +1258 -0
- data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
- data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
- data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
- data/app/assets/javascripts/Scene/CentralBody.js +817 -0
- data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
- data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
- data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
- data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
- data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
- data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
- data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
- data/app/assets/javascripts/Scene/FrameState.js +86 -0
- data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
- data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
- data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/Imagery.js +85 -0
- data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
- data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
- data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
- data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
- data/app/assets/javascripts/Scene/ImageryState.js +20 -0
- data/app/assets/javascripts/Scene/Label.js +706 -0
- data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
- data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
- data/app/assets/javascripts/Scene/Material.js +1177 -0
- data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
- data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
- data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
- data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
- data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
- data/app/assets/javascripts/Scene/Polygon.js +886 -0
- data/app/assets/javascripts/Scene/Polyline.js +441 -0
- data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
- data/app/assets/javascripts/Scene/Projections.js +93 -0
- data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
- data/app/assets/javascripts/Scene/Scene.js +632 -0
- data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
- data/app/assets/javascripts/Scene/SceneMode.js +51 -0
- data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
- data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
- data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
- data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
- data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
- data/app/assets/javascripts/Scene/SkyBox.js +231 -0
- data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
- data/app/assets/javascripts/Scene/TexturePool.js +154 -0
- data/app/assets/javascripts/Scene/Tile.js +322 -0
- data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
- data/app/assets/javascripts/Scene/TileImagery.js +36 -0
- data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
- data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
- data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
- data/app/assets/javascripts/Scene/TileState.js +19 -0
- data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
- data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
- data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
- data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
- data/app/assets/javascripts/Scene/package.json +6 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
- data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
- data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
- data/app/assets/javascripts/Shaders/Noise.js +242 -0
- data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
- data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
- data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
- data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
- data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
- data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
- data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
- data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
- data/app/assets/javascripts/Shaders/Ray.js +357 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
- data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
- data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
- data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
- data/app/assets/javascripts/Shaders/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
- data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
- data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
- data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
- data/app/assets/javascripts/ThirdParty/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
- data/app/assets/javascripts/ThirdParty/when.js +748 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
- data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
- data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
- data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
- data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
- data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
- data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
- data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
- data/app/assets/javascripts/Widgets/Timeline.css +113 -0
- data/app/assets/javascripts/Widgets/Timeline.js +629 -0
- data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
- data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
- data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
- data/app/assets/javascripts/Widgets/package.json +6 -0
- data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
- data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
- data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
- data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
- data/app/assets/javascripts/Workers/package.json +6 -0
- data/app/assets/javascripts/copyrightHeader.js +22 -0
- data/app/assets/javascripts/main.js +10 -0
- data/app/assets/stylesheets/cesium.css +4 -0
- data/app/controllers/cesium_controller.rb +4 -0
- data/app/helpers/cesium_helper.rb +2 -0
- data/app/views/cesium/index.html.erb +3 -0
- data/config/routes.rb +3 -0
- data/lib/cesium.rb +4 -0
- data/lib/cesium/engine.rb +4 -0
- data/lib/cesium/version.rb +3 -0
- data/lib/tasks/cesium_tasks.rake +4 -0
- data/test/cesium_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
- data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
- data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
- data/test/dummy/app/assets/stylesheets/application.css +12 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +21 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/requirejs.yml +10 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/functional/cesium_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/helpers/cesium_helper_test.rb +4 -0
- metadata +641 -0
|
@@ -0,0 +1,697 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'../Core/DeveloperError',
|
|
4
|
+
'../Core/destroyObject',
|
|
5
|
+
'../Core/Cartesian2',
|
|
6
|
+
'../Core/Matrix4',
|
|
7
|
+
'../Core/writeTextToCanvas',
|
|
8
|
+
'../Renderer/BufferUsage',
|
|
9
|
+
'./BillboardCollection',
|
|
10
|
+
'./Label',
|
|
11
|
+
'./LabelStyle',
|
|
12
|
+
'./HorizontalOrigin',
|
|
13
|
+
'./VerticalOrigin'
|
|
14
|
+
], function(
|
|
15
|
+
DeveloperError,
|
|
16
|
+
destroyObject,
|
|
17
|
+
Cartesian2,
|
|
18
|
+
Matrix4,
|
|
19
|
+
writeTextToCanvas,
|
|
20
|
+
BufferUsage,
|
|
21
|
+
BillboardCollection,
|
|
22
|
+
Label,
|
|
23
|
+
LabelStyle,
|
|
24
|
+
HorizontalOrigin,
|
|
25
|
+
VerticalOrigin) {
|
|
26
|
+
"use strict";
|
|
27
|
+
|
|
28
|
+
// A glyph represents a single character in a particular label. It may or may
|
|
29
|
+
// not have a billboard, depending on whether the texture info has an index into
|
|
30
|
+
// the the label collection's texture atlas. Invisible characters have no texture, and
|
|
31
|
+
// no billboard. However, it always has a valid dimensions object.
|
|
32
|
+
function Glyph() {
|
|
33
|
+
this.textureInfo = undefined;
|
|
34
|
+
this.dimensions = undefined;
|
|
35
|
+
this.billboard = undefined;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// GlyphTextureInfo represents a single character, drawn in a particular style,
|
|
39
|
+
// shared and reference counted across all labels. It may or may not have an
|
|
40
|
+
// index into the label collection's texture atlas, depending on whether the character
|
|
41
|
+
// has both width and height, but it always has a valid dimensions object.
|
|
42
|
+
function GlyphTextureInfo(labelCollection, index, dimensions) {
|
|
43
|
+
this.labelCollection = labelCollection;
|
|
44
|
+
this.index = index;
|
|
45
|
+
this.dimensions = dimensions;
|
|
46
|
+
this.referenceCount = 1;
|
|
47
|
+
|
|
48
|
+
++labelCollection._textureCount;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
GlyphTextureInfo.prototype.addReference = function() {
|
|
52
|
+
if (this.referenceCount === 0) {
|
|
53
|
+
// was fully released, now has references, so no longer unused
|
|
54
|
+
--this.labelCollection._unusedTextureCount;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
++this.referenceCount;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
GlyphTextureInfo.prototype.releaseReference = function() {
|
|
61
|
+
--this.referenceCount;
|
|
62
|
+
|
|
63
|
+
if (this.referenceCount === 0) {
|
|
64
|
+
++this.labelCollection._unusedTextureCount;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// reusable object for calling writeTextToCanvas
|
|
69
|
+
var writeTextToCanvasParameters = {};
|
|
70
|
+
function createGlyphCanvas(character, font, fillColor, outlineColor, style, verticalOrigin) {
|
|
71
|
+
writeTextToCanvasParameters.font = font;
|
|
72
|
+
writeTextToCanvasParameters.fillColor = fillColor;
|
|
73
|
+
writeTextToCanvasParameters.strokeColor = outlineColor;
|
|
74
|
+
|
|
75
|
+
if (verticalOrigin === VerticalOrigin.BOTTOM) {
|
|
76
|
+
writeTextToCanvasParameters.textBaseline = 'bottom';
|
|
77
|
+
} else if (verticalOrigin === VerticalOrigin.TOP) {
|
|
78
|
+
writeTextToCanvasParameters.textBaseline = 'top';
|
|
79
|
+
} else {
|
|
80
|
+
// VerticalOrigin.CENTER
|
|
81
|
+
writeTextToCanvasParameters.textBaseline = 'middle';
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
writeTextToCanvasParameters.fill = style === LabelStyle.FILL || style === LabelStyle.FILL_AND_OUTLINE;
|
|
85
|
+
writeTextToCanvasParameters.stroke = style === LabelStyle.OUTLINE || style === LabelStyle.FILL_AND_OUTLINE;
|
|
86
|
+
|
|
87
|
+
return writeTextToCanvas(character, writeTextToCanvasParameters);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function unbindGlyph(labelCollection, glyph) {
|
|
91
|
+
if (typeof glyph.textureInfo !== 'undefined') {
|
|
92
|
+
glyph.textureInfo.releaseReference();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
glyph.textureInfo = undefined;
|
|
96
|
+
glyph.dimensions = undefined;
|
|
97
|
+
|
|
98
|
+
var billboard = glyph.billboard;
|
|
99
|
+
if (typeof billboard !== 'undefined') {
|
|
100
|
+
billboard.setShow(false);
|
|
101
|
+
billboard.setImageIndex(-1);
|
|
102
|
+
labelCollection._spareBillboards.push(billboard);
|
|
103
|
+
glyph.billboard = undefined;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function rebindAllGlyphs(labelCollection, label) {
|
|
108
|
+
var text = label._text;
|
|
109
|
+
var textLength = text.length;
|
|
110
|
+
var glyphs = label._glyphs;
|
|
111
|
+
var glyphsLength = glyphs.length;
|
|
112
|
+
|
|
113
|
+
var glyph, glyphIndex, textIndex;
|
|
114
|
+
|
|
115
|
+
// if we have more glyphs than needed, unbind the extras.
|
|
116
|
+
if (textLength < glyphsLength) {
|
|
117
|
+
for (glyphIndex = textLength; glyphIndex < glyphsLength; ++glyphIndex) {
|
|
118
|
+
unbindGlyph(labelCollection, glyphs[glyphIndex]);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// presize glyphs to match the new text length
|
|
123
|
+
glyphs.length = textLength;
|
|
124
|
+
|
|
125
|
+
var glyphTextureCache = labelCollection._glyphTextureCache;
|
|
126
|
+
var textureAtlas = labelCollection._textureAtlas;
|
|
127
|
+
|
|
128
|
+
// walk the text looking for new characters (creating new glyphs for each)
|
|
129
|
+
// or changed characters (rebinding existing glyphs)
|
|
130
|
+
for (textIndex = 0; textIndex < textLength; ++textIndex) {
|
|
131
|
+
var character = text.charAt(textIndex);
|
|
132
|
+
var font = label._font;
|
|
133
|
+
var fillColor = label._fillColor;
|
|
134
|
+
var outlineColor = label._outlineColor;
|
|
135
|
+
var style = label._style;
|
|
136
|
+
var verticalOrigin = label._verticalOrigin;
|
|
137
|
+
|
|
138
|
+
// retrieve glyph dimensions and texture index (if the canvas has area)
|
|
139
|
+
// from the glyph texture cache, or create and add if not present.
|
|
140
|
+
var id = JSON.stringify([
|
|
141
|
+
character,
|
|
142
|
+
font,
|
|
143
|
+
fillColor.toString(),
|
|
144
|
+
outlineColor.toString(),
|
|
145
|
+
style.toString(),
|
|
146
|
+
verticalOrigin.toString()
|
|
147
|
+
]);
|
|
148
|
+
|
|
149
|
+
var glyphTextureInfo = glyphTextureCache[id];
|
|
150
|
+
if (typeof glyphTextureInfo === 'undefined') {
|
|
151
|
+
var canvas = createGlyphCanvas(character, font, fillColor, outlineColor, style, verticalOrigin);
|
|
152
|
+
var index = -1;
|
|
153
|
+
if (canvas.width > 0 && canvas.height > 0) {
|
|
154
|
+
index = textureAtlas.addImage(canvas);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
glyphTextureInfo = new GlyphTextureInfo(labelCollection, index, canvas.dimensions);
|
|
158
|
+
glyphTextureCache[id] = glyphTextureInfo;
|
|
159
|
+
} else {
|
|
160
|
+
glyphTextureInfo.addReference();
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
glyph = glyphs[textIndex];
|
|
164
|
+
|
|
165
|
+
if (typeof glyph !== 'undefined') {
|
|
166
|
+
// clean up leftover information from the previous glyph
|
|
167
|
+
if (glyphTextureInfo.index === -1) {
|
|
168
|
+
// no texture, and therefore no billboard, for this glyph.
|
|
169
|
+
// so, completely unbind glyph.
|
|
170
|
+
unbindGlyph(labelCollection, glyph);
|
|
171
|
+
} else {
|
|
172
|
+
// we have a texture and billboard. If we had one before, release
|
|
173
|
+
// our reference to that texture info, but reuse the billboard.
|
|
174
|
+
if (typeof glyph.textureInfo !== 'undefined') {
|
|
175
|
+
glyph.textureInfo.releaseReference();
|
|
176
|
+
glyph.textureInfo = undefined;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
} else {
|
|
180
|
+
// create a glyph object
|
|
181
|
+
glyph = new Glyph();
|
|
182
|
+
glyphs[textIndex] = glyph;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
glyph.textureInfo = glyphTextureInfo;
|
|
186
|
+
glyph.dimensions = glyphTextureInfo.dimensions;
|
|
187
|
+
|
|
188
|
+
// if we have a texture, configure the existing billboard, or obtain one
|
|
189
|
+
if (glyphTextureInfo.index !== -1) {
|
|
190
|
+
var billboard = glyph.billboard;
|
|
191
|
+
if (typeof billboard === 'undefined') {
|
|
192
|
+
if (labelCollection._spareBillboards.length > 0) {
|
|
193
|
+
glyph.billboard = billboard = labelCollection._spareBillboards.pop();
|
|
194
|
+
} else {
|
|
195
|
+
glyph.billboard = billboard = labelCollection._billboardCollection.add();
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
billboard.setShow(label._show);
|
|
199
|
+
billboard.setPosition(label._position);
|
|
200
|
+
billboard.setEyeOffset(label._eyeOffset);
|
|
201
|
+
billboard.setHorizontalOrigin(HorizontalOrigin.LEFT);
|
|
202
|
+
billboard.setVerticalOrigin(label._verticalOrigin);
|
|
203
|
+
billboard.setScale(label._scale);
|
|
204
|
+
billboard._pickIdThis = label;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
glyph.billboard.setImageIndex(glyphTextureInfo.index);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// changing glyphs will cause the position of the
|
|
212
|
+
// glyphs to change, since different characters have different widths
|
|
213
|
+
label._repositionAllGlyphs = true;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// reusable Cartesian2 instance
|
|
217
|
+
var glyphPixelOffset = new Cartesian2();
|
|
218
|
+
|
|
219
|
+
function repositionAllGlyphs(label) {
|
|
220
|
+
var glyphs = label._glyphs;
|
|
221
|
+
var glyph;
|
|
222
|
+
var dimensions;
|
|
223
|
+
var totalWidth = 0;
|
|
224
|
+
var maxHeight = 0;
|
|
225
|
+
|
|
226
|
+
var glyphIndex = 0;
|
|
227
|
+
var glyphLength = glyphs.length;
|
|
228
|
+
for (glyphIndex = 0; glyphIndex < glyphLength; ++glyphIndex) {
|
|
229
|
+
glyph = glyphs[glyphIndex];
|
|
230
|
+
dimensions = glyph.dimensions;
|
|
231
|
+
totalWidth += dimensions.width;
|
|
232
|
+
maxHeight = Math.max(maxHeight, dimensions.height);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
var scale = label._scale;
|
|
236
|
+
var horizontalOrigin = label._horizontalOrigin;
|
|
237
|
+
var widthOffset = 0;
|
|
238
|
+
if (horizontalOrigin === HorizontalOrigin.CENTER) {
|
|
239
|
+
widthOffset -= totalWidth / 2 * scale;
|
|
240
|
+
} else if (horizontalOrigin === HorizontalOrigin.RIGHT) {
|
|
241
|
+
widthOffset -= totalWidth * scale;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
var pixelOffset = label._pixelOffset;
|
|
245
|
+
|
|
246
|
+
glyphPixelOffset.x = pixelOffset.x + widthOffset;
|
|
247
|
+
glyphPixelOffset.y = 0;
|
|
248
|
+
|
|
249
|
+
var verticalOrigin = label._verticalOrigin;
|
|
250
|
+
for (glyphIndex = 0; glyphIndex < glyphLength; ++glyphIndex) {
|
|
251
|
+
glyph = glyphs[glyphIndex];
|
|
252
|
+
dimensions = glyph.dimensions;
|
|
253
|
+
|
|
254
|
+
if (verticalOrigin === VerticalOrigin.BOTTOM || dimensions.height === maxHeight) {
|
|
255
|
+
glyphPixelOffset.y = pixelOffset.y - dimensions.descent * scale;
|
|
256
|
+
} else if (verticalOrigin === VerticalOrigin.TOP) {
|
|
257
|
+
glyphPixelOffset.y = pixelOffset.y - (maxHeight - dimensions.height) * scale - dimensions.descent * scale;
|
|
258
|
+
} else if (verticalOrigin === VerticalOrigin.CENTER) {
|
|
259
|
+
glyphPixelOffset.y = pixelOffset.y - (maxHeight - dimensions.height) / 2 * scale - dimensions.descent * scale;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
if (typeof glyph.billboard !== 'undefined') {
|
|
263
|
+
glyph.billboard.setPixelOffset(glyphPixelOffset);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
glyphPixelOffset.x += dimensions.width * scale;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function destroyLabel(labelCollection, label) {
|
|
271
|
+
var glyphs = label._glyphs;
|
|
272
|
+
for ( var i = 0, len = glyphs.length; i < len; ++i) {
|
|
273
|
+
unbindGlyph(labelCollection, glyphs[i]);
|
|
274
|
+
}
|
|
275
|
+
destroyObject(label);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* A renderable collection of labels. Labels are viewport-aligned text positioned in the 3D scene.
|
|
280
|
+
* Each label can have a different font, color, scale, etc.
|
|
281
|
+
* <br /><br />
|
|
282
|
+
* <div align='center'>
|
|
283
|
+
* <img src='images/Label.png' width='400' height='300' /><br />
|
|
284
|
+
* Example labels
|
|
285
|
+
* </div>
|
|
286
|
+
* <br /><br />
|
|
287
|
+
* Labels are added and removed from the collection using {@link LabelCollection#add}
|
|
288
|
+
* and {@link LabelCollection#remove}.
|
|
289
|
+
*
|
|
290
|
+
* @alias LabelCollection
|
|
291
|
+
* @constructor
|
|
292
|
+
*
|
|
293
|
+
* @performance For best performance, prefer a few collections, each with many labels, to
|
|
294
|
+
* many collections with only a few labels each. Avoid having collections where some
|
|
295
|
+
* labels change every frame and others do not; instead, create one or more collections
|
|
296
|
+
* for static labels, and one or more collections for dynamic labels.
|
|
297
|
+
*
|
|
298
|
+
* @see LabelCollection#add
|
|
299
|
+
* @see LabelCollection#remove
|
|
300
|
+
* @see Label
|
|
301
|
+
* @see BillboardCollection
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* // Create a label collection with two labels
|
|
305
|
+
* var labels = new LabelCollection();
|
|
306
|
+
* labels.add({
|
|
307
|
+
* position : { x : 1.0, y : 2.0, z : 3.0 },
|
|
308
|
+
* text : 'A label'
|
|
309
|
+
* });
|
|
310
|
+
* labels.add({
|
|
311
|
+
* position : { x : 4.0, y : 5.0, z : 6.0 },
|
|
312
|
+
* text : 'Another label'
|
|
313
|
+
* });
|
|
314
|
+
*/
|
|
315
|
+
var LabelCollection = function() {
|
|
316
|
+
this._textureAtlas = undefined;
|
|
317
|
+
|
|
318
|
+
this._billboardCollection = new BillboardCollection();
|
|
319
|
+
this._billboardCollection.setDestroyTextureAtlas(false);
|
|
320
|
+
|
|
321
|
+
this._spareBillboards = [];
|
|
322
|
+
this._glyphTextureCache = {};
|
|
323
|
+
this._textureCount = 0;
|
|
324
|
+
this._unusedTextureCount = 0;
|
|
325
|
+
this._labels = [];
|
|
326
|
+
this._labelsToUpdate = [];
|
|
327
|
+
this._frameCount = 0;
|
|
328
|
+
this._totalGlyphCount = 0;
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* The 4x4 transformation matrix that transforms each label in this collection from model to world coordinates.
|
|
332
|
+
* When this is the identity matrix, the labels are drawn in world coordinates, i.e., Earth's WGS84 coordinates.
|
|
333
|
+
* Local reference frames can be used by providing a different transformation matrix, like that returned
|
|
334
|
+
* by {@link Transforms.eastNorthUpToFixedFrame}. This matrix is available to GLSL vertex and fragment
|
|
335
|
+
* shaders via {@link czm_model} and derived uniforms.
|
|
336
|
+
*
|
|
337
|
+
* @type Matrix4
|
|
338
|
+
*
|
|
339
|
+
* @see Transforms.eastNorthUpToFixedFrame
|
|
340
|
+
* @see czm_model
|
|
341
|
+
*
|
|
342
|
+
* @example
|
|
343
|
+
* var center = ellipsoid.cartographicToCartesian(Cartographic.fromDegrees(-75.59777, 40.03883));
|
|
344
|
+
* labels.modelMatrix = Transforms.eastNorthUpToFixedFrame(center);
|
|
345
|
+
* labels.add({
|
|
346
|
+
* position : new Cartesian3(0.0, 0.0, 0.0),
|
|
347
|
+
* text : 'Center'
|
|
348
|
+
* });
|
|
349
|
+
* labels.add({
|
|
350
|
+
* position : new Cartesian3(1000000.0, 0.0, 0.0),
|
|
351
|
+
* text : 'East'
|
|
352
|
+
* });
|
|
353
|
+
* labels.add({
|
|
354
|
+
* position : new Cartesian3(0.0, 1000000.0, 0.0),
|
|
355
|
+
* text : 'North'
|
|
356
|
+
* });
|
|
357
|
+
* labels.add({
|
|
358
|
+
* position : new Cartesian3(0.0, 0.0, 1000000.0),
|
|
359
|
+
* text : 'Up'
|
|
360
|
+
* });
|
|
361
|
+
*/
|
|
362
|
+
this.modelMatrix = Matrix4.IDENTITY.clone();
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* If true, aligns all text to a pixel in screen space,
|
|
366
|
+
* providing crisper text at the cost of jumpier motion.
|
|
367
|
+
* Defaults to true.
|
|
368
|
+
*
|
|
369
|
+
* @type Boolean
|
|
370
|
+
*/
|
|
371
|
+
this.clampToPixel = true;
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* The current morph transition time between 2D/Columbus View and 3D,
|
|
375
|
+
* with 0.0 being 2D or Columbus View and 1.0 being 3D.
|
|
376
|
+
*
|
|
377
|
+
* @type Number
|
|
378
|
+
*/
|
|
379
|
+
this.morphTime = 1.0;
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Creates and adds a label with the specified initial properties to the collection.
|
|
384
|
+
* The added label is returned so it can be modified or removed from the collection later.
|
|
385
|
+
*
|
|
386
|
+
* @memberof LabelCollection
|
|
387
|
+
*
|
|
388
|
+
* @param {Object}[description] A template describing the label's properties as shown in Example 1.
|
|
389
|
+
*
|
|
390
|
+
* @return {Label} The label that was added to the collection.
|
|
391
|
+
*
|
|
392
|
+
* @performance Calling <code>add</code> is expected constant time. However, when
|
|
393
|
+
* {@link LabelCollection#update} is called, the collection's vertex buffer
|
|
394
|
+
* is rewritten; this operations is <code>O(n)</code> and also incurs
|
|
395
|
+
* CPU to GPU overhead. For best performance, add as many billboards as possible before
|
|
396
|
+
* calling <code>update</code>.
|
|
397
|
+
*
|
|
398
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
399
|
+
*
|
|
400
|
+
* @see LabelCollection#remove
|
|
401
|
+
* @see LabelCollection#removeAll
|
|
402
|
+
* @see LabelCollection#update
|
|
403
|
+
*
|
|
404
|
+
* @example
|
|
405
|
+
* // Example 1: Add a label, specifying all the default values.
|
|
406
|
+
* var l = labels.add({
|
|
407
|
+
* show : true,
|
|
408
|
+
* position : Cartesian3.ZERO,
|
|
409
|
+
* text : '',
|
|
410
|
+
* font : '30px sans-serif',
|
|
411
|
+
* fillColor : 'white',
|
|
412
|
+
* outlineColor : 'white',
|
|
413
|
+
* style : LabelStyle.FILL,
|
|
414
|
+
* pixelOffset : Cartesian2.ZERO,
|
|
415
|
+
* eyeOffset : Cartesian3.ZERO,
|
|
416
|
+
* horizontalOrigin : HorizontalOrigin.LEFT,
|
|
417
|
+
* verticalOrigin : VerticalOrigin.BOTTOM,
|
|
418
|
+
* scale : 1.0,
|
|
419
|
+
* });
|
|
420
|
+
*
|
|
421
|
+
* // Example 2: Specify only the label's cartographic position,
|
|
422
|
+
* // text, and font.
|
|
423
|
+
* var l = labels.add({
|
|
424
|
+
* position : ellipsoid.cartographicToCartesian(new Cartographic(longitude, latitude, height)),
|
|
425
|
+
* text : 'Hello World',
|
|
426
|
+
* font : '24px Helvetica',
|
|
427
|
+
* });
|
|
428
|
+
*/
|
|
429
|
+
LabelCollection.prototype.add = function(description) {
|
|
430
|
+
var label = new Label(description, this);
|
|
431
|
+
|
|
432
|
+
this._labels.push(label);
|
|
433
|
+
this._labelsToUpdate.push(label);
|
|
434
|
+
|
|
435
|
+
return label;
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Removes a label from the collection. Once removed, a label is no longer usable.
|
|
440
|
+
*
|
|
441
|
+
* @memberof LabelCollection
|
|
442
|
+
*
|
|
443
|
+
* @param {Label} label The label to remove.
|
|
444
|
+
*
|
|
445
|
+
* @return {Boolean} <code>true</code> if the label was removed; <code>false</code> if the label was not found in the collection.
|
|
446
|
+
*
|
|
447
|
+
* @performance Calling <code>remove</code> is expected constant time. However, when
|
|
448
|
+
* {@link LabelCollection#update} is called, the collection's vertex buffer
|
|
449
|
+
* is rewritten - an <code>O(n)</code> operation that also incurs CPU to GPU overhead. For
|
|
450
|
+
* best performance, remove as many labels as possible before calling <code>update</code>.
|
|
451
|
+
* If you intend to temporarily hide a label, it is usually more efficient to call
|
|
452
|
+
* {@link Label#setShow} instead of removing and re-adding the label.
|
|
453
|
+
*
|
|
454
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
455
|
+
*
|
|
456
|
+
* @see LabelCollection#add
|
|
457
|
+
* @see LabelCollection#removeAll
|
|
458
|
+
* @see LabelCollection#update
|
|
459
|
+
* @see Label#setShow
|
|
460
|
+
*
|
|
461
|
+
* @example
|
|
462
|
+
* var l = labels.add(...);
|
|
463
|
+
* labels.remove(l); // Returns true
|
|
464
|
+
*/
|
|
465
|
+
LabelCollection.prototype.remove = function(label) {
|
|
466
|
+
if (typeof label === 'undefined') {
|
|
467
|
+
return false;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
if (label._labelCollection === this) {
|
|
471
|
+
this._labels.splice(this._labels.indexOf(label), 1);
|
|
472
|
+
destroyLabel(this, label);
|
|
473
|
+
|
|
474
|
+
return true;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
return false;
|
|
478
|
+
};
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Removes all labels from the collection.
|
|
482
|
+
*
|
|
483
|
+
* @memberof LabelCollection
|
|
484
|
+
*
|
|
485
|
+
* @performance <code>O(n)</code>. It is more efficient to remove all the labels
|
|
486
|
+
* from a collection and then add new ones than to create a new collection entirely.
|
|
487
|
+
*
|
|
488
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
489
|
+
*
|
|
490
|
+
* @see LabelCollection#add
|
|
491
|
+
* @see LabelCollection#remove
|
|
492
|
+
* @see LabelCollection#update
|
|
493
|
+
*
|
|
494
|
+
* @example
|
|
495
|
+
* labels.add(...);
|
|
496
|
+
* labels.add(...);
|
|
497
|
+
* labels.removeAll();
|
|
498
|
+
*/
|
|
499
|
+
LabelCollection.prototype.removeAll = function() {
|
|
500
|
+
var labels = this._labels;
|
|
501
|
+
|
|
502
|
+
for ( var i = 0, len = labels.length; i < len; ++i) {
|
|
503
|
+
destroyLabel(this, labels[i]);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
labels.length = 0;
|
|
507
|
+
};
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* Check whether this collection contains a given label.
|
|
511
|
+
*
|
|
512
|
+
* @memberof LabelCollection
|
|
513
|
+
*
|
|
514
|
+
* @param {Label} label The label to check for.
|
|
515
|
+
*
|
|
516
|
+
* @return {Boolean} true if this collection contains the label, false otherwise.
|
|
517
|
+
*
|
|
518
|
+
* @see LabelCollection#get
|
|
519
|
+
*/
|
|
520
|
+
LabelCollection.prototype.contains = function(label) {
|
|
521
|
+
return typeof label !== 'undefined' && label._labelCollection === this;
|
|
522
|
+
};
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* Returns the label in the collection at the specified index. Indices are zero-based
|
|
526
|
+
* and increase as labels are added. Removing a label shifts all labels after
|
|
527
|
+
* it to the left, changing their indices. This function is commonly used with
|
|
528
|
+
* {@link LabelCollection#getLength} to iterate over all the labels
|
|
529
|
+
* in the collection.
|
|
530
|
+
*
|
|
531
|
+
* @memberof LabelCollection
|
|
532
|
+
*
|
|
533
|
+
* @param {Number} index The zero-based index of the billboard.
|
|
534
|
+
*
|
|
535
|
+
* @return {Label} The label at the specified index.
|
|
536
|
+
*
|
|
537
|
+
* @performance Expected constant time. If labels were removed from the collection and
|
|
538
|
+
* {@link LabelCollection#update} was not called, an implicit <code>O(n)</code>
|
|
539
|
+
* operation is performed.
|
|
540
|
+
*
|
|
541
|
+
* @exception {DeveloperError} index is required.
|
|
542
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
543
|
+
*
|
|
544
|
+
* @see LabelCollection#getLength
|
|
545
|
+
*
|
|
546
|
+
* @example
|
|
547
|
+
* // Toggle the show property of every label in the collection
|
|
548
|
+
* var len = labels.getLength();
|
|
549
|
+
* for (var i = 0; i < len; ++i) {
|
|
550
|
+
* var l = billboards.get(i);
|
|
551
|
+
* l.setShow(!l.getShow());
|
|
552
|
+
* }
|
|
553
|
+
*/
|
|
554
|
+
LabelCollection.prototype.get = function(index) {
|
|
555
|
+
if (typeof index === 'undefined') {
|
|
556
|
+
throw new DeveloperError('index is required.');
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
return this._labels[index];
|
|
560
|
+
};
|
|
561
|
+
|
|
562
|
+
/**
|
|
563
|
+
* Returns the number of labels in this collection. This is commonly used with
|
|
564
|
+
* {@link LabelCollection#get} to iterate over all the labels
|
|
565
|
+
* in the collection.
|
|
566
|
+
*
|
|
567
|
+
* @memberof LabelCollection
|
|
568
|
+
*
|
|
569
|
+
* @return {Number} The number of labels in this collection.
|
|
570
|
+
*
|
|
571
|
+
* @performance Expected constant time. If labels were removed from the collection and
|
|
572
|
+
* {@link LabelCollection#update} was not called, an implicit <code>O(n)</code>
|
|
573
|
+
* operation is performed.
|
|
574
|
+
*
|
|
575
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
576
|
+
*
|
|
577
|
+
* @see LabelCollection#get
|
|
578
|
+
*
|
|
579
|
+
* @example
|
|
580
|
+
* // Toggle the show property of every label in the collection
|
|
581
|
+
* var len = labels.getLength();
|
|
582
|
+
* for (var i = 0; i < len; ++i) {
|
|
583
|
+
* var l = billboards.get(i);
|
|
584
|
+
* l.setShow(!l.getShow());
|
|
585
|
+
* }
|
|
586
|
+
*/
|
|
587
|
+
LabelCollection.prototype.getLength = function() {
|
|
588
|
+
return this._labels.length;
|
|
589
|
+
};
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* @private
|
|
593
|
+
*/
|
|
594
|
+
LabelCollection.prototype.update = function(context, frameState, commandList) {
|
|
595
|
+
var billboardCollection = this._billboardCollection;
|
|
596
|
+
|
|
597
|
+
billboardCollection.modelMatrix = this.modelMatrix;
|
|
598
|
+
billboardCollection.morphTime = this.morphTime;
|
|
599
|
+
billboardCollection.clampToPixel = this.clampToPixel;
|
|
600
|
+
|
|
601
|
+
var rebindAllGlyphsInAllLabels = false;
|
|
602
|
+
if (++this._frameCount % 100 === 0) {
|
|
603
|
+
this._frameCount = 0;
|
|
604
|
+
// clear and rebuild texture atlas to compact it when we have more than 25% unused textures
|
|
605
|
+
if (this._unusedTextureCount > 0.25 * this._textureCount) {
|
|
606
|
+
this._textureAtlas = this._textureAtlas.destroy();
|
|
607
|
+
this._glyphTextureCache = {};
|
|
608
|
+
this._textureCount = 0;
|
|
609
|
+
this._unusedTextureCount = 0;
|
|
610
|
+
|
|
611
|
+
// rebind and update all labels to repopulate the textures
|
|
612
|
+
rebindAllGlyphsInAllLabels = true;
|
|
613
|
+
this._labelsToUpdate = this._labels.slice(0);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
// prune spare billboards to 10% of total glyph count
|
|
617
|
+
while (this._spareBillboards.length > this._totalGlyphCount * 0.1) {
|
|
618
|
+
billboardCollection.remove(this._spareBillboards.pop());
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
if (typeof this._textureAtlas === 'undefined') {
|
|
623
|
+
this._textureAtlas = context.createTextureAtlas();
|
|
624
|
+
billboardCollection.setTextureAtlas(this._textureAtlas);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
var labelsToUpdate = this._labelsToUpdate;
|
|
628
|
+
for ( var i = 0, len = labelsToUpdate.length; i < len; ++i) {
|
|
629
|
+
var label = labelsToUpdate[i];
|
|
630
|
+
if (label.isDestroyed()) {
|
|
631
|
+
continue;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
var preUpdateGlyphCount = label._glyphs.length;
|
|
635
|
+
|
|
636
|
+
if (rebindAllGlyphsInAllLabels || label._rebindAllGlyphs) {
|
|
637
|
+
rebindAllGlyphs(this, label);
|
|
638
|
+
label._rebindAllGlyphs = false;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
if (label._repositionAllGlyphs) {
|
|
642
|
+
repositionAllGlyphs(label);
|
|
643
|
+
label._repositionAllGlyphs = false;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
var glyphCountDifference = label._glyphs.length - preUpdateGlyphCount;
|
|
647
|
+
this._totalGlyphCount += glyphCountDifference;
|
|
648
|
+
}
|
|
649
|
+
labelsToUpdate.length = 0;
|
|
650
|
+
|
|
651
|
+
this._billboardCollection.update(context, frameState, commandList);
|
|
652
|
+
};
|
|
653
|
+
|
|
654
|
+
/**
|
|
655
|
+
* Returns true if this object was destroyed; otherwise, false.
|
|
656
|
+
* <br /><br />
|
|
657
|
+
* If this object was destroyed, it should not be used; calling any function other than
|
|
658
|
+
* <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
|
|
659
|
+
*
|
|
660
|
+
* @memberof LabelCollection
|
|
661
|
+
*
|
|
662
|
+
* @return {Boolean} True if this object was destroyed; otherwise, false.
|
|
663
|
+
*
|
|
664
|
+
* @see LabelCollection#destroy
|
|
665
|
+
*/
|
|
666
|
+
LabelCollection.prototype.isDestroyed = function() {
|
|
667
|
+
return false;
|
|
668
|
+
};
|
|
669
|
+
|
|
670
|
+
/**
|
|
671
|
+
* Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
|
|
672
|
+
* release of WebGL resources, instead of relying on the garbage collector to destroy this object.
|
|
673
|
+
* <br /><br />
|
|
674
|
+
* Once an object is destroyed, it should not be used; calling any function other than
|
|
675
|
+
* <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
|
|
676
|
+
* assign the return value (<code>undefined</code>) to the object as done in the example.
|
|
677
|
+
*
|
|
678
|
+
* @memberof LabelCollection
|
|
679
|
+
*
|
|
680
|
+
* @return {undefined}
|
|
681
|
+
*
|
|
682
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
683
|
+
*
|
|
684
|
+
* @see LabelCollection#isDestroyed
|
|
685
|
+
*
|
|
686
|
+
* @example
|
|
687
|
+
* labels = labels && labels.destroy();
|
|
688
|
+
*/
|
|
689
|
+
LabelCollection.prototype.destroy = function() {
|
|
690
|
+
// removeAll destroys the texture atlas
|
|
691
|
+
this.removeAll();
|
|
692
|
+
this._billboardCollection.destroy();
|
|
693
|
+
return destroyObject(this);
|
|
694
|
+
};
|
|
695
|
+
|
|
696
|
+
return LabelCollection;
|
|
697
|
+
});
|