zoukankan      html  css  js  c++  java
  • 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实现者使用的,普通开发人员不会用到。
    参数:无。
    返回值:动画触发对象。
  • 相关阅读:
    Codeforces Round #527 (Div. 3) B. Teams Forming
    Train Problem I (栈的基本运用)
    浙江中医药大学第十二届大学生程序设计竞赛 J. Jhadgre爬楼梯
    判断二进制半整数
    简易连连看
    Codeforces Round #527 (Div. 3) A. Uniform String
    求字符串中出现次数最多的字符 JAVA
    母猪的故事 (递推题)
    C#判断文件和文件夹是否存在 不存在则创建
    C# 数据库备份与还原 小妹做了一个winform系统,需要对sql2000数据库备份和还原(小妹妹你太狠了)
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167376.html
Copyright © 2011-2022 走看看