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

📄 mediaplayeroutlook.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/* 
MPO_PRINTF("FILE(%s), FUNC(%s), LINE(%d)::\n",  __FILE__, __FUNCTION__, __LINE__);
*/

/*************************MPO_LowLevel.c*****************************
*
*  Copyright (C) 2003 by ALi Corporation.  All Rights Reserved.
*
*  File:  MPO_LowLevel.c
*
*  Contents:
*  	To draw Media Player's ( STATIC ) Outlook -- Implementation
* 
*  History:
*  Date		By       				Reason		Ver.
*  ====================================
*  2003/07	Gordon J.H. CHEN  		Create    		v2.7
*
***********************************************************************/

//#define __MPO_DEBUG__
#ifdef __MPO_DEBUG__

	#define MPO_ASSERT(cond)  	\
	{							\
		if( !(cond) )			\
		{						\
			MPO_PRINTF( "\n #####@@@@@@@@Assertion error in function %s [ line %d in file %s ]@@@@@@@@##### \n", __FUNCTION__, __LINE__, __FILE__);	\
		}						\
	}
    
    #define MPO_ENTER_FUNC  \
    {                           \
        MPO_PRINTF("\n @@@@@@@@@@@@@Enter function %s@@@@@@@@@@@@@ \n", __FUNCTION__);   \
    }
    
    #define MPO_EXIT_FUNC   \
    {                           \
        MPO_PRINTF("\n @@@@@@@@@@@@@Leave function %s from line %d@@@@@@@@@@@@@ \n", __FUNCTION__, __LINE__);    \
    }
    
#else  //__MPO_DEBUG__

	#include "stdarg.h" 
	#define MPO_PRINTF(...)
	#define MPO_ASSERT(cond)
	#define MPO_ENTER_FUNC
	#define MPO_EXIT_FUNC

#endif //__MPO_DEBUG__


//#define __MPA_DEBUG__
#ifdef __MPA_DEBUG__

    #define MPA_ASSERT(cond)    \
    {                           \
        if( !(cond) )           \
        {                       \
            MPA_PRINTF( "\n #####@@@@@@@@Assertion error in function %s [ line %d in file %s ]@@@@@@@@##### \n", __FUNCTION__, __LINE__, __FILE__); \
        }                       \
    }
    
    #define MPA_ENTER_FUNC  \
    {                           \
        MPA_PRINTF("\n @@@@@@@@@@@@@Enter function %s@@@@@@@@@@@@@ \n", __FUNCTION__);   \
    }
    
    #define MPA_EXIT_FUNC   \
    {                           \
        MPA_PRINTF("\n @@@@@@@@@@@@@Leave function %s from line %d@@@@@@@@@@@@@ \n", __FUNCTION__, __LINE__);    \
    }
    
#else  //__MPA_DEBUG__

    #include "stdarg.h" 
    #define MPA_PRINTF(...)
    #define MPA_ASSERT(cond)
    #define MPA_ENTER_FUNC
    #define MPA_EXIT_FUNC

#endif //__MPA_DEBUG__


#include "MediaPlayerOutlook.h"
#include "MediaPlayerOutlookDef.h"
#include "newres.h"
#include "ui_sub.h"     // UI_CORE_STOP, ...
#include "fileopen.h"   // C_DIR, C_MP3FILE, ...

#ifdef _MPLAY_ENABLE_	

#define PROG_ITEM_NULL 0xFFFF
/*********************************************************************
*********************************************************************/
//Media Player Outlook Attribute
//private:

typedef enum {LEFT_TOP=0, LEFT_BOT, RIGHT_TOP, RIGHT_BOT} tScrollIndex;
typedef enum {HIGHLIGHT_ON_LIST=0, HIGHLIGHT_ON_PROG, HIGHLIGHT_NOT_ON_BOTH} tHighlightPos;
struct
{
    WORD iDiscMediaType;							//DiscMediaType: C_MP3FILE, C_MP3FILE|C_JPGFILE, ...
    tPlayerType iPlayerType[PLAYER_MAX_TAB_COUNT];	//PlayerType: MPLR_MUSIC, MPLR_PHOTO, MPLR_MOVIE, MPLR_CD, ...
    BYTE iPlayerSelected;							//Player: Player0, Player1, ...
}
MPO_Attr;

static DEVMODE gMPOdevMode;
HDC gMPOdc;

/*********************************************************************
*********************************************************************/
//Media Player Outlook Operation
//private:  can be shared as elements to friend
//usage:	1 	InitMediaPlayer(iDiscMediaType, iPlayerSelected);
//		    2	Set...(...); / Get...(...); / InitMPODC(); Draw....(....); CloseMPODC();
//		    3	CloseMediaPlayer();

