⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmradiomainscreen.c

📁 mtk平台的调频收音机的mmi部分! 可以了解mtk调频收音机的用户界面!
💻 C
📖 第 1 页 / 共 5 页
字号:
        /* animation */
    #ifdef __MMI_FM_RADIO_ANIMATION__
        fmrdo_main_draw.animation.img_handle = GDI_ERROR_HANDLE;
        if (g_fmrdo.is_power_on)
        {
            gdi_image_draw_animation(
                fmrdo_main_draw.animation.x,
                fmrdo_main_draw.animation.y,
                fmrdo_main_draw.animation.animation_img,
                &fmrdo_main_draw.animation.img_handle);
        }
        else
        {
            gdi_image_draw(
                fmrdo_main_draw.animation.x,
                fmrdo_main_draw.animation.y,
                fmrdo_main_draw.animation.animation_img);
        }
    #endif /* __MMI_FM_RADIO_ANIMATION__ */ 

    #ifdef __GDI_MEMORY_PROFILE_2__
        /* tuner scale background */
        gui_show_image(
            fmrdo_main_draw.tuner_scale.x,
            fmrdo_main_draw.tuner_scale.y,
            fmrdo_main_draw.tuner_scale.bg_img);
        is_fmrdo_skin_layer_drawn = TRUE;
        gdi_layer_pop_and_restore_active();
    }
    #endif /* __GDI_MEMORY_PROFILE_2__ */ 

    /* show LSK */
    gui_set_font(&MMI_medium_font);
    gui_set_text_color(fmrdo_main_draw.LSK_text_color);
    gui_set_text_border_color(fmrdo_main_draw.LSK_text_border_color);
    gui_measure_string(fmrdo_main_draw.LSK_text, &str_w, &str_h);

    x1 = FMRDO_LSK_X_OFFSET - 1;
    y1 = UI_device_height - str_h - FMRDO_LSK_Y_OFFSET - 1;
    x2 = str_w + FMRDO_LSK_X_OFFSET - 1;
    y2 = UI_device_height - FMRDO_LSK_Y_OFFSET - 1;
    gui_set_text_clip(x1, y1 - 1, x2, y2);
    if (r2lMMIFlag)
    {
        gui_move_text_cursor(x2, y1);
    }
    else
    {
        gui_move_text_cursor(x1, y1);
    }
    gui_print_bordered_text(fmrdo_main_draw.LSK_text);
#ifdef __MMI_TOUCH_SCREEN__
    LSK_area.num = 4;
    LSK_area.points = (mmi_pen_point_struct*) LSK_points;
    LSK_points[0].x = LSK_points[3].x = x1;
    LSK_points[0].y = LSK_points[1].y = y1;
    LSK_points[1].x = LSK_points[2].x = x2 + 1;
    LSK_points[2].y = LSK_points[3].y = y2 + 1;
#endif /* __MMI_TOUCH_SCREEN__ */ 
    /* show RSK */
    gui_set_text_color(fmrdo_main_draw.RSK_text_color);
    gui_set_text_border_color(fmrdo_main_draw.RSK_text_border_color);
    gui_measure_string(fmrdo_main_draw.RSK_text, &str_w, &str_h);
    x1 = UI_device_width - str_w - FMRDO_RSK_X_OFFSET - 1;
    y1 = UI_device_height - str_h - FMRDO_RSK_Y_OFFSET - 1;
    x2 = UI_device_width - FMRDO_RSK_X_OFFSET - 1;
    y2 = UI_device_height - FMRDO_RSK_Y_OFFSET - 1;
    gui_set_text_clip(x1, y1 - 1, x2, y2);
    if (r2lMMIFlag)
    {
        gui_move_text_cursor(x2, y1);
    }
    else
    {
        gui_move_text_cursor(x1, y1);
    }
    gui_print_bordered_text(fmrdo_main_draw.RSK_text);
#ifdef __MMI_TOUCH_SCREEN__
    RSK_area.num = 4;
    RSK_area.points = (mmi_pen_point_struct*) RSK_points;
    RSK_points[0].x = RSK_points[3].x = x1;
    RSK_points[0].y = RSK_points[1].y = y1;
    RSK_points[1].x = RSK_points[2].x = x2 + 1;
    RSK_points[2].y = RSK_points[3].y = y2 + 1;
