File indexing completed on 2025-04-20 08:02:30
0001 /* 0002 SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 #pragma once 0007 0008 #include "kwin_export.h" 0009 0010 #include <QMarginsF> 0011 #include <QObject> 0012 #include <memory> 0013 0014 struct wl_resource; 0015 0016 namespace KWin 0017 { 0018 0019 class GraphicsBuffer; 0020 class Display; 0021 class ShadowManagerInterfacePrivate; 0022 class ShadowInterfacePrivate; 0023 0024 class KWIN_EXPORT ShadowManagerInterface : public QObject 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 explicit ShadowManagerInterface(Display *display, QObject *parent = nullptr); 0030 ~ShadowManagerInterface() override; 0031 0032 private: 0033 std::unique_ptr<ShadowManagerInterfacePrivate> d; 0034 }; 0035 0036 class KWIN_EXPORT ShadowInterface : public QObject 0037 { 0038 Q_OBJECT 0039 public: 0040 ~ShadowInterface() override; 0041 0042 GraphicsBuffer *left() const; 0043 GraphicsBuffer *topLeft() const; 0044 GraphicsBuffer *top() const; 0045 GraphicsBuffer *topRight() const; 0046 GraphicsBuffer *right() const; 0047 GraphicsBuffer *bottomRight() const; 0048 GraphicsBuffer *bottom() const; 0049 GraphicsBuffer *bottomLeft() const; 0050 0051 QMarginsF offset() const; 0052 0053 private: 0054 explicit ShadowInterface(ShadowManagerInterface *manager, wl_resource *resource); 0055 friend class ShadowManagerInterfacePrivate; 0056 0057 std::unique_ptr<ShadowInterfacePrivate> d; 0058 }; 0059 0060 }