1 /* 2 * Copyright 2005, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Axel Dörfler, axeld@pinc-software.de 7 */ 8 #ifndef SCREEN_MODE_H 9 #define SCREEN_MODE_H 10 11 12 #include <Screen.h> 13 14 15 typedef enum { 16 kCombineDisable, 17 kCombineHorizontally, 18 kCombineVertically 19 } combine_mode; 20 21 struct screen_mode { 22 int32 width; // these reflect the corrected width/height, 23 int32 height; // taking the combine mode into account 24 color_space space; 25 float refresh; 26 combine_mode combine; 27 bool swap_displays; 28 bool use_laptop_panel; 29 uint32 tv_standard; 30 31 void SetTo(display_mode& mode); 32 int32 BitsPerPixel() const; 33 34 bool operator==(const screen_mode &otherMode) const; 35 bool operator!=(const screen_mode &otherMode) const; 36 }; 37 38 39 class ScreenMode { 40 public: 41 ScreenMode(BWindow* window); 42 ~ScreenMode(); 43 44 status_t Set(const screen_mode& mode); 45 status_t Get(screen_mode& mode); 46 status_t Revert(); 47 48 void UpdateOriginalMode(); 49 50 bool SupportsColorSpace(const screen_mode& mode, color_space space); 51 status_t GetRefreshLimits(const screen_mode& mode, float& min, float& max); 52 53 screen_mode ModeAt(int32 index); 54 int32 CountModes(); 55 56 private: 57 bool GetDisplayMode(const screen_mode& mode, display_mode& displayMode); 58 59 BWindow* fWindow; 60 display_mode* fModeList; 61 uint32 fModeCount; 62 63 bool fUpdatedMode; 64 display_mode fOriginalDisplayMode; 65 screen_mode fOriginal; 66 }; 67 68 #endif /* SCREEN_MODE_H */ 69