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

📄 osdvir.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 2 页
字号:

#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    "utl.h"
#include	"colordef.h"

#ifdef CT908_UI

WORD code aPrevIcon[] = {1, CHAR_N_PRE};
WORD code aPlayIcon[] = {1, CHAR_N_PLAY};
WORD code aPauseIcon[] = {1, CHAR_N_PAUSE};
WORD code aStopIcon[] = {1, CHAR_N_STOP}; 
WORD code aNextIcon[] = {1, CHAR_N_NEXT}; 
WORD code aSubtitleIcon[] = {1, CHAR_N_SPST};
WORD code aAudioIcon[] = {1, CHAR_N_AST};
WORD code aAngleIcon[] = {1, CHAR_N_ANGLE};
WORD code aExitIcon[] = {1, CHAR_N_ANGLE}; //TO DO: design icon later

//TO DO: change font & move to osdmsg.chi later on 908
WORD code aSubtitle[][9]={ {8, CHAR_S_26, CHAR_uu_26, CHAR_bb_26, CHAR_tt_26, CHAR_ii_26, CHAR_tt_26, CHAR_ll_26, CHAR_ee_26},
                           {8, CHAR_S_26, CHAR_uu_26, CHAR_bb_26, CHAR_tt_26, CHAR_ii_26, CHAR_tt_26, CHAR_ll_26, CHAR_ee_26} };

WORD code aLanguage[][9]={ {8, CHAR_L_26, CHAR_aa_26, CHAR_nn_26, CHAR_gg_26, CHAR_uu_26, CHAR_aa_26, CHAR_gg_26, CHAR_ee_26},
                           {8, CHAR_L_26, CHAR_aa_26, CHAR_nn_26, CHAR_gg_26, CHAR_uu_26, CHAR_aa_26, CHAR_gg_26, CHAR_ee_26} };

WORD code aAudio[][6]={ {5, CHAR_A_26, CHAR_uu_26, CHAR_dd_26, CHAR_ii_26, CHAR_oo_26},
                        {5, CHAR_A_26, CHAR_uu_26, CHAR_dd_26, CHAR_ii_26, CHAR_oo_26} };

WORD code aAngle[][6]={ {5, CHAR_A_26, CHAR_nn_26, CHAR_gg_26, CHAR_ll_26, CHAR_ee_26},
                        {5, CHAR_A_26, CHAR_nn_26, CHAR_gg_26, CHAR_ll_26, CHAR_ee_26} };
                        
WORD code aExit[][5]={ {4, CHAR_E_26, CHAR_xx_26, CHAR_ii_26, CHAR_tt_26},
                       {4, CHAR_E_26, CHAR_xx_26, CHAR_ii_26, CHAR_tt_26} };                        


#define KEY_VIRTUALIR   KEY_BOOKMARK //TO DO: for test use only

#define BUTTON_GAP          8
#define FRAME_THICKNESS     2
#define TOTAL_BUTTON_NUM_IN_VIR       9
#define TOTAL_SP_NUM_IN_VIR           2  

#define VIR_FRAME_X0     40
#define VIR_FRAME_Y0     130//30
#define VIR_FRAME_X1     510
#define VIR_FRAME_Y1     182//82  

#define VIR_SEPARATOR_WIDTH     2*BUTTON_GAP
#define VIR_BUTTON_WIDTH        (VIR_FRAME_X1-VIR_FRAME_X0-(TOTAL_BUTTON_NUM_IN_VIR+1-TOTAL_SP_NUM_IN_VIR)*BUTTON_GAP-TOTAL_SP_NUM_IN_VIR*VIR_SEPARATOR_WIDTH)/TOTAL_BUTTON_NUM_IN_VIR

#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 BUTTON0_X0  VIR_FRAME_X0+BUTTON_GAP       
#define BUTTON0_Y0  VIR_FRAME_Y0+BUTTON_GAP
#define BUTTON0_X1  BUTTON0_X0+VIR_BUTTON_WIDTH
#define BUTTON0_Y1  VIR_FRAME_Y1-BUTTON_GAP

#define BUTTON1_X0  BUTTON0_X1+BUTTON_GAP       
#define BUTTON1_Y0  BUTTON0_Y0
#define BUTTON1_X1  BUTTON1_X0+VIR_BUTTON_WIDTH
#define BUTTON1_Y1  BUTTON0_Y1
               
#define BUTTON2_X0  BUTTON1_X1+BUTTON_GAP       
#define BUTTON2_Y0  BUTTON0_Y0
#define BUTTON2_X1  BUTTON2_X0+VIR_BUTTON_WIDTH
#define BUTTON2_Y1  BUTTON0_Y1
               
#define BUTTON3_X0  BUTTON2_X1+BUTTON_GAP       
#define BUTTON3_Y0  BUTTON0_Y0
#define BUTTON3_X1  BUTTON3_X0+VIR_BUTTON_WIDTH
#define BUTTON3_Y1  BUTTON0_Y1
               
#define BUTTON4_X0  BUTTON3_X1+BUTTON_GAP       
#define BUTTON4_Y0  BUTTON0_Y0
#define BUTTON4_X1  BUTTON4_X0+VIR_BUTTON_WIDTH
#define BUTTON4_Y1  BUTTON0_Y1

#define BUTTON5_X0  BUTTON4_X1+VIR_SEPARATOR_WIDTH       
#define BUTTON5_Y0  BUTTON0_Y0
#define BUTTON5_X1  BUTTON5_X0+VIR_BUTTON_WIDTH
#define BUTTON5_Y1  BUTTON0_Y1
               
#define BUTTON6_X0  BUTTON5_X1+BUTTON_GAP       
#define BUTTON6_Y0  BUTTON0_Y0
#define BUTTON6_X1  BUTTON6_X0+VIR_BUTTON_WIDTH
#define BUTTON6_Y1  BUTTON0_Y1
               
#define BUTTON7_X0  BUTTON6_X1+BUTTON_GAP       
#define BUTTON7_Y0  BUTTON0_Y0
#define BUTTON7_X1  BUTTON7_X0+VIR_BUTTON_WIDTH
#define BUTTON7_Y1  BUTTON0_Y1
               
#define BUTTON8_X0  BUTTON7_X1+VIR_SEPARATOR_WIDTH        
#define BUTTON8_Y0  BUTTON0_Y0
#define BUTTON8_X1  BUTTON8_X0+VIR_BUTTON_WIDTH
#define BUTTON8_Y1  BUTTON0_Y1

           
typedef struct
{             
    WORD wX0; 
    WORD wY0;
    WORD wX1;
    WORD wY1;               
    WORD *wpOSDVIRFONT;
} BUTTON_INFO;

/* not work below
BUTTON_INFO code BUTTON1 ={BUTTON1_X0, BUTTON1_Y0, BUTTON1_X1, BUTTON1_Y1, aArrowUp};
BUTTON_INFO code BUTTON2 ={BUTTON2_X0, BUTTON2_Y0, BUTTON2_X1, BUTTON2_Y1, aArrowUp};
BUTTON_INFO code aButton[2] = { BUTTON1, BUTTON2}; 		
*/

BUTTON_INFO code aButton[TOTAL_BUTTON_NUM_IN_VIR] =
                        { {BUTTON0_X0, BUTTON0_Y0, BUTTON0_X1, BUTTON0_Y1, aPrevIcon},
                          {BUTTON1_X0, BUTTON1_Y0, BUTTON1_X1, BUTTON1_Y1, aPlayIcon},
						  {BUTTON2_X0, BUTTON2_Y0, BUTTON2_X1, BUTTON2_Y1, aPauseIcon},  
						  {BUTTON3_X0, BUTTON3_Y0, BUTTON3_X1, BUTTON3_Y1, aStopIcon},
						  {BUTTON4_X0, BUTTON4_Y0, BUTTON4_X1, BUTTON4_Y1, aNextIcon},  
                          {BUTTON5_X0, BUTTON5_Y0, BUTTON5_X1, BUTTON5_Y1, aSubtitleIcon},
                          {BUTTON6_X0, BUTTON6_Y0, BUTTON6_X1, BUTTON6_Y1, aAudioIcon},  
						  {BUTTON7_X0, BUTTON7_Y0, BUTTON7_X1, BUTTON7_Y1, aAngleIcon},
                          {BUTTON8_X0, BUTTON8_Y0, BUTTON8_X1, BUTTON8_Y1, aExitIcon} };
					

