📄 thumb.c
字号:
}
}
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 + -