CEGUI的核心控制类是System,它负责CEGUI系统与外部的通讯及内CEGUI系统内部各个模块之间的联系。System类派生自CEGUI的单例模板类Singleton,所以在整个系统运行中只有一个系统控制类System,在CEGUI中,所有的管理类都是派生自单例模板类Singleton,他们和System类一样,在整个系统运行期间只有一个实例,并且这些单例对象是通过System类的createSingletons 函数创建的。以下分别说明:

  1.图像集管理类ImagesetManager

    用于创建、访问、销毁图像集对象。在该类里使用了一个map对象d_imagesets,用于以键-值形式String, Imageset*, String::FastLessCompare,即<图像集名字,图像集对像指针>来保存加载入系统的图像集。

      2.字体管理类FontManager

    用于创建、访问、销毁字体对象。在该类里使用了一个map对象d_fonts,用于以键-值形式String, Font*, String::FastLessCompare,即<字体名字,字体对象指针>来保存加载入系统的字体。

  3.窗口工厂管理类WindowFactoryManager

    CEGUI中每一种窗口类型(包括按钮,编辑杠,文本框等等)都有对应类型的窗口创建工厂用于创建对应的窗口实例。而且窗口工厂管理类,就是用于对所有这些窗口工厂进行统一的管理。

  4.窗口管理类WindowManager

    用于管理CEGUI系统运行中所有的窗口实例,包括创建和销毁。看个小代码片段,说明如果创建一个窗口实例:

    new WindowManager();

    CEGUI::WindowManager* d_wm = WindowManager::getSingletonPtr();

    CEGUI::Window* d_root = NULL;

    d_root = d_wm->createWindow("WindowsLook/Static");

    createWindow就是窗口管理类中用于创建窗口的函数,参数“WindowsLook/Static”代表了要创建的窗口类型,在WindowsLook.scheme模式文件里面有一个配置窗口类型的映射:

    <FalagardMapping WindowType="WindowsLook/Static"      TargetType="DefaultWindow" Renderer="Falagard/Static"      LookNFeel="WindowsLook/Static" />。

        传入createWindow的参数就是这个映射定义的WindowType, TargetType是有CEGUI源码里定义的由内部识别的窗口类型为“DefaultWindow”,然后createWindow会获得DefaultWindow的工厂来创建一个DefaultWindow窗口实例,

    WindowManager类型的createWindow有如下代码完成这个动作:

    WindowFactoryManager& wfMgr = WindowFactoryManager::getSingleton();
       WindowFactory* factory = wfMgr.getFactory(type);//type为上面说的“DefaultWindow”

       Window* newWindow = factory->createWindow(finalName);

  5.资源管理模式类SchemeManager

    用于创建、访问、销毁GUI模式对象,GUI模式Scheme类负责加载系统中需要的各种资源。

  6.MouseCursor类

  大概就是管理系统运行定义鼠标显示的外观。

  7.GlobalEventSet类型

   一个全局事件集的类,全局事件集允许你订阅一个事件到所有的类实例。

      8.WidgetLookManager类

  9.WindowRendererManager类

    由于时间仓促,先写到这里,最后两个后续再研究。

 posted on 2012-03-31 15:03  kundij  阅读(469)  评论(0编辑  收藏  举报