#pragma once #include #include #include #include #include #include "util.h" #include "Zone.h" #include "ZoneSet.h" namespace ZoneWindowDrawingNS { struct ColorSetting { BYTE fillAlpha{}; COLORREF fill{}; BYTE borderAlpha{}; COLORREF border{}; int thickness{}; }; void DrawBackdrop(wil::unique_hdc& hdc, RECT const& clientRect) noexcept; void DrawActiveZoneSet(wil::unique_hdc& hdc, COLORREF zoneColor, COLORREF zoneBorderColor, COLORREF highlightColor, int zoneOpacity, const IZoneSet::ZonesMap& zones, const std::vector& highlightZones, bool flashMode) noexcept; } class ZoneWindowDrawing { HWND m_window; winrt::com_ptr m_host; public: ZoneWindowDrawing(HWND window); void StartAnimation(unsigned millis); void DrawActiveZoneSet(const std::vector>& zones, const std::vector& highlightZones); };