hyprland-plugins/hyprexpo/overview.hpp

80 lines
2 KiB
C++
Raw Permalink Normal View History

2024-04-03 20:14:34 +02:00
#pragma once
#define WLR_USE_UNSTABLE
#include "globals.hpp"
#include <hyprland/src/desktop/DesktopTypes.hpp>
#include <hyprland/src/render/Framebuffer.hpp>
#include <hyprland/src/helpers/AnimatedVariable.hpp>
#include <hyprland/src/managers/HookSystemManager.hpp>
#include <vector>
// saves on resources, but is a bit broken rn with blur.
// hyprland's fault, but cba to fix.
constexpr bool ENABLE_LOWRES = false;
class CMonitor;
class COverview {
public:
COverview(PHLWORKSPACE startedOn_, bool swipe = false);
~COverview();
void render();
void damage();
void onDamageReported();
void onPreRender();
void onSwipeUpdate(double delta);
void onSwipeEnd();
// close without a selection
void close();
bool blockOverviewRendering = false;
bool blockDamageReporting = false;
CMonitor* pMonitor = nullptr;
private:
void redrawID(int id, bool forcelowres = false);
void redrawAll(bool forcelowres = false);
void onWorkspaceChange();
int SIDE_LENGTH = 3;
int GAP_WIDTH = 5;
CColor BG_COLOR = CColor{0.1, 0.1, 0.1, 1.0};
bool damageDirty = false;
struct SWorkspaceImage {
CFramebuffer fb;
int64_t workspaceID = -1;
PHLWORKSPACE pWorkspace;
CBox box;
};
2024-05-08 14:48:33 +02:00
Vector2D lastMousePosLocal = Vector2D{};
2024-04-03 20:14:34 +02:00
2024-05-08 14:48:33 +02:00
int openedID = -1;
int closeOnID = -1;
2024-04-03 20:14:34 +02:00
2024-05-08 14:48:33 +02:00
std::vector<SWorkspaceImage> images;
2024-04-03 20:14:34 +02:00
2024-05-08 14:48:33 +02:00
PHLWORKSPACE startedOn;
2024-04-03 20:14:34 +02:00
2024-05-08 14:48:33 +02:00
CAnimatedVariable<Vector2D> size;
CAnimatedVariable<Vector2D> pos;
2024-04-03 20:14:34 +02:00
2024-05-08 14:48:33 +02:00
bool closing = false;
2024-04-03 20:14:34 +02:00
2024-05-08 14:48:33 +02:00
SP<HOOK_CALLBACK_FN> mouseMoveHook;
SP<HOOK_CALLBACK_FN> mouseButtonHook;
SP<HOOK_CALLBACK_FN> touchMoveHook;
SP<HOOK_CALLBACK_FN> touchUpHook;
2024-04-03 20:14:34 +02:00
2024-05-08 14:48:33 +02:00
bool swipe = false;
bool swipeWasCommenced = false;
2024-04-03 20:14:34 +02:00
};
inline std::unique_ptr<COverview> g_pOverview;