2025-12-14 13:42:02 -06:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "./math/Math.hpp"
|
2026-05-01 19:02:01 -04:00
|
|
|
#include "../desktop/DesktopTypes.hpp"
|
2025-12-14 13:42:02 -06:00
|
|
|
|
2026-03-29 00:41:45 +03:00
|
|
|
namespace Render {
|
|
|
|
|
struct SRenderData;
|
|
|
|
|
}
|
2025-12-14 13:42:02 -06:00
|
|
|
|
|
|
|
|
class CMonitorZoomController {
|
|
|
|
|
public:
|
|
|
|
|
bool m_resetCameraState = true;
|
|
|
|
|
|
2026-05-01 19:02:01 -04:00
|
|
|
void pinAnchor(const Vector2D& anchor);
|
|
|
|
|
void clearAnchor();
|
|
|
|
|
|
2026-03-29 00:41:45 +03:00
|
|
|
void applyZoomTransform(CBox& monbox, const Render::SRenderData& m_renderData);
|
2025-12-14 13:42:02 -06:00
|
|
|
|
|
|
|
|
private:
|
2026-05-01 19:02:01 -04:00
|
|
|
void zoomWithDetachedCamera(CBox& result, const Render::SRenderData& m_renderData);
|
|
|
|
|
Vector2D getAnchor(const PHLMONITORREF& monitor);
|
2025-12-14 13:42:02 -06:00
|
|
|
|
2026-05-01 19:02:01 -04:00
|
|
|
CBox m_camera;
|
|
|
|
|
Vector2D m_pinnedAnchor = {};
|
|
|
|
|
float m_lastZoomLevel = 1.0f;
|
|
|
|
|
bool m_padCamEdges = true;
|
|
|
|
|
bool m_anchorPinned = false;
|
2025-12-14 13:42:02 -06:00
|
|
|
};
|