Hyprland/src/helpers/Monitor.hpp

56 lines
1.7 KiB
C++
Raw Normal View History

2022-03-17 16:56:33 +01:00
#pragma once
#include "../defines.hpp"
2022-03-17 18:25:16 +01:00
#include <deque>
#include "WLClasses.hpp"
2022-03-18 22:35:51 +01:00
#include <list>
2022-03-19 13:54:24 +01:00
#include <array>
2022-03-17 16:56:33 +01:00
struct SMonitor {
Vector2D vecPosition = Vector2D(0,0);
Vector2D vecSize = Vector2D(0,0);
Vector2D vecPixelSize = Vector2D(0,0);
Vector2D vecTransformedSize = Vector2D(0,0);
2022-03-17 16:56:33 +01:00
bool primary = false;
2022-03-20 11:14:24 +01:00
uint64_t ID = -1;
2022-03-20 15:55:47 +01:00
int activeWorkspace = -1;
float scale = 1;
2022-03-17 16:56:33 +01:00
std::string szName = "";
Vector2D vecReservedTopLeft = Vector2D(0,0);
Vector2D vecReservedBottomRight = Vector2D(0,0);
2022-03-17 18:25:16 +01:00
// WLR stuff
wlr_output* output = nullptr;
2022-03-19 21:46:29 +01:00
float refreshRate = 60;
2022-03-21 16:13:43 +01:00
wlr_output_damage* damage = nullptr;
int framesToSkip = 0;
bool noFrameSchedule = false;
wl_output_transform transform = WL_OUTPUT_TRANSFORM_NORMAL;
2022-05-31 14:01:00 +02:00
// for the special workspace
bool specialWorkspaceOpen = false;
2022-03-17 18:25:16 +01:00
2022-03-18 22:35:51 +01:00
// Double-linked list because we need to have constant mem addresses for signals
2022-03-19 14:00:24 +01:00
// We have to store pointers and use raw new/delete because they might be moved between them
// and I am lazy
std::array<std::list<SLayerSurface*>, 4> m_aLayerSurfaceLists;
2022-03-17 18:25:16 +01:00
DYNLISTENER(monitorFrame);
DYNLISTENER(monitorDestroy);
2022-04-21 18:11:28 +02:00
DYNLISTENER(monitorMode);
2022-03-18 22:35:51 +01:00
// hack: a group = workspaces on a monitor.
// I don't really care lol :P
wlr_ext_workspace_group_handle_v1* pWLRWorkspaceGroupHandle = nullptr;
2022-03-18 22:35:51 +01:00
// For the list lookup
bool operator==(const SMonitor& rhs) {
return vecPosition == rhs.vecPosition && vecSize == rhs.vecSize && szName == rhs.szName;
}
2022-03-17 16:56:33 +01:00
};