summaryrefslogtreecommitdiff
path: root/src/protocols/FrogColorManagement.hpp
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2025-01-07 21:32:50 +0300
committerGitHub <noreply@github.com>2025-01-07 18:32:50 +0000
commit830350a1f7a5ad653f33f2c62dd1694249a2f1e2 (patch)
tree360ad27b49238cacf999f3ab0a8fbbdee9c8251c /src/protocols/FrogColorManagement.hpp
parent95542e44884d2131a742f92013826a0b5f341b33 (diff)
core: Add support for HDR and color management protocols (#8715)
Diffstat (limited to 'src/protocols/FrogColorManagement.hpp')
-rw-r--r--src/protocols/FrogColorManagement.hpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/protocols/FrogColorManagement.hpp b/src/protocols/FrogColorManagement.hpp
new file mode 100644
index 00000000..6c00e38d
--- /dev/null
+++ b/src/protocols/FrogColorManagement.hpp
@@ -0,0 +1,55 @@
+#pragma once
+
+#include <memory>
+#include <cstdint>
+#include "WaylandProtocol.hpp"
+#include "protocols/core/Compositor.hpp"
+#include "frog-color-management-v1.hpp"
+
+class CFrogColorManager {
+ public:
+ CFrogColorManager(SP<CFrogColorManagementFactoryV1> resource_);
+
+ bool good();
+
+ private:
+ SP<CFrogColorManagementFactoryV1> resource;
+};
+
+class CFrogColorManagementSurface {
+ public:
+ CFrogColorManagementSurface(SP<CFrogColorManagedSurface> resource_, SP<CWLSurfaceResource> surface_);
+
+ bool good();
+ wl_client* client();
+
+ WP<CFrogColorManagementSurface> self;
+ WP<CWLSurfaceResource> surface;
+
+ bool pqIntentSent = false;
+
+ private:
+ SP<CFrogColorManagedSurface> resource;
+ wl_client* pClient = nullptr;
+};
+
+class CFrogColorManagementProtocol : public IWaylandProtocol {
+ public:
+ CFrogColorManagementProtocol(const wl_interface* iface, const int& ver, const std::string& name);
+
+ virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id);
+
+ private:
+ void destroyResource(CFrogColorManager* resource);
+ void destroyResource(CFrogColorManagementSurface* resource);
+
+ std::vector<SP<CFrogColorManager>> m_vManagers;
+ std::vector<SP<CFrogColorManagementSurface>> m_vSurfaces;
+
+ friend class CFrogColorManager;
+ friend class CFrogColorManagementSurface;
+};
+
+namespace PROTO {
+ inline UP<CFrogColorManagementProtocol> frogColorManagement;
+};