📄 audioplayerdisplaylyric.c
字号:
//add by liuxn end 20070510
#endif
// wangbei del end
text_bg_color );//zx modify 20060920s //modify by liuxn 20070510
//audply_main_scrolling_title.text_font = &MMI_medium_font; //delete by liuxn 20070510
audply_main_scrolling_title.text_font = MMI_medium_font; //add by liuxn 20070510
init_scrolling_done = TRUE;
}
#if(UI_DOUBLE_BUFFER_SUPPORT)
gui_lock_double_buffer();
#endif
gui_push_clip();
gui_set_clip( x1, y1, x2, y2 );
// title
gui_scrolling_text_stop( &audply_main_scrolling_title );
gui_set_font( &MMI_medium_font );
gui_measure_string( g_audply.title, &w, &character_height );
if( w > audply_main_title.w )
{
// scrolling
gui_change_scrolling_text( &audply_main_scrolling_title, g_audply.title );
gui_show_scrolling_text( &audply_main_scrolling_title );
}
else
{
// background
mmi_audply_redraw_main_title_background( x1, y1, x2, y2 );
gui_push_text_clip();
gui_set_text_clip( x1, y1, x2, y2 );
//zx modify begin 20060920
//gui_set_text_color( gui_color(0,9,255));
//gui_set_text_color( gui_color(2,211,255)); //delete by liuxn 20070510
//gui_set_text_color( gui_color(255,255,255)); //delete by liuxn 20070510
gui_set_text_color(gui_color(213,188,53)); // wangbei add 20070416
// wangbei del start 20070416
#if 0
#ifdef __MT160_MP3PLAYER_FONT_COLOR__ //add by liuxn 20070510
gui_set_text_color(gui_color(213,188,53)); //add by liuxn 20070510
#else
gui_set_text_color( gui_color(2,211,255));
#endif
#endif
// wangbei del end
//zx modify end
if( r2lMMIFlag )
gui_move_text_cursor( x1 + (audply_main_title.w + w )/2, y1 );
else
gui_move_text_cursor( x1 + (audply_main_title.w - w )/2, y1 );
gui_set_line_height( character_height );
gui_print_text( g_audply.title );
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
}
S32 lyric_mmi_audply_get_play_miliSeconds()
{
// return (S32)((g_audply.const_seconds + g_audply.play_seconds) *4.615); //delete by liuxn 20070510
return (S32)(g_audply.old_play_time); //add by liuxn 20070510
}
void lyric_mmi_audply_LyricScrolling_resumed()
{
S16 i=0;
U32 ElapseTime;
ElapseTime=lyric_mmi_audply_get_play_miliSeconds();
if(LyricFlag && g_audply.state == STATE_PLAY)
{
lyric_DisplayLyric();
/* 找到下一个时间记录*/
for(i=LyricCount+1;i<DisplayLineNum;i++)
{
if((Lyric_Info[i].TimeInfo>0)&&((Lyric_Info[i].TimeInfo*10)>ElapseTime))
{
break;
}
}
StartTimer(LYRIC_TIMER,(Lyric_Info[i].TimeInfo*10-ElapseTime),lyric_mmi_audply_lyric_timer);
}
}
void lyric_mmi_audply_redraw_main_title_lyric()
{
/*显示歌曲名*/
if( g_audply.in_main_screen )
{
lyric_mmi_audply_redraw_main_title ();
}
/*显示歌词*/
if((g_audply.state==STATE_PLAY))
{
if(LyricFlag)
{
gui_hide_animations();
// lyric_DisplayLyric();
lyric_Lyric_Scrolling_Display();
}
}
}
void lyric_mmi_audply_lyric_timer(void)
{
S32 elapse_time;
if( g_audply.state == STATE_PLAY )
{
elapse_time=lyric_mmi_audply_get_play_miliSeconds();
StopTimer(LYRIC_SCROLLING_TIMER);
if((LyricCount+Lyric_Info[LyricCount].LineNum)< DisplayLineNum)
{
while((Lyric_Info[LyricCount].TimeInfo==0)||(Lyric_Info[LyricCount].TimeInfo>60000))
{
LyricCount++;
if(LyricCount>=DisplayLineNum)
break;
}
TimeInter=Lyric_Info[LyricCount+Lyric_Info[LyricCount].LineNum].TimeInfo*10-elapse_time;
if((TimeInter>0)&&(TimeInter<=500))
{
ScrollingNum=1;
StartTimer(LYRIC_TIMER,TimeInter,lyric_mmi_audply_lyric_timer);
}
else if(TimeInter>500)
{
ScrollingNum=Lyric_Info[LyricCount].LineNum*LYRIC_ScrollingTimes;
if(ScrollingNum>0)
StartTimer(LYRIC_TIMER,TimeInter,lyric_mmi_audply_lyric_timer);
}
else
{
while(TimeInter<0)
{
if(Lyric_Info[LyricCount].LineNum==0)
break;
LyricCount+=Lyric_Info[LyricCount].LineNum;
TimeInter=Lyric_Info[LyricCount+Lyric_Info[LyricCount].LineNum].TimeInfo*10-elapse_time;
}
if((LyricCount<DisplayLineNum)&&(TimeInter>=0))
{
ScrollingNum=Lyric_Info[LyricCount].LineNum*LYRIC_ScrollingTimes;
if(ScrollingNum>0)
StartTimer(LYRIC_TIMER,TimeInter,lyric_mmi_audply_lyric_timer);
}
}
if(ScrollingNum!=0)
Scrolling_Freq=TimeInter/ScrollingNum;
Scrolling_Index=0;
}
y_firt_row= audply_main_music_wave.y+6;
y_sencond_row=y_firt_row+audply_main_title.h+6;
y_third_row=y_sencond_row+audply_main_title.h+6;
y_fourth_row=y_third_row+audply_main_title.h+6;
lyric_chang_color=TRUE;
lyric_mmi_audply_redraw_main_title_lyric();
}
}
void lyric_mmi_audply_play_next_pre(void)
{
gui_hide_animations();
#if(UI_DOUBLE_BUFFER_SUPPORT)
gui_lock_double_buffer();
#endif
gui_push_clip();
gui_set_clip( audply_main_music_wave.x, audply_main_music_wave.y,
audply_main_music_wave.x + audply_main_music_wave.w-1, audply_main_music_wave.y+ audply_main_music_wave.h - 1 );
gui_push_text_clip();
gui_set_text_clip( audply_main_music_wave.x, audply_main_music_wave.y,
audply_main_music_wave.x + audply_main_music_wave.w-1, audply_main_music_wave.y+ audply_main_music_wave.h - 1);
if ( g_audply.in_main_screen)
//if (lyric_mmi_audply_is_show_back()) //dyj add 20061206 //dyj del 20061208
lyric_mmi_audply_redraw_main_lrc_background();
gui_pop_text_clip();
gui_pop_clip();
#if(UI_DOUBLE_BUFFER_SUPPORT)
gui_unlock_double_buffer();
gui_BLT_double_buffer( audply_main_music_wave.x, audply_main_music_wave.y,
audply_main_music_wave.x + audply_main_music_wave.w-1, audply_main_music_wave.y+ audply_main_music_wave.h - 1 );
#endif
lyric_stop_display_lyric(TRUE);
}
/* //lrj del 20060829
void lyric_mmi_audply_redraw_main_music_wave( void )
{
S32 character_height, w;
S32 x1 = audply_main_music_wave.x;
S32 y1 = audply_main_music_wave.y;
S32 x2 = audply_main_music_wave.x + audply_main_music_wave.w - 1;
S32 y2 = audply_main_music_wave.y + audply_main_music_wave.h - 1;
#if(UI_DOUBLE_BUFFER_SUPPORT)
gui_lock_double_buffer();
#endif
gui_hide_animations();
gui_push_clip();
gui_set_clip( x1, y1, x2, y2 );
gdi_image_draw_animation(x1, y1, audply_main_animation.animation_img, NULL );
//gdi_image_draw_animation_id(x1,y1,audply_main_music_wave.wave_img,0);
gui_pop_clip();
#if(UI_DOUBLE_BUFFER_SUPPORT)
gui_unlock_double_buffer();
gui_BLT_double_buffer( x1, y1, x2, y2 );
#endif
}
*/
BOOL lyric_mmi_audply_is_show_back()
{
return LyricFlag&&g_audply.in_main_screen&&mmi_audply_is_playing();
}
void lyric_init(int x,int y,int w,int h) /*歌词显示在音波动画里*/
{
// #ifdef __MMI_AUDIO_PLAYER_ANIMATION__ //lrj modify 20060829
// animation
audply_main_music_wave.x = x;
audply_main_music_wave.y = y;
//wangbei modify start 20071010
#ifdef __NEW_AUDIO_SKIN_UI_STYLE__
audply_main_music_wave.w = w+89;
#else
audply_main_music_wave.w = w;
#endif
//wangbei modify end
audply_main_music_wave.h = h ;
audply_main_music_wave.animation_img=NULL;//audply_main_animation.animation_img;
// #endif
}
void lyric_start_display_lyric()
{
if(LyricFlag)
{
Pixtel_EveryTime=(audply_main_title.h+6)/LYRIC_ScrollingTimes;
if ( g_audply.in_main_screen)
lyric_mmi_audply_redraw_main_lrc_background();
if(LyricCount==0)
{
if(Lyric_Info[LyricCount].TimeInfo!=0)
{
StartTimer(LYRIC_TIMER,(Lyric_Info[LyricCount].TimeInfo)*10,lyric_mmi_audply_lyric_timer);
}
else
{
StartTimer(LYRIC_TIMER,(Lyric_Info[LyricCount].TimeInfo)*10+20,lyric_mmi_audply_lyric_timer);
}
}
else
{
lyric_mmi_audply_LyricScrolling_resumed();
}
}
/* //lrj del 20060829
else
{
if(g_audply.in_main_screen)
{
lyric_mmi_audply_redraw_main_music_wave();
}
}
*/
}
void lyric_stop_display_lyric(BOOL clear)
{
StopTimer(LYRIC_TIMER);
StopTimer(LYRIC_SCROLLING_TIMER);
if(clear)
{
LyricCount=0;
// LyricFlag=0; //dyj del 20070109
//NicoLin add for lyric synchronize display use app based memory 20070525
#ifdef __LYRIC_USE_APP_ASM__
mmi_lyric_free_app_asm();
//kal_prompt_trace(MOD_MED, "Lyric debug: lyric_stop_display_lyric():free memory");
#endif
//NicoLin add end
}
}
//NicoLin add for lyric synchronize display use app based memory 20070525
#ifdef __LYRIC_USE_APP_ASM__
/*****************************************************************************
* FUNCTION
* mmi_lyric_alloc_app_asm
* DESCRIPTION
* allocate memory from app asm's pool
* PARAMETERS
* void
* RETURNS
* BOOL TRUE if memory is successfully allocated
*****************************************************************************/
BOOL mmi_lyric_alloc_app_asm(void)
{
Lyric * p_appmem_buf;
LyricInfo * p_appmem_buf2;
S8 * p_appmem_buf3;
#ifdef MMI_ON_HARDWARE_P // wangbei add 20070625
p_appmem_buf =(Lyric *)med_alloc_ext_mem((LYRIC_MaxRealNum)*sizeof(Lyric));
p_appmem_buf2=(LyricInfo *)med_alloc_ext_mem((LYRIC_MaxDisplayLine+3)*sizeof(LyricInfo));
p_appmem_buf3=(S8 *)med_alloc_ext_mem(LYRIC_MaxLyricNum*LYRIC_MaxLen);
// kal_prompt_trace(MOD_MED, "Lyric debug: mmi_lyric_alloc_app_asm() p_appmem_buf=%d,p_appmem_buf2=%d",p_appmem_buf,p_appmem_buf2);
#endif // wangbei add 20070625
if (p_appmem_buf&&p_appmem_buf2)
{
MyLyric= p_appmem_buf;
Lyric_Info=p_appmem_buf2;
Lyric_List=(Type_Lyric_List)p_appmem_buf3;
return TRUE;
}
return FALSE;
}
/*****************************************************************************
* FUNCTION
* mmi_lyric_free_app_asm
* DESCRIPTION
* free app based ASM used by photoeditor
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_lyric_free_app_asm(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
//MMI_ASSERT(MyLyric);
// MMI_ASSERT(Lyric_Info);
if (MyLyric)
{
#ifdef MMI_ON_HARDWARE_P // wangbei add 20070625
med_free_ext_mem((void **)&MyLyric);
#endif // wangbei add 20070625
// kal_prompt_trace(MOD_MED, "Lyric debug: med_free_ext_mem((void **)&MyLyric)");
MyLyric = NULL;
}
if (Lyric_Info)
{
#ifdef MMI_ON_HARDWARE_P // wangbei add 20070625
med_free_ext_mem((void **)&Lyric_Info);
#endif // wangbei add 20070625
// kal_prompt_trace(MOD_MED, "Lyric debug: med_free_ext_mem((void **)&Lyric_Info)");
Lyric_Info = NULL;
}
if(Lyric_List)
{
#ifdef MMI_ON_HARDWARE_P // wangbei add 20070625
med_free_ext_mem((void **)&Lyric_List);
#endif // wangbei add 20070625
// kal_prompt_trace(MOD_MED, "Lyric debug: med_free_ext_mem((void **)&Lyric_List)");
Lyric_List = NULL;
}
}
/*****************************************************************************
* FUNCTION
* mmi_lyric_del_scr_callback
* DESCRIPTION
* delete screen id callback handler of lyric applications
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
U8 mmi_lyric_del_scr_callback(void* ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
mmi_lyric_free_app_asm();
// kal_prompt_trace(MOD_MED, "Lyric debug:mmi_lyric_del_scr_callback()");
return MMI_FALSE;
}
#endif /* __LYRIC_USE_APP_ASM__ */
//NicoLin add end
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -