コード例 #1
0
ファイル: ui_win32.c プロジェクト: DoctorGoat/RetroArch_LibNX
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;
      }
   }
}
コード例 #2
0
static void menu_action_setting_disp_set_label_shader_parameter(
      file_list_t* list,
      unsigned *w, unsigned type, unsigned i,
      const char *label,
      char *s, size_t len,
      const char *entry_label,
      const char *path,
      char *s2, size_t len2)
{
   video_shader_ctx_t shader_info;
   const struct video_shader_parameter *param = NULL;

   *s = '\0';
   *w = 19;
   strlcpy(s2, path, len2);

   video_shader_driver_get_current_shader(&shader_info);

   if (!shader_info.data)
      return;

   param = &shader_info.data->parameters[type -
      MENU_SETTINGS_SHADER_PARAMETER_0];

   if (!param)
      return;

   snprintf(s, len, "%.2f [%.2f %.2f]",
         param->current, param->minimum, param->maximum);
}
コード例 #3
0
ファイル: menu_cbs_left.c プロジェクト: Arche-san/RetroArch
static int shader_action_parameter_left(unsigned type, const char *label,
      bool wraparound)
{
   struct video_shader          *shader = video_shader_driver_get_current_shader();
   struct video_shader_parameter *param = &shader->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0];
   return generic_shader_action_parameter_left(shader, param, type, label, wraparound);
}
コード例 #4
0
static int shader_action_parameter_toggle(unsigned type, const char *label,
      unsigned action)
{
#ifdef HAVE_SHADER_MANAGER
   struct video_shader_parameter *param = NULL;
   struct video_shader *shader = video_shader_driver_get_current_shader();

   if (!shader)
      return 0;

   param = &shader->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0];

   switch (action)
   {
      case MENU_ACTION_LEFT:
         param->current -= param->step;
         break;

      case MENU_ACTION_RIGHT:
         param->current += param->step;
         break;

      default:
         break;
   }

   param->current = min(max(param->minimum, param->current), param->maximum);

#endif
   return 0;
}
コード例 #5
0
static void menu_action_setting_disp_set_label_shader_parameter(
      file_list_t* list,
      unsigned *w, unsigned type, unsigned i,
      const char *label,
      char *s, size_t len,
      const char *entry_label,
      const char *path,
      char *s2, size_t len2)
{
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
   const struct video_shader_parameter *param = NULL;
   struct video_shader *shader = NULL;
#endif
   *s = '\0';
   *w = 19;
   strlcpy(s2, path, len2);

#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL)
   shader = video_shader_driver_get_current_shader();

   if (!shader)
      return;

   param = &shader->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0];

   if (!param)
      return;

   snprintf(s, len, "%.2f [%.2f %.2f]",
         param->current, param->minimum, param->maximum);
#endif
}
コード例 #6
0
ファイル: ui_win32.c プロジェクト: AkimanBengus/RetroArch
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;
      }
   }
}
コード例 #7
0
ファイル: win32_shader_dlg.c プロジェクト: mak77/RetroArch
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));

      }
   }
}
コード例 #8
0
ファイル: ui_win32.c プロジェクト: AkimanBengus/RetroArch
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);
}
コード例 #9
0
int shader_action_parameter_right(unsigned type, const char *label, bool wraparound)
{
   video_shader_ctx_t shader_info;
   struct video_shader_parameter *param = NULL;

   video_shader_driver_get_current_shader(&shader_info);

   param = &shader_info.data->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0];
   return generic_shader_action_parameter_right(shader_info.data, param, type, label, wraparound);
}
コード例 #10
0
ファイル: menu_cbs_right.c プロジェクト: netux79/RAvideoFixes
static int shader_action_parameter_right(unsigned type, const char *label, bool wraparound)
{
#ifdef HAVE_SHADER_MANAGER
   struct video_shader *shader = video_shader_driver_get_current_shader();
   struct video_shader_parameter *param =
      &shader->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0];

   shader_action_parameter_right_common(param, shader);
