File: DisplayMode.h

package info (click to toggle)
jazz2-native 3.5.0-2
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid
  • size: 16,912 kB
  • sloc: cpp: 172,557; xml: 113; python: 36; makefile: 5; sh: 2
file content (86 lines) | stat: -rw-r--r-- 2,724 bytes parent folder | download
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
#pragma once

namespace nCine
{
	/// Display properties
	class DisplayMode
	{
	public:
		enum class DoubleBuffering {
			Disabled,
			Enabled
		};

		enum class VSync {
			Disabled,
			Enabled
		};

		DisplayMode()
			: DisplayMode(0, 0, 0, 0, 0, 0, DoubleBuffering::Disabled, VSync::Disabled) {}
		DisplayMode(std::uint8_t redBits, std::uint8_t greenBits, std::uint8_t blueBits)
			: DisplayMode(redBits, greenBits, blueBits, 0, 0, 0, DoubleBuffering::Enabled, VSync::Disabled) {}
		DisplayMode(std::uint8_t redBits, std::uint8_t greenBits, std::uint8_t blueBits, std::uint8_t alphaBits)
			: DisplayMode(redBits, greenBits, blueBits, alphaBits, 0, 0, DoubleBuffering::Enabled, VSync::Disabled) {}
		DisplayMode(std::uint8_t depthBits, std::uint8_t stencilBits, DoubleBuffering dbMode, VSync vsMode)
			: DisplayMode(0, 0, 0, 0, depthBits, stencilBits, dbMode, vsMode) {}
		DisplayMode(std::uint8_t redBits, std::uint8_t greenBits, std::uint8_t blueBits, std::uint8_t alphaBits,
					std::uint8_t depthBits, std::uint8_t stencilBits, DoubleBuffering dbMode, VSync vsMode)
			: redBits_(redBits), greenBits_(greenBits), blueBits_(blueBits), alphaBits_(alphaBits),
			depthBits_(depthBits), stencilBits_(stencilBits), isDoubleBuffered_(dbMode == DoubleBuffering::Enabled),
			hasVSync_(vsMode == VSync::Enabled) {}

		/// Returns the number of bits for the red channel
		inline std::uint8_t redBits() const {
			return redBits_;
		}
		/// Returns the number of bits for the green channel
		inline std::uint8_t greenBits() const {
			return greenBits_;
		}
		/// Returns the number of bits for the blue channel
		inline std::uint8_t blueBits() const {
			return blueBits_;
		}
		/// Returns the number of bits for the alpha channel
		inline std::uint8_t alphaBits() const {
			return alphaBits_;
		}
		/// Returns the number of bits for the depth buffer
		inline std::uint8_t depthBits() const {
			return depthBits_;
		}
		/// Returns the number of bits for the stencil buffer
		inline std::uint8_t stencilBits() const {
			return stencilBits_;
		}
		/// Returns true if the display is double buffered
		inline bool isDoubleBuffered() const {
			return isDoubleBuffered_;
		}
		/// Returns true if the dislpay has V-sync enabled
		inline bool hasVSync() const {
			return hasVSync_;
		}

	private:
		/// Red component bits
		std::uint8_t redBits_;
		/// Green component bits
		std::uint8_t greenBits_;
		/// Blue component bits
		std::uint8_t blueBits_;
		/// Alpha component bits
		std::uint8_t alphaBits_;
		/// Depth buffer size in bit
		std::uint8_t depthBits_;
		/// Stencil buffer size in bit
		std::uint8_t stencilBits_;
		/// Double buffering flag
		bool isDoubleBuffered_;
		/// VSync flag
		bool hasVSync_;
	};

}