File indexing completed on 2024-05-19 05:32:42

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 }