-
Notifications
You must be signed in to change notification settings - Fork 7
/
easymotionDeco.hpp
75 lines (49 loc) · 2.24 KB
/
easymotionDeco.hpp
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#pragma once
#include <hyprland/src/config/ConfigDataValues.hpp>
#include <string>
#include <hyprland/src/render/decorations/IHyprWindowDecoration.hpp>
#include <hyprland/src/render/OpenGL.hpp>
#include <hyprland/src/devices/IKeyboard.hpp>
#include "globals.hpp"
class CHyprEasyLabel : public IHyprWindowDecoration {
public:
CHyprEasyLabel(PHLWINDOW, SMotionActionDesc *actionDesc);
virtual ~CHyprEasyLabel();
virtual SDecorationPositioningInfo getPositioningInfo();
virtual void onPositioningReply(const SDecorationPositioningReply& reply);
virtual void draw(CMonitor*, float a);
virtual eDecorationType getDecorationType();
virtual void updateWindow(PHLWINDOW);
virtual void damageEntire();
virtual eDecorationLayer getDecorationLayer();
virtual uint64_t getDecorationFlags();
bool m_bButtonsDirty = true;
virtual std::string getDisplayName();
PHLWINDOW getOwner();
std::string m_szLabel;
std::string m_szActionCmd;
std::string m_szTextFont;
std::string m_szWindowAddress;
int m_iTextSize;
int m_iPaddingTop;
int m_iPaddingBottom;
int m_iPaddingLeft;
int m_iPaddingRight;
int m_iRounding;
CColor m_cTextColor;
CColor m_cBackgroundColor;
int m_iBorderSize;
CGradientValueData m_cBorderGradient;
private:
int layoutWidth;
int layoutHeight;
SBoxExtents m_seExtents;
PHLWINDOW m_pWindow;
SP<CTexture> m_tTextTex;
bool m_bWindowSizeChanged = false;
void renderText(CTexture& out, const std::string& text, const CColor& color, const Vector2D& bufferSize, const float scale, const int fontSize);
CBox assignedBoxGlobal();
void renderMotionString(Vector2D& bufferSize, const float scale);
// for dynamic updates
int m_iLastHeight = 0;
};