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实现者使用的,普通开发人员不会用到。
参数:无。
返回值:动画触发对象。
原文地址:https://www.cnblogs.com/zhangyunlin/p/6167376.html