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

📄 digest_m.c

📁 Zoran VP2K731 DVD源代码,极具参考价值!
💻 C
📖 第 1 页 / 共 3 页
字号:
#else
	{
		MS_POS mspos = MSS_MENU_TITLE_POS;
		MEMBER(m_pmssMenuTitle) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
		MEMBER(m_pmssMenuTitle)->text = (void *) ( gcs.pstate == PST_STOP ? S_TRACK_VIEW : S_INDEX_VIEW );
	}
	MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuTitle), !C_FOCUSED);
#endif // DISABLE
#endif	//ICON_IN_THUMBNAIL_MENU
#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
#if 0
	{
		MS_POS mspos = MSS_LABLE_TITLE_POS;
		MS_POS mspos_pal = MSS_LABLE_TITLE_POS;
		if( gPalMode)
			
			MEMBER(m_pmssMenuLable) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
		else
			MEMBER(m_pmssMenuLable) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
		MEMBER(m_pmssMenuLable)->text = (void *) S_DIGITAL_PHOTO_CD;
	}
	MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuLable), !C_FOCUSED);
#endif
//ICON1
#ifdef D_MENU_ICON
	{
		MS_POS mspos = MSS_MENU_ICON1_POS;
		iMS_POS mspos_pal = MSS_MENU_ICON1_POS_PAL;
		if( gPALMode)
			
			MEMBER(m_pmssMenuICON1) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
		else
			MEMBER(m_pmssMenuICON1) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
		MEMBER(m_pmssMenuICON1) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
		MEMBER(m_pmssMenuICON1)->text = (void *) S_MENU ;
	}
	MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuICON1), !C_FOCUSED);
#endif
//ICON2
	{
		MS_POS mspos = MSS_MENU_ICON2_POS;
		MS_POS mspos_pal = MSS_MENU_ICON2_POS_PAL;
		if( gPALMode)
			MEMBER(m_pmssMenuICON2) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
		else
			MEMBER(m_pmssMenuICON2) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
		MEMBER(m_pmssMenuICON2)->text = (void *) S_SLIDE_SHOW ;
	}
	MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuICON2), !C_FOCUSED);
//ICON3
	{
		MS_POS mspos = MSS_MENU_ICON3_POS;
		MS_POS mspos_pal = MSS_MENU_ICON3_POS_PAL;
		if( gPALMode)
			MEMBER(m_pmssMenuICON3) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
		else
			MEMBER(m_pmssMenuICON3) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
		MEMBER(m_pmssMenuICON3)->text = (void *) S_SKIPB ;
	}
	MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuICON3), !C_FOCUSED);
//ICON4
	{
		MS_POS mspos = MSS_MENU_ICON4_POS;
		MS_POS mspos_pal = MSS_MENU_ICON4_POS_PAL;
		if(gPALMode)
			MEMBER(m_pmssMenuICON4) = MS_create_static(&mspos_pal, I_COLOR, (void *) S_NULL, 0 );
		else
			MEMBER(m_pmssMenuICON4) = MS_create_static(&mspos, I_COLOR, (void *) S_NULL, 0 );
		MEMBER(m_pmssMenuICON4)->text = (void *) S_SkipF_ICON ;
	}
	MS_ADD_TO_CONTAINER(screen, MEMBER(m_pmssMenuICON4), !C_FOCUSED);
#endif
	{
		MS_POS mspos = {16, MS_LINE_0, 24, MS_LINE_HEIGHT};
		MEMBER(m_pmssFrameNumber) = MS_create_static(&mspos, /*I_COLOR*/ BAR_COLOR , (void *) MEMBER(m_szFrameNumber), MS_ASCII );
	}

	MS_dialog_display((MS_DIALOG*)screen);

//DM1105 move core event from the begining to avoid core start before init.
	ie_send( IE_CORE_DIGEST );
}

#ifdef DISABLE
const digestaddr[9][2] = 
{
	0x30,0x28,	0x100,0x28,	0x1d0,0x28,
	0x30,0xd0,	0x100,0xd0,	0x1d0,0xd0,
	0x30,0x168,	0x100,0x168,0x1d0,0x168
};
#endif // DISABLE

#ifdef DISABLE
typedef struct o_xy
{
  WORD wX;
  WORD wY;
} O_XY;

const O_XY digest_label_pos[9] = 
{
  {48,40},	{256,40},	{464,40},
  {48,192},	{256,192},	{464,192},
  {48,360},	{256,360},  {464,360},
};
#endif // DISABLE

