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

📄 osdbmark.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 3 页
字号:
                // Micky1.24a, use UTL_EstimateBufferTime                // LLY2.05, using API to get current decoded time                __dwTemp = UTL_GetDecodedTime() - __dwTimeDiscBegin;                /*                UTL_GetCurrentTime();                __dwTemp = UTL_EstimateBufferTime();                __dwTemp = (__dwTimeNow - __dwTimeDiscBegin) - __dwTemp;    // exclude buffer time                */                __dwTemp = UTL_SectorstoMSF(__dwTemp);  // convert sectors into time                __wBookMark[__wBookMark[0]]=MAKEWORD (MSF_SECOND ( __dwTemp ), MSF_MINUTE ( __dwTemp ) );            }            else//dvd            {                // Micky1.24a, use __wTimeCurrentDisplay for time.                __dwTemp= __wTimeCellBegin + __wTimeCurrentDisplay;                __wBookMark[__wBookMark[0]]= MAKEWORD ( __dwTemp%60, __dwTemp/60);                __bBookMark_Title[__wBookMark[0]]= __bTitle;                _wBookMark_Chapter[__wBookMark[0]]= __wChapter;#ifdef SUPPORT_STILLRSM                //Aron2.38, clear the still flag first                __bBookMarkIsStill[__wBookMark[0]] = FALSE;                HAL_ReadInfo(HAL_INFO_STILL, &dwCheckStill);                if(dwCheckStill)                {                    //Aron2.38, Record info for bookmark to still content                    __bBookMarkIsStill[__wBookMark[0]] = TRUE;                    __dwBookMarkVOBU[__wBookMark[0]] = __dwCellVideo_VOBUSA;                }#endif            }            _ShowTitleChapterTime();            //Kevin1.23DMTech, proceed to next entry when current entry is set//            _OSDBOOKMARK_ProceedToNextMainEntry();                        _SetClearHighlight(SET_HIGHLIGHT);            bKeyStatus = KEY_NO_KEY;        }        break;		    case KEY_CLEAR:    case KEY_STOP:        if (__wBookMark[ __wBookMark[0] ]!=0)        {            //remove time            __wBookMark[ __wBookMark[0] ] = 0;            __bBookMark_Title[__wBookMark[0]] = 0;                                _wBookMark_Chapter[__wBookMark[0]] = 0;                                _ShowOneEntry(__wBookMark[0]);            _ShowTitleChapterTime();            _SetClearHighlight(SET_HIGHLIGHT);        }        bKeyStatus = KEY_NO_KEY;        break;            case KEY_POWER:    case KEY_OPEN_CLOSE:    case KEY_BOOKMARK:/*        __bTemp= LOBYTE ( __wDiscType ) & 0x0f;        if( !( __wDiscType ==BOOK_DVD || __bTemp==BOOK_VCD ) )        {            bKeyStatus = INVALID_KEY;            break;        }*/        if ( __bCDDA_DTS == CDDA_CDG)        {            bKeyStatus = INVALID_KEY;            break;        }        if (#ifndef NO_DIGEST            !__btDIGEST && !__btPBC &&#endif            //alex1.25,20040428,Book can turn on/off on ( PBC on  / Navigator on )           // !__btPBC && !__bNVPlayMode && __bModeCmd != KEY_STOP            __bModeCmd != KEY_STOP           )        {            //First Time Enable , can record            //Second Time , can remove all            if (!__btBookMark)            {                __btBookMark= TRUE;#ifdef    FORCE_CLEAR_LOGO                if ( __bModeCmd == KEY_STOP )                    UTL_SetPlayMode ( MODE_PLAYMOTION );#endif    // FORCE_CLEAR_LOGO//alan, dvd_067 for fixing a bug      if (__wBookMark [0]==0) __wBookMark [0]=1;#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM                    //OSDPRGM_EnterByPrestop();                    CC_ForceStop(CC_FORCE_STOP_FROM_BOOKMARK);#endif                OSD_ChangeUI(OSD_UI_BOOKMARK, OSD_ENTER_UI);                _OSDBOOKMARK_ShowUI();            }            else            {                __btBookMark=FALSE;                OSDBOOKMARK_Exit(OSD_UI_EXIT_ALL);                OSD_ChangeUI(OSD_UI_BOOKMARK, OSD_EXIT_UI);#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM                //OSDPRGM_ExitByResume();                CC_ForceResumeRePlay(CC_FORCE_STOP_FROM_BOOKMARK);#endif            }            bKeyStatus = KEY_NO_KEY;        }        else        {            bKeyStatus = INVALID_KEY;        }        break;    case KEY_SETUP:        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:              bKeyStatus = KEY_NO_KEY;        break;#endif				//Kevin0.91,doesn't allow other keys    default:         bKeyStatus = KEY_INVALID;        break;    }	    return bKeyStatus;	} //end of OSDBOOKMARK_ProcessKey//  *********************************************************************************//  Function    :   OSDBOOKMARK_Recover//  Description :   The function is called by OSD to do the recovery of Program UI //  Arguments   :   bRecoverRegion, the recover region //		:   OSD_RECOVER_ALL //		:   OSD_RECOVER_UPPER_REGION, invalid//		:   OSD_RECOVER_BOTTOM_REGION, invalid//  Return      :   TRUE, The region has been recovered.//              :   FALSE, The region doesn't need to be recovered in this UI.//  Side Effect ://  *********************************************************************************BYTE OSDBOOKMARK_Recover(BYTE bRecoverRegion){    if (OSD_RECOVER_ALL != bRecoverRegion) return FALSE;    _OSDBOOKMARK_ShowUI();    return TRUE;}//  ***************************************************************************//  Function    :   OSDBOOKMARK_ConfigOSDRegion//  Description :   This function will be called by OSD module when entering Bookmark UI//  Arguments   :   None.//  Return      :   None.//  Side Effect ://  ***************************************************************************void OSDBOOKMARK_ConfigOSDRegion(void){    GDI_REGION_INFO RegionInfo;#ifdef  BORROW_FRAME_BUFFER    DWORD dwBufferAddr;#endif    RegionInfo.bColorMode = GDI_OSD_8B_MODE;    RegionInfo.wWidth = GDI_REGION_WIDTH;#ifdef ENLARGE_OSD_FOR_PAL_MODE    RegionInfo.dwTAddr = DS_OSDFRAME_ST;    if ((__bTVType == SETUP_SCREEN_TV_SYSTEM_NTSC) || (__bTVType == SETUP_SCREEN_TV_SYSTEM_PAL_M))    {        RegionInfo.wHeight = GDI_REGION_HEIGHT;    }    else    {        RegionInfo.wHeight = GDI_REGION_HEIGHT_PAL;    }#else#ifdef  BORROW_FRAME_BUFFER    if (BMARK_FRAME_X1 <= __RegionList[0].wWidth  &&        BMARK_FRAME_Y1 <= __RegionList[0].wHeight &&        GDI_OSD_8B_MODE == __RegionList[0].bColorMode)    {        // Use OSD buffer and Frame buffer 0        RegionInfo.dwTAddr = DS_OSDFRAME_ST;    }    else    {        // Use Frame buffer 1 or 2        dwBufferAddr = DISP_QueryAvailableBuffer();        if (0 == dwBufferAddr)        {            RegionInfo.dwTAddr = DS_OSDFRAME_ST;            printf("DISP can't find an available buffer for OSD region\n");        }        else        {            RegionInfo.dwTAddr = dwBufferAddr;        }    }    RegionInfo.wHeight = BMARK_FRAME_Y1;#else    RegionInfo.dwTAddr = DS_OSDFRAME_ST;    RegionInfo.wHeight = GDI_REGION_HEIGHT;#endif  // #ifdef  BORROW_FRAME_BUFFER#endif  // #ifdef ENLARGE_OSD_FOR_PAL_MODE/*    RegionInfo.wWidth = BMARK_FRAME_X1;    RegionInfo.wHeight = BMARK_FRAME_Y1;*/#ifdef  BORROW_FRAME_BUFFER    GDI_ClearRegion(0); //Alan2.30, fix mantis bug #1886    OSD_SetRegion(0, TRUE, &RegionInfo);#else    OSD_SetRegion(0, FALSE, &RegionInfo);#endif    /* --CoCo2.30    GDI_DeactivateRegion();    GDI_ConfigRegionInfo(0, &RegionInfo);    GDI_InitialRegion(0);    // Clear region    GDI_ClearRegion(0);    GDI_ActivateRegion(0);    */}//  *********************************************************************************//  Function    :   _ShowMainList//  Description :   Show Main List in the Main Frame//  Arguments   :   None//  Return      :   None//  *********************************************************************************static void _ShowMainList(void){    //redraw main frame (can also be moved to the following of //main frame)                     _InitRect(&(_PRGM_FrameAttr.rect), MAIN_FRAME_X0, MAIN_FRAME_Y0,                                       MAIN_FRAME_X1, MAIN_FRAME_Y1);    GDI_DrawFrame_909(0, &_PRGM_FrameAttr);    for (_bOSDBOOKMARKTemp =_bMainStart; (_bOSDBOOKMARKTemp<=MAX_PROG_ITEM) && ((_bOSDBOOKMARKTemp-_bMainStart)<MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME); _bOSDBOOKMARKTemp++)    {              _ShowOneEntry(_bOSDBOOKMARKTemp);    }                        //show arrow down rect    if ( (MAX_PROG_ITEM-_bMainStart+1) > MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME)    {                                          _InitRect(&(_PRGM_FrameAttr.rect), MAIN_FRAME_X0, MAIN_FRAME_Y1+1,                  MAIN_FRAME_X1, MAIN_FRAME_Y1+1+ARROW_HEIGHT);        GDI_DrawFrame_909(0, &_PRGM_FrameAttr);        _PRGM_StrAttr.wX = ((MAIN_FRAME_X0+MAIN_FRAME_X1)>>1)-5;        _PRGM_StrAttr.wY = MAIN_FRAME_Y1+4;        GDI_DrawString_909(0, &_PRGM_StrAttr, aArrowDown);    }     else //clear arrow down rect    {        _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG;        _InitRect(&(_PRGM_RectAttr.rect), MAIN_FRAME_X0, MAIN_FRAME_Y1+1,                  MAIN_FRAME_X1, MAIN_FRAME_Y1+1+ARROW_HEIGHT);        GDI_FillRect_909(0, &_PRGM_RectAttr);    }                //show arrow up rect#ifdef SUPPORT_CLEARALL_IN_PROGRAM    if ( _bMainStart >0)#else    if ( _bMainStart >1)#endif    {                                          _InitRect(&(_PRGM_FrameAttr.rect), MAIN_FRAME_X0,                  MAIN_FRAME_Y0-1-ARROW_HEIGHT,                   MAIN_FRAME_X1, MAIN_FRAME_Y0-1);        GDI_DrawFrame_909(0, &_PRGM_FrameAttr);        _PRGM_StrAttr.wX = ((MAIN_FRAME_X0+MAIN_FRAME_X1)>>1)-5;        _PRGM_StrAttr.wY = MAIN_FRAME_Y0-ARROW_HEIGHT+2;        GDI_DrawString_909(0, &_PRGM_StrAttr, aArrowUp);    }      else //clear arrow up rect    {        _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG;        _InitRect(&(_PRGM_RectAttr.rect), MAIN_FRAME_X0,              MAIN_FRAME_Y0-1-ARROW_HEIGHT,              MAIN_FRAME_X1, MAIN_FRAME_Y0-1);        GDI_FillRect_909(0, &_PRGM_RectAttr);    }                                  } //end of _ShowMainList()//  *********************************************************************************//  Function    :   _ShowOneEntry//  Description :   Show One Entry in either Main, Title, or Chapter Frame.//  Arguments   :   wEntry: main frame entry #, title #, or chapter #//  Return      :   None//  Side Effect ://  *********************************************************************************static void _ShowOneEntry(WORD wEntry){    _wOSDBOOKMARKString[0] = 3; //digits       1.     -    //Kevin1.22, expand program entry to more than 10    _wOSDBOOKMARKString[1] = aNDNumbers[wEntry/10];    if (wEntry<10)        _wOSDBOOKMARKString[1] = CHAR_SPACE;    _wOSDBOOKMARKString[2] = aNDNumbers[wEntry%10];    _wOSDBOOKMARKString[3] = CHAR_FULL_STOP;    _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT2;    _PRGM_StrAttr.wX = MAIN_FRAME_X0+FRAME_THICKNESS+10;    _PRGM_StrAttr.wY = MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart);    GDI_DrawString_909(0, &_PRGM_StrAttr, _wOSDBOOKMARKString);    if (0 !=  __wBookMark[wEntry])     {        _PRGM_StrAttr.wX = MAIN_FRAME_X0+70;        GDI_DrawString_909(0, &_PRGM_StrAttr, aBookmark);        _PRGM_StrAttr.wX += 125;        _ShowOneEntryNumber(wEntry);        GDI_DrawString_909(0, &_PRGM_StrAttr, _wOSDBOOKMARKString);    } else {        _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_COLOR_TEXT2;        _InitRect(&(_PRGM_RectAttr.rect),                  MAIN_FRAME_X0 + FRAME_THICKNESS + 65,                  MAIN_FRAME_Y0 + FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) - 5,                  MAIN_FRAME_X1- FRAME_THICKNESS - 25,                  MAIN_FRAME_Y0 + FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) + 3 - 5);        GDI_FillRect_909(0, &_PRGM_RectAttr);    }}//  *********************************************************************************//  Function    :   _ShowOneEntryNumber//  Description :   Show One Entry Number in either SEARCH_TITLE, SEARCH_CHAPTER, or SEARCH_TIME field.//  Arguments   :   bSize : Display Size , bNumber: Display Number//  Return      :   None//  Side Effect ://  *********************************************************************************static void _ShowOneEntryNumber(WORD wNumber){    //2 digits  or 3 digits    if (wNumber < 10)        _wOSDBOOKMARKString[0] = 1;    else if (9 < wNumber && wNumber < 100)        _wOSDBOOKMARKString[0] = 2;    else if (99 < wNumber && wNumber < 1000)        _wOSDBOOKMARKString[0] = 3;    for (_bOSDBOOKMARKTemp1 = _wOSDBOOKMARKString[0]; _bOSDBOOKMARKTemp1 > 0; _bOSDBOOKMARKTemp1--)    {         _wOSDBOOKMARKString[_bOSDBOOKMARKTemp1] =  aNDNumbers[wNumber%10];        wNumber /= 10;    }/*    _wOSDBOOKMARKString[bSize]     =  aNDNumbers[wNumber%10];    _wOSDBOOKMARKString[bSize-1]   =  aNDNumbers[(wNumber/10)%10];*/}//  *********************************************************************************//  Function    :   _ShowTitleChapterTime //  Description :   Show Title or Chapter and Time//  Return      :   None//  *********************************************************************************static void _ShowTitleChapterTime(){    _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG;    _InitRect(&(_PRGM_RectAttr.rect), MAIN_FRAME_X1+20, MAIN_FRAME_Y0,              BMARK_FRAME_X1, MAIN_FRAME_Y1);    GDI_FillRect_909(0, &_PRGM_RectAttr);    if (0 != __wBookMark[__wBookMark[0]])     {                      _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT1;        _PRGM_StrAttr.bBackground = OSDPRGM_ENTRY_MAIN_COLOR_BG;        _PRGM_StrAttr.bColorKey = 0;        if (__wDiscType & BOOK_DVD)        {            __bSearchTitle=__bBookMark_Title[__wBookMark[0]];            __bGoToTimeNO=0;            if ( __wBookMark[__wBookMark[0]]!=0)            __bGoToTimeNO=1;            _PRGM_StrAttr.wX = MAIN_FRAME_X1+30; _PRGM_StrAttr.wY = MAIN_FRAME_Y0;             GDI_DrawString_909(0, &_PRGM_StrAttr, aTitle);            _PRGM_StrAttr.wX += 105;             GDI_DrawString_909(0, &_PRGM_StrAttr, aColon);

⌨️ 快捷键说明

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