00001 #ifndef _Display_Res_H_
00002 #define _Display_Res_H_
00003
00004 using namespace std;
00005
00006 #include <fstream>
00007 #include <vector>
00008 #include <map>
00009 #include "DisplayResScreen.h"
00010 #include "mythexp.h"
00011
00025 typedef enum { GUI = 0, VIDEO = 1, CUSTOM_GUI = 2, CUSTOM_VIDEO = 3 } tmode;
00026
00027 class MPUBLIC DisplayRes {
00028 public:
00030 static DisplayRes *GetDisplayRes(void);
00031
00038 bool Initialize(void);
00039
00049 bool SwitchToVideo(int iwidth, int iheight, short irate = 0);
00061 bool SwitchToGUI(tmode which_gui=GUI);
00071 bool SwitchToCustomGUI(int width, int height, short rate = 0);
00080 int GetWidth(void) const { return last.Width(); }
00081
00083 int GetHeight(void) const { return last.Height(); }
00084
00086 int GetPhysicalWidth(void) const { return last.Width_mm(); }
00087
00089 int GetPhysicalHeight(void) const { return last.Height_mm(); }
00090
00092 int GetRefreshRate(void) const { return last.RefreshRate(); }
00098 double GetAspectRatio(void) const { return last.AspectRatio(); }
00106
00107 int GetMaxWidth(void) const { return max_width; }
00109 int GetMaxHeight(void) const { return max_height; }
00111 virtual const vector<DisplayResScreen>& GetVideoModes() const = 0;
00113 const vector<short> GetRefreshRates(int width, int height) const;
00116 protected:
00118 DisplayRes(void) : max_width(0), max_height(0) {;}
00119 virtual ~DisplayRes(void) {;}
00120
00121
00122 virtual bool GetDisplaySize(int &width_mm, int &height_mm) const = 0;
00123 virtual bool SwitchToVideoMode(int width, int height, short framerate) = 0;
00124
00125 private:
00126 DisplayRes(const DisplayRes & rhs);
00127
00128 tmode cur_mode;
00129 DisplayResScreen mode[4];
00130 DisplayResScreen last;
00131
00133 DisplayResMap in_size_to_output_mode;
00134
00135 int max_width, max_height;
00136
00137 static DisplayRes *instance;
00138 };
00139
00148 MPUBLIC const vector<DisplayResScreen> GetVideoModes(void);
00149
00150 #endif