Port ViewModeSettings away from macros
Macros should be avoided if possible. Instead this commit replaces
the usage of macros with an std::variant
of the three ViewModeSettings.
As part of this refactoring, code that belongs to the VideModeSettings
class
class is moved there.
Edited by Felix Ernst