Hyprland/src/helpers/MonitorZoomController.hpp

29 lines
690 B
C++
Raw Permalink Normal View History

#pragma once
#include "./math/Math.hpp"
#include "../desktop/DesktopTypes.hpp"
namespace Render {
struct SRenderData;
}
class CMonitorZoomController {
public:
bool m_resetCameraState = true;
void pinAnchor(const Vector2D& anchor);
void clearAnchor();
void applyZoomTransform(CBox& monbox, const Render::SRenderData& m_renderData);
private:
void zoomWithDetachedCamera(CBox& result, const Render::SRenderData& m_renderData);
Vector2D getAnchor(const PHLMONITORREF& monitor);
CBox m_camera;
Vector2D m_pinnedAnchor = {};
float m_lastZoomLevel = 1.0f;
bool m_padCamEdges = true;
bool m_anchorPinned = false;
};