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.
Files changed (491) hide show
  1. data/LICENSE.md +259 -0
  2. data/README.rdoc +90 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
  5. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  6. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  7. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  8. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  9. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  10. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  11. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  12. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  13. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  14. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  15. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  16. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  17. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  18. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  19. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  20. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  21. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  22. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  23. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  24. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  25. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  26. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  27. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  28. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  29. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  30. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  31. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  32. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  33. data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
  34. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  35. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  36. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  37. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  38. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  39. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  40. data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
  41. data/app/assets/javascripts/Assets/package.json +6 -0
  42. data/app/assets/javascripts/Cesium.js +320 -0
  43. data/app/assets/javascripts/Core/AnimationController.js +148 -0
  44. data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
  45. data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
  46. data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
  47. data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
  48. data/app/assets/javascripts/Core/Cartesian2.js +762 -0
  49. data/app/assets/javascripts/Core/Cartesian3.js +861 -0
  50. data/app/assets/javascripts/Core/Cartesian4.js +762 -0
  51. data/app/assets/javascripts/Core/Cartographic.js +211 -0
  52. data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
  53. data/app/assets/javascripts/Core/Clock.js +195 -0
  54. data/app/assets/javascripts/Core/ClockRange.js +37 -0
  55. data/app/assets/javascripts/Core/ClockStep.js +32 -0
  56. data/app/assets/javascripts/Core/Color.js +1629 -0
  57. data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
  58. data/app/assets/javascripts/Core/Core.profile.js +8 -0
  59. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
  60. data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
  61. data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
  62. data/app/assets/javascripts/Core/DeveloperError.js +60 -0
  63. data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
  64. data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
  65. data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
  66. data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
  67. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
  68. data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
  69. data/app/assets/javascripts/Core/Enumeration.js +67 -0
  70. data/app/assets/javascripts/Core/Event.js +122 -0
  71. data/app/assets/javascripts/Core/Extent.js +383 -0
  72. data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
  73. data/app/assets/javascripts/Core/FAR.js +13 -0
  74. data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
  75. data/app/assets/javascripts/Core/Fullscreen.js +235 -0
  76. data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
  77. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
  78. data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
  79. data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
  80. data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
  81. data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
  82. data/app/assets/javascripts/Core/Intersect.js +40 -0
  83. data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
  84. data/app/assets/javascripts/Core/Interval.js +27 -0
  85. data/app/assets/javascripts/Core/Iso8601.js +46 -0
  86. data/app/assets/javascripts/Core/JulianDate.js +1228 -0
  87. data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
  88. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
  89. data/app/assets/javascripts/Core/LeapSecond.js +158 -0
  90. data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
  91. data/app/assets/javascripts/Core/Math.js +532 -0
  92. data/app/assets/javascripts/Core/Matrix2.js +833 -0
  93. data/app/assets/javascripts/Core/Matrix3.js +1099 -0
  94. data/app/assets/javascripts/Core/Matrix4.js +2164 -0
  95. data/app/assets/javascripts/Core/MeshFilters.js +568 -0
  96. data/app/assets/javascripts/Core/Occluder.js +474 -0
  97. data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
  98. data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
  99. data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
  100. data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
  101. data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
  102. data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
  103. data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
  104. data/app/assets/javascripts/Core/Quaternion.js +947 -0
  105. data/app/assets/javascripts/Core/Queue.js +95 -0
  106. data/app/assets/javascripts/Core/Ray.js +64 -0
  107. data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
  108. data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
  109. data/app/assets/javascripts/Core/RuntimeError.js +59 -0
  110. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
  111. data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
  112. data/app/assets/javascripts/Core/Shapes.js +230 -0
  113. data/app/assets/javascripts/Core/Spherical.js +192 -0
  114. data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
  115. data/app/assets/javascripts/Core/TimeConstants.js +85 -0
  116. data/app/assets/javascripts/Core/TimeInterval.js +305 -0
  117. data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
  118. data/app/assets/javascripts/Core/TimeStandard.js +31 -0
  119. data/app/assets/javascripts/Core/Tipsify.js +285 -0
  120. data/app/assets/javascripts/Core/Transforms.js +614 -0
  121. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
  122. data/app/assets/javascripts/Core/Visibility.js +38 -0
  123. data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
  124. data/app/assets/javascripts/Core/WindingOrder.js +40 -0
  125. data/app/assets/javascripts/Core/binarySearch.js +69 -0
  126. data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
  127. data/app/assets/javascripts/Core/clone.js +21 -0
  128. data/app/assets/javascripts/Core/combine.js +81 -0
  129. data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
  130. data/app/assets/javascripts/Core/createGuid.js +25 -0
  131. data/app/assets/javascripts/Core/defaultValue.js +22 -0
  132. data/app/assets/javascripts/Core/destroyObject.js +61 -0
  133. data/app/assets/javascripts/Core/freezeObject.js +20 -0
  134. data/app/assets/javascripts/Core/getImagePixels.js +46 -0
  135. data/app/assets/javascripts/Core/isLeapYear.js +30 -0
  136. data/app/assets/javascripts/Core/jsonp.js +116 -0
  137. data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
  138. data/app/assets/javascripts/Core/loadImage.js +85 -0
  139. data/app/assets/javascripts/Core/loadJson.js +54 -0
  140. data/app/assets/javascripts/Core/loadText.js +78 -0
  141. data/app/assets/javascripts/Core/loadXML.js +76 -0
  142. data/app/assets/javascripts/Core/package.json +6 -0
  143. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
  144. data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
  145. data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
  146. data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
  147. data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
  148. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
  149. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
  150. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
  151. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
  152. data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
  153. data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
  154. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
  155. data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
  156. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
  157. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
  158. data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
  159. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
  160. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
  161. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
  162. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
  163. data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
  164. data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
  165. data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
  166. data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
  167. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
  168. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
  169. data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
  170. data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
  171. data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
  172. data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
  173. data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
  174. data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
  175. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
  176. data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
  177. data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
  178. data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
  179. data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
  180. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
  181. data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
  182. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
  183. data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
  184. data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
  185. data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
  186. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
  187. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
  188. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
  189. data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
  190. data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
  191. data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
  192. data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
  193. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
  194. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
  195. data/app/assets/javascripts/DynamicScene/package.json +6 -0
  196. data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
  197. data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
  198. data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
  199. data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
  200. data/app/assets/javascripts/Renderer/Buffer.js +141 -0
  201. data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
  202. data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
  203. data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
  204. data/app/assets/javascripts/Renderer/Context.js +2805 -0
  205. data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
  206. data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
  207. data/app/assets/javascripts/Renderer/CullFace.js +50 -0
  208. data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
  209. data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
  210. data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
  211. data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
  212. data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
  213. data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
  214. data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
  215. data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
  216. data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
  217. data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
  218. data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
  219. data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
  220. data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
  221. data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
  222. data/app/assets/javascripts/Renderer/Texture.js +395 -0
  223. data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
  224. data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
  225. data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
  226. data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
  227. data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
  228. data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
  229. data/app/assets/javascripts/Renderer/UniformState.js +799 -0
  230. data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
  231. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
  232. data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
  233. data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
  234. data/app/assets/javascripts/Renderer/package.json +6 -0
  235. data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
  236. data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
  237. data/app/assets/javascripts/Scene/Billboard.js +680 -0
  238. data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
  239. data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
  240. data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
  241. data/app/assets/javascripts/Scene/Camera.js +358 -0
  242. data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
  243. data/app/assets/javascripts/Scene/CameraController.js +1258 -0
  244. data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
  245. data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
  246. data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
  247. data/app/assets/javascripts/Scene/CentralBody.js +817 -0
  248. data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
  249. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
  250. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
  251. data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
  252. data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
  253. data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
  254. data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
  255. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
  256. data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
  257. data/app/assets/javascripts/Scene/FrameState.js +86 -0
  258. data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
  259. data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
  260. data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
  261. data/app/assets/javascripts/Scene/Imagery.js +85 -0
  262. data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
  263. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
  264. data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
  265. data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
  266. data/app/assets/javascripts/Scene/ImageryState.js +20 -0
  267. data/app/assets/javascripts/Scene/Label.js +706 -0
  268. data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
  269. data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
  270. data/app/assets/javascripts/Scene/Material.js +1177 -0
  271. data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
  272. data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
  273. data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
  274. data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
  275. data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
  276. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
  277. data/app/assets/javascripts/Scene/Polygon.js +886 -0
  278. data/app/assets/javascripts/Scene/Polyline.js +441 -0
  279. data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
  280. data/app/assets/javascripts/Scene/Projections.js +93 -0
  281. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
  282. data/app/assets/javascripts/Scene/Scene.js +632 -0
  283. data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
  284. data/app/assets/javascripts/Scene/SceneMode.js +51 -0
  285. data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
  286. data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
  287. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
  288. data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
  289. data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
  290. data/app/assets/javascripts/Scene/SkyBox.js +231 -0
  291. data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
  292. data/app/assets/javascripts/Scene/TexturePool.js +154 -0
  293. data/app/assets/javascripts/Scene/Tile.js +322 -0
  294. data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
  295. data/app/assets/javascripts/Scene/TileImagery.js +36 -0
  296. data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
  297. data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
  298. data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
  299. data/app/assets/javascripts/Scene/TileState.js +19 -0
  300. data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
  301. data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
  302. data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
  303. data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
  304. data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
  305. data/app/assets/javascripts/Scene/package.json +6 -0
  306. data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
  307. data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
  308. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
  309. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
  310. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
  311. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
  312. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
  313. data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
  314. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
  315. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
  316. data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
  317. data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
  318. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
  319. data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
  320. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
  321. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
  322. data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
  323. data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
  324. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
  325. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
  326. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
  327. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
  328. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
  329. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
  330. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
  331. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
  332. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
  333. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
  334. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
  335. data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
  336. data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
  337. data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
  338. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
  339. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
  340. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
  341. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
  342. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
  343. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
  344. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  345. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
  346. data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
  347. data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
  348. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
  349. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
  350. data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
  351. data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
  352. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
  353. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
  354. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
  355. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
  356. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
  357. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
  358. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
  359. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
  360. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  361. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
  362. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
  363. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
  364. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
  365. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
  366. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
  367. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
  368. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
  369. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
  370. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
  371. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
  372. data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
  373. data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
  374. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
  375. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
  376. data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
  377. data/app/assets/javascripts/Shaders/Noise.js +242 -0
  378. data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
  379. data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
  380. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
  381. data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
  382. data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
  383. data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
  384. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
  385. data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
  386. data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
  387. data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
  388. data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
  389. data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
  390. data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
  391. data/app/assets/javascripts/Shaders/Ray.js +357 -0
  392. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
  393. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
  394. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
  395. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
  396. data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
  397. data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
  398. data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
  399. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
  400. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
  401. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
  402. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
  403. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
  404. data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
  405. data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
  406. data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
  407. data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
  408. data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
  409. data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
  410. data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
  411. data/app/assets/javascripts/Shaders/package.json +6 -0
  412. data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
  413. data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
  414. data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
  415. data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
  416. data/app/assets/javascripts/ThirdParty/package.json +6 -0
  417. data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
  418. data/app/assets/javascripts/ThirdParty/when.js +748 -0
  419. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
  420. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
  421. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
  422. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
  423. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
  424. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
  425. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
  426. data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
  427. data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
  428. data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
  429. data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
  430. data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
  431. data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
  432. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  433. data/app/assets/javascripts/Widgets/Timeline.css +113 -0
  434. data/app/assets/javascripts/Widgets/Timeline.js +629 -0
  435. data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
  436. data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
  437. data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
  438. data/app/assets/javascripts/Widgets/package.json +6 -0
  439. data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
  440. data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
  441. data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
  442. data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
  443. data/app/assets/javascripts/Workers/package.json +6 -0
  444. data/app/assets/javascripts/copyrightHeader.js +22 -0
  445. data/app/assets/javascripts/main.js +10 -0
  446. data/app/assets/stylesheets/cesium.css +4 -0
  447. data/app/controllers/cesium_controller.rb +4 -0
  448. data/app/helpers/cesium_helper.rb +2 -0
  449. data/app/views/cesium/index.html.erb +3 -0
  450. data/config/routes.rb +3 -0
  451. data/lib/cesium.rb +4 -0
  452. data/lib/cesium/engine.rb +4 -0
  453. data/lib/cesium/version.rb +3 -0
  454. data/lib/tasks/cesium_tasks.rake +4 -0
  455. data/test/cesium_test.rb +7 -0
  456. data/test/dummy/README.rdoc +261 -0
  457. data/test/dummy/Rakefile +7 -0
  458. data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
  459. data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
  460. data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
  461. data/test/dummy/app/assets/stylesheets/application.css +12 -0
  462. data/test/dummy/app/controllers/application_controller.rb +4 -0
  463. data/test/dummy/app/helpers/application_helper.rb +2 -0
  464. data/test/dummy/app/views/layouts/application.html.erb +21 -0
  465. data/test/dummy/config.ru +4 -0
  466. data/test/dummy/config/application.rb +59 -0
  467. data/test/dummy/config/boot.rb +10 -0
  468. data/test/dummy/config/database.yml +25 -0
  469. data/test/dummy/config/environment.rb +5 -0
  470. data/test/dummy/config/environments/development.rb +37 -0
  471. data/test/dummy/config/environments/production.rb +67 -0
  472. data/test/dummy/config/environments/test.rb +37 -0
  473. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  474. data/test/dummy/config/initializers/inflections.rb +15 -0
  475. data/test/dummy/config/initializers/mime_types.rb +5 -0
  476. data/test/dummy/config/initializers/secret_token.rb +7 -0
  477. data/test/dummy/config/initializers/session_store.rb +8 -0
  478. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  479. data/test/dummy/config/locales/en.yml +5 -0
  480. data/test/dummy/config/requirejs.yml +10 -0
  481. data/test/dummy/config/routes.rb +3 -0
  482. data/test/dummy/public/404.html +26 -0
  483. data/test/dummy/public/422.html +26 -0
  484. data/test/dummy/public/500.html +25 -0
  485. data/test/dummy/public/favicon.ico +0 -0
  486. data/test/dummy/script/rails +6 -0
  487. data/test/functional/cesium_controller_test.rb +9 -0
  488. data/test/integration/navigation_test.rb +10 -0
  489. data/test/test_helper.rb +15 -0
  490. data/test/unit/helpers/cesium_helper_test.rb +4 -0
  491. metadata +641 -0
