AppleWin/source/FrameBase.h
Andrea 6cffb30330
FrameBase: some changes to ease implementations (PR #910)
. simplify the interface FrameBase to make it easier to implement it for different cases (remove HDC and make parameters more explicit)
. remove functions which are only called on a Win32Frame (in which case a cast is guaranteed to succeed)
. otherwise there is the risk that every FrameBase implementation wants to add its own variants.
. FrameBase::FrameRefreshStatus() simplify implementation: pass all flags explicitly
2021-01-10 16:33:06 +00:00

64 lines
2.2 KiB
C++

#pragma once
#include "Video.h"
class FrameBase
{
public:
FrameBase();
virtual ~FrameBase();
HINSTANCE g_hInstance;
HWND g_hFrameWindow;
BOOL g_bConfirmReboot; // saved PageConfig REGSAVE
BOOL g_bMultiMon;
bool g_bFreshReset;
virtual void Initialize(void) = 0;
virtual void Destroy(void) = 0;
virtual void FrameDrawDiskLEDS() = 0;
virtual void FrameDrawDiskStatus() = 0;
virtual void FrameRefreshStatus(int drawflags) = 0;
virtual void FrameUpdateApple2Type() = 0;
virtual void FrameSetCursorPosByMousePos() = 0;
virtual void SetFullScreenShowSubunitStatus(bool bShow) = 0;
virtual bool GetBestDisplayResolutionForFullScreen(UINT& bestWidth, UINT& bestHeight, UINT userSpecifiedHeight = 0) = 0;
virtual int SetViewportScale(int nNewScale, bool bForce = false) = 0;
virtual void SetAltEnterToggleFullScreen(bool mode) = 0;
virtual void SetLoadedSaveStateFlag(const bool bFlag) = 0;
virtual void VideoPresentScreen(void) = 0;
void VideoRefreshScreen(uint32_t uRedrawWholeScreenVideoMode, bool bRedrawWholeScreen);
void VideoRedrawScreen(void);
void VideoRedrawScreenDuringFullSpeed(DWORD dwCyclesThisFrame, bool bInit = false);
void VideoRedrawScreenAfterFullSpeed(DWORD dwCyclesThisFrame);
void Video_RedrawAndTakeScreenShot(const char* pScreenshotFilename);
void Video_TakeScreenShot(const Video::VideoScreenShot_e ScreenShotType);
void Video_SaveScreenShot(const Video::VideoScreenShot_e ScreenShotType, const TCHAR* pScreenShotFileName);
void SetDisplayPrintScreenFileName(bool state) { g_bDisplayPrintScreenFileName = state; }
void Video_ResetScreenshotCounter(const std::string& pDiskImageFileName);
bool GetShowPrintScreenWarningDialog(void) { return g_bShowPrintScreenWarningDialog; }
void SetShowPrintScreenWarningDialog(bool state) { g_bShowPrintScreenWarningDialog = state; }
private:
void Util_MakeScreenShotFileName(TCHAR* pFinalFileName_, DWORD chars);
bool Util_TestScreenShotFileName(const TCHAR* pFileName);
bool g_bShowPrintScreenWarningDialog;
DWORD dwFullSpeedStartTime;
bool g_bDisplayPrintScreenFileName;
int g_nLastScreenShot;
std::string g_pLastDiskImageName;
static const int nMaxScreenShot = 999999999;
};