📄 osdmenu.lst
字号:
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 + -