hyprland-plugins/hyprexpo/overview.hpp

89 lines
2.3 KiB
C++
Raw Permalink Normal View History

2024-04-03 19:14:34 +01: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();
2025-09-13 00:59:41 +01:00
void setClosing(bool closing);
void resetSwipe();
2024-04-03 19:14:34 +01:00
void onSwipeUpdate(double delta);
void onSwipeEnd();
// close without a selection
2024-10-21 19:17:02 +01:00
void close();
void selectHoveredWorkspace();
2024-04-03 19:14:34 +01:00
2024-10-21 19:17:02 +01:00
bool blockOverviewRendering = false;
bool blockDamageReporting = false;
2024-04-03 19:14:34 +01:00
2024-10-21 19:17:02 +01:00
PHLMONITORREF pMonitor;
2025-09-11 21:13:16 +01:00
bool m_isSwiping = false;
2024-04-03 19:14:34 +01:00
private:
2024-12-04 09:58:09 -05:00
void redrawID(int id, bool forcelowres = false);
void redrawAll(bool forcelowres = false);
void onWorkspaceChange();
2024-12-22 16:33:07 +00:00
void fullRender();
2024-04-03 19:14:34 +01:00
2024-12-04 09:58:09 -05:00
int SIDE_LENGTH = 3;
int GAP_WIDTH = 5;
CHyprColor BG_COLOR = CHyprColor{0.1, 0.1, 0.1, 1.0};
2024-04-03 19:14:34 +01:00
2024-12-04 09:58:09 -05:00
bool damageDirty = false;
2024-04-03 19:14:34 +01:00
struct SWorkspaceImage {
CFramebuffer fb;
int64_t workspaceID = -1;
PHLWORKSPACE pWorkspace;
CBox box;
};
2024-05-08 13:48:33 +01:00
Vector2D lastMousePosLocal = Vector2D{};
2024-04-03 19:14:34 +01:00
2024-05-08 13:48:33 +01:00
int openedID = -1;
int closeOnID = -1;
2024-04-03 19:14:34 +01:00
2024-05-08 13:48:33 +01:00
std::vector<SWorkspaceImage> images;
2024-04-03 19:14:34 +01:00
2024-05-08 13:48:33 +01:00
PHLWORKSPACE startedOn;
2024-04-03 19:14:34 +01:00
2025-01-07 19:30:33 +01:00
PHLANIMVAR<Vector2D> size;
PHLANIMVAR<Vector2D> pos;
2024-04-03 19:14:34 +01:00
2024-05-08 13:48:33 +01:00
bool closing = false;
2024-04-03 19:14:34 +01:00
2024-05-08 13:48:33 +01:00
SP<HOOK_CALLBACK_FN> mouseMoveHook;
SP<HOOK_CALLBACK_FN> mouseButtonHook;
SP<HOOK_CALLBACK_FN> touchMoveHook;
SP<HOOK_CALLBACK_FN> touchDownHook;
2024-04-03 19:14:34 +01:00
2024-05-08 13:48:33 +01:00
bool swipe = false;
bool swipeWasCommenced = false;
2024-12-22 16:33:07 +00:00
friend class COverviewPassElement;
2024-04-03 19:14:34 +01:00
};
2024-12-04 09:58:09 -05:00
inline std::unique_ptr<COverview> g_pOverview;