osdmenu.lst
来自「显示屏驱动源代码」· LST 代码 · 共 1,286 行 · 第 1/5 页
LST
1,286 行
489 1
490 1 if( cursor_item==NIL )
491 1 return;
492 1
493 1 cursor_y = cursor_item + ( MenuFormat->TitleColor ==NIL ? 0 : 1 );
494 1
495 1 if( OSDMenuLevel == 1 ) addr = OSDMENU_MAINADDR;
496 1 else addr = OSDMENU_SUBADDR;
497 1
498 1 addr += cursor_y*MenuFormat->width;
499 1
500 1 if( OSDMenuLevel == 1)
501 1 DrawAttrCnt(addr, MenuFormat->CursorColor, MenuFormat->width );
502 1 else
503 1 {
504 2 if(OnChangingValue)
505 2 {
506 3 GetItemValue(GetItemValue(MenuChild[cursor_item].Id));
507 3 DrawAttrCnt(addr, MenuFormat->CursorColor, MenuFormat->width );
508 3 }
509 2 else
510 2 {
511 3 DrawAttrCnt(addr, MenuFormat->CursorColor, MenuFormat->width-BARNUM_LENGTH );
512 3 DrawAttrCnt(addr+MAX_DESC, DEFAULT_COLOR, BARNUM_LENGTH );
513 3 }
514 2 }
515 1
516 1 }
517
518
519 //===============================================================================
520 // OSD Menu Operation funtion moved to "OSDoper.c" by RYU.
521 //
522 //===============================================================================
523
524 WORD GetItemValue( BYTE id)
525 {
526 1 WORD val=0;
527 1
528 1 #ifdef DEBUG_OSD
dPrintf("\r\n++(GetItemValue) id:0x%x __", (WORD)id);
#endif
531 1
532 1 switch( id ) {
533 2 //case SYSTEM_CLOCK: val = GetSystemClock_HM(); break;
534 2 //case WAKEUP_TIME: val = OSDItemValue = GetWakeupTime(); break;
535 2 //case OFF_TIME: val = OSDItemValue = GetOffTime(); break;
536 2 case SLEEP_TIMER: val = OSDItemValue = GetSleepTimer(); break;
537 2
538 2 #ifdef SUPPORT_OSDPOSITIONMOVE
539 2 case OSDPOSITIONMODE: val = GetOSDPositionMode(); break;
540 2 //case OSD_VPOS: val = GetOSDMenuYValue(); break;
541 2 //case OSD_HPOS: val = GetOSDMenuXValue(); break;
542 2 #endif
543 2 // case OSD_DURATION: val = GetOSDDurationValue(); break;
544 2 case OSDLANG: val = OSDLang & 0x0f; break;
545 2
546 2 #ifdef SUPPORT_PC
547 2 case PANEL_CONTRAST: val = OSDItemValue = GetPanelContrastEE(); break;
548 2 case PANEL_BRIGHTNESS: val = OSDItemValue = GetPanelBrightnessEE(); break;
C51 COMPILER V7.06 OSDMENU 02/21/2008 14:00:28 PAGE 10
549 2
550 2 case PC_VPOS: val = GetVPosition(); break;
551 2 case PC_HPOS: val = GetHPosition(); break;
552 2 case PC_CLOCK: val = GetCoarseValue(); break;
553 2 case PC_PHASE: val = GetPhaseCurrent(); break;
554 2
555 2 case PC_COLOR_TEMP: val = GetPCColorTempModeEE(); break;
556 2 case PC_COLOR_R: val = GetPCColorTemp(RED); break;
557 2 case PC_COLOR_G: val = GetPCColorTemp(GREEN); break;
558 2 case PC_COLOR_B: val = GetPCColorTemp(BLUE); break;
559 2 #endif
560 2
561 2
562 2 case VIDEO_MODE: val = GetVideoModeEE(); break;
563 2
564 2 case VIDEO_CONTRAST:
565 2 case VIDEO_BRIGHTNESS:
566 2 case VIDEO_SATURATION:
567 2 case VIDEO_HUE:
568 2 case VIDEO_SHARPNESS:
569 2 case VIDEO_BACKLIGHT:
570 2 val = GetVideoDatawithOffset(id-VIDEO_CONTRAST); break;
571 2
572 2 case AUDIO_VOLUME: val = GetAudioVol(); break;
573 2 #ifdef SUPPORT_MSP_AUDIO
case AUDIO_BALANCE: val = GetAudioBalance(); break;
case AUDIO_BASS: val = GetAudioBass(); break;
case AUDIO_TREBLE: val = GetAudioTreble(); break;
//case AUDIO_EFFECT: val = GetAudioEffect(); break;
//case AUDIO_MUTE: val = IsAudioMuteOn(); break;
#endif
580 2
581 2 #ifdef SUPPORT_TV
#ifdef NTSC_TV
case AIR_CABLE_TV: val = OSDItemValue = GetTVType(); break;
case STORE_CLEAR_TVCHN: val = OSDItemValue = IsSavedCurChn(); break;
#endif
case FINE_TUNE_CHANNEL: val = OSDItemValue = GetFineTune(); break;
#endif // SUPPORT_TV
589 2
590 2 case INPUTSTD: val = OSDItemValue = VInputStdDetectMode;
591 2 break;
592 2
593 2 #ifdef WIDE_SCREEN //.................................................
594 2 case WIDESCREEN:
595 2 val = WideScreenMode; break;
596 2 #endif //.................................................
597 2
598 2 }
599 1
600 1 return val;
601 1 }
602
603 #define MAX_VIDEOMODE 4
604 #define MAXVCHIPMOVIE 7
605
606 WORD SetItemValue( BYTE id, BYTE flag )
607 {
608 1 WORD val=0;
609 1 // BYTE i;
610 1
C51 COMPILER V7.06 OSDMENU 02/21/2008 14:00:28 PAGE 11
611 1 switch( id ) {
612 2 //case SYSTEM_CLOCK_H:
613 2 //case WAKEUP_TIME_H:
614 2 //case OFF_TIME_H:
615 2 // val = SetClock_hour(flag); break;
616 2
617 2 //case SYSTEM_CLOCK:
618 2 //case WAKEUP_TIME:
619 2 //case OFF_TIME:
620 2 // val = SetClock_min(flag); break;
621 2 case SLEEP_TIMER: val = ChangeSleepTimer( flag ); break;
622 2
623 2 #ifdef SUPPORT_OSDPOSITIONMOVE
624 2 case OSDPOSITIONMODE: val = SetOSDPositionMode( flag ); break;
625 2 //case OSD_VPOS: val = SetOSDMenuYValue(flag); break;
626 2 //case OSD_HPOS: val = SetOSDMenuXValue(flag); break;
627 2 #endif
628 2
629 2 // case OSD_DURATION: val = SetOSDDurationValue(flag); break;
630 2 case OSDLANG: val = SetLanguage (flag); break;
631 2
632 2 #if defined(SUPPORT_PC) || defined(SUPPORT_DTV)
633 2 case PANEL_CONTRAST: val = SetPanelContrast(flag); break;
634 2 case PANEL_BRIGHTNESS: val = SetPanelBrightness(flag); break;
635 2 #endif
636 2
637 2 #ifdef SUPPORT_PC
638 2 case PC_VPOS: val = SetVPosition(flag); break;
639 2 case PC_HPOS: val = SetHPosition(flag); break;
640 2 case PC_CLOCK: val = SetPCCoarseValue(flag); break;
641 2 case PC_PHASE: val = SetPhaseValue(flag); break;
642 2 #endif
643 2
644 2 case PC_COLOR_TEMP: val = SetPCColorTemp(flag); break;
645 2
646 2 case PC_COLOR_R: val = SetPCColor(RED, flag); break;
647 2 case PC_COLOR_G: val = SetPCColor(GREEN, flag); break;
648 2 case PC_COLOR_B: val = SetPCColor(BLUE, flag); break;
649 2
650 2 case VIDEO_MODE: val = GetVideoModeEE();
651 2 if(flag==UP) val ++;
652 2 else val = val + MAX_VIDEOMODE -1;
653 2 val %= MAX_VIDEOMODE ;
654 2 SetVideoMode(val);
655 2
656 2 if( GetVideoModeEE() != 3 ) // if not user mode, mask the control.
657 2 DrawAttrCnt(OSDMENU_SUBADDR+MENU_WIDTH*2, BACK_COLOR, (MENU_HEIGHT-1)*MENU_WIDTH );
658 2 else
659 2 DrawAttrCnt(OSDMENU_SUBADDR+MENU_WIDTH*2, DEFAULT_COLOR, (MENU_HEIGHT-1)*MENU_WIDTH );
660 2 break;
661 2
662 2 case VIDEO_CONTRAST:
663 2 case VIDEO_BRIGHTNESS:
664 2 case VIDEO_HUE:
665 2 val= ChangeVideoData(id-VIDEO_CONTRAST,flag); break;
666 2 case VIDEO_SATURATION: val = ChangeVideoData(id-VIDEO_CONTRAST,flag);
667 2 ChangeVideoData(id+1-VIDEO_CONTRAST,flag);
668 2 break;
669 2 //val = SetVideoSaturation(V_SAT, flag); break;
670 2 case VIDEO_SHARPNESS: val = SetVideoSharpness(flag); break;
671 2 case VIDEO_BACKLIGHT: val = ChangeVideoData(id-VIDEO_CONTRAST,flag); break;
672 2
C51 COMPILER V7.06 OSDMENU 02/21/2008 14:00:28 PAGE 12
673 2
674 2
675 2 case AUDIO_VOLUME: val = ChangeVol( (flag==UP ? 1 : -1) ); break;
676 2 #ifdef SUPPORT_MSP_AUDIO
case AUDIO_BALANCE: val = ChangeBalance( (flag==UP ? 1 : -1) ); break;
case AUDIO_BASS: val = ChangeBass( (flag==UP ? 1 : -1) ); break;
case AUDIO_TREBLE: val = ChangeTreble( (flag==UP ? 1 : -1) ); break;
#endif
681 2
682 2 #ifdef SUPPORT_TV
case INPUTSTD:
val = VInputStdDetectMode;
if(flag==UP) val++;
else val = ( val+MAXINPUTSTD -1 );
val %= MAXINPUTSTD;
//Printf("\r\n++IPUTSTD:0x%x __", (WORD)val);
//i = GetInputSelection();
//if( i==TV )
ChangeVInputStdDetectMode(val);
break;
#ifdef NTSC_TV
case AIR_CABLE_TV: val = ToggleTVType(); break;
case STORE_CLEAR_TVCHN: val = StoreClearCurChn(); break;
#endif
case FINE_TUNE_CHANNEL: val = ChangeFineChannel(flag); break;
#endif
701 2
702 2
703 2
704 2 #ifdef WIDE_SCREEN
705 2 case WIDESCREEN: val = WideScreenMode;
706 2 if(flag==UP) val++;
707 2 else val = ( val+MAXWIDESCREEN -1 );
708 2 val %= MAXWIDESCREEN;
709 2 Set4WideScreen( val );
710 2 break;
711 2 #endif //WIDE_SCREEN
712 2
713 2 }
714 1
715 1 return val;
716 1 }
717
718
719 void DisplayViewBar(WORD addr, BYTE val)
720 {
721 1 CODE BYTE BAR_ROM_TABLE[] = {
722 1 0x01,0x01,0x01,0x01, // ...
723 1 0x02,0x02,0x02,0x02,0x02, // |..
724 1 0x05,0x05,0x05,0x05,0x05,// ||.
725 1 0x03, // |
726 1 0x04, // |||
727 1 };
728 1
729 1 BYTE i=0;
730 1 BYTE Bar_str[]={ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, ' ', ' ', ' ',0 };
731 1
732 1 // Bar
733 1 if( BAR_LENGTH != 0 ) {
734 2 if(val < 98)
C51 COMPILER V7.06 OSDMENU 02/21/2008 14:00:28 PAGE 13
735 2 {
736 3 Bar_str[val/14] = BAR_ROM_TABLE[val%14];
737 3 for(i = val/14 + 1; i < 7; i++)
738 3 Bar_str[i] = BAR_ROM_TABLE[0];
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?