// Init ...
void InitMediaPlayer(WORD iDiscMediaType, BYTE iPlayerSelected);
// Set...
//void SetMediaTypeTabSelected(BYTE iPlayerSelected);
// Get...
//WORD GetDiscMediaTypes();
WORD GetCurrentMediaType();
BYTE GetCurMediaTypeTabIndex();
BYTE GetMediaTypeTabCount();
tPlayerType GetCurrentPlayerType();
// DC...
void InitMPODC();
void CloseMPODC();
// Draw...
void ClearCanvas();
void DrawMainSection();
void DrawPlayback(WORD iPlayback, BOOL bIsSecondStop, BYTE bActionCtl, tHighlightType iHighlight);
void DrawTrackTime(BYTE *szTrackTime, tHighlightType iHighlight);
void DrawTrackNo(WORD iCurTrack, WORD iTotalTrack, tHighlightType iHighlight);
void DrawRepeat(WORD iMode, tHighlightType iHighlight);
void Draw3DSur(WORD iMode, tHighlightType iHighlight);
void DrawMediaTypeSelection(WORD iDiscMediaTypeIndex, tHighlightType iHighlight);
void DrawMediaTypeTabs();
void DrawListProgramPreview(tHighlightPos iHighlightPos, tHighlightType iHightlight);
void DrawListItemSign(WORD iItemIndex, BOOL bIsPlaying, tHighlightType iHighlight);
void DrawListItemText(WORD iItemIndex, BYTE *szItemText, BYTE bDIR, tHighlightType iHighlight);
void DrawScrollBar(tScrollIndex iScrollIndex, tHighlightType iHighlight);
void DrawPath(BYTE *strDirName, tHighlightType iHighlight);

/********************************************************************/
// change str format to UNICODE

void GORDON_UNICODE(char *str)
{
    int i;

    for(i=strlen(str); i>=0; i--)
    {
        str[i*2+1]=str[i];
        str[i*2]=0;
    }
}


/********************************************************************/
// Init MPO_Attr.iDiscMediaType, MPO_Attr.iPlayerSelected, MPO_Attr.iPlayerType[]

void InitMediaPlayer(WORD iDiscMediaType, BYTE iPlayerSelected)
{
    int i=0;
	extern BYTE bsetuplastplay;
	bsetuplastplay = 0;//benjamin add
    
    MPO_Attr.iDiscMediaType=iDiscMediaType;
    MPO_Attr.iPlayerSelected=iPlayerSelected;
    
    if( ((1<<C_CDFILE) & MPO_Attr.iDiscMediaType) ||
         ((1<<C_DTSFILE) & MPO_Attr.iDiscMediaType)
#if(_VCD_PROGRAM_MODE==_VCD_PROGRAM_ENABLE_)
         ||
         (DiscType == C_VCD10 || DiscType == C_VCD20 || DiscType==C_SVCD)
#endif //_VCDPROGRAM_ENABLE_
         )
    {
        MPO_Attr.iPlayerType[i]=MPLR_CD;
        i++;
        MPO_Attr.iPlayerType[i]=MPLR_NONE;
        return;
    }

#ifndef _MPLR_MUSIC_DISABLE_
    if( ((1<<C_MP3FILE) & MPO_Attr.iDiscMediaType))
    {
        MPO_Attr.iPlayerType[i]=MPLR_MUSIC;
        i++;
    }
#endif //_MPLR_MUSIC_DISABLE_

#ifndef _MPLR_PHOTO_DISABLE_
    if( ((1<<C_JPGFILE) & MPO_Attr.iDiscMediaType)  )
    {
        MPO_Attr.iPlayerType[i]=MPLR_PHOTO;
        i++;
    }
#endif //_MPLR_PHOTO_DISABLE_
  
#ifndef _MPLR_MOVIE_DISABLE_
    if( ((1<<C_MPGFILE) & MPO_Attr.iDiscMediaType))
    {
        MPO_Attr.iPlayerType[i]=MPLR_MOVIE;
        i++;
    }
#endif //_MPLR_MOVIE_DISABLE_

    MPO_Attr.iPlayerType[i]=MPLR_NONE;
}

/********************************************************************/
// Get...

WORD GetCurrentMediaType()
{
	WORD iDiscMediaType=0;
	
	if(MPO_Attr.iPlayerType[MPO_Attr.iPlayerSelected]==MPLR_CD)
	{
		iDiscMediaType |=MPO_Attr.iDiscMediaType;
		return iDiscMediaType;
	}

	if(MPO_Attr.iPlayerType[MPO_Attr.iPlayerSelected]==MPLR_MUSIC)
	{
		iDiscMediaType |=( (1<<C_MP3FILE)& MPO_Attr.iDiscMediaType );
		return iDiscMediaType;
	}
	
	if(MPO_Attr.iPlayerType[MPO_Attr.iPlayerSelected]==MPLR_PHOTO)
	{
		iDiscMediaType |=( (1<<C_JPGFILE)& MPO_Attr.iDiscMediaType );
		return iDiscMediaType;
	}

}


/********************************************************************/
// Get...

BYTE GetCurMediaTypeTabIndex()
{
    return MPO_Attr.iPlayerSelected;
}


/********************************************************************/
// Get...

BYTE GetMediaTypeTabCount()
{
    BYTE i;

    for(i=0; MPO_Attr.iPlayerType[i]!=MPLR_NONE; i++);
    
    return i;
}


/********************************************************************/
// Get...
tPlayerType GetCurrentPlayerType()
{
    return MPO_Attr.iPlayerType[MPO_Attr.iPlayerSelected];
}


/********************************************************************/
// DC...
void InitMPODC() 
{
        GUI_SetDevMode(&gMPOdevMode,CANVAS_WIDTH,CANVAS_HEIGHT);
        GUI_InitializeDC(&gMPOdc,&gMPOdevMode,0.7);
}


/********************************************************************/
// DC...
void CloseMPODC()
{
    GUI_TerminizeDC(&gMPOdc);
}


/********************************************************************/
//Clear Canvas
void ClearCanvas()
{
    RECT rectCanvas={CANVAS_LEFT, CANVAS_TOP, CANVAS_RIGHT, CANVAS_BOTTOM};
    COLORREF clCanvas;
    clCanvas=CL_TRANSPARENT;
    // cannot using mem dc
    GUI_CreateButtonControl(gMPOdc, &rectCanvas, clCanvas,clCanvas, clCanvas, clCanvas, "", NORMAL_STRING, DT_CENTER, 0);
}


/********************************************************************/
// Status bar, Information window, Directory bar

void DrawMainSection()
{
    RECT rectBack={BACKGROUND_LEFT, BACKGROUND_TOP, BACKGROUND_LEFT+BACKGROUND_WIDTH, BACKGROUND_TOP+BACKGROUND_HEIGHT};
    RECT rectBackLeft={BACK_LEFT_LEFT, BACK_LEFT_TOP, BACK_LEFT_LEFT+BACK_LEFT_WIDTH, BACK_LEFT_TOP+BACK_LEFT_HEIGHT};
    RECT rectBackUp={BACK_UP_LEFT, BACK_UP_TOP, BACK_UP_LEFT+BACK_UP_WIDTH, BACK_UP_TOP+BACK_UP_HEIGHT};
    RECT rectBackRight={BACK_RIGHT_LEFT, BACK_RIGHT_TOP, BACK_RIGHT_LEFT+BACK_RIGHT_WIDTH, BACK_RIGHT_TOP+BACK_RIGHT_HEIGHT};
    RECT rectBackDown={BACK_DOWN_LEFT, BACK_DOWN_TOP, BACK_DOWN_LEFT+BACK_DOWN_WIDTH, BACK_DOWN_TOP+BACK_DOWN_HEIGHT};
    COLORREF clBack, clBackEdge;

    clBack=GetColorInDef256Palette(MAIN_CLR_INDEX);
    // size too big, cannot using mem dc
    GUI_CreateButtonControl2(gMPOdc, &rectBack, clBack, clBack, clBack, clBack, "", NORMAL_STRING, 0, 0);
    clBackEdge=CL_BKNOCARE;
    GUI_CreateBitmapControl(gMPOdc, &rectBackLeft, clBackEdge, clBackEdge, clBackEdge, IM_MPLR_BACK_LEFT, 0, 0);
    GUI_CreateBitmapControl(gMPOdc, &rectBackUp, clBackEdge, clBackEdge, clBackEdge, IM_MPLR_BACK_UP, 0, 0);
    GUI_CreateBitmapControl(gMPOdc, &rectBackRight, clBackEdge, clBackEdge, clBackEdge, IM_MPLR_BACK_RIGHT, 0, 0);
    GUI_CreateBitmapControl(gMPOdc, &rectBackDown, clBackEdge, clBackEdge, clBackEdge, IM_MPLR_BACK_DOWN, 0, 0);
}


/********************************************************************/
// Status Item -- Playback

char MP3_ICON_PAUSE[4]={0xe0, 0x22,0x00,0x00};
char MP3_ICON_PLAY[4]={0xe0, 0x23,0x00,0x00};
char MP3_ICON_PRESTOP[4]={0xe0, 0x24,0x00,0x00};
char MP3_ICON_STOP[4]={0xe0, 0x26,0x00,0x00};
char MP3_FF_2[6]={0xe0, 0x08,0x00,0x32,0x00,0x00};
char MP3_FF_4[6]={0xe0, 0x08,0x00,0x34,0x00,0x00};
char MP3_FF_8[6]={0xe0, 0x08,0x00,0x38,0x00,0x00};
char MP3_REW_2[6]={0xe0, 0x09,0x00,0x32,0x00,0x00};
char MP3_REW_4[6]={0xe0, 0x09,0x00,0x34,0x00,0x00};

⌨️ 快捷键说明

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