hyprpicker/src/hyprpicker.hpp

64 lines
1.5 KiB
C++
Raw Normal View History

2022-09-02 18:06:00 +02:00
#pragma once
#include "defines.hpp"
#include "helpers/LayerSurface.hpp"
#include "helpers/PoolBuffer.hpp"
2022-09-02 20:44:42 +02:00
enum eOutputMode {
OUTPUT_HEX = 0,
OUTPUT_RGB
};
2022-09-02 18:06:00 +02:00
class CHyprpicker {
public:
void init();
std::mutex m_mtTickMutex;
wl_compositor* m_pCompositor;
wl_display* m_pWLDisplay;
wl_registry* m_pWLRegistry;
wl_shm* m_pWLSHM;
zwlr_layer_shell_v1* m_pLayerShell;
zwlr_screencopy_manager_v1* m_pSCMgr;
2022-09-02 20:44:42 +02:00
eOutputMode m_bSelectedOutputMode = OUTPUT_HEX;
2022-09-02 21:14:44 +02:00
bool m_bFancyOutput = true;
2022-09-02 18:06:00 +02:00
bool m_bRunning = true;
std::vector<std::unique_ptr<SMonitor>> m_vMonitors;
std::vector<std::unique_ptr<CLayerSurface>> m_vLayerSurfaces;
void createSeat(wl_seat*);
CLayerSurface* m_pLastSurface;
Vector2D m_vLastCoords;
void renderSurface(CLayerSurface*, bool forceInactive = false);
2022-09-02 18:06:00 +02:00
void createBuffer(SPoolBuffer*, int32_t, int32_t, uint32_t);
void destroyBuffer(SPoolBuffer*);
int createPoolFile(size_t, std::string&);
bool setCloexec(const int&);
void recheckACK();
void sendFrame(CLayerSurface*);
SPoolBuffer* getBufferForLS(CLayerSurface*);
void convertBuffer(SPoolBuffer*);
void markDirty();
void finish(int code = 0);
2022-09-02 19:39:47 +02:00
CColor getColorFromPixel(CLayerSurface*, Vector2D);
2022-09-02 18:06:00 +02:00
private:
};
inline std::unique_ptr<CHyprpicker> g_pHyprpicker;