📄 options.cpp
字号:
if (!ifce) continue; if (sOpt && !stricmp(((GF_BaseInterface *)ifce)->module_name, sOpt)) select = to_sel; CE_CharToWide((char *) ifce->module_name, wTmp); m_Fonts.AddString(wTmp); gf_modules_close_interface(ifce); to_sel++; } m_Fonts.SetCurSel(select); sOpt = gf_cfg_get_key(gpac->m_user.config, "FontEngine", "FontDirectory"); CE_CharToWide((char *)sOpt, wTmp); if (sOpt) m_BrowseFont.SetWindowText(wTmp); sOpt = gf_cfg_get_key(gpac->m_user.config, "FontEngine", "TextureTextMode"); m_UseTexture.SetCheck( (!sOpt || stricmp(sOpt, "Never")) ? 1 : 0); return TRUE; }void COptFont::OnBrowseFont() {}void COptFont::SaveOptions(){ COsmo4 *gpac = GetApp(); char str[MAX_PATH]; TCHAR wstr[MAX_PATH]; m_Fonts.GetWindowText(wstr, 50); CE_WideToChar(wstr, str); gf_cfg_set_key(gpac->m_user.config, "FontEngine", "DriverName", str); m_BrowseFont.GetWindowText(wstr, 50); CE_WideToChar(wstr, str); gf_cfg_set_key(gpac->m_user.config, "FontEngine", "FontDirectory", str); gf_cfg_set_key(gpac->m_user.config, "FontEngine", "TextureTextMode", m_UseTexture.GetCheck() ? "Always" : "Never");}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_NO_BACKLIGHT, m_NoBacklight); DDX_Control(pDX, IDC_FILL_SCREEN, m_Fill); DDX_Control(pDX, IDC_LOOP, m_Loop); DDX_Control(pDX, IDC_ENABLE_LOGS, m_Logs); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COptGen, CDialog) //{{AFX_MSG_MAP(COptGen) ON_BN_CLICKED(IDC_FILEASSOC, OnFileassoc) //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// COptGen message handlersBOOL COptGen::OnInitDialog() { CDialog::OnInitDialog(); COsmo4 *gpac = GetApp(); const char *sOpt; sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "Loop"); if (sOpt && !stricmp(sOpt, "yes")) { m_Loop.SetCheck(1); } else { m_Loop.SetCheck(0); } sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "FillScreen"); m_Fill.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "DisableBackLight"); m_NoBacklight.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "LogLevel"); m_Logs.SetCheck((sOpt && !stricmp(sOpt, "debug")) ? 1 : 0); return TRUE; }void COptGen::SaveOptions(){ COsmo4 *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_fit_screen = m_Fill.GetCheck(); gf_cfg_set_key(gpac->m_user.config, "General", "FillScreen", gpac->m_fit_screen ? "yes" : "no"); gpac->m_disable_backlight = m_NoBacklight.GetCheck(); gf_cfg_set_key(gpac->m_user.config, "General", "DisableBackLight", gpac->m_disable_backlight ? "yes" : "no"); gpac->EnableLogs(m_Logs.GetCheck() ? 1 : 0);}void COptGen::OnFileassoc() { HKEY hSection; TCHAR szDir[MAX_PATH]; char szTemp[MAX_PATH]; TCHAR cmd[MAX_PATH]; DWORD ioSize = MAX_PATH; DWORD dwDisp; RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Osmo4"), 0, KEY_READ, &hSection); wcscpy(szDir, AfxGetApp()->m_pszHelpFilePath); while (szDir[strlen((char *) szDir)-1] != (TCHAR) '\\') szDir[strlen((char *) szDir)-1] = 0; if (!hSection) RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Osmo4"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hSection, &dwDisp); CE_WideToChar(szDir, szTemp); /*overwrite install dir with current path*/ RegSetValueEx(hSection, _T("Install_Dir"), 0, REG_SZ, (const unsigned char *) szTemp, strlen(szTemp)+1); RegCloseKey(hSection); /*overwrite .mp4 file associations */ RegCreateKeyEx(HKEY_CLASSES_ROOT, _T("mp4file\\DefaultIcon"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hSection, &dwDisp); wcscpy(cmd, szDir); wcscat(cmd, _T("Osmo4.ico") ); CE_WideToChar(cmd, szTemp); RegSetValueEx(hSection, _T(""), 0, REG_SZ, (const unsigned char *) szTemp, strlen((const char *) szTemp)+1); RegCloseKey(hSection); RegCreateKeyEx(HKEY_CLASSES_ROOT, _T("mp4file\\Shell\\open\\command"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hSection, &dwDisp); wcscpy(cmd, szDir); wcscat(cmd, _T("Osmo4.exe \"%L\"") ); CE_WideToChar(cmd, szTemp); RegSetValueEx(hSection, _T(""), 0, REG_SZ, (const unsigned char *) szTemp, strlen(szTemp)+1); RegCloseKey(hSection); RegCreateKeyEx(HKEY_CLASSES_ROOT, _T(".mp4"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hSection, &dwDisp); RegSetValueEx(hSection, _T(""), 0, REG_SZ, (const unsigned char *) "mp4file", strlen("mp4file")+1); RegCloseKey(hSection);}COptHTTP::COptHTTP(CWnd* pParent /*=NULL*/) : CDialog(COptHTTP::IDD, pParent){ //{{AFX_DATA_INIT(COptHTTP) //}}AFX_DATA_INIT}void COptHTTP::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(COptHTTP) DDX_Control(pDX, IDC_RESTART_CACHE, m_RestartFile); DDX_Control(pDX, IDC_CLEAN_CACHE, m_CleanCache); DDX_Control(pDX, IDC_BROWSE_CACHE, m_CacheDir); DDX_Control(pDX, IDC_SAX_PROGRESSIVE, m_Progressive); DDX_Control(pDX, IDC_SAX_DURATION, m_SaxDuration); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COptHTTP, CDialog) //{{AFX_MSG_MAP(COptHTTP) ON_BN_CLICKED(IDC_BROWSE_CACHE, OnBrowseCache) ON_BN_CLICKED(IDC_SAX_PROGRESSIVE, OnProgressive) //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// COptHTTP message handlersvoid COptHTTP::OnBrowseCache() {}BOOL COptHTTP::OnInitDialog() { CDialog::OnInitDialog(); COsmo4 *gpac = GetApp(); TCHAR wTmp[500]; const char *sOpt; sOpt = gf_cfg_get_key(gpac->m_user.config, "Downloader", "CleanCache"); m_CleanCache.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(gpac->m_user.config, "Downloader", "RestartFiles"); m_RestartFile.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(gpac->m_user.config, "SAXLoader", "Progressive"); m_Progressive.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(gpac->m_user.config, "SAXLoader", "MaxDuration"); if (sOpt) { CE_CharToWide((char *) sOpt, wTmp); m_SaxDuration.SetWindowText(wTmp); } else { m_SaxDuration.SetWindowText( _T("30") ); } sOpt = gf_cfg_get_key(gpac->m_user.config, "General", "CacheDirectory"); CE_CharToWide((char *) sOpt, wTmp); if (sOpt) m_CacheDir.SetWindowText(wTmp); OnProgressive(); return TRUE; }void COptHTTP::OnProgressive(){ m_SaxDuration.EnableWindow( m_Progressive.GetCheck() ? TRUE : FALSE );}void COptHTTP::SaveOptions(){ TCHAR wTmp[500]; char szCacheDir[500]; COsmo4 *gpac = GetApp(); gf_cfg_set_key(gpac->m_user.config, "Downloader", "CleanCache", m_CleanCache.GetCheck() ? "yes" : "no"); gf_cfg_set_key(gpac->m_user.config, "Downloader", "RestartFiles", m_RestartFile.GetCheck() ? "yes" : "no"); gf_cfg_set_key(gpac->m_user.config, "SAXLoader", "Progressive", m_Progressive.GetCheck() ? "yes" : "no"); m_SaxDuration.GetWindowText(wTmp, MAX_PATH); CE_WideToChar(wTmp, szCacheDir); gf_cfg_set_key(gpac->m_user.config, "SAXLoader", "MaxDuration", szCacheDir); m_CacheDir.GetWindowText(wTmp, MAX_PATH); CE_WideToChar(wTmp, szCacheDir); gf_cfg_set_key(gpac->m_user.config, "General", "CacheDirectory", szCacheDir);}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_AA_LIST, m_Antialias); DDX_Control(pDX, IDC_FORCE_SIZE, m_ForceSize); DDX_Control(pDX, IDC_FAST_RENDER, m_FastRender); DDX_Control(pDX, IDC_ZOOM_SCALABLE, m_Scalable); DDX_Control(pDX, IDC_DIRECTRENDER, m_DirectRender); 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",};BOOL COptRender::OnInitDialog() { CDialog::OnInitDialog(); COsmo4 *gpac = GetApp(); const char *sOpt; sOpt = gf_cfg_get_key(gpac->m_user.config, "Render2D", "DirectRender"); if (sOpt && !stricmp(sOpt, "yes")) { m_DirectRender.SetCheck(1); } else { m_DirectRender.SetCheck(0); } sOpt = gf_cfg_get_key(gpac->m_user.config, "Render2D", "ScalableZoom"); if (sOpt && !stricmp(sOpt, "no")) { m_Scalable.SetCheck(0); } else { m_Scalable.SetCheck(1); } sOpt = gf_cfg_get_key(gpac->m_user.config, "Rendering", "ForceSceneSize"); if (sOpt && !stricmp(sOpt, "yes")) { m_ForceSize.SetCheck(1); } else { m_ForceSize.SetCheck(0); } sOpt = gf_cfg_get_key(gpac->m_user.config, "Rendering", "FrameRate"); if (!sOpt) sOpt = "30.0"; s32 select = 0; while (m_BIFSRate.GetCount()) m_BIFSRate.DeleteString(0); for (s32 i = 0; i<NUM_RATES; i++) { TCHAR szText[100]; CE_CharToWide(BIFSRates[i], szText); m_BIFSRate.AddString(szText); if (sOpt && !stricmp(sOpt, BIFSRates[i]) ) select = i; } m_BIFSRate.SetCurSel(select); sOpt = gf_cfg_get_key(gpac->m_user.config, "Rendering", "FastRender"); m_FastRender.SetCheck((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(gpac->m_user.config, "Rendering", "AntiAlias"); while (m_Antialias.GetCount()) m_Antialias.DeleteString(0); m_Antialias.AddString(_T("None")); m_Antialias.AddString(_T("Text only")); m_Antialias.AddString(_T("Complete")); select = 2; if (sOpt && !stricmp(sOpt, "Text")) select = 1; else if (sOpt && !stricmp(sOpt, "None")) select = 0; m_Antialias.SetCurSel(select); return TRUE; }void COptRender::SaveOptions(){ COsmo4 *gpac = GetApp(); gf_cfg_set_key(gpac->m_user.config, "Render2D", "DirectRender", m_DirectRender.GetCheck() ? "yes" : "no"); gf_cfg_set_key(gpac->m_user.config, "Render2D", "ScalableZoom", m_Scalable.GetCheck() ? "yes" : "no"); gf_cfg_set_key(gpac->m_user.config, "Rendering", "FastRender", m_FastRender.GetCheck() ? "yes" : "no"); gf_cfg_set_key(gpac->m_user.config, "Rendering", "ForceSceneSize", m_ForceSize.GetCheck() ? "yes" : "no"); s32 sel = m_BIFSRate.GetCurSel(); gf_cfg_set_key(gpac->m_user.config, "Rendering", "FrameRate", BIFSRates[sel]); sel = m_Antialias.GetCurSel(); gf_cfg_set_key(gpac->m_user.config, "Rendering", "AntiAlias", (sel==0) ? "None" : ( (sel==1) ? "Text" : "All"));}COptRender3D::COptRender3D(CWnd* pParent /*=NULL*/) : CDialog(COptRender3D::IDD, pParent){ //{{AFX_DATA_INIT(COptRender) //}}AFX_DATA_INIT}void COptRender3D::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(COptRender) DDX_Control(pDX, IDC_WIRE_MODE, m_WireMode); DDX_Control(pDX, IDC_DRAW_NORMALS, m_DrawNormals); DDX_Control(pDX, IDC_USE_3D_REN, m_Use3DRender); DDX_Control(pDX, IDC_NO_BACKCULL, m_NoBackFace); DDX_Control(pDX, IDC_EMULATE_POW2, m_EmulatePOW2); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COptRender3D, CDialog) //{{AFX_MSG_MAP(COptRender3D) //}}AFX_MSG_MAPEND_MESSAGE_MAP()BOOL COptRender3D::OnInitDialog() { CDialog::OnInitDialog(); COsmo4 *gpac = GetApp(); const char *sOpt; sOpt = gf_cfg_get_key(gpac->m_user.config, "Rendering", "RendererName"); m_Use3DRender.SetCheck( (sOpt && strstr(sOpt, "3D")) ? 1 : 0); sOpt = gf_cfg_get_key(gpac->m_user.config, "Render3D", "BackFaceCulling"); m_NoBackFace.SetCheck( (sOpt && !stricmp(sOpt, "Off")) ? 1 : 0); sOpt = gf_cfg_get_key(gpac->m_user.config, "Render3D", "EmulatePOW2"); m_EmulatePOW2.SetCheck( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -