diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/libvp6/config_dlg.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/libvp6/config_dlg.cpp')
-rw-r--r-- | Src/libvp6/config_dlg.cpp | 846 |
1 files changed, 846 insertions, 0 deletions
diff --git a/Src/libvp6/config_dlg.cpp b/Src/libvp6/config_dlg.cpp new file mode 100644 index 00000000..cd3c8712 --- /dev/null +++ b/Src/libvp6/config_dlg.cpp @@ -0,0 +1,846 @@ +/**************************************************************************** +* +* Module Title : vfw_config_dlg.c +* +* Description : Configuration Parameters dialog module. +* +****************************************************************************/ + +/**************************************************************************** +* Header Files +****************************************************************************/ +#include <windows.h> +#include <stdio.h> +#include <commctrl.h> +#include "type_aliases.h" +#include "vp60_comp_interface.h" +#include "resource.h" // Must be the version resident in the VCAP dll directory!!! +#include "vpvfwver.h" +#include "vp6vfw.h" +#include "vp60_comp_interface.h" +#include <commdlg.h> +//#include <cderr.h> +extern HINSTANCE hInstance; + +void BuildVersionInfo(char *modname,char *VersionInfo,int *vers) +{ + + // ************************************************************ + // The next bit of code reads version information from resource + VersionInfo[0]=0; + char szFullPath[256]; + DWORD dwVerHnd; + DWORD dwVerInfoSize; + GetModuleFileName(/*GetModuleHandle(modname)*/hInstance, szFullPath, sizeof(szFullPath)); + dwVerInfoSize = GetFileVersionInfoSize(szFullPath, &dwVerHnd); + + if (dwVerInfoSize) + { + // If we were able to get the information, process it: + HANDLE hMem; + LPVOID lpvMem; + + hMem = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize); + lpvMem = GlobalLock(hMem); + GetFileVersionInfo(szFullPath, dwVerHnd, dwVerInfoSize, lpvMem); + + UINT cchVer = 0; + LPSTR lszVer = NULL; + strcat(VersionInfo, "\r"); + VerQueryValue(lpvMem,TEXT("\\StringFileInfo\\040904E4\\FileDescription"), (void **) &lszVer, &cchVer); + strcat(VersionInfo,lszVer); + strcat(VersionInfo, "\r\r"); + VerQueryValue(lpvMem,TEXT("\\StringFileInfo\\040904E4\\LegalCopyright"), (void **) &lszVer, &cchVer); + strcat(VersionInfo,lszVer); + strcat(VersionInfo, "\r"); + strcat(VersionInfo, " Version "); + VerQueryValue(lpvMem,TEXT("\\StringFileInfo\\040904E4\\ProductVersion"), (void **) &lszVer, &cchVer); + strcat(VersionInfo,lszVer); + + GlobalUnlock(hMem); + GlobalFree(hMem); + } +} + +BOOL FAR PASCAL Advanced_ParamsDlgProc( HWND hWndDlg,UINT Message,WPARAM wParam,LPARAM lParam ); +BOOL FAR PASCAL General_ParamsDlgProc( HWND hWndDlg,UINT Message,WPARAM wParam,LPARAM lParam ); +BOOL FAR PASCAL Settings_ParamsDlgProc( HWND hWndDlg,UINT Message,WPARAM wParam,LPARAM lParam ); +BOOL FAR PASCAL Main_ParamsDlgProc( HWND hWndDlg, + UINT Message, + WPARAM wParam, + LPARAM lParam) +{ + COMP_CONFIG_VP6 *compConfig = (COMP_CONFIG_VP6 *)GetWindowLong(hWndDlg,GWL_USERDATA); + + switch(Message) + { + case WM_NOTIFY: + { + switch(wParam) + { + case IDC_TAB1: + { + NMHDR *msg = (NMHDR *) lParam; + + switch(msg->code) + { + case TCN_SELCHANGE: + { + HWND hwndTab = GetDlgItem(hWndDlg, IDC_TAB1); + int whichTab = TabCtrl_GetCurSel(hwndTab); + switch(whichTab) + { + case 2: + { + if(compConfig->PlaceHolder) + DestroyWindow((HWND) compConfig->PlaceHolder); + compConfig->PlaceHolder = (INT32) CreateDialogParam(hInstance,"SETTINGS",hWndDlg,Settings_ParamsDlgProc ,(LPARAM) compConfig); + ShowWindow((HWND) compConfig->PlaceHolder,SW_SHOW); + return TRUE; + } + case 0: + { + if(compConfig->PlaceHolder) + DestroyWindow((HWND) compConfig->PlaceHolder); + compConfig->PlaceHolder = (INT32) CreateDialogParam(hInstance,"GENERAL",hWndDlg,General_ParamsDlgProc ,(LPARAM) compConfig); + ShowWindow((HWND) compConfig->PlaceHolder,SW_SHOW); + return TRUE; + } + case 1: + { + + if(compConfig->PlaceHolder) + DestroyWindow((HWND) compConfig->PlaceHolder); + compConfig->PlaceHolder = (INT32) CreateDialogParam(hInstance,"ADVANCED",hWndDlg,Advanced_ParamsDlgProc ,(LPARAM) compConfig); + ShowWindow((HWND) compConfig->PlaceHolder,SW_SHOW); + return TRUE; + } + } + + break; + } + } + break; + } + } + return (FALSE); + } + case WM_CTLCOLORSTATIC: + { + HDC hdc = (HDC) wParam; + HWND hwndStatic = (HWND) lParam; + + if ( hwndStatic == GetDlgItem ( hWndDlg, IDC_TITLE ) || + hwndStatic == GetDlgItem ( hWndDlg, IDC_FRAME ) ) + { + return (LRESULT) GetStockObject(WHITE_BRUSH); ; + } + } + break; + case WM_INITDIALOG: + { + + HWND hwndTab = GetDlgItem(hWndDlg, IDC_TAB1); + TC_ITEM tie; + + SetWindowLong(hWndDlg, GWL_USERDATA, (unsigned long)lParam); + compConfig = (COMP_CONFIG_VP6 *) lParam; + + tie.mask = TCIF_TEXT | TCIF_STATE | TCIF_IMAGE; + tie.iImage = -1; + + tie.pszText = "General"; + if (TabCtrl_InsertItem(hwndTab, 0, &tie) == -1) + return NULL; + + tie.pszText = "Advanced"; + if (TabCtrl_InsertItem(hwndTab, 1, &tie) == -1) + return NULL; + + tie.pszText = "Settings"; + if (TabCtrl_InsertItem(hwndTab, 2, &tie) == -1) + return NULL; + + char VersionString[2048]={0}; + int vers; + BuildVersionInfo("VP6VFW.DLL",VersionString,&vers); + SetDlgItemText( hWndDlg, IDC_TITLE, VersionString); + + + compConfig->PlaceHolder = (INT32) CreateDialogParam(hInstance,"GENERAL",hWndDlg,General_ParamsDlgProc ,(LPARAM) compConfig); + ShowWindow((HWND) compConfig->PlaceHolder,SW_SHOW); + + + return (TRUE); + } + + + case WM_CLOSE: /* Close the dialog. */ + /* Closing the Dialog behaves the same as Cancel */ + PostMessage(hWndDlg, WM_COMMAND, IDCANCEL, 0L); + return (TRUE); + + case WM_COMMAND: /* A control has been activated. */ + switch(LOWORD(wParam)) + { + /* OK leaves the current settings in force */ + case IDOK: + EndDialog(hWndDlg, IDOK); + break; + + case IDCANCEL: + EndDialog(hWndDlg, IDCANCEL); + break; + + default: + return (FALSE); + + } + return (FALSE); + + default: + return (FALSE); + + } /* End of Main Dialog case statement. */ + + return FALSE; +} /* End of WndProc */ + + + +BOOL FAR PASCAL General_ParamsDlgProc( HWND hWndDlg, + UINT Message, + WPARAM wParam, + LPARAM lParam) +{ + COMP_CONFIG_VP6 *compConfig = (COMP_CONFIG_VP6 *)GetWindowLong(hWndDlg,GWL_USERDATA); + + switch(Message) + { + case WM_SETFOCUS: + Message+=0; + break; + case WM_INITDIALOG: + { + SetWindowLong(hWndDlg, GWL_USERDATA, (unsigned long)lParam); + compConfig = (COMP_CONFIG_VP6 *) lParam; + + // fill mode box + SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Realtime / Live Encoding"); + SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Good Quality Fast Encoding"); + SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "One Pass - Best Quality"); + SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Two Pass - First Pass" ); + SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Two Pass - Second Pass - Good Quality"); + SendDlgItemMessage(hWndDlg, IDD_MODE, CB_ADDSTRING, 0, (LPARAM) (LPCSTR) "Two Pass - Second Pass - Best Quality"); + + // set mode + SendDlgItemMessage(hWndDlg, IDD_MODE, CB_SETCURSEL, (LPARAM) compConfig->Mode,0); + + // set end usage + switch(compConfig->EndUsage) + { + case 0: + CheckDlgButton( hWndDlg, IDC_ENDUSAGE1, 1); + CheckDlgButton( hWndDlg, IDC_ENDUSAGE2, 0); + break; + default: + CheckDlgButton( hWndDlg, IDC_ENDUSAGE2, 1); + CheckDlgButton( hWndDlg, IDC_ENDUSAGE1, 0); + break; + } + + // set material + switch(compConfig->Interlaced) + { + case 1: + CheckDlgButton( hWndDlg, IDC_MATERIAL1, 1); + CheckDlgButton( hWndDlg, IDC_MATERIAL2, 0); + break; + default: + CheckDlgButton( hWndDlg, IDC_MATERIAL2, 1); + CheckDlgButton( hWndDlg, IDC_MATERIAL1, 0); + break; + } + + // setup noise reduction slider + SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_SETRANGE, (WPARAM) TRUE, (LPARAM) MAKELONG(0, 6)); + + // set noise reduction + SetDlgItemInt( hWndDlg, IDC_NOISEREDUCTION, compConfig->NoiseSensitivity, FALSE ); + SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_SETPOS, (WPARAM) TRUE,(LPARAM) compConfig->NoiseSensitivity); + SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_SETTICFREQ, (WPARAM) 1,(LPARAM) 1); + + // set auto keyframe + CheckDlgButton( hWndDlg, IDC_AUTOKEYFRAME_CHECK, (compConfig->AutoKeyFrameEnabled) ? 1 : 0 ); + + // set max frames btw keys + SetDlgItemInt( hWndDlg, IDC_MAXFRAMESBTWKEYS, compConfig->ForceKeyFrameEvery, FALSE ); + + return (TRUE); + } + case WM_HSCROLL: + { + // change edit box to match slider + SetDlgItemInt( hWndDlg, IDC_NOISEREDUCTION, SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_GETPOS, 0,0), FALSE ); + return (TRUE); + } + + case WM_DESTROY: //case WM_CLOSE: /* Close the dialog. */ + + // save everything to our structure + compConfig->AutoKeyFrameEnabled = SendDlgItemMessage(hWndDlg, IDC_AUTOKEYFRAME_CHECK, BM_GETCHECK, 0, 0); + compConfig->EndUsage = (END_USAGE) SendDlgItemMessage(hWndDlg, IDC_ENDUSAGE2, BM_GETCHECK, 0, 0); + compConfig->Interlaced = SendDlgItemMessage(hWndDlg, IDC_MATERIAL1, BM_GETCHECK, 0, 0); + compConfig->ForceKeyFrameEvery = GetDlgItemInt(hWndDlg, IDC_MAXFRAMESBTWKEYS, NULL, FALSE ); + compConfig->Mode = (MODE) SendDlgItemMessage(hWndDlg, IDD_MODE, CB_GETCURSEL, 0, 0); + compConfig->NoiseSensitivity = GetDlgItemInt(hWndDlg, IDC_NOISEREDUCTION, NULL, FALSE ); + return (TRUE); + + case WM_COMMAND: /* A control has been activated. */ + { + switch(HIWORD(wParam)) + { + case EN_KILLFOCUS: + { + // error checking + int value = GetDlgItemInt(hWndDlg, LOWORD(wParam), NULL, FALSE ); + + switch(LOWORD(wParam)) + { + case IDC_NOISEREDUCTION: + { + if(value < 0) value = 0; + if(value > 6) value = 6; + + SendDlgItemMessage(hWndDlg, IDC_NOISEREDUCTION_SLIDER, TBM_SETPOS, (WPARAM) TRUE, value ); + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + break; + case IDC_MAXFRAMESBTWKEYS: + { + if(value < 0) value = 0; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + default: + return (FALSE); + } + + } + } + return (FALSE); + } + + + default: + return (FALSE); + + } /* End of Main Dialog case statement. */ + + return FALSE; +} /* End of WndProc */ + + + + +BOOL FAR PASCAL Advanced_ParamsDlgProc( HWND hWndDlg, + UINT Message, + WPARAM wParam, + LPARAM lParam) +{ + COMP_CONFIG_VP6 *compConfig = (COMP_CONFIG_VP6 *)GetWindowLong(hWndDlg,GWL_USERDATA); + switch(Message) + { + case WM_INITDIALOG: + { + + SetWindowLong(hWndDlg, GWL_USERDATA, (unsigned long)lParam); + compConfig = (COMP_CONFIG_VP6 *) lParam; + + if ( compConfig->EndUsage == 1) + { + EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_MAXBITRATE), 0); + EnableWindow(GetDlgItem(hWndDlg, STREAMING_PARAMETERS), 0); + EnableWindow(GetDlgItem(hWndDlg, PEAK_BITRATE), 0); + EnableWindow(GetDlgItem(hWndDlg, PREBUFFER), 0); + EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_PREBUFFER), 0); + EnableWindow(GetDlgItem(hWndDlg, OPTIMAL_BUFFER), 0); + EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_OPTIMAL), 0); + EnableWindow(GetDlgItem(hWndDlg, MAX_BUFFER), 0); + EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_MAXBUFFER), 0); + } + if(compConfig->Mode < 4) + { + EnableWindow(GetDlgItem(hWndDlg, TWO_PASS_SECTION_DATARATE), 0); + EnableWindow(GetDlgItem(hWndDlg, VARIABILITY), 0); + EnableWindow(GetDlgItem(hWndDlg, IDC_DATARATEVARIABILITY), 0); + EnableWindow(GetDlgItem(hWndDlg, MIN_SECTION), 0); + EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_MINBANDWIDTH), 0); + EnableWindow(GetDlgItem(hWndDlg, MAX_SECTION), 0); + EnableWindow(GetDlgItem(hWndDlg, IDC_EDIT_MAXBANDWIDTH), 0); + } + + // set buffer stats + SetDlgItemInt( hWndDlg, IDC_EDIT_PREBUFFER, compConfig->StartingBufferLevel, FALSE ); + SetDlgItemInt( hWndDlg, IDC_EDIT_OPTIMAL, compConfig->OptimalBufferLevel, FALSE ); + SetDlgItemInt( hWndDlg, IDC_EDIT_MAXBUFFER, compConfig->MaximumBufferSize, FALSE ); + + // setup vbr slider + SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_SETRANGE, (WPARAM) TRUE, (LPARAM) MAKELONG(0, 100)); + SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_SETTICFREQ, (WPARAM) 10,(LPARAM) 10); + + // set vbr settings + SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_SETPOS, (WPARAM) TRUE,(LPARAM) compConfig->TwoPassVBRBias); + SetDlgItemInt( hWndDlg, IDC_DATARATEVARIABILITY, compConfig->TwoPassVBRBias, FALSE ); + SetDlgItemInt( hWndDlg, IDC_EDIT_MINBANDWIDTH, compConfig->TwoPassVBRMinSection, FALSE ); + SetDlgItemInt( hWndDlg, IDC_EDIT_MAXBANDWIDTH, compConfig->TwoPassVBRMaxSection, FALSE ); + SetDlgItemInt( hWndDlg, IDC_EDIT_MAXBITRATE, compConfig->MaxAllowedDatarate, FALSE ); + + + + // datarate control options + SetDlgItemInt( hWndDlg, IDC_EDIT_UNDERSHOOT, compConfig->UnderShootPct, FALSE ); + + // set adjust quantizer control + CheckDlgButton( hWndDlg, IDC_ADJUSTQ_CHECK, (compConfig->FixedQ) ? 0 : 1 ); + SetDlgItemInt( hWndDlg, IDC_EDIT_MINQUALITY, compConfig->BestAllowedQ, FALSE ); + SetDlgItemInt( hWndDlg, IDC_EDIT_MAXQUALITY, compConfig->Quality, FALSE ); + + // allowing dropped frames + CheckDlgButton( hWndDlg, IDC_ALLOW_DROPPED_FRAMES_CHECK, (compConfig->AllowDF) ? 1 : 0 ); + SetDlgItemInt( hWndDlg, IDC_EDIT_TEMPORAL_DOWN, compConfig->DropFramesWaterMark, FALSE ); + + // allowing spatial resampling + CheckDlgButton( hWndDlg, IDC_SCALE_CHECK, (compConfig->AllowSpatialResampling) ? 1 : 0 ); + SetDlgItemInt( hWndDlg, IDC_EDIT_SPATIAL_DOWN, compConfig->ResampleDownWaterMark, FALSE ); + SetDlgItemInt( hWndDlg, IDC_EDIT_SPATIAL_UP, compConfig->ResampleUpWaterMark, FALSE ); + + + return (TRUE); + } + + + case WM_DESTROY: //case WM_CLOSE: /* Close the dialog. */ + + // save everything to our structure + compConfig->StartingBufferLevel = GetDlgItemInt(hWndDlg, IDC_EDIT_PREBUFFER, NULL, FALSE ); + compConfig->OptimalBufferLevel = GetDlgItemInt(hWndDlg, IDC_EDIT_OPTIMAL, NULL, FALSE ); + compConfig->MaximumBufferSize = GetDlgItemInt(hWndDlg, IDC_EDIT_MAXBUFFER, NULL, FALSE ); + compConfig->TwoPassVBRBias = GetDlgItemInt(hWndDlg, IDC_DATARATEVARIABILITY, NULL, FALSE ); + compConfig->TwoPassVBRMinSection = GetDlgItemInt(hWndDlg, IDC_EDIT_MINBANDWIDTH, NULL, FALSE ); + compConfig->TwoPassVBRMaxSection = GetDlgItemInt(hWndDlg, IDC_EDIT_MAXBANDWIDTH, NULL, FALSE ); + compConfig->MaxAllowedDatarate = GetDlgItemInt(hWndDlg, IDC_EDIT_MAXBITRATE, NULL, FALSE ); + compConfig->UnderShootPct = GetDlgItemInt(hWndDlg, IDC_EDIT_UNDERSHOOT, NULL, FALSE ); + compConfig->FixedQ = !SendDlgItemMessage(hWndDlg, IDC_ADJUSTQ_CHECK, BM_GETCHECK, 0, 0); + compConfig->BestAllowedQ = GetDlgItemInt(hWndDlg, IDC_EDIT_MINQUALITY, NULL, FALSE ); + compConfig->Quality = GetDlgItemInt(hWndDlg, IDC_EDIT_MAXQUALITY, NULL, FALSE ); + compConfig->AllowDF = SendDlgItemMessage(hWndDlg, IDC_ALLOW_DROPPED_FRAMES_CHECK, BM_GETCHECK, 0, 0); + compConfig->DropFramesWaterMark = GetDlgItemInt(hWndDlg, IDC_EDIT_TEMPORAL_DOWN, NULL, FALSE ); + compConfig->AllowSpatialResampling = SendDlgItemMessage(hWndDlg, IDC_SCALE_CHECK, BM_GETCHECK, 0, 0); + compConfig->ResampleDownWaterMark = GetDlgItemInt(hWndDlg, IDC_EDIT_SPATIAL_DOWN, NULL, FALSE ); + compConfig->ResampleUpWaterMark = GetDlgItemInt(hWndDlg, IDC_EDIT_SPATIAL_UP, NULL, FALSE ); + + return (TRUE); + + case WM_HSCROLL: + { + // change edit box to match slider + SetDlgItemInt( hWndDlg, IDC_DATARATEVARIABILITY, SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_GETPOS, 0,0), FALSE ); + return (TRUE); + } + + case WM_COMMAND: /* A control has been activated. */ + { + switch(HIWORD(wParam)) + { + case EN_KILLFOCUS: + { + // error checking + int value = GetDlgItemInt(hWndDlg, LOWORD(wParam), NULL, FALSE ); + + switch(LOWORD(wParam)) + { + case IDC_DATARATEVARIABILITY: + { + if(value < 0) value = 0; + if(value > 100 ) value = 100; + SendDlgItemMessage(hWndDlg, IDC_DATARATEVARIABILITY_SLIDER, TBM_SETPOS, (WPARAM) TRUE, value ); + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + + // save everything to our structure + case IDC_EDIT_PREBUFFER: + { + if(value < 0) value = 0; + if(value > 30 ) value = 30; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + case IDC_EDIT_OPTIMAL: + { + if(value < 0) value = 0; + if(value > 30 ) value = 30; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + case IDC_EDIT_MAXBUFFER: + { + if(value < 0) value = 0; + if(value > 30 ) value = 30; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + + case IDC_EDIT_MINBANDWIDTH: + { + if(value < 0) value = 0; + if(value > 100 ) value = 100; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + case IDC_EDIT_MAXBANDWIDTH: + { + if(value < 100) value = 100; + if(value > 1000 ) value = 1000; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + case IDC_EDIT_UNDERSHOOT: + { + if(value < 50) value = 50; + if(value > 100 ) value = 100; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + + case IDC_EDIT_MINQUALITY: + { + if(value < 0) value = 0; + if(value > 63 ) value = 63; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + case IDC_EDIT_MAXQUALITY: + { + if(value < 0) value = 0; + if(value > 63 ) value = 63; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + + case IDC_EDIT_TEMPORAL_DOWN : + { + if(value < 0) value = 0; + if(value > 100 ) value = 100; + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + case IDC_EDIT_SPATIAL_DOWN : + { + if(value < 0) value = 0; + if(value > 100 ) value = 100; + + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + case IDC_EDIT_SPATIAL_UP : + { + if(value < 0) value = 0; + if(value > 100 ) value = 100; + + SetDlgItemInt( hWndDlg, LOWORD(wParam), value, FALSE ); + break; + } + + } + } + default: + return (FALSE); + } + + return (FALSE); + } + + default: + return (FALSE); + + } /* End of Main Dialog case statement. */ + + return FALSE; +} /* End of WndProc */ + + + +BOOL FAR PASCAL Settings_ParamsDlgProc( HWND hWndDlg, + UINT Message, + WPARAM wParam, + LPARAM lParam) +{ + COMP_CONFIG_VP6 *compConfig = (COMP_CONFIG_VP6 *)GetWindowLong(hWndDlg,GWL_USERDATA); + + switch(Message) + { + case WM_INITDIALOG: + { + SetWindowLong(hWndDlg, GWL_USERDATA, (unsigned long)lParam); + compConfig = (COMP_CONFIG_VP6 *) lParam; + + if(!memcmp(compConfig->SettingsFile,compConfig->RootDirectory,strlen(compConfig->RootDirectory))) + { + strcpy(compConfig->SettingsFile,compConfig->SettingsFile+strlen(compConfig->RootDirectory)); + } + if(!memcmp(compConfig->SettingsFile+strlen(compConfig->SettingsFile)-4,".vps",4)) + { + compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4]=0; + } + SetDlgItemText(hWndDlg,IDC_FIRSTPASS,compConfig->FirstPassFile); + SetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile); + + WIN32_FIND_DATA wfd; + + char FileFilter[512]; + strncpy(FileFilter,compConfig->RootDirectory,512); + strcat(FileFilter,"\\*.vps"); + HANDLE ffh = FindFirstFile(FileFilter,&wfd); + if( ffh !=INVALID_HANDLE_VALUE) + { + do + { + wfd.cFileName[strlen(wfd.cFileName)-4]=0; + SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_ADDSTRING, 0, (LPARAM) (LPCSTR) wfd.cFileName); + } + while ( FindNextFile(ffh,&wfd)); + FindClose(ffh); + } + + + return (TRUE); + } + + case WM_DESTROY: //case WM_CLOSE: /* Close the dialog. */ + + // save everything to our structure + GetDlgItemText(hWndDlg,IDC_FIRSTPASS,compConfig->FirstPassFile,512); + GetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile,512); + if(compConfig->SettingsFile[1] != ':' && compConfig->SettingsFile[1] != '\\') + { + char tmp[512]; + strncpy(tmp,compConfig->SettingsFile,512); + strncpy(compConfig->SettingsFile,compConfig->RootDirectory,512); + strcat(compConfig->SettingsFile,tmp); + } + if(compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4] != '.' ) + { + strcat(compConfig->SettingsFile,".vps"); + } + + return (TRUE); + + case WM_COMMAND: /* A control has been activated. */ + { + switch(HIWORD(wParam)) + { + case LBN_SELCHANGE : + { + int curSel =SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_GETCURSEL, 0, 0); + SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_GETTEXT, curSel, (DWORD) compConfig->SettingsFile); + SetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile); + if(compConfig->SettingsFile[1] != ':' && compConfig->SettingsFile[1] != '\\') + { + char tmp[512]; + strncpy(tmp,compConfig->SettingsFile,512); + strncpy(compConfig->SettingsFile,compConfig->RootDirectory,512); + strcat(compConfig->SettingsFile,"\\"); + strcat(compConfig->SettingsFile,tmp); + } + if(compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4] != '.' ) + { + strcat(compConfig->SettingsFile,".vps"); + } + FILE *f = fopen(compConfig->SettingsFile,"rb"); + if(f) + { + char tmp[512]; + HWND still = (HWND) compConfig->PlaceHolder; + strncpy(tmp,compConfig->RootDirectory,512); + fread(compConfig,sizeof COMP_CONFIG_VP6,1,f); + strncpy(compConfig->RootDirectory,tmp,512); + fclose(f); + compConfig->PlaceHolder = (INT32) still; + } + } + + case BN_CLICKED: + switch(LOWORD(wParam)) + { + case ID_SAVE: + { + FILE *f; + + GetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile,512); + GetDlgItemText(hWndDlg,IDC_FIRSTPASS,compConfig->FirstPassFile,512); + + if(compConfig->SettingsFile[1] != ':' && compConfig->SettingsFile[1] != '\\') + { + char tmp[512]; + strncpy(tmp,compConfig->SettingsFile,512); + strncpy(compConfig->SettingsFile,compConfig->RootDirectory,512); + strcat(compConfig->SettingsFile,"\\"); + strcat(compConfig->SettingsFile,tmp); + } + if(compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4] != '.' ) + { + strcat(compConfig->SettingsFile,".vps"); + } + + f=fopen(compConfig->SettingsFile,"wb"); + if(f) + { + fwrite(compConfig,10+sizeof COMP_CONFIG_VP6,1,f); + fclose(f); + } + int curSel = SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_FINDSTRING, 0, (LPARAM) (LPCSTR) compConfig->SettingsFile ); + if( curSel == LB_ERR) + { + WIN32_FIND_DATA wfd; + + int curSel = SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_RESETCONTENT, 0, 0 ); + char FileFilter[512]; + strncpy(FileFilter,compConfig->RootDirectory,512); + strcat(FileFilter,"\\*.vps"); + HANDLE ffh = FindFirstFile(FileFilter,&wfd); + if( ffh !=INVALID_HANDLE_VALUE) + { + do + { + wfd.cFileName[strlen(wfd.cFileName)-4]=0; + SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_ADDSTRING, 0, (LPARAM) (LPCSTR) wfd.cFileName); + } + while ( FindNextFile(ffh,&wfd)); + FindClose(ffh); + } + } + + + return TRUE; + }; + case ID_DELETE: + { + int curSel =SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_GETCURSEL, 0, 0); + SendDlgItemMessage(hWndDlg, IDC_SETTINGS_LIST, LB_DELETESTRING, curSel, 0); + + + DeleteFile(compConfig->SettingsFile); + + return TRUE; + }; + case IDC_LOAD_FIRSTPASS: + { + static TCHAR szFilterLoad[] = TEXT("VP First Pass \0*.vpf\0\0"); + OPENFILENAME ofn; + TCHAR szTitle[64]; + TCHAR szT[256]; + ofn.lStructSize= sizeof(ofn); + ofn.hInstance= 0; + ofn.lpstrFilter= szFilterLoad; + ofn.lpstrCustomFilter= NULL; + ofn.nMaxCustFilter= 0; + ofn.nFilterIndex= 0; + ofn.lpstrFileTitle= szTitle; + ofn.nMaxFileTitle= sizeof(szTitle); + ofn.lpstrInitialDir= compConfig->RootDirectory; + ofn.lpstrTitle= NULL; + ofn.nFileOffset= 0; + ofn.nFileExtension= 0; + ofn.lpstrDefExt= "vps"; + ofn.lCustData= 0L; + ofn.lpfnHook= NULL; + ofn.lpTemplateName= NULL; + ofn.hwndOwner= hWndDlg; + ofn.lpstrFile= szT; + ofn.nMaxFile= sizeof(szT); + ofn.Flags= 0; + szTitle[0] = TEXT('\0'); + szT[0] = TEXT('\0'); + if(GetOpenFileName(&ofn)) + { + strncpy(compConfig->FirstPassFile,ofn.lpstrFile,512); + SetDlgItemText(hWndDlg,IDC_FIRSTPASS,compConfig->FirstPassFile); + } + + + return TRUE; + } + case IDC_LOAD_SETTINGS: + { + static TCHAR szFilterLoad[] = TEXT("VP Setting Files\0*.vps\0\0"); + OPENFILENAME ofn; + TCHAR szTitle[64]; + TCHAR szT[256]; + ofn.lStructSize= sizeof(ofn); + ofn.hInstance= 0; + ofn.lpstrFilter= szFilterLoad; + ofn.lpstrCustomFilter= NULL; + ofn.nMaxCustFilter= 0; + ofn.nFilterIndex= 0; + ofn.lpstrFileTitle= szTitle; + ofn.nMaxFileTitle= sizeof(szTitle); + ofn.lpstrInitialDir= compConfig->RootDirectory; + ofn.lpstrTitle= NULL; + ofn.nFileOffset= 0; + ofn.nFileExtension= 0; + ofn.lpstrDefExt= "vps"; + ofn.lCustData= 0L; + ofn.lpfnHook= NULL; + ofn.lpTemplateName= NULL; + ofn.hwndOwner= hWndDlg; + ofn.lpstrFile= szT; + ofn.nMaxFile= sizeof(szT); + ofn.Flags= 0; + szTitle[0] = TEXT('\0'); + szT[0] = TEXT('\0'); + if(GetOpenFileName(&ofn)) + { + + strncpy(compConfig->SettingsFile,ofn.lpstrFile,512); + + FILE *f = fopen(compConfig->SettingsFile,"rb"); + if(f) + { + HWND still = (HWND) compConfig->PlaceHolder; + fread(compConfig,sizeof COMP_CONFIG_VP6,1,f); + fclose(f); + compConfig->PlaceHolder = (INT32) still; + } + if(!memcmp(compConfig->SettingsFile,compConfig->RootDirectory,strlen(compConfig->RootDirectory))) + { + strcpy(compConfig->SettingsFile,compConfig->SettingsFile+strlen(compConfig->RootDirectory)); + } + if(!memcmp(compConfig->SettingsFile+strlen(compConfig->SettingsFile)-4,".vps",4)) + { + compConfig->SettingsFile[strlen(compConfig->SettingsFile)-4]=0; + } + SetDlgItemText(hWndDlg,IDC_SETTINGSFILE,compConfig->SettingsFile); + } + + + return TRUE; + } + } + break; + default: + break; + } + + } + + + default: + return (FALSE); + + } /* End of Main Dialog case statement. */ + + return FALSE; +} /* End of WndProc */ |