#pragma once #include "GuidUtils.h" class WorkArea; class MonitorWorkAreaMap { public: /** * Get work area based on virtual desktop id and monitor handle. * * @param[in] monitor Monitor handle. * * @returns Object representing single work area, interface to all actions available on work area * (e.g. moving windows through zone layout specified for that work area). */ WorkArea* const GetWorkArea(HMONITOR monitor) const; /** * Get work area based on virtual desktop id and the current cursor position. * * @returns Object representing single work area, interface to all actions available on work area * (e.g. moving windows through zone layout specified for that work area). */ WorkArea* const GetWorkAreaFromCursor() const; /** * Get work area on which specified window is located. * * @param[in] window Window handle. * * @returns Object representing single work area, interface to all actions available on work area * (e.g. moving windows through zone layout specified for that work area). */ WorkArea* const GetWorkAreaFromWindow(HWND window) const; /** * @returns All registered work areas. */ const std::unordered_map>& GetAllWorkAreas() const noexcept; /** * Register new work area. * * @param[in] monitor Monitor handle. * @param[in] workAra Object representing single work area. */ void AddWorkArea(HMONITOR monitor, std::unique_ptr workArea); /** * Clear all persisted work area related data. */ void Clear() noexcept; private: std::unordered_map> m_workAreaMap; };