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

📄 options.cpp

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// Options.cpp : implementation file//#include "stdafx.h"#include "Osmo4.h"#include "MainFrm.h"#include <gpac/modules/codec.h>#include <gpac/modules/raster2d.h>#include <gpac/modules/font.h>#include <gpac/modules/audio_out.h>#include <gpac/modules/video_out.h>#include <gpac/iso639.h>#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// COptions dialogCOptions::COptions(CWnd* pParent /*=NULL*/)	: CDialog(COptions::IDD, pParent){	//{{AFX_DATA_INIT(COptions)	//}}AFX_DATA_INIT}void COptions::DoDataExchange(CDataExchange* pDX){	CDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(COptions)	DDX_Control(pDX, IDC_SELECT, m_Selector);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COptions, CDialog)	//{{AFX_MSG_MAP(COptions)	ON_BN_CLICKED(IDC_SAVEOPT, OnSaveopt)	ON_WM_CLOSE()	ON_WM_DESTROY()	ON_CBN_SELCHANGE(IDC_SELECT, OnSelchangeSelect)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()BOOL COptions::OnInitDialog() {	CDialog::OnInitDialog();		m_general.Create(IDD_OPT_GEN, this);	m_systems.Create(IDD_OPT_SYSTEMS, this);	m_render.Create(IDD_OPT_RENDER, this);	m_render2d.Create(IDD_OPT_RENDER2D, this);	m_render3d.Create(IDD_OPT_RENDER3D, this);	m_decoder.Create(IDD_OPT_DECODER, this);	m_audio.Create(IDD_OPT_AUDIO, this);	m_video.Create(IDD_OPT_VIDEO, this);	m_http.Create(IDD_OPT_HTTP, this);	m_font.Create(IDD_OPT_FONT, this);	m_stream.Create(IDD_OPT_STREAM, this);	m_cache.Create(IDD_OPT_MCACHE, this);	m_files.Create(IDD_OPT_FILETYPES, this);	m_logs.Create(IDD_OPT_LOGS, this);	m_Selector.AddString("General");	m_Selector.AddString("MPEG-4 Systems");	m_Selector.AddString("Media Decoders");	m_Selector.AddString("Rendering");	m_Selector.AddString("Renderer 2D");	m_Selector.AddString("Renderer 3D");	m_Selector.AddString("Video Output");	m_Selector.AddString("Audio Output");	m_Selector.AddString("Text Engine");	m_Selector.AddString("File Download");	m_Selector.AddString("Real-Time Streaming");	m_Selector.AddString("Streaming Cache");	m_Selector.AddString("File Types");	m_Selector.AddString("Log System");	HideAll();	const char *sOpt = gf_cfg_get_key(GetApp()->m_user.config, "General", "ConfigPanel");	u32 sel = sOpt ? atoi(sOpt) : 0;	if (sel>13) sel=13;	m_Selector.SetCurSel(sel);	m_general.ShowWindow(SW_SHOW);		OnSelchangeSelect();	return TRUE;  }/////////////////////////////////////////////////////////////////////////////// COptions message handlersvoid COptions::HideAll(){	m_general.ShowWindow(SW_HIDE);	m_systems.ShowWindow(SW_HIDE);	m_render.ShowWindow(SW_HIDE);	m_render2d.ShowWindow(SW_HIDE);	m_render3d.ShowWindow(SW_HIDE);	m_audio.ShowWindow(SW_HIDE);	m_video.ShowWindow(SW_HIDE);	m_http.ShowWindow(SW_HIDE);	m_font.ShowWindow(SW_HIDE);	m_stream.ShowWindow(SW_HIDE);	m_decoder.ShowWindow(SW_HIDE);	m_cache.ShowWindow(SW_HIDE);	m_files.ShowWindow(SW_HIDE);	m_files.ShowWindow(SW_HIDE);	m_logs.ShowWindow(SW_HIDE);}void COptions::OnSelchangeSelect() {	HideAll();	switch (m_Selector.GetCurSel()) {	case 0: m_general.ShowWindow(SW_SHOW); break;	case 1: m_systems.ShowWindow(SW_SHOW); break;	case 2: m_decoder.ShowWindow(SW_SHOW); break;	case 3: m_render.ShowWindow(SW_SHOW); break;	case 4: m_render2d.ShowWindow(SW_SHOW); break;	case 5: m_render3d.ShowWindow(SW_SHOW); break;	case 6: m_video.ShowWindow(SW_SHOW); break;	case 7: m_audio.ShowWindow(SW_SHOW); break;	case 8: m_font.ShowWindow(SW_SHOW); break;	case 9: m_http.ShowWindow(SW_SHOW); break;	case 10: m_stream.ShowWindow(SW_SHOW); break;	case 11: m_cache.ShowWindow(SW_SHOW); break;	case 12: m_files.ShowWindow(SW_SHOW); break;	case 13: m_logs.ShowWindow(SW_SHOW); break;	}}void COptions::OnSaveopt() {	Bool need_reload;	m_general.SaveOptions();	m_systems.SaveOptions();	m_decoder.SaveOptions();	need_reload = m_render.SaveOptions();	m_render2d.SaveOptions();	m_render3d.SaveOptions();	m_audio.SaveOptions();	m_video.SaveOptions();	m_http.SaveOptions();	m_font.SaveOptions();	m_stream.SaveOptions();	m_cache.SaveOptions();	m_logs.SaveOptions();	WinGPAC *gpac = GetApp();	if (!need_reload) {		gf_term_set_option(gpac->m_term, GF_OPT_RELOAD_CONFIG, 1);	} else {		gpac->ReloadTerminal();	}	m_render2d.SetYUV();}void COptions::OnClose() {	char str[20];	sprintf(str, "%d", m_Selector.GetCurSel());	gf_cfg_set_key(GetApp()->m_user.config, "General", "ConfigPanel", str);	DestroyWindow();}void COptions::OnDestroy() {	CDialog::OnDestroy();	delete this;	((CMainFrame *)GetApp()->m_pMainWnd)->m_pOpt = NULL;}COptGen::COptGen(CWnd* pParent /*=NULL*/)	: CDialog(COptGen::IDD, pParent){	//{{AFX_DATA_INIT(COptGen)	//}}AFX_DATA_INIT}void COptGen::DoDataExchange(CDataExchange* pDX){	CDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(COptGen)	DDX_Control(pDX, IDC_LOOKFORSUB, m_LookForSubs);	DDX_Control(pDX, IDC_DUMP_XMT, m_ViewXMT);	DDX_Control(pDX, IDC_NO_CONSOLE, m_NoConsole);	DDX_Control(pDX, IDC_LOOP, m_Loop);	DDX_Control(pDX, IDC_SINGLE_INSTANCE, m_SingleInstance);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COptGen, CDialog)	//{{AFX_MSG_MAP(COptGen)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// COptGen message handlersBOOL COptGen::OnInitDialog() {	CDialog::OnInitDialog();	WinGPAC *gpac = GetApp();	const char *sOpt;		sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "Loop");	m_Loop.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0);	sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "LookForSubtitles");	m_LookForSubs.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0);	sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "ConsoleOff");	m_NoConsole.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0);	sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "ViewXMT");	m_ViewXMT.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0);	sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "SingleInstance");	m_SingleInstance.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0);	return TRUE; }void COptGen::SaveOptions(){	WinGPAC *gpac = GetApp();	gpac->m_Loop = m_Loop.GetCheck();	gf_cfg_set_key(gpac->m_user.config, "General", "Loop", gpac->m_Loop ? "yes" : "no");	gpac->m_LookForSubtitles = m_LookForSubs.GetCheck();	gf_cfg_set_key(gpac->m_user.config, "General", "LookForSubtitles",  gpac->m_LookForSubtitles ? "yes" : "no");	gpac->m_NoConsole = m_NoConsole.GetCheck();	gf_cfg_set_key(gpac->m_user.config, "General", "ConsoleOff", gpac->m_NoConsole ? "yes" : "no");	gpac->m_ViewXMTA = m_ViewXMT.GetCheck();	gf_cfg_set_key(gpac->m_user.config, "General", "ViewXMT", gpac->m_ViewXMTA ? "yes" : "no");	gpac->m_SingleInstance = m_SingleInstance.GetCheck();	gf_cfg_set_key(gpac->m_user.config, "General", "SingleInstance", gpac->m_SingleInstance ? "yes" : "no");}COptSystems::COptSystems(CWnd* pParent /*=NULL*/)	: CDialog(COptSystems::IDD, pParent){	//{{AFX_DATA_INIT(COptSystems)		// NOTE: the ClassWizard will add member initialization here	//}}AFX_DATA_INIT}void COptSystems::DoDataExchange(CDataExchange* pDX){	CDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(COptSystems)	DDX_Control(pDX, IDC_FORCE_DURATION, m_ForceDuration);	DDX_Control(pDX, IDC_DEC_THREAD, m_Threading);	DDX_Control(pDX, IDC_BIFSDROP, m_BifsAlwaysDrawn);	DDX_Control(pDX, IDC_LANG, m_Lang);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COptSystems, CDialog)	//{{AFX_MSG_MAP(COptSystems)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// COptSystems message handlersBOOL COptSystems::OnInitDialog() {	CDialog::OnInitDialog();		WinGPAC *gpac = GetApp();	const char *sOpt;	sOpt = gf_cfg_get_key(gpac->m_user.config, "Systems", "Language3CC");	if (!sOpt) sOpt = "eng";	s32 select = 0;	while (m_Lang.GetCount()) m_Lang.DeleteString(0);	s32 i = 0;	while (GF_ISO639_Lang[i]) {		/*only use common languages (having both 2- and 3-char code names)*/		if (GF_ISO639_Lang[i+2][0]) {			m_Lang.AddString(GF_ISO639_Lang[i]);			if (sOpt && !stricmp(sOpt, GF_ISO639_Lang[i+1])) select = m_Lang.GetCount() - 1;		}		i += 3;	}	m_Lang.SetCurSel(select);		/*system config*/	sOpt = gf_cfg_get_key(gpac->m_user.config, "Systems", "ThreadingPolicy");	select = 0;	while (m_Threading.GetCount()) m_Threading.DeleteString(0);	m_Threading.AddString("Single Thread");	m_Threading.AddString("Mutli Thread");	if (sOpt && !stricmp(sOpt, "Multi")) select = 1;	m_Threading.AddString("Free");	if (sOpt && !stricmp(sOpt, "Free")) select = 2;	m_Threading.SetCurSel(select);	sOpt = gf_cfg_get_key(gpac->m_user.config, "Systems", "ForceSingleClock");	if (sOpt && !stricmp(sOpt, "yes")) {		m_ForceDuration.SetCheck(1);	} else {		m_ForceDuration.SetCheck(0);	}	sOpt = gf_cfg_get_key(gpac->m_user.config, "Systems", "AlwaysDrawBIFS");	if (sOpt && !stricmp(sOpt, "yes")) {		m_BifsAlwaysDrawn.SetCheck(1);	} else {		m_BifsAlwaysDrawn.SetCheck(0);	}		return TRUE; }void COptSystems::SaveOptions(){	WinGPAC *gpac = GetApp();	s32 sel = m_Lang.GetCurSel();	u32 i=0;	while (GF_ISO639_Lang[i]) {		/*only use common languages (having both 2- and 3-char code names)*/		if (GF_ISO639_Lang[i+2][0]) {			if (!sel) break;			sel--;		}		i+=3;	}	gf_cfg_set_key(gpac->m_user.config, "Systems", "LanguageName", GF_ISO639_Lang[i]);	gf_cfg_set_key(gpac->m_user.config, "Systems", "Language3CC", GF_ISO639_Lang[i+1]);	gf_cfg_set_key(gpac->m_user.config, "Systems", "Language2CC", GF_ISO639_Lang[i+2]);	sel = m_Threading.GetCurSel();	gf_cfg_set_key(gpac->m_user.config, "Systems", "ThreadingPolicy", (sel==0) ? "Single" : ( (sel==1) ? "Multi" : "Free"));	gf_cfg_set_key(gpac->m_user.config, "Systems", "ForceSingleClock", m_ForceDuration.GetCheck() ? "yes" : "no");	gf_cfg_set_key(gpac->m_user.config, "Systems", "AlwaysDrawBIFS", m_BifsAlwaysDrawn.GetCheck() ? "yes" : "no");}OptDecoder::OptDecoder(CWnd* pParent /*=NULL*/)	: CDialog(OptDecoder::IDD, pParent){	//{{AFX_DATA_INIT(OptDecoder)		// NOTE: the ClassWizard will add member initialization here	//}}AFX_DATA_INIT}void OptDecoder::DoDataExchange(CDataExchange* pDX){	CDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(OptDecoder)	DDX_Control(pDX, IDC_VIDEC_LIST, m_Video);	DDX_Control(pDX, IDC_AUDEC_LIST, m_Audio);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(OptDecoder, CDialog)	//{{AFX_MSG_MAP(OptDecoder)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// OptDecoder message handlersBOOL OptDecoder::OnInitDialog() {	const char *sOpt;	CDialog::OnInitDialog();		WinGPAC *gpac = GetApp();		/*audio dec enum*/	while (m_Audio.GetCount()) m_Audio.DeleteString(0);	sOpt = gf_cfg_get_key(gpac->m_user.config, "Systems", "DefAudioDec");	u32 count = gf_modules_get_count(gpac->m_user.modules);	GF_BaseDecoder *ifce;	s32 select = 0;	s32 to_sel = 0;	for (u32 i=0; i<count; i++) {		ifce = (GF_BaseDecoder *) gf_modules_load_interface(gpac->m_user.modules, i, GF_MEDIA_DECODER_INTERFACE);		if (!ifce) continue;		if (ifce->CanHandleStream(ifce, GF_STREAM_AUDIO, 0, NULL, 0, 0)) {			if (sOpt && !stricmp(ifce->module_name, sOpt)) select = to_sel;			m_Audio.AddString(ifce->module_name);			to_sel++;		}		gf_modules_close_interface((GF_BaseInterface *)ifce);	}	m_Audio.SetCurSel(select);	/*video dec enum*/	while (m_Video.GetCount()) m_Video.DeleteString(0);	sOpt = gf_cfg_get_key(gpac->m_user.config, "Systems", "DefVideoDec");	count = gf_modules_get_count(gpac->m_user.modules);	select = 0;	to_sel = 0;	for (i=0; i<count; i++) {		ifce = (GF_BaseDecoder *) gf_modules_load_interface(gpac->m_user.modules, i, GF_MEDIA_DECODER_INTERFACE);		if (!ifce) continue;		if (ifce->CanHandleStream(ifce, GF_STREAM_VISUAL, 0, NULL, 0, 0)) {			if (sOpt && !stricmp(ifce->module_name, sOpt)) select = to_sel;			m_Video.AddString(ifce->module_name);			to_sel++;		}		gf_modules_close_interface((GF_BaseInterface *)ifce);	}	m_Video.SetCurSel(select);	return TRUE;  }void OptDecoder::SaveOptions(){	WinGPAC *gpac = GetApp();	char str[100];	m_Audio.GetWindowText(str, 100);	gf_cfg_set_key(gpac->m_user.config, "Systems", "DefAudioDec", str);	m_Video.GetWindowText(str, 100);	gf_cfg_set_key(gpac->m_user.config, "Systems", "DefVideoDec", str);}COptRender::COptRender(CWnd* pParent /*=NULL*/)	: CDialog(COptRender::IDD, pParent){	//{{AFX_DATA_INIT(COptRender)	//}}AFX_DATA_INIT}void COptRender::DoDataExchange(CDataExchange* pDX){	CDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(COptRender)	DDX_Control(pDX, IDC_DRAW_BOUNDS, m_DrawBounds);	DDX_Control(pDX, IDC_GD_LIST, m_Graphics);	DDX_Control(pDX, IDC_USE_RENDER3D, m_Use3DRender);	DDX_Control(pDX, IDC_AA_LIST, m_AntiAlias);	DDX_Control(pDX, IDC_FORCE_SIZE, m_ForceSize);	DDX_Control(pDX, IDC_FAST_RENDER, m_FastRender);	DDX_Control(pDX, IDC_BIFS_RATE, m_BIFSRate);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COptRender, CDialog)	//{{AFX_MSG_MAP(COptRender)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// COptRender message handlers#define NUM_RATES 11static char *BIFSRates[11] = {	"5.0",	"7.5",	"10.0",	"12.5",	"15.0",	"24.0",	"25.0",	"30.0",	"50.0",	"60.0",	"100.0",};

⌨️ 快捷键说明

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