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