@@ -0,0 +1,42 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError'
4
+ ], function(
5
+ DeveloperError) {
6
+ "use strict";
7
+
8
+ /**
9
+ * A policy for discarding tile images according to some criteria. This type describes an
10
+ * interface and is not intended to be instantiated directly.
11
+ *
12
+ * @alias TileDiscardPolicy
13
+ * @constructor
14
+ *
15
+ * @see DiscardMissingTileImagePolicy
16
+ * @see NeverTileDiscardPolicy
17
+ */
18
+ var TileDiscardPolicy = function(description) {
19
+ throw new DeveloperError('This type should not be instantiated directly.');
20
+ };
21
+
22
+ /**
23
+ * Determines if the discard policy is ready to process images.
24
+ * @returns {Boolean} True if the discard policy is ready to process images; otherwise, false.
25
+ */
26
+ TileDiscardPolicy.prototype.isReady = function() {
27
+ throw new DeveloperError('This type should not be instantiated directly.');
28
+ };
29
+
30
+ /**
31
+ * Given a tile image, decide whether to discard that image.
32
+ *
33
+ * @param {Image|Promise} image An image, or a promise that will resolve to an image.
34
+ *
35
+ * @returns {Boolean} A promise that will resolve to true if the tile should be discarded.
36
+ */
37
+ TileDiscardPolicy.prototype.shouldDiscardImage = function(image) {
38
+ throw new DeveloperError('This type should not be instantiated directly.');
39
+ };
40
+
41
+ return TileDiscardPolicy;
42
+ });
@@ -0,0 +1,36 @@
1
+ /*global define*/
2
+ define(function() {
3
+ "use strict";
4
+
5
+ /**
6
+ * The assocation between a terrain tile and an imagery tile.
7
+ *
8
+ * @alias TileImagery
9
+ * @private
10
+ *
11
+ * @param {Imagery} imagery The imagery tile.
12
+ * @param {Cartesian4} textureCoordinateExtent The texture extent extent of the tile that is covered
13
+ * by the imagery, where X=west, Y=south, Z=east, W=north.
14
+ */
15
+ var TileImagery = function(imagery, textureCoordinateExtent) {
16
+ this.imagery = imagery;
17
+ this.textureCoordinateExtent = textureCoordinateExtent;
18
+ this.originalImagery = undefined;
19
+ this.textureTranslationAndScale = undefined;
20
+ };
21
+
22
+ /**
23
+ * Frees the resources held by this instance.
24
+ *
25
+ * @memberof TileImagery
26
+ */
27
+ TileImagery.prototype.freeResources = function() {
28
+ this.imagery.releaseReference();
29
+
30
+ if (typeof this.originalImagery !== 'undefined') {
31
+ this.originalImagery.releaseReference();
32
+ }
33
+ };
34
+
35
+ return TileImagery;
36
+ });
@@ -0,0 +1,123 @@
1
+ /*global define*/
2
+ define(function() {
3
+ "use strict";
4
+
5
+ /**
6
+ * A priority queue of tiles to be loaded, implemented as a linked list.
7
+ *
8
+ * @alias TileLoadQueue
9
+ * @private
10
+ */
11
+ var TileLoadQueue = function TileLoadQueue() {
12
+ this.head = undefined;
13
+ this.tail = undefined;
14
+ this._insertionPoint = undefined;
15
+ };
16
+
17
+ /**
18
+ * Removes a tile from the load queue.
19
+ *
20
+ * @memberof TileLoadQueue
21
+ *
22
+ * @param {Tile} item The tile to remove from the load queue.
23
+ */
24
+ TileLoadQueue.prototype.remove = function(item) {
25
+ var previous = item.loadPrevious;
26
+ var next = item.loadNext;
27
+
28
+ if (item === this.head) {
29
+ this.head = next;
30
+ } else {
31
+ previous.loadNext = next;
32
+ }
33
+
34
+ if (item === this.tail) {
35
+ this.tail = previous;
36
+ } else {
37
+ next.loadPrevious = previous;
38
+ }
39
+
40
+ item.loadPrevious = undefined;
41
+ item.loadNext = undefined;
42
+ };
43
+
44
+ /**
45
+ * Marks the point at which new tiles will be inserted into the queue, which is initially the
46
+ * head of the queue. As each new tile is added to or repositioned in the queue, the insertion
47
+ * point represents the first tile that was not added or repositioned this frame.
48
+ *
49
+ * @memberof TileLoadQueue
50
+ */
51
+ TileLoadQueue.prototype.markInsertionPoint = function() {
52
+ this._insertionPoint = this.head;
53
+ };
54
+
55
+ /**
56
+ * Inserts (or repositions) a tile to place it just before the insertion point.
57
+ *
58
+ * @memberof TileLoadQueue
59
+ *
60
+ * @param {Tile} item The tile to insert or reposition.
61
+ */
62
+ TileLoadQueue.prototype.insertBeforeInsertionPoint = function(item) {
63
+ var insertionPoint = this._insertionPoint;
64
+ if (insertionPoint === item) {
65
+ return;
66
+ }
67
+
68
+ if (typeof this.head === 'undefined') {
69
+ // no other tiles in the list
70
+ item.loadPrevious = undefined;
71
+ item.loadNext = undefined;
72
+ this.head = item;
73
+ this.tail = item;
74
+ return;
75
+ }
76
+
77
+ if (typeof item.loadPrevious !== 'undefined' || typeof item.loadNext !== 'undefined') {
78
+ // tile already in the list, remove from its current location
79
+ this.remove(item);
80
+ }
81
+
82
+ if (typeof insertionPoint === 'undefined') {
83
+ item.loadPrevious = this.tail;
84
+ item.loadNext = undefined;
85
+ this.tail.loadNext = item;
86
+ this.tail = item;
87
+ return;
88
+ }
89
+
90
+ var insertAfter = insertionPoint.loadPrevious;
91
+ item.loadPrevious = insertAfter;
92
+ if (typeof insertAfter !== 'undefined') {
93
+ insertAfter.loadNext = item;
94
+ }
95
+
96
+ item.loadNext = insertionPoint;
97
+ insertionPoint.loadPrevious = item;
98
+
99
+ if (insertionPoint === this.head) {
100
+ this.head = item;
101
+ }
102
+ };
103
+
104
+ /**
105
+ * Clears the queue, removing all tiles.
106
+ *
107
+ * @memberof TileLoadQueue
108
+ */
109
+ TileLoadQueue.prototype.clear = function() {
110
+ var item = this.head;
111
+ while (typeof item !== 'undefined') {
112
+ var next = item.loadNext;
113
+ item.loadNext = undefined;
114
+ item.loadPrevious = undefined;
115
+ item = next;
116
+ }
117
+ this.head = undefined;
118
+ this.tail = undefined;
119
+ this._insertionPoint = undefined;
120
+ };
121
+
122
+ return TileLoadQueue;
123
+ });
@@ -0,0 +1,337 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/Cartographic',
5
+ '../Core/DeveloperError',
6
+ '../Core/Event',
7
+ '../Core/loadXML',
8
+ '../Core/writeTextToCanvas',
9
+ '../Core/Extent',
10
+ './ImageryProvider',
11
+ './WebMercatorTilingScheme',
12
+ './GeographicTilingScheme'
13
+ ], function(
14
+ defaultValue,
15
+ Cartographic,
16
+ DeveloperError,
17
+ Event,
18
+ loadXML,
19
+ writeTextToCanvas,
20
+ Extent,
21
+ ImageryProvider,
22
+ WebMercatorTilingScheme,
23
+ GeographicTilingScheme) {
24
+ "use strict";
25
+
26
+ var trailingSlashRegex = /\/$/;
27
+
28
+ /**
29
+ * Provides tiled imagery as generated by <a href='http://www.maptiler.org/'>MapTiler</a> / <a href='http://www.klokan.cz/projects/gdal2tiles/'>GDDAL2Tiles</a> etc.
30
+ *
31
+ * @alias TileMapServiceImageryProvider
32
+ * @constructor
33
+ *
34
+ * @param {String} [description.url='.'] Path to image tiles on server.
35
+ * @param {String} [description.fileExtension='png'] The file extension for images on the server.
36
+ * @param {Object} [description.proxy] A proxy to use for requests. This object is expected to have a getURL function which returns the proxied URL.
37
+ * @param {String} [description.credit=''] A string crediting the data source, which is displayed on the canvas.
38
+ * @param {Number} [description.maximumLevel=18] The maximum level-of-detail supported by the imagery provider.
39
+ * @param {Extent} [description.extent=Extent.MAX_VALUE] The extent, in radians, covered by the image.
40
+ * @param {TilingScheme} [description.tilingScheme] The tiling scheme specifying how the ellipsoidal
41
+ * surface is broken into tiles. If this parameter is not provided, a {@link WebMercatorTilingScheme}
42
+ * is used.
43
+ * @param {Number} [description.tileWidth=256] Pixel width of image tiles.
44
+ * @param {Number} [description.tileHeight=256] Pixel height of image tiles.
45
+ *
46
+ * @see ArcGisMapServerImageryProvider
47
+ * @see BingMapsImageryProvider
48
+ * @see OpenStreetMapImageryProvider
49
+ * @see SingleTileImageryProvider
50
+ * @see WebMapServiceImageryProvider
51
+ *
52
+ * @see <a href='http://www.maptiler.org/'>MapTiler</a>
53
+ * @see <a href='http://www.klokan.cz/projects/gdal2tiles/'>GDDAL2Tiles</a>
54
+ * @see <a href='http://www.w3.org/TR/cors/'>Cross-Origin Resource Sharing</a>
55
+ *
56
+ * @example
57
+ * // TileMapService tile provider
58
+ * var tms = new TileMapServiceImageryProvider({
59
+ * url : '../images/cesium_maptiler/Cesium_Logo_Color',
60
+ * fileExtension: 'png',
61
+ * maximumLevel: 4,
62
+ * extent: new Cesium.Extent(
63
+ * Cesium.Math.toRadians(-120.0),
64
+ * Cesium.Math.toRadians(20.0),
65
+ * Cesium.Math.toRadians(-60.0),
66
+ * Cesium.Math.toRadians(40.0))
67
+ * });
68
+ */
69
+ var TileMapServiceImageryProvider = function TileMapServiceImageryProvider(description) {
70
+ description = defaultValue(description, {});
71
+
72
+ if (typeof description.url === 'undefined') {
73
+ throw new DeveloperError('description.url is required.');
74
+ }
75
+
76
+ var url = description.url;
77
+
78
+ if (!trailingSlashRegex.test(url)) {
79
+ url = url + '/';
80
+ }
81
+
82
+ this._url = url;
83
+ this._ready = false;
84
+
85
+ this._proxy = description.proxy;
86
+ this._tileDiscardPolicy = description.tileDiscardPolicy;
87
+
88
+ this._errorEvent = new Event();
89
+
90
+ var credit = description.credit;
91
+ if (typeof credit !== 'undefined') {
92
+ this._logo = writeTextToCanvas(credit, {
93
+ font : '12px sans-serif'
94
+ });
95
+ }
96
+
97
+ var that = this;
98
+
99
+ // Try to load remaing parameters from XML
100
+ loadXML(url + 'tilemapresource.xml').then(function(xml) {
101
+ // Allowing description properties to override XML values
102
+ var format = xml.getElementsByTagName('TileFormat')[0];
103
+ that._fileExtension = defaultValue(description.fileExtension, format.getAttribute('extension'));
104
+ that._tileWidth = defaultValue(description.tileWidth, parseInt(format.getAttribute('width'), 10));
105
+ that._tileHeight = defaultValue(description.tileHeight, parseInt(format.getAttribute('height'), 10));
106
+ var tilesets = xml.getElementsByTagName('TileSet');
107
+ that._maximumLevel = defaultValue(description.maximumLevel, parseInt(tilesets[tilesets.length - 1].getAttribute('order'), 10));
108
+
109
+ // extent handling
110
+ that._extent = description.extent;
111
+ if (typeof that._extent === 'undefined') {
112
+ var bbox = xml.getElementsByTagName('BoundingBox')[0];
113
+ var sw = Cartographic.fromDegrees(parseFloat(bbox.getAttribute('miny')), parseFloat(bbox.getAttribute('minx')));
114
+ var ne = Cartographic.fromDegrees(parseFloat(bbox.getAttribute('maxy')), parseFloat(bbox.getAttribute('maxx')));
115
+ that._extent = new Extent(sw.longitude, sw.latitude, ne.longitude, ne.latitude);
116
+ } else {
117
+ that._extent = that._extent.clone();
118
+ }
119
+
120
+ // tiling scheme handling
121
+ var tilingScheme = description.tilingScheme;
122
+ if (typeof tilingScheme === 'undefined') {
123
+ var tilingSchemeName = xml.getElementsByTagName('TileSets')[0].getAttribute('profile');
124
+ tilingScheme = tilingSchemeName === 'geodetic' ? new GeographicTilingScheme() : new WebMercatorTilingScheme();
125
+ }
126
+
127
+ // The extent must not be outside the bounds allowed by the tiling scheme.
128
+ if (that._extent.west < tilingScheme.getExtent().west) {
129
+ that._extent.west = tilingScheme.getExtent().west;
130
+ }
131
+ if (that._extent.east > tilingScheme.getExtent().east) {
132
+ that._extent.east = tilingScheme.getExtent().east;
133
+ }
134
+ if (that._extent.south < tilingScheme.getExtent().south) {
135
+ that._extent.south = tilingScheme.getExtent().south;
136
+ }
137
+ if (that._extent.north > tilingScheme.getExtent().north) {
138
+ that._extent.north = tilingScheme.getExtent().north;
139
+ }
140
+
141
+ that._tilingScheme = tilingScheme;
142
+ that._ready = true;
143
+ }, function(error) {
144
+ // Can't load XML, still allow description and defaults
145
+ that._fileExtension = defaultValue(description.fileExtension, 'png');
146
+ that._tileWidth = defaultValue(description.tileWidth, 256);
147
+ that._tileHeight = defaultValue(description.tileHeight, 256);
148
+ that._minimumLevel = defaultValue(description.minimumLevel, 0);
149
+ that._maximumLevel = defaultValue(description.maximumLevel, 18);
150
+ that._tilingScheme = defaultValue(description.tilingScheme, new WebMercatorTilingScheme());
151
+ that._extent = defaultValue(description.extent, that._tilingScheme.getExtent());
152
+ that._ready = true;
153
+ });
154
+
155
+ };
156
+
157
+ function buildImageUrl(imageryProvider, x, y, level) {
158
+ var yTiles = imageryProvider._tilingScheme.getNumberOfYTilesAtLevel(level);
159
+ var url = imageryProvider._url + level + '/' + x + '/' + (yTiles - y - 1) + '.' + imageryProvider._fileExtension;
160
+
161
+ var proxy = imageryProvider._proxy;
162
+ if (typeof proxy !== 'undefined') {
163
+ url = proxy.getURL(url);
164
+ }
165
+
166
+ return url;
167
+ }
168
+
169
+ /**
170
+ * Gets the URL of the service hosting the imagery.
171
+ *
172
+ * @memberof TileMapServiceImageryProvider
173
+ *
174
+ * @returns {String} The URL.
175
+ */
176
+ TileMapServiceImageryProvider.prototype.getUrl = function() {
177
+ return this._url;
178
+ };
179
+
180
+ /**
181
+ * Gets the width of each tile, in pixels. This function should
182
+ * not be called before {@link TileMapServiceImageryProvider#isReady} returns true.
183
+ *
184
+ * @memberof TileMapServiceImageryProvider
185
+ *
186
+ * @returns {Number} The width.
187
+ */
188
+ TileMapServiceImageryProvider.prototype.getTileWidth = function() {
189
+ if (!this._ready) {
190
+ throw new DeveloperError('getTileWidth must not be called before the imagery provider is ready.');
191
+ }
192
+ return this._tileWidth;
193
+ };
194
+
195
+ /**
196
+ * Gets the height of each tile, in pixels. This function should
197
+ * not be called before {@link TileMapServiceImageryProvider#isReady} returns true.
198
+ *
199
+ * @memberof TileMapServiceImageryProvider
200
+ *
201
+ * @returns {Number} The height.
202
+ */
203
+ TileMapServiceImageryProvider.prototype.getTileHeight = function() {
204
+ if (!this._ready) {
205
+ throw new DeveloperError('getTileHeight must not be called before the imagery provider is ready.');
206
+ }
207
+ return this._tileHeight;
208
+ };
209
+
210
+ /**
211
+ * Gets the maximum level-of-detail that can be requested. This function should
212
+ * not be called before {@link TileMapServiceImageryProvider#isReady} returns true.
213
+ *
214
+ * @memberof TileMapServiceImageryProvider
215
+ *
216
+ * @returns {Number} The maximum level.
217
+ */
218
+ TileMapServiceImageryProvider.prototype.getMaximumLevel = function() {
219
+ if (!this._ready) {
220
+ throw new DeveloperError('getMaximumLevel must not be called before the imagery provider is ready.');
221
+ }
222
+ return this._maximumLevel;
223
+ };
224
+
225
+ /**
226
+ * Gets the tiling scheme used by this provider. This function should
227
+ * not be called before {@link TileMapServiceImageryProvider#isReady} returns true.
228
+ *
229
+ * @memberof TileMapServiceImageryProvider
230
+ *
231
+ * @returns {TilingScheme} The tiling scheme.
232
+ * @see WebMercatorTilingScheme
233
+ * @see GeographicTilingScheme
234
+ */
235
+ TileMapServiceImageryProvider.prototype.getTilingScheme = function() {
236
+ if (!this._ready) {
237
+ throw new DeveloperError('getTilingScheme must not be called before the imagery provider is ready.');
238
+ }
239
+ return this._tilingScheme;
240
+ };
241
+
242
+ /**
243
+ * Gets the extent, in radians, of the imagery provided by this instance. This function should
244
+ * not be called before {@link TileMapServiceImageryProvider#isReady} returns true.
245
+ *
246
+ * @memberof TileMapServiceImageryProvider
247
+ *
248
+ * @returns {Extent} The extent.
249
+ */
250
+ TileMapServiceImageryProvider.prototype.getExtent = function() {
251
+ if (!this._ready) {
252
+ throw new DeveloperError('getExtent must not be called before the imagery provider is ready.');
253
+ }
254
+ return this._extent;
255
+ };
256
+
257
+ /**
258
+ * Gets the tile discard policy. If not undefined, the discard policy is responsible
259
+ * for filtering out "missing" tiles via its shouldDiscardImage function. If this function
260
+ * returns undefined, no tiles are filtered. This function should
261
+ * not be called before {@link TileMapServiceImageryProvider#isReady} returns true.
262
+ *
263
+ * @memberof TileMapServiceImageryProvider
264
+ *
265
+ * @returns {TileDiscardPolicy} The discard policy.
266
+ *
267
+ * @see DiscardMissingTileImagePolicy
268
+ * @see NeverTileDiscardPolicy
269
+ */
270
+ TileMapServiceImageryProvider.prototype.getTileDiscardPolicy = function() {
271
+ if (!this._ready) {
272
+ throw new DeveloperError('getTileDiscardPolicy must not be called before the imagery provider is ready.');
273
+ }
274
+ return this._tileDiscardPolicy;
275
+ };
276
+
277
+ /**
278
+ * Gets an event that is raised when the imagery provider encounters an asynchronous error. By subscribing
279
+ * to the event, you will be notified of the error and can potentially recover from it. Event listeners
280
+ * are passed an instance of {@link ImageryProviderError}.
281
+ *
282
+ * @memberof TileMapServiceImageryProvider
283
+ *
284
+ * @returns {Event} The event.
285
+ */
286
+ TileMapServiceImageryProvider.prototype.getErrorEvent = function() {
287
+ return this._errorEvent;
288
+ };
289
+
290
+ /**
291
+ * Gets a value indicating whether or not the provider is ready for use.
292
+ *
293
+ * @memberof TileMapServiceImageryProvider
294
+ *
295
+ * @returns {Boolean} True if the provider is ready to use; otherwise, false.
296
+ */
297
+ TileMapServiceImageryProvider.prototype.isReady = function() {
298
+ return this._ready;
299
+ };
300
+
301
+ /**
302
+ * Requests the image for a given tile. This function should
303
+ * not be called before {@link TileMapServiceImageryProvider#isReady} returns true.
304
+ *
305
+ * @memberof TileMapServiceImageryProvider
306
+ *
307
+ * @param {Number} x The tile X coordinate.
308
+ * @param {Number} y The tile Y coordinate.
309
+ * @param {Number} level The tile level.
310
+ *
311
+ * @returns {Promise} A promise for the image that will resolve when the image is available, or
312
+ * undefined if there are too many active requests to the server, and the request
313
+ * should be retried later. The resolved image may be either an
314
+ * Image or a Canvas DOM object.
315
+ */
316
+ TileMapServiceImageryProvider.prototype.requestImage = function(x, y, level) {
317
+ if (!this._ready) {
318
+ throw new DeveloperError('requestImage must not be called before the imagery provider is ready.');
319
+ }
320
+ var url = buildImageUrl(this, x, y, level);
321
+ return ImageryProvider.loadImage(url);
322
+ };
323
+
324
+ /**
325
+ * Gets the logo to display when this imagery provider is active. Typically this is used to credit
326
+ * the source of the imagery. This function should not be called before {@link TileMapServiceImageryProvider#isReady} returns true.
327
+ *
328
+ * @memberof TileMapServiceImageryProvider
329
+ *
330
+ * @returns {Image|Canvas} A canvas or image containing the log to display, or undefined if there is no logo.
331
+ */
332
+ TileMapServiceImageryProvider.prototype.getLogo = function() {
333
+ return this._logo;
334
+ };
335
+
336
+ return TileMapServiceImageryProvider;
337
+ });