#pragma region CPL License /* Nuclex Native Framework Copyright (C) 2002-2013 Nuclex Development Labs This library is free software; you can redistribute it and/or modify it under the terms of the IBM Common Public License as published by the IBM Corporation; either version 1.0 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the IBM Common Public License for more details. You should have received a copy of the IBM Common Public License along with this library */ #pragma endregion // CPL License #ifndef NUCLEX_GRAPHICS_RASTERIZATION_RASTERIZERSETTINGS_H #define NUCLEX_GRAPHICS_RASTERIZATION_RASTERIZERSETTINGS_H #include "../Config.h" #include namespace Nuclex { namespace Graphics { namespace Rasterization { // ------------------------------------------------------------------------------------------- // class PolygonOptions; // ------------------------------------------------------------------------------------------- // }}} // namespace Nuclex::Graphics::Rasterization namespace Nuclex { namespace Graphics { namespace Rasterization { // ------------------------------------------------------------------------------------------- // ///Controls various settings the rasterizer can be configured with class RasterizerSettings { #pragma region struct ResolutionInfo /// Stores informations about the screen resolution public: struct ResolutionInfo { /// Width for the screen resolution or window in pixels public: std::size_t Width; /// Height for the screen resolution or window in pixels public: std::size_t Height; /// Desired refresh rate in Hz (0 = default) public: std::size_t RefreshRateInHz; /// Whether the view should fill the entire screen public: std::size_t IsFullscreen; }; #pragma endregion // struct ResolutionInfo /// Frees all resources owned by the rasterizer settings interface public: virtual ~RasterizerSettings() {} /// Whether the rasterizer is currently synching page flips /// True if the rasterizr is synching page flips public: virtual bool IsVerticalSynchronizationEnabled() const = 0; /// Switches whether the rasterizer will synchronize its page flips /// True if the rasterizer should synchronize its page flips public: virtual void EnableVerticalSynchronization(bool wait = true) = 0; /// Counts the number of supported display resolutions /// The total number of display resolutions supported public: virtual std::size_t CountSupportedResolutions() const = 0; #if 0 /// Retrieves one of the supported display resolutions /// Index of the resolution that will be retrieved /// Informations about the requested display resolution public: virtual ResolutionInfo GetSupportedResolution(std::size_t index) const = 0; /// Retrieves the currently active display resolution /// The currently active screen resolution public: virtual ResolutionInfo GetCurrentResolution() const = 0; /// Switches to a different display resolution /// Resolution to switch to public: virtual void ChangeResolution(const ResolutionInfo &resolutionInfo) = 0; #endif #if 0 /// Retrieves the currently active options for rendering polygons /// The polygon options currently in effect public: virtual const std::shared_ptr &GetPolygonOptions() const = 0; /// Sets the options to use for rendering polygons /// Options that will be used when rendering polygons public: virtual void SetPolygonOptions(const std::shared_ptr &options) = 0; #endif }; // ------------------------------------------------------------------------------------------- // }}} // namespace Nuclex::Graphics::Rasterization #endif // NUCLEX_GRAPHICS_RASTERIZATION_RASTERIZERSETTINGS_H