X-Git-Url: http://git.tdb.fi/?p=libs%2Fgui.git;a=blobdiff_plain;f=examples%2Flsmodes.cpp;fp=examples%2Flsmodes.cpp;h=39581d5d42ce2843d1114cc71b97785a887eb66e;hp=0000000000000000000000000000000000000000;hb=c8c5fd83d985fc0a9eb332e5e37e080222e169fe;hpb=e82345f2c1286e684789854c7dbe32411bb0b05f diff --git a/examples/lsmodes.cpp b/examples/lsmodes.cpp new file mode 100644 index 0000000..39581d5 --- /dev/null +++ b/examples/lsmodes.cpp @@ -0,0 +1,53 @@ +#include +#include +#include + +using namespace std; +using namespace Msp; + +class LsModes: public RegisteredApplication +{ +private: + Graphics::Display display; + +public: + LsModes(int, char **); + + virtual int main(); +}; + +LsModes::LsModes(int, char **) +{ +} + +int LsModes::main() +{ + const vector &monitors = display.get_monitors(); + const Graphics::VideoMode &desktop_mode = display.get_desktop_mode(); + unsigned n = 0; + for(auto i=monitors.begin(); i!=monitors.end(); ++i, ++n) + { + IO::print("Monitor #%d", n); + if(&*i==desktop_mode.monitor) + IO::print(" (primary)"); + IO::print(": %s\n", i->name); + + const Graphics::VideoMode *prev_mode = 0; + for(const Graphics::VideoMode *m: i->video_modes) + { + if(!prev_mode || m->width!=prev_mode->width || m->height!=prev_mode->height) + { + if(prev_mode) + IO::print("\n"); + IO::print(" %dx%d", m->width, m->height); + } + IO::print(" %c%d", (m==i->desktop_settings.mode ? '*' : ' '), m->rate); + prev_mode = m; + } + + if(!i->video_modes.empty()) + IO::print("\n\n"); + } + + return 0; +}