#endif /* __MMI_TOUCH_SCREEN__ */ 
    gui_pop_text_clip();
    gui_pop_clip();

    /* draw components */
    mmi_fmrdo_redraw_main_frequency(g_fmrdo.frequency, TRUE);
    mmi_fmrdo_redraw_main_channel_name(0);
    mmi_fmrdo_redraw_main_channel_tuner(g_fmrdo.frequency);
    mmi_fmrdo_redraw_main_volume();
    mmi_fmrdo_redraw_main_push_button(
        FMRDO_BUTTON_STEP_DOWN,
        (BOOL) (g_fmrdo.is_button_down && (g_fmrdo.selected_button == FMRDO_BUTTON_STEP_DOWN)));
    mmi_fmrdo_redraw_main_push_button(
        FMRDO_BUTTON_STEP_UP,
        (BOOL) (g_fmrdo.is_button_down && (g_fmrdo.selected_button == FMRDO_BUTTON_STEP_UP)));
    mmi_fmrdo_redraw_main_toggle_button(
        FMRDO_BUTTON_SEARCH,
        (BOOL) (g_fmrdo.is_button_down && (g_fmrdo.selected_button == FMRDO_BUTTON_SEARCH)),
        g_fmrdo.is_search_on,
        TRUE);
    mmi_fmrdo_redraw_main_toggle_button(
        FMRDO_BUTTON_POWER,
        (BOOL) (g_fmrdo.is_button_down && (g_fmrdo.selected_button == FMRDO_BUTTON_POWER)),
        g_fmrdo.is_power_on,
        TRUE);
#ifdef __MMI_TOUCH_SCREEN__
    mmi_fmrdo_redraw_main_push_down_button(0, fmrdo_main_draw.volume_dec_button.down);
    mmi_fmrdo_redraw_main_push_down_button(1, fmrdo_main_draw.volume_inc_button.down);
    mmi_fmrdo_redraw_main_push_down_button(2, fmrdo_main_draw.setting_button.down);
#endif /* __MMI_TOUCH_SCREEN__ */ 

#if(UI_DOUBLE_BUFFER_SUPPORT)
    gui_unlock_double_buffer();
    gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1);
#endif /* (UI_DOUBLE_BUFFER_SUPPORT) */ 
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_redraw_main_frequency
 * DESCRIPTION
 *  
 * PARAMETERS
 *  freq            [IN]        
 *  is_shown        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_redraw_main_frequency(U16 freq, BOOL is_shown)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S32 x, y;
    S32 x1 = fmrdo_main_draw.frequency.x;
    S32 y1 = fmrdo_main_draw.frequency.y;
    S32 x2 = fmrdo_main_draw.frequency.x + fmrdo_main_draw.frequency.w - 1;
    S32 y2 = fmrdo_main_draw.frequency.y + fmrdo_main_draw.frequency.h - 1;
    S32 prefix_str_w, prefix_str_h, str_w, str_h;
    UI_character_type prefix_str[] = L"FM ";
    UI_character_type str[32];

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_wsprintf(str, "%d.%d", freq / 10, freq % 10);

#if(UI_DOUBLE_BUFFER_SUPPORT)
    gui_lock_double_buffer();
#endif 

    gui_push_clip();
    gui_set_clip(x1, y1, x2, y2);

    /* background & text */
#ifdef __GDI_MEMORY_PROFILE_2__
    gdi_draw_solid_rect(x1, y1, x2, y2, GDI_COLOR_TRANSPARENT);
#else 
    gui_show_image(0, 0, fmrdo_main_draw.bg_img);
#endif 

    if (is_shown)
    {
        gui_push_text_clip();
        gui_set_text_clip(x1, y1, x2, y2);

        if (g_fmrdo.is_power_on)
        {
            gui_set_text_color(fmrdo_main_draw.frequency_text_on_color);
        }
        else
        {
            gui_set_text_color(fmrdo_main_draw.frequency_text_off_color);
        }

        gui_set_font(&MMI_medium_font);
        gui_measure_string(str, &str_w, &str_h);
        gui_set_font(&MMI_small_font);
        gui_measure_string(prefix_str, &prefix_str_w, &prefix_str_h);
        x = x1 + (fmrdo_main_draw.frequency.w - str_w - prefix_str_w) / 2;
        y = y1 + (fmrdo_main_draw.frequency.h - str_h) / 2;

        /* prefix "FM " */
        if (r2lMMIFlag)
        {
            gui_move_text_cursor(x + prefix_str_w - 1, y + str_h - prefix_str_h - 1);
        }
        else
        {
            gui_move_text_cursor(x, y + str_h - prefix_str_h - 1);
        }
        gui_print_text(prefix_str);

        /* frequency number */
        gui_set_font(&MMI_medium_font);
        if (r2lMMIFlag)
        {
            gui_move_text_cursor(x + prefix_str_w + str_w - 1, y);
        }
        else
        {
            gui_move_text_cursor(x + prefix_str_w - 1, y);
        }
        gui_print_text(str);

        gui_pop_text_clip();
    }
    gui_pop_clip();

