配置载入器类ConfigurationLoader主要从指定的路径中加载保存星球相关参数的xml文件,从中读取数据来构造星球对象及其所关联的可渲染子对象列表并返回。该类的类图如下所示。

该类所包含的主要的方法基本都是静态的,功能说明如下:

public static double ParseDouble(string s)将字符串s解析为Double型数字

private static bool ParseBool(string booleanString) 将字符串s解析为bool型

public static void XMLValidationCallback(object sender, ValidationEventArgs args)XML文件有效性验证时的回调委托事件(severity:严重、严格、猛烈)。

public static World Load(string filename, Cache cache)函数是本类中的重点函数,主要从指定的路径如“bin\x86\Debug\Config\Earth.xml”文件中加载保存星球相关参数的xml文件,从中读取数据来构造星球对象并返回。

private static RenderableObjectList getRenderablesFromLayerDirectory(string layerDirectory, World parentWorld, Cache cache)函数从指定的图层目录中回去与指定父类星球parentWorld相关联的可渲染子对象列表。被本类和RenderableObjectList类中的相关函数调用。内部调用其重载形式 public static RenderableObjectList getRenderableFromLayerFile(string layerFile, World parentWorld, Cache cache, bool enableRefresh),重载形式内容比较多,需要细看。

public static bool IsLayerOn(RenderableObject ro)设置指定的可渲染对象图层是开启还是关闭

private static RenderableObjectList addChildLayerSet(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable, Cache cache)添加子图层集合到可渲染子对象列表

private static ImageTileService getImageTileServiceFromXPathNodeIterator(XPathNodeIterator iter)返回指定节点所对应的影像瓦片服务对象

private static ImageStore getImageStoreFromXPathNodeIterator(string name, XPathNodeIterator imageAccessorIter, RenderableObjectList parentRenderable, Cache cache) 返回指定节点所对应的影像存储对象

private static void addQuadTileLayersFromXPathNodeIterator(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable, Cache cache)从指定节点中添加四叉树瓦片图层到可渲染子对象列表

private static TimeSpan getCacheExpiration(XPathNodeIterator iter)返回缓冲区过期时间间隔

private static void addExtendedInformation(XPathNodeIterator iter, RenderableObject renderable)添加扩展信息

public static string GetRenderablePathString(RenderableObject renderable)添加可渲染路径字符串,内部调用准同名函数private static string getRenderablePathString(RenderableObject renderable)

private static void addImageLayersFromXPathNodeIterator(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable) 从指定节点中添加影像图层到可渲染子对象列表

private static void addScreenOverlays(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable, Cache cache)添加屏幕覆盖图层(PS:Overlays:覆盖图、镶边、包镶物)

private static void addScreenOverlaysToIcon(XPathNodeIterator iter, World parentWorld, Icon icon, Cache cache) 添加屏幕覆盖图层至ICON图标

private static System.Drawing.Color getColor(XPathNodeIterator iter)返回XpathNodeIterator节点迭代器所指定的元素的颜色

private static Microsoft.DirectX.Direct3D.FontDescription getDisplayFont(XPathNodeIterator iter) 返回XpathNodeIterator节点迭代器所指定的显示字体的字体描述结构体对象

private static void addTiledPlacenameSet(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable)添加已经切分成瓦片的地名集合所构建的TiledPlacenameSet对象到可渲染子对象列表

private static void addTiledWFSPlacenameSet(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable, Cache cache) 添加已经切分成瓦片的地名集合所构建的TiledWFSPlacenameSet对象到可渲染子对象列表

private static void addIcon(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable, Cache cache) )添加XpathNodeIterator节点迭代器所指定的Icon对象到可渲染子对象列表

private static void addPathList(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable) 添加XpathNodeIterator节点迭代器所指定的PathList路径列表对象到可渲染子对象列表

private static void addLineFeature(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable) 添加XpathNodeIterator节点迭代器所指定的LineFeature线型要素对象到可渲染子对象列表

private static void addPolygonFeature(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable) 添加XpathNodeIterator节点迭代器所指定的PolygonFeature多边形要素对象到可渲染子对象列表

private static void addModelFeature(XPathNodeIterator iter, World parentWorld, RenderableObjectList parentRenderable) 添加XpathNodeIterator节点迭代器所指定的ModelFeature模型要素对象到可渲染子对象列表

private static TerrainAccessor[] getTerrainAccessorsFromXPathNodeIterator(XPathNodeIterator iter, string cacheDirectory)从指定的XpathNodeIterator节点迭代器所指向的元素中获取地形访问器对象

static string getInnerTextFromFirstChild(XPathNodeIterator iter) 从指定的XpathNodeIterator节点迭代器所指向的元素中获取第一个子元素的内部文本字符串

