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

📄 osdmenu.lst

📁 车载DVD osdIC TW8816原厂代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 735   1              // Bar
 736   1              if( BAR_LENGTH != 0 ) {
 737   2                      if(val < 98)
 738   2                      {
 739   3                              Bar_str[val/14] = BAR_ROM_TABLE[val%14];
 740   3                              for(i = val/14 + 1; i < 7; i++)
 741   3                                      Bar_str[i] = BAR_ROM_TABLE[0];
 742   3                      }
 743   2      
 744   2                      if( Bar_str[0] == 0x01 ) Bar_str[0] = 0x02;     // |..
 745   2              }
 746   1      
 747   1              // Number   // Hans
 748   1          Bar_str[10] = val % 10 + '0';    val /= 10;
 749   1          Bar_str[9] =  val % 10 + '0';    val /= 10;
 750   1          Bar_str[8] = val + '0';
 751   1              if( Bar_str[8] == '0' ) Bar_str[8] = ' ';
 752   1      /* // Hans
 753   1              for(;i<7;i++)
 754   1                      Bar_str[i+3] = ' ';
 755   1      */
 756   1              WriteStringToAddr(addr, Bar_str, BARNUM_LENGTH); 
 757   1      
 758   1      }
 759          
 760          void DrawNum(WORD addr,CODE_P struct NumType *nptr, WORD val)
 761          {
 762   1              BYTE x,i, j,k, len, mstr[5];//,color;
 763   1              BYTE Num_str[]={ ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',0 };
 764   1              CODE_P BYTE *str;
 765   1              
 766   1              x=  MAX_DESC;//+ICON_CH_SZ;
 767   1              i =  nptr->PrePostCharLen >> 4 ;
 768   1              j =  nptr->PrePostCharLen & 0x0f ;
 769   1              str = nptr->PrePostChar;
 770   1      
 771   1              // Draw char on front of number. 
 772   1              if( i ) 
 773   1                      for(k=0; k<i; k++)
 774   1                              Num_str[k] = *str++;
 775   1              // Draw number.
 776   1              utoa(val,mstr,BAR_NUM_RADIX);
 777   1              len = strlen(mstr);
 778   1              str=mstr;
 779   1              for(k=0; k<len; k++)
 780   1                      Num_str[k+i] = *str++;
 781   1      
 782   1              // Draw char on back of number
 783   1              if( j ) 
 784   1                      for(k=0; k<j; k++)
 785   1                              Num_str[k+i+len] = *str++;
 786   1              WriteStringToAddr(addr, Num_str, BARNUM_LENGTH); 
 787   1              
 788   1      }
 789          
 790          void DrawStringByLang( WORD addr, CODE_P struct EnumType *yptr, WORD val )
 791          {
 792   1      
 793   1              BYTE j,l,Size_val;
 794   1              BYTE Buf[]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',0 };
 795   1              CODE_P BYTE *Str;
C51 COMPILER V7.50   OSDMENU                                                               04/01/2008 15:02:25 PAGE 14  

 796   1      
 797   1              Size_val = yptr->Sz;
 798   1              Str = yptr->Str;
 799   1      
 800   1              if ( yptr->ByLang)
 801   1              {
 802   2                      for(j=0; j<OSDLang*Size_val; j++)                       
 803   2                      Str += ( strlen(Str) + 1 );
 804   2              }
 805   1      
 806   1              if( val ){ 
 807   2                      for(j=0; j<val; j++)                    
 808   2                      Str += ( strlen(Str) + 1 );     
 809   2              }
 810   1      
 811   1              WriteStringToAddr(addr, Buf, BARNUM_LENGTH); 
 812   1      
 813   1              l = CStrlen(Str);
 814   1      
 815   1              WriteStringToAddr(addr, Str, l); 
 816   1      
 817   1      }
 818          /*
 819          #ifdef PAL_TV
 820          void DrawFraction( CODE_P struct NumType *nptr, DWORD val, BYTE fp )
 821          {
 822                  BYTE mstr[6], len;
 823          
 824                  ltoa_K( val, mstr, fp );
 825                  len = strlen(mstr);
 826                  CopyStrToOSDWindow(cur_osdwin, 0, 0, len, nptr->NumColor, mstr);
 827                  ClearOSDLine(cur_osdwin, len, 0, nptr->width-len, nptr->NumColor);
 828          }
 829          #endif
 830          
 831          BYTE OnChangingValue(void)
 832          {
 833                  return ( (val_osdwin==0xff  ) ? 0 : 1 );        //OSDItemValue==0xffff: password error
 834          }
 835          // Not used yet *******************************************
 836          BYTE OnChangingTime(void)
 837          {
 838                  if ( val_osdwin==0xff )                                         return 0 ;
 839                  if ( MenuChild[cursor_item].Type==TIME )        return 1;
 840                  else                                                                            return 0;
 841          
 842          }
 843          */
 844          
 845          void DrawMenulist(BYTE NOTViewflag)
 846          {
 847   1              BYTE  i,j,k, x=0, y=0;
 848   1              CODE_P struct DefineMenu *DMp;
 849   1              CODE_P BYTE *Desc;
 850   1              BYTE  Max_y;
 851   1              WORD addr;
 852   1      
 853   1              // Draw Title line
 854   1              if( MenuFormat->TitleColor!=NIL ) {
 855   2      
 856   2                      #ifdef DEBUG_OSD
                              dPrintf("\r\nTitle color:0x%x", (WORD)MenuFormat->TitleColor);
C51 COMPILER V7.50   OSDMENU                                                               04/01/2008 15:02:25 PAGE 15  

                              #endif
 859   2       
 860   2                      DMp = &MenuTitle[title_item];
 861   2                      Desc = DMp->Desc[OSDLang];
 862   2                      j=strlen(Desc);
 863   2      
 864   2                      for( i=0,k=0; i<j; i++ )
 865   2                              if( *(Desc+i) == ROMFONT || *(Desc+i) == RAMFONT ) k++;
 866   2      
 867   2                      //ClearDataCnt(OSDMENU_SUBADDR, MenuFormat->width);     // Clear the counter of OSD RAM Data from addr with 
             -space(' ').
 868   2                      DrawAttrCnt(OSDMENU_SUBADDR, MenuFormat->TitleColor, MenuFormat->width );        
 869   2                      WriteStringToAddr(OSDMENU_SUBADDR, Desc, j);
 870   2      
 871   2                      if( (j-k ) < TITLE_MAX_DESC ) 
 872   2                              ClearDataCnt(OSDMENU_SUBADDR+j-k, TITLE_MAX_DESC-j+k);
 873   2      
 874   2                      y++;
 875   2              }
 876   1              
 877   1              if( MenuChild ) i = 0;
 878   1              else                    i = NIL;
 879   1      
 880   1              // Draw 
 881   1               Max_y = (cur_osdwin == OSDMENU_TOPWIN ? TOTAL_TOP_HEIGHT: MENU_HEIGHT+1);
 882   1               addr = (cur_osdwin == OSDMENU_TOPWIN ? OSDMENU_MAINADDR: OSDMENU_SUBADDR);
 883   1               addr += y*MenuFormat->width;
 884   1      
 885   1               if( NOTViewflag==0 ) {
 886   2                       I2CAutoIncFlagOn = 1;  // speedy submenu drawing 
 887   2                       WriteDecoder(TW88_ENABLERAM, 0x04); // OSD RAM Auto Access Enable
 888   2               }
 889   1      
 890   1               for(  ; y < Max_y; y++)        {
 891   2      
 892   2                      if(i != NIL) {
 893   3                              DisplayOSDMenuOneItem( cur_osdwin, &MenuChild[i], x, y, NOTViewflag);
 894   3                              i = GetLowerMenuItem( MenuChild, i );
 895   3                      }
 896   2                      else {
 897   3                      ClearDataCnt(addr, MenuFormat->width);  // Clear the counter of OSD RAM Data from addr with space(' ').
 898   3                      }
 899   2                      addr += MenuFormat->width;
 900   2      
 901   2               }
 902   1      
 903   1               if( NOTViewflag==0 ) {
 904   2                       I2CAutoIncFlagOn = 0;  // Recover  
 905   2                       WriteDecoder(TW88_ENABLERAM, 0x00); // OSD RAM Auto Access Enable
 906   2               }
 907   1      
 908   1      }
 909          //
 910          // Here, Main Menu will display Only Icon at leftside.
 911          //
 912          #define ALLDATA  175 //25*7  MENU_WIDTH*MENU_HEIGT
 913          void DisplayOSDMenu(void)
 914          {
 915   1              CODE_P BYTE *Str;
 916   1              BYTE i;
 917   1              #ifdef DEBUG_OSD
                      dPrintf("\r\n++(DisplayOSDMenu)");
C51 COMPILER V7.50   OSDMENU                                                               04/01/2008 15:02:25 PAGE 16  

                      #endif
 920   1      
 921   1              // Clear all MENU Window Ram data
 922   1              DrawAttrCnt(OSDMENU_MAINADDR, DEFAULT_COLOR, 5*2 );      // All Line Attr clear by default color.
 923   1              DrawAttrCnt(OSDMENU_SUBADDR, TITLE_COLOR, TITLE_MAX_DESC );      // All Line Attr clear by default color.
 924   1              if( MenuChild[ cursor_item ].Id == TVINSTALL && GetInputSelection()!= TV )
 925   1                      DrawAttrCnt(OSDMENU_SUBADDR+TITLE_MAX_DESC, CH_COLOR_MAGENTA|BACK_COLOR, MENU_HEIGHT*MENU_WIDTH );      
 926   1              else
 927   1              {
 928   2                      if( (MenuChild[ cursor_item ].Id == PC_COLOR_MODE && GetPCColorTempModeEE() != 3 )  // User
 929   2                      ||( MenuChild[ cursor_item ].Id == VIDEOPICTURE && GetVideoModeEE() != 3 ) ) // User
 930   2                      {
 931   3                              DrawAttrCnt(OSDMENU_SUBADDR+MENU_WIDTH, DEFAULT_COLOR, MENU_WIDTH );    
 932   3                              DrawAttrCnt(OSDMENU_SUBADDR+MENU_WIDTH*2, BACK_COLOR, (MENU_HEIGHT-1)*MENU_WIDTH );     
 933   3                      }
 934   2                      else
 935   2                      DrawAttrCnt(OSDMENU_SUBADDR+TITLE_MAX_DESC, DEFAULT_COLOR, MENU_HEIGHT*MENU_WIDTH );    
 936   2      
 937   2              }
 938   1      
 939   1              DrawAttrCnt(OSDMENU_SUBADDR+TITLE_MAX_DESC*8, COMMENT_COLOR, TITLE_MAX_DESC );   // All Line Attr clear by
             - default color.
 940   1      
 941   1              DrawMenulist(1);
 942   1      
 943   1              // Draw Child
 944   1              if( OSDMenuLevel == 1 ) // 
 945   1              {
 946   2                      pushMenu();     // Store ManuTile, tile_item.
 947   2                      MenuTitle = MenuChild;
 948   2                      title_item = cursor_item;
 949   2                      
 950   2                      MenuFormat = ( CODE_P struct MenuType *) MenuTitle[title_item].TypeData;
 951   2                      MenuChild = MenuTitle[title_item].Child;
 952   2                      cur_osdwin--; 
 953   2      
 954   2                      DrawMenulist(0);        // draw total Submemu.
 955   2                      
 956   2                      popMenu(); // Restore ManuTile, tile_item.
 957   2                      MenuFormat = ( CODE_P struct MenuType *) MenuTitle[title_item].TypeData;
 958   2                      MenuChild = MenuTitle[title_item].Child;
 959   2                      cur_osdwin++;
 960   2              }
 961   1      
 962   1              Str = Str_Comments[OSDLang];
 963   1              i=strlen(Str);
 964   1              WriteStringToAddr(OSDMENU_SUBADDR+TITLE_MAX_DESC*8, Str, i);
 965   1      
 966   1              DisplayCursor();
 967   1      }
 968          
 969          void OSDHighMenu_sub(void)
 970          {
 971   1              BYTE temp_cursor;
 972   1      
 973   1              #ifdef DEBUG_OSD
                      dPuts("\r\n(OSDHighMenu_sub)");
                      #endif
 976   1              temp_cursor = cursor_item ;
 977   1              MenuChild = MenuTitle;
 978   1              cursor_item = title_item;
 979   1      
C51 COMPILER V7.50   OSDMENU                                                               04/01/2008 15:02:25 PAGE 17  

 980   1              if( !popMenu() ) {
 981   2                      CloseOSDMenu();

⌨️ 快捷键说明

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