#if(UI_DOUBLE_BUFFER_SUPPORT)
    gui_unlock_double_buffer();
    gui_BLT_double_buffer(x1, y1, x2, y2);
#endif /* (UI_DOUBLE_BUFFER_SUPPORT) */ 
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_redraw_main_channel_name
 * DESCRIPTION
 *  
 * PARAMETERS
 *  other_str       [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_redraw_main_channel_name(UI_string_type other_str)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S32 x1 = fmrdo_main_draw.channel_name.x;
    S32 y1 = fmrdo_main_draw.channel_name.y;
    S32 x2 = fmrdo_main_draw.channel_name.x + fmrdo_main_draw.channel_name.w - 1;
    S32 y2 = fmrdo_main_draw.channel_name.y + fmrdo_main_draw.channel_name.h - 1;
    S32 str_w, str_h;
    UI_string_type str;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (other_str == 0)
    {
        if (g_fmrdo.channel_index >= 0)
        {
            str = fmrdo_main_draw.channel_name_str;
            kal_wsprintf(str, "%d. %w", g_fmrdo.channel_index + 1, g_fmrdo.channel_list.name[g_fmrdo.channel_index]);
        }
        else
        {
            str = (UI_string_type) GetString(STR_ID_FMRDO_TITLE);
        }
    }
    else
    {
        str = other_str;
    }

    /* stop previous scroll text */
    if (!fmrdo_main_draw.is_channel_name_scroll_ready)
    {
        gui_scrolling_text_stop(&fmrdo_main_draw.channel_name_scroll);
    }
    else
    {
        fmrdo_main_draw.is_channel_name_scroll_ready = TRUE;
    }

    gui_create_scrolling_text(
        &fmrdo_main_draw.channel_name_scroll,
        x1 + 2,
        y1 + 1,
        fmrdo_main_draw.channel_name.w - 4,
        fmrdo_main_draw.channel_name.h - 2,
        str,
        mmi_fmrdo_scroll_channel_name_hdlr,
        mmi_fmrdo_redraw_main_background,
        fmrdo_main_draw.channel_name_text_color,
        fmrdo_main_draw.channel_name_text_border_color);
    fmrdo_main_draw.channel_name_scroll.text_font = MMI_medium_font;
    fmrdo_main_draw.channel_name_scroll.flags |= UI_SCROLLING_TEXT_BORDERED_TEXT;

#if(UI_DOUBLE_BUFFER_SUPPORT)
    gui_lock_double_buffer();
#endif 

    gui_push_clip();
    gui_set_clip(x1, y1, x2, y2);

    /* stop scrolling if necessary */
    gui_scrolling_text_stop(&fmrdo_main_draw.channel_name_scroll);

    gui_set_font(&MMI_medium_font);
    gui_measure_string(str, &str_w, &str_h);

    /* background */
#ifdef __GDI_MEMORY_PROFILE_2__
    gdi_draw_solid_rect(x1, y1, x2, y2, GDI_COLOR_TRANSPARENT);
#else 
    gui_show_image(0, 0, fmrdo_main_draw.bg_img);
#endif 

    /* text */
    if (str_w > fmrdo_main_draw.channel_name.w - 4)
    {
        /* scrolling */
        gui_change_scrolling_text(&fmrdo_main_draw.channel_name_scroll, str);
        gui_show_scrolling_text(&fmrdo_main_draw.channel_name_scroll);
    }
    else
    {
        /* no scrolling */
        gui_push_text_clip();
        gui_set_text_clip(x1, y1, x2, y2);

        gui_set_text_color(fmrdo_main_draw.channel_name_text_color);
        gui_set_text_border_color(fmrdo_main_draw.channel_name_text_border_color);
        if (r2lMMIFlag)
        {
            gui_move_text_cursor(
                x1 + (fmrdo_main_draw.channel_name.w + str_w) / 2,
                y1 + (fmrdo_main_draw.channel_name.h - str_h) / 2);
        }
        else
        {
            gui_move_text_cursor(
                x1 + (fmrdo_main_draw.channel_name.w - str_w) / 2,
                y1 + (fmrdo_main_draw.channel_name.h - str_h) / 2);
        }
        gui_print_bordered_text(str);
        gui_pop_text_clip();
    }

    gui_pop_clip();

#if(UI_DOUBLE_BUFFER_SUPPORT)
    gui_unlock_double_buffer();
    gui_BLT_double_buffer(x1, y1, x2, y2);
#endif /* (UI_DOUBLE_BUFFER_SUPPORT) */ 
}


/*****************************************************************************
 * FUNCTION
 *  mmi_fmrdo_redraw_main_channel_tuner
 * DESCRIPTION
 *  
 * PARAMETERS
 *  freq        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_fmrdo_redraw_main_channel_tuner(U16 freq)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -