• CEGUI单例对象概览


      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类

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

  • 相关阅读:
    文件处理
    字符编码的了解以及简单的文件处理
    python list去重加set排序
    数据的类型以及内置方法
    Python 入门 Day5
    Python 入门 Day3
    Python的入门
    计算机硬件
    【0903 | Day 29】反射和内置方法
    【0902 | Day 28】绑定方法和非绑定方法
  • 原文地址:https://www.cnblogs.com/kundij/p/2427051.html
Copyright © 2020-2023  润新知