AEIO_UserOptionsDialog
Hello,
I have AEIO project for windows, and I want to port it to macintosh
On windows, there was a function AEIO_FunctionBlock4::AEIO_UserOptionsDialog()
and I look for a similar code for macintosh ? what is the way to do it ? I did not find
in UI examples in the SDK
My code is like this:
BOOL DialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
CheckDlgButton(hwndDlg, IDC_FLATTEN, (WPARAM)g_header.bFlattenIndexed);
CheckDlgButton(hwndDlg, IDC_LZW, (WPARAM)g_header.bLZW);
CheckDlgButton(hwndDlg, IDC_GEN_MIPMAPS, (WPARAM)g_header.bGenerateMipmaps);
CheckDlgButton(hwndDlg, IDC_SAVE_ORIGINAL, (WPARAM)g_header.bSaveOrig);
CheckDlgButton(hwndDlg, IDC_HIGH_QUALITY_DXT, (WPARAM)g_header.bHighQualityDXT);
CheckRadioButton(hwndDlg, IDC_FORMAT_RAW, IDC_FORMAT_DXT5, g_header.iFormat);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
g_header.bFlattenIndexed = IsDlgButtonChecked(hwndDlg, IDC_FLATTEN);
g_header.bLZW = IsDlgButtonChecked(hwndDlg, IDC_LZW);
g_header.bGenerateMipmaps = IsDlgButtonChecked(hwndDlg, IDC_GEN_MIPMAPS);
g_header.bSaveOrig = IsDlgButtonChecked(hwndDlg, IDC_SAVE_ORIGINAL);
g_header.bHighQualityDXT = IsDlgButtonChecked(hwndDlg, IDC_HIGH_QUALITY_DXT);
if (IsDlgButtonChecked(hwndDlg, IDC_FORMAT_RAW))
g_header.iFormat = IDC_FORMAT_RAW;
else if (IsDlgButtonChecked(hwndDlg, IDC_FORMAT_DXT1))
g_header.iFormat = IDC_FORMAT_DXT1;
else
g_header.iFormat = IDC_FORMAT_DXT5;
EndDialog(hwndDlg, IDOK);
break;
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
break;
}
break;
default:
return FALSE;
}
return TRUE;
}
static A_Err
VBNIO_UserOptionsDialog(
AEIO_BasicData *basic_dataP,
AEIO_OutSpecH outH,
const PF_EffectWorld *sample0,
A_Boolean *user_interacted0)
{
A_Err err = A_Err_NONE;
VBNIO_FileHeader *headerP = NULL;
AEGP_SuiteHandler suites(basic_dataP->pica_basicP);
AEIO_Handle optionsH = NULL;
AEIO_Handle old_optionsH = NULL;
err = suites.IOOutSuite4()->AEGP_GetOutSpecOptionsHandle(outH, (void**)&optionsH);
if (err || !optionsH)
return err;
err = suites.MemorySuite1()->AEGP_LockMemHandle(optionsH, (void**)&headerP);
if (err || !headerP)
return err;
g_header = *headerP;
if (DialogBox(GetModuleHandle("VBNIO.aex"),
MAKEINTRESOURCE(IDD_VBN_DIALOG),
NULL,
(DLGPROC)DialogProc) == IDOK){
A_long width, height;
suites.IOOutSuite4()->AEGP_GetOutSpecDimensions(outH, &width, &height);
if ((g_header.iFormat == IDC_FORMAT_DXT1 || g_header.iFormat == IDC_FORMAT_DXT5) &&
(width % 4 != 0 || height % 4 != 0)){
basic_dataP->msg_func(0, "Width and Height should be multiples of 4. Not saving option changes.");
suites.MemorySuite1()->AEGP_UnlockMemHandle(optionsH);
return AEIO_Err_INCONSISTENT_PARAMETERS;
}
*headerP = g_header;
*user_interacted0 = TRUE;
}
suites.MemorySuite1()->AEGP_UnlockMemHandle(optionsH);
return err;
};
