guichan 0.8.2代码阅读


一、类结构:

(一)简单类型:

Exception:

异常类基类,使用GCN_EXCEPTION宏打印源码位置。


Color:

拥有rgba颜色属性


Rectangle:

拥有矩形范围属性


ClipRectangle:

Rectangle扩展类,拥有int型xOffset和yOffset属性


Key:

按键值,用于KeyEvent和KeyInput


KeyInput:

按键队列元素,用于GenericInput内置队列


MouseInput:

鼠标队列元素,用于GenericInput内置队列


(二)事件

Event:

拥有Widget*型source属性


ActionEvent :

Event扩展类, 拥有string型id属性


SelectionEvent

Event扩展类


InputEvent:

Event扩展类,记录输入事件属性


KeyEvent:

InputEvent扩展类,记录Key型key属性和按键类型。


MouseEvent:

InputEvent的扩展类,记录鼠标状态。


(三)事件监听器:

ActionListener :

封装action回调函数


DeathListener:

封装death回调函数


FocusListener:

封装focusGained和focusLost回调函数


KeyListener:

封装keyPressed和keyReleased回调函数


MouseListener:

封装mouseEntered等回调函数


SelectionListener:

封装valueChanged回调函数


WidgetListener:

封装widgetResized等回调函数


(四)平台抽象接口类:

Graphics:

图形接口类,由Gui::setGraphics(全局变量的方法)指定


Image:

图片接口类,由ImageLoader::load(静态全局变量的方法)指定


Font:

字体接口类。由Widget::setGlobalFont(静态方法)或Widget::setFont指定


Input:

输入接口类,由Gui::setGraphics(全局变量的方法)指定


ImageLoader:

图片加载器接口类,由Image::setImageLoader(静态方法)指定


ListModel:

列表元素接口类,由ListBox::ListBox或DropDown::DropDown指定


(五)简单实现类

DefaultFont:

Font的实现类,用矩形画字体。


ImageFont:

Font的实现类,用图片画字体。


GenericInput:

Input的实现类,简单的KeyInput和MouseInput输入队列


(六)核心逻辑处理的抽象类:

Gui:

全局单实例类,由main函数创建


FocusHandler:

Gui创建的成员


Widget:

部件类(未实现draw方法故不可实例化),由BasicContainer::add指定。


BasicContainer:

容器(可包含部件的部件)类(未实现draw方法故不可实例化),继承自Widget,由Gui::setTop(全局变量的方法)指定。


(七)全局函数和定义

platform.hpp

guichan.hpp / guichan.cpp

opengl.hpp

sdl.hpp


(八)部件类

DropDown / ScrollArea / Tab / TabbedArea

继承自BasicContainer


Container

继承自BasicContainer


AdjustingContainer / Window

继承自Container


Button / CheckBox / Icon / Label / ListBox / RadioButton

Slider / TextBox / TextField

继承自Widget

ImageButton

继承自Button


(九)平台实现类(只列举SDL实现):

SDLGraphics

Graphics实现类


SDLImage

Image实现类


SDLTrueTypeFont:

Font实现类


SDLInput

Input实现类


SDLImageLoader

ImageLoader实现类




(TODO:待补充)