/************************************************************** custom_video_powerstrip.h - PowerStrip interface routines --------------------------------------------------------- Switchres Modeline generation engine for emulation License GPL-2.0+ Copyright 2010-2021 Chris Kennedy, Antonio Giner, Alexandre Wodarczyk, Gil Delescluse **************************************************************/ #include "custom_video.h" //============================================================ // TYPE DEFINITIONS //============================================================ typedef struct { int HorizontalActivePixels; int HorizontalFrontPorch; int HorizontalSyncWidth; int HorizontalBackPorch; int VerticalActivePixels; int VerticalFrontPorch; int VerticalSyncWidth; int VerticalBackPorch; int PixelClockInKiloHertz; union { int w; struct { unsigned :1; unsigned HorizontalPolarityNegative:1; unsigned VerticalPolarityNegative:1; unsigned :29; } b; } TimingFlags; } MonitorTiming; class pstrip_timing : public custom_video { public: pstrip_timing(char *device_name, custom_video_settings *vs); ~pstrip_timing(); const char *api_name() { return "PowerStrip"; } bool init(); int caps() { return CUSTOM_VIDEO_CAPS_UPDATE | CUSTOM_VIDEO_CAPS_SCAN_EDITABLE | CUSTOM_VIDEO_CAPS_DESKTOP_EDITABLE; } bool update_mode(modeline *mode); bool get_timing(modeline *mode); bool set_timing(modeline *m); private: int ps_reset(); int ps_get_modeline(modeline *modeline); bool ps_set_modeline(modeline *modeline); int ps_get_monitor_timing(MonitorTiming *timing); int ps_set_monitor_timing(MonitorTiming *timing); int ps_set_monitor_timing_string(char *in); int ps_set_refresh(double vfreq); int ps_best_pclock(MonitorTiming *timing, int desired_pclock); int ps_create_resolution(modeline *modeline); bool ps_read_timing_string(char *in, MonitorTiming *timing); void ps_fill_timing_string(char *out, MonitorTiming *timing); bool ps_modeline_to_pstiming(modeline *modeline, MonitorTiming *timing); int ps_pstiming_to_modeline(MonitorTiming *timing, modeline *modeline); int ps_monitor_index (const char *display_name); char m_device_name[32]; char m_ps_timing[256]; int m_monitor_index = 0; modeline m_user_mode = {}; MonitorTiming m_timing_backup = {}; HWND hPSWnd = 0; };