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

📄 run_time.c

📁 Zoran VP2K731 DVD源代码,极具参考价值!
💻 C
字号:
/***********************************************************************/
/* File:															   */
/*	  Copyright (c) 2000 ZORAN Corporation, All Rights Reserved		   */
/*	  THIS IS PROPRIETARY SOURCE CODE OF ZORAN CORPORATION             */
/*																	   */
/* ===========                                                         */
/* Descripton:                                                         */
/* ===========                                                         */
/*                                                                     */
/* Log:                                                                */
/* ===                                                                 */
/* $Name: V_1_16 V_1_15 V_1_14 V_1_13 V_1_12 NV_1_00 V_1_11 $                                                            
/* $Header: v:/dsg/rcs/dsg/vp2k/Customer/menu/zoran/run_time.c 1.22 2001/06/13 03:15:32 dingming Exp $                                                          
/* $Log: run_time.c $										                       
/* Revision 1.22  2001/06/13 03:15:32  dingming										                       
/* Revision 1.21  2001/06/06 06:15:10  dingming										                       
/* font 32X24 complile										                       
/* Revision 1.20  2001/02/08 00:32:09  tia										                       
/* Fix scratch pad overwrite bug.										                       
/* Revision 1.19  2001/01/27 00:09:59  bhupeshv										                       
/* In open_run_time() commented call to sc_SetBytes(). To be confirmed with Charlie.										                       
/* Revision 1.18  2000/12/14 02:57:17  charlie										                       
/* Support French language										                       
/* Revision 1.17  2000/12/12 22:35:24  charlie										                       
/* Partially fixed OSD problem when ejecting MP3 disc										                       
/* Revision 1.16  2000/11/17 22:04:17  charlie										                       
/* Fixed tmp msg/string erase problem										                       
/* Revision 1.15  2000/11/17 18:54:18  charlie										                       
/* Use C_FOCUSED										                       
/* Revision 1.14  2000/11/09 04:07:33  cliff										                       
/***********************************************************************/
#include <stdio.h>
#include <string.h>
#include "sysdefs.h"
#include "..\..\..\ui\menu_sys\ms_wdgt.h"
#include "..\..\..\ui\menu_sys\ms_lib.h"
#include "..\..\..\ui\menu_sys\osd_drv.h"
#include "..\..\..\decoder\osdrendr.h"
#include "..\..\..\decoder\osdlayou.h"
#ifdef FONT32X24  //DM0605
#include "..\..\..\customer\dragon\strings\strings.h"
#else
#include "..\..\..\ui\strings\strings.h"
#endif
#include "..\..\playcore\fileSys\filesrch.h"
#include "..\..\..\playcore\scpad\scmgr.h"

#include "menu_var.h"


static const MS_POS	run_time_pos = {60,	60, 630, 360};

static const MS_COLOR screen_color = 0x0000;

extern const MS_STATIC c_time_stat;
extern const MS_STATIC t_time_stat;
static OSD_MESSAGES prev_msg=-1;
 


