Пример #1
0
/*****************************************************************************
 * FUNCTION
 *  wgui_text_label_show
 * DESCRIPTION
 *  show the text label component
 * PARAMETERS
 *  text_label_id   [IN]    Id of text label
 * RETURNS
 *  void
 *****************************************************************************/
void wgui_text_label_show(U32 text_label_id)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    GDI_HANDLE old_lcd, old_layer;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (text_label_id >= WGUI_TEXT_LABEL_MAX ||
        wgui_text_label_list[text_label_id].active == MMI_FALSE)
    {
        return;
    }

    GDI_LOCK;
            
    gdi_layer_get_active(&old_layer);
    gdi_lcd_get_active(&old_lcd);

    gdi_lcd_set_active(wgui_text_label_list[text_label_id].target_lcd);
    gdi_layer_push_and_set_active(wgui_text_label_list[text_label_id].target_layer);

    gui_text_label_show(&wgui_text_label_list[text_label_id]);

    gdi_layer_pop_and_restore_active();

    gdi_lcd_set_active(old_lcd);
    gdi_layer_set_active(old_layer);
            
    GDI_UNLOCK;
}
static S32 mmi_em_profiling_gdi_misc_2d_nb(void *v_param)
{
    gdi_handle src_layer, dest_layer;
    gdi_lt_matrix_struct affine_transform =
    {
        { 1.8f, 0.0f, 5.0f,
          0.0f, 1.9f, 5.0f,
          0.0f, 0.0f, 1.0f }
    };

    src_layer = mmi_em_profiling_gdi_create_layer(GDI_COLOR_FORMAT_32_PARGB, 0, 0, 100, 100);
    dest_layer = mmi_em_profiling_gdi_create_layer(GDI_COLOR_FORMAT_32_PARGB, 0, 0, 200, 200);
    gdi_layer_push_and_set_active(src_layer);
    gdi_layer_clear(GDI_COLOR_GREEN);
    gdi_image_draw_id(0, 0, IMG_GLOBAL_QUESTION);
    
    gdi_layer_set_active(dest_layer);
    gdi_layer_clear(GDI_COLOR_BLACK);

    gdi_2d_linear_transfrom(
        affine_transform.m,
        src_layer,
        0,
        0,
        100,
        100,
        0,
        0,
        200,
        200,
        GDI_LT_SRC_KEY_EDGE_FILTER_DULPLICATE,
        GDI_COLOR_WHITE,
        GDI_LT_SAMPLE_MODE_BILINEAR_WITH_EDGE_FILTER_DULPLICATE,
        GDI_LT_FLAG_NON_BLOCKING);

    gdi_layer_pop_and_restore_active();

    gdi_2d_fill_rect(
        dest_layer, dest_layer, 50, 50, 100, 100, 
        255, gdi_cf_get_color(GDI_COLOR_FORMAT_32_PARGB, 128, 255, 255, 255),
        GDI_2D_FILL_FLAG_ALPHA_BLENDING | GDI_2D_FILL_FLAG_NON_BLOCKING,
        NULL);

    gdi_2d_fill_rect_wait_for_finish();

    mmi_em_profiling_gdi_misc_blt_case(dest_layer, 0, 0, 0);

    mmi_em_profiling_gdi_free_layer(src_layer);
    mmi_em_profiling_gdi_free_layer(dest_layer);

    return 0;
}
static gdi_handle mmi_em_profiling_gdi_misc_fill_rect_create_layer(
    gdi_color_format cf)
{
    gdi_handle layer;

    layer = mmi_em_profiling_gdi_create_layer(
        cf, 0, 0, 100, 100);
        
    gdi_layer_push_and_set_active(layer);
    gdi_layer_clear(GDI_COLOR_BLUE);
    gdi_layer_pop_and_restore_active();

    return layer;
}
Пример #4
0
void *mmi_widget_view_lock_canvas(int instance_id, void *view_handle, void **ptr_buffer, int width, int height)
{
    canvas_lock_struct *lock = NULL;
    
    int buffer_size = width * height * 2;
        
#ifdef WIDGET_DETAILS_VIEW_ARGB8888_COLOR_FORMAT
    buffer_size = width * height * 4;
#endif

    ASSERT(ptr_buffer);
    if (mmi_frm_scrn_get_active_id() != SCR_ID_WIDGET_VIEW)
    {
        return NULL;
    }

    kal_take_mutex(g_widget_view_lock);

    if (!g_widget_view_cntx || g_widget_view_cntx->widget_id != instance_id || g_widget_view_cntx->view_handle != view_handle || !g_widget_view_cntx->render_layer ||
        g_widget_view_cntx->view_width != width || g_widget_view_cntx->view_height != height)
    {
        kal_give_mutex(g_widget_view_lock);
        return NULL;
    }

    lock = (canvas_lock_struct *)OslMalloc(sizeof(canvas_lock_struct));
    memset(lock, 0, sizeof(canvas_lock_struct));
    lock->mutex = g_widget_view_lock;
    lock->view_type = g_widget_view_cntx->view_type;
    lock->unlock_canvas = mmi_widget_view_unlock_canvas;
    gdi_layer_push_and_set_active(g_widget_view_cntx->render_layer);


    memset(gdi_act_layer->buf_ptr1, 0xff, buffer_size);
    //gdi_layer_get_buffer_ptr(&layer_buffer);
    *ptr_buffer = gdi_act_layer->buf_ptr1;

    gdi_layer_pop_and_restore_active();

    return lock;
}
static S32 mmi_em_profiling_gdi_misc_fill_rect_src2(void *v_param)
{
    gdi_handle src_layer;
    gdi_handle dest_layer;

    dest_layer = mmi_em_profiling_gdi_misc_fill_rect_create_layer(GDI_COLOR_FORMAT_32_PARGB);
    src_layer = mmi_em_profiling_gdi_create_layer(GDI_COLOR_FORMAT_16, 0, 0, 100, 100);
    gdi_layer_push_and_set_active(src_layer);
    gdi_layer_clear(GDI_COLOR_RED);
    gdi_layer_pop_and_restore_active();

    gdi_2d_fill_rect(
        src_layer, dest_layer, 30, 30, 60, 60, 
        128, gdi_cf_get_color(GDI_COLOR_FORMAT_16, 255, 255, 255, 255),
        GDI_2D_FILL_FLAG_ALPHA_BLENDING,
        NULL);

    mmi_em_profiling_gdi_misc_blt_case(dest_layer, 0, 0, 0);

    mmi_em_profiling_gdi_free_layer(src_layer);
    mmi_em_profiling_gdi_free_layer(dest_layer);
    
    return 0;
}
static S32 mmi_em_profiling_gdi_misc_speed_sw_fill_rect(void *v_param)
{
    static const U32 PROFILING_MS = 4000;
    gdi_handle layer;
    S32 i;
    U32 start_time, duration;
    mmi_em_profiling_gdi_misc_speec_fill_rect_param *param =
        (mmi_em_profiling_gdi_misc_speec_fill_rect_param*)v_param;
    kal_int32 fill_x, fill_y, fill_width, fill_height;
    gdi_color fill_color;

    layer = mmi_em_profiling_gdi_create_layer(
        param->layer.cf, param->layer.x, param->layer.y, param->layer.width, param->layer.height);
    if (layer == 0)
    {
        return -1;
    }
    
    gdi_layer_push_and_set_active(layer);
    gdi_layer_clear(GDI_COLOR_BLACK);
    gdi_layer_pop_and_restore_active();

    fill_x = param->fill.x;
    fill_y = param->fill.y;
    fill_width = param->fill.width;
    fill_height = param->fill.height;
    fill_color = gdi_cf_get_color(param->layer.cf, 255, 255, 255, 255);

    gdi_layer_push_and_set_active(layer);

    MMI_TRACE(MMI_COMMON_TRC_INFO, TRC_APP_EM_PROFILING_GDI_FRECT_START);

    start_time = drv_get_current_time();
    i = 0;
    do
    {
        do 
        {
            gdi_draw_solid_rect(
                fill_x, fill_y, fill_width, fill_height, fill_color);
            i++;
        }
        while ((i & 0xf) != 0); /* Calculate duration every 16 iterations */

        duration = drv_get_duration_ms(start_time);
    }
#ifdef __MTK_TARGET__
    while (duration < PROFILING_MS);
#else
    while (0);
#endif

    MMI_TRACE(MMI_COMMON_TRC_INFO, TRC_APP_EM_PROFILING_GDI_FRECT_END, param->id, i, duration);

    gdi_layer_pop_and_restore_active();

    gdi_layer_blt(
        layer,
        0,
        0,
        0,
        0,
        0,
        GDI_LCD_WIDTH - 1,
        GDI_LCD_HEIGHT - 1);

    mmi_em_profiling_gdi_free_layer(layer);

    return 0;
}