CmVideoModeInfo.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. namespace BansheeEngine
  4. {
  5. /**
  6. * @brief Represents a video mode usable in full-screen windows.
  7. */
  8. class CM_EXPORT VideoMode
  9. {
  10. public:
  11. VideoMode(UINT32 width, UINT32 height, VideoOutputInfo* parentOutputInfo);
  12. virtual ~VideoMode();
  13. /**
  14. * @brief Width of the front/back buffer in pixels.
  15. */
  16. UINT32 getWidth() const { return mWidth; }
  17. /**
  18. * @brief Height of the front/back buffer in pixels.
  19. */
  20. UINT32 getHeight() const { return mHeight; }
  21. /**
  22. * @brief Returns the number of available refresh rates for this mode.
  23. */
  24. UINT32 getNumRefreshRates() const { return (UINT32)mRefreshRates.size(); }
  25. /**
  26. * @brief Returns a refresh rate in Hertz for the specified index.
  27. */
  28. virtual float getRefreshRate(UINT32 idx) const { return mRefreshRates.at(idx); }
  29. /**
  30. * @brief Returns information about the parent output.
  31. */
  32. const VideoOutputInfo& getParentOutput() const { return *mParentOutputInfo; }
  33. protected:
  34. UINT32 mWidth = 1280;
  35. UINT32 mHeight = 720;
  36. VideoOutputInfo* mParentOutputInfo = nullptr;
  37. Vector<float> mRefreshRates;
  38. };
  39. /**
  40. * @brief Contains information about a video output device, including
  41. * a list of all available video modes.
  42. */
  43. class CM_EXPORT VideoOutputInfo
  44. {
  45. public:
  46. virtual ~VideoOutputInfo();
  47. /**
  48. * @brief Name of the output device.
  49. */
  50. const String& getName() const { return mName; }
  51. /**
  52. * @brief Number of available video modes for this output.
  53. */
  54. UINT32 getNumVideoModes() const { return (UINT32)mVideoModes.size(); }
  55. /**
  56. * @brief Returns video mode at the specified index.
  57. */
  58. const VideoMode& getVideoMode(UINT32 idx) const { return *mVideoModes.at(idx); }
  59. /**
  60. * @brief Returns the video mode currently used by the desktop.
  61. */
  62. const VideoMode& getDesktopVideoMode() const { return *mDesktopVideoMode; }
  63. protected:
  64. String mName;
  65. Vector<VideoMode*> mVideoModes;
  66. VideoMode* mDesktopVideoMode = nullptr;
  67. };
  68. /**
  69. * @brief Contains information about available output devices (e.g. monitor)
  70. * and their video modes.
  71. */
  72. class CM_EXPORT VideoModeInfo
  73. {
  74. public:
  75. virtual ~VideoModeInfo();
  76. /**
  77. * @brief Returns the number of available output devices.
  78. */
  79. UINT32 getNumOutputs() const { return (UINT32)mOutputs.size(); }
  80. /**
  81. * @brief Returns video mode information about a specific output device.
  82. */
  83. const VideoOutputInfo& getOutputInfo(UINT32 idx) const { return *mOutputs[idx]; }
  84. protected:
  85. Vector<VideoOutputInfo*> mOutputs;
  86. };
  87. }