prog_bmp.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:13k
源码类别:

DVD

开发平台:

C/C++

  1. /*****************************************************
  2. Creater: suqiaoli
  3. Date   : 2004-11-15
  4. Description: Program new menu using
  5. *****************************************************/
  6. #ifdef OSD_BMP_PROG
  7. #include "osd_BmpUI.h"
  8. #define PROG_DVD_UNSELECT_RECT_WIDTH   40
  9. #define PROG_DVD_UNSELECT_RECT_HEIGHT  28
  10. #define PROG_DVD_SELECT_RECT_WIDTH     38
  11. #define PROG_DVD_SELECT_RECT_HEIGHT    26
  12. #define PROG_CD_RECT_WIDTH             70
  13. #define PROG_CD_RECT_HEIGHT            26
  14. #define PROG_SELECT_FONT_COLOR     15
  15. #define PROG_UNSELECT_FONT_COLOR   3
  16. #define PROG_SELECT_BG_COLOR       12
  17. #define PROG_UNSELECT_BG_COLOR     0
  18. #define PROG_PLAY_SELECT_FONT_COLOR     15
  19. #define PROG_PLAY_SELECT_BG_COLOR       12
  20. #define PROG_PLAY_UNSELECT_FONT_COLOR   14
  21. #define PROG_PLAY_UNSELECT_BG_COLOR     1
  22. //prog play,reset button info:rect and string
  23. #define PROG_PLAY_RECT_XSTART        222 
  24. #define PROG_PLAY_STRING_XSTART      222+47//302 
  25. #define PROG_RESET_RECT_XSTART       402
  26. #define PROG_RESET_STRING_XSTART     402+39//482
  27. #define PROG_PLAY_RESET_RECT_YSTART  232
  28. #define PROG_PLAY_RESET_BUTTON_WIDTH 158
  29. #define PROG_PLAY_RESET_BUTTON_HEIGHT 26
  30. #define PROG_BUTTON_BG_SELECT_COLOR 12
  31. #define PROG_BUTTON_FONT_SELECT_COLOR 15
  32. #define PROG_BUTTON_BG_UNSELECT_COLR 1
  33. #define PROG_BUTTON_FONT_UNSELECT_COLOR 14
  34. #define PROG_BUTTON_BG_GRAY_COLOR        1
  35. #define PROG_BUTTON_FONT_GRAY_COLOR     5
  36. UINT8 flag_data;
  37. /*
  38. *
  39. *Note:Following functions describe different region(A~F)info,
  40. *     use region data structures,which include indexes(bmp,line,rect,str) 
  41. */
  42. const OSD_REGIONA_LAYOUT_S g_stProgramRegionA = 
  43. {
  44.     OSD_BG_BMP_A,
  45.     PROG_LINE1_A,
  46.     OSD_DOWN_BG_BMP_A,
  47.     PROG_LINE2_A,
  48.     PROG_SHADOW_A,
  49. };
  50. const OSD_REGIONB_LAYOUT_S g_stProgramRegionB = 
  51. {
  52.     0,
  53.     PROG_BG_LINE_B,
  54.     PROG_LINE1_B,
  55.     PROG_DOWN_B,
  56.     0,
  57.     PROG_STR_B,
  58.     0,
  59.     PROG_LINE2_B,
  60.     PROG_SHADOW_B,
  61. };
  62. const OSD_REGIOND_LAYOUT_S g_stProgramRegionD = 
  63. {
  64.     OSD_4_1_BMP_D,
  65.     OSD_4_2_BMP_D,
  66.     PROG_LINE1_D,
  67.     PROG_DOWN_D,
  68.     0,
  69.     PROG_LINE2_D,
  70.     PROG_SHADOW_D,
  71.     OSD_4_3_BMP_D,    
  72. };
  73. const OSD_REGIONE_LAYOUT_S g_stProgramRegionE = 
  74. {
  75.     OSD_5_1_BMP_E,
  76.     0,
  77.     OSD_5_3_BMP_E,
  78. };
  79. const OSD_REGIONF_LAYOUT_S g_stProgramRegionF = 
  80. {
  81.     OSD_6_1_BMP_F,
  82.     OSD_6_2_BMP_F,
  83.     OSD_6_3_BMP_F,
  84. };
  85. //Prog region A :region 1
  86. void Layout_Prog_Region_A(void)
  87. {
  88. const OSD_REGIONA_LAYOUT_S* pLayoutRegion_A =  &g_stProgramRegionA;
  89. OSD_LayoutBmp(pLayoutRegion_A -> uiBg,0) ;
  90. OSD_LayoutLine(pLayoutRegion_A ->uiLineLeft,0);
  91. OSD_LayoutBmp(pLayoutRegion_A -> uiDownBg,0) ;
  92. OSD_LayoutLine(pLayoutRegion_A ->uiLineRight,0);
  93. OSD_LayoutRect(pLayoutRegion_A ->uiShadow,0);
  94. }
  95. //Prog region B :region 2
  96. void Layout_Prog_Region_B(void)
  97. {
  98. const OSD_REGIONB_LAYOUT_S* pLayoutRegion_B =  &g_stProgramRegionB;
  99. OSD_LayoutLine(pLayoutRegion_B ->uiBgLine,0);
  100. OSD_LayoutLine(pLayoutRegion_B ->uiLineLeft,0);
  101. OSD_LayoutRect(pLayoutRegion_B ->uiDownBg,0);
  102. char str[10];
  103. psprintf(str, "%s ", &_OsdMessegeFont1[osd_font_mode][STR_OS_PROG][0]);
  104.     OSD_LayoutStr(str, pLayoutRegion_B ->uiSelStr,0);
  105.       
  106. OSD_LayoutLine(pLayoutRegion_B ->uiLineRight,0);
  107. OSD_LayoutRect(pLayoutRegion_B ->uiShadow,0);
  108. }
  109. //Prog region D :region 3
  110. void Layout_Prog_Region_D(void)
  111. {
  112. const OSD_REGIOND_LAYOUT_S* pLayoutRegion_D =  &g_stProgramRegionD;
  113. OSD_LayoutBmp(pLayoutRegion_D -> uiLeftBg,0);
  114. OSD_LayoutBmp(pLayoutRegion_D -> uiMiddleBg,0);
  115.     OSD_LayoutLine(pLayoutRegion_D ->uiLineLeft,0);
  116.     OSD_LayoutRect(pLayoutRegion_D ->uiDownBg,0);
  117.     OSD_LayoutLine(pLayoutRegion_D ->uiLineRight,0);
  118. OSD_LayoutBmp(pLayoutRegion_D -> uiRightBg,0);
  119. OSD_LayoutRect(pLayoutRegion_D ->uiShadow,0);
  120. }
  121. //Prog region E :region 4
  122. void Layout_Prog_Region_E(void)
  123. {
  124. const OSD_REGIONE_LAYOUT_S* pLayoutRegion_E = &g_stProgramRegionE;
  125. OSD_LayoutBmp(pLayoutRegion_E -> uiLeftBg,0);
  126. OSD_LayoutBmp(pLayoutRegion_E -> uiRightBg,0);
  127. }
  128. //Prog region F :region 5
  129. void Layout_Prog_Region_F(void)
  130. {
  131. const OSD_REGIONF_LAYOUT_S* pLayoutRegion_F =  &g_stProgramRegionF;
  132. OSD_LayoutBmp(pLayoutRegion_F -> uiLeftBg,0);
  133. OSD_LayoutBmp(pLayoutRegion_F -> uiMiddleBg,0);
  134. OSD_LayoutBmp(pLayoutRegion_F -> uiRightBg,0);
  135. }
  136. /*
  137.  * Funciton Description:  
  138.  *   Draw prog region on osd,use new region
  139.  * 
  140.  *   
  141.  * Creator:suqiaoli 
  142.  * Date :2004-11-5
  143.  */
  144. void DrawProgRegion(void)
  145. {
  146.     Layout_Prog_Region_A();
  147.     Layout_Prog_Region_B();
  148.     Layout_Prog_Region_D();
  149.     Layout_Prog_Region_E();
  150.     Layout_Prog_Region_F();    
  151. }
  152. /*
  153.  * Funciton Description:  
  154.  *   Draw prog string on osd.
  155.  * 
  156.  * INPUT:
  157.  *   xStart,yStart     --> the start of string,
  158.  *   str               --> string 
  159.  *   mode            --> 0:unselect state
  160.  *                         other:select state
  161.  * Note:only used by number state
  162.  *   
  163.  * Creator:suqiaoli 
  164.  * Date :2004-11-5
  165.  */
  166. void Draw_Prog_String(UINT32 xStart, UINT32 yStart, const BYTE *str,BYTE mode)
  167. {
  168.     BYTE fontColor, bkColor;
  169.     
  170.     if (mode == 0)
  171.     {
  172. int m;
  173. m = (index_y - 2 ) + MAX_NM_Y * (index_x / 2) + 1; 
  174. if (((offset==1)&&(strcmp(str,"--")== 0))||((offset==2)&&(strcmp(str,"----")== 0)))
  175. fontColor = PROG_UNSELECT_FONT_COLOR ;
  176. else        
  177.         fontColor = 14 ;
  178.         bkColor = PROG_UNSELECT_BG_COLOR ;
  179.     }
  180.     else
  181.     {
  182.         fontColor = PROG_SELECT_FONT_COLOR ;
  183.         bkColor = PROG_SELECT_BG_COLOR ;
  184.     }
  185.     
  186.     yStart = yStart * 40 + 32;        
  187.     
  188.     if (offset == 2)
  189.         xStart = (xStart )*70+60;
  190.     else
  191.     {
  192.         if (xStart%2==0)
  193.             xStart = (xStart )*70+60;        
  194.         else
  195.             xStart = (xStart -1 )*70+60+54;
  196.     }
  197.     osd_Draw_Bmp_RegionString(xStart, yStart,str,fontColor,bkColor,4);
  198. }
  199. /*
  200.  * Funciton Description:  
  201.  *   Draw prog rect on osd.
  202.  *  
  203.  * 
  204.  * INPUT:
  205.  *   xStart,yStart     --> the start of rect
  206.  *   mode            --> 0:unselect state
  207.  *                         other:select state
  208.  * Note:only used by number state
  209.  *  
  210.  * Creator:suqiaoli 
  211.  * Date :2004-11-5
  212.  */
  213. void Draw_Prog_Rect(UINT32 xStart, UINT32 yStart, BYTE mode)
  214. {
  215.     BYTE bkColor;
  216.     UINT32 xLen, yLen;
  217.     
  218.     if (mode == 0)
  219.     {
  220.         bkColor = 0 ;
  221.         yLen = PROG_DVD_UNSELECT_RECT_HEIGHT ; 
  222.     }     
  223.     else
  224.     {    
  225.         bkColor = 12 ;
  226.         yLen = PROG_DVD_SELECT_RECT_HEIGHT ;
  227.     }     
  228.         
  229.     yStart = yStart*40 + 32 ;
  230.     if (offset == 2)
  231.     {
  232.         xLen = PROG_CD_RECT_WIDTH;
  233.         xStart = (xStart )*70+60-2;
  234.     }
  235.     else
  236.     {
  237.         xLen = PROG_DVD_SELECT_RECT_WIDTH;
  238.         
  239.         if (xStart%2==0)
  240.             xStart = (xStart )*70 + 60-2;
  241.         else    
  242.             xStart = (xStart -1 )*70 + 60 + 54-2;
  243.     }
  244.     
  245.     osd_draw_region_rect(xStart, yStart, xLen, yLen, bkColor, 4);
  246.     
  247.     if ( mode != 0)
  248.     {
  249.         osd_draw_hline_region(xStart, xStart+xLen,yStart, 11, 1, 4);
  250.         osd_draw_hline_region(xStart, xStart+xLen,yStart+yLen, 11, 1, 4);
  251.     }       
  252. }
  253. /*
  254.  * Funciton Description:  
  255.  *   Draw prog rect on osd.
  256.  *  
  257.  * 
  258.  * INPUT:
  259.  *   mode            --> 0:unselect state
  260.  *                         other:select state
  261.  * Note:only used by func state
  262.     
  263.  * Creator:suqiaoli 
  264.  * Date :2004-11-5
  265.  */
  266. void Draw_Prog_Play_Reset_Button(BYTE mode)
  267. {
  268. char play_str[10],reset_str[10];
  269. UINT8 play_button_bg_color,play_str_font_color;
  270. UINT8 reset_button_bg_color,reset_str_font_color;
  271.     psprintf(play_str, "%s ", &_OsdMessegeFont1[osd_font_mode][STR_OS_PLAY][0]);
  272.     psprintf(reset_str, "%s ", &_OsdMessegeFont1[osd_font_mode][STR_OS_CLEAR][0]);
  273. int m;
  274. m = (index_y - 2 ) + MAX_NM_Y * (index_x / 2) + 1; 
  275. if (flag_data==0)
  276. {
  277.     play_button_bg_color = PROG_BUTTON_BG_GRAY_COLOR;
  278. play_str_font_color = PROG_BUTTON_FONT_GRAY_COLOR;
  279. reset_button_bg_color = PROG_BUTTON_BG_GRAY_COLOR;
  280. reset_str_font_color = PROG_BUTTON_FONT_GRAY_COLOR;
  281. }
  282. else
  283. {
  284. //clear button and str 
  285. play_button_bg_color = PROG_BUTTON_BG_UNSELECT_COLR;
  286. play_str_font_color = PROG_BUTTON_FONT_UNSELECT_COLOR;
  287. reset_button_bg_color = PROG_BUTTON_BG_UNSELECT_COLR;
  288. reset_str_font_color = PROG_BUTTON_FONT_UNSELECT_COLOR;
  289. //select button and str
  290. if ((index_x/2 == 1)&&(mode != 0))//play button
  291. {
  292. play_button_bg_color = PROG_BUTTON_BG_SELECT_COLOR;
  293. play_str_font_color = PROG_BUTTON_FONT_SELECT_COLOR;
  294. }
  295. else if ((index_x/2 == 2)&&(mode != 0))//reset button
  296. {
  297. reset_button_bg_color = PROG_BUTTON_BG_SELECT_COLOR;
  298. reset_str_font_color = PROG_BUTTON_FONT_SELECT_COLOR;
  299. }
  300. }
  301. //play button info
  302. osd_draw_region_rect(PROG_PLAY_RECT_XSTART, PROG_PLAY_RESET_RECT_YSTART, PROG_PLAY_RESET_BUTTON_WIDTH, PROG_PLAY_RESET_BUTTON_HEIGHT, play_button_bg_color, 4);
  303. osd_Draw_Bmp_RegionString(PROG_PLAY_STRING_XSTART, PROG_PLAY_RESET_RECT_YSTART,play_str,play_str_font_color,play_button_bg_color,4);
  304. //reset button info
  305. osd_draw_region_rect(PROG_RESET_RECT_XSTART, PROG_PLAY_RESET_RECT_YSTART, PROG_PLAY_RESET_BUTTON_WIDTH, PROG_PLAY_RESET_BUTTON_HEIGHT, reset_button_bg_color, 4);
  306. osd_Draw_Bmp_RegionString(PROG_RESET_STRING_XSTART, PROG_PLAY_RESET_RECT_YSTART,reset_str,reset_str_font_color,reset_button_bg_color,4);  
  307. }   
  308. /*
  309.  * Funciton Description:  
  310.  *   Draw prog sel
  311.  *  
  312.  * 
  313.  * INPUT:
  314.  *   mode            --> 0:unselect state
  315.  *                         other:select state
  316.  *
  317.  * Note:this is same as ShowProgSel in prog_mp3undir.c
  318.     
  319.  * Creator:suqiaoli 
  320.  * Date :2004-11-5
  321.  */
  322. void ShowBmpProgSel(UINT8 mode)
  323. {
  324.     UINT8 sub_r, tt, ch, y;
  325.     UINT16 uXStart,uYStart;
  326.         
  327. #ifdef PROG_12_ITEMS
  328.     if ((index_y >= 2) && (index_y <= 6))
  329.         sub_r = index_x / 2 + 2; // skip first column
  330.     else
  331.         sub_r = index_x / 2 + 1;
  332. #else // 16 items
  333.     sub_r = index_x / 2 + 1;
  334. #endif
  335.     id = prog_item[page][index_y][sub_r];
  336.     y = (index_y - 2 ) + MAX_NM_Y * (index_x / 2) + 1;
  337.   
  338.     //put data
  339.     if(prog_item[page][index_y][0] == SET_NM)
  340.     {//terry,2004/1/26 01:10PM
  341.         UINT8 str[10];
  342.   
  343.         tt = prog[y][0];
  344.         ch = prog[y][1];
  345.         if (tt||ch)
  346.         {    
  347.             flag_data = 1;
  348.             Draw_Prog_Play_Reset_Button(0);
  349.         }      
  350.         str[0]=0;
  351.         if (offset == 2)
  352.         {
  353.             if (y >= 10)
  354.              psprintf(RegionValStr[index_y ], " %d     ", y); // for column alignment
  355.             else if (y <= 5)
  356.                 psprintf(RegionValStr[index_y ], "%d     ", y);
  357.             else
  358.              psprintf(RegionValStr[index_y ], "  %d     ", y);
  359.             
  360.             if(tt) psprintf(str, " %02d ", tt);
  361.             else psprintf(str, "----", tt);
  362.     }
  363.     else
  364.     {
  365.             if (y >= 10)
  366.              psprintf(RegionValStr[index_y ], " %d   :   ", y); // for column alignment
  367.             else if (y <= 5)
  368.                 psprintf(RegionValStr[index_y ], "%d   :   ", y);
  369.             else
  370.              psprintf(RegionValStr[index_y ], "  %d   :   ", y);
  371.         
  372. if((tt)&&(index_x%2==0))
  373.     psprintf(str, "%02d",tt);
  374. else if ((ch)&&(index_x%2==1))
  375.     psprintf(str, "%02d",ch);
  376. else psprintf(str, "--");
  377.     }
  378.     
  379.         if (y >= 6)
  380.             uXStart = (sub_r-1)*140;
  381.         else
  382.             uXStart = 32;
  383.         
  384.         uYStart = ( index_y - 2)*40 + 32;
  385.         osd_Draw_Bmp_RegionString(uXStart, uYStart,RegionValStr[index_y ],3,0,4);
  386. Draw_Prog_Rect(index_x , (index_y - 2),mode);
  387. Draw_Prog_String(index_x , (index_y - 2),str,mode);         
  388.     
  389.     }
  390.     if(prog_item[page][index_y][0] == SET_FUNC)
  391.         Draw_Prog_Play_Reset_Button(mode);
  392. }
  393. /*
  394.  * Funciton Description:  
  395.  *   Draw prog page
  396.  *  
  397.  * 
  398.  *
  399.  * Note:this is same as ShowProgPage in prog_mp3undir.c
  400.     
  401.  * Creator:suqiaoli 
  402.  * Date :2004-11-5
  403.  */
  404. void ShowBmpProgPage(void)
  405. {
  406.     UINT8 x,y,k;
  407.     char colon_str[2],tt_str[2],ch_str[2];
  408.     
  409.     DrawProgRegion();
  410.    
  411.     OSD_LayoutRect(PROG_BG2_E,0);
  412.     OSD_LayoutRect(PROG_BG3_E,0);
  413.     
  414.     strcpy(colon_str,":");
  415.     strcpy(tt_str,"TT");
  416.     strcpy(ch_str,"CH");
  417. if (cd_type_loaded == CDROM)
  418.     {
  419.         for(k=0;k<4;k++)
  420.      {    
  421.          OSD_LayoutBmp(PROG_CDROM_FOLDER_BMP_D, k);
  422.          OSD_LayoutBmp(PROG_CDROM_FILE_BMP_D, k);
  423.             OSD_LayoutStr(colon_str, PROG_STR_COLON,k);
  424.      }
  425.     }
  426.     else if (cd_type_loaded == CDDVD)
  427.     {
  428.         for(k=0;k<4;k++)
  429.      {    
  430.             OSD_LayoutLittleStr(tt_str, PROG_DVD_TT,k);
  431.             OSD_LayoutStr(colon_str, PROG_STR_COLON,k);
  432.             OSD_LayoutLittleStr(ch_str, PROG_DVD_CH,k);
  433.      }
  434.     }    
  435.     
  436.     x=index_x;
  437.     y=index_y;
  438.     if((cd_type_loaded==CDDVD)||(cd_type_loaded==CDROM)) 
  439.     {
  440.         offset=1;
  441.         page=0;
  442.     }
  443.     else 
  444.     {
  445.         offset=2;
  446.         page=1;
  447.     }
  448.     for(index_y=0;index_y<MAX_REGION;index_y++) 
  449.     {
  450.       if(prog_item[page][index_y][0]) 
  451.       {
  452.         for(index_x=0;index_x<MAX_PROG_SEL;index_x+=offset) 
  453.         {
  454.             ShowProgSel(0);
  455.         }
  456.       }
  457.     }
  458.     
  459.     index_x=x;
  460.     index_y=y;
  461.     ShowProgSel(SW_REGION_ANTI);
  462.     
  463. }
  464.  
  465. #endif