mirror of
https://github.com/LIV2/WinUAE.git
synced 2025-12-06 00:12:52 +00:00
119 lines
2.5 KiB
C
119 lines
2.5 KiB
C
#ifndef __DXWRAP_H__
|
|
#define __DXWRAP_H__
|
|
|
|
#include "rtgmodes.h"
|
|
#include <d3d9.h>
|
|
#include <D3dkmthk.h>
|
|
|
|
#define MAX_DISPLAYS 10
|
|
|
|
struct ScreenResolution
|
|
{
|
|
uae_u32 width; /* in pixels */
|
|
uae_u32 height; /* in pixels */
|
|
};
|
|
|
|
#define MAX_PICASSO_MODES 300
|
|
#define MAX_REFRESH_RATES 100
|
|
|
|
#define REFRESH_RATE_RAW 1
|
|
#define REFRESH_RATE_LACE 2
|
|
|
|
struct PicassoResolution
|
|
{
|
|
struct ScreenResolution res;
|
|
int depth; /* depth in bytes-per-pixel */
|
|
int residx;
|
|
int refresh[MAX_REFRESH_RATES]; /* refresh-rates in Hz */
|
|
int refreshtype[MAX_REFRESH_RATES]; /* 0=normal,1=raw,2=lace */
|
|
TCHAR name[25];
|
|
/* Bit mask of RGBFF_xxx values. */
|
|
uae_u32 colormodes;
|
|
int rawmode;
|
|
bool lace; // all modes lace
|
|
};
|
|
|
|
struct MultiDisplay {
|
|
bool primary;
|
|
GUID ddguid;
|
|
HMONITOR monitor;
|
|
TCHAR *adaptername, *adapterid, *adapterkey;
|
|
TCHAR *monitorname, *monitorid;
|
|
TCHAR *fullname;
|
|
struct PicassoResolution *DisplayModes;
|
|
RECT rect;
|
|
RECT workrect;
|
|
LUID AdapterLuid;
|
|
UINT VidPnSourceId;
|
|
UINT AdapterHandle;
|
|
bool HasAdapterData;
|
|
};
|
|
extern struct MultiDisplay Displays[MAX_DISPLAYS + 1];
|
|
|
|
extern int amigamonid;
|
|
|
|
struct winuae_currentmode {
|
|
unsigned int flags;
|
|
int native_width, native_height, native_depth, pitch;
|
|
int current_width, current_height, current_depth;
|
|
int amiga_width, amiga_height;
|
|
int initdone;
|
|
int fullfill;
|
|
int vsync;
|
|
int freq;
|
|
};
|
|
|
|
#define MAX_AMIGAMONITORS 4
|
|
struct AmigaMonitor {
|
|
int monitor_id;
|
|
HWND hAmigaWnd;
|
|
HWND hMainWnd;
|
|
struct MultiDisplay *md;
|
|
|
|
RECT amigawin_rect, mainwin_rect;
|
|
RECT amigawinclip_rect;
|
|
int window_extra_width, window_extra_height;
|
|
int window_extra_height_bar;
|
|
int win_x_diff, win_y_diff;
|
|
int setcursoroffset_x, setcursoroffset_y;
|
|
int mouseposx, mouseposy;
|
|
int windowmouse_max_w;
|
|
int windowmouse_max_h;
|
|
int ratio_width, ratio_height;
|
|
int ratio_adjust_x, ratio_adjust_y;
|
|
bool ratio_sizing;
|
|
bool render_ok, wait_render;
|
|
int dpi;
|
|
|
|
int in_sizemove;
|
|
int manual_painting_needed;
|
|
int minimized;
|
|
int screen_is_picasso;
|
|
int screen_is_initialized;
|
|
int scalepicasso;
|
|
bool rtg_locked;
|
|
int p96_double_buffer_firstx, p96_double_buffer_lastx;
|
|
int p96_double_buffer_first, p96_double_buffer_last;
|
|
int p96_double_buffer_needs_flushing;
|
|
|
|
HWND hStatusWnd;
|
|
HBRUSH hStatusBkgB;
|
|
|
|
struct winuae_currentmode currentmode;
|
|
struct uae_filter *usedfilter;
|
|
};
|
|
extern struct AmigaMonitor *amon;
|
|
extern struct AmigaMonitor AMonitors[MAX_AMIGAMONITORS];
|
|
|
|
typedef enum
|
|
{
|
|
red_mask,
|
|
green_mask,
|
|
blue_mask
|
|
} DirectDraw_Mask_e;
|
|
|
|
extern const TCHAR *DXError(HRESULT hr);
|
|
extern TCHAR *outGUID (const GUID *guid);
|
|
|
|
#endif
|