#define COLOR_TRANSPARENT   255 
#define COLOR_BLACK         GDI_ENTRY_START+1
#define COLOR_WHITE         GDI_ENTRY_START+2
#define COLOR_GRAY          GDI_ENTRY_START+3
#define COLOR_LIGHTGRAY     GDI_ENTRY_START+4
#define COLOR_YELLOW        GDI_ENTRY_START+5
#define COLOR_BLUE_TRANS    GDI_ENTRY_START+6
				
																			
//Internal Functions
static void _ShowButton(BYTE bButtonIndex, BYTE bColor);
static void _ShowNotes(BYTE bButtonIndex);


//Global variables 
static BYTE __bOSDVIRMode = FALSE;      
static WORD code *__wpDataPointer; //the data pointed to by __wpDataPointer can not be changed. __wpDataPointer can be changed.
static DWORD __dwTimeShowNotes;  // the time when showing OSDVIR notes
static BYTE	_bCurrentButton;

extern  BYTE    IDATA   __bTemp;
extern  BYTE    DATA    _bOSDLang;



//  *********************************************************************************
//  Function    :   OSDVIR_ProcessKey
//  Description :   Process the input key while in Virtual IR mode
//  Arguments   :   bKey, the input key
//  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 :   __bKey may be changed
//  *********************************************************************************
BYTE OSDVIR_ProcessKey(BYTE bKey)
{
    if ( (bKey!=KEY_VIRTUALIR) && !__bOSDVIRMode)
    {
        return  bKey;
    }

    if ((bKey == KEY_POWER) || (bKey == KEY_OPEN_CLOSE))
    {
        //clear Virtual IR region
        GDI_FILL_RECT(VIR_FRAME_X0, VIR_FRAME_Y0, VIR_FRAME_X1, VIR_FRAME_Y1+32,
                          COLOR_TRANSPARENT
                          );    
        __bOSDVIRMode = FALSE;
        return bKey;
    }

    switch (bKey)
    {
    case KEY_VIRTUALIR:
        if (!__bOSDVIRMode) //1st KEY_PROGRAM will enter the Virtual IR mode
        {
            //Initialization of Variables          
            _bCurrentButton = 0;
            
            //move to other place later                           
            //GDI_ChangePALEntry(COLOR_BLUE_TRANS, 0x0000FF, TRUE); 
            GDI_ChangePALEntry(COLOR_WHITE, 0xFFFFFF, FALSE); 
            GDI_ChangePALEntry(COLOR_BLACK, 0x0F0F0F, FALSE); 
            GDI_ChangePALEntry(COLOR_GRAY, 0x7F7F7F, FALSE);
            GDI_ChangePALEntry(COLOR_LIGHTGRAY, 0xC0C0C0, FALSE);
            GDI_ChangePALEntry(COLOR_YELLOW, 0xFFF200, FALSE);  
            GDI_ChangePALEntry(COLOR_BLUE_TRANS, 0x0000FF, TRUE);         
            GDI_SetMixRatio(7);
            
            GDI_SetCurrentRegion(0);
            GDI_ActivateRegion();
            
            //VIR frame
            GDI_DRAW_FRAME(VIR_FRAME_X0, VIR_FRAME_Y0, VIR_FRAME_X1, VIR_FRAME_Y1,
                            COLOR_LIGHTGRAY, // bColorBright
                            COLOR_LIGHTGRAY, // bColorDark
                            COLOR_BLUE_TRANS, // bColorCenter
                            FRAME_POP_SOLID, // bStyle
                            FRAME_THICKNESS // bThickness

⌨️ 快捷键说明

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