const MS_STATIC tmp_msg = {
	{
	MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{10, MS_LINE_0, 248+36, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_TMP_MSG_ADDR
};

const MS_STATIC tmp_string = {
	{
	MS_ASCII | MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{10, MS_LINE_0, 248+36, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_TMP_STR_ADDR
};

const MS_STATIC permanent_repeat_msg = {
	{
	MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
#ifdef CHINESE_OSD	
	{492,MS_LINE_1,108,MS_LINE_HEIGHT}, 
#else	 //german or spanish osd
	{400,MS_LINE_1,200,MS_LINE_HEIGHT}, //hqm, it is (492, 108) in default.
#endif	
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_PERMANENT_MSG_ADDR
};

const MS_STATIC permanent_msg = {
	{
	MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{10,MS_LINE_0, 248+36, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_PERMANENT_MSG_ADDR
};


const MS_STATIC mute_msg = {
	{
	MS_STRING_ON_SC,
	ALIGN_LEFT,
	I_COLOR,
	{10,324,120,36},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_MUTE_MSG_ADDR
};

static void layout (void)
{


	go_CurrentLayout.m_bBigMemMap =FALSE;
	go_CurrentLayout.m_cPixRes = 0;
	go_CurrentLayout.m_wOriginX = 0;
	go_CurrentLayout.m_wOriginY = 60;
	go_CurrentLayout.m_wWidth = 720;
	go_CurrentLayout.m_wHeight = 360;
	go_CurrentLayout.m_cNbrHole = 1;

	go_CurrentLayout.m_oHolePos[0].m_wLineNbr = 132;
	go_CurrentLayout.m_oHolePos[0].m_wHeight = 216;


	go_CurrentLayout.m_cInitColor = 0;
	go_CurrentLayout.m_cNbrColor = 16;
	go_CurrentLayout.m_pColorPalette = (OSD_Palette *)MenuBitmapColor;

	OSDSetLayout();
	OSDSetFont(0);

//	printf("RUN TIME LAYOUT\n");
}

static void on_run_time_close(void)
{
#ifdef NO_C_STDLIB
  dbouts("\nRun time screen closed");
#endif
}


void init_run_time(void)
{
	OSD_MESSAGES msg = S_NULL;
	sc_Write(SC_PERMANENT_MSG_ADDR,1,(Sc_cont *)&msg);
	sc_Write(SC_MUTE_MSG_ADDR,1,(Sc_cont *)&msg);
}

void open_run_time(void)
{
	OSD_MESSAGES msg = S_NULL;

	screen = MS_create_screen((MS_POS *)&run_time_pos,screen_color,MS_NO_BACKGROUND,on_run_time_close,layout);

	sc_Write(SC_TMP_MSG_ADDR,1,(Sc_cont *)&msg);
	sc_SetBytes(SC_TMP_STR_ADDR, 0, 2, (BYTE *)"");
        
	sc_Write(SC_PERMANENT_MSG_ADDR,1,(Sc_cont *)&msg);
	
	sc_Write(SC_MUTE_MSG_ADDR,1,(Sc_cont *)&msg);
    sc_SetBytes(SC_CURRENT_TIME_MSG_ADDR, 0, 2, (BYTE *)"");
	sc_SetBytes(SC_TOTAL_TIME_MSG_ADDR, 0, 2, (BYTE *)"");
            
	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&permanent_msg,0);
	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&tmp_msg,0);
	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&tmp_string,0);
	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&mute_msg,0);
	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&c_time_stat,0);
	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&t_time_stat,0);

	MS_dialog_display((MS_DIALOG*)screen);
	
	
}
/*static const MS_STATIC mp3m_permanent_msg = {
	{
	MS_STRING_ON_SC,
	ALIGN_LEFT_PAD,
	I_COLOR,
	{MSS_TMP_MSG_X, MS_LINE_0, 100, MS_LINE_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)SC_PERMANENT_MSG_ADDR
};
//dm
/*void mp3m_permanent_msg_display(OSD_MESSAGES msg)
{
	MS_hide((MS_WIDGET*)&mp3m_permanent_msg,(MS_DIALOG *)screen);
	sc_Write(SC_PERMANENT_MSG_ADDR,1,(Sc_cont *)&msg);
	static_user_op((MS_WIDGET*)&mp3m_permanent_msg,MS_UOP_DISPLAY,0);
}*/
//dm
void tmp_msg_display(OSD_MESSAGES msg)
{
//AW0119:if the msg is the same as the prev one just do nothing
		if(msg==S_LAST)
        {
            prev_msg=-1;
        }
        else
        {
//fix the bug when osd is open and from setup menu  to play state        
#ifdef CUSTOMER_LENOXX
		if(S_LOADING1 != msg && S_LOADING2 != msg && S_LOADING3 != msg && S_LOADING4 != msg
			&& S_LOADING5 != msg && S_LOADING6 != msg && S_LOADING7 != msg && S_LOADING8 != msg)
#endif
            if(prev_msg!=msg||S_PLAY==msg)
            {
                prev_msg=msg;
                MS_hide((MS_WIDGET*)&tmp_msg,(MS_DIALOG *)screen);
            }        
        	if(msg!=S_NULL)
    	    {
    	        chg_pri(1,18);
            	sc_Write(SC_TMP_MSG_ADDR,1,(Sc_cont *)&msg);
            	static_user_op((MS_WIDGET*)&tmp_msg,MS_UOP_DISPLAY,0);
            	chg_pri(1,32);
    	    }
        }	
        if(S_PROHIBIT==msg) prev_msg=-1;

}


void tmp_string_display(char *str)
{
    prev_msg=-1;
//change UI's priority    
    chg_pri(1,18);
    MS_hide((MS_WIDGET*)&tmp_string,(MS_DIALOG *)screen);
	sc_SetBytes(SC_TMP_STR_ADDR, 0, strlen(str)+1, (BYTE*)str );
	static_user_op((MS_WIDGET*)&tmp_string,MS_UOP_DISPLAY,0);
	chg_pri(1,32);
}

void permanent_repeat_msg_display(OSD_MESSAGES msg)
{
//AW0118:add compare and recording and folllow string osd dispay
	MS_hide((MS_WIDGET*)&permanent_repeat_msg,(MS_DIALOG *)screen);
	if(msg!=S_NULL&&(msg==S_REPEATAB_A||msg==S_REPEATAB_B))
	{
	sc_Write(SC_PERMANENT_MSG_ADDR,1,(Sc_cont *)&msg);
	static_user_op((MS_WIDGET*)&permanent_repeat_msg,MS_UOP_DISPLAY,0);
	}
	
}
void permanent_msg_display(OSD_MESSAGES msg)
{
	prev_msg=-1;
	MS_hide((MS_WIDGET*)&permanent_msg,(MS_DIALOG *)screen);
	if(msg!=S_NULL)
	{
	sc_Write(SC_PERMANENT_MSG_ADDR,1,(Sc_cont *)&msg);
	static_user_op((MS_WIDGET*)&permanent_msg,MS_UOP_DISPLAY,0);
	}
	
}


void mute_msg_display(int mute)
{
	
	if (mute) {
		long cnt = S_MUTE;
		sc_Write(SC_MUTE_MSG_ADDR,1,(Sc_cont *)&cnt);
		static_user_op((MS_WIDGET*)&mute_msg,MS_UOP_DISPLAY,0);
	}
	else {
		OSD_MESSAGES msg = S_NULL;
		MS_hide((MS_WIDGET*)&mute_msg,(MS_DIALOG *)screen);
		sc_Write(SC_MUTE_MSG_ADDR,1,(Sc_cont *)&msg);
		static_user_op((MS_WIDGET*)&mute_msg,MS_UOP_DISPLAY,0);
	}
}

⌨️ 快捷键说明

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