FTK应用程序编程接口(API)手册-2
FTK中有一些单实例的对象,这些对象是以全局变量的形式存在的,为了有效的控制对这些对象的访问,我们提供了相应的存/取函数。这些对象都是在FTK初始化时创建的,所以开发人员无需要再调用相应的“存”函数,但有时需要“取”出这些对象,以后 获得相应的信息。故这里只介绍“取”的函数:
1.获取缺省显示设备。
原型:FtkDisplay* ftk_default_display(void);
说明:目前FTK只支持一个显示设备,本函数用于获取这个显示设备对象。对于普通开发人员来说,获取显示设备的主要目的,是通过FtkDisplay对象来获得显示设备的宽度和高度。
参数:无。
返回值:缺省的显示设备对象。
示例:获取显示设备的宽度和高度
int
screen_width = ftk_display_width(ftk_default_display()); int screen_height = ftk_display_height(ftk_default_display()); |
2.获取缺省的主循环对象。
原型:FtkMainLoop* ftk_default_main_loop(void);
说明:这个函数主要是给FTK实现者使用的,普通开发人员不会用到。
参数:无。
返回值:缺省的主循环对象。
3.获取调试信息的输出级别。
原型:FtkLogLevel ftk_default_log_level(void);
说明:log_level决定了FTK输出哪些调试信息,本函数用于返回当前的级别。调试信息的级别可以在配置文件中指定,也可以通过命令行参数传入。
参数:无。
返回值:见FtkLogLevel。
4.获取缺省的窗口管理器。
原型:FtkWndManager* ftk_default_wnd_manager(void);
说明: 窗口管理器负责窗口的管理和事件的分发,可以通过窗口管理器可以向GUI注入事件,或者拦截事件。
参数:无。
返回值:缺省的窗口管理器
示例:向FTK中注入按键事件。
ftk_event_init(&event,
FTK_EVT_KEY_DOWN); event.u.key.code = code; ftk_wnd_manager_dispatch_event(ftk_default_wnd_manager(), &event); ftk_event_init(&event, FTK_EVT_KEY_UP); event.u.key.code = code; ftk_wnd_manager_dispatch_event(ftk_default_wnd_manager(), &event); |
5.获取状态栏窗口。
原型:FtkWidget* ftk_default_status_panel(void);
说明:状态栏窗口通常是显示在屏幕上方,用于显示当前窗口的标题或关闭按键等。开发人员通过本函数获取状态栏窗口,然后可以向状态栏窗口中增加自己的控件。
参数:无。
返回值:状态栏窗口。
示例:桌面向状态栏中增加显示时间的控件。
static
Ret desktop_add_time_item_on_statusbar(void) { FtkWidget* item = NULL; FtkWidget* panel = NULL; panel = ftk_default_status_panel(); if(panel != NULL) { item = ftk_status_item_create(panel, -2, 60); ftk_widget_set_id(item, IDC_TIME_ITEM); ftk_widget_show(item, 1); } ftk_logd("%s\n", __func__); return RET_OK; } |
6.获取位图工厂。
原型:FtkBitmapFactory* ftk_default_bitmap_factory(void);
说明:位图工厂主要用于加载图片文件,通过本函数获取位图工厂,然后加载自己需要的图片。
参数:无。
返回值:位图工厂。
示例:
FtkBitmap*
bitmap = NULL; char filename[FTK_MAX_PATH+1] = {0}; ftk_snprintf(filename, FTK_MAX_PATH, "%s/earth.png", ftk_config_get_test_data_dir(ftk_default_config())); bitmap = ftk_bitmap_factory_load(ftk_default_bitmap_factory(), filename); |
7.获取事件源管理器对象。
原型:FtkSourcesManager* ftk_default_sources_manager(void);
说明:这个函数主要是给FTK实现者使用的,普通开发人员不会用到。
参数:无。
返回值:事件源管理器对象。
8.获取共享画板对象。
原型:FtkCanvas* ftk_shared_canvas(void);
说明:这个函数主要是给FTK实现者使用的,普通开发人员不会用到。
参数:无。
返回值:共享画板对象。
9.获取主题对象。
原型:FtkTheme* ftk_default_theme(void);
说明:主题对象负责FTK的外在表现,换一个主题,FTK可能有完全不同的表现效果。通常开发人员可以利用主题对象来加载主题相关的图片,或者获取相关的配置信息。
参数:无。
返回值:主题对象。
示例:加载主题中的图片。
FtkBitmap* bitmap = ftk_theme_load_image(ftk_default_theme(), filename); |
10.获取基本事件源。
原型:FtkSource* ftk_primary_source(void);
说明:这个函数主要是给FTK实现者使用的,普通开发人员不会用到。
参数:无。
返回值:基本事件源。
11.获取配置信息对象。
原型:FtkConfig* ftk_default_config(void);
说明:配置信息对象提供了一些函数用于获取系统的配置信息。
参数:无。
返回值:配置信息对象。
12.获取内存分配器。
原型:FtkAllocator* ftk_default_allocator(void);
说明:一般不要直接使用这个对象,而且用FTK_ALLOC/FTK_ZALLOC/FTK_FREE等宏来管理内存。
参数:无。
返回值:内存分配器。
13.获取文本排版对象。
原型:FtkTextLayout* ftk_default_text_layout(void);
说明:显示文本时可以利用FtkTextLayout对文字进行排版。
参数:无。
返回值:文本排版对象。
示例:button控件使用文本排版对象计算文字宽度。
static
Ret ftk_button_on_paint(FtkWidget* thiz) { FTK_BEGIN_PAINT(x, y, width, height, canvas); ftk_canvas_reset_gc(canvas, ftk_widget_get_gc(thiz)); if(ftk_widget_get_text(thiz) != NULL) { int xoffset = 0; int yoffset = FTK_HALF(height); FtkTextLine line = {0}; const char* text = ftk_widget_get_text(thiz); FtkTextLayout* text_layout = ftk_default_text_layout();
ftk_text_layout_init(text_layout, text, -1, ftk_widget_get_gc(thiz)->font, width); if(ftk_text_layout_get_visual_line(text_layout, &line) == RET_OK) { xoffset = FTK_HALF(width - line.extent); ftk_canvas_draw_string(canvas, x + xoffset, y + yoffset, line.text, line.len, 1); } }FTK_END_PAINT(); } |
14.获取输入法管理器。
原型:FtkInputMethodManager* ftk_default_input_method_manager(void);
说明:这个函数主要是给FTK实现者使用的,普通开发人员不会用到。
参数:无。
返回值:输入法管理器。
15.获取输入法预编辑器。
原型:FtkImPreeditor* ftk_default_input_method_preeditor(void);
说明:这个函数主要是给FTK实现者使用的,普通开发人员不会用到。
参数:无。
返回值:输入法预编辑器。
16.获取字体管理对象。
原型:FtkFontManager* ftk_default_font_manager(void);
说明:通过字体管理器可以加载自己需要的字体,要使用不同大小的字体,一定要在编译配置时使用freetype。因为缺省字体是点阵字体,只有一种大小。
参数:无。
返回值:字体管理对象。
17.获取动画触发对象。
原型:FtkAnimationTrigger* ftk_default_animation_trigger(void);
说明:这个函数主要是给FTK实现者使用的,普通开发人员不会用到。
参数:无。
返回值:动画触发对象。