static void shader_dlg_params_refresh(void) { int i; struct video_shader* shader = video_shader_driver_get_current_shader(); for (i = 0; i < GFX_MAX_PARAMETERS; i++) { shader_param_ctrl_t*control = &g_shader_dlg.controls[i]; if (control->type == SHADER_PARAM_CTRL_NONE) break; switch (control->type) { case SHADER_PARAM_CTRL_CHECKBOX: { bool checked = (shader->parameters[i].current == shader->parameters[i].maximum); SendMessage(control->checkbox.hwnd, BM_SETCHECK, checked, 0); } break; case SHADER_PARAM_CTRL_TRACKBAR: shader_dlg_refresh_trackbar_label(i); SendMessage(control->trackbar.hwnd, TBM_SETRANGEMIN, (WPARAM)TRUE, (LPARAM)0); SendMessage(control->trackbar.hwnd, TBM_SETRANGEMAX, (WPARAM)TRUE, (LPARAM)((shader->parameters[i].maximum - shader->parameters[i].minimum) / shader->parameters[i].step)); SendMessage(control->trackbar.hwnd, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)((shader->parameters[i].current - shader->parameters[i].minimum) / shader->parameters[i].step)); break; case SHADER_PARAM_CTRL_NONE: default: break; } } }
static void shader_dlg_params_refresh(void) { int i; struct video_shader* shader = video_shader_driver_get_current_shader(); for (i = 0; i < GFX_MAX_PARAMETERS; i++) { if (g_shader_dlg.controls[i].type == SHADER_PARAM_CTRL_NONE) break; if (g_shader_dlg.controls[i].type == SHADER_PARAM_CTRL_CHECKBOX) { bool checked = (shader->parameters[i].current == shader->parameters[i].maximum); SendMessage(g_shader_dlg.controls[i].checkbox.hwnd, BM_SETCHECK, checked, 0); } else if (g_shader_dlg.controls[i].type == SHADER_PARAM_CTRL_TRACKBAR) { shader_dlg_refresh_trackbar_label(i); SendMessage(g_shader_dlg.controls[i].trackbar.hwnd, TBM_SETRANGEMIN, (WPARAM)TRUE, (LPARAM)0); SendMessage(g_shader_dlg.controls[i].trackbar.hwnd, TBM_SETRANGEMAX, (WPARAM)TRUE, (LPARAM)((shader->parameters[i].maximum - shader->parameters[i].minimum) / shader->parameters[i].step)); SendMessage(g_shader_dlg.controls[i].trackbar.hwnd, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)((shader->parameters[i].current - shader->parameters[i].minimum) / shader->parameters[i].step)); } } }
static LRESULT CALLBACK ShaderDlgWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int i, pos; struct video_shader* shader = video_shader_driver_get_current_shader(); switch (message) { case WM_CREATE: break; case WM_CLOSE: case WM_DESTROY: case WM_QUIT: ShowWindow(g_shader_dlg.hwnd, 0); return 0; case WM_COMMAND: i = LOWORD(wparam); if (i == SHADER_DLG_CHECKBOX_ONTOP_ID) { shader_dlg_update_on_top_state(); break; } if (i >= GFX_MAX_PARAMETERS) break; if (g_shader_dlg.controls[i].type != SHADER_PARAM_CTRL_CHECKBOX) break; if (SendMessage(g_shader_dlg.controls[i].checkbox.hwnd, BM_GETCHECK, 0, 0) == BST_CHECKED) shader->parameters[i].current = shader->parameters[i].maximum; else shader->parameters[i].current = shader->parameters[i].minimum; break; case WM_HSCROLL: i = GetWindowLong((HWND)lparam, GWL_ID); if (i >= GFX_MAX_PARAMETERS) break; if (g_shader_dlg.controls[i].type != SHADER_PARAM_CTRL_TRACKBAR) break; pos = (int)SendMessage(g_shader_dlg.controls[i].trackbar.hwnd, TBM_GETPOS, 0, 0); shader->parameters[i].current = shader->parameters[i].minimum + pos * shader->parameters[i].step; shader_dlg_refresh_trackbar_label(i); break; } return DefWindowProc(hwnd, message, wparam, lparam); }
static void shader_dlg_params_refresh(void) { int i; for (i = 0; i < GFX_MAX_PARAMETERS; i++) { shader_param_ctrl_t*control = &g_shader_dlg.controls[i]; if (control->type == SHADER_PARAM_CTRL_NONE) break; switch (control->type) { case SHADER_PARAM_CTRL_CHECKBOX: { bool checked; video_shader_ctx_t shader_info; video_shader_driver_get_current_shader(&shader_info); checked = shader_info.data ? (shader_info.data->parameters[i].current == shader_info.data->parameters[i].maximum) : false; SendMessage(control->elems.checkbox.hwnd, BM_SETCHECK, checked, 0); } break; case SHADER_PARAM_CTRL_TRACKBAR: { video_shader_ctx_t shader_info; video_shader_driver_get_current_shader(&shader_info); if (shader_info.data && !shader_dlg_refresh_trackbar_label(i, &shader_info)) break; if (shader_info.data) { SendMessage(control->elems.trackbar.hwnd, TBM_SETRANGEMIN, (WPARAM)TRUE, (LPARAM)0); SendMessage(control->elems.trackbar.hwnd, TBM_SETRANGEMAX, (WPARAM)TRUE, (LPARAM)((shader_info.data->parameters[i].maximum - shader_info.data->parameters[i].minimum) / shader_info.data->parameters[i].step)); SendMessage(control->elems.trackbar.hwnd, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)((shader_info.data->parameters[i].current - shader_info.data->parameters[i].minimum) / shader_info.data->parameters[i].step)); } } break; case SHADER_PARAM_CTRL_NONE: default: break; } } }
static LRESULT CALLBACK ShaderDlgWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int i, pos; const ui_window_t *window = ui_companion_driver_get_window_ptr(); switch (message) { case WM_CREATE: break; case WM_CLOSE: case WM_DESTROY: case WM_QUIT: if (window) window->set_visible(&g_shader_dlg.window, false); return 0; case WM_COMMAND: i = LOWORD(wparam); if (i == SHADER_DLG_CHECKBOX_ONTOP_ID) { shader_dlg_update_on_top_state(); break; } if (i >= GFX_MAX_PARAMETERS) break; if (g_shader_dlg.controls[i].type != SHADER_PARAM_CTRL_CHECKBOX) break; { video_shader_ctx_t shader_info; video_shader_driver_get_current_shader(&shader_info); if (SendMessage(g_shader_dlg.controls[i].checkbox.hwnd, BM_GETCHECK, 0, 0) == BST_CHECKED) shader_info.data->parameters[i].current = shader_info.data->parameters[i].maximum; else shader_info.data->parameters[i].current = shader_info.data->parameters[i].minimum; } break; case WM_HSCROLL: { video_shader_ctx_t shader_info; video_shader_driver_get_current_shader(&shader_info); i = GetWindowLong((HWND)lparam, GWL_ID); if (i >= GFX_MAX_PARAMETERS) break; if (g_shader_dlg.controls[i].type != SHADER_PARAM_CTRL_TRACKBAR) break; pos = (int)SendMessage(g_shader_dlg.controls[i].trackbar.hwnd, TBM_GETPOS, 0, 0); { shader_info.data->parameters[i].current = shader_info.data->parameters[i].minimum + pos * shader_info.data->parameters[i].step; } if (shader_info.data) shader_dlg_refresh_trackbar_label(i, &shader_info); } break; } return DefWindowProc(hwnd, message, wparam, lparam); }