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,95 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define(function() {
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A queue that can enqueue items at the end, and dequeue items from the front.
|
|
7
|
+
*
|
|
8
|
+
* @alias Queue
|
|
9
|
+
* @constructor
|
|
10
|
+
*/
|
|
11
|
+
var Queue = function() {
|
|
12
|
+
this._array = [];
|
|
13
|
+
this._offset = 0;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The length of the queue.
|
|
17
|
+
*/
|
|
18
|
+
this.length = 0;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Enqueues the specified item.
|
|
23
|
+
*
|
|
24
|
+
* @param {Object} item The item to enqueue.
|
|
25
|
+
* @memberof Queue
|
|
26
|
+
*/
|
|
27
|
+
Queue.prototype.enqueue = function(item) {
|
|
28
|
+
this._array.push(item);
|
|
29
|
+
this.length++;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Dequeues an item. Returns undefined if the queue is empty.
|
|
34
|
+
*
|
|
35
|
+
* @memberof Queue
|
|
36
|
+
*/
|
|
37
|
+
Queue.prototype.dequeue = function() {
|
|
38
|
+
if (this.length === 0) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var array = this._array;
|
|
43
|
+
var offset = this._offset;
|
|
44
|
+
var item = array[offset];
|
|
45
|
+
array[offset] = undefined;
|
|
46
|
+
|
|
47
|
+
offset++;
|
|
48
|
+
if (offset > 10 && offset * 2 > array.length) {
|
|
49
|
+
//compact array
|
|
50
|
+
this._array = array.slice(offset);
|
|
51
|
+
offset = 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
this._offset = offset;
|
|
55
|
+
this.length--;
|
|
56
|
+
|
|
57
|
+
return item;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Check whether this queue contains the specified item.
|
|
62
|
+
*
|
|
63
|
+
* @param {Object} the item to search for.
|
|
64
|
+
* @memberof Queue
|
|
65
|
+
*/
|
|
66
|
+
Queue.prototype.contains = function(item) {
|
|
67
|
+
return this._array.indexOf(item) !== -1;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Remove all items from the queue.
|
|
72
|
+
* @memberof Queue
|
|
73
|
+
*/
|
|
74
|
+
Queue.prototype.clear = function() {
|
|
75
|
+
this._array.length = this._offset = this.length = 0;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Sort the items in the queue in-place.
|
|
80
|
+
*
|
|
81
|
+
* @param {Function} compareFunction a function that defines the sort order.
|
|
82
|
+
* @memberof Queue
|
|
83
|
+
*/
|
|
84
|
+
Queue.prototype.sort = function(compareFunction) {
|
|
85
|
+
if (this._offset > 0) {
|
|
86
|
+
//compact array
|
|
87
|
+
this._array = this._array.slice(this._offset);
|
|
88
|
+
this._offset = 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
this._array.sort(compareFunction);
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
return Queue;
|
|
95
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'./DeveloperError',
|
|
4
|
+
'./defaultValue',
|
|
5
|
+
'./Cartesian3'
|
|
6
|
+
], function(
|
|
7
|
+
DeveloperError,
|
|
8
|
+
defaultValue,
|
|
9
|
+
Cartesian3) {
|
|
10
|
+
"use strict";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Represents a ray that extends infinitely from the provided origin in the provided direction.
|
|
14
|
+
* @alias Ray
|
|
15
|
+
* @constructor
|
|
16
|
+
*
|
|
17
|
+
* @param {Cartesian3} [origin=Cartesian3.ZERO] The origin of the ray.
|
|
18
|
+
* @param {Cartesian3} [direction=Cartesian3.ZERO] The direction of the ray.
|
|
19
|
+
*/
|
|
20
|
+
var Ray = function(origin, direction) {
|
|
21
|
+
direction = Cartesian3.clone(defaultValue(direction, Cartesian3.ZERO));
|
|
22
|
+
if (!direction.equals(Cartesian3.ZERO)) {
|
|
23
|
+
Cartesian3.normalize(direction, direction);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The origin of the ray.
|
|
28
|
+
* @type {Cartesian3}
|
|
29
|
+
*/
|
|
30
|
+
this.origin = Cartesian3.clone(defaultValue(origin, Cartesian3.ZERO));
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The direction of the ray.
|
|
34
|
+
* @type {Cartesian3}
|
|
35
|
+
*/
|
|
36
|
+
this.direction = direction;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Computes the point along the ray given by r(t) = o + t*d,
|
|
41
|
+
* where o is the origin of the ray and d is the direction.
|
|
42
|
+
* @memberof Ray
|
|
43
|
+
*
|
|
44
|
+
* @param {Number} t A scalar value.
|
|
45
|
+
* @param {Cartesian3} [result] The object in which the result will be stored.
|
|
46
|
+
* @returns The modified result parameter, or a new instance if none was provided.
|
|
47
|
+
*
|
|
48
|
+
* @exception {DeveloperError} t is a required number
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* //Get the first intersection point of a ray and an ellipsoid.
|
|
52
|
+
* var intersection = IntersectionTests.rayEllipsoid(ray, ellipsoid);
|
|
53
|
+
* var point = ray.getPoint(intersection.start);
|
|
54
|
+
*/
|
|
55
|
+
Ray.prototype.getPoint = function(t, result) {
|
|
56
|
+
if (typeof t !== 'number') {
|
|
57
|
+
throw new DeveloperError('t is a required number');
|
|
58
|
+
}
|
|
59
|
+
result = Cartesian3.multiplyByScalar(this.direction, t, result);
|
|
60
|
+
return Cartesian3.add(this.origin, result, result);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return Ray;
|
|
64
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'./Enumeration'
|
|
4
|
+
], function(
|
|
5
|
+
Enumeration) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Constants for identifying well-known reference frames.
|
|
10
|
+
*
|
|
11
|
+
* @exports ReferenceFrame
|
|
12
|
+
*/
|
|
13
|
+
var ReferenceFrame = {
|
|
14
|
+
/**
|
|
15
|
+
* The fixed frame.
|
|
16
|
+
*/
|
|
17
|
+
FIXED : new Enumeration(0, 'FIXED'),
|
|
18
|
+
/**
|
|
19
|
+
* The inertial frame.
|
|
20
|
+
*/
|
|
21
|
+
INERTIAL : new Enumeration(1, 'INERTIAL')
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
return ReferenceFrame;
|
|
25
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
], function(
|
|
4
|
+
) {
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* An event that is raised when a request encounters an error.
|
|
9
|
+
*
|
|
10
|
+
* @constructor
|
|
11
|
+
* @alias RequestErrorEvent
|
|
12
|
+
*
|
|
13
|
+
* @param {Number} [statusCode] The HTTP error status code, such as 404.
|
|
14
|
+
* @param {Object} [response] The response included along with the error.
|
|
15
|
+
*/
|
|
16
|
+
var RequestErrorEvent = function RequestErrorEvent(statusCode, response) {
|
|
17
|
+
/**
|
|
18
|
+
* The HTTP error status code, such as 404. If the error does not have a particular
|
|
19
|
+
* HTTP code, this property will be undefined.
|
|
20
|
+
*
|
|
21
|
+
* @type {Number}
|
|
22
|
+
*/
|
|
23
|
+
this.statusCode = statusCode;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The response included along with the error. If the error does not include a response,
|
|
27
|
+
* this property will be undefined.
|
|
28
|
+
*
|
|
29
|
+
* @type {Object}
|
|
30
|
+
*/
|
|
31
|
+
this.response = response;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
return RequestErrorEvent;
|
|
35
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define(function() {
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Constructs an exception object that is thrown due to an error that can occur at runtime, e.g.,
|
|
7
|
+
* out of memory, could not compile shader, etc. If a function may throw this
|
|
8
|
+
* exception, the calling code should be prepared to catch it.
|
|
9
|
+
* <br /><br />
|
|
10
|
+
* On the other hand, a {@link DeveloperError} indicates an exception due
|
|
11
|
+
* to a developer error, e.g., invalid argument, that usually indicates a bug in the
|
|
12
|
+
* calling code.
|
|
13
|
+
*
|
|
14
|
+
* @alias RuntimeError
|
|
15
|
+
*
|
|
16
|
+
* @param {String} [message=undefined] The error message for this exception.
|
|
17
|
+
*
|
|
18
|
+
* @see DeveloperError
|
|
19
|
+
* @constructor
|
|
20
|
+
*/
|
|
21
|
+
var RuntimeError = function(message) {
|
|
22
|
+
/**
|
|
23
|
+
* 'RuntimeError' indicating that this exception was thrown due to a runtime error.
|
|
24
|
+
* @type String
|
|
25
|
+
* @constant
|
|
26
|
+
*/
|
|
27
|
+
this.name = 'RuntimeError';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The explanation for why this exception was thrown.
|
|
31
|
+
* @type String
|
|
32
|
+
* @constant
|
|
33
|
+
*/
|
|
34
|
+
this.message = message;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The Error object containing the stack trace.
|
|
38
|
+
* @type Error
|
|
39
|
+
* @constant
|
|
40
|
+
*
|
|
41
|
+
* @see <a href='https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error'>Error object on Mozilla Developer Network</a>.
|
|
42
|
+
*/
|
|
43
|
+
this.error = new Error();
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
RuntimeError.prototype.toString = function () {
|
|
47
|
+
var str = this.name + ': ' + this.message;
|
|
48
|
+
if (typeof this.error !== 'undefined') {
|
|
49
|
+
if (typeof this.error.stack !== 'undefined') {
|
|
50
|
+
str += '\n' + this.error.stack.toString();
|
|
51
|
+
} else {
|
|
52
|
+
str += '\n' + this.error.toString();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return str;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
return RuntimeError;
|
|
59
|
+
});
|
|
@@ -0,0 +1,658 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'./DeveloperError',
|
|
4
|
+
'./destroyObject',
|
|
5
|
+
'./Cartesian2',
|
|
6
|
+
'./JulianDate',
|
|
7
|
+
'./ScreenSpaceEventType',
|
|
8
|
+
'./KeyboardEventModifier'
|
|
9
|
+
], function(
|
|
10
|
+
DeveloperError,
|
|
11
|
+
destroyObject,
|
|
12
|
+
Cartesian2,
|
|
13
|
+
JulianDate,
|
|
14
|
+
ScreenSpaceEventType,
|
|
15
|
+
KeyboardEventModifier) {
|
|
16
|
+
"use strict";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Handles user input events. Custom functions can be added to be executed on
|
|
20
|
+
* when the user enters input.
|
|
21
|
+
*
|
|
22
|
+
* @alias ScreenSpaceEventHandler
|
|
23
|
+
*
|
|
24
|
+
* @param {DOC_TBA} element The element to add events to. Defaults to document.
|
|
25
|
+
* @constructor
|
|
26
|
+
*/
|
|
27
|
+
var ScreenSpaceEventHandler = function(element) {
|
|
28
|
+
this._mouseEvents = {};
|
|
29
|
+
for ( var button in ScreenSpaceEventType) {
|
|
30
|
+
if (ScreenSpaceEventType.hasOwnProperty(button)) {
|
|
31
|
+
this._mouseEvents[button] = 0;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
this._modifiedMouseEvents = {};
|
|
36
|
+
for ( var modifier in KeyboardEventModifier) {
|
|
37
|
+
if (KeyboardEventModifier.hasOwnProperty(modifier)) {
|
|
38
|
+
this._modifiedMouseEvents[modifier] = {};
|
|
39
|
+
for (button in ScreenSpaceEventType) {
|
|
40
|
+
if (ScreenSpaceEventType.hasOwnProperty(button)) {
|
|
41
|
+
this._modifiedMouseEvents[modifier][button] = 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
this._leftMouseButtonDown = false;
|
|
48
|
+
this._middleMouseButtonDown = false;
|
|
49
|
+
this._rightMouseButtonDown = false;
|
|
50
|
+
this._isPinching = false;
|
|
51
|
+
this._seenAnyTouchEvents = false;
|
|
52
|
+
this._lastMouseX = 0;
|
|
53
|
+
this._lastMouseY = 0;
|
|
54
|
+
this._lastTouch2X = 0;
|
|
55
|
+
this._lastTouch2Y = 0;
|
|
56
|
+
this._totalPixels = 0;
|
|
57
|
+
this._touchID1 = 0;
|
|
58
|
+
this._touchID2 = 0;
|
|
59
|
+
|
|
60
|
+
// TODO: Revisit when doing mobile development. May need to be configurable
|
|
61
|
+
// or determined based on the platform?
|
|
62
|
+
this._clickPixelTolerance = 5;
|
|
63
|
+
|
|
64
|
+
this._element = element || document;
|
|
65
|
+
|
|
66
|
+
this._register();
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
ScreenSpaceEventHandler.prototype._getPosition = function(event) {
|
|
70
|
+
if (this._element === document) {
|
|
71
|
+
return {
|
|
72
|
+
x : event.clientX,
|
|
73
|
+
y : event.clientY
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
var rect = this._element.getBoundingClientRect();
|
|
78
|
+
return {
|
|
79
|
+
x : event.clientX - rect.left,
|
|
80
|
+
y : event.clientY - rect.top
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Set a function to be executed on an input event.
|
|
86
|
+
*
|
|
87
|
+
* @memberof ScreenSpaceEventHandler
|
|
88
|
+
*
|
|
89
|
+
* @param {Function} action Function to be executed when the input event occurs.
|
|
90
|
+
* @param {Enumeration} type The ScreenSpaceEventType of input event.
|
|
91
|
+
* @param {Enumeration} modifier A KeyboardEventModifier key that is held when a <code>type</code>
|
|
92
|
+
* event occurs.
|
|
93
|
+
*
|
|
94
|
+
* @exception {DeveloperError} action is required.
|
|
95
|
+
* @exception {DeveloperError} type is required.
|
|
96
|
+
*
|
|
97
|
+
* @see ScreenSpaceEventHandler#getInputAction
|
|
98
|
+
* @see ScreenSpaceEventHandler#removeInputAction
|
|
99
|
+
*/
|
|
100
|
+
ScreenSpaceEventHandler.prototype.setInputAction = function(action, type, modifier) {
|
|
101
|
+
if (!action) {
|
|
102
|
+
throw new DeveloperError('action is required.');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (!type) {
|
|
106
|
+
throw new DeveloperError('type is required.');
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
var mouseEvents;
|
|
110
|
+
if (modifier && modifier.name) {
|
|
111
|
+
mouseEvents = this._modifiedMouseEvents[modifier.name];
|
|
112
|
+
} else {
|
|
113
|
+
mouseEvents = this._mouseEvents;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (type && type.name && mouseEvents) {
|
|
117
|
+
mouseEvents[type.name] = action;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Returns the function to be executed on an input event.
|
|
123
|
+
*
|
|
124
|
+
* @memberof ScreenSpaceEventHandler
|
|
125
|
+
*
|
|
126
|
+
* @param {Enumeration} type The ScreenSpaceEventType of input event.
|
|
127
|
+
* @param {Enumeration} modifier A KeyboardEventModifier key that is held when a <code>type</code>
|
|
128
|
+
* event occurs.
|
|
129
|
+
*
|
|
130
|
+
* @exception {DeveloperError} type is required.
|
|
131
|
+
*
|
|
132
|
+
* @see ScreenSpaceEventHandler#setInputAction
|
|
133
|
+
* @see ScreenSpaceEventHandler#removeInputAction
|
|
134
|
+
*/
|
|
135
|
+
ScreenSpaceEventHandler.prototype.getInputAction = function(type, modifier) {
|
|
136
|
+
if (!type) {
|
|
137
|
+
throw new DeveloperError('type is required.');
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
var mouseEvents;
|
|
141
|
+
if (modifier && modifier.name) {
|
|
142
|
+
mouseEvents = this._modifiedMouseEvents[modifier.name];
|
|
143
|
+
} else {
|
|
144
|
+
mouseEvents = this._mouseEvents;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (type && type.name && mouseEvents) {
|
|
148
|
+
return mouseEvents[type.name];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return undefined;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Removes the function to be executed on an input event.
|
|
156
|
+
*
|
|
157
|
+
* @memberof ScreenSpaceEventHandler
|
|
158
|
+
*
|
|
159
|
+
* @param {Enumeration} type The ScreenSpaceEventType of input event.
|
|
160
|
+
* @param {Enumeration} modifier A KeyboardEventModifier key that is held when a <code>type</code>
|
|
161
|
+
* event occurs.
|
|
162
|
+
*
|
|
163
|
+
* @exception {DeveloperError} type is required.
|
|
164
|
+
*
|
|
165
|
+
* @see ScreenSpaceEventHandler#getInputAction
|
|
166
|
+
* @see ScreenSpaceEventHandler#setInputAction
|
|
167
|
+
*/
|
|
168
|
+
ScreenSpaceEventHandler.prototype.removeInputAction = function(type, modifier) {
|
|
169
|
+
if (!type) {
|
|
170
|
+
throw new DeveloperError('type is required.');
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
var mouseEvents;
|
|
174
|
+
if (modifier && modifier.name) {
|
|
175
|
+
mouseEvents = this._modifiedMouseEvents[modifier.name];
|
|
176
|
+
} else {
|
|
177
|
+
mouseEvents = this._mouseEvents;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (type && type.name && mouseEvents && mouseEvents[type.name]) {
|
|
181
|
+
delete mouseEvents[type.name];
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
ScreenSpaceEventHandler.prototype._getModifier = function(event) {
|
|
186
|
+
if (event.shiftKey) {
|
|
187
|
+
return KeyboardEventModifier.SHIFT;
|
|
188
|
+
} else if (event.ctrlKey) {
|
|
189
|
+
return KeyboardEventModifier.CTRL;
|
|
190
|
+
} else if (event.altKey) {
|
|
191
|
+
return KeyboardEventModifier.ALT;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return undefined;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
ScreenSpaceEventHandler.prototype._handleMouseDown = function(event) {
|
|
198
|
+
var pos = this._getPosition(event);
|
|
199
|
+
this._lastMouseX = pos.x;
|
|
200
|
+
this._lastMouseY = pos.y;
|
|
201
|
+
this._totalPixels = 0;
|
|
202
|
+
if (this._seenAnyTouchEvents) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
var modifier = this._getModifier(event);
|
|
207
|
+
var action;
|
|
208
|
+
|
|
209
|
+
// IE_TODO: On some versions of IE, the left-button is 1, and the right-button is 4.
|
|
210
|
+
// See: http://www.unixpapa.com/js/mouse.html
|
|
211
|
+
// This is not the case in Chrome Frame, so we are OK for now, but are there
|
|
212
|
+
// constants somewhere?
|
|
213
|
+
if (event.button === 0) {
|
|
214
|
+
this._leftMouseButtonDown = true;
|
|
215
|
+
action = this.getInputAction(ScreenSpaceEventType.LEFT_DOWN, modifier);
|
|
216
|
+
} else if (event.button === 1) {
|
|
217
|
+
this._middleMouseButtonDown = true;
|
|
218
|
+
action = this.getInputAction(ScreenSpaceEventType.MIDDLE_DOWN, modifier);
|
|
219
|
+
} else if (event.button === 2) {
|
|
220
|
+
this._rightMouseButtonDown = true;
|
|
221
|
+
action = this.getInputAction(ScreenSpaceEventType.RIGHT_DOWN, modifier);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (action) {
|
|
225
|
+
action({
|
|
226
|
+
position : new Cartesian2(pos.x, pos.y)
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
event.preventDefault();
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
ScreenSpaceEventHandler.prototype._handleMouseUp = function(event) {
|
|
233
|
+
var modifier = this._getModifier(event);
|
|
234
|
+
var action, clickAction;
|
|
235
|
+
if (this._seenAnyTouchEvents) {
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// IE_TODO: On some versions of IE, the left-button is 1, and the right-button is 4.
|
|
240
|
+
// See: http://www.unixpapa.com/js/mouse.html
|
|
241
|
+
// This is not the case in Chrome Frame, so we are OK for now, but are there
|
|
242
|
+
// constants somewhere?
|
|
243
|
+
if (event.button === 0) {
|
|
244
|
+
this._leftMouseButtonDown = false;
|
|
245
|
+
action = this.getInputAction(ScreenSpaceEventType.LEFT_UP, modifier);
|
|
246
|
+
clickAction = this.getInputAction(ScreenSpaceEventType.LEFT_CLICK, modifier);
|
|
247
|
+
} else if (event.button === 1) {
|
|
248
|
+
this._middleMouseButtonDown = false;
|
|
249
|
+
action = this.getInputAction(ScreenSpaceEventType.MIDDLE_UP, modifier);
|
|
250
|
+
clickAction = this.getInputAction(ScreenSpaceEventType.MIDDLE_CLICK, modifier);
|
|
251
|
+
} else if (event.button === 2) {
|
|
252
|
+
this._rightMouseButtonDown = false;
|
|
253
|
+
action = this.getInputAction(ScreenSpaceEventType.RIGHT_UP, modifier);
|
|
254
|
+
clickAction = this.getInputAction(ScreenSpaceEventType.RIGHT_CLICK, modifier);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
var pos = this._getPosition(event);
|
|
258
|
+
|
|
259
|
+
var xDiff = this._lastMouseX - pos.x;
|
|
260
|
+
var yDiff = this._lastMouseY - pos.y;
|
|
261
|
+
this._totalPixels += Math.sqrt(xDiff * xDiff + yDiff * yDiff);
|
|
262
|
+
|
|
263
|
+
if (action) {
|
|
264
|
+
action({
|
|
265
|
+
position : new Cartesian2(pos.x, pos.y)
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (clickAction && this._totalPixels < this._clickPixelTolerance) {
|
|
270
|
+
clickAction({
|
|
271
|
+
position : new Cartesian2(pos.x, pos.y)
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
ScreenSpaceEventHandler.prototype._handleMouseMove = function(event) {
|
|
277
|
+
var pos = this._getPosition(event);
|
|
278
|
+
if (this._seenAnyTouchEvents) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
var xDiff = this._lastMouseX - pos.x;
|
|
283
|
+
var yDiff = this._lastMouseY - pos.y;
|
|
284
|
+
this._totalPixels += Math.sqrt(xDiff * xDiff + yDiff * yDiff);
|
|
285
|
+
|
|
286
|
+
var movement = {
|
|
287
|
+
startPosition : new Cartesian2(this._lastMouseX, this._lastMouseY),
|
|
288
|
+
endPosition : new Cartesian2(pos.x, pos.y),
|
|
289
|
+
motion : new Cartesian2(0.0, 0.0)
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
var modifier = this._getModifier(event);
|
|
293
|
+
var action = this.getInputAction(ScreenSpaceEventType.MOUSE_MOVE, modifier);
|
|
294
|
+
if (action) {
|
|
295
|
+
action(movement);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
this._lastMouseX = movement.endPosition.x;
|
|
299
|
+
this._lastMouseY = movement.endPosition.y;
|
|
300
|
+
|
|
301
|
+
if (this._leftMouseButtonDown || this._middleMouseButtonDown || this._rightMouseButtonDown) {
|
|
302
|
+
event.preventDefault();
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
ScreenSpaceEventHandler.prototype._handleTouchStart = function(event) {
|
|
307
|
+
var pos, pos2, numberOfTouches = event.touches.length;
|
|
308
|
+
this._seenAnyTouchEvents = true;
|
|
309
|
+
var modifier = this._getModifier(event);
|
|
310
|
+
var action;
|
|
311
|
+
|
|
312
|
+
pos = this._getPosition(event.touches[0]);
|
|
313
|
+
|
|
314
|
+
if (numberOfTouches === 1) {
|
|
315
|
+
this._lastMouseX = pos.x;
|
|
316
|
+
this._lastMouseY = pos.y;
|
|
317
|
+
this._totalPixels = 0;
|
|
318
|
+
|
|
319
|
+
this._leftMouseButtonDown = true;
|
|
320
|
+
action = this.getInputAction(ScreenSpaceEventType.LEFT_DOWN, modifier);
|
|
321
|
+
|
|
322
|
+
if (action) {
|
|
323
|
+
action({
|
|
324
|
+
position : new Cartesian2(pos.x, pos.y)
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
event.preventDefault();
|
|
328
|
+
} else if (this._leftMouseButtonDown) {
|
|
329
|
+
// Release "mouse" without clicking, because we are adding more touches.
|
|
330
|
+
this._leftMouseButtonDown = false;
|
|
331
|
+
action = this.getInputAction(ScreenSpaceEventType.LEFT_UP, modifier);
|
|
332
|
+
if (action) {
|
|
333
|
+
action({
|
|
334
|
+
position : new Cartesian2(pos.x, pos.y)
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (numberOfTouches === 2) {
|
|
340
|
+
this._isPinching = true;
|
|
341
|
+
pos2 = this._getPosition(event.touches[1]);
|
|
342
|
+
this._touchID1 = event.touches[0].identifier;
|
|
343
|
+
this._touchID2 = event.touches[1].identifier;
|
|
344
|
+
this._lastMouseX = pos.x;
|
|
345
|
+
this._lastMouseY = pos.y;
|
|
346
|
+
this._lastTouch2X = pos2.x;
|
|
347
|
+
this._lastTouch2Y = pos2.y;
|
|
348
|
+
action = this.getInputAction(ScreenSpaceEventType.PINCH_START, modifier);
|
|
349
|
+
if (action) {
|
|
350
|
+
action({
|
|
351
|
+
position1 : new Cartesian2(pos.x, pos.y),
|
|
352
|
+
position2 : new Cartesian2(pos2.x, pos2.y)
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
} else if (this._isPinching) {
|
|
356
|
+
this._isPinching = false;
|
|
357
|
+
action = this.getInputAction(ScreenSpaceEventType.PINCH_END, modifier);
|
|
358
|
+
if (action) {
|
|
359
|
+
action();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
ScreenSpaceEventHandler.prototype._handleTouchEnd = function(event) {
|
|
365
|
+
var numberOfTouches = event.touches.length;
|
|
366
|
+
var numberOfChangedTouches = event.changedTouches.length;
|
|
367
|
+
var modifier = this._getModifier(event);
|
|
368
|
+
var action, clickAction;
|
|
369
|
+
|
|
370
|
+
if (this._leftMouseButtonDown) {
|
|
371
|
+
this._leftMouseButtonDown = false;
|
|
372
|
+
action = this.getInputAction(ScreenSpaceEventType.LEFT_UP, modifier);
|
|
373
|
+
clickAction = this.getInputAction(ScreenSpaceEventType.LEFT_CLICK, modifier);
|
|
374
|
+
|
|
375
|
+
if (numberOfChangedTouches > 0) {
|
|
376
|
+
var pos = this._getPosition(event.changedTouches[0]);
|
|
377
|
+
|
|
378
|
+
var xDiff = this._lastMouseX - pos.x;
|
|
379
|
+
var yDiff = this._lastMouseY - pos.y;
|
|
380
|
+
this._totalPixels += Math.sqrt(xDiff * xDiff + yDiff * yDiff);
|
|
381
|
+
|
|
382
|
+
if (action) {
|
|
383
|
+
action({
|
|
384
|
+
position : new Cartesian2(pos.x, pos.y)
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
if (clickAction && this._totalPixels < this._clickPixelTolerance) {
|
|
389
|
+
clickAction({
|
|
390
|
+
position : new Cartesian2(pos.x, pos.y)
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
if (this._isPinching) {
|
|
397
|
+
this._isPinching = false;
|
|
398
|
+
action = this.getInputAction(ScreenSpaceEventType.PINCH_END, modifier);
|
|
399
|
+
if (action) {
|
|
400
|
+
action();
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
if (numberOfTouches === 1 || numberOfTouches === 2) {
|
|
405
|
+
this._handleTouchStart(event);
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
ScreenSpaceEventHandler.prototype._handleTouchMove = function(event) {
|
|
410
|
+
var modifier = this._getModifier(event);
|
|
411
|
+
var pos, pos2, action, movement;
|
|
412
|
+
|
|
413
|
+
if (this._leftMouseButtonDown && (event.touches.length === 1)) {
|
|
414
|
+
pos = this._getPosition(event.touches[0]);
|
|
415
|
+
|
|
416
|
+
var xDiff = this._lastMouseX - pos.x;
|
|
417
|
+
var yDiff = this._lastMouseY - pos.y;
|
|
418
|
+
this._totalPixels += Math.sqrt(xDiff * xDiff + yDiff * yDiff);
|
|
419
|
+
|
|
420
|
+
movement = {
|
|
421
|
+
startPosition : new Cartesian2(this._lastMouseX, this._lastMouseY),
|
|
422
|
+
endPosition : new Cartesian2(pos.x, pos.y),
|
|
423
|
+
motion : new Cartesian2(0.0, 0.0)
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
action = this.getInputAction(ScreenSpaceEventType.MOUSE_MOVE, modifier);
|
|
427
|
+
if (action) {
|
|
428
|
+
action(movement);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
this._lastMouseX = movement.endPosition.x;
|
|
432
|
+
this._lastMouseY = movement.endPosition.y;
|
|
433
|
+
|
|
434
|
+
if (this._leftMouseButtonDown || this._middleMouseButtonDown || this._rightMouseButtonDown) {
|
|
435
|
+
event.preventDefault();
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
if (this._isPinching && (event.touches.length === 2)) {
|
|
440
|
+
// Check the touch identifier to make sure the order is correct.
|
|
441
|
+
if (event.touches[0].identifier === this._touchID2) {
|
|
442
|
+
pos = this._getPosition(event.touches[1]);
|
|
443
|
+
pos2 = this._getPosition(event.touches[0]);
|
|
444
|
+
} else {
|
|
445
|
+
pos = this._getPosition(event.touches[0]);
|
|
446
|
+
pos2 = this._getPosition(event.touches[1]);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
action = this.getInputAction(ScreenSpaceEventType.PINCH_MOVE, modifier);
|
|
450
|
+
if (action) {
|
|
451
|
+
var dX = pos2.x - pos.x;
|
|
452
|
+
var dY = pos2.y - pos.y;
|
|
453
|
+
var dist = Math.sqrt(dX * dX + dY * dY) * 0.25;
|
|
454
|
+
var prevDX = this._lastTouch2X - this._lastMouseX;
|
|
455
|
+
var prevDY = this._lastTouch2Y - this._lastMouseY;
|
|
456
|
+
var prevDist = Math.sqrt(prevDX * prevDX + prevDY * prevDY) * 0.25;
|
|
457
|
+
var cY = (pos2.y + pos.y) * 0.125;
|
|
458
|
+
var prevCY = (this._lastTouch2Y + this._lastMouseY) * 0.125;
|
|
459
|
+
var angle = Math.atan2(dY, dX);
|
|
460
|
+
var prevAngle = Math.atan2(prevDY, prevDX);
|
|
461
|
+
movement = {
|
|
462
|
+
'distance' : {
|
|
463
|
+
startPosition : new Cartesian2(0, prevDist),
|
|
464
|
+
endPosition : new Cartesian2(0, dist),
|
|
465
|
+
motion : new Cartesian2(0.0, 0.0)
|
|
466
|
+
},
|
|
467
|
+
'angleAndHeight' : {
|
|
468
|
+
startPosition : new Cartesian2(prevAngle, prevCY),
|
|
469
|
+
endPosition : new Cartesian2(angle, cY),
|
|
470
|
+
motion : new Cartesian2(0.0, 0.0)
|
|
471
|
+
}
|
|
472
|
+
};
|
|
473
|
+
action(movement);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
this._lastMouseX = pos.x;
|
|
477
|
+
this._lastMouseY = pos.y;
|
|
478
|
+
this._lastTouch2X = pos2.x;
|
|
479
|
+
this._lastTouch2Y = pos2.y;
|
|
480
|
+
}
|
|
481
|
+
};
|
|
482
|
+
|
|
483
|
+
ScreenSpaceEventHandler.prototype._handleMouseWheel = function(event) {
|
|
484
|
+
// Some browsers use event.detail to count the number of clicks. The sign
|
|
485
|
+
// of the integer is the direction the wheel is scrolled. In that case, convert
|
|
486
|
+
// to the angle it was rotated in degrees.
|
|
487
|
+
var delta = event.detail ? event.detail * -120 : event.wheelDelta;
|
|
488
|
+
|
|
489
|
+
var modifier = this._getModifier(event);
|
|
490
|
+
var type = ScreenSpaceEventType.WHEEL;
|
|
491
|
+
var action = this.getInputAction(type, modifier);
|
|
492
|
+
|
|
493
|
+
if (action) {
|
|
494
|
+
event.preventDefault();
|
|
495
|
+
action(delta);
|
|
496
|
+
}
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
ScreenSpaceEventHandler.prototype._handleMouseDblClick = function(event) {
|
|
500
|
+
var modifier = this._getModifier(event);
|
|
501
|
+
var action;
|
|
502
|
+
var pos = this._getPosition(event);
|
|
503
|
+
|
|
504
|
+
// IE_TODO: On some versions of IE, the left-button is 1, and the right-button is 4.
|
|
505
|
+
// See: http://www.unixpapa.com/js/mouse.html
|
|
506
|
+
// This is not the case in Chrome Frame, so we are OK for now, but are there
|
|
507
|
+
// constants somewhere?
|
|
508
|
+
if (event.button === 0) {
|
|
509
|
+
action = this.getInputAction(ScreenSpaceEventType.LEFT_DOUBLE_CLICK, modifier);
|
|
510
|
+
} else if (event.button === 1) {
|
|
511
|
+
action = this.getInputAction(ScreenSpaceEventType.MIDDLE_DOUBLE_CLICK, modifier);
|
|
512
|
+
} else if (event.button === 2) {
|
|
513
|
+
action = this.getInputAction(ScreenSpaceEventType.RIGHT_DOUBLE_CLICK, modifier);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
if (action) {
|
|
517
|
+
action({
|
|
518
|
+
position : new Cartesian2(pos.x, pos.y)
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
|
|
523
|
+
ScreenSpaceEventHandler.prototype._register = function() {
|
|
524
|
+
var that = this, useDoc = true;
|
|
525
|
+
|
|
526
|
+
this._callbacks = [];
|
|
527
|
+
if (typeof this._element.disableRootEvents !== 'undefined') {
|
|
528
|
+
useDoc = false;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
this._callbacks.push({
|
|
532
|
+
name : 'mousedown',
|
|
533
|
+
onDoc : false,
|
|
534
|
+
action : function(e) {
|
|
535
|
+
that._handleMouseDown(e);
|
|
536
|
+
}
|
|
537
|
+
});
|
|
538
|
+
this._callbacks.push({
|
|
539
|
+
name : 'mouseup',
|
|
540
|
+
onDoc : useDoc,
|
|
541
|
+
action : function(e) {
|
|
542
|
+
that._handleMouseUp(e);
|
|
543
|
+
}
|
|
544
|
+
});
|
|
545
|
+
this._callbacks.push({
|
|
546
|
+
name : 'mousemove',
|
|
547
|
+
onDoc : useDoc,
|
|
548
|
+
action : function(e) {
|
|
549
|
+
that._handleMouseMove(e);
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
this._callbacks.push({
|
|
553
|
+
name : 'dblclick',
|
|
554
|
+
onDoc : false,
|
|
555
|
+
action : function(e) {
|
|
556
|
+
that._handleMouseDblClick(e);
|
|
557
|
+
}
|
|
558
|
+
});
|
|
559
|
+
this._callbacks.push({
|
|
560
|
+
name : 'touchstart',
|
|
561
|
+
onDoc : false,
|
|
562
|
+
action : function(e) {
|
|
563
|
+
that._handleTouchStart(e);
|
|
564
|
+
}
|
|
565
|
+
});
|
|
566
|
+
this._callbacks.push({
|
|
567
|
+
name : 'touchend',
|
|
568
|
+
onDoc : useDoc,
|
|
569
|
+
action : function(e) {
|
|
570
|
+
that._handleTouchEnd(e);
|
|
571
|
+
}
|
|
572
|
+
});
|
|
573
|
+
this._callbacks.push({
|
|
574
|
+
name : 'touchmove',
|
|
575
|
+
onDoc : useDoc,
|
|
576
|
+
action : function(e) {
|
|
577
|
+
that._handleTouchMove(e);
|
|
578
|
+
}
|
|
579
|
+
});
|
|
580
|
+
|
|
581
|
+
// Firefox calls the mouse wheel event 'DOMMouseScroll', all others use 'mousewheel'
|
|
582
|
+
this._callbacks.push({
|
|
583
|
+
name : 'mousewheel',
|
|
584
|
+
onDoc : false,
|
|
585
|
+
action : function(e) {
|
|
586
|
+
that._handleMouseWheel(e);
|
|
587
|
+
}
|
|
588
|
+
});
|
|
589
|
+
this._callbacks.push({
|
|
590
|
+
name : 'DOMMouseScroll',
|
|
591
|
+
onDoc : false,
|
|
592
|
+
action : function(e) {
|
|
593
|
+
that._handleMouseWheel(e);
|
|
594
|
+
}
|
|
595
|
+
});
|
|
596
|
+
|
|
597
|
+
for ( var i = 0; i < this._callbacks.length; i++) {
|
|
598
|
+
var cback = this._callbacks[i];
|
|
599
|
+
if (cback.onDoc) {
|
|
600
|
+
document.addEventListener(cback.name, cback.action, false);
|
|
601
|
+
} else {
|
|
602
|
+
this._element.addEventListener(cback.name, cback.action, false);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
};
|
|
606
|
+
|
|
607
|
+
ScreenSpaceEventHandler.prototype._unregister = function() {
|
|
608
|
+
for ( var i = 0; i < this._callbacks.length; i++) {
|
|
609
|
+
var cback = this._callbacks[i];
|
|
610
|
+
if (cback.onDoc) {
|
|
611
|
+
document.removeEventListener(cback.name, cback.action, false);
|
|
612
|
+
} else {
|
|
613
|
+
this._element.removeEventListener(cback.name, cback.action, false);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* Returns true if this object was destroyed; otherwise, false.
|
|
620
|
+
* <br /><br />
|
|
621
|
+
* If this object was destroyed, it should not be used; calling any function other than
|
|
622
|
+
* <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
|
|
623
|
+
*
|
|
624
|
+
* @memberof ScreenSpaceEventHandler
|
|
625
|
+
*
|
|
626
|
+
* @return {Boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
|
|
627
|
+
*
|
|
628
|
+
* @see ScreenSpaceEventHandler#destroy
|
|
629
|
+
*/
|
|
630
|
+
ScreenSpaceEventHandler.prototype.isDestroyed = function() {
|
|
631
|
+
return false;
|
|
632
|
+
};
|
|
633
|
+
|
|
634
|
+
/**
|
|
635
|
+
* Removes listeners held by this object.
|
|
636
|
+
* <br /><br />
|
|
637
|
+
* Once an object is destroyed, it should not be used; calling any function other than
|
|
638
|
+
* <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
|
|
639
|
+
* assign the return value (<code>undefined</code>) to the object as done in the example.
|
|
640
|
+
*
|
|
641
|
+
* @memberof ScreenSpaceEventHandler
|
|
642
|
+
*
|
|
643
|
+
* @return {undefined}
|
|
644
|
+
*
|
|
645
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
646
|
+
*
|
|
647
|
+
* @see ScreenSpaceEventHandler#isDestroyed
|
|
648
|
+
*
|
|
649
|
+
* @example
|
|
650
|
+
* handler = handler && handler.destroy();
|
|
651
|
+
*/
|
|
652
|
+
ScreenSpaceEventHandler.prototype.destroy = function() {
|
|
653
|
+
this._unregister();
|
|
654
|
+
return destroyObject(this);
|
|
655
|
+
};
|
|
656
|
+
|
|
657
|
+
return ScreenSpaceEventHandler;
|
|
658
|
+
});
|