Mercurial > minori
diff include/sys/x11/settings.h @ 351:c844f8bb87ce
gui/theme: add xsettings backend
this also adds newly-necessary endianness methods in core/endian.h
which just so happen to be constexpr as well
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Sun, 14 Jul 2024 23:23:56 -0400 |
parents | |
children | 99c961c91809 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/sys/x11/settings.h Sun Jul 14 23:23:56 2024 -0400 @@ -0,0 +1,40 @@ +#ifndef MINORI_SYS_X11_SETTINGS_H_ +#define MINORI_SYS_X11_SETTINGS_H_ + +#include <cstdint> +#include <string> +#include <vector> + +namespace x11 { + +/* stores the item, type, etc */ +struct SettingsItem { + enum Type { + TypeInt = 0, + TypeStr = 1, + TypeRgba = 2, + }; + + /* could technically be a union */ + struct Data { + std::uint32_t integer; + std::string string; + struct { + std::uint16_t red, green, blue, alpha; + } rgba; + }; + + bool VerifyType(); + + std::uint8_t type; /* one of Type */ + std::string name; /* name of the item */ + std::uint32_t serial; /* last-changed serial */ + Data data; /* type-specific data */ +}; + +bool GetSettings(std::vector<SettingsItem>& settings); +bool FindSetting(const std::string& name, SettingsItem& setting); + +} + +#endif /* MINORI_SYS_X11_SETTINGS_H_ */ \ No newline at end of file