#endif
   return 0;
}
コード例 #11
0
void ShaderParamsDialog::getShaders(struct video_shader **menu_shader, struct video_shader **video_shader)
{
   video_shader_ctx_t shader_info = {0};

   struct video_shader *shader = menu_shader_get();

   if (menu_shader)
   {
      if (shader)
      {
         *menu_shader = shader;
      }
      else
      {
         *menu_shader = NULL;
      }
   }

   if (video_shader)
   {
      if (shader)
      {
         *video_shader = shader_info.data;
      }
      else
      {
         *video_shader = NULL;
      }
   }

   if (video_shader)
   {
      if (!video_shader_driver_get_current_shader(&shader_info))
      {
         *video_shader = NULL;
         return;
      }

      if (!shader_info.data || shader_info.data->num_parameters > GFX_MAX_PARAMETERS)
      {
         *video_shader = NULL;
         return;
      }

      if (shader_info.data)
      {
         *video_shader = shader_info.data;
      }
      else
      {
         *video_shader = NULL;
      }
   }
}
コード例 #12
0
static INLINE struct video_shader *shader_manager_get_current_shader(const char *label, unsigned type)
{
   menu_handle_t *menu = menu_driver_get_ptr();
   if (!menu)
      return NULL;

   if (!strcmp(label, "video_shader_preset_parameters"))
      return menu->shader;
   else if (!strcmp(label, "video_shader_parameters"))
      return video_shader_driver_get_current_shader();
   return NULL;
}
コード例 #13
0
ファイル: ui_win32.c プロジェクト: AkimanBengus/RetroArch
static void shader_dlg_refresh_trackbar_label(int index)
{
   char val_buffer[32]         = {0};
   struct video_shader* shader = video_shader_driver_get_current_shader();

   if (floorf(shader->parameters[index].current) == shader->parameters[index].current)
      snprintf(val_buffer, sizeof(val_buffer), "%.0f", shader->parameters[index].current);
   else
      snprintf(val_buffer, sizeof(val_buffer), "%.2f", shader->parameters[index].current);

   SendMessage(g_shader_dlg.controls[index].trackbar.label_val, WM_SETTEXT, 0, (LPARAM)val_buffer);

}
コード例 #14
0
static int action_start_shader_action_parameter(unsigned type, const char *label)
{
#ifdef HAVE_SHADER_MANAGER
   struct video_shader_parameter *param = NULL;
   struct video_shader *shader = video_shader_driver_get_current_shader();

   if (!shader)
      return 0;

   param = &shader->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0];
   param->current = param->initial;
   param->current = min(max(param->minimum, param->current), param->maximum);

#endif

   return 0;
}
コード例 #15
0
ファイル: menu_cbs_start.c プロジェクト: Alcaro/RetroArch
static int action_start_shader_action_parameter(unsigned type, const char *label)
{
#ifdef HAVE_SHADER_MANAGER
   video_shader_ctx_t shader_info;
   struct video_shader_parameter *param = NULL;

   video_shader_driver_get_current_shader(&shader_info);

   if (!shader_info.data)
      return 0;

   param          = &shader_info.data->parameters
      [type - MENU_SETTINGS_SHADER_PARAMETER_0];
   param->current = param->initial;
   param->current = MIN(MAX(param->minimum, param->current), param->maximum);

#endif

   return 0;
}
コード例 #16
0
int shader_action_parameter_right(unsigned type, const char *label, bool wraparound)
{
   video_shader_ctx_t shader_info;
   struct video_shader *shader          = menu_shader_get();
   struct video_shader_parameter *param_menu = NULL;
   struct video_shader_parameter *param_prev = NULL;

   int ret = 0;

   video_shader_driver_get_current_shader(&shader_info);

   param_prev = &shader_info.data->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0];
   param_menu = shader ? &shader->parameters[type -
      MENU_SETTINGS_SHADER_PARAMETER_0] : NULL;

   if (!param_prev || !param_menu)
      return menu_cbs_exit();
   ret = generic_shader_action_parameter_right(param_prev, type, label, wraparound);

   param_menu->current = param_prev->current;

   return ret;
}
コード例 #17
0
ファイル: ui_win32.c プロジェクト: Ezio-PS/RetroArch
void shader_dlg_params_reload(void)
{
   HFONT hFont;
   RECT parent_rect;
   int i, pos_x, pos_y;
   video_shader_ctx_t shader_info;
   const ui_window_t *window = ui_companion_driver_get_window_ptr();
   video_shader_driver_get_current_shader(&shader_info);

   shader_dlg_params_clear();

   if (!shader_info.data)
      return;
   if (shader_info.data->num_parameters > GFX_MAX_PARAMETERS)
      return;

   hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
   pos_y = g_shader_dlg.parameters_start_y;
   pos_x = SHADER_DLG_CTRL_X;

   for (i = 0; i < (int)shader_info.data->num_parameters; i++)
   {
      shader_param_ctrl_t*control = &g_shader_dlg.controls[i];

      if ((shader_info.data->parameters[i].minimum == 0.0)
            && (shader_info.data->parameters[i].maximum 
               == (shader_info.data->parameters[i].minimum 
                  + shader_info.data->parameters[i].step)))
      {
         if ((pos_y + SHADER_DLG_CHECKBOX_HEIGHT 
                    + SHADER_DLG_CTRL_MARGIN + 20) 
               > SHADER_DLG_MAX_HEIGHT)
         {
            pos_y  = g_shader_dlg.parameters_start_y;
            pos_x += SHADER_DLG_WIDTH;
         }

         control->type          = SHADER_PARAM_CTRL_CHECKBOX;
         control->checkbox.hwnd = CreateWindowEx(0, "BUTTON",
               shader_info.data->parameters[i].desc,
               WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, pos_x, pos_y,
               SHADER_DLG_CTRL_WIDTH, SHADER_DLG_CHECKBOX_HEIGHT,
               g_shader_dlg.window.hwnd, (HMENU)(size_t)i, NULL, NULL);
         SendMessage(control->checkbox.hwnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));
         pos_y += SHADER_DLG_CHECKBOX_HEIGHT + SHADER_DLG_CTRL_MARGIN;
      }
      else
      {
         if ((pos_y + SHADER_DLG_LABEL_HEIGHT + SHADER_DLG_TRACKBAR_HEIGHT +
                  SHADER_DLG_CTRL_MARGIN + 20) > SHADER_DLG_MAX_HEIGHT)
         {
            pos_y = g_shader_dlg.parameters_start_y;
            pos_x += SHADER_DLG_WIDTH;
         }

         control->type                 = SHADER_PARAM_CTRL_TRACKBAR;
         control->trackbar.label_title = CreateWindowEx(0, "STATIC",
               shader_info.data->parameters[i].desc,
               WS_CHILD | WS_VISIBLE | SS_LEFT, pos_x, pos_y,
               SHADER_DLG_CTRL_WIDTH, SHADER_DLG_LABEL_HEIGHT, g_shader_dlg.window.hwnd,
               (HMENU)(size_t)i, NULL, NULL);
         SendMessage(control->trackbar.label_title, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));

         pos_y += SHADER_DLG_LABEL_HEIGHT;
         control->trackbar.hwnd = CreateWindowEx(0, TRACKBAR_CLASS, "",
               WS_CHILD | WS_VISIBLE | TBS_HORZ | TBS_NOTICKS,
               pos_x + SHADER_DLG_TRACKBAR_LABEL_WIDTH, pos_y,
               SHADER_DLG_TRACKBAR_WIDTH, SHADER_DLG_TRACKBAR_HEIGHT,
               g_shader_dlg.window.hwnd, (HMENU)(size_t)i, NULL, NULL);

         control->trackbar.label_val = CreateWindowEx(0, "STATIC", "",
               WS_CHILD | WS_VISIBLE | SS_LEFT, pos_x,
               pos_y, SHADER_DLG_TRACKBAR_LABEL_WIDTH, SHADER_DLG_LABEL_HEIGHT,
               g_shader_dlg.window.hwnd, (HMENU)(size_t)i, NULL, NULL);
         SendMessage(control->trackbar.label_val, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));

         SendMessage(control->trackbar.hwnd, TBM_SETBUDDY, (WPARAM)TRUE,
               (LPARAM)control->trackbar.label_val);

         pos_y += SHADER_DLG_TRACKBAR_HEIGHT + SHADER_DLG_CTRL_MARGIN;

      }

   }

   if (window && g_shader_dlg.separator.hwnd)
      window->destroy(&g_shader_dlg.separator);

   g_shader_dlg.separator.hwnd = CreateWindowEx(0, "STATIC", "",
         SS_ETCHEDHORZ | WS_VISIBLE | WS_CHILD, SHADER_DLG_CTRL_X,
         g_shader_dlg.parameters_start_y - SHADER_DLG_CTRL_MARGIN - SHADER_DLG_SEPARATOR_HEIGHT / 2,
         (pos_x - SHADER_DLG_CTRL_X) + SHADER_DLG_CTRL_WIDTH,
         SHADER_DLG_SEPARATOR_HEIGHT / 2,
         g_shader_dlg.window.hwnd, NULL, NULL,
         NULL);

   shader_dlg_params_refresh();

   GetWindowRect(g_shader_dlg.window.hwnd, &parent_rect);
   SetWindowPos(g_shader_dlg.window.hwnd, NULL, 0, 0,
         (pos_x - SHADER_DLG_CTRL_X) + SHADER_DLG_WIDTH,
         (pos_x == SHADER_DLG_CTRL_X) ? pos_y + 30 : SHADER_DLG_MAX_HEIGHT,
         SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);

}
コード例 #18
0
ファイル: ui_win32.c プロジェクト: arakerlu/RetroArch
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);
}