display_aviq.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:22k
源码类别:

DVD

开发平台:

C/C++

  1. /*
  2. *  AVIQ new search function
  3. *  <note:> system performance too bad ,and have some bugs... we must fine tune , terry
  4. */
  5. #include "memmap0.h"
  6. //
  7. // DispCookOSD0
  8. //      Prepare the content of OSD0 to temp buffer
  9. //      (from OSD0_TEMP_YA-th KBytes in DRAM, size=38*16*1*24*4/8=7104 Bytes)
  10. //
  11. //      input   : bChange
  12. //                  1 : re-generate all content
  13. //                  0 : only update timing display parts
  14. //                dwTime :
  15. //                  < 0 : remain time (-00:00:00)
  16. //                  > 0 : elapsed time( 00:00:00)
  17. //
  18. //      output  : none
  19. //
  20. //      side-effect : none
  21. //
  22. //      notes:
  23. //      0     5          15  18   22  25
  24. //      CD    TRACK      SPK PBC  REP TIME
  25. //      VCD   TRACK      SPK PBC  REP TIME
  26. //      SVCD  TRACK      SPK PBC  REP TIME
  27. //      DVD   TITLE      CHAPTER      TIME
  28. //      MP3   TRACK      SPK      REP TIME
  29. //
  30. //      Color table
  31. //          palette_16color_setup(defined in osd1.c)
  32. //
  33. void hi_light_time(int pos)
  34. {
  35.     int time=0,shift_base=0;
  36.     if((index_x-5)<=1)
  37.     {
  38.         time=goto_hour;
  39.         shift_base=4;
  40.     }
  41.     else if((index_x-5)<=3)
  42.     {
  43.         time=goto_min;
  44.         shift_base=3;
  45.     }
  46.     else if((index_x-5)<=5)
  47.     {
  48.         time=goto_sec;
  49.         shift_base=2;
  50.     }
  51.     
  52.     if((index_x-5)%2==0)//even
  53.     {
  54.         psprintf(linebuf, "%01d", time/10); 
  55.         io_write("p");
  56.         do_DispOSD0String(pos+(index_x-shift_base), 0, linebuf,DISP_SHADOW,DISP_YGREEN); 
  57.     }    
  58.     else
  59.     {
  60.         psprintf(linebuf, "%01d", time%10); 
  61.         io_write("o");
  62.         do_DispOSD0String(pos+(index_x-shift_base), 0, linebuf,DISP_SHADOW,DISP_YGREEN);  
  63.         
  64.     }   
  65. }
  66. void hi_light_chapter(int id,int pos)//kenny 2002/4/13
  67. {
  68.     if(index_x==2)
  69.     {
  70.         psprintf(linebuf, "%01d",id/100);  
  71.         io_write("n");
  72.         do_DispOSD0String(pos, 0, linebuf,DISP_SHADOW,DISP_YGREEN);
  73.     }
  74.     else if(index_x==3)
  75.     {
  76.         psprintf(linebuf, "%01d",(id%100)/10);     
  77.         io_write("m");
  78.         do_DispOSD0String(pos+1, 0, linebuf,DISP_SHADOW,DISP_YGREEN);
  79.     }
  80.     else if(index_x==4)
  81.     {
  82.         psprintf(linebuf, "%01d",id%10);       
  83.         io_write("l");
  84.         do_DispOSD0String(pos+2, 0, linebuf,DISP_SHADOW,DISP_YGREEN);    
  85.     }
  86. }   
  87. void hi_light_title(int id, int pos)
  88. {
  89.     if(index_x==0)
  90.     {
  91.         psprintf(linebuf, "%01d",id/10);    
  92.         io_write("k");
  93.         do_DispOSD0String(pos, 0, linebuf,DISP_SHADOW,DISP_YGREEN);
  94.     }
  95.     else if(index_x==1)
  96.     {
  97.         psprintf(linebuf, "%01d",id%10);        
  98.         io_write("j");
  99.         do_DispOSD0String(pos+1, 0, linebuf,DISP_SHADOW,DISP_YGREEN);
  100.     }
  101. }
  102. // YW ------- osd ---------- [Top]
  103. // Modify 020725
  104. void Print2OSDmem(int id,int val,UINT8 pos)
  105. {
  106. BYTE    fontColor, bkColor; 
  107.     
  108. bkColor = DISP_SHADOW; //OSD shadow color
  109. fontColor = DISP_GREEN; //green
  110.     
  111. if(val) {       
  112. fontColor = DISP_YGREEN; //yellow-green                       
  113. if((full_scrn&GOTO) && !(val&COOK_S_LANG) && !(val&COOK_S_MODE)) {    
  114. #ifdef NEW_GOTO//kenny 2002/4/13
  115. if(val&COOK_S_TIMER) {
  116. if(index_x>=5)
  117. {
  118. UINT32 time=disp_goto_time;
  119. disp_goto_time=disp_goto_time%10000000;
  120. goto_sec=time%100;            
  121. time=time/100;
  122. goto_min=time%100;
  123. time=time/100;
  124. goto_hour=time%100;   
  125. psprintf(linebuf, " %02d:%02d:%02d",goto_hour, goto_min, goto_sec);            
  126. } else {
  127. psprintf(linebuf, " %02d:%02d:%02d",show_time_hh, show_time_mm, show_time_ss);
  128. if((remain==DISC_REMAIN_TIME)||(remain==TRK_REMAIN_TIME)) // terry 2002/6/4 09:48PM : solve time in goto mode without '-'
  129.  
  130. linebuf[0]='-';
  131. }
  132. } else 
  133. {
  134. if(pos!=COOK_CHP_VAL) 
  135. {//title            
  136. // yw0809
  137. if(dvd_title)
  138. id=dvd_title;
  139. disp_dvd_title = id;                              
  140. psprintf(linebuf, "%02d/%02d",id,val);
  141. if(t_disp%10 == 3)
  142. {
  143. if(((index_x == 0) && (pos == COOK_AUDIO_VAL)) || ((index_x == 1) && (pos == COOK_SUBTITLE_VAL)))
  144. {
  145. fontColor = DISP_SHADOW;
  146. bkColor = DISP_YGREEN;
  147. }
  148. else
  149. {
  150. bkColor = DISP_SHADOW; 
  151. fontColor = DISP_YGREEN; 
  152. }
  153. }
  154. } else {
  155. if(dvd_chapter) 
  156. id=dvd_chapter;
  157. disp_dvd_chapter = id;  
  158. psprintf(linebuf, "%03d/%03d",id,val);          
  159. }
  160. }   
  161. #else   //#ifdef NEW_GOTO
  162. if(val&COOK_S_TIMER) {
  163. if(index_x==2) {
  164. UINT32 time=disp_goto_time;
  165.                     
  166. bkColor = DISP_GBLUE;                        
  167. fontColor = DISP_WHITE; 
  168. disp_goto_time=disp_goto_time%10000000;
  169. goto_sec=time%100;            
  170. time=time/100;
  171. goto_min=time%100;
  172. time=time/100;
  173. goto_hour=time%100;             
  174. psprintf(linebuf, " %02d:%02d:%02d",goto_hour, goto_min, goto_sec);            
  175. } else {
  176.                     psprintf(linebuf, " %02d:%02d:%02d", show_time_hh,show_time_mm, show_time_ss);
  177. }
  178. } else {
  179. if(pos!=COOK_CHP_VAL) {//title          
  180. if(index_x==0) {
  181. bkColor = DISP_GBLUE;                                
  182. fontColor = DISP_WHITE; 
  183. }
  184.                     
  185. if(index_x!=2) {
  186. if(dvd_title) {
  187. if(dvd_title>val)
  188. dvd_title=dvd_title%10;
  189.                             
  190. id=dvd_title;
  191. }
  192. }
  193. psprintf(linebuf, "%02d",id);                   
  194. } else {
  195. if(index_x==1) {
  196. bkColor = DISP_GBLUE;    
  197. fontColor = DISP_WHITE; 
  198. }
  199. if(index_x!=2) {
  200. if(dvd_chapter) {
  201. if(dvd_chapter>val)
  202. dvd_chapter=dvd_chapter%10;
  203.                             
  204. id=dvd_chapter;
  205. }
  206. }
  207. psprintf(linebuf, "%03d",id);   
  208. }
  209.                 
  210.                 io_write("b");
  211. do_DispOSD0String(pos, 0, linebuf, fontColor,bkColor); 
  212. bkColor = DISP_SHADOW; //OSD shadow color                
  213. if(pos==COOK_CHP_VAL) {
  214. pos+=3;
  215. psprintf(linebuf, "/%03d",val); 
  216. } else {
  217. pos+=2;
  218. psprintf(linebuf, "/%02d",val);
  219. }
  220. }               
  221. #endif//NEW_GOTO
  222.         }else if(val&COOK_S_TIMER)
  223.         {
  224.             psprintf(linebuf, " %02d:%02d:%02d", show_time_hh, show_time_mm,show_time_ss);         
  225.             if((remain==DISC_REMAIN_TIME)||(remain==TRK_REMAIN_TIME)) // terry 2002/6/4 09:48PM : solve time in goto mode without '-'
  226. linebuf[0]='-';
  227.             
  228.         }else if(val&COOK_S_LANG)
  229.         {           
  230.          /* alan modifide 2002/5/30 09:53PM to cut SUP-LAN fit in display */
  231.          UINT8 *str=get_lang_name(id);
  232. BYTE len=strlen(str);
  233. if(len == 1)
  234. str = "  ";                 
  235.                  
  236. strcpy(linebuf,str);//nono 2-11-22 18:20
  237. if (!IsOSDChinese()||((str[0]>='A')&&(str[0]<='Z'))) 
  238.                         {   
  239. str[MAX_ENG_WORDS]='';
  240.                         } else {
  241. //if (len>4){
  242. if (len>6){//nono 2-11-22 11:06
  243. #if defined(USE_TCHINESE_OSD)//2-10-9 17:51
  244. psprintf(linebuf+2,"%s",TCh_yu);
  245. #else
  246. psprintf(linebuf+2,"%s",Ch_yu2);
  247. #endif
  248. /*
  249. str[2]='r';
  250. str[3]='x32';
  251. str[4]='';
  252. */
  253. }
  254.                         }                        
  255.                         //psprintf(linebuf,"%s",str);
  256.                         
  257. //#ifndef OSD_Function_Disable
  258. if((((index_x == 0) && (pos == COOK_AUDIO_LANG)) || ((index_x == 1) && (pos == COOK_SUBTITLE_LANG)) ) && (full_scrn&GOTO))
  259. {
  260. fontColor = DISP_SHADOW;
  261. bkColor = DISP_YGREEN;
  262. }
  263. else
  264. {
  265. bkColor = DISP_SHADOW; 
  266. fontColor = DISP_YGREEN; 
  267. }
  268. //#endif  
  269. } else if(val&COOK_S_MODE)
  270. {
  271. //#ifndef OSD_Function_Disable
  272. if((index_x == 0) && (pos == COOK_AUDIO_TYPE) && (full_scrn&GOTO)) 
  273. {
  274. fontColor = DISP_SHADOW;
  275. bkColor = DISP_YGREEN;
  276. }
  277. else
  278. {
  279. bkColor = DISP_SHADOW; 
  280. fontColor = DISP_YGREEN; 
  281. }
  282. //#endif 
  283. psprintf(linebuf,"%s",get_audio_mode());
  284. }       
  285. else 
  286. {
  287. psprintf(linebuf, "%d/%d",id,val);
  288. }
  289.         } else {
  290. if(id==STR_OS_ICON_REP0) {
  291. id+=rep_mode; 
  292. if(rep_mode == REPEAT_DISC)         // maybe add another icon for repeat directory,panxing, 2002-3-13
  293. id--;
  294. }
  295. psprintf(linebuf,"%s",_OsdMessegeFont1[osd_font_mode][id]);
  296. if( (pos==COOK_CD)&&((t_disp%10==1)||(t_disp%10==2)) ) { 
  297. fontColor = DISP_ORANGE;
  298. }
  299. switch(id)
  300. {
  301. case STR_OS_ICON_SPK :
  302. // CDDA,CDROM,SVCD,VCD SPK position on page 1,index = 2
  303. // DVD position on page 2,index = 0
  304. if((full_scrn&GOTO) && ((index_x == 2 && t_disp%10==1)||(index_x == 0 && t_disp%10==2)) )
  305. {
  306. fontColor = (user_mute !=0 ) ? DISP_GRAY : DISP_GBLUE;
  307. bkColor = DISP_YGREEN;
  308. }
  309. else
  310. {
  311. bkColor = DISP_SHADOW;
  312. fontColor = (user_mute !=0 ) ? DISP_GRAY : DISP_YGREEN;
  313. }
  314. break;
  315. case STR_OS_PBC :
  316. // CDDA,CDROM,SVCD,VCD SPK position on page 2,index = 0
  317. if((full_scrn&GOTO) && (index_x == 0 && t_disp%10 ==2))
  318. {
  319. fontColor = (IsPBCOn()!=0) ? DISP_GBLUE : DISP_GRAY;
  320. bkColor = DISP_YGREEN;
  321. }
  322. else
  323. {
  324. bkColor = DISP_SHADOW;        
  325. fontColor = (IsPBCOn()!=0) ? DISP_YGREEN : DISP_GRAY;
  326. }
  327. break;
  328. case STR_OS_ICON_REP0 :
  329. case STR_OS_ICON_REP1 :
  330. case STR_OS_ICON_REPD :
  331. // CDDA,CDROM,SVCD,VCD SPK position on page 1,index = 4
  332. // DVD position on page 2,index = 1
  333. if((full_scrn&GOTO) && ((index_x == 4 && t_disp%10==1)||(index_x == 1 && t_disp%10==2)) ) //index_x == 4)
  334. {
  335. fontColor = DISP_GBLUE;
  336. bkColor = DISP_YGREEN;
  337. }
  338. else
  339. {
  340. bkColor = DISP_SHADOW;
  341. if(id == STR_OS_ICON_REP0)
  342. fontColor = DISP_GRAY;
  343. else if(id == STR_OS_ICON_REP1)
  344. fontColor = DISP_YGREEN;
  345. else
  346. fontColor = DISP_ORANGE; 
  347. }
  348. break;
  349. case STR_OS_CHL :
  350. case STR_OS_CHR :
  351. case STR_OS_AUTO_L :
  352. case STR_OS_AUTO_R :
  353. // CDDA,CDROM,SVCD,VCD SPK position on page 1,index = 3
  354. case STR_OS_STEREO :
  355. // CDDA,CDROM,SVCD,VCD SPK position on page 1,index = 3
  356. // DVD position on page 2,index = 2               
  357. switch(audio_channel) 
  358. {
  359. case 0: // STEREO
  360. fontColor = DISP_YGREEN;
  361. break;
  362. case 1:
  363. fontColor = DISP_ORANGE;
  364. break;
  365. case 2:
  366. fontColor = DISP_GREEN;                       
  367. break;
  368. case 3:
  369. case 4:
  370. fontColor = DISP_WHITE;  
  371. break;
  372. }
  373. if(full_scrn&GOTO && ((index_x == 3 && t_disp%10 ==1) ||(index_x == 3 && t_disp%10 ==2 && cd_type_loaded==CDDVD))) //yw 021007
  374. {
  375. fontColor = DISP_GBLUE;
  376. bkColor = DISP_YGREEN;  
  377. }
  378. else
  379. bkColor = DISP_SHADOW;  
  380. break;
  381. case STR_OS_VSURROUND_SETUP :
  382. case STR_OS_OFF :
  383. case STR_OS_LTRT_SETUP :
  384.                     // DVD position on page 2,index = 3  
  385. //#ifdef OSD_Function_Disable
  386.                     //   if((full_scrn&GOTO) && (index_x == 2) && (cd_type_loaded==CDDVD))
  387. //#else
  388. if((full_scrn&GOTO) && (index_x == 3) && (cd_type_loaded==CDDVD))
  389. //#endif
  390. {
  391. fontColor = DISP_GBLUE;
  392. bkColor = DISP_YGREEN;
  393. }
  394. else
  395. {
  396. bkColor = DISP_SHADOW;
  397. if(id == STR_OS_VSURROUND_SETUP)
  398. fontColor = DISP_WHITE;
  399. else if(id == STR_OS_OFF)
  400. fontColor = DISP_GRAY;
  401. else
  402.                             fontColor = DISP_ORANGE;
  403. }
  404. //#ifndef OSD_Function_Disable
  405. if((index_x == 1) && (pos == COOK_SUBTITLE_VAL) && (id == STR_OS_OFF) && (t_disp%10 ==3) && (full_scrn&GOTO))
  406. {
  407. fontColor = DISP_SHADOW;
  408. bkColor = DISP_YGREEN;
  409. }
  410. //#endif
  411. break;
  412. case STR_OS_SPACE :
  413. bkColor = DISP_WHITE;
  414. fontColor = 0;
  415. break;
  416. case STR_OS_NONE :
  417. //#ifdef OSD_Function_Disable
  418. //  if((index_x == 0) && (pos == COOK_AUDIO_VAL) && (full_scrn&GOTO))
  419. //#else
  420. if((((index_x == 0) && (pos == COOK_AUDIO_VAL))||((index_x == 2) && (pos == COOK_ANGLE_VAL))) && (full_scrn&GOTO))
  421. //#endif
  422. {
  423. fontColor = DISP_SHADOW;
  424. bkColor = DISP_YGREEN;
  425. }
  426. else
  427. {
  428. bkColor = DISP_SHADOW; 
  429. fontColor = DISP_YGREEN; 
  430. }
  431. break;
  432.                 }
  433.         }
  434.         {//bad designed , we maybe try other way.
  435. //int len=strlen(linebuf);
  436. //if((len+pos)>=37)
  437. //linebuf[len-1]=0;
  438. //bkColor = 0;
  439. io_write("a");
  440. do_DispOSD0String(pos, 0, linebuf, fontColor, bkColor);
  441. #ifdef NEW_GOTO//kenny 2002/4/13
  442. if(full_scrn&GOTO) {
  443. if((index_x>=5)&&(val&COOK_S_TIMER))
  444. hi_light_time(pos);
  445. else if(pos==COOK_CHP_VAL) 
  446. {
  447. if(!(cd_type_loaded!=CDDVD))//VCD
  448. {
  449. hi_light_chapter(id,pos);
  450. }
  451. }
  452. else if(pos==COOK_TRK_VAL)
  453. hi_light_title(id,pos);
  454. }
  455. #endif
  456.         }
  457. }
  458. // YW ------- osd ---------- [Top]
  459. // Modify 020725
  460. void DispCookOSD0(BYTE bChange)
  461. {
  462. UINT8  *buf;
  463. //UINT32  i;  
  464. if (t_disp==0) return;
  465. buf = (UINT8 *)(SDRAM_BASE + (OSD0_TEMP_YA*1024));
  466. if (bChange) 
  467. {
  468. if((cd_type_loaded==CDDA) && (rep_ab_mode==REPEAT_AB_IDLE))
  469.             //when cd_type_loaded=CDDA, system will check which cddaType(CDDA/DTSCD/HDCD),
  470.             //to reduce " " ,  "HD/DTS" string(on OSD) change
  471.             //we add this checking
  472. cddaType = 0;            
  473. //clear all temp-buf
  474. memset(buf,0,8*1024);
  475. switch(t_disp%10)
  476. {
  477. case 1:
  478. Print2OSDmem(osd_cd_id[cd_type_loaded],0,COOK_CD);
  479. //Print2OSDmem(STR_OS_ICON_CLOCK,0,COOK_CLOCK); 
  480. switch(cd_type_loaded)
  481. {
  482. case CDSVCD:
  483. case CDVCD20:
  484. case CDVCD10:
  485. Print2OSDmem(STR_OS_TRACK,0,COOK_TRK); 
  486. Print2OSDmem(disp_trk_now,cd_total_trk(),COOK_TRK_VAL);
  487. switch(audio_channel)
  488. {
  489. case 0:
  490. Print2OSDmem(STR_OS_STEREO,0,COOK_PBC+1);
  491. break;
  492. case 1:
  493. Print2OSDmem(STR_OS_CHL,0,COOK_PBC+1);
  494. break;
  495. case 2:
  496. Print2OSDmem(STR_OS_CHR,0,COOK_PBC+1);
  497. break;
  498. case 3:
  499. Print2OSDmem(STR_OS_AUTO_L,0,COOK_PBC-1);
  500. break;
  501. case 4:
  502. Print2OSDmem(STR_OS_AUTO_R,0,COOK_PBC-1);
  503. break;
  504. }
  505. Print2OSDmem(STR_OS_ICON_SPK,0,COOK_SPK);
  506. Print2OSDmem(STR_OS_ICON_REP0,0,COOK_CLOCK+2);
  507. break;
  508. case CDROM:
  509. Print2OSDmem(STR_OS_TRACK,0,COOK_TRK);
  510. Print2OSDmem(STR_OS_ICON_SPK,0,COOK_SPK);
  511. Print2OSDmem(STR_OS_ICON_REP0,0,COOK_REP);
  512. if(play_state==VCD_STATE_STOP)
  513. Print2OSDmem(mp3_file_count(),mp3_file_count(),COOK_TRK_VAL);     
  514. else
  515. Print2OSDmem(disp_trk_now,mp3_file_count(),COOK_TRK_VAL);
  516. Print2OSDmem(STR_OS_ICON_CLOCK,0,COOK_CLOCK); 
  517. break;
  518. case CDDA:
  519. Print2OSDmem(STR_OS_TRACK,0,COOK_TRK); 
  520. Print2OSDmem(STR_OS_ICON_SPK,0,COOK_SPK);
  521. Print2OSDmem(STR_OS_ICON_REP0,0,COOK_CLOCK);
  522. Print2OSDmem(disp_trk_now,cd_total_trk(),COOK_TRK_VAL);
  523. switch(audio_channel)
  524. {
  525. case 0:
  526.                      Print2OSDmem(STR_OS_STEREO,0,COOK_PBC);
  527. break;
  528. case 1:
  529.                      Print2OSDmem(STR_OS_CHL,0,COOK_PBC);
  530. break;
  531. case 2:
  532.                      Print2OSDmem(STR_OS_CHR,0,COOK_PBC);
  533. break;
  534. case 3:
  535.                      Print2OSDmem(STR_OS_CHL,0,COOK_PBC);
  536. //Print2OSDmem(STR_OS_AUTO_L,0,COOK_PBC);
  537. break;
  538. case 4:
  539. Print2OSDmem(STR_OS_CHR,0,COOK_PBC);
  540.                      //Print2OSDmem(STR_OS_AUTO_R,0,COOK_PBC);
  541. break;
  542. }
  543. Print2OSDmem(STR_OS_ICON_CLOCK,0,COOK_CLOCK+2); 
  544. break;
  545. case CDDVD:
  546. #ifdef DVD_AUDIO // alan, 2002/11/13 01:41