📄 osdsrch.c
字号:
#include "winav.h"
#include "input.h"
#include "osd.h"
#include "hal.h"
#include "cc.h"
#include "gdi.h"
#include "dvdinfo.h"
#include "cdinfo.h"
#include "linear.h"
#include "navigate.h"
#include "utl.h"
// alex1.24,20040301
// if open this define , it will show current TITLE/CHAPTER , in bookmark
// else it will show current Title/ Total Title in bookmark (Request for DMTECH)
//#define SUPPORT_DMTECH_CURRENT_CHAPTER
#ifdef CT908_UI
//WORD code aDigit[] = {CHAR_0, CHAR_1, CHAR_2, CHAR_3, CHAR_4, CHAR_5, CHAR_6, CHAR_7, CHAR_8, CHAR_9};
extern WORD code aDigit[];
WORD code aTitleIcon[] = {1, CHAR_N_TITLE};
WORD code aChapterIcon[] = {1, CHAR_N_CHAP};
WORD code aTimeIcon[] = {1, CHAR_N_TIME};
//Alex1,21,20031209,Write Book Mark Title
#ifdef SUPPORT_BOOKMARK
WORD code aMark[][3] = { {2,CHAR_M,CHAR_0},
{2,CHAR_M,CHAR_1},
{2,CHAR_M,CHAR_2},
{2,CHAR_M,CHAR_3},
{2,CHAR_M,CHAR_4},
{2,CHAR_M,CHAR_5},
{2,CHAR_M,CHAR_6},
{2,CHAR_M,CHAR_7},
{2,CHAR_M,CHAR_8},
{2,CHAR_M,CHAR_9},
};
//Alex2.30-3,20040702,let all font during 32->63 in Y.
#if (SDRAM_CONFIGURATION == SDRAM_16M)
#define SRCH_FRAME_Y0_UP_EXT 0
#else //#if (SDRAM_CONFIGURATION == SDRAM_16M)
#define SRCH_FRAME_Y0_UP_EXT 12
#endif //#if (SDRAM_CONFIGURATION == SDRAM_16M)
#endif //#ifdef SUPPORT_BOOKMARK
#define SRCH_FRAME_X0_LEFT_EXT 35
#define BUTTON_GAP 8
#define FRAME_THICKNESS 2
#define TOTAL_BUTTON_NUM_IN_SRCH 4//3
#define TOTAL_SP_NUM_IN_VIR 2
#include "osdvp.h"
//Alex2.30-3,20040702,let all font during 32->63 in Y.
#if (SDRAM_CONFIGURATION == SDRAM_16M)
#define SRCH_FRAME_X0 38//40
#define SRCH_FRAME_Y0 32 //40
#define SRCH_FRAME_X1 352//360
#define SRCH_FRAME_Y1 SRCH_FRAME_Y0+31 //80
#define SRCH_FONT_GAP 0
//Search Title/Track Button
#define BUTTON_T_X0 SRCH_FRAME_X0+BUTTON_GAP
#define BUTTON_T_Y0 SRCH_FRAME_Y0
#define BUTTON_T_X1 BUTTON_T_X0+SRCH_BUTTON_WIDTH
#define BUTTON_T_Y1 SRCH_FRAME_Y1
#else //#if (SDRAM_CONFIGURATION == SDRAM_16M)
#define SRCH_FRAME_X0 38//40
#define SRCH_FRAME_Y0 OSDLD_START_V //40
#define SRCH_FRAME_X1 352//360
#define SRCH_FRAME_Y1 SRCH_FRAME_Y0+52 //92
#define SRCH_FONT_GAP 3
//Search Title/Track Button
#define BUTTON_T_X0 SRCH_FRAME_X0+BUTTON_GAP
#define BUTTON_T_Y0 SRCH_FRAME_Y0+BUTTON_GAP
#define BUTTON_T_X1 BUTTON_T_X0+SRCH_BUTTON_WIDTH
#define BUTTON_T_Y1 SRCH_FRAME_Y1-BUTTON_GAP
#endif //#if (SDRAM_CONFIGURATION == SDRAM_16M)
#define SRCH_SEPARATOR_WIDTH 2*BUTTON_GAP
#define SRCH_BUTTON_WIDTH 5*BUTTON_GAP
#define BUTTON_PREV 0
#define BUTTON_PLAY 1
#define BUTTON_PAUSE 2
#define BUTTON_STOP 3
#define BUTTON_NEXT 4
#define BUTTON_SPST_CTL 5
#define BUTTON_AST_CTL 6
#define BUTTON_AUDIO_LR BUTTON_AST_CTL
#define BUTTON_ANGLE_CTL 7
#define BUTTON_EXIT 8
#define SEARCH_TITLE 0
#define SEARCH_TRACK SEARCH_TITLE
#define SEARCH_CHAPTER 1
#define SEARCH_TIME 2
//current pos
extern BYTE __bSearchCursor;
//Search Chapter Button
#define BUTTON_C_X0 BUTTON_T_X1+2*SRCH_BUTTON_WIDTH+3*BUTTON_GAP
#define BUTTON_C_Y0 BUTTON_T_Y0
#define BUTTON_C_X1 BUTTON_C_X0+SRCH_BUTTON_WIDTH
#define BUTTON_C_Y1 BUTTON_T_Y1
//Search Time Button
#define BUTTON_E_X0 BUTTON_C_X0
#define BUTTON_E_Y0 BUTTON_C_Y0
#define BUTTON_E_X1 BUTTON_C_X1
#define BUTTON_E_Y1 BUTTON_C_Y1
//Kevin1.07, VCD/CDDA time postion for absolute gototime
#define BUTTON_EABS_X0 BUTTON_T_X0
#define BUTTON_EABS_Y0 BUTTON_T_Y0
#define BUTTON_EABS_X1 BUTTON_T_X1
#define BUTTON_EABS_Y1 BUTTON_T_Y1
typedef struct
{
WORD wX0;
WORD wY0;
WORD wX1;
WORD wY1;
WORD *wpOSDVIRFONT;
} BUTTON_INFO;
BUTTON_INFO code aSRCHButton[TOTAL_BUTTON_NUM_IN_SRCH] =
{ {BUTTON_T_X0, BUTTON_T_Y0, BUTTON_T_X1, BUTTON_T_Y1, aTitleIcon},
{BUTTON_C_X0, BUTTON_C_Y0, BUTTON_C_X1, BUTTON_C_Y1, aChapterIcon},
{BUTTON_E_X0, BUTTON_E_Y0, BUTTON_E_X1, BUTTON_E_Y1, aTimeIcon},
{BUTTON_EABS_X0, BUTTON_EABS_Y0, BUTTON_EABS_X1, BUTTON_EABS_Y1, aTimeIcon} };
//Internal Functions
void OSDSRCH_BookMark(BYTE bMessage, WORD wParam, BYTE bSec);
void OSDSRCH_Search(BYTE bMessage, WORD wParam, BYTE bSec);
static void _OSDSRCH_ShowButton(BYTE bButtonIndex, BYTE bColor);
static void _ShowOneEntry(BYTE bColor); //rename later
static void _ShowOneEntryNumber(BYTE bSize, BYTE bNumber);
static void _OSDSRCH_ShowTwoEntry(BYTE bColor1 , BYTE bColor2); //
//Global variables
//BYTE __bOSDSRCHMode = FALSE;
//WORD code *__wpDataPointer; //the data pointed to by __wpDataPointer can not be changed. __wpDataPointer can be changed.
//static BYTE _bCurrentButton;
//extern BYTE IDATA __bTemp;
//extern BYTE DATA _bOSDLang;
extern BYTE __bTimeMin, __bTimeSec, __bTimeHour;
extern BYTE __bGoToTimeNO;
extern BYTE IDATA __bMin, __bSec;
//Alex1.21,20031209 support book mark
#ifdef SUPPORT_BOOKMARK
// *********************************************************************************
// Function : OSDSRCH_BookMark
// Description : Display BOOKMARK UI
// Arguments : bMessage : the message type
// wParam : the parameter for this message
// bSec : the display time for this message (currently not used)
// Return : None
// Side Effect : None
// *********************************************************************************
void OSDSRCH_BookMark(BYTE bMessage, WORD wParam, BYTE bSec)
{
//Kevin1.00, fix the video hang/audio broken when invoking Search GUI
// Micky1.05-2, fix TT/CC search will hang sometimes.K
// After A/V reset-> still has VOBU data input before starting playing new cell.
if (wParam == OSD_INPUT_TITLE_CHAPTER)
{
HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);
}
switch (wParam)
{
case OSD_INPUT_TIME: //alex1.22,20040204 combine bookmark,gototime,search
case OSD_INPUT_TITLE_CHAPTER: //0xFF
_bCurrentUI = OSD_UI_SEARCH;
GDI_ClearRegion(0);
//__bTitle_Ns //total # of titles
//__bSearchTitle=__bTitle; //current title
//__wSearchChapter_Ns_Title=__wChapter_Ns_Title; //total # of chapters in current title
//__wSearchChapter=__wChapter; //current chapter
GDI_SetMixRatio(GDI_GENERAL_MIX_RATIO);
GDI_SetCurrentRegion(0);
GDI_ActivateRegion();
__bSearchTitle = __bBookMark_Title[__wBookMark[0]];
__bGoToTimeNO = 0;
if (__wBookMark[__wBookMark[0]] != 0)
{
__bGoToTimeNO=1;
}
if(wParam == OSD_INPUT_TIME)
{
#ifdef ABSOLUTE_GOTOTIME //Kevin1.07, VCD/CDDA shows track# only for relative gototime only
if (!(__wDiscType & BOOK_DVD))
{
//Alex2.30-3,20040702,let all font during 32->63 in Y.
#if (SDRAM_CONFIGURATION != SDRAM_16M)
GDI_DRAW_FRAME(SRCH_FRAME_X0-SRCH_FRAME_X0_LEFT_EXT, SRCH_FRAME_Y0, BUTTON_C_X1, SRCH_FRAME_Y1,
GDI_ENTRY_4B_COLOR_CENTER, // bColorBright
GDI_ENTRY_4B_COLOR_CENTER, // bColorDark
GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE, // bColorCenter
FRAME_POP_SOLID, // bStyle
FRAME_THICKNESS // bThickness
);
#else //#if (SDRAM_CONFIGURATION == SDRAM_16M)
GDI_FILL_RECT(SRCH_FRAME_X0-SRCH_FRAME_X0_LEFT_EXT, SRCH_FRAME_Y0, BUTTON_C_X1, SRCH_FRAME_Y1,GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE);
#endif //#if (SDRAM_CONFIGURATION == SDRAM_16M)
}
else
#endif
{
//Alex2.30-3,20040702,let all font during 32->63 in Y.
#if (SDRAM_CONFIGURATION != SDRAM_16M)
GDI_DRAW_FRAME(SRCH_FRAME_X0-SRCH_FRAME_X0_LEFT_EXT, SRCH_FRAME_Y0, SRCH_FRAME_X1, SRCH_FRAME_Y1,
GDI_ENTRY_4B_COLOR_CENTER, // bColorBright
GDI_ENTRY_4B_COLOR_CENTER, // bColorDark
GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE, // bColorCenter
FRAME_POP_SOLID, // bStyle
FRAME_THICKNESS // bThickness
);
#else //#if (SDRAM_CONFIGURATION == SDRAM_16M)
GDI_FILL_RECT(SRCH_FRAME_X0-SRCH_FRAME_X0_LEFT_EXT, SRCH_FRAME_Y0, SRCH_FRAME_X1, SRCH_FRAME_Y1,GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE);
#endif //#if (SDRAM_CONFIGURATION == SDRAM_16M)
//Alex2.38, fix the drawing UI slowly when playing CDDA in Anti-Shock
#ifndef SUPPORT_ANTISHOCK
//Kevin1.00, fix the video hang/audio broken when invoking Search GUI
HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);
#endif //#ifndef SUPPORT_ANTISHOCK
//show buttons
GDI_SetTextColor(TEXT_FG_COLOR, GDI_ENTRY_4B_COLOR_BLACK);
_OSDSRCH_ShowButton(SEARCH_CURSOR_TITLE-SEARCH_CURSOR_BEGIN, GDI_ENTRY_4B_COLOR_CENTER);
//Alex2.38, fix the drawing UI slowly when playing CDDA in Anti-Shock
#ifndef SUPPORT_ANTISHOCK
//Kevin1.00, fix the video hang/audio broken when invoking Search GUI
HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);
#endif //#ifndef SUPPORT_ANTISHOCK
__bSearchCursor = SEARCH_CURSOR_TITLE;
_ShowOneEntry(GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE);
}
//Alex2.38, fix the drawing UI slowly when playing CDDA in Anti-Shock
#ifndef SUPPORT_ANTISHOCK
//Kevin1.00, fix the video hang/audio broken when invoking Search/Program GUI
HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);
#endif //#ifndef SUPPORT_ANTISHOCK
GDI_SetTextColor(TEXT_FG_COLOR, GDI_ENTRY_4B_COLOR_BLACK);
_OSDSRCH_ShowButton(SEARCH_CURSOR_TIME-SEARCH_CURSOR_BEGIN, GDI_ENTRY_4B_COLOR_CENTER);
//Alex2.38, fix the drawing UI slowly when playing CDDA in Anti-Shock
#ifndef SUPPORT_ANTISHOCK
//Kevin1.00, fix the video hang/audio broken when invoking Search GUI
HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);
#endif //#ifndef SUPPORT_ANTISHOCK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -