Пример #1
0
void shader_dlg_show(HWND parent_hwnd)
{
   const ui_window_t *window = ui_companion_driver_get_window_ptr();

   if (!IsWindowVisible(g_shader_dlg.window.hwnd))
   {
      if (parent_hwnd)
      {
         RECT parent_rect;
         GetWindowRect(parent_hwnd, &parent_rect);
         SetWindowPos(g_shader_dlg.window.hwnd, HWND_TOP,
               parent_rect.right, parent_rect.top,
               0, 0, SWP_NOSIZE | SWP_SHOWWINDOW);
      }
      else
         window->set_visible(&g_shader_dlg.window, true);

      shader_dlg_update_on_top_state();

      shader_dlg_params_reload();

   }

   window->set_focused(&g_shader_dlg.window);
}
Пример #2
0
static void shader_dlg_params_clear(void)
{
   unsigned i;

   for (i = 0; i < GFX_MAX_PARAMETERS; i++)
   {
      const ui_window_t *window = ui_companion_driver_get_window_ptr();
      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_NONE:
            break;
         case SHADER_PARAM_CTRL_CHECKBOX:
            if (window)
               window->destroy(&control->checkbox);
            break;
         case SHADER_PARAM_CTRL_TRACKBAR:
            DestroyWindow(control->trackbar.label_title);
            DestroyWindow(control->trackbar.label_val);
            DestroyWindow(control->trackbar.hwnd);
            break;
      }

      control->type = SHADER_PARAM_CTRL_NONE;
   }
}
Пример #3
0
static void gfx_ctx_wgl_update_title(void *data, void *data2)
{
   const settings_t *settings = config_get_ptr();
   video_frame_info_t* video_info = (video_frame_info_t*)data2;
   char title[128];

   title[0] = '\0';

   if (settings->bools.video_memory_show)
   {
#ifndef __WINRT__
      uint64_t mem_bytes_used = frontend_driver_get_used_memory();
      uint64_t mem_bytes_total = frontend_driver_get_total_memory();
      char         mem[128];

      mem[0] = '\0';

      snprintf(
            mem, sizeof(mem), " || MEM: %.2f/%.2fMB", mem_bytes_used / (1024.0f * 1024.0f),
            mem_bytes_total / (1024.0f * 1024.0f));
      strlcat(video_info->fps_text, mem, sizeof(video_info->fps_text));
#endif
   }

   video_driver_get_window_title(title, sizeof(title));

   if (title[0])
   {
      const ui_window_t *window = ui_companion_driver_get_window_ptr();

      if (window)
         window->set_title(&main_window, title);
   }
}
Пример #4
0
void win32_set_window(unsigned *width, unsigned *height,
      bool fullscreen, bool windowed_full, void *rect_data)
{
#ifndef _XBOX
   settings_t *settings  = config_get_ptr();
   RECT *rect            = (RECT*)rect_data;

   if (!fullscreen || windowed_full)
   {
      const ui_window_t *window = ui_companion_driver_get_window_ptr();

      if (!fullscreen && settings->ui.menubar_enable)
      {
         RECT rc_temp = {0, 0, (LONG)*height, 0x7FFF};
         SetMenu(main_window.hwnd,
               LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU)));
         SendMessage(main_window.hwnd, WM_NCCALCSIZE, FALSE, (LPARAM)&rc_temp);
         g_resize_height = *height += rc_temp.top + rect->top;
         SetWindowPos(main_window.hwnd, NULL, 0, 0, *width, *height, SWP_NOMOVE);
      }

      ShowWindow(main_window.hwnd, SW_RESTORE);
      UpdateWindow(main_window.hwnd);
      SetForegroundWindow(main_window.hwnd);

      if (window)
         window->set_focused(&main_window);
   }

   win32_show_cursor(!fullscreen);
#endif
}
Пример #5
0
void win32_monitor_from_window(void)
{
#ifndef _XBOX
   win32_monitor_last = MonitorFromWindow(main_window.hwnd, MONITOR_DEFAULTTONEAREST);
   const ui_window_t *window = ui_companion_driver_get_window_ptr();

   if (window)
      window->destroy(&main_window);
#endif
}
Пример #6
0
static void gfx_ctx_gdi_update_window_title(void *data, video_frame_info_t *video_info)
{
   const ui_window_t *window = ui_companion_driver_get_window_ptr();
   char title[128];

   title[0] = '\0';

   video_driver_get_window_title(title, sizeof(title));

   if (window && title[0])
      window->set_title(&main_window, title);
}
Пример #7
0
static void gfx_ctx_sixel_update_window_title(void *data, void *data2)
{
#if defined(_WIN32) && !defined(_XBOX)
   const ui_window_t *window = ui_companion_driver_get_window_ptr();
   char title[128];

   title[0] = '\0';

   video_driver_get_window_title(title, sizeof(title));

   if (window && title[0])
      window->set_title(&main_window, title);
#endif
}
Пример #8
0
bool win32_has_focus(void)
{
#ifndef _XBOX
   const ui_window_t *window = ui_companion_driver_get_window_ptr();
#endif
   if (!g_inited)
      return false;

#ifdef _XBOX
   return GetForegroundWindow() == main_window.hwnd;
#else
   if (window)
      return window->focused(&main_window);
   return false;
#endif
}
Пример #9
0
static void gfx_ctx_wgl_update_title(void *data, void *data2)
{
   const ui_window_t *window = ui_companion_driver_get_window_ptr();

   if (window)
   {
      char title[128];

      title[0] = '\0';

      video_driver_get_window_title(title, sizeof(title));

      if (title[0])
         window->set_title(&main_window, title);
   }
}
Пример #10
0
static LRESULT CALLBACK ShaderDlgWndProc(HWND hwnd, UINT message,
      WPARAM wparam, LPARAM lparam)
{
   int i, pos;
   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);

   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;

         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:
         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;

         shader_dlg_refresh_trackbar_label(i);
         break;

   }

   return DefWindowProc(hwnd, message, wparam, lparam);
}
Пример #11
0
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);

}