Krita Source Code Documentation
Loading...
Searching...
No Matches
KisWaylandSurfaceColorManager.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KISWAYLANDSURFACECOLORMANAGER_H
7#define KISWAYLANDSURFACECOLORMANAGER_H
8
9#include <QPointer>
10
12
15
17{
18 Q_OBJECT
19public:
20 KisWaylandSurfaceColorManager(QWindow *window, QObject *parent = nullptr);
22
23 bool isReady() const override;
27 void unsetSurfaceDescription() override;
28 std::optional<KisSurfaceColorimetry::SurfaceDescription> surfaceDescription() const override;
29 std::optional<KisSurfaceColorimetry::RenderIntent> renderingIntent() const override;
30 std::optional<KisSurfaceColorimetry::SurfaceDescription> preferredSurfaceDescription() const override;
31
32 static std::shared_ptr<KisWaylandAPIColorManager> getOrCreateGlobalWaylandManager();
33
35 Disconnected = 0, // 1) the underlying wayland manager is inactive
36 Connected, // 1) the wayland manager is active; 2) m_platformWindowStateDetector is connected
37 WaylandWindowCreated, // 1) QWaylandWindow is created; 2) surfaceCreated() and surfaceDestroyed() signals are connected
38 WaylandSurfaceCreated, // 1) wayland surface is created inside Qt
39 APIFeedbackCreated, // 1) surface feedback (m_surface) is created and connected to the wayland surface
40 PreferredDescriptionReceived // 1) m_preferredDescription is initialized
41 };
43
44private Q_SLOTS:
46
49
52
53private:
54 void reinitialize();
55 void setReadyImpl(bool value);
56
58 WaylandSurfaceState tryDeinitialize(std::optional<KisWaylandSurfaceColorManager::WaylandSurfaceState> targetState);
59
60private:
62 std::shared_ptr<KisWaylandAPIColorManager> m_waylandManager;
63 std::unique_ptr<KisWaylandAPISurface> m_surface;
64
65 std::optional<KisSurfaceColorimetry::SurfaceDescription> m_currentDescription;
66 std::optional<KisSurfaceColorimetry::RenderIntent> m_renderingIntent;
67 std::optional<KisSurfaceColorimetry::SurfaceDescription> m_preferredDescription;
68
69 bool m_isReady {false};
70
71 QMetaObject::Connection m_surfaceCreatedConnection;
72 QMetaObject::Connection m_surfaceDestroyedConnection;
74};
75
76#endif /* KISWAYLANDSURFACECOLORMANAGER_H */
float value(const T *src, size_t ch)
bool supportsSurfaceDescription(const KisSurfaceColorimetry::SurfaceDescription &desc) override
static std::shared_ptr< KisWaylandAPIColorManager > getOrCreateGlobalWaylandManager()
QFuture< bool > setSurfaceDescription(const KisSurfaceColorimetry::SurfaceDescription &desc, KisSurfaceColorimetry::RenderIntent intent) override
std::optional< KisSurfaceColorimetry::RenderIntent > m_renderingIntent
QMetaObject::Connection m_surfaceCreatedConnection
std::unique_ptr< KisWaylandAPISurface > m_surface
std::optional< KisSurfaceColorimetry::SurfaceDescription > preferredSurfaceDescription() const override
WaylandSurfaceState tryDeinitialize(std::optional< KisWaylandSurfaceColorManager::WaylandSurfaceState > targetState)
std::optional< KisSurfaceColorimetry::SurfaceDescription > surfaceDescription() const override
bool supportsRenderIntent(const KisSurfaceColorimetry::RenderIntent &intent) override
std::optional< KisSurfaceColorimetry::SurfaceDescription > m_currentDescription
std::shared_ptr< KisWaylandAPIColorManager > m_waylandManager
std::optional< KisSurfaceColorimetry::RenderIntent > renderingIntent() const override
std::optional< KisSurfaceColorimetry::SurfaceDescription > m_preferredDescription
KisWaylandSurfaceColorManager(QWindow *window, QObject *parent=nullptr)
QMetaObject::Connection m_surfaceDestroyedConnection