Viewports: used main viewport for centering (wip), clarified the meaning of how ImGuiPlatformMonitor WorkPos/WorkSize should be set if unknown, added asserts.
IM_ASSERT(mon.MainSize.x>0.0f&&mon.MainSize.y>0.0f&&"Monitor bounds not setup properly.");
IM_ASSERT(mon.WorkSize.x>0.0f&&mon.WorkSize.y>0.0f&&"Monitor bounds not setup properly. If you don't have work area information, just copy Min/Max into them.");
IM_ASSERT(mon.MainSize.x>0.0f&&mon.MainSize.y>0.0f&&"Monitor main bounds not setup properly.");
IM_ASSERT(ImRect(mon.MainPos,mon.MainPos+mon.MainSize).Contains(ImRect(mon.WorkPos,mon.WorkPos+mon.WorkSize))&&"Monitor work bounds not setup properly. If you don't have work area information, just copy MainPos/MainSize into them.");
ImVec2MainPos,MainSize;// Coordinates of the area displayed on this monitor (Min = upper left, Max = bottom right)
ImVec2WorkPos,WorkSize;// (Optional) Coordinates without task bars / side bars / menu bars. imgui uses this to avoid positioning popups/tooltips inside this region.
ImVec2WorkPos,WorkSize;// Coordinates without task bars / side bars / menu bars. Used to avoid positioning popups/tooltips inside this region. If you don't have this info, please copy the value for MainPos/MainSize.