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,49 @@
1
+ /*global define*/
2
+ define(['../Core/Enumeration'], function(Enumeration) {
3
+ "use strict";
4
+
5
+ /**
6
+ * Determines if vertex attributes are interleaved in a single vertex buffer or if each attribute is stored in a separate vertex buffer.
7
+ *
8
+ * @exports VertexLayout
9
+ *
10
+ * @see Context#createVertexArrayFromMesh
11
+ */
12
+ var VertexLayout = {
13
+ /**
14
+ * Each attribute will be stored in a separate vertex buffer. This can be slightly slower
15
+ * than using a single interleaved vertex buffer, but it is more flexible; more easily allowing
16
+ * the sharing of vertex buffers among vertex arrays. It also requires much less initial CPU
17
+ * processing than interleaving.
18
+ *
19
+ * @constant
20
+ * @type {Enumeration}
21
+ */
22
+ SEPARATE : new Enumeration(0, 'SEPARATE'),
23
+ /**
24
+ * Each attribute will be interleaved in a single vertex buffer. This can have a slight
25
+ * performance advantage over using a separate vertex buffer per attribute, but it requires
26
+ * extra CPU processing to initially interleave the vertex data. This is recommended for
27
+ * static data that will be rendered over several frames.
28
+ *
29
+ * @constant
30
+ * @type {Enumeration}
31
+ */
32
+ INTERLEAVED : new Enumeration(1, 'INTERLEAVED'),
33
+
34
+ /**
35
+ * DOC_TBA
36
+ *
37
+ * @param vertexLayout
38
+ *
39
+ * @returns {Boolean}
40
+ */
41
+ validate : function(vertexLayout) {
42
+ return ((vertexLayout === VertexLayout.SEPARATE) ||
43
+ (vertexLayout === VertexLayout.INTERLEAVED));
44
+ }
45
+
46
+ };
47
+
48
+ return VertexLayout;
49
+ });
@@ -0,0 +1,92 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/loadImage',
6
+ '../ThirdParty/when'
7
+ ], function(
8
+ defaultValue,
9
+ DeveloperError,
10
+ loadImage,
11
+ when) {
12
+ "use strict";
13
+
14
+ /**
15
+ * Asynchronously loads six images and creates a cube map. Returns a promise that
16
+ * will resolve to a {@link CubeMap} once loaded, or reject if any image fails to load.
17
+ *
18
+ * @exports loadCubeMap
19
+ *
20
+ * @param {Context} context The context to use to create the cube map.
21
+ * @param {Object} urls The source of each image, or a promise for each URL. See the example below.
22
+ * @param {Boolean} [crossOrigin=true] Whether to request images using Cross-Origin
23
+ * Resource Sharing (CORS). Data URIs are never requested using CORS.
24
+ *
25
+ * @returns {Promise} a promise that will resolve to the requested {@link CubeMap} when loaded.
26
+ *
27
+ * @exception {DeveloperError} context is required.
28
+ * @exception {DeveloperError} urls is required and must have positiveX, negativeX, positiveY, negativeY, positiveZ, and negativeZ properties.
29
+ *
30
+ * @example
31
+ * loadCubeMap(context, {
32
+ * positiveX : 'skybox_px.png',
33
+ * negativeX : 'skybox_nx.png',
34
+ * positiveY : 'skybox_py.png',
35
+ * negativeY : 'skybox_ny.png',
36
+ * positiveZ : 'skybox_pz.png',
37
+ * negativeZ : 'skybox_nz.png'
38
+ * }).then(function(cubeMap) {
39
+ * // use the cubemap
40
+ * }, function() {
41
+ * // an error occurred
42
+ * });
43
+ *
44
+ * @see <a href='http://www.w3.org/TR/cors/'>Cross-Origin Resource Sharing</a>
45
+ * @see <a href='http://wiki.commonjs.org/wiki/Promises/A'>CommonJS Promises/A</a>
46
+ */
47
+ var loadCubeMap = function(context, urls, crossOrigin) {
48
+ if (typeof context === 'undefined') {
49
+ throw new DeveloperError('context is required.');
50
+ }
51
+
52
+ if ((typeof urls === 'undefined') ||
53
+ (typeof urls.positiveX === 'undefined') ||
54
+ (typeof urls.negativeX === 'undefined') ||
55
+ (typeof urls.positiveY === 'undefined') ||
56
+ (typeof urls.negativeY === 'undefined') ||
57
+ (typeof urls.positiveZ === 'undefined') ||
58
+ (typeof urls.negativeZ === 'undefined')) {
59
+ throw new DeveloperError('urls is required and must have positiveX, negativeX, positiveY, negativeY, positiveZ, and negativeZ properties.');
60
+ }
61
+
62
+ // PERFORMANCE_IDEA: Given the size of some cube maps, we should consider tiling them, which
63
+ // would prevent hiccups when uploading, for example, six 4096x4096 textures to the GPU.
64
+ //
65
+ // Also, it is perhaps acceptable to use the context here in the callbacks, but
66
+ // ideally, we would do it in the primitive's update function.
67
+
68
+ var facePromises = [
69
+ loadImage(urls.positiveX, crossOrigin),
70
+ loadImage(urls.negativeX, crossOrigin),
71
+ loadImage(urls.positiveY, crossOrigin),
72
+ loadImage(urls.negativeY, crossOrigin),
73
+ loadImage(urls.positiveZ, crossOrigin),
74
+ loadImage(urls.negativeZ, crossOrigin)
75
+ ];
76
+
77
+ return when.all(facePromises, function(images) {
78
+ return context.createCubeMap({
79
+ source : {
80
+ positiveX : images[0],
81
+ negativeX : images[1],
82
+ positiveY : images[2],
83
+ negativeY : images[3],
84
+ positiveZ : images[4],
85
+ negativeZ : images[5]
86
+ }
87
+ });
88
+ });
89
+ };
90
+
91
+ return loadCubeMap;
92
+ });
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "Renderer",
3
+ "description": "Cesium Renderer",
4
+ "version": "0.6.0",
5
+ "dojoBuild": "Renderer.profile.js"
6
+ }
@@ -0,0 +1,249 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/clone',
5
+ '../ThirdParty/Tween'
6
+ ], function(
7
+ DeveloperError,
8
+ clone,
9
+ Tween) {
10
+ "use strict";
11
+
12
+ /**
13
+ * DOC_TBA
14
+ *
15
+ * @alias AnimationCollection
16
+ * @constructor
17
+ */
18
+ var AnimationCollection = function() {
19
+ };
20
+
21
+ /**
22
+ * DOC_TBA
23
+ * @memberof AnimationCollection
24
+ *
25
+ * @exception {DeveloperError} duration is required.
26
+ */
27
+ AnimationCollection.prototype.add = function(template) {
28
+ var t = template || {};
29
+
30
+ if (typeof t.duration === 'undefined') {
31
+ throw new DeveloperError('duration is required.');
32
+ }
33
+
34
+ t.delayDuration = (typeof t.delayDuration === 'undefined') ? 0 : t.delayDuration;
35
+ t.easingFunction = (typeof t.easingFunction === 'undefined') ? Tween.Easing.Linear.None : t.easingFunction;
36
+
37
+ var value = clone(t.startValue);
38
+ var tween = new Tween.Tween(value);
39
+ tween.to(t.stopValue, t.duration);
40
+ tween.delay(t.delayDuration);
41
+ tween.easing(t.easingFunction);
42
+ if (t.onUpdate) {
43
+ tween.onUpdate(function() {
44
+ t.onUpdate(value);
45
+ });
46
+ }
47
+ tween.onComplete(t.onComplete || null);
48
+ tween.start();
49
+
50
+ return {
51
+ _tween : tween
52
+ };
53
+ };
54
+
55
+ /**
56
+ * DOC_TBA
57
+ * @memberof AnimationCollection
58
+ *
59
+ * @exception {DeveloperError} material is required.
60
+ * @exception {DeveloperError} material has no properties with alpha components.
61
+ */
62
+ AnimationCollection.prototype.addAlpha = function(material, start, stop, template) {
63
+ if (typeof material === 'undefined') {
64
+ throw new DeveloperError('material is required.');
65
+ }
66
+
67
+ var properties = [];
68
+
69
+ for ( var property in material.uniforms) {
70
+ if (material.uniforms.hasOwnProperty(property) &&
71
+ typeof material.uniforms[property] !== 'undefined' &&
72
+ typeof material.uniforms[property].alpha !== 'undefined') {
73
+ properties.push(property);
74
+ }
75
+ }
76
+
77
+ if (properties.length === 0) {
78
+ throw new DeveloperError('material has no properties with alpha components.');
79
+ }
80
+
81
+ // Default to fade in
82
+ start = (typeof start === 'undefined') ? 0.0 : start;
83
+ stop = (typeof stop === 'undefined') ? 1.0 : stop;
84
+
85
+ var t = template || {};
86
+ t.duration = (typeof t.duration === 'undefined') ? 3000 : t.duration;
87
+ t.delayDuration = (typeof t.delayDuration === 'undefined') ? 0 : t.delayDuration;
88
+ t.easingFunction = (typeof t.easingFunction === 'undefined') ? Tween.Easing.Linear.None : t.easingFunction;
89
+
90
+ var value = {
91
+ alpha : start
92
+ };
93
+ var tween = new Tween.Tween(value);
94
+ tween.to({
95
+ alpha : stop
96
+ }, t.duration);
97
+ tween.delay(t.delayDuration);
98
+ tween.easing(t.easingFunction);
99
+ tween.onUpdate(function() {
100
+ var length = properties.length;
101
+ for ( var i = 0; i < length; ++i) {
102
+ material.uniforms[properties[i]].alpha = value.alpha;
103
+ }
104
+ });
105
+ tween.onComplete(t.onComplete || null);
106
+ tween.start();
107
+
108
+ return {
109
+ _tween : tween
110
+ };
111
+ };
112
+
113
+ /**
114
+ * DOC_TBA
115
+ * @memberof AnimationCollection
116
+ *
117
+ * @exception {DeveloperError} object is required.
118
+ * @exception {DeveloperError} property is required.
119
+ * @exception {DeveloperError} pbject must have the specified property.
120
+ */
121
+ AnimationCollection.prototype.addProperty = function(object, property, start, stop, template) {
122
+ if (typeof object === 'undefined') {
123
+ throw new DeveloperError('object is required.');
124
+ }
125
+
126
+ if (typeof property === 'undefined') {
127
+ throw new DeveloperError('property is required.');
128
+ }
129
+
130
+ if (typeof object[property] === 'undefined') {
131
+ throw new DeveloperError('object must have the specified property.');
132
+ }
133
+
134
+ var t = template || {};
135
+ t.duration = (typeof t.duration === 'undefined') ? 3000 : t.duration;
136
+ t.delayDuration = (typeof t.delayDuration === 'undefined') ? 0 : t.delayDuration;
137
+ t.easingFunction = (typeof t.easingFunction === 'undefined') ? Tween.Easing.Linear.None : t.easingFunction;
138
+
139
+ var value = {
140
+ value : start
141
+ };
142
+ var tween = new Tween.Tween(value);
143
+ tween.to({
144
+ value : stop
145
+ }, t.duration);
146
+ tween.delay(t.delayDuration);
147
+ tween.easing(t.easingFunction);
148
+ tween.onUpdate(function() {
149
+ object[property] = value.value;
150
+ });
151
+ tween.onComplete(t.onComplete || null);
152
+ tween.start();
153
+
154
+ return {
155
+ _tween : tween
156
+ };
157
+ };
158
+
159
+ /**
160
+ * DOC_TBA
161
+ * @memberof AnimationCollection
162
+ *
163
+ * @exception {DeveloperError} material is required.
164
+ * @exception {DeveloperError} material must have an offset property.
165
+ */
166
+ AnimationCollection.prototype.addOffsetIncrement = function(material, template) {
167
+ if (typeof material === 'undefined') {
168
+ throw new DeveloperError('material is required.');
169
+ }
170
+
171
+ if (typeof material.uniforms.offset === 'undefined') {
172
+ throw new DeveloperError('material must have an offset property.');
173
+ }
174
+
175
+ var t = template || {};
176
+ t.duration = (typeof t.duration === 'undefined') ? 3000 : t.duration;
177
+ t.delayDuration = (typeof t.delayDuration === 'undefined') ? 0 : t.delayDuration;
178
+ t.easingFunction = (typeof t.easingFunction === 'undefined') ? Tween.Easing.Linear.None : t.easingFunction;
179
+
180
+ var value = {
181
+ offset : material.uniforms.offset
182
+ };
183
+ var tween = new Tween.Tween(value);
184
+ tween.to({
185
+ offset : material.uniforms.offset + 1.0
186
+ }, t.duration);
187
+ tween.delay(t.delayDuration);
188
+ tween.easing(t.easingFunction);
189
+ tween.onUpdate(function() {
190
+ material.uniforms.offset = value.offset;
191
+ });
192
+ // t.onComplete is ignored.
193
+ tween.onComplete(function() {
194
+ tween.to({
195
+ offset : material.uniforms.offset + 1.0
196
+ }, t.duration);
197
+ tween.start();
198
+ });
199
+ tween.start();
200
+
201
+ return {
202
+ _tween : tween
203
+ };
204
+ };
205
+
206
+ /**
207
+ * DOC_TBA
208
+ * @memberof AnimationCollection
209
+ */
210
+ AnimationCollection.prototype.remove = function(animation) {
211
+ if (typeof animation !== 'undefined') {
212
+ var count = Tween.getAll().length;
213
+ Tween.remove(animation._tween);
214
+
215
+ return Tween.getAll().length === (count - 1);
216
+ }
217
+
218
+ return false;
219
+ };
220
+
221
+ /**
222
+ * DOC_TBA
223
+ * @memberof AnimationCollection
224
+ */
225
+ AnimationCollection.prototype.removeAll = function() {
226
+ Tween.removeAll();
227
+ };
228
+
229
+ /**
230
+ * DOC_TBA
231
+ * @memberof Animationcollection
232
+ */
233
+ AnimationCollection.prototype.contains = function(animation) {
234
+ if (typeof animation !== 'undefined') {
235
+ return Tween.getAll().indexOf(animation._tween) !== -1;
236
+ }
237
+ return false;
238
+ };
239
+
240
+ /**
241
+ * DOC_TBA
242
+ * @memberof AnimationCollection
243
+ */
244
+ AnimationCollection.prototype.update = function() {
245
+ Tween.update();
246
+ };
247
+
248
+ return AnimationCollection;
249
+ });
@@ -0,0 +1,384 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/jsonp',
5
+ '../Core/writeTextToCanvas',
6
+ '../Core/Cartesian2',
7
+ '../Core/DeveloperError',
8
+ '../Core/Event',
9
+ '../Core/RuntimeError',
10
+ './DiscardMissingTileImagePolicy',
11
+ './GeographicTilingScheme',
12
+ './ImageryProvider',
13
+ './ImageryProviderError',
14
+ './WebMercatorTilingScheme',
15
+ '../ThirdParty/when'
16
+ ], function(
17
+ defaultValue,
18
+ jsonp,
19
+ writeTextToCanvas,
20
+ Cartesian2,
21
+ DeveloperError,
22
+ Event,
23
+ RuntimeError,
24
+ DiscardMissingTileImagePolicy,
25
+ GeographicTilingScheme,
26
+ ImageryProvider,
27
+ ImageryProviderError,
28
+ WebMercatorTilingScheme,
29
+ when) {
30
+ "use strict";
31
+
32
+ /**
33
+ * Provides tiled imagery hosted by an ArcGIS MapServer. By default, the server's pre-cached tiles are
34
+ * used, if available.
35
+ *
36
+ * @alias ArcGisMapServerImageryProvider
37
+ * @constructor
38
+ *
39
+ * @param {String} description.url The URL of the ArcGIS MapServer service.
40
+ * @param {TileDiscardPolicy} [description.tileDiscardPolicy] The policy that determines if a tile
41
+ * is invalid and should be discarded. If this value is not specified, a default
42
+ * {@link DiscardMissingTileImagePolicy} is used for tiled map servers, and a
43
+ * {@link NeverTileDiscardPolicy} is used for non-tiled map servers. In the former case,
44
+ * we request tile 0,0 at the maximum tile level and check pixels (0,0), (200,20), (20,200),
45
+ * (80,110), and (160, 130). If all of these pixels are transparent, the discard check is
46
+ * disabled and no tiles are discarded. If any of them have a non-transparent color, any
47
+ * tile that has the same values in these pixel locations is discarded. The end result of
48
+ * these defaults should be correct tile discarding for a standard ArcGIS Server. To ensure
49
+ * that no tiles are discarded, construct and pass a {@link NeverTileDiscardPolicy} for this
50
+ * parameter.
51
+ * @param {Proxy} [description.proxy] A proxy to use for requests. This object is
52
+ * expected to have a getURL function which returns the proxied URL, if needed.
53
+ * @param {Boolean} [description.usePreCachedTilesIfAvailable=true] If true, the server's pre-cached
54
+ * tiles are used if they are available. If false, any pre-cached tiles are ignored and the
55
+ * 'export' service is used.
56
+ *
57
+ * @exception {DeveloperError} <code>description.url</code> is required.
58
+ *
59
+ * @see BingMapsImageryProvider
60
+ * @see OpenStreetMapImageryProvider
61
+ * @see SingleTileImageryProvider
62
+ * @see TileMapServiceImageryProvider
63
+ * @see WebMapServiceImageryProvider
64
+ *
65
+ * @see <a href='http://resources.esri.com/help/9.3/arcgisserver/apis/rest/'>ArcGIS Server REST API</a>
66
+ * @see <a href='http://www.w3.org/TR/cors/'>Cross-Origin Resource Sharing</a>
67
+ *
68
+ * @example
69
+ * var esri = new ArcGisMapServerImageryProvider({
70
+ * url: 'http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'
71
+ * });
72
+ */
73
+ var ArcGisMapServerImageryProvider = function ArcGisMapServerImageryProvider(description) {
74
+ description = defaultValue(description, {});
75
+
76
+ if (typeof description.url === 'undefined') {
77
+ throw new DeveloperError('description.url is required.');
78
+ }
79
+
80
+ this._url = description.url;
81
+ this._tileDiscardPolicy = description.tileDiscardPolicy;
82
+ this._proxy = description.proxy;
83
+
84
+ this._tileWidth = undefined;
85
+ this._tileHeight = undefined;
86
+ this._maximumLevel = undefined;
87
+ this._tilingScheme = undefined;
88
+ this._logo = undefined;
89
+ this._useTiles = defaultValue(description.usePreCachedTilesIfAvailable, true);
90
+
91
+ this._errorEvent = new Event();
92
+
93
+ this._ready = false;
94
+
95
+ // Grab the details of this MapServer.
96
+ var that = this;
97
+ var metadataError;
98
+
99
+ function metadataSuccess(data) {
100
+ var tileInfo = data.tileInfo;
101
+ if (!that._useTiles || typeof tileInfo === 'undefined') {
102
+ that._tileWidth = 256;
103
+ that._tileHeight = 256;
104
+ that._tilingScheme = new GeographicTilingScheme();
105
+ that._useTiles = false;
106
+ } else {
107
+ that._tileWidth = tileInfo.rows;
108
+ that._tileHeight = tileInfo.cols;
109
+
110
+ if (tileInfo.spatialReference.wkid === 102100) {
111
+ that._tilingScheme = new WebMercatorTilingScheme();
112
+ } else if (data.tileInfo.spatialReference.wkid === 4326) {
113
+ that._tilingScheme = new GeographicTilingScheme();
114
+ } else {
115
+ var message = 'Tile spatial reference WKID ' + data.tileInfo.spatialReference.wkid + ' is not supported.';
116
+ metadataError = ImageryProviderError.handleError(metadataError, that, that._errorEvent, message, undefined, undefined, undefined, requestMetadata);
117
+ return;
118
+ }
119
+ that._maximumLevel = data.tileInfo.lods.length - 1;
120
+
121
+ // Install the default tile discard policy if none has been supplied.
122
+ if (typeof that._tileDiscardPolicy === 'undefined') {
123
+ that._tileDiscardPolicy = new DiscardMissingTileImagePolicy({
124
+ missingImageUrl : buildImageUrl(that, 0, 0, that._maximumLevel),
125
+ pixelsToCheck : [new Cartesian2(0, 0), new Cartesian2(200, 20), new Cartesian2(20, 200), new Cartesian2(80, 110), new Cartesian2(160, 130)],
126
+ disableCheckIfAllPixelsAreTransparent : true
127
+ });
128
+ }
129
+
130
+ that._useTiles = true;
131
+ }
132
+
133
+ if (typeof data.copyrightText !== 'undefined' && data.copyrightText.length > 0) {
134
+ that._logo = writeTextToCanvas(data.copyrightText, {
135
+ font : '12px sans-serif'
136
+ });
137
+ }
138
+
139
+ that._ready = true;
140
+ ImageryProviderError.handleSuccess(metadataError);
141
+ }
142
+
143
+ function metadataFailure(e) {
144
+ var message = 'An error occurred while accessing ' + that._url + '.';
145
+ metadataError = ImageryProviderError.handleError(metadataError, that, that._errorEvent, message, undefined, undefined, undefined, requestMetadata);
146
+ }
147
+
148
+ function requestMetadata() {
149
+ var metadata = jsonp(that._url, {
150
+ parameters : {
151
+ f : 'json'
152
+ },
153
+ proxy : that._proxy
154
+ });
155
+ when(metadata, metadataSuccess, metadataFailure);
156
+ }
157
+
158
+ requestMetadata();
159
+ };
160
+
161
+ function buildImageUrl(imageryProvider, x, y, level) {
162
+ var url;
163
+ if (imageryProvider._useTiles) {
164
+ url = imageryProvider._url + '/tile/' + level + '/' + y + '/' + x;
165
+ } else {
166
+ var nativeExtent = imageryProvider._tilingScheme.tileXYToNativeExtent(x, y, level);
167
+ var bbox = nativeExtent.west + '%2C' + nativeExtent.south + '%2C' + nativeExtent.east + '%2C' + nativeExtent.north;
168
+
169
+ url = imageryProvider._url + '/export?';
170
+ url += 'bbox=' + bbox;
171
+ url += '&bboxSR=4326&size=256%2C256&imageSR=4326&format=png&transparent=true&f=image';
172
+ }
173
+
174
+ var proxy = imageryProvider._proxy;
175
+ if (typeof proxy !== 'undefined') {
176
+ url = proxy.getURL(url);
177
+ }
178
+
179
+ return url;
180
+ }
181
+
182
+ /**
183
+ * Gets a value indicating whether this imagery provider is using pre-cached tiles from the
184
+ * ArcGIS MapServer. If the imagery provider is not yet ready ({@link ArcGisMapServerImageryProvider#isReady}), this function
185
+ * will return the value of `description.usePreCachedTilesIfAvailable`, even if the MapServer does
186
+ * not have pre-cached tiles.
187
+ *
188
+ * @memberof ArcGisMapServerImageryProvider
189
+ *
190
+ * @returns {Boolean} true if this imagery provider is using pre-cached tiles from the ArcGIS MapServer;
191
+ * otherwise, false.
192
+ */
193
+ ArcGisMapServerImageryProvider.prototype.isUsingPrecachedTiles = function() {
194
+ return this._useTiles;
195
+ };
196
+
197
+ /**
198
+ * Gets the URL of the ArcGIS MapServer.
199
+ *
200
+ * @memberof ArcGisMapServerImageryProvider
201
+ *
202
+ * @returns {String} The URL.
203
+ */
204
+ ArcGisMapServerImageryProvider.prototype.getUrl = function() {
205
+ return this._url;
206
+ };
207
+
208
+ /**
209
+ * Gets the width of each tile, in pixels. This function should
210
+ * not be called before {@link ArcGisMapServerImageryProvider#isReady} returns true.
211
+ *
212
+ * @memberof ArcGisMapServerImageryProvider
213
+ *
214
+ * @returns {Number} The width.
215
+ *
216
+ * @exception {DeveloperError} <code>getTileWidth</code> must not be called before the imagery provider is ready.
217
+ */
218
+ ArcGisMapServerImageryProvider.prototype.getTileWidth = function() {
219
+ if (!this._ready) {
220
+ throw new DeveloperError('getTileWidth must not be called before the imagery provider is ready.');
221
+ }
222
+ return this._tileWidth;
223
+ };
224
+
225
+ /**
226
+ * Gets the height of each tile, in pixels. This function should
227
+ * not be called before {@link ArcGisMapServerImageryProvider#isReady} returns true.
228
+ *
229
+ * @memberof ArcGisMapServerImageryProvider
230
+ *
231
+ * @returns {Number} The height.
232
+ *
233
+ * @exception {DeveloperError} <code>getTileHeight</code> must not be called before the imagery provider is ready.
234
+ */
235
+ ArcGisMapServerImageryProvider.prototype.getTileHeight = function() {
236
+ if (!this._ready) {
237
+ throw new DeveloperError('getTileHeight must not be called before the imagery provider is ready.');
238
+ }
239
+ return this._tileHeight;
240
+ };
241
+
242
+ /**
243
+ * Gets the maximum level-of-detail that can be requested. This function should
244
+ * not be called before {@link ArcGisMapServerImageryProvider#isReady} returns true.
245
+ *
246
+ * @memberof ArcGisMapServerImageryProvider
247
+ *
248
+ * @returns {Number} The maximum level, or undefined if there is no maximum level.
249
+ *
250
+ * @exception {DeveloperError} <code>getMaximumLevel</code> must not be called before the imagery provider is ready.
251
+ */
252
+ ArcGisMapServerImageryProvider.prototype.getMaximumLevel = function() {
253
+ if (!this._ready) {
254
+ throw new DeveloperError('getMaximumLevel must not be called before the imagery provider is ready.');
255
+ }
256
+ return this._maximumLevel;
257
+ };
258
+
259
+ /**
260
+ * Gets the tiling scheme used by this provider. This function should
261
+ * not be called before {@link ArcGisMapServerImageryProvider#isReady} returns true.
262
+ *
263
+ * @memberof ArcGisMapServerImageryProvider
264
+ *
265
+ * @returns {TilingScheme} The tiling scheme.
266
+ * @see WebMercatorTilingScheme
267
+ * @see GeographicTilingScheme
268
+ *
269
+ * @exception {DeveloperError} <code>getTilingScheme</code> must not be called before the imagery provider is ready.
270
+ */
271
+ ArcGisMapServerImageryProvider.prototype.getTilingScheme = function() {
272
+ if (!this._ready) {
273
+ throw new DeveloperError('getTilingScheme must not be called before the imagery provider is ready.');
274
+ }
275
+ return this._tilingScheme;
276
+ };
277
+
278
+ /**
279
+ * Gets the extent, in radians, of the imagery provided by this instance. This function should
280
+ * not be called before {@link ArcGisMapServerImageryProvider#isReady} returns true.
281
+ *
282
+ * @memberof ArcGisMapServerImageryProvider
283
+ *
284
+ * @returns {Extent} The extent.
285
+ *
286
+ * @exception {DeveloperError} <code>getExtent</code> must not be called before the imagery provider is ready.
287
+ */
288
+ ArcGisMapServerImageryProvider.prototype.getExtent = function() {
289
+ if (!this._ready) {
290
+ throw new DeveloperError('getExtent must not be called before the imagery provider is ready.');
291
+ }
292
+ return this._tilingScheme.getExtent();
293
+ };
294
+
295
+ /**
296
+ * Gets the tile discard policy. If not undefined, the discard policy is responsible
297
+ * for filtering out "missing" tiles via its shouldDiscardImage function. If this function
298
+ * returns undefined, no tiles are filtered. This function should
299
+ * not be called before {@link ArcGisMapServerImageryProvider#isReady} returns true.
300
+ *
301
+ * @memberof ArcGisMapServerImageryProvider
302
+ *
303
+ * @returns {TileDiscardPolicy} The discard policy.
304
+ *
305
+ * @see DiscardMissingTileImagePolicy
306
+ * @see NeverTileDiscardPolicy
307
+ *
308
+ * @exception {DeveloperError} <code>getTileDiscardPolicy</code> must not be called before the imagery provider is ready.
309
+ */
310
+ ArcGisMapServerImageryProvider.prototype.getTileDiscardPolicy = function() {
311
+ if (!this._ready) {
312
+ throw new DeveloperError('getTileDiscardPolicy must not be called before the imagery provider is ready.');
313
+ }
314
+ return this._tileDiscardPolicy;
315
+ };
316
+
317
+ /**
318
+ * Gets an event that is raised when the imagery provider encounters an asynchronous error. By subscribing
319
+ * to the event, you will be notified of the error and can potentially recover from it. Event listeners
320
+ * are passed an instance of {@link ImageryProviderError}.
321
+ *
322
+ * @memberof ArcGisMapServerImageryProvider
323
+ *
324
+ * @returns {Event} The event.
325
+ */
326
+ ArcGisMapServerImageryProvider.prototype.getErrorEvent = function() {
327
+ return this._errorEvent;
328
+ };
329
+
330
+ /**
331
+ * Gets a value indicating whether or not the provider is ready for use.
332
+ *
333
+ * @memberof ArcGisMapServerImageryProvider
334
+ *
335
+ * @returns {Boolean} True if the provider is ready to use; otherwise, false.
336
+ */
337
+ ArcGisMapServerImageryProvider.prototype.isReady = function() {
338
+ return this._ready;
339
+ };
340
+
341
+ /**
342
+ * Requests the image for a given tile. This function should
343
+ * not be called before {@link ArcGisMapServerImageryProvider#isReady} returns true.
344
+ *
345
+ * @memberof ArcGisMapServerImageryProvider
346
+ *
347
+ * @param {Number} x The tile X coordinate.
348
+ * @param {Number} y The tile Y coordinate.
349
+ * @param {Number} level The tile level.
350
+ *
351
+ * @returns {Promise} A promise for the image that will resolve when the image is available, or
352
+ * undefined if there are too many active requests to the server, and the request
353
+ * should be retried later. The resolved image may be either an
354
+ * Image or a Canvas DOM object.
355
+ *
356
+ * @exception {DeveloperError} <code>requestImage</code> must not be called before the imagery provider is ready.
357
+ */
358
+ ArcGisMapServerImageryProvider.prototype.requestImage = function(x, y, level) {
359
+ if (!this._ready) {
360
+ throw new DeveloperError('requestImage must not be called before the imagery provider is ready.');
361
+ }
362
+ var url = buildImageUrl(this, x, y, level);
363
+ return ImageryProvider.loadImage(url);
364
+ };
365
+
366
+ /**
367
+ * Gets the logo to display when this imagery provider is active. Typically this is used to credit
368
+ * the source of the imagery. This function should not be called before {@link ArcGisMapServerImageryProvider#isReady} returns true.
369
+ *
370
+ * @memberof ArcGisMapServerImageryProvider
371
+ *
372
+ * @returns {Image|Canvas} A canvas or image containing the log to display, or undefined if there is no logo.
373
+ *
374
+ * @exception {DeveloperError} <code>getLogo</code> must not be called before the imagery provider is ready.
375
+ */
376
+ ArcGisMapServerImageryProvider.prototype.getLogo = function() {
377
+ if (!this._ready) {
378
+ throw new DeveloperError('getLogo must not be called before the imagery provider is ready.');
379
+ }
380
+ return this._logo;
381
+ };
382
+
383
+ return ArcGisMapServerImageryProvider;
384
+ });