summaryrefslogtreecommitdiff
path: root/src/desktop/view/View.hpp
blob: 4d777c36dd3926c337334e5712931650a7c6a396 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#pragma once

#include "WLSurface.hpp"
#include "../../helpers/math/Math.hpp"

namespace Desktop::View {
    enum eViewType : uint8_t {
        VIEW_TYPE_WINDOW = 0,
        VIEW_TYPE_SUBSURFACE,
        VIEW_TYPE_POPUP,
        VIEW_TYPE_LAYER_SURFACE,
        VIEW_TYPE_LOCK_SCREEN,
    };

    class IView {
      public:
        virtual ~IView() = default;

        virtual SP<Desktop::View::CWLSurface> wlSurface() const;
        virtual SP<CWLSurfaceResource>        resource() const;
        virtual bool                          aliveAndVisible() const;
        virtual eViewType                     type() const              = 0;
        virtual bool                          visible() const           = 0;
        virtual bool                          desktopComponent() const  = 0;
        virtual std::optional<CBox>           logicalBox() const        = 0;
        virtual std::optional<CBox>           surfaceLogicalBox() const = 0;

      protected:
        IView(SP<Desktop::View::CWLSurface> pWlSurface);

        SP<Desktop::View::CWLSurface> m_wlSurface;
    };
};