bool initialize_graphics_filter(const char *filterID, int colDepth) { int idx = 0; GFXFilter **filterList; if (usetup.gfxDriverID.CompareNoCase("D3D9") == 0) { filterList = get_d3d_gfx_filter_list(false); } else { filterList = get_allegro_gfx_filter_list(false); } filter = NULL; GFXFilter *thisFilter = filterList[idx]; while (thisFilter != NULL) { if ((filterID != NULL) && (stricmp(thisFilter->GetFilterID(), filterID) == 0)) filter = thisFilter; else delete thisFilter; idx++; thisFilter = filterList[idx]; } if (!filter) { Out::FPrint("Could not find graphics filter %s", filterID); return false; } const char *filterError = filter->Initialize(colDepth); if (filterError != NULL) { platform->DisplayAlert("Unable to initialize the graphics filter '%s'. It returned the following error:\n'%s'" "\n\nTry running Setup and selecting a different graphics filter.", filter->GetFilterID(), filterError); delete filter; filter = NULL; return false; } return true; }
int initialize_graphics_filter(const char *filterID, int width, int height, int colDepth) { int idx = 0; GFXFilter **filterList; if (usetup.gfxDriverID.CompareNoCase("D3D9") == 0) { filterList = get_d3d_gfx_filter_list(false); } else { filterList = get_allegro_gfx_filter_list(false); } // by default, select No Filter filter = filterList[0]; GFXFilter *thisFilter = filterList[idx]; while (thisFilter != NULL) { if ((filterID != NULL) && (strcmp(thisFilter->GetFilterID(), filterID) == 0)) filter = thisFilter; else if (idx > 0) delete thisFilter; idx++; thisFilter = filterList[idx]; } Out::FPrint("Applying scaling filter: %s", filter->GetFilterID()); const char *filterError = filter->Initialize(width, height, colDepth); if (filterError != NULL) { proper_exit = 1; platform->DisplayAlert("Unable to initialize the graphics filter. It returned the following error:\n'%s'\n\nTry running Setup and selecting a different graphics filter.", filterError); return -1; } gfxDriver->SetGraphicsFilter(filter); return 0; }
void populate_drop_down_with_filters(HWND hDlg) { SendDlgItemMessage(hDlg, IDC_GFXFILTER, CB_RESETCONTENT, 0, 0); int idx = 0; GFXFilter *thisFilter = filterList[idx]; while (thisFilter != NULL) { if ((idx != 0) && (INIreadint("disabled", thisFilter->GetFilterID(), 0) == 1)) { // this filter is disabled delete thisFilter; // remove from list of filters for (int i = idx; filterList[i] != NULL; i++) filterList[i] = filterList[i + 1]; thisFilter = filterList[idx]; continue; } const char *filterName = thisFilter->GetVersionBoxText(); char filterNameBuffer[100]; if ((filterName == NULL) || (filterName[0] == 0)) { strcpy(filterNameBuffer, "None"); } else { strcpy(filterNameBuffer, filterName); // strip trailing [ if (filterNameBuffer[strlen(filterNameBuffer) - 1] == '[') filterNameBuffer[strlen(filterNameBuffer) - 1] = 0; } SendDlgItemMessage(hDlg, IDC_GFXFILTER, CB_ADDSTRING, 0, (LPARAM)filterNameBuffer); if ((strcmp(curFilter, thisFilter->GetFilterID()) == 0) || (idx == 0)) SendDlgItemMessage(hDlg, IDC_GFXFILTER, CB_SETCURSEL, idx, 0); idx++; thisFilter = filterList[idx]; } }