FtkDisplay* ftk_display_android_create(void) { FtkDisplay* thiz = NULL; thiz = (FtkDisplay*)FTK_ZALLOC(sizeof(FtkDisplay) + sizeof(PrivInfo)); if(thiz != NULL) { FtkColor bg; DECL_PRIV(thiz, priv); thiz->update = ftk_display_android_update; thiz->width = ftk_display_android_width; thiz->height = ftk_display_android_height; thiz->snap = ftk_display_android_snap; thiz->destroy = ftk_display_android_destroy; bg.a = 0xff; bg.r = 0xff; bg.g = 0xff; bg.b = 0xff; priv->bitmap = ftk_bitmap_create(screen_width, screen_height, bg); ftk_wnd_manager_add_global_listener(ftk_default_wnd_manager(), (FtkListener)ftk_display_android_handle_event, thiz); Android_InitEGL(); } return thiz; }
static void ftk_init_panel(void) { FtkGc gc; FtkWidget* item = NULL; FtkWidget* panel = ftk_status_panel_create(FTK_STATUS_PANEL_HEIGHT); size_t width = ftk_widget_width(panel); ftk_set_status_panel(panel); quit_if_fail(ftk_default_status_panel(), "Init status panel failed.\n"); memset(&gc, 0x00, sizeof(gc)); gc.mask = FTK_GC_BITMAP; gc.bitmap = ftk_theme_load_image(ftk_default_theme(), "status-bg"FTK_STOCK_IMG_SUFFIX); ftk_widget_set_gc(panel, FTK_WIDGET_NORMAL, &gc); ftk_widget_set_gc(panel, FTK_WIDGET_ACTIVE, &gc); ftk_widget_set_gc(panel, FTK_WIDGET_FOCUSED, &gc); ftk_gc_reset(&gc); item = ftk_status_item_create(panel, -100, 32); ftk_widget_set_id(item, IDC_CLOSE_ITEM); gc.bitmap = ftk_theme_load_image(ftk_default_theme(), "close-32"FTK_STOCK_IMG_SUFFIX); if(gc.bitmap != NULL) { gc.mask = FTK_GC_BITMAP; ftk_widget_set_gc(item, FTK_WIDGET_NORMAL, &gc); ftk_widget_set_gc(item, FTK_WIDGET_FOCUSED, &gc); ftk_gc_reset(&gc); gc.mask = FTK_GC_BITMAP; gc.bitmap = ftk_theme_load_image(ftk_default_theme(), "close-pressed-32"FTK_STOCK_IMG_SUFFIX); ftk_widget_set_gc(item, FTK_WIDGET_ACTIVE, &gc); ftk_gc_reset(&gc); } ftk_status_item_set_clicked_listener(item, button_close_top_clicked, NULL); gc.bitmap = ftk_theme_load_image(ftk_default_theme(), "flag-32"FTK_STOCK_IMG_SUFFIX); item = ftk_status_item_create(panel, 1, gc.bitmap ? min(ftk_bitmap_width(gc.bitmap), 100) : 32); ftk_widget_set_id(item, IDC_ICON_ITEM); if(gc.bitmap != NULL) { gc.mask = FTK_GC_BITMAP; ftk_widget_set_gc(item, FTK_WIDGET_NORMAL, &gc); ftk_widget_set_gc(item, FTK_WIDGET_ACTIVE, &gc); ftk_widget_set_gc(item, FTK_WIDGET_FOCUSED, &gc); ftk_gc_reset(&gc); } ftk_widget_show(item, 1); item = ftk_status_item_create(panel, 2, width/2); ftk_widget_set_id(item, IDC_TITLE_ITEM); ftk_widget_show(item, 1); ftk_wnd_manager_add_global_listener(ftk_default_wnd_manager(), on_wnd_manager_global_event, NULL); ftk_widget_show(panel, 1); return; }
static Ret ftk_enable_curosr(void) { FtkSprite* sprite = ftk_sprite_create(); FtkBitmap* icon = ftk_theme_load_image(ftk_default_theme(), "cursor"FTK_STOCK_IMG_SUFFIX); ftk_sprite_set_icon(sprite, icon); ftk_sprite_show(sprite, 1); ftk_wnd_manager_add_global_listener(ftk_default_wnd_manager(), ftk_move_cursor, sprite); return RET_OK; }
static Ret ftk_input_method_win32_activate(FtkInputMethod* thiz) { ftk_input_method_win32_init(thiz); ftk_wnd_manager_add_global_listener(ftk_default_wnd_manager(), (FtkListener)ftk_input_method_win32_handle_event, thiz); ftk_logd("%s\n", __func__); return RET_OK; }
static Ret ftk_input_method_hw_activate(FtkInputMethod* thiz) { DECL_PRIV(thiz, priv); ftk_input_method_hw_init(thiz); ftk_input_method_hw_reset(thiz); ftk_hand_write_engine_activate(priv->engine); ftk_wnd_manager_add_global_listener(ftk_default_wnd_manager(), (FtkListener)ftk_input_method_hw_handle_event, thiz); ftk_logd("%s\n", __func__); return RET_OK; }
/* * guest the mouse event is a click event or handwrite stroke. * click: during specified time, the mouse don't move out of specified range. */ static Ret ftk_input_method_hw_click_check(FtkInputMethod* thiz) { int i = 0; DECL_PRIV(thiz, priv); if(priv->points_nr < 3) { priv->hand_write_state = FTK_HW_NONE; } else { priv->hand_write_state = FTK_HW_NONE; for(i = 1; i < priv->points_nr; i++) { if(FTK_ABS(priv->points[0].x - priv->points[i].x) > FTK_HW_CLICK_RANGE || FTK_ABS(priv->points[0].y - priv->points[i].y) > FTK_HW_CLICK_RANGE) { priv->hand_write_state = FTK_HW_WRITING; break; } } } /*It is click event, re-dispatch the events.*/ if(priv->hand_write_state == FTK_HW_NONE) { FtkEvent event = {0}; int points_nr = priv->points_nr; ftk_wnd_manager_remove_global_listener(ftk_default_wnd_manager(), (FtkListener)ftk_input_method_hw_handle_event, thiz); event.type = FTK_EVT_MOUSE_DOWN; event.u.mouse.x = priv->points[0].x; event.u.mouse.y = priv->points[0].y; ftk_wnd_manager_dispatch_event(ftk_default_wnd_manager(), &event); for(i = 1; i < (points_nr - 1); i++) { event.type = FTK_EVT_MOUSE_MOVE; event.u.mouse.x = priv->points[i].x; event.u.mouse.y = priv->points[i].y; ftk_wnd_manager_dispatch_event(ftk_default_wnd_manager(), &event); } if(points_nr > 1) { event.type = priv->pen_down ? FTK_EVT_MOUSE_MOVE : FTK_EVT_MOUSE_UP; event.u.mouse.x = priv->points[i].x; event.u.mouse.y = priv->points[i].y; ftk_wnd_manager_dispatch_event(ftk_default_wnd_manager(), &event); } ftk_wnd_manager_add_global_listener(ftk_default_wnd_manager(), (FtkListener)ftk_input_method_hw_handle_event, thiz); ftk_input_method_hw_end(thiz); ftk_input_method_hw_reset(thiz); ftk_logd("%s: it is click event.\n", __func__); } else { ftk_stroke_painter_show(priv->painter, 1); ftk_stroke_painter_update(priv->painter, NULL); ftk_logd("%s: it is handwrite stroke\n", __func__); } return RET_REMOVE; }