1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 | /********************************************************************
*
* Created: 3/3/2014 12:32
*
* File: fsIDisplay.h
*
* Author: Mick Waites
*
* Purpose: Creation and control of the app window and full
* screen display (where applicable) and transformation
* of visual entities from canvas space to screen space.
*
*********************************************************************/
#ifndef fsIDisplayhdr
#define fsIDisplayhdr
#include <list>
#include <fsCore/src/fsCUniqueId.h>
#include "fsINode.h"
#include "src/fsCDisplayMode.h"
class fsCAppCoreMain;
class fsICursor;
class fsCScreenFade;
class fsIDisplay : protected fsINode
{
friend class fsCAppCoreMain;
friend class fsICursor;
friend class fsCScreenFade;
public:
static const fsCUniqueId mEventFullScreenToggleMsg;
void defaultCameraFlagSet(fsU32 pFlag);
fsBool wideScreenGet() const;
fsBool windowModeAvailableGet() const;
void fullScreenToggle();
fsS32 designCanvasWidthGet() const;
fsS32 designCanvasHeightGet() const;
fsS32 visibleCanvasWidthGet() const;
fsS32 visibleCanvasHeightGet() const;
fsBool displayIsWideScreenGet() const;
fsBool screenModeSet(fsBool pFullScreen);
const fsVec2d& scaleGet() const;
const fsAffineMtx2d& renderMatrixGet() const;
static fsBool fixedAspectGet();
static fsIDisplay* create();
static fsIDisplay* instanceGet();
virtual ~fsIDisplay();<--- Destructor in derived class
protected:
fsS32 retinaScaleFactorGet() const;
void clipWindowSet(const fsCDisplayMode* const pDisplayMode);
virtual fsBool windowModeAvailableGetDo(const fsCDisplayMode* const pBestMode) const { return false; }
virtual fsBool displayTypeIsDesktopGet() const = 0;
virtual fsPoint fixedDisplaySizeGet() const = 0;
virtual void desktopScreenModesEnumerateDo() = 0;
virtual fsBool desktopScreenModeSetDo(const fsCDisplayMode* pDisplayMode, fsBool pFullScreen) = 0;
const fsPoint& startupDimensionsGet() const { return mStartupDimensions; }
void screenModeAdd(fsS32 pW, fsS32 pH, fsS32 pBitDepth);
fsIDisplay();
fsCDisplayMode mDesignedDisplayMode;
private:
virtual void defaultCameraFlagSetDo(fsU32 pFlag) {}
virtual fsS32 retinaScaleFactorGetDo() const { return 1; }
virtual void clipWindowSetDo(const fsCDisplayMode* const pDisplayMode) {}
void windowModeLocate();
typedef fsBool (fsIDisplay::*fsTDistlayMemCriteriaFnc)(fsCDisplayMode* pScreenMode) const;
fsBool failSafeResolutionCriteria(fsCDisplayMode* pScreenMode) const;
fsBool desktopResolutionCriteria(fsCDisplayMode* pScreenMode) const;
void displayModeLocate(fsCDisplayMode*& pMode, fsTDistlayMemCriteriaFnc pCriteria, fsBool pFirstMatch);
void desktopScreenModesEnumerate();
void initialise();
void designedScreenModeDetermine(const fsCDisplayMode* pMode = nullptr);
void matrixSetForDisplaySize(const fsCDisplayMode* pDisplayMode);
void bestWindowedScreenModeDetermine();
void fixedAspectCalculate(fsF32& scaleX, fsF32& scaleY, const fsCDisplayMode* const pDisplayMode);
fsBool simulatedFixedDisplayConfigure();
fsBool mSimulatingFixedDisplay;
static const fsStr mAppCanvasWKey;
static const fsStr mAppCanvasHKey;
fsPoint mStartupDimensions;
fsCDisplayMode mDeviceOriginalDisplayMode;
fsCDisplayMode mDesktopWindowDisplayMode;
fsBool mFullScreen;
fsCDisplayMode* mBestDeviceDisplayMode;
std::list<fsCDisplayMode*> mScreenModes;
};
#endif
|