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

📄 osdprgm.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
#include    "winav.h"#include    "input.h"#include    "disp.h"#include    "osd.h"#include    "hal.h"#include    "cc.h"#include    "gdi.h"#include "fontindex.h" //++CoCo2.37P#include    "dvdinfo.h"#include    "linear.h"#include    "navigate.h"#include    "OSDPRGM.h"#include    "infofilter.h"#include    "utl.h"#include    "osddsply.h"#include    "osdnd.h"#include    "setup.h"#include    "notransl.h"#ifndef NO_PROGRAM_UI //++CoCo2.37p#ifndef NO_DISC_MODE //CoCo2.37p#define OSDPRGM_MAIN_FILE#include "OSDString\\strextrn.h"PARM_FRAME       _PRGM_FrameAttr;PARM_DRAW_STRING _PRGM_StrAttr;PARM_RECT        _PRGM_RectAttr;//show entry fromBYTE    _bMainStart; BYTE    _bMainHighlightPos; #ifdef SUPPORT_CLEARALL_IN_PROGRAM#define MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME       6 #define MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME      5 #define MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME    5 #else#define MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME       7 #define MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME      5 #define MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME    5 #endif// This value will offset the entire Program UI#define PROGRAM_GLOBAL_OFFSET_X     (0) #define ENTRY_HEIGHT        26 #define FRAME_THICKNESS     2  #define ARROW_HEIGHT        22#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM#define PROGRAM_WIDTH       612 #define PROGRAM_HEIGHT      350#define PRGM_FRAME_X0       (PROGRAM_GLOBAL_OFFSET_X)#define PRGM_FRAME_Y0	    (OSDND_UPPER_BACKGROUND_BOTTOM + (8 - OSDND_UPPER_BACKGROUND_BOTTOM%8)) #define PRGM_FRAME_X1       (PROGRAM_WIDTH + PROGRAM_GLOBAL_OFFSET_X)#define PRGM_FRAME_Y1       (PROGRAM_HEIGHT + PRGM_FRAME_Y0)#else#define PRGM_FRAME_X0       (PROGRAM_GLOBAL_OFFSET_X)#define PRGM_FRAME_Y0	    (OSDND_UPPER_BACKGROUND_BOTTOM + 1) #define PRGM_FRAME_X1       (616+PROGRAM_GLOBAL_OFFSET_X)#define PRGM_FRAME_Y1       (OSDND_BOTTOM_BACKGROUND_START_V - 1) #define PROGRAM_WIDTH       (PRGM_FRAME_X1 - PRGM_FRAME_X0)#define PROGRAM_HEIGHT      (PRGM_FRAME_Y1 - PRGM_FRAME_Y0)#endif // #ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM#define CENTER_FRAME_X0     PRGM_FRAME_X0 #define CENTER_FRAME_Y0     (PRGM_FRAME_Y0 + 41) #define CENTER_FRAME_X1     PRGM_FRAME_X1 #define CENTER_FRAME_Y1     (PRGM_FRAME_Y1 - 41) #define FRAME_Y0            (PRGM_FRAME_Y0 + 3 * ENTRY_HEIGHT + 5) #define MAIN_FRAME_X0       (40+PROGRAM_GLOBAL_OFFSET_X) #define MAIN_FRAME_Y0       FRAME_Y0#define MAIN_FRAME_X1       (280+PROGRAM_GLOBAL_OFFSET_X)#define MAIN_FRAME_Y1       (MAIN_FRAME_Y0+MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME*ENTRY_HEIGHT+2*FRAME_THICKNESS)#define TITLE_FRAME_X0      (340+PROGRAM_GLOBAL_OFFSET_X)#ifdef SUPPORT_CLEARALL_IN_PROGRAM#define TITLE_FRAME_Y0      (FRAME_Y0+ENTRY_HEIGHT*2+FRAME_THICKNESS)#else#define TITLE_FRAME_Y0      (FRAME_Y0+ENTRY_HEIGHT*2)#endif#define TITLE_FRAME_X1      (400+PROGRAM_GLOBAL_OFFSET_X)#define TITLE_FRAME_Y1      (TITLE_FRAME_Y0+MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME*ENTRY_HEIGHT+2*FRAME_THICKNESS)#define CHAPTER_FRAME_X0    (440+PROGRAM_GLOBAL_OFFSET_X)#ifdef SUPPORT_CLEARALL_IN_PROGRAM#define CHAPTER_FRAME_Y0    (FRAME_Y0+ENTRY_HEIGHT*2+FRAME_THICKNESS)#else#define CHAPTER_FRAME_Y0    (FRAME_Y0+ENTRY_HEIGHT*2)#endif#define CHAPTER_FRAME_X1    (520+PROGRAM_GLOBAL_OFFSET_X)#define CHAPTER_FRAME_Y1    (CHAPTER_FRAME_Y0+MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME*ENTRY_HEIGHT+2*FRAME_THICKNESS)                #define MAIN_FRAME			1#define TITLE_INPUT                     2#define TITLE_FRAME			3#define CHAPTER_INPUT                   4#define CHAPTER_FRAME	                5	#define CLEAR_HIGHLIGHT		0#define SET_HIGHLIGHT		1WORD _wOSDPRGMString[8];////   for testing#include "ctkav_disp.h"#include "ctkav.h"extern DWORD _dwGDIPalette[256];DWORD  dwTmp, *pdwPtr;//Internal Functionsstatic void _ShowInput(BYTE bInput, BYTE bBgColor);static void _ShowOneEntry(WORD wEntry);static void _ShowMainList(void);static void _ShowTitleList(void);static void _ShowChapterList(void);static void _SetClearHighlight(BYTE bFlag);void _OSDPRGM_ShowUI(void);void _OSDPRGM_ClearUI(void);void _OSDPRGM_DrawFrames(void);void _OSDPRGM_InitPalette(void);void _OSDPRGM_InitRect(PURECT pRect, WORD wLeft, WORD wTop, WORD wRight, WORD wBottom);void _OSDPRGM_OutputNum(WORD wNum, BYTE bDigit); //CoCo1.21void _OSDPRGM_UpdateProgramChapter(BYTE bDigits); //CoCo1.21;void _OSDPRGM_UpdateChapterList(void); //CoCo1.21void _OSDPRGM_UpdateTitleList(void); //CoCo1.21void _OSDPRGM_ProceedToNextMainEntry(void); //Kevin1.23DMTechvoid _OSDPRGM_FillRect(WORD wLeft, WORD wTop, WORD wRight, WORD wBottom); //CoCo1.20, reduce code size.void _OSDPRGM_DrawFrame(WORD wLeft, WORD wTop, WORD wRight, WORD wBottom);  //CoCo1.20, reduce code size.void _OSDPRGM_DrawString(void); //CoCo1.20, reduce code size.void _OSDPRGM_SetStringPos(WORD wX, WORD wY); //CoCo1.20, reduce code size.void _OSDPRGM_DrawDynamicString(WORD *pwString); //CoCo1.20, reduce code size.extern void _InitRect(PURECT pRect, WORD wLeft, WORD wTop, WORD wRight, WORD wBottom); //CoCo1.20, reduce code size.//MAX_PROG_ITEM                 //total # of tracks to be programmedBYTE _bTotalTitle;              //total # of titles in the discWORD _wTotalChapter;            //total # of chapters corresponding to the selected title//show entry fromBYTE    _bTitleStart;    WORD    _wChapterStart;      //current pos BYTE    _bTitleHighlightPos;WORD    _wChapterHighlightPos;//current frame BYTE    _bCurrentFrame;extern BYTE  __bTemp;BYTE    _bOSDPRGMTemp, _bOSDPRGMTemp1; //for temp useWORD    _wOSDPRGMTemp;#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06extern WORD __wNumberQueue; //declare a local var in OSDPRGM later => not necessay#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAMextern BYTE __bPreCountStop;#endif#define PROGRAM_NUM_CURSOR_TITLE        0x1#define PROGRAM_NUM_CURSOR_CHAPTER      0x2   static void _TitleChapterNumErr(void); //CoCo1.21, modify the function prototype#define TITLE_NUM_ERROR             0x1#define CHAPTER_NUM_ERROR           0x2#define TITLE_CHAPTER_NUM_ERROR     (TITLE_NUM_ERROR | CHAPTER_NUM_ERROR)static BYTE _OSDPRGM_ProcessNumInput(BYTE bKey, WORD wParam);#define PRGM_NUMBERINPUT_CHECK      1#define PRGM_NUMBERINPUT_CLEAR      2#define PRGM_NUMBERINPUT_NUMBER     3#endif //#ifdef SUPPORT_PRGM_NUM_INPUT//  ****************************************************************************//  Function    :   OSDPRGM_Exit//  Description :   The OSD kernel will call this function to exit normally.//		:   This function can NOT send OSD_ChangeUI(xxx, OSD_EXIT_UI) to//		:   notify OSD kernel it exits.//  Arguments   :   bExitMode //                  OSD_UI_EXIT_ALL             : Exit control and clear the UI.//                  OSD_UI_EXIT_CONTROL_ONLY    : Exit control only.//  Return      :   //  Side Effect ://  ****************************************************************************void OSDPRGM_Exit(BYTE bExitMode){    switch (bExitMode)    {    case OSD_UI_EXIT_ALL:        GDI_DeactivateRegion();        _OSDPRGM_ClearUI();    case OSD_UI_EXIT_CONTROL_ONLY:        LINEAR_Program(LINEAR_PROGRAM_CLEAR, NULL_0);        break;    default:        break;    }}//  ****************************************************************************//  Function    :   OSDPRGM_ProcessKey//  Description :   Process the input key while in DVD/VCD Program mode//  Arguments   :   //  Return      :   KEY_NO_KEY  , the input key is processed//              :   INVALID_KEY , the input key is not allowed under this mode//              :   KEY_xxx     , main program needs to do more processing for the key.//  Side Effect ://  ****************************************************************************BYTE OSDPRGM_ProcessKey(void){    BYTE bKeyStatus;    if ((__wDiscType & BOOK_PICTURECD) ||        (__bKeySource != KEY_FROM_ISR))return KEY_BYPASS;    if (! ((__bKey == KEY_PROGRAM) || __btInputProgram))    {        return KEY_BYPASS;    }    bKeyStatus = KEY_INVALID;    switch (__bKey)    {    case KEY_TVMODE:/*    case KEY_MUTE:    case KEY_VOL_UP:    case KEY_VOL_DOWN:    case KEY_KEYUP:    case KEY_KEYDOWN:*/    case KEY_GOTOTIME:    case KEY_BOOKMARK:    case KEY_NO_KEY:        bKeyStatus = KEY_BYPASS;        break;    case KEY_SETUP:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06        _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL_0);#endif        bKeyStatus = KEY_BYPASS;        break;    case KEY_PBC:        if (__btInputProgram)        {            OSDPRGM_Exit(OSD_UI_EXIT_ALL);            OSD_ChangeUI(OSD_UI_DVD_PROGRAM, OSD_EXIT_UI);        }        bKeyStatus = KEY_BYPASS;        break;    case KEY_UP:/*#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06        _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL);#endif*/        if (_bCurrentFrame==MAIN_FRAME)        {   #ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06        _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL_0);        _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL_0);#endif        _SetClearHighlight(CLEAR_HIGHLIGHT);		            if (_bMainHighlightPos>1)                _bMainHighlightPos--;             else            {#ifdef SUPPORT_CLEARALL_IN_PROGRAM                if (_bMainStart>0)#else                if (_bMainStart>1)#endif                {                       _bMainStart--;                    _ShowMainList();                 }                }                                        }        else if (_bCurrentFrame==TITLE_FRAME)        {   #ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06        _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL_0);#endif        _SetClearHighlight(CLEAR_HIGHLIGHT);            _bOSDPRGMTemp = TRUE;            if (_bTitleHighlightPos>1)                _bTitleHighlightPos--;               else            {                   if (_bTitleStart>1)                {                       _bTitleStart--;                    _ShowTitleList();                 }                 else                {                    _bOSDPRGMTemp = FALSE;  // Move to TITLE_INPUT                    _bCurrentFrame = TITLE_INPUT;                }            }			            if (__wDiscType & BOOK_DVD)             {                            if (_bOSDPRGMTemp)                 {                    DVD_ParseInfo ( DVD_TOTAL_CHAPTERS, &__dwTemp, (WORD)(_bTitleStart+_bTitleHighlightPos-1) );                                 _wTotalChapter = (WORD)__dwTemp;           

⌨️ 快捷键说明

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