VirtualC64 v5.0 beta
Commodore 64 Emulator
Loading...
Searching...
No Matches
MonitorTypes.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2// This file is part of VirtualC64
3//
4// Copyright (C) Dirk W. Hoffmann. www.dirkwhoffmann.de
5// This FILE is dual-licensed. You are free to choose between:
6//
7// - The GNU General Public License v3 (or any later version)
8// - The Mozilla Public License v2
9//
10// SPDX-License-Identifier: GPL-3.0-or-later OR MPL-2.0
11// -----------------------------------------------------------------------------
13
14#pragma once
15
16#include "Reflection.h"
17
18namespace vc64 {
19
20//
21// Enumerations
22//
23
34typedef PALETTE Palette;
35
36struct PaletteEnum : util::Reflection<PaletteEnum, Palette> {
37
38 static constexpr long minVal = 0;
39 static constexpr long maxVal = PALETTE_SEPIA;
40 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
41
42 static const char *prefix() { return "PALETTE"; }
43 static const char *key(long value)
44 {
45 switch (value) {
46
47 case PALETTE_COLOR: return "COLOR";
48 case PALETTE_BLACK_WHITE: return "BLACK_WHITE";
49 case PALETTE_PAPER_WHITE: return "PAPER_WHITE";
50 case PALETTE_GREEN: return "GREEN";
51 case PALETTE_AMBER: return "AMBER";
52 case PALETTE_SEPIA: return "SEPIA";
53 }
54 return "???";
55 }
56};
57
65typedef UPSCALER Upscaler;
66
67struct UpscalerEnum : util::Reflection<UpscalerEnum, Upscaler> {
68
69 static constexpr long minVal = 0;
70 static constexpr long maxVal = UPSCALER_XBR_4X;
71 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
72
73 static const char *prefix() { return "UPSCALER"; }
74 static const char *key(long value)
75 {
76 switch (value) {
77
78 case UPSCALER_NONE: return "NONE";
79 case UPSCALER_EPX_2X: return "EPX_2X";
80 case UPSCALER_XBR_4X: return "XBR_4X";
81 }
82 return "???";
83 }
84};
85
95typedef DOTMASK Dotmask;
96
97struct DotmaskEnum : util::Reflection<DotmaskEnum, Dotmask> {
98
99 static constexpr long minVal = 0;
100 static constexpr long maxVal = DOTMASK_TRISECTED_SHIFTED;
101 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
102
103 static const char *prefix() { return "DOTMASK"; }
104 static const char *key(long value)
105 {
106 switch (value) {
107
108 case DOTMASK_NONE: return "NONE";
109 case DOTMASK_BISECTED: return "BISECTED";
110 case DOTMASK_TRISECTED: return "TRISECTED";
111 case DOTMASK_BISECTED_SHIFTED: return "BISECTED_SHIFTED";
112 case DOTMASK_TRISECTED_SHIFTED: return "TRISECTED_SHIFTED";
113 }
114 return "???";
115 }
116};
117
125typedef SCANLINES Scanlines;
126
127struct ScanlinesEnum : util::Reflection<ScanlinesEnum, Scanlines> {
128
129 static constexpr long minVal = 0;
130 static constexpr long maxVal = SCANLINES_SUPERIMPOSE;
131 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
132
133 static const char *prefix() { return "SCANLINES"; }
134 static const char *key(long value)
135 {
136 switch (value) {
137
138 case SCANLINES_NONE: return "NONE";
139 case SCANLINES_EMBEDDED: return "EMBEDDED";
140 case SCANLINES_SUPERIMPOSE: return "SUPERIMPOSE";
141 }
142 return "???";
143 }
144};
145
146//
147// Structures
148//
149
150typedef struct
151{
152 // Colors
153 Palette palette;
154 isize brightness;
155 isize contrast;
156 isize saturation;
157
158 // Geometry
159 isize hCenter;
160 isize vCenter;
161 isize hZoom;
162 isize vZoom;
163
164 // Effects
165 Upscaler upscaler;
166
167 bool blur;
168 isize blurRadius;
169
170 bool bloom;
171 isize bloomRadius;
172 isize bloomBrightness;
173 isize bloomWeight;
174
175 Dotmask dotmask;
176 isize dotMaskBrightness;
177
178 Scanlines scanlines;
179 isize scanlineBrightness;
180 isize scanlineWeight;
181
182 bool disalignment;
183 isize disalignmentH;
184 isize disalignmentV;
185}
186MonitorConfig;
187
188}
VirtualC64 project namespace.
Definition CmdQueue.cpp:16
UPSCALER
Pixel upscaler.
Definition MonitorTypes.h:60
@ UPSCALER_XBR_4X
XBR upscaler (4x)
Definition MonitorTypes.h:63
@ UPSCALER_NONE
No upscaler.
Definition MonitorTypes.h:61
@ UPSCALER_EPX_2X
EPX upscaler (2x)
Definition MonitorTypes.h:62
DOTMASK
Dotmask.
Definition MonitorTypes.h:88
@ DOTMASK_NONE
No dotmask.
Definition MonitorTypes.h:89
@ DOTMASK_BISECTED_SHIFTED
Dotmask pattern 3.
Definition MonitorTypes.h:92
@ DOTMASK_TRISECTED_SHIFTED
Dotmask pattern 4.
Definition MonitorTypes.h:93
@ DOTMASK_TRISECTED
Dotmask pattern 2.
Definition MonitorTypes.h:91
@ DOTMASK_BISECTED
Dotmask pattern 1.
Definition MonitorTypes.h:90
SCANLINES
Scanlines.
Definition MonitorTypes.h:120
@ SCANLINES_EMBEDDED
Embed scanlines in the emulator texture.
Definition MonitorTypes.h:122
@ SCANLINES_SUPERIMPOSE
Emulate scanlines in the fragment shader.
Definition MonitorTypes.h:123
@ SCANLINES_NONE
No scanlines.
Definition MonitorTypes.h:121
PALETTE
Color palette.
Definition MonitorTypes.h:26
@ PALETTE_PAPER_WHITE
Paper white monochrome palette.
Definition MonitorTypes.h:29
@ PALETTE_GREEN
Green monochrome palette.
Definition MonitorTypes.h:30
@ PALETTE_AMBER
Amber monochrome palette.
Definition MonitorTypes.h:31
@ PALETTE_BLACK_WHITE
Black and white monochrome palette.
Definition MonitorTypes.h:28
@ PALETTE_COLOR
Standard C64 color palette.
Definition MonitorTypes.h:27
@ PALETTE_SEPIA
Sepia monochrome palette.
Definition MonitorTypes.h:32