3 #include "display_private.h"
11 void Display::add_window(Window &wnd)
13 priv->windows[wnd.get_private().window] = &wnd;
16 void Display::remove_window(Window &wnd)
18 priv->windows.erase(wnd.get_private().window);
21 const VideoMode &Display::get_desktop_mode() const
23 if(!primary_monitor || !primary_monitor->desktop_mode)
24 throw logic_error("no desktop mode");
25 return *primary_monitor->desktop_mode;
28 void Display::restore_mode()
30 for(list<Monitor>::const_iterator i=monitors.begin(); i!=monitors.end(); ++i)
32 set_mode(*i->desktop_mode, false);
35 const VideoMode *Display::find_mode(const VideoMode &mode, float rate_tolerance) const
37 const VideoMode *closest = 0;
38 float rate_diff = mode.rate;
39 for(list<VideoMode>::const_iterator i=modes.begin(); i!=modes.end(); ++i)
41 if(mode.monitor && i->monitor!=mode.monitor)
43 if(mode.rate && (i->rate<mode.rate-rate_tolerance || i->rate>mode.rate+rate_tolerance))
45 if(i->width!=mode.width || i->height!=mode.height)
50 float d = abs(i->rate-mode.rate);
64 const VideoMode *Display::find_mode(unsigned width, unsigned height) const
66 return find_mode(VideoMode(width, height));
73 while(process_events()) ;
76 } // namespace Graphics