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

📄 osddraw.lst

📁 t112 参考文件
💻 LST
📖 第 1 页 / 共 3 页
字号:
 253   2                      break;
 254   2              default:        break;
 255   2              }
 256   1      
 257   1              if(m_bOSDEnable)
 258   1                      Timer0Start();
 259   1      }
 260          
 261          void OSDOpenMenu(void)
 262          {
 263   1              OSDClearPage();
 264   1              OSDPosition(CENTER);
 265   1              OSDEnable();
 266   1              m_cItem=1;
 267   1              m_cOSDFunc=1;
 268   1      
 269   1              OSDShowPage();  
 270   1              switch(m_cOSDMenu){
 271   2              case idVIDEOMENU:
 272   2                   ir_repeat=1;
 273   2              OSDShowVideoData();
 274   2                      break;
 275   2              case idTVMENU:
 276   2                      ir_repeat=0;
 277   2      //              OSDShowTVData();        // mark by Sherman 05'11'14
 278   2                      break;
 279   2              default:
 280   2                      return;
 281   2              }
 282   1              m_cOSDEvent=OPENMENU;
 283   1      }
 284          
 285          void OSDFuncExit(void)
 286          {
 287   1      
 288   1      }
 289          
 290          uCHAR OSD_cOSDLang=0;
 291          void OSDShowPage(void)
 292          {
 293   1              uCHAR y=1;
 294   1      
 295   1              pOSDLangPtr=&MultiLangOSD[OSD_cOSDLang];
 296   1              pOSDMenuPtr=pOSDLangPtr->osdMenuPtr;  
 297   1              cTotal=0;
 298   1      
 299   1              while(pOSDMenuPtr[m_cOSDMenu-1][cTotal].iconStr!=NULL)
 300   1              {
 301   2                      OSDShowLine(iBlankLine,0,y,COL_NORMAL,OSD_LENGTH);
 302   2                      //OSDShowLine(pOSDMenuPtr[m_cOSDMenu-1][cTotal].iconStr,ICON_STAT,y,COL_NORMAL,OSD_LENGTH);
C51 COMPILER V7.50   OSDDRAW                                                               01/12/2006 13:31:13 PAGE 6   

 303   2                      OSDShowLine(pOSDMenuPtr[m_cOSDMenu-1][cTotal].txtStr,TXT_STAT,y,COL_NORMAL,OSD_LENGTH);
 304   2      //              idx = pOSDMenuPtr[(m_cOSDFunc>>4)-1][cTotal].cidIdx;            
 305   2                      switch (pOSDMenuPtr[(m_cOSDMenu-1)-1][cTotal].cDataAttr)
 306   2                      {
 307   3                              case GAUGE:
 308   3                              case NUMBER:
 309   3      //                              OSDDrawNum(EepOSDPub[idx],sOSDParams1[idx].Max,NUM_STAT,y,COL_NORMAL);
 310   3                                      break;
 311   3      //                      case OPTION:
 312   3      //                              OSDShowOption(y,COL_NORMAL);
 313   3      //                              break;
 314   3      //                      case INFO:
 315   3      //                              OSDShowInfo(0,(cTotal+1),COL_GAUGE);
 316   3      //                              break;
 317   3                              case NONE:
 318   3                              default:
 319   3                                      break;
 320   3                      }
 321   2                      cTotal++;
 322   2                      y++;
 323   2              }
 324   1              OSDShowLine(iBlankLine,0,y++,COL_NORMAL,OSD_LENGTH);
 325   1              OSDShowLine(iBlankLine,0,y,COL_NORMAL,OSD_LENGTH);
 326   1              
 327   1              OSDMoveCursor();
 328   1      }
 329          
 330          void OSDCleanLine(uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength)
 331          {
 332   1              if((x < 30) && ( y < OSD_LINE_NUM))
 333   1              {
 334   2                      OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
 335   2              twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
 336   2              while((x < 30) && (x < cLength))
 337   2              {
 338   3                      twdWr_Burst_D(BLANK);
 339   3                      twdWr_Burst_D(cColor);
 340   3                      x++;
 341   3              }
 342   2              twdWr_Burst_P();
 343   2              }
 344   1      }
 345          
 346          void OSDClearPage(void)
 347          {
 348   1              uCHAR i=0;
 349   1              for(i=0;i<OSD_LINE_NUM;i++)
 350   1              {
 351   2                      OSDCleanLine(0,i,0,30);
 352   2              OSDSetLineAttribute(i,0x80);
 353   2              }
 354   1      }
 355          
 356          void OSDSetLineAttribute(uCHAR cLine,uCHAR cAttribute)
 357          {
 358   1           OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)cLine << 5)+31);
 359   1           twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
 360   1           twdWr_Burst_D(0);
 361   1           twdWr_Burst_D(cAttribute);
 362   1               twdWr_Burst_P();
 363   1      }
 364          
