📄 options.cpp
字号:
m_WireMode.ResetContent(); m_WireMode.AddString(_T("Solid Draw")); m_WireMode.AddString(_T("Wireframe")); m_WireMode.AddString(_T("Both")); sOpt = gf_cfg_get_key(gpac->m_user.config, "Render3D", "Wireframe"); if (sOpt && !stricmp(sOpt, "WireOnly")) m_WireMode.SetCurSel(1); else if (sOpt && !stricmp(sOpt, "WireOnSolid")) m_WireMode.SetCurSel(2); else m_WireMode.SetCurSel(0); m_DrawNormals.ResetContent(); m_DrawNormals.AddString(_T("Never")); m_DrawNormals.AddString(_T("Per Face")); m_DrawNormals.AddString(_T("Per Vertex")); sOpt = gf_cfg_get_key(gpac->m_user.config, "Render3D", "DrawNormals"); if (sOpt && !stricmp(sOpt, "PerFace")) m_DrawNormals.SetCurSel(1); else if (sOpt && !stricmp(sOpt, "PerVertex")) m_DrawNormals.SetCurSel(2); else m_DrawNormals.SetCurSel(0); m_bNeedsReload = 0; return TRUE; }void COptRender3D::SaveOptions(){ COsmo4 *gpac = GetApp(); u32 sel = m_DrawNormals.GetCurSel(); gf_cfg_set_key(gpac->m_user.config, "Render3D", "DrawNormals", (sel==2) ? "PerVertex" : (sel==1) ? "PerFace" : "Never"); sel = m_WireMode.GetCurSel(); gf_cfg_set_key(gpac->m_user.config, "Render3D", "Wireframe", (sel==2) ? "WireOnSolid" : (sel==1) ? "WireOnly" : "WireNone"); gf_cfg_set_key(gpac->m_user.config, "Render3D", "BackFaceCulling", m_NoBackFace.GetCheck() ? "Off" : "On"); gf_cfg_set_key(gpac->m_user.config, "Render3D", "EmulatePOW2", m_EmulatePOW2.GetCheck() ? "yes" : "no"); m_bNeedsReload = 0; const char *opt = gf_cfg_get_key(gpac->m_user.config, "Rendering", "RendererName"); if (!opt || strstr(opt, "2D")) { if (!m_Use3DRender.GetCheck()) return; gf_cfg_set_key(gpac->m_user.config, "Rendering", "RendererName", "GPAC 3D Renderer"); m_bNeedsReload = 1; } else if (! m_Use3DRender.GetCheck()) { gf_cfg_set_key(gpac->m_user.config, "Rendering", "RendererName", "GPAC 2D Renderer"); m_bNeedsReload = 1; }}COptStream::COptStream(CWnd* pParent /*=NULL*/) : CDialog(COptStream::IDD, pParent){ //{{AFX_DATA_INIT(COptStream) //}}AFX_DATA_INIT}void COptStream::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(COptStream) DDX_Control(pDX, IDC_REBUFFER_LEN, m_RebufferLen); DDX_Control(pDX, IDC_REBUFFER, m_Rebuffer); DDX_Control(pDX, IDC_BUFFER, m_Buffer); DDX_Control(pDX, IDC_TIMEOUT, m_Timeout); DDX_Control(pDX, IDC_REORDER, m_Reorder); DDX_Control(pDX, IDC_RTSP, m_UseRTSP); DDX_Control(pDX, IDC_PORT, m_Port); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COptStream, CDialog) //{{AFX_MSG_MAP(COptStream) ON_CBN_SELCHANGE(IDC_PORT, OnSelchangePort) ON_BN_CLICKED(IDC_RTSP, OnRtsp) ON_BN_CLICKED(IDC_REBUFFER, OnRebuffer) ON_EN_UPDATE(IDC_REBUFFER_LEN, OnUpdateRebufferLen) ON_EN_UPDATE(IDC_BUFFER, OnUpdateBuffer) //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// COptStream message handlersBOOL COptStream::OnInitDialog() { CDialog::OnInitDialog(); COsmo4 *gpac = GetApp(); TCHAR wTmp[500]; const char *sOpt; while (m_Port.GetCount()) m_Port.DeleteString(0); m_Port.AddString(_T("554 (RTSP standard)")); m_Port.AddString(_T("7070 (RTSP ext)")); m_Port.AddString(_T("80 (RTSP / HTTP tunnel)")); m_Port.AddString(_T("8080 (RTSP / HTTP tunnel)")); sOpt = gf_cfg_get_key(gpac->m_user.config, "Streaming", "DefaultPort"); u32 port = 554; Bool force_rtsp = 0;; if (sOpt) port = atoi(sOpt); switch (port) { case 8080: m_Port.SetCurSel(3); force_rtsp = 1; break; case 80: m_Port.SetCurSel(2); force_rtsp = 1; break; case 7070: m_Port.SetCurSel(1); break; default: m_Port.SetCurSel(0); break; } Bool use_rtsp = 0; sOpt = gf_cfg_get_key(gpac->m_user.config, "Streaming", "RTPoverRTSP"); if (sOpt && !stricmp(sOpt, "yes")) use_rtsp = 1; if (force_rtsp) { m_UseRTSP.SetCheck(1); m_UseRTSP.EnableWindow(0); m_Reorder.SetCheck(0); m_Reorder.EnableWindow(0); } else { m_UseRTSP.SetCheck(use_rtsp); m_UseRTSP.EnableWindow(1); m_Reorder.EnableWindow(1); sOpt = gf_cfg_get_key(gpac->m_user.config, "Streaming", "ReorderSize"); if (sOpt && !stricmp(sOpt, "0")) { m_Reorder.SetCheck(0); } else { m_Reorder.SetCheck(1); } } sOpt = gf_cfg_get_key(gpac->m_user.config, "Streaming", "RTSPTimeout"); if (sOpt) { CE_CharToWide((char *) sOpt, wTmp); m_Timeout.SetWindowText(wTmp); } else { m_Timeout.SetWindowText(_T("30000")); } sOpt = gf_cfg_get_key(gpac->m_user.config, "Network", "BufferLength"); if (sOpt) { CE_CharToWide((char *) sOpt, wTmp); m_Buffer.SetWindowText(wTmp); } else { m_Buffer.SetWindowText(_T("3000")); } sOpt = gf_cfg_get_key(gpac->m_user.config, "Network", "RebufferLength"); u32 buf_len = 0; if (sOpt) buf_len = atoi(sOpt); if (buf_len) { CE_CharToWide((char *) sOpt, wTmp); m_RebufferLen.SetWindowText(wTmp); m_Rebuffer.SetCheck(1); m_RebufferLen.EnableWindow(1); } else { m_RebufferLen.SetWindowText(_T("0")); m_Rebuffer.SetCheck(0); m_RebufferLen.EnableWindow(0); } return TRUE; }void COptStream::OnSelchangePort() { s32 sel = m_Port.GetCurSel(); switch (sel) { case 3: case 2: m_UseRTSP.SetCheck(1); m_UseRTSP.EnableWindow(0); m_Reorder.SetCheck(0); m_Reorder.EnableWindow(0); break; case 1: default: m_UseRTSP.SetCheck(0); m_UseRTSP.EnableWindow(1); m_Reorder.SetCheck(1); m_Reorder.EnableWindow(1); break; }}void COptStream::OnRtsp() { if (m_UseRTSP.GetCheck()) { m_Reorder.SetCheck(0); m_Reorder.EnableWindow(0); } else { m_Reorder.SetCheck(1); m_Reorder.EnableWindow(1); } }void COptStream::CheckRebuffer(){ TCHAR wstr[50]; char str[50]; s32 buf, rebuf; m_Buffer.GetWindowText(wstr, 50); CE_WideToChar(wstr, str); buf = atoi(str); m_RebufferLen.GetWindowText(wstr, 50); CE_WideToChar(wstr, str); rebuf = atoi(str); if (rebuf*2 > buf) { rebuf = buf/2; wsprintf(wstr, _T("%d"), rebuf); m_RebufferLen.SetWindowText(wstr); }}void COptStream::OnRebuffer() { if (!m_Rebuffer.GetCheck()) { m_RebufferLen.EnableWindow(0); } else { m_RebufferLen.EnableWindow(1); CheckRebuffer(); }}void COptStream::OnUpdateRebufferLen() { CheckRebuffer();}void COptStream::OnUpdateBuffer() { CheckRebuffer(); }void COptStream::SaveOptions(){ COsmo4 *gpac = GetApp(); Bool force_rtsp = 0; s32 sel = m_Port.GetCurSel(); switch (sel) { case 3: gf_cfg_set_key(gpac->m_user.config, "Streaming", "DefaultPort", "8080"); force_rtsp = 1; break; case 2: gf_cfg_set_key(gpac->m_user.config, "Streaming", "DefaultPort", "80"); force_rtsp = 1; break; case 1: gf_cfg_set_key(gpac->m_user.config, "Streaming", "DefaultPort", "7070"); break; default: gf_cfg_set_key(gpac->m_user.config, "Streaming", "DefaultPort", "554"); break; } if (force_rtsp) { gf_cfg_set_key(gpac->m_user.config, "Streaming", "RTPoverRTSP", "yes"); } else { gf_cfg_set_key(gpac->m_user.config, "Streaming", "RTPoverRTSP", m_UseRTSP.GetCheck() ? "yes" : "no"); if (!m_UseRTSP.GetCheck()) gf_cfg_set_key(gpac->m_user.config, "Streaming", "ReorderSize", m_Reorder.GetCheck() ? "30" : "0"); } TCHAR wstr[50]; char str[50]; m_Timeout.GetWindowText(wstr, 50); CE_WideToChar(wstr, str); gf_cfg_set_key(gpac->m_user.config, "Streaming", "RTSPTimeout", str); m_Buffer.GetWindowText(wstr, 50); CE_WideToChar(wstr, str); gf_cfg_set_key(gpac->m_user.config, "Network", "BufferLength", str); if (m_Rebuffer.GetCheck()) { m_RebufferLen.GetWindowText(wstr, 50); CE_WideToChar(wstr, str); gf_cfg_set_key(gpac->m_user.config, "Network", "RebufferLength", str); } else { gf_cfg_set_key(gpac->m_user.config, "Network", "RebufferLength", "0"); }}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(); COsmo4 *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); u32 i=0; while (GF_ISO639_Lang[i]) { TCHAR szTmp[100]; /*only use common languages (having both 2- and 3-char code names)*/ if (GF_ISO639_Lang[i+2][0]) { CE_CharToWide( (char *)GF_ISO639_Lang[i], szTmp); m_Lang.AddString(szTmp); 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(_T("Single Thread")); m_Threading.AddString(_T("Mutli Thread")); if (sOpt && !stricmp(sOpt, "Multi")) select = 1; m_Threading.AddString(_T("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(){ COsmo4 *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")); /*reset duration flag*/ gpac->m_duration = (u32) -1; 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");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -