summaryrefslogtreecommitdiff
path: root/Servers/WindowServer/WSCursor.h
blob: 3dae5b741e5f361ae61b86588a8be79051ae2b26 (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
34
35
#pragma once

#include <LibDraw/GraphicsBitmap.h>

enum class WSStandardCursor {
    None = 0,
    Arrow,
    IBeam,
    ResizeHorizontal,
    ResizeVertical,
    ResizeDiagonalTLBR,
    ResizeDiagonalBLTR,
    Hand,
    Drag,
};

class WSCursor : public RefCounted<WSCursor> {
public:
    static NonnullRefPtr<WSCursor> create(NonnullRefPtr<GraphicsBitmap>&&, const Point& hotspot);
    static NonnullRefPtr<WSCursor> create(NonnullRefPtr<GraphicsBitmap>&&);
    static RefPtr<WSCursor> create(WSStandardCursor);
    ~WSCursor();

    Point hotspot() const { return m_hotspot; }
    const GraphicsBitmap& bitmap() const { return *m_bitmap; }

    Rect rect() const { return m_bitmap->rect(); }
    Size size() const { return m_bitmap->size(); }

private:
    WSCursor(NonnullRefPtr<GraphicsBitmap>&&, const Point&);

    RefPtr<GraphicsBitmap> m_bitmap;
    Point m_hotspot;
};