C51 COMPILER V7.50   OSDDRAW                                                               01/12/2006 13:31:13 PAGE 7   

 365          void OSDShowVideoData(void)
 366          {
 367   1              uCHAR  gauge_y =cTotal+2;
 368   1              
 369   1              switch(m_cOSDFunc){
 370   2                      case idBRIGHTMENU:
 371   2                              OSDDrawGauge(EepVideo.cBright,V_BRIGHT_MAX,0,gauge_y,COL_GAUGE);
 372   2                              OSDDrawNum(EepVideo.cBright,V_BRIGHT_MAX,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03); 
 373   2                              break;
 374   2                      case idCONTRASTMENU:
 375   2                              OSDDrawGauge(EepVideo.cContrast,V_CONTRAST_MAX,0,gauge_y,COL_GAUGE);
 376   2                              OSDDrawNum(EepVideo.cContrast,V_CONTRAST_MAX,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03); 
 377   2                              break;
 378   2                      case idSHARPMENU:
 379   2                              OSDDrawGauge(EepVideo.cSharp,V_SHARP_MAX,0,gauge_y,COL_GAUGE);
 380   2                              OSDDrawNum(EepVideo.cSharp,0,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03);  
 381   2                              break;
 382   2                      case idSATMENU:
 383   2                              OSDDrawGauge(EepVideo.cSat,V_SAT_MAX,0,gauge_y,COL_GAUGE);
 384   2                              OSDDrawNum(EepVideo.cSat,V_SAT_MAX,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03);
 385   2                              break;
 386   2                      case idHUEMENU:
 387   2                              OSDDrawGauge(EepVideo.cHue,V_HUE_MAX,0,gauge_y, COL_GAUGE);
 388   2                              OSDDrawNum(EepVideo.cHue,V_HUE_MAX,NUM_STAT,gauge_y,COL_TITLE,DRAW_BLANK|0x03); 
 389   2                              break;
 390   2                      default:        break;
 391   2              }       
 392   1      }
 393          /*
 394          #ifdef AU_35
 395          #define GAUGE_TOTAL_FONT_L              10  //Long
 396          #else
 397          #define GAUGE_TOTAL_FONT_L              25  //Long
 398          #endif
 399          */
 400          #ifdef _160_234
              #define GAUGE_TOTAL_FONT_L              20  //10  //Long
              #else
 403          #define GAUGE_TOTAL_FONT_L              25  //Long
 404          #endif
 405          
 406          void OSDDrawGauge(uCHAR cVal, uCHAR cMax, uCHAR x, uCHAR y, uCHAR cColor)
 407          {
 408   1              int index,i,j;
 409   1              int step_size=100/GAUGE_TOTAL_FONT_L;
 410   1              
 411   1              OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y<< 5)+x);
 412   1              twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
 413   1              index= (int)cVal*GAUGE_TOTAL_FONT_L/(int)cMax;
 414   1          for(i=0;i<index;i++){
 415   2                twdWr_Burst_D(34);   // full
 416   2                twdWr_Burst_D(cColor);
 417   2          }
 418   1              j=((int)cVal*100/(int)cMax)-index*step_size;
 419   1              j=j/2;//2.5;
 420   1              twdWr_Burst_D(j+35);   // residue
 421   1              twdWr_Burst_D(cColor);
 422   1      
 423   1          for(i=index+1;i<GAUGE_TOTAL_FONT_L;i++)
 424   1              {
 425   2                twdWr_Burst_D(35);  // empty
 426   2                twdWr_Burst_D(cColor);
C51 COMPILER V7.50   OSDDRAW                                                               01/12/2006 13:31:13 PAGE 8   

 427   2              }
 428   1              twdWr_Burst_P();
 429   1              
 430   1      
 431   1      }
 432          
 433          //Maximum three initiger, percentage
 434          void OSDDrawNum(uWORD wVal, uCHAR cMax, uCHAR x, uCHAR y, uCHAR cColor, uCHAR cAttr)
 435          {
 436   1              //Init Part
 437   1              uCHAR cTemp;
 438   1              if(cMax!=0)
 439   1              {
 440   2                      m_wBuff[0]=(unsigned long)wVal*100;
 441   2                      m_wBuff[0]=m_wBuff[0]/cMax;
 442   2              }
 443   1              else //Non percentage
 444   1              {
 445   2                      m_wBuff[0]=wVal;
 446   2              }
 447   1      
 448   1              if(m_wBuff[0]<10)
 449   1                      m_cBuff[1]=1;
 450   1              else if(m_wBuff[0]<100)
 451   1                      m_cBuff[1]=2;
 452   1              else
 453   1              m_cBuff[1]=3;
 454   1      
 455   1              OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
 456   1              twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
 457   1      
 458   1              if((cAttr&0xF0)==DRAW_BLANK)
 459   1              {
 460   2                      switch(m_cBuff[1]){
 461   3                      case 1:
 462   3                              if((cAttr&0x0F)==3||(cAttr&0x0F)==2)
 463   3                              {
 464   4                                      twdWr_Burst_D(BLANK);
 465   4                                      twdWr_Burst_D(cColor);
 466   4                              }
 467   3                      case 2:
 468   3                              if((cAttr&0x0F)==3)
 469   3                              {
 470   4                                      twdWr_Burst_D(BLANK);
 471   4                                      twdWr_Burst_D(cColor);
 472   4                              }
 473   3                      }
 474   2              }
 475   1              else if((cAttr&0xF0)==DRAW_ZERO)
 476   1              {
 477   2                      switch(m_cBuff[1]){
 478   3                      case 1:
 479   3                              if((cAttr&0x0F)==3||(cAttr&0x0F)==2)
 480   3                              {
 481   4                                      twdWr_Burst_D('0'-IndexNumOffset);
 482   4                                      twdWr_Burst_D(cColor);
 483   4                              }
 484   3                      case 2:
 485   3                              if((cAttr&0x0F)==3)
 486   3                              {
 487   4                                      twdWr_Burst_D('0'-IndexNumOffset);
 488   4                                      twdWr_Burst_D(cColor);
C51 COMPILER V7.50   OSDDRAW                                                               01/12/2006 13:31:13 PAGE 9   

 489   4                              }
 490   3                      }
 491   2              }
 492   1      
 493   1      
 494   1              while(m_cBuff[1]>0)
 495   1              {
 496   2                      if(m_cBuff[1]==3)
 497   2                              cTemp=m_wBuff[0]/100;
 498   2                      else if(m_cBuff[1]==2)
 499   2                              cTemp=(m_wBuff[0]%100)/10;
 500   2                      else if(m_cBuff[1]==1)
 501   2                              cTemp=m_wBuff[0]%10;
 502   2      
 503   2                      OSDNumConvert(cTemp);
 504   2              twdWr_Burst_D(cColor );
 505   2                      m_cBuff[1]--;
 506   2              }
 507   1              twdWr_Burst_P();
 508   1      }
 509          
 510          
 511          void OSDNumConvert(uCHAR cNum)
 512          {
 513   1              switch(cNum){
 514   2              case 9: twdWr_Burst_D('9'-IndexNumOffset);              break;

⌨️ 快捷键说明

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