WorldWind源码剖析系列:配置载入器类ConfigurationLoader的更多相关文章

  1. WorldWind源码剖析系列:影像存储类ImageStore、Nlt影像存储类NltImageStore和WMS影像存储类WmsImageStore

    影像存储类ImageStore 影像存储类ImageStore提供了计算本地影像路径和远程影像影像URL访问的各种接口,是WmsImageStore类和NltImageStore类的基类.当划分完层次 ...

  2. WorldWind源码剖析系列:表面影像类SurfaceImage

    表面影像类SurfaceImage描述星球类(如地球)表面纹理影像.该类的类图如下. 表面影像类SurfaceImage包含的主要的字段.属性和方法如下: string m_ImageFilePath ...

  3. WorldWind源码剖析系列:表面瓦片类SurfaceTile

    表面瓦片类SurfaceTile描述星球类(如地球)表面纹理影像的瓦片模型.其类图如下. 表面瓦片类SurfaceTile包含的主要的字段.属性和方法如下: int m_Level;//该瓦片所属金字 ...

  4. WorldWind源码剖析系列:影像图层类ImageLayer

    影像图层类ImageLayer 影像图层类ImageLayer将单张影像作为纹理映射到星球表面上去.源影像必须是平面笛卡尔坐标系.该类的类图如下. 影像图层类ImageLayer提供的主要字段.属性和 ...

  5. WorldWind源码剖析系列:四叉树瓦片类QuadTile

    四叉树瓦片类QuadTile提供了对影像和地形数据的四叉树访问模型.该类的类图如下. 四叉树瓦片类QuadTile提供的主要字段.属性和方法简要描述如下: public QuadTileSet Qua ...

  6. WorldWind源码剖析系列:下载请求类DownloadRequest

    下载请求类DownloadRequest是各种下载请求的抽象基类,先派生出网络下载请求类WebDownloadRequest,再派生出地理空间下载请求类GeoSpatialDownloadReques ...

  7. WorldWind源码剖析系列:网络下载类WebDownload

    网络下载类WebDownload封装了对请求的瓦片进行网络下载的相关操作.该类使用了两个委托类型和一个枚举类型. 该类的类图如下. 网络下载类WebDownload各个字段和属性的含义说明如下: st ...

  8. WorldWind源码剖析系列:绘制参数类DrawArgs

    绘制参数类DrawArgs主要对绘制时需要的对象如:设备对象Microsoft.DirectX.Direct3D.Device.Microsoft.DirectX.Direct3D.Font字体对象. ...

  9. WorldWind源码剖析系列:数学引擎类MathEngine

    PluginSDK中的MathEngine类是密封类.不可继承,主要完成通用的数学计算功能.由于按平面展开层层划分,所以在WW里用到一个row,col的概念,类MathEngine封装了从行/列到经/ ...

  10. WorldWind源码剖析系列:代理助手类ProxyHelper

    代理助手类ProxyHelper通过平台调用的互操作技术封送了若干Win32结构体和函数.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: 内嵌类型WINHTTP_AUTOPROX ...

随机推荐

  1. HUD6182

    A Math Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. python学习之老男孩python全栈第九期_day008知识点总结

    ''''如何打开一个文件模特主妇护士老师.txt1. 文件路径:f:\模特主妇护士老师.txt2. 操作方式:只读:r ,rb ,只写: w, wb ,追加: a , ab,读写:r+ , r+b,写 ...

  3. 排序算法(3)--Insert Sorting--插入排序[3]--Shell Sort--希尔排序

    1.基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止. 2.实现原理 对于n ...

  4. var和const和let的区别

    简述: 1.前端的变量申明,可以用到var,ES6的const(衡量)/let(变量) 2.在ES5用的都是var,到ES6之后,也就是2015年开始出现const/let. var 不会报错,有声明 ...

  5. 【读书笔记】iOS-网络-测试与操纵网络流量

    一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连 ...

  6. 如何使用活字格快速搭建Bug管理系统?

    Bug管理系统是指一种用于添加Bug.修复Bug.测试Bug.删除Bug的一套完整的Bug管理系统. 完整的Bug管理过程包含: 1.测试人员利用Bug管理系统提交发现的bug. 2.测试人员把bug ...

  7. JSP内置对象——application对象

    下面来举个具体的实例: 运行结果: 其中,city,postcode,email是我自己保存的属性名称,然后最后一行还获取到了当前JSP或者SERVLET的引擎名及版本号.

  8. SQLServer中DataLength()和Len()两内置函数的区别(转载)

    最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE ...

  9. systemd 之 journalctl

    Systemd 日志系统 一.前言 昨天写了一篇文章,内容为:Systemd 常规操作与彩蛋,参考了 ArchLinux 官方文档并结合培训中的思路进行了部分修改补充.如果你懂得了基础的管理,那必然还 ...

  10. centos 安装elk监控

    下面就是要安装一些收集日志 或者分配日志的工具,我选择的是 Filebeat 来收集日志,然后放到kafka中 让kafka这个消息队列来分配生产者消费者  然后通过Logstash 或者一个国产大神 ...