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

📄 osdprgm.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
    else //clear arrow down rect    {        _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG;       _OSDPRGM_FillRect(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y1+1, CHAPTER_FRAME_X1, CHAPTER_FRAME_Y1+1+ARROW_HEIGHT); //CoCo1.20, reduce code size.    }             //show arrow up rect    if ( _wChapterStart >1)    {                   {               _OSDPRGM_DrawFrame(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT,                CHAPTER_FRAME_X1-20, CHAPTER_FRAME_Y0-1); //CoCo1.20, reduce code size.            _OSDPRGM_SetStringPos(((CHAPTER_FRAME_X0+CHAPTER_FRAME_X1-20)>>1)-7, CHAPTER_FRAME_Y0-ARROW_HEIGHT+2); //CoCo1.20, reduce code size.            _OSDPRGM_DrawDynamicString(aArrowUp);        }    }         else //clear arrow up rect    {        _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG;        _OSDPRGM_FillRect(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT, CHAPTER_FRAME_X1, CHAPTER_FRAME_Y0-1); //CoCo1.20, reduce code size.    }           } //end of _ShowChapterList()//  *********************************************************************************//  Function    :   _SetClearHighlight//  Description :   Set/Clear Highlight & Show the current entry//  Arguments   :   bFlag: SET_HIGHLIGHT/CLEAR_HIGHLIGHT//  Implicit Arg:  _bCurrentFrame//  Return      :   None//  Side Effect ://  *********************************************************************************static void _SetClearHighlight(BYTE bFlag){       _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT2;    if (bFlag) //SET_HIGHLIGHT    {        _PRGM_StrAttr.bBackground = OSDPRGM_ENTRY_COLOR_HILIGHT;        _bOSDPRGMTemp = OSDPRGM_ENTRY_COLOR_HILIGHT;          }    else //CLEAR_HIGHLIGHT    {        if ((__bKey == KEY_RIGHT || KEY_PLAY == __bKey || KEY_ENTER == __bKey) && (MAIN_FRAME != _bCurrentFrame))        {            if (__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1)            {                    _bOSDPRGMTemp = OSDPRGM_ENTRY_TEXT_DISABLED;             }            else //VCD                _bOSDPRGMTemp = OSDPRGM_ENTRY_TEXT_DISABLED;         } else {            if (TITLE_INPUT == _bCurrentFrame || CHAPTER_INPUT == _bCurrentFrame)                _bOSDPRGMTemp = OSDPRGM_ENTRY_MAIN_COLOR_BG;            else                _bOSDPRGMTemp = OSDPRGM_ENTRY_FRAME_CENTER;        }               _PRGM_StrAttr.bBackground = _bOSDPRGMTemp;    }              _PRGM_RectAttr.bColor = _bOSDPRGMTemp;    if (_bCurrentFrame == MAIN_FRAME)    {        _OSDPRGM_FillRect(MAIN_FRAME_X0+FRAME_THICKNESS,             ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bMainHighlightPos-1))),            MAIN_FRAME_X1-FRAME_THICKNESS,            ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bMainHighlightPos-1)+ENTRY_HEIGHT)));  //CoCo1.20, reduce code size.        _ShowOneEntry(((WORD)(_bMainStart+_bMainHighlightPos-1)));      }       else if (_bCurrentFrame == TITLE_INPUT)    {        _ShowInput(TITLE_INPUT, _bOSDPRGMTemp);    }    else if (_bCurrentFrame == TITLE_FRAME)    {        _OSDPRGM_FillRect(            TITLE_FRAME_X0+FRAME_THICKNESS,            ((WORD)(TITLE_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bTitleHighlightPos-1))),             TITLE_FRAME_X1-FRAME_THICKNESS,            ((WORD)(TITLE_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bTitleHighlightPos-1)+ENTRY_HEIGHT))); //CoCo1.20, reduce code size.        _ShowOneEntry(((WORD)(_bTitleStart+_bTitleHighlightPos-1)));       }      else if (_bCurrentFrame == CHAPTER_INPUT)    {        _ShowInput(CHAPTER_INPUT, _bOSDPRGMTemp);    }    else //CHAPTER_FRAME    {        {            _OSDPRGM_FillRect(                CHAPTER_FRAME_X0+FRAME_THICKNESS,                 ((WORD)(CHAPTER_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_wChapterHighlightPos-1))),                 CHAPTER_FRAME_X1-20-FRAME_THICKNESS,                ((WORD)(CHAPTER_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_wChapterHighlightPos-1)+ENTRY_HEIGHT))); //CoCo1.20, reduce code size.        }        _ShowOneEntry(((WORD)(_wChapterStart+_wChapterHighlightPos-1)));     }   } //end of _SetClearHighlight()   //  *********************************************************************************//  Function    :   _ShowInput//  Description :   Show One Entry in either Main, Title, or Chapter Frame. //  Arguments   :   wEntry: main frame entry #, title #, or chapter #//  Implicit Arg:  _bCurrentFrame//  Return      :   None//  Side Effect ://  *********************************************************************************static void _ShowInput(BYTE bInput, BYTE bBgColor){     _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT2;    _PRGM_StrAttr.bBackground = bBgColor;    _wOSDPRGMString[0] = 3;    _wOSDPRGMString[1] = CHAR_SPACE;    _wOSDPRGMString[2] = CHAR_SPACE;    _wOSDPRGMString[3] = CHAR_SPACE;    switch(bInput)    {    case TITLE_INPUT:        if (0 != __bProgramTitle)        {            _OSDPRGM_OutputNum(__bProgramTitle, 2);        }        /* --CoCo1.20, reduce code size.        else        {            _wOSDPRGMString[0] = 3;            _wOSDPRGMString[1] = CHAR_SPACE;            _wOSDPRGMString[2] = CHAR_SPACE;            _wOSDPRGMString[3] = CHAR_SPACE;        }        */        _OSDPRGM_SetStringPos(TITLE_FRAME_X0 + FRAME_THICKNESS + 15, TITLE_FRAME_Y0-2*ENTRY_HEIGHT); //CoCo1.20, reduce code size.        break;    case CHAPTER_INPUT:        if (0 != __wProgramChapter)        {            _OSDPRGM_OutputNum(__wProgramChapter, 2);        }        /* --CoCo1.20, reduce code size.        else        {            _wOSDPRGMString[0] = 3;            _wOSDPRGMString[1] = CHAR_SPACE;            _wOSDPRGMString[2] = CHAR_SPACE;            _wOSDPRGMString[3] = CHAR_SPACE;        }        */        _OSDPRGM_SetStringPos(CHAPTER_FRAME_X0 + FRAME_THICKNESS + 15, CHAPTER_FRAME_Y0-2*ENTRY_HEIGHT); //CoCo1.20, reduce code size.        break;    }    _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.    _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_COLOR_TEXT2;     _OSDPRGM_FillRect(        _PRGM_StrAttr.wX, //CoCo1.20, reduce code size.        _PRGM_StrAttr.wY + GDI_GetStringHeight(_wOSDPRGMString)+1,        _PRGM_StrAttr.wX + GDI_GetStringWidth(_wOSDPRGMString),        _PRGM_StrAttr.wY + GDI_GetStringHeight(_wOSDPRGMString)+3); //CoCo1.20, reduce code size.}//  *********************************************************************************//  Function    :   _ShowOneEntry//  Description :   Show One Entry in either Main, Title, or Chapter Frame. //  Arguments   :   wEntry: main frame entry #, title #, or chapter #//  Implicit Arg:  _bCurrentFrame//  Return      :   None//  Side Effect ://  *********************************************************************************static void _ShowOneEntry(WORD wEntry){     if (_bCurrentFrame == MAIN_FRAME)    {#ifdef SUPPORT_CLEARALL_IN_PROGRAM        if (!wEntry) //0        {            _wOSDPRGMString[0] = 9; //9 digits             _wOSDPRGMString[1] = CHAR_C;            _wOSDPRGMString[2] = CHAR_ll;            _wOSDPRGMString[3] = CHAR_ee;             _wOSDPRGMString[4] = CHAR_aa;            _wOSDPRGMString[5] = CHAR_rr;            _wOSDPRGMString[6] = CHAR_SPACE;            _wOSDPRGMString[7] = CHAR_A;             _wOSDPRGMString[8] = CHAR_ll;            _wOSDPRGMString[9] = CHAR_ll;            _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+20, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart); //CoCo1.20, reduce code size.            _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.        }                    else //1,2,...,9#endif        {            if (__wDiscType&BOOK_DVD)            {                _wOSDPRGMString[0] = 3; //digits       1.     -                 //Kevin1.22, expand program entry to more than 10                 _wOSDPRGMString[1] = aNDNumbers[wEntry/10]; //CoCo1.20, reduce code size                if (wEntry<10)                    _wOSDPRGMString[1] = CHAR_SPACE;                _wOSDPRGMString[2] = aNDNumbers[wEntry%10]; //CoCo1.20, reduce code size                _wOSDPRGMString[3] = CHAR_FULL_STOP;                _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+20, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size.                _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.                if (!__ProgIdxList[wEntry-1].wSubIndex) //0: not set yet                {                    _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_COLOR_TEXT2;                    _OSDPRGM_FillRect(                         MAIN_FRAME_X0+FRAME_THICKNESS+75,                         ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) - 5)),                          MAIN_FRAME_X0+FRAME_THICKNESS+75 + 120,                         ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) + 3 - 5))); //CoCo1.20, reduce code size.                }                else                                 //12 34                {                       _wOSDPRGMString[0] = 4; //2 digits                          _bOSDPRGMTemp = __ProgIdxList[wEntry-1].bMainIndex;                      _wOSDPRGMString[1] = aNDNumbers[_bOSDPRGMTemp/10];//CoCo1.20, reduce code size                    _wOSDPRGMString[2] = aNDNumbers[_bOSDPRGMTemp%10]; //CoCo1.20, reduce code size                     _wOSDPRGMString[3] = CHAR_HYPHEN_MINUS;                     _wOSDPRGMString[4] = CHAR_HYPHEN_MINUS;                     _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+75, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size.                     _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.                     _wOSDPRGMString[0] = 2; //2 digits                          __wTemp = __ProgIdxList[wEntry-1].wSubIndex;                     _wOSDPRGMString[1] = aNDNumbers[__wTemp/10]; //CoCo1.20, reduce code size                     _wOSDPRGMString[2] = aNDNumbers[__wTemp%10]; //CoCo1.20, reduce code size                        _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+125, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size.                     _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.                }              }            else //VCD              {                _wOSDPRGMString[0] = 3;                _wOSDPRGMString[1] = aNDNumbers[wEntry/10];//CoCo1.20, reduce code size                if (wEntry<10)                    _wOSDPRGMString[1] = CHAR_SPACE;                _wOSDPRGMString[2] = aNDNumbers[wEntry%10]; //CoCo1.20, reduce code size                _wOSDPRGMString[3] = CHAR_FULL_STOP;                _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+20, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size.                _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.                if (!__ProgIdxList[wEntry-1].wSubIndex) //0: not set yet                {                                      _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_COLOR_TEXT2;                    _OSDPRGM_FillRect(                        MAIN_FRAME_X0+FRAME_THICKNESS+75,                        ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) - 5)),                         MAIN_FRAME_X0+FRAME_THICKNESS+75 + 120,                        ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) + 3 - 5))); //CoCo1.20, reduce code size.                }                else                {                    __wTemp = __ProgIdxList[wEntry-1].wSubIndex; //     12                     _wOSDPRGMString[1] = aNDNumbers[__wTemp/10]; //CoCo1.20, reduce code size                    _wOSDPRGMString[2] = aNDNumbers[__wTemp%10]; //CoCo1.20, reduce code size                    _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+75, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size.                    _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.                }            }        }    }                                 else if (_bCurrentFrame == TITLE_FRAME)    {        if (!(__wDiscType&CDROM_M1)) //DVD/VCD        {            _OSDPRGM_OutputNum(wEntry, 2);        }        _OSDPRGM_SetStringPos(TITLE_FRAME_X0+FRAME_THICKNESS+15, TITLE_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bTitleStart)); //CoCo1.20, reduce code size.        _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.    }    else //CHAPTER_FRAME    {        if (!(__wDiscType&CDROM_M1)) //DVD/VCD        {            _OSDPRGM_OutputNum(wEntry, 2);        }        _OSDPRGM_SetStringPos(CHAPTER_FRAME_X0+FRAME_THICKNESS+15, CHAPTER_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_wChapterStart)); //CoCo1.20, reduce code size.        _OSDPRGM_DrawString(); //CoCo1.20, reduce code size.    }    } //end of _ShowOneEntry()//***************************************************************************//  Function    :   _OSDPRGM_ShowUI//  Abstract    :   Draw the Program UI.//  Arguments   :   //  Return      :   none.//  Side Effect :   none.//  Notes       :   //***************************************************************************void _OSDPRGM_ShowUI(void){#ifdef MINI_OSD_REGION //CoCo2.30, borrow frame buffer to show OSD.    __dwRegionHeight = GDI_REGION_HEIGHT; // 460    // Need to set to the correct DRAM address    GDI_InitialRegion (0); // initialize region to set it to 8-bit mode#endif            GDI_SetMixRatio(GDI_GENERAL_MIX_RATIO);                   GDI_ActivateRegion(0);		    //Initialization of Variables #ifdef SUPPORT_CLEARALL_IN_PROGRAM    _bMainStart = 0; #else    _bMainStart = 1; #endif                _bTitleStart = 1;        _wChapterStart = 1;  		#ifdef SUPPORT_CLEARALL_IN_PROGRAM                _bMainHighlightPos = 2; //highlight 1. __-__  #else    _bMainHighlightPos = 1; //highlight 1. __-__ #endif    _bTitleHighlightPos = 1;    _wChapterHighlightPos = 1;		    

⌨️ 快捷键说明

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