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

📄 thumb.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                        }
                    }
                    else
                        __wCheckDecodeHang = HIWORD(__dwTemp);

                    _THUMBNAIL_PlayEnd();
                }
            }
            else
                _THUMBNAIL_ProcessError();
            break;            
        }
    }               
#endif
}

//***************************************************************************
//  Function    :   THUMBNAIL_ProcessKey
//  Abstract    :   Call this function to process the keys.
//  Arguments   :   bKey, the input key.
//  Return		:   KEY_NO_KEY: The input key is processed.
//              :   INVALID_KEY: The input key is not allowed.
//              :   KEY_xxx: The main program need do more process for the key.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
BYTE THUMBNAIL_ProcessKey(BYTE bKey)
{
#ifndef NO_PICTURECD

    if (!__bThumbnailMode)    
        return bKey;

#ifdef SUPPORT_SIMPLE_FM_PROGRAM
    if (__btInputProgram)
        return bKey;
#endif //SUPPORT_SIMPLE_FM_PROGRAM

    //audio keys
    if ((bKey >= INPUT_KEY_GROUP2) && (bKey < INPUT_KEY_GROUP3))
        return INVALID_KEY;

    switch (bKey)
    {
    //invalid keys:
    case KEY_FF:
    case KEY_SF:
    case KEY_SCF:
    case KEY_SCB:
    case KEY_STEP:
    case KEY_FREEZE:
    case KEY_BOOKMARK:
    case KEY_DIGEST:
    case KEY_REPEAT_AB:
    case KEY_RESUME:
    case KEY_GOTOTIME:
    case KEY_RETURN:
    case KEY_STOP:
    case KEY_ZOOM:
    case KEY_STOP_RETURN:
    case KEY_DISPLAY:
    case KEY_SPST_CTL:
    case KEY_INTRO:
    case KEY_REMAIN:
    case KEY_TITLE:
    case KEY_ANGLE_CTL:
    case KEY_MENU:
        return INVALID_KEY;
    case KEY_PAUSE_STEP:
        _CC_MapKeyMessage(KEY_PAUSE);
        return KEY_PAUSE;
    case KEY_NEXT:  //change to next page
        return _THUMBNAIL_ChangePageAction(THUMBNAIL_NEXT_PAGE);
    case KEY_PREV:  //change to previous page
        return _THUMBNAIL_ChangePageAction(THUMBNAIL_PREVIOUS_PAGE);        
    case KEY_LEFT:  //move the cursor to left item
#ifdef SUPPORT_FM_BUTTONS
        if (_bCursorType == THUMBNAIL_CURSOR_PICTURE)
        {
#endif //SUPPORT_FM_BUTTONS
            if (_THUMBNAIL_CheckLeftBoundary())
            {
#ifdef THUMBNAIL_ROUND_HIGHLIGHT
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_CLEAR);

                while (((_wThumbnailIndex % COLUMN_NUM + 1) < COLUMN_NUM) &&
                    ((_wThumbnailIndex+1) < _wThumbTotalFiles))
                {
                    _wThumbnailIndex++;
                }
                
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);
#else
                return INVALID_KEY; //exceed the left item.
#endif //THUMBNAIL_ROUND_HIGHLIGHT
            }
            else
            {
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_CLEAR);
                _wThumbnailIndex--;        
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);
            }
#ifdef SUPPORT_FM_BUTTONS
        }
        else //the cursor is at the button.
        {
            if (!_THUMBNAIL_SearchValidButtonHighlight(THUMBNAIL_CURSOR_DIRECTION_LEFT))
                return INVALID_KEY;
        }        
#endif //SUPPORT_FM_BUTTONS
        break;
    case KEY_RIGHT: //move the cursor to right item
#ifdef SUPPORT_FM_BUTTONS
        if (_bCursorType == THUMBNAIL_CURSOR_PICTURE)
        {
#endif //SUPPORT_FM_BUTTONS
            if (_THUMBNAIL_CheckRightBoundary())
            {
#ifdef THUMBNAIL_ROUND_HIGHLIGHT
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_CLEAR);
                while (_wThumbnailIndex > ((_wThumbnailIndex / COLUMN_NUM) * COLUMN_NUM))
                {
                    _wThumbnailIndex--;
                }
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);
#else
                return INVALID_KEY; //exceed the right item.