#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
#ifdef DISABLE
static const WORD icon_location[NUM_OF_ICON][2] = 
{
#ifdef D_MENU_ICON
	ICON1_X_OFFSET,ICON_Y_OFFSET,
#endif	
	ICON2_X_OFFSET,ICON_Y_OFFSET,
	ICON3_X_OFFSET,ICON_Y_OFFSET,
	ICON4_X_OFFSET,ICON_Y_OFFSET
};
#else
static const WORD icon_location[NUM_OF_ICON] = 
{
#ifdef D_MENU_ICON
	ICON1_X_OFFSET,
#endif	
	ICON2_X_OFFSET,
	ICON3_X_OFFSET,
	ICON4_X_OFFSET,
};
#endif
static const BYTE num_of_space[NUM_OF_ICON] = 
{
#ifdef D_MENU_ICON
WIDTH_OF_1STICON,
#endif
WIDTH_OF_2STICON,WIDTH_OF_3STICON,WIDTH_OF_4STICON};
#endif	//ICON_IN_THUMBNAIL_MENU

int digest_image_y( unsigned char ucImageIndex )
{
#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
	if(ucImageIndex > DIGEST_MAX_NUMBER)
		return (int)((gPalMode)?(PAL_ICON_Y_OFFSET):(NTSC_ICON_Y_OFFSET)) + HEIGHT_AHEAD_ICON;	
#endif
	return ( ((int) (ucImageIndex - 1) / DIGEST_IMAGES_PER_ROW ) * (DIGEST_GRID_HEIGHT) + (DIGEST_FIRST_LABEL_LINE) + HEIGHT_AHEAD_ICON);
}

int digest_image_x( unsigned char ucImageIndex )
{
#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
	if(ucImageIndex > DIGEST_MAX_NUMBER)
		return (int)icon_location[ucImageIndex - DIGEST_MAX_NUMBER -1];
#endif
  return ( ((int) (ucImageIndex - 1) % DIGEST_IMAGES_PER_ROW ) * DIGEST_GRID_WIDTH + DIGEST_FIRST_LABEL_COLUMN );
}


