Rect Ctrl::GetVirtualWorkArea() { Rect out = GetPrimaryWorkArea(); Array<Rect> rc; GetWorkArea(rc); for(int i = 0; i < rc.GetCount(); i++) out |= rc[i]; return out; }
Rect Ctrl::GetWorkArea(Point pt) { Array<Rect> rc; GetWorkArea(rc); for(int i = 0; i < rc.GetCount(); i++) if(rc[i].Contains(pt)) return rc[i]; return GetPrimaryWorkArea(); }
Rect Ctrl::GetVirtualWorkArea() { GuiLock __; static Rect r; if(r.right == 0) { r = GetPrimaryWorkArea(); Array<Rect> rc; GetWorkArea(rc); for(int i = 0; i < rc.GetCount(); i++) r |= rc[i]; } return r; }
Rect Ctrl::GetWorkArea() const { GuiLock __; static Array<Rect> rc; if(rc.IsEmpty()) GetWorkArea(rc); Point pt = GetScreenRect().TopLeft(); for (int i = 0; i < rc.GetCount(); i++) if(rc[i].Contains(pt)) return rc[i]; return GetPrimaryWorkArea(); }
Rect Ctrl::GetDefaultWindowRect() { GuiLock __; Rect r = GetPrimaryWorkArea(); Size sz = r.GetSize(); static int pos = min(sz.cx / 10, 50); pos += 10; int cx = sz.cx * 2 / 3; int cy = sz.cy * 2 / 3; if(pos + cx + 50 > sz.cx || pos + cy + 50 > sz.cy) pos = 0; return RectC(r.left + pos + 20, r.top + pos + 20, cx, cy); }
Rect Ctrl::GetPrimaryScreenArea() { return GetPrimaryWorkArea(); }