#endif //THUMBNAIL_ROUND_HIGHLIGHT
            }
            else
            {
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_CLEAR);
                _wThumbnailIndex++;
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);
            }
#ifdef SUPPORT_FM_BUTTONS
        }
        else //The cursor is at the button.
        {
            if (!_THUMBNAIL_SearchValidButtonHighlight(THUMBNAIL_CURSOR_DIRECTION_RIGHT))
                return INVALID_KEY;
        }
#endif //SUPPORT_FM_BUTTONS
        break;
    case KEY_UP:    //move the cursor to up item
#ifdef SUPPORT_FM_BUTTONS
        if (_bCursorType == THUMBNAIL_CURSOR_PICTURE)
        {
#endif //SUPPORT_FM_BUTTONS
            if (_THUMBNAIL_CheckUpBoundary())
            {
#ifdef SUPPORT_FM_BUTTONS
                return INVALID_KEY; //exceed the up item.
#else
#ifdef THUMBNAIL_ROUND_HIGHLIGHT
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_CLEAR);
                _THUMBNAIL_UpdateUpRoundHighlight();
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);
#else
                return INVALID_KEY; //exceed the right item.
#endif //THUMBNAIL_ROUND_HIGHLIGHT
#endif //SUPPORT_FM_BUTTONS
            }
            else
            {
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_CLEAR);
                _wThumbnailIndex -= COLUMN_NUM;
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);
            }
#ifdef SUPPORT_FM_BUTTONS
        }
        else //move the cursor from the button to the thumbnail
        {
            //No thumbnails in this page. The cursor is not allowed in the thumbnail part.
            if (_wThumbTotalFiles == 0) 
                return INVALID_KEY;

            //There is no programmed thumbnail or all thumbnails has been deleted in this page.
            //if ((_bThumbnailSubMode == THUMBNAIL_SUBMODE_PROGRAM_LIST) && (_wThumbnailPlayIndex == _wThumbTotalFiles))
            if ((_bThumbnailSubMode == THUMBNAIL_SUBMODE_PROGRAM_LIST) && (_wThumbTotalFiles <= (_bProgramPageNo * PROGRAM_LIST_TOTAL_NUM_IN_PAGE)))
                return INVALID_KEY;

            //1. change the type of the cursor.
            _bCursorType = THUMBNAIL_CURSOR_PICTURE;

            //2. Recover the VCD3.0 highlight 
            _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);

            //3. Change the state of the button from "HIGHLIGHT" state to "ENABLE" state
            _THUMBNAIL_UpdateButtonState(__ThumbCtlBTNList[_bButtonIndex].bButtonID, THUMBNAIL_BUTTON_STATE_ENABLE, TRUE);
            _THUMBNAIL_UpdateHelp();
        }
#endif //SUPPORT_FM_BUTTONS
        break;
    case KEY_DOWN:  //move the cursor to down item
#ifdef SUPPORT_FM_BUTTONS
        if (_bCursorType == THUMBNAIL_CURSOR_PICTURE)
        {            
#endif //SUPPORT_FM_BUTTONS
            if (_THUMBNAIL_CheckDownBoundary()) //exceed the down item==>go to the button part.
            {
#ifdef SUPPORT_FM_BUTTONS
                _bCursorType = THUMBNAIL_CURSOR_BUTTON;

                if (__ThumbCtlBTNList[_bButtonIndex].bStatus == THUMBNAIL_BUTTON_STATE_DISABLE)
                {
                    if (!_THUMBNAIL_SearchValidButtonHighlight(THUMBNAIL_CURSOR_DIRECTION_RIGHT))
                        return INVALID_KEY;
                }
                else
                {
                    _THUMBNAIL_UpdateButtonHighlight(_bButtonIndex);
                }
#else                
#ifdef THUMBNAIL_ROUND_HIGHLIGHT
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_CLEAR);
                _THUMBNAIL_UpdateDownRoundHighlight();
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);
#else
                return INVALID_KEY; //exceed the right item.
#endif //THUMBNAIL_ROUND_HIGHLIGHT
#endif //SUPPORT_FM_BUTTONS
            }            
            else //not exceed the down item.
            {
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_CLEAR);
                _wThumbnailIndex += COLUMN_NUM;
                _THUMBNAIL_UpdateHighlight(THUMBNAIL_UPDATE_HIGHLIGHT_DRAW);
            }
#ifdef SUPPORT_FM_BUTTONS
        }
        else //The cursor is at the button now.
            return INVALID_KEY;
#endif //SUPPORT_FM_BUTTONS
        break;
    case KEY_PROGRAM:
#ifdef SUPPORT_FM_PROGRAM //Support Program function
#ifdef SUPPORT_SIMPLE_FM_PROGRAM
        return bKey;
#else
#ifdef SUPPORT_FM_BUTTONS 
        //Use Thumbnail's program mode.
        if (__btProgram)
        {
            if (_bThumbnailSubMode == THUMBNAIL_SUBMODE_PROGRAM)
                _THUMBNAIL_UpdateButtonIndex(THUMBNAIL_BUTTON_RETURN);        
            else
                return INVALID_KEY;
        }
        else
        {
            if (_bThumbnailSubMode == THUMBNAIL_SUBMODE_GENERAL)
                _THUMBNAIL_UpdateButtonIndex(THUMBNAIL_BUTTON_PROGRAM);
            else
                return INVALID_KEY;
        }
        _THUMBNAIL_ProcessButton();
#else  //not support buttons. Use File Manager's program mode.
        __btProgram = TRUE;
        __btInputProgram=TRUE;
        _THUMBNAIL_ToFileManager();           
        return KEY_NO_KEY;
#endif //SUPPORT_FM_BUTTONS
#endif //SUPPORT_SIMPLE_FM_PROGRAM
#else
        return INVALID_KEY;
#endif //SUPPORT_FM_PROGRAM
        break;
    case KEY_PLAY_PAUSE: //CoCo2.81, support composite key.
        if (__btPlaying) // within playing mode
        {
            _CC_MapKeyMessage(KEY_PAUSE);
            return KEY_PAUSE; 
        }
        else
        {
            _CC_MapKeyMessage(KEY_PLAY);
		bKey=KEY_PLAY;//yahsin_0117
        }
    case KEY_ENTER:
    case KEY_PLAY:
        if (__btPause)
            return bKey;
        else        
            return _THUMBNAIL_ProcessEnterKey();
        /*
    case KEY_MENU:
        _THUMBNAIL_ToFileManager();           
        return KEY_NO_KEY;
        */
    case KEY_RANDOM:
        THUMBNAIL_Exit();
    default:        
        return bKey;
    }

    return KEY_NO_KEY;

#endif //NO_PICTURECD
    return bKey;
}

//***************************************************************************
//  Function    :   _THUMBNAIL_GetPosition
//  Abstract    :   This function will calculate the position for the thumbnail.
//  Arguments   :   bIndex: The index in a page. Only 0 to 8 is valid.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   Use __bTVType to judge TV type.
//              :   Update __wHStart and __wVStart.
//***************************************************************************
void _THUMBNAIL_GetPosition(BYTE bIndex)
{
#ifndef NO_PICTURECD

    __wHStart = (THUMBNAIL_DISTANCE_WIDTH) * (bIndex % COLUMN_NUM) + THUMBNAIL_DISPLAY_WIDTH * (bIndex % COLUMN_NUM) + THUMBNAIL_H_REGION;    
#ifdef SUPPORT_FM_BUTTONS
    if (_bThumbnailSubMode == THUMBNAIL_SUBMODE_PROGRAM_LIST)
        __wVStart = (THUMBNAIL_DISTANCE_HEIGHT_NTSC) * (bIndex / COLUMN_NUM) + THUMBNAIL_DISPLAY_HEIGHT_NTSC * (bIndex / COLUMN_NUM) + THUMBNAIL_V_REGION_NTSC_PROGRAM_LIST;
    else //general mode
#endif //SUPPORT_FM_BUTTONS
        __wVStart = (THUMBNAIL_DISTANCE_HEIGHT_NTSC) * (bIndex / COLUMN_NUM) + THUMBNAIL_DISPLAY_HEIGHT_NTSC * (bIndex / COLUMN_NUM) + THUMBNAIL_V_REGION_NTSC;
#endif //NO_PICTURECD

⌨️ 快捷键说明

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