void displayFrameNumber(int number, char cFocus)
{
	// Forget the previous message
#ifdef USE_SC_FOR_DIGEST_STRING
	char str[32];
	num_to_str(number, str, 2);
#else
#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
	if(number > DIGEST_MAX_NUMBER)
	{
//		BYTE i,i_max;
//		i_max = num_of_space[number - DIGEST_MAX_NUMBER -1];
//		for(i= 0;i<i_max;i++)
//			MEMBER(m_szFrameNumber)[i] = ' ';
//		MEMBER(m_szFrameNumber)[i] = 0;
	MS_WIDGET *pmsw;
#ifdef D_MENU_ICON
	switch(number - DIGEST_MAX_NUMBER){
#else
	switch(number - DIGEST_MAX_NUMBER+1){
#endif
#ifdef D_MENU_ICON
	case 1:
		pmsw = MEMBER(m_pmssMenuICON1);
		break;
#endif		
	case 2:
		pmsw = MEMBER(m_pmssMenuICON2);
		break;
	case 3:
		pmsw = MEMBER(m_pmssMenuICON3);
		break;
	case 4:
		pmsw = MEMBER(m_pmssMenuICON4);
		break;
	}
	OSD_SetOrigin( (MS_WIDGET *) screen );
	
	MS_hide((MS_WIDGET*)pmsw,(MS_DIALOG *)screen);
	static_user_op((MS_WIDGET*)pmsw, MS_UOP_DISPLAY, cFocus);
	MEMBER(m_ucPrevFrameNumber) = number;
	}
	else
	{
#endif	
	num_to_str( number, MEMBER(m_szFrameNumber), SZ_FRAME_NUMBER_DIGITS );
#endif // USE_SC_FOR_DIGEST_STRING
	
// <<< ZORAN CDE0808 : Fix hole positions
#ifdef DISABLE
	digest_string.widget.pos.x = digestaddr[number-1][0];
	digest_string.widget.pos.y = digestaddr[number-1][1];
#else
	MEMBER(m_pmssFrameNumber)->widget.pos.x = digest_image_x( number );
	MEMBER(m_pmssFrameNumber)->widget.pos.y = digest_image_y( number );
#endif // DISABLE
// ZORAN CDE0808 >>>

#ifdef USE_SC_FOR_DIGEST_STRING
#ifdef DISABLE
	g_ui_tmp_msg = -1;
#endif // DISABLE
	MS_hide((MS_WIDGET*)&digest_string,(MS_DIALOG *)screen);
	sc_SetBytes(SC_TMP_STR_ADDR, 0, strlen(str)+1, (BYTE*)str );
#else
	OSD_SetOrigin( (MS_WIDGET *) screen );
	
	MS_hide((MS_WIDGET*)MEMBER(m_pmssFrameNumber),(MS_DIALOG *)screen);
#endif // USE_SC_FOR_DIGEST_STRING
	static_user_op((MS_WIDGET*)MEMBER(m_pmssFrameNumber), MS_UOP_DISPLAY, cFocus);
	MEMBER(m_ucPrevFrameNumber) = number;
#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
	}
#endif
}

void digestdisplaynum( int number )
{
#ifdef NO_C_STDLIB
	rtouts("\n digestdisplaynum("); rtouti(number); rtouts(")");
#endif
	if ( MEMBER(m_ucPrevFrameNumber) )
		displayFrameNumber( MEMBER(m_ucPrevFrameNumber), !C_FOCUSED );
	displayFrameNumber( number, C_FOCUSED );
}

void cleardisplayednum()
{
	BYTE i;
#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON
	if ( MEMBER(m_ucPrevFrameNumber) > DIGEST_MAX_NUMBER)
		displayFrameNumber( MEMBER(m_ucPrevFrameNumber), !C_FOCUSED );
//	MEMBER(m_pmssFrameNumber)->widget.pos.w = MAX_WIDTH_OF_ICON;	//get the max widget width
#endif
	for(i=1;i<(DIGEST_MAX_NUMBER+1);i++)
	{
		MEMBER(m_pmssFrameNumber)->widget.pos.x = digest_image_x( i );
		MEMBER(m_pmssFrameNumber)->widget.pos.y = digest_image_y( i );
		OSD_SetOrigin( (MS_WIDGET *) screen );
		MS_hide((MS_WIDGET*)MEMBER(m_pmssFrameNumber),(MS_DIALOG *)screen);
	}
	MEMBER(m_ucPrevFrameNumber) = 0;
}

BOOL is_icon_action = FALSE;
#ifdef ICON_IN_THUMBNAIL_MENU	//DM1115 for space of ICON

extern int	DigestCounter;
extern int  DigestPage;

void icon_action(unsigned char icon_num)
{
#ifdef NO_C_STDLIB
	rtouts("\n icon action!!!");
   // rtoutw(icon_num); 
#endif
#ifdef D_MENU_ICON
	switch(icon_num - DIGEST_MAX_NUMBER){
#else
		switch(icon_num - DIGEST_MAX_NUMBER+1){
#endif
#ifdef D_MENU_ICON
		case 1:
			return; //Currently No Action
			//break;
#endif		
		case 2:
			OSD_TurnOff();	//DM1114 avoid display garbage
			ie_send( IE_CORE_DIGEST_STOP ); //DM1121 stop digest first
			user_close_menu();
#ifdef D_PICTURE_CD_ENABLED	//DM1121
			set_picture_open(TRUE);
#endif
			is_icon_action = TRUE;
			open_slideshow();
			break;
		case 3:
			// DZ1122 Block the "Previous" action if on No. 1 pages.
			if( DigestPage == 0 )
			{
				return;
			}
			// DZ1122 End
			OSD_TurnOff();	//DM1114 avoid display garbage
			ie_send(IE_CORE_DIGEST_PREVIOUS);
			break;
		case 4:
			// DZ1122 Block the "Next" action if on No. 1 pages.
#if MP3_JPG_TOGETHER
			if( DigestCounter >= file_list_get_max_jpg() )
			{
				return;
			}
			if( ((DigestPage+1) * DIGEST_MAX_NUMBER +1 ) > file_list_get_max_jpg())
			{
				return;
			}

#else
			if( DigestCounter >= file_list_get_max() )
			{
				return;
			}
			if( ((DigestPage+1) * DIGEST_MAX_NUMBER +1 ) > file_list_get_max())
			{
				return;
			}
#endif			
			// DZ1122 End
			OSD_TurnOff();	//DM1114 avoid display garbage
			ie_send(IE_CORE_DIGEST_NEXT);
			break;
	}
    	
}

void refresh_jpg_digestmenu()	//DM1121 to refresh the osd screen
{
	OSDSetLayout();
	MS_refresh((MS_DIALOG *) screen);
	OSD_TurnOn();	//DM1114 avoid display garbage
}
#endif

⌨️ 快捷键说明

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