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

📄 osdprgm.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                            __wGDIString[1] = CHAR_UNDERLIN;                            __wGDIString[2] = CHAR_UNDERLIN;                               __wGDIString[3] = CHAR_UNDERLIN;                            __wGDIString[4] = CHAR_UNDERLIN;                                                     }						*/						//CoCo1.21, replace the above code												_OSDPRGM_UpdateProgramChapter(4);                        GDI_SetTextColor(TEXT_BG_COLOR, GDI_ENTRY_4B_COLOR_YELLOW);                        GDI_DRAW_STRING (MAIN_FRAME_X0+FRAME_THICKNESS+145, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bMainHighlightPos-1));                     }                                              else //PROGRAM_NUM_CURSOR_CHAPTER                    {                        _SetClearHighlight(CLEAR_HIGHLIGHT);                        _bCurrentFrame++;                        _SetClearHighlight(SET_HIGHLIGHT);                         if (__wDiscType & BOOK_DVD)                        {                            DVD_ParseInfo ( DVD_TOTAL_CHAPTERS, &__dwTemp, (WORD)(_bTitleStart+_bTitleHighlightPos-1) );                                         _wTotalChapter = (WORD)__dwTemp;                            }                        else //CDROM_M1                            _wTotalChapter=__pwFMFilesOfDir[_bTitleStart+_bTitleHighlightPos-1-1]; //dir: 0~ 						                        _ShowChapterList();                        _bCurrentFrame = TITLE_FRAME; /////highlight remains in Title Frame                                             }                }                    //else if (_bCurrentFrame==TITLE_FRAME)                 else if (_bCurrentFrame==TITLE_FRAME && _wTotalChapter) //not allowed to go to chapter frame for empty dir.                 {					_SetClearHighlight(CLEAR_HIGHLIGHT);					_bCurrentFrame++;					_SetClearHighlight(SET_HIGHLIGHT);                 }            }#endif //#ifdef SUPPORT_SIMPLE_FM_PROGRAM 			#endif //#ifndef SUPPORT_PRGM_NUM_INPUT                        else //BOOK_VCD            {                if (_bCurrentFrame==MAIN_FRAME)                {                    _SetClearHighlight(CLEAR_HIGHLIGHT);                    _bCurrentFrame++;                    _SetClearHighlight(SET_HIGHLIGHT);                        }                  }                       }                __bKey = KEY_NO_KEY;        break;				    case KEY_ENTER: //Kevin1.07, combine all the following keys    case KEY_PLAY_PAUSE: //Kevin1.06, add    case KEY_PLAY: //Kevin0.87, KEY_PLAY act as KEY_ENTER for some cases#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06        _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL);#endif        __bProgramCurrentIndex = _bMainStart+_bMainHighlightPos-1; //current index in Main Frame                if ( (__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && _bCurrentFrame==CHAPTER_FRAME)          {#ifdef SUPPORT_SIMPLE_FM_PROGRAM //Kevin1.10            if (__wDiscType&CDROM_M1)                LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, __bProgramCurrentIndex-1,  _bTitleStart+_bTitleHighlightPos-2, _wChapterStart+_wChapterHighlightPos-1);	 //dir: 0~ (stored in the array)  1~ (display on UI)            else#endif                LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, __bProgramCurrentIndex-1,  _bTitleStart+_bTitleHighlightPos-1, _wChapterStart+_wChapterHighlightPos-1);	#ifdef SUPPORT_PRGM_NUM_INPUT             _bPrgmDigitPos = PROGRAM_NUM_CURSOR_TITLE; //reset#endif			            //clear chapter frame, up arrow rect, and down arrow rect            GDI_FILL_RECT(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT, CHAPTER_FRAME_X1, CHAPTER_FRAME_Y1+1+ARROW_HEIGHT,				GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE 				);                  _bCurrentFrame--;            _SetClearHighlight(CLEAR_HIGHLIGHT);            _bCurrentFrame--;            _SetClearHighlight(SET_HIGHLIGHT);            //Kevin1.23DMTech, proceed to next entry when current entry is set            _OSDPRGM_ProceedToNextMainEntry();			            __bKey=KEY_NO_KEY;        }        else if ( (__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && _bCurrentFrame==TITLE_FRAME)        {            _SetClearHighlight(CLEAR_HIGHLIGHT);            if (_wTotalChapter) //move the highlight to Chapter Frame                _bCurrentFrame++;            else //empty dir => move the highlight to Main Frame                _bCurrentFrame--;            _SetClearHighlight(SET_HIGHLIGHT);			            __bKey=KEY_NO_KEY;        }           else if ( !(__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && (_bCurrentFrame==TITLE_FRAME) ) //VCD        {            LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, __bProgramCurrentIndex-1, NULL, _bTitleStart+_bTitleHighlightPos-1);				            _SetClearHighlight(CLEAR_HIGHLIGHT);            _bCurrentFrame--;            _SetClearHighlight(SET_HIGHLIGHT);            //Kevin1.23DMTech, proceed to next entry when current entry is set            _OSDPRGM_ProceedToNextMainEntry();                        __bKey=KEY_NO_KEY;        }                   #ifdef SUPPORT_CLEARALL_IN_PROGRAM                                     else if ( (_bCurrentFrame==MAIN_FRAME) && !__bProgramCurrentIndex )  //Clear All        {            //LINEAR_ClearProgramEntry(LINEAR_CLEARENTRY,NULL,NULL); //__wProgramData[0~MAX_PROG_ITEM-1]=0            LINEAR_ProgramEntryOperation(LINEAR_CLEAR_ALL_ENTRY,NULL,NULL,NULL);            _ShowMainList();            _bMainHighlightPos = 2;  //highlight 1. __-__             _SetClearHighlight(SET_HIGHLIGHT);                              __bKey=KEY_NO_KEY;        }#endif                      //else _bCurrentFrame == MAIN_FRAME other than Clear All        //cc.c take care of KEY_PLAY/KEY_PLAY_PAUSE                               if (bKey==KEY_ENTER)            __bKey=KEY_NO_KEY;         #ifdef SUPPORT_SIMPLE_FM_PROGRAM //Kevin1.10        if (__bKey==KEY_PLAY || __bKey==KEY_PLAY_PAUSE) //to play program        {                        if (__bThumbnailMode)                THUMBNAIL_Exit();        }#endif        break;		    case KEY_CLEAR:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06        _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL);#endif        if ( _bCurrentFrame==MAIN_FRAME)         {            __bProgramCurrentIndex = _bMainStart+_bMainHighlightPos-1; //current index in Main Frame			            if (!__bProgramCurrentIndex ) //Clear All             {                //LINEAR_ClearProgramEntry(LINEAR_CLEARENTRY,NULL,NULL); //__wProgramData[0~MAX_PROG_ITEM-1]=0                LINEAR_ProgramEntryOperation(LINEAR_CLEAR_ALL_ENTRY,NULL,NULL,NULL);                _ShowMainList();#ifdef SUPPORT_CLEARALL_IN_PROGRAM                _bMainHighlightPos = 2;  //highlight 1. __-__ #else                _bMainHighlightPos = 1;  //highlight 1. __-__ #endif                 _SetClearHighlight(SET_HIGHLIGHT);                    }            else //Clear one Entry            {                /////__wProgramData[__bTemp-1] = 0x0000;                LINEAR_ProgramEntryOperation(LINEAR_DELETE_ENTRY_BY_INDEX_WO_REARRANGE, __bProgramCurrentIndex-1, NULL, NULL);                                _SetClearHighlight(SET_HIGHLIGHT);            }                        }        else         {            //clear chapter frame, up arrow rect, and down arrow rect            GDI_FILL_RECT(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT, CHAPTER_FRAME_X1, CHAPTER_FRAME_Y1+1+ARROW_HEIGHT,				GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE 				);                  _bCurrentFrame=TITLE_FRAME;            _SetClearHighlight(CLEAR_HIGHLIGHT);            _bCurrentFrame=MAIN_FRAME;            _SetClearHighlight(SET_HIGHLIGHT);                    }                            __bKey=KEY_NO_KEY;        break;        		//Kevin0.91, let original flow deal with PROGRAM,POWER,OPEN,...    case KEY_POWER:    case KEY_OPEN_CLOSE:    case KEY_PROGRAM: //exit program UI    case KEY_SETUP:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06        _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL);#endif        break;		#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06  		//process number keys 0..9 (except 10+..)    case KEY_N0:    case KEY_N1:    case KEY_N2:    case KEY_N3:    case KEY_N4:    case KEY_N5:    case KEY_N6:    case KEY_N7:    case KEY_N8:    case KEY_N9:          if ( _bCurrentFrame==MAIN_FRAME)         {            if (_OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_NUMBER, bKey-KEY_N0))                __bKey=KEY_NO_KEY;            else                __bKey=KEY_INVALID; //OSD show "Invalid"        }        else            __bKey=KEY_NO_KEY;        break;#endif				//Kevin0.91,doesn't allow other keys    default: 		__bKey=KEY_INVALID;    }	                //Alan2.37, fix the drawing UI slowly when playing CDDA in Anti-Shock#ifndef SUPPORT_ANTISHOCK    //Kevin1.00, fix the video hang/audio broken when invoking Program GUI    HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);#else                if (BOOK_CDDA != __wDiscType)                {                    HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);                }#endif	    return __bKey;	} //end of OSDPRGM_ProcessKey//  *********************************************************************************//  Function    :   _ShowMainList//  Description :   Show Main List in the Main Frame//  Arguments   :   None//  Return      :   None//  Side Effect :   _bCurrentFrame might be changed//  Note        :   Why not combine _ShowMainList(), _ShowTitleList(), and _ShowFrameList() into _ShowList()?//                  Because the exactly common code is so little although they're similar. //  *********************************************************************************static void _ShowMainList(void){                //Alan2.37, fix the drawing UI slowly when playing CDDA in Anti-Shock#ifndef SUPPORT_ANTISHOCK    //Kevin1.00, fix the video hang/audio broken when invoking Program GUI    HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);#else                if (BOOK_CDDA != __wDiscType)                {                    HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);                }#endif    _bCurrentFrame = MAIN_FRAME; /////_ShowOneEntry() will refer to        //redraw main frame (can also be moved to the following of //main frame)                     GDI_DRAW_FRAME(MAIN_FRAME_X0, MAIN_FRAME_Y0, MAIN_FRAME_X1, MAIN_FRAME_Y1,                    GDI_ENTRY_4B_COLOR_WHITE, // bColorBright                    GDI_ENTRY_4B_COLOR_TEXT_DISABLED, // bColorDark                    GDI_ENTRY_4B_COLOR_CENTER, // bColorCenter                    FRAME_POP_SOLID, // bStyle                    FRAME_THICKNESS // bThickness                    );                      GDI_SetTextColor(TEXT_FG_COLOR, GDI_ENTRY_4B_COLOR_BLACK);        GDI_SetTextColor(TEXT_BG_COLOR, GDI_ENTRY_4B_COLOR_CENTER);    for (_bOSDPRGMTemp1=_bMainStart; (_bOSDPRGMTemp1<=MAX_PROG_ITEM) && ((_bOSDPRGMTemp1-_bMainStart)<MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME); _bOSDPRGMTemp1++)    {              _ShowOneEntry(_bOSDPRGMTemp1);    }                        //show arrow down rect    if ( (MAX_PROG_ITEM-_bMainStart+1) > MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME)    {                                          GDI_DRAW_FRAME(MAIN_FRAME_X0, MAIN_FRAME_Y1+1, MAIN_FRAME_X1, MAIN_FRAME_Y1+1+ARROW_HEIGHT,                        GDI_ENTRY_4B_COLOR_WHITE, // bColorBright                        GDI_ENTRY_4B_COLOR_TEXT_DISABLED, // bColorDark                        GDI_ENTRY_4B_COLOR_CENTER, // bColorCenter                        FRAME_POP_SOLID, // bStyle                        FRAME_THICKNESS // bThickness                        );                                       GDI_OUTPUT_TEXT(((MAIN_FRAME_X0+MAIN_FRAME_X1)>>1)-5, MAIN_FRAME_Y1+4, aArrowDown);       }     else //clear arrow down rect    {        GDI_FILL_RECT(MAIN_FRAME_X0, MAIN_FRAME_Y1+1, MAIN_FRAME_X1, MAIN_FRAME_Y1+1+ARROW_HEIGHT,                        GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE                      );         }                            //Alan2.37, fix the drawing UI slowly when playing CDDA in Anti-Shock#ifndef SUPPORT_ANTISHOCK    //Kevin1.00, fix the video hang/audio broken when invoking Program GUI    HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);#else                if (BOOK_CDDA != __wDiscType)                {                    HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);                }#endif    //show arrow up rect#ifdef SUPPORT_CLEARALL_IN_PROGRAM    if ( _bMainStart >0)#else    if ( _bMainStart >1)#endif    {                                          GDI_DRAW_FRAME(MAIN_FRAME_X0, MAIN_FRAME_Y0-1-ARROW_HEIGHT, MAIN_FRAME_X1, MAIN_FRAME_Y0-1,                        GDI_ENTRY_4B_COLOR_WHITE, // bColorBright                        GDI_ENTRY_4B_COLOR_TEXT_DISABLED, // bColorDark                        GDI_ENTRY_4B_COLOR_CENTER, // bColorCenter                        FRAME_POP_SOLID, // bStyle                        FRA

⌨